diff --git a/app/Dockerfile b/app/Dockerfile index ea79af8..c182f8c 100644 --- a/app/Dockerfile +++ b/app/Dockerfile @@ -4,10 +4,10 @@ WORKDIR /go/src/app # Get Reflex for live reload in dev ENV GO111MODULE=on -RUN go get github.com/cespare/reflex +RUN go install github.com/cespare/reflex@latest COPY go.mod . -COPY go.sum . +# COPY ./app/go.sum . RUN go mod download @@ -22,5 +22,5 @@ WORKDIR /root/ #Copy executable from builder COPY --from=builder /go/src/app/run . -EXPOSE 8080 +# EXPOSE 8080 CMD ["./run"] diff --git a/app/certs/ssl.crt b/app/certs/ssl.crt new file mode 100644 index 0000000..dc31db7 --- /dev/null +++ b/app/certs/ssl.crt @@ -0,0 +1,19 @@ +-----BEGIN CERTIFICATE----- +MIIDGzCCAgOgAwIBAgIUOc2GVRyF7sOa2RIemBJQSsHL+GswDQYJKoZIhvcNAQEL +BQAwGDEWMBQGA1UEAwwNKi5kaXVrbWFuLmNvbTAeFw0yNDA4MTQwNTA1MDBaFw0y +NDA5MTMwNTA1MDBaMBgxFjAUBgNVBAMMDSouZGl1a21hbi5jb20wggEiMA0GCSqG +SIb3DQEBAQUAA4IBDwAwggEKAoIBAQCbv/wWLzklElyDOFufiTk0zdXFWuFlamxF +5p4XdYrflOY4ivFAa+QMO0fjGJj2WBoJ44uXVv1HfEmFNDSmFev0FnfEyVvftClq +5s5dPXOZ2uOAKIpurNZ7ik+amAuJjwFHzcRBQPUkbQoLP/LuoTXO4W76itvs1L/q +MzIRF3E1jZick9KcYnq+s/UJSaYIMdamGC/aojuiJW9y3wktQeNGxouvgQZrH2Dt +7aYcNFxeSrxJ+M7PUdX9rPJ3k51dUtR/yCuVMFRBa2kLq9QWRv6jGcx8qeKIFHme +dJydpQVPiYpAHlW4x/sAo8va/HzSg50IjS0hbMnEtuHaGFmOuw9DAgMBAAGjXTBb +MBgGA1UdEQQRMA+CDSouZGl1a21hbi5jb20wCwYDVR0PBAQDAgeAMBMGA1UdJQQM +MAoGCCsGAQUFBwMBMB0GA1UdDgQWBBQExv/wzqFffu3LFtjpu80wAuBMMDANBgkq +hkiG9w0BAQsFAAOCAQEAKrf9Q8qSxs0noUttl724n6TcKIvoEvNXd13YXUDTsbg6 +sIZ0JXb8U1jKNXW21l2/VR/ymOJMUu2iUkQ2ZtveI6/tgw7HdMtVB82eFUUm3geH +hBgwBA7FiApcp6iD031umHCgIJcQapWa5UyaGDlYhbYP9mHL3hbrZaCwdxQ7cK6n +Oy2m/48bt5bWnLoCHpYgrq6pj97KYEmQS6ba262cL5W8XJAcC+RN/NtDlCar9Xk/ +4rugvIzT3+yIMBhPMqUFxctea7+Fv4ft36s0OMfQ2iPcHlU8sJhQ6MQoAq8FR3K5 +GUhnt3kgouVzHPTEDOhVuNIBL7j8VNzZxLLLyD+0+g== +-----END CERTIFICATE----- diff --git a/app/certs/ssl.key b/app/certs/ssl.key new file mode 100644 index 0000000..d4b357e --- /dev/null +++ b/app/certs/ssl.key @@ -0,0 +1,28 @@ +-----BEGIN PRIVATE KEY----- +MIIEuwIBADANBgkqhkiG9w0BAQEFAASCBKUwggShAgEAAoIBAQCbv/wWLzklElyD +OFufiTk0zdXFWuFlamxF5p4XdYrflOY4ivFAa+QMO0fjGJj2WBoJ44uXVv1HfEmF +NDSmFev0FnfEyVvftClq5s5dPXOZ2uOAKIpurNZ7ik+amAuJjwFHzcRBQPUkbQoL +P/LuoTXO4W76itvs1L/qMzIRF3E1jZick9KcYnq+s/UJSaYIMdamGC/aojuiJW9y +3wktQeNGxouvgQZrH2Dt7aYcNFxeSrxJ+M7PUdX9rPJ3k51dUtR/yCuVMFRBa2kL +q9QWRv6jGcx8qeKIFHmedJydpQVPiYpAHlW4x/sAo8va/HzSg50IjS0hbMnEtuHa +GFmOuw9DAgMBAAECggEAGoou6xrV6n7D++o9FqTb9icC/9O6J71oQMsI8mdpqCqn +xkfKz1bzL7BkUgrNeeDOYxP+o+XDWAySPJwGQqzmnZu8gfBr8uUwz5IP5SyFB9kY +PizqVeymybtqUCYLhT+0kKc8A4CNpUzdUshtXYNj92JLtm62BhfEsiRSKj5r4JuB +sdu6o2ZEspUBuHz4IDUurUFkfityaQUfWgXy30GxX/VCUwGbxOJ+joH/dw6Z/J0Z +Yr9PReKKPcLiwwIy8Y/PtDn1xYQIZhB2O8/zgGOznvPKlvIufgLrjeBr/8clfv64 +X/zr9i1mDuXYX96FYsG4MfoPcn3mFZATudNN4ZpAfQKBgQDIveASRIDHpxfuTwn1 +0U3obARgBDdMNEmhIAsDXMZiDYKDyCAL4lrkpZy6o0AFUtID8WhDRQv+xs+uDswZ +8dq1YxKEfVn8tmiEnIlUYqFsiPm1cn0BHMi0JXuIEjeK2t/QFSGXcHJUgWyfgOB8 +8jbHitD/06nFux3nlhYuc/FNPwKBgQDGn5J3XOSBaJsFrFRrkMFpAea/7Ve/D5tz +Yc1MCUwYe2W+v5LMAsXOEAaaF5uLUTnupOhL4GyaCR4Du4vPTXe/qDsOmBC1I1qL +qtuuMdBec5ZCsUJ53lcj16vRoylpZbNKE/Ezz1XRIM5/YGeBFDs07ef5cBIQ96IY +N7h/mnhI/QKBgC53VSClXrHYSb/N595QvpnoNvMKxsoK6Gg1hJcYqIsV2Xorns9h +a+y1MRw6oZ0Z2Kc1AA9iMi6dUoFVx4TR6PBHqIemhGfsyTC5E0jHM9ptsm9/utPB +F+wrKPcMUHMBywDdg1MMokpRUxVwvYXugyOZTFuLYSb18ywiH6xNBjP9AoGBAMG+ +b8lc5ExS9Dxhb+uIxRCf2SzH4Dqvh6vR78bGnuKWo5WgGxpDbh1lxnrSolgQQFlH +pIw2+th6Ijvz2hm5cCCUgh7nOAzo0m7AmA7f6mfnid++NqDXv9pniuMvq7pyiKOu +ti4ahZQ70xGuwOfJC0PC+O94YTcJxqSm3aIi1EglAn8Nq+SYWhhDbYVtsWjKj6Z5 +ILHHE6DFw7Ne3PEn1mVg/IM0l3JHHpHKJnytuXG/mzcktzMjo3mRI30YRzmvzu93 +v+XWRcSyU74K+vM+9aZ331TJL90CGCm1zezo6OKA+KOebCTRo0Lw3bynFPffwPK/ +nN9cWJDNRW1Pvb2OI8jp +-----END PRIVATE KEY----- diff --git a/app/main.go b/app/main.go index 19f8a29..a5066b5 100644 --- a/app/main.go +++ b/app/main.go @@ -11,26 +11,103 @@ import ( "time" ) +const ( + sslCert = "./certs/ssl.crt" + sslKey = "./certs/ssl.key" +) + func init() { fmt.Println("ZPROX started") } -func handler1(w http.ResponseWriter, r *http.Request) { - if r.Host == "test.gotest.com" { - w.Write([]byte("H1")) - } -} +// type Matcher struct { +// r *http.Request +// w http.ResponseWriter +// } + +// func (m *Matcher) MatchHost(str string, f ...func(w http.ResponseWriter, r *http.Request)) { +// if m.r.Host == "test.gotest.com" || m.r.Host == "localhost" { +// m.w.Write([]byte("test")) +// } else { +// m.w.Write([]byte("404 page not found")) +// m.w.WriteHeader(http.StatusNotFound) +// } +// } + +type HandlerFunc func(http.ResponseWriter, *http.Request) + +// func (h *HandlerFunc) Handle(f func(w http.ResponseWriter, r *http.Request)) { +// h = h.HandlerFunc() + +// // &h.f() +// // if r.Host == "test.gotest.com" { +// // w.Write([]byte("test")) +// // } else { +// // w.Write([]byte("404 page not found")) + +// // w.WriteHeader(http.StatusNotFound) +// // } +// } + +// func test(w http.ResponseWriter, r *http.Request) { +// if r.Host == "test.gotest.com" { +// w.Write([]byte("login")) +// } else { +// w.Write([]byte("404 page not found")) +// w.WriteHeader(http.StatusNotFound) +// } +// } + +// func handle(f HandlerFunc) HandlerFunc { +// HandlerFunc{}.f[0] +// return func(w http.ResponseWriter, r *http.Request) { +// f +// } +// } + +// type Mux struct { +// *Handlers +// *Router +// } +// type Handlers []struct{ http.Handler } +// type Router struct{ *http.ServeMux } + +// func NewMux() *Mux { +// r := new(Router) +// h := new(Handlers) +// return &Mux{Handlers:h,Router:r} +// } + +// func (m *Handlers) Add() { +// h := new(Handlers) +// m = &Mux{h, r} +// &Handlers{f} +// } +type Router struct{ http.ServeMux } + +func (r Router) Host(string) { + + // router.HandleFunc("") +} func main() { + // var h HandlerFunc + // h:=func(a HandlerFunc)HandlerFunc{ + router := http.NewServeMux() - router.Handle("/", http.HandlerFunc(handler1)) + router.H + // h := Handler.Add(func(w http.ResponseWriter, r *http.Request) {}) + // http.Handler.ServeHTTP() + + router.HandleFunc("test.gotest.com/", h) + // router.HandleFunc("login.gotest.com/", login) srv := &http.Server{ - Addr: ":80", + Addr: ":8443", Handler: router, } go func() { - if err := srv.ListenAndServe(); err != nil && err != http.ErrServerClosed { + if err := srv.ListenAndServeTLS(sslCert, sslKey); err != nil && err != http.ErrServerClosed { log.Fatalf("Failed to initialize server: %v\n", err) } }() diff --git a/docker-compose.yml b/docker-compose.yml index 77aaa04..5ee753d 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,17 +1,19 @@ services: - account: + zprox: build: context: ./app target: builder - image: account - expose: - - "8080" + image: zprox + ports: + - "80:8080" + - "443:8443" environment: - ENV=dev volumes: - ./app:/go/src/app # have to use $$ (double-dollar) so docker doesn't try to substitute a variable command: reflex -r "\.go$$" -s -- sh -c "go run ./" + postgres: image: postgres:latest restart: always @@ -53,3 +55,6 @@ services: - "quarkus.transaction-manager.enable-recovery=true" networks: postgres: + +# networks: +# - host \ No newline at end of file diff --git a/zprox.code-workspace b/zprox.code-workspace new file mode 100644 index 0000000..876a149 --- /dev/null +++ b/zprox.code-workspace @@ -0,0 +1,8 @@ +{ + "folders": [ + { + "path": "." + } + ], + "settings": {} +} \ No newline at end of file