Skip to content

Commit 06b440b

Browse files
author
JPD Tester
committed
Update GitHub Actions workflow
1 parent 2f2f687 commit 06b440b

2 files changed

Lines changed: 17 additions & 34 deletions

File tree

.github/workflows/go.yml

Lines changed: 16 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -29,14 +29,18 @@ jobs:
2929

3030
- name: Check formatting
3131
run: |
32-
gofmt -l .
33-
test -z "$(gofmt -l .)"
32+
unformatted=$(gofmt -l .)
33+
if [ -n "$unformatted" ]; then
34+
echo "Unformatted files:"
35+
echo "$unformatted"
36+
exit 1
37+
fi
3438
3539
- name: Vet
3640
run: go vet ./...
3741

38-
exploit_poc:
39-
name: Exploit PoC
42+
integration_test:
43+
name: Integration Tests
4044
runs-on: ubuntu-latest
4145
needs: build
4246
steps:
@@ -48,35 +52,35 @@ jobs:
4852
with:
4953
go-version: ^1.24
5054

51-
- name: Start Knox server in background
55+
- name: Install dependencies
56+
run: go mod download
57+
58+
- name: Start Knox server
5259
run: |
5360
go run ./cmd/dev_server -http :8080 -https :9000 > knox_server.log 2>&1 &
5461
echo $! > server.pid
5562
sleep 5
5663
cat knox_server.log
5764
58-
- name: Check if ports are listening
65+
- name: Verify server is running
5966
run: |
60-
netstat -tulnp | grep 8080 || true
67+
curl -k https://localhost:9000/healthcheck || true
6168
netstat -tulnp | grep 9000 || true
6269
6370
- name: Run security tests
6471
run: |
65-
# Test HTTP to HTTPS redirect
66-
curl -v http://localhost:8080/normal/path 2>&1 | grep "Location: https://localhost:9000/normal/path" || (echo "Redirect test failed" && exit 1)
67-
6872
# Test authentication requirement
6973
curl -k -v https://localhost:9000/normal/path 2>&1 | grep "401 Unauthorized" || (echo "Auth test failed" && exit 1)
7074
7175
# Test path traversal protection
7276
curl -k -v https://localhost:9000/../../../etc/passwd 2>&1 | grep "404 Not Found" || (echo "Path traversal test failed" && exit 1)
7377
74-
- name: Stop Knox server
78+
- name: Stop server
7579
run: |
7680
kill $(cat server.pid) || true
7781
sleep 1
7882
79-
- name: Upload server logs
83+
- name: Upload logs
8084
uses: actions/upload-artifact@v4
8185
if: always()
8286
with:

cmd/dev_server/main.go

Lines changed: 1 addition & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,6 @@ const (
4949
)
5050

5151
func main() {
52-
// Setup dual logging
5352
logFile, err := os.OpenFile("knox_server.log", os.O_APPEND|os.O_CREATE|os.O_WRONLY, 0644)
5453
if err != nil {
5554
fmt.Fprintf(os.Stderr, "Failed to open log file: %v\n", err)
@@ -60,7 +59,6 @@ func main() {
6059

6160
flag.Parse()
6261

63-
// Verify ports are available
6462
if err := checkPortAvailable(*flagHTTPPort); err != nil {
6563
fmt.Fprintf(writer, "HTTP port check failed: %v\n", err)
6664
os.Exit(1)
@@ -70,67 +68,53 @@ func main() {
7068
os.Exit(1)
7169
}
7270

73-
// Generate TLS certificate
7471
tlsCert, tlsKey, err := generateTLSCertificate()
7572
if err != nil {
7673
fmt.Fprintf(writer, "Failed to generate TLS certificate: %v\n", err)
7774
os.Exit(1)
7875
}
7976

80-
// Setup database and cryptor
8177
dbEncryptionKey := []byte("testtesttesttest")
8278
cryptor := keydb.NewAESGCMCryptor(0, dbEncryptionKey)
8379
db := keydb.NewTempDB()
8480

85-
// Configure default access
8681
server.AddDefaultAccess(&knox.Access{
8782
Type: knox.UserGroup,
8883
ID: "security-team",
8984
AccessType: knox.Admin,
9085
})
9186

92-
// Setup authentication
9387
certPool := x509.NewCertPool()
9488
if !certPool.AppendCertsFromPEM([]byte(caCert)) {
9589
fmt.Fprintf(writer, "Failed to parse CA certificate\n")
9690
os.Exit(1)
9791
}
9892

99-
// Initialize Knox logger
10093
knoxLogger := log.New(writer, "", 0)
10194
knoxLogger.SetVersion("dev")
10295
knoxLogger.SetService(serviceName)
10396

104-
// Configure authentication providers
10597
authProviders := []auth.Provider{
106-
// GitHub provider for testing (you'll need to configure this properly)
10798
auth.NewGitHubProvider(authTimeout),
108-
109-
// mTLS provider for production
11099
auth.NewMTLSAuthProvider(certPool),
111-
112-
// SPIFFE providers for service identity
113100
auth.NewSpiffeAuthProvider(certPool),
114101
auth.NewSpiffeAuthFallbackProvider(certPool),
115102
}
116103

117-
// Configure server decorators
118104
decorators := []func(http.HandlerFunc) http.HandlerFunc{
119105
server.Logger(knoxLogger),
120106
server.AddHeader("Content-Type", "application/json"),
121107
server.AddHeader("X-Content-Type-Options", "nosniff"),
122108
server.Authentication(authProviders, nil),
123109
}
124110

125-
// Create router
126111
r, err := server.GetRouter(cryptor, db, decorators, make([]server.Route, 0))
127112
if err != nil {
128113
fmt.Fprintf(writer, "Failed to create router: %v\n", err)
129114
os.Exit(1)
130115
}
131116
http.Handle("/", r)
132117

133-
// Start HTTP redirect server
134118
go func() {
135119
fmt.Fprintf(writer, "Starting HTTP redirect server on %s\n", *flagHTTPPort)
136120
if err := http.ListenAndServe(*flagHTTPPort, http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
@@ -141,7 +125,6 @@ func main() {
141125
}
142126
}()
143127

144-
// Start HTTPS server
145128
fmt.Fprintf(writer, "Starting HTTPS server on %s\n", *flagHTTPSPort)
146129
if err := startHTTPSServer(tlsCert, tlsKey, *flagHTTPSPort, writer); err != nil {
147130
fmt.Fprintf(writer, "HTTPS server failed: %v\n", err)
@@ -227,8 +210,4 @@ func startHTTPSServer(certPEM, keyPEM []byte, addr string, writer io.Writer) err
227210

228211
tlsListener := tls.NewListener(ln, tlsConfig)
229212
return server.Serve(tlsListener)
230-
<<<<<<< HEAD
231-
}
232-
=======
233-
}
234-
>>>>>>> 6bf0ad0 (Add exploit PoC job to GitHub Actions workflow)
213+
}

0 commit comments

Comments
 (0)