This commit is contained in:
Zeev Diukman 2024-08-24 05:11:39 +03:00
parent 1215fadcbf
commit 4e11d7f366
6 changed files with 152 additions and 15 deletions

View file

@ -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"]

19
app/certs/ssl.crt Normal file
View file

@ -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-----

28
app/certs/ssl.key Normal file
View file

@ -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-----

View file

@ -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)
}
}()

View file

@ -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

8
zprox.code-workspace Normal file
View file

@ -0,0 +1,8 @@
{
"folders": [
{
"path": "."
}
],
"settings": {}
}