Skip to content

Commit edf3153

Browse files
authored
Merge branch 'dev' into master
2 parents 3a7bc37 + 32ea075 commit edf3153

File tree

12 files changed

+115
-35
lines changed

12 files changed

+115
-35
lines changed

.github/workflows/codeql-analysis.yml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,12 +27,12 @@ jobs:
2727

2828
# Initializes the CodeQL tools for scanning.
2929
- name: Initialize CodeQL
30-
uses: github/codeql-action/init@v1
30+
uses: github/codeql-action/init@v2
3131
with:
3232
languages: ${{ matrix.language }}
3333

3434
- name: Autobuild
35-
uses: github/codeql-action/autobuild@v1
35+
uses: github/codeql-action/autobuild@v2
3636

3737
- name: Perform CodeQL Analysis
38-
uses: github/codeql-action/analyze@v1
38+
uses: github/codeql-action/analyze@v2

.github/workflows/dockerhub-push.yml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,19 +14,19 @@ jobs:
1414
uses: actions/checkout@v3
1515
-
1616
name: Set up QEMU
17-
uses: docker/setup-qemu-action@v1
17+
uses: docker/setup-qemu-action@v2
1818
-
1919
name: Set up Docker Buildx
20-
uses: docker/setup-buildx-action@v1
20+
uses: docker/setup-buildx-action@v2
2121
-
2222
name: Login to DockerHub
23-
uses: docker/login-action@v1
23+
uses: docker/login-action@v2
2424
with:
2525
username: ${{ secrets.DOCKER_USERNAME }}
2626
password: ${{ secrets.DOCKER_TOKEN }}
2727
-
2828
name: Build and push
29-
uses: docker/build-push-action@v2
29+
uses: docker/build-push-action@v4
3030
with:
3131
context: .
3232
platforms: linux/amd64,linux/arm64,linux/arm

.github/workflows/lint-test.yml

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,14 @@ jobs:
99
name: Lint Test
1010
runs-on: ubuntu-latest
1111
steps:
12+
- name: Set up Go
13+
uses: actions/setup-go@v3
14+
with:
15+
go-version: 1.18
1216
- name: Checkout code
1317
uses: actions/checkout@v3
1418
- name: Run golangci-lint
15-
uses: golangci/golangci-lint-action@v3.1.0
19+
uses: golangci/golangci-lint-action@v3.4.0
1620
with:
1721
version: latest
1822
args: --timeout 5m

.github/workflows/release-binary.yml

Lines changed: 7 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -9,21 +9,18 @@ jobs:
99
release:
1010
runs-on: ubuntu-latest
1111
steps:
12-
-
13-
name: "Check out code"
14-
uses: actions/checkout@v3
15-
with:
16-
fetch-depth: 0
17-
-
18-
name: "Set up Go"
12+
- name: "Set up Go"
1913
uses: actions/setup-go@v3
2014
with:
2115
go-version: 1.18
22-
-
16+
- name: "Check out code"
17+
uses: actions/checkout@v3
18+
with:
19+
fetch-depth: 0
20+
- name: "Create release on GitHub"
21+
uses: goreleaser/goreleaser-action@v4
2322
env:
2423
GITHUB_TOKEN: "${{ secrets.GITHUB_TOKEN }}"
25-
name: "Create release on GitHub"
26-
uses: goreleaser/goreleaser-action@v2
2724
with:
2825
args: "release --rm-dist"
2926
version: latest

Dockerfile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
FROM golang:1.18-alpine as build-env
1+
FROM golang:1.20.2-alpine as build-env
22
RUN go install -v github.com/projectdiscovery/simplehttpserver/cmd/simplehttpserver@latest
33

44
FROM alpine:latest

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ This will display help for the tool. Here are all the switches it supports.
6969
| `-realm` | Basic auth message | `simplehttpserver -realm "insert the credentials"` |
7070
| `-version` | Show version | `simplehttpserver -version` |
7171
| `-silent` | Show only results | `simplehttpserver -silent` |
72+
| `-header` | HTTP response header (can be used multiple times) | `simplehttpserver -header 'X-Powered-By: Go'` |
7273

7374
### Running simplehttpserver in the current folder
7475

go.mod

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,17 +3,25 @@ module github.com/projectdiscovery/simplehttpserver
33
go 1.17
44

55
require (
6-
github.com/fsnotify/fsnotify v1.5.1
6+
github.com/fsnotify/fsnotify v1.6.0
77
github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2
8-
github.com/projectdiscovery/gologger v1.1.4
8+
github.com/projectdiscovery/gologger v1.1.8
99
github.com/projectdiscovery/sslcert v0.0.0-20210416140253-8f56bec1bb5e
1010
gopkg.in/yaml.v2 v2.4.0
1111
)
1212

1313
require (
14-
github.com/json-iterator/go v1.1.10 // indirect
14+
github.com/dsnet/compress v0.0.1 // indirect
15+
github.com/golang/snappy v0.0.1 // indirect
16+
github.com/json-iterator/go v1.1.12 // indirect
1517
github.com/logrusorgru/aurora v2.0.3+incompatible // indirect
18+
github.com/mholt/archiver v3.1.1+incompatible // indirect
1619
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect
17-
github.com/modern-go/reflect2 v1.0.1 // indirect
18-
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c // indirect
20+
github.com/modern-go/reflect2 v1.0.2 // indirect
21+
github.com/nwaples/rardecode v1.1.0 // indirect
22+
github.com/pierrec/lz4 v2.6.0+incompatible // indirect
23+
github.com/ulikunitz/xz v0.5.7 // indirect
24+
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 // indirect
25+
golang.org/x/sys v0.0.0-20220908164124-27713097b956 // indirect
26+
gopkg.in/djherbis/times.v1 v1.3.0 // indirect
1927
)

go.sum

Lines changed: 36 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,22 @@ github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ3
22
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
33
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
44
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
5-
github.com/fsnotify/fsnotify v1.5.1 h1:mZcQUHVQUQWoPXXtuf9yuEXKudkV2sx1E06UadKWpgI=
6-
github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU=
5+
github.com/dsnet/compress v0.0.1 h1:PlZu0n3Tuv04TzpfPbrnI0HW/YwodEXDS+oPKahKF0Q=
6+
github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo=
7+
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
8+
github.com/frankban/quicktest v1.11.3 h1:8sXhOn0uLys67V8EsXLc6eszDs8VXWxL3iRvebPhedY=
9+
github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k=
10+
github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY=
11+
github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw=
12+
github.com/golang/snappy v0.0.1 h1:Qgr9rKW7uDUkrbSmQeiDsGa8SjGyCOGtuasMWwvp2P4=
13+
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
14+
github.com/google/go-cmp v0.5.4 h1:L8R9j+yAqZuZjsqh/z+F1NCffTKKLShY6zXTItVIZ8M=
15+
github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
716
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
8-
github.com/json-iterator/go v1.1.10 h1:Kz6Cvnvv2wGdaG/V8yMvfkmNiXq9Ya2KUv4rouJJr68=
9-
github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
17+
github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
18+
github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
19+
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
20+
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
1021
github.com/kr/pretty v0.2.1 h1:Fmg33tUaq4/8ym9TJN1x7sLJnHVwhP33CNkpYV/7rwI=
1122
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
1223
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
@@ -15,29 +26,43 @@ github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
1526
github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
1627
github.com/logrusorgru/aurora v2.0.3+incompatible h1:tOpm7WcpBTn4fjmVfgpQq0EfczGlG91VSDkswnjF5A8=
1728
github.com/logrusorgru/aurora v2.0.3+incompatible/go.mod h1:7rIyQOR62GCctdiQpZ/zOJlFyk6y+94wXzv6RNZgaR4=
29+
github.com/mholt/archiver v3.1.1+incompatible h1:1dCVxuqs0dJseYEhi5pl7MYPH9zDa1wBi7mF09cbNkU=
30+
github.com/mholt/archiver v3.1.1+incompatible/go.mod h1:Dh2dOXnSdiLxRiPoVfIr/fI1TwETms9B8CTWfeh7ROU=
1831
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
1932
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
2033
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
21-
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
22-
github.com/modern-go/reflect2 v1.0.1 h1:9f412s+6RmYXLWZSEzVVgPGK7C2PphHj5RJrvfx9AWI=
23-
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
34+
github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
35+
github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
36+
github.com/nwaples/rardecode v1.1.0 h1:vSxaY8vQhOcVr4mm5e8XllHWTiM4JF507A0Katqw7MQ=
37+
github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
2438
github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2 h1:JhzVVoYvbOACxoUmOs6V/G4D5nPVUW73rKvXxP4XUJc=
2539
github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE=
40+
github.com/pierrec/lz4 v2.6.0+incompatible h1:Ix9yFKn1nSPBLFl/yZknTp8TU5G4Ps0JDmguYK6iH1A=
41+
github.com/pierrec/lz4 v2.6.0+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
2642
github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM=
2743
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
28-
github.com/projectdiscovery/gologger v1.1.4 h1:qWxGUq7ukHWT849uGPkagPKF3yBPYAsTtMKunQ8O2VI=
29-
github.com/projectdiscovery/gologger v1.1.4/go.mod h1:Bhb6Bdx2PV1nMaFLoXNBmHIU85iROS9y1tBuv7T5pMY=
44+
github.com/projectdiscovery/gologger v1.1.8 h1:CFlCzGlqAhPqWIrAXBt1OVh5jkMs1qgoR/z4xhdzLNE=
45+
github.com/projectdiscovery/gologger v1.1.8/go.mod h1:bNyVaC1U/NpJtFkJltcesn01NR3K8Hg6RsLVce6yvrw=
3046
github.com/projectdiscovery/sslcert v0.0.0-20210416140253-8f56bec1bb5e h1:IZa08TUGbU7I0HUb9QQt/8wuu2fPZqfnMXwWhtMxei8=
3147
github.com/projectdiscovery/sslcert v0.0.0-20210416140253-8f56bec1bb5e/go.mod h1:jSp8W5zIkNPxAqVdcoFlfv0K5cqogTe65fMinR0Fvuk=
3248
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
3349
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
3450
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
3551
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
36-
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c h1:F1jZWGFhYfh0Ci55sIpILtKKK8p3i2/krTr0H1rg74I=
37-
golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
52+
github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
53+
github.com/ulikunitz/xz v0.5.7 h1:YvTNdFzX6+W5m9msiYg/zpkSURPPtOlzbqYjrFn7Yt4=
54+
github.com/ulikunitz/xz v0.5.7/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
55+
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8 h1:nIPpBwaJSVYIxUFsDv3M8ofmx9yWTog9BfvIu0q41lo=
56+
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=
57+
golang.org/x/sys v0.0.0-20220908164124-27713097b956 h1:XeJjHH1KiLpKGb6lvMiksZ9l0fVUh+AmGcm0nOMEBOY=
58+
golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
59+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543 h1:E7g+9GITq07hpfrRu66IVDexMakfv52eLZ2CXBWiKr4=
60+
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
3861
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
3962
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
4063
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
64+
gopkg.in/djherbis/times.v1 v1.3.0 h1:uxMS4iMtH6Pwsxog094W0FYldiNnfY/xba00vq6C2+o=
65+
gopkg.in/djherbis/times.v1 v1.3.0/go.mod h1:AQlg6unIsrsCEdQYhTzERy542dz6SFdQFZFv6mUY0P8=
4166
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
4267
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
4368
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=

internal/runner/options.go

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ package runner
22

33
import (
44
"flag"
5+
"fmt"
56
"os"
67
"path/filepath"
78
"strings"
89

910
"github.com/projectdiscovery/gologger"
1011
"github.com/projectdiscovery/gologger/levels"
12+
"github.com/projectdiscovery/simplehttpserver/pkg/httpserver"
1113
)
1214

1315
// Options of the tool
@@ -34,6 +36,7 @@ type Options struct {
3436
HTTP1Only bool
3537
MaxDumpBodySize int
3638
CORS bool
39+
HTTPHeaders HTTPHeaders
3740
}
3841

3942
// ParseOptions parses the command line options for application
@@ -63,6 +66,7 @@ func ParseOptions() *Options {
6366
flag.IntVar(&options.MaxFileSize, "max-file-size", 50, "Max Upload File Size")
6467
flag.IntVar(&options.MaxDumpBodySize, "max-dump-body-size", -1, "Max Dump Body Size")
6568
flag.BoolVar(&options.CORS, "cors", false, "Enable Cross-Origin Resource Sharing (CORS)")
69+
flag.Var(&options.HTTPHeaders, "header", "Add HTTP Response Header (name: value), can be used multiple times")
6670
flag.Parse()
6771

6872
// Read the inputs and configure the logging
@@ -115,3 +119,21 @@ func (options *Options) FolderAbsPath() string {
115119
}
116120
return abspath
117121
}
122+
123+
// HTTPHeaders is a slice of HTTPHeader structs
124+
type HTTPHeaders []httpserver.HTTPHeader
125+
126+
func (h *HTTPHeaders) String() string {
127+
return fmt.Sprint(*h)
128+
}
129+
130+
// Set sets a new header, which must be a string of the form 'name: value'
131+
func (h *HTTPHeaders) Set(value string) error {
132+
tokens := strings.SplitN(value, ":", 2)
133+
if len(tokens) != 2 {
134+
return fmt.Errorf("header '%s' not in format 'name: value'", value)
135+
}
136+
137+
*h = append(*h, httpserver.HTTPHeader{Name: tokens[0], Value: tokens[1]})
138+
return nil
139+
}

internal/runner/runner.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,6 +69,7 @@ func New(options *Options) (*Runner, error) {
6969
HTTP1Only: r.options.HTTP1Only,
7070
MaxDumpBodySize: unit.ToMb(r.options.MaxDumpBodySize),
7171
CORS: r.options.CORS,
72+
HTTPHeaders: r.options.HTTPHeaders,
7273
})
7374
if err != nil {
7475
return nil, err

0 commit comments

Comments
 (0)