update: add dockerfile
This commit is contained in:
20
Dockerfile
Normal file
20
Dockerfile
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
FROM golang:1.23.1-alpine3.20 AS go_builder
|
||||||
|
|
||||||
|
WORKDIR /src
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
RUN apk update && apk upgrade && apk add --no-cache ca-certificates tzdata
|
||||||
|
RUN update-ca-certificates
|
||||||
|
RUN go build -o ./tmp/main
|
||||||
|
|
||||||
|
FROM scratch
|
||||||
|
|
||||||
|
WORKDIR /src
|
||||||
|
|
||||||
|
COPY --from=go_builder /usr/share/zoneinfo /usr/share/zoneinfo
|
||||||
|
COPY --from=go_builder /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/
|
||||||
|
COPY --from=go_builder /src/tmp/main /src
|
||||||
|
|
||||||
|
ENV TZ Asia/Jakarta
|
||||||
|
|
||||||
|
ENTRYPOINT ["./main"]
|
||||||
5
main.go
5
main.go
@ -5,6 +5,7 @@ import (
|
|||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
"tunnel_pls/server"
|
"tunnel_pls/server"
|
||||||
|
"tunnel_pls/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
@ -19,9 +20,9 @@ func main() {
|
|||||||
log.SetOutput(os.Stdout)
|
log.SetOutput(os.Stdout)
|
||||||
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
log.SetFlags(log.LstdFlags | log.Lshortfile)
|
||||||
|
|
||||||
privateBytes, err := os.ReadFile("id_rsa")
|
privateBytes, err := os.ReadFile(utils.Getenv("ssh_private_key"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal("Failed to load private key (./id_rsa)")
|
log.Fatalf("Failed to load private key : %s", err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
private, err := ssh.ParsePrivateKey(privateBytes)
|
private, err := ssh.ParsePrivateKey(privateBytes)
|
||||||
|
|||||||
@ -10,10 +10,11 @@ import (
|
|||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
"tunnel_pls/session"
|
"tunnel_pls/session"
|
||||||
|
"tunnel_pls/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
func NewHTTPSServer() error {
|
func NewHTTPSServer() error {
|
||||||
cert, err := tls.LoadX509KeyPair("certs/localhost.direct.SS.crt", "certs/localhost.direct.SS.key")
|
cert, err := tls.LoadX509KeyPair(utils.Getenv("cert_loc"), utils.Getenv("key_loc"))
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|||||||
@ -25,11 +25,9 @@ func NewServer(config ssh.ServerConfig) *Server {
|
|||||||
go func() {
|
go func() {
|
||||||
err := NewHTTPSServer()
|
err := NewHTTPSServer()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if err != nil {
|
log.Fatalf("failed to start https server: %v", err)
|
||||||
log.Fatalf("failed to start https server: %v", err)
|
|
||||||
}
|
|
||||||
return
|
|
||||||
}
|
}
|
||||||
|
return
|
||||||
}()
|
}()
|
||||||
}
|
}
|
||||||
go func() {
|
go func() {
|
||||||
|
|||||||
Reference in New Issue
Block a user