mirror of
https://github.com/yusing/godoxy.git
synced 2026-03-23 09:52:01 +01:00
81 lines
1.7 KiB
Go
Executable File
81 lines
1.7 KiB
Go
Executable File
package main
|
|
|
|
import (
|
|
"net/http"
|
|
"os"
|
|
"os/signal"
|
|
"runtime"
|
|
"syscall"
|
|
|
|
log "github.com/sirupsen/logrus"
|
|
)
|
|
|
|
func main() {
|
|
var err error
|
|
|
|
// flag.Parse()
|
|
runtime.GOMAXPROCS(runtime.NumCPU())
|
|
|
|
log.SetFormatter(&log.TextFormatter{
|
|
ForceColors: true,
|
|
DisableColors: false,
|
|
FullTimestamp: true,
|
|
})
|
|
InitFSWatcher()
|
|
InitDockerWatcher()
|
|
|
|
cfg := NewConfig()
|
|
cfg.MustLoad()
|
|
cfg.StartProviders()
|
|
cfg.WatchChanges()
|
|
|
|
var certAvailable = utils.fileOK(certPath) && utils.fileOK(keyPath)
|
|
|
|
go func() {
|
|
log.Info("starting http server on port 80")
|
|
if certAvailable && redirectHTTP {
|
|
err = http.ListenAndServe(":80", http.HandlerFunc(redirectToTLS))
|
|
} else {
|
|
err = http.ListenAndServe(":80", http.HandlerFunc(httpProxyHandler))
|
|
}
|
|
if err != nil {
|
|
log.Fatal("http server error: ", err)
|
|
}
|
|
}()
|
|
go func() {
|
|
log.Infof("starting http panel on port 8080")
|
|
err = http.ListenAndServe(":8080", http.HandlerFunc(panelHandler))
|
|
if err != nil {
|
|
log.Warning("http panel error: ", err)
|
|
}
|
|
}()
|
|
|
|
if certAvailable {
|
|
go func() {
|
|
log.Info("starting https server on port 443")
|
|
err = http.ListenAndServeTLS(":443", certPath, keyPath, http.HandlerFunc(httpProxyHandler))
|
|
if err != nil {
|
|
log.Fatal("https server error: ", err)
|
|
}
|
|
}()
|
|
go func() {
|
|
log.Info("starting https panel on port 8443")
|
|
err := http.ListenAndServeTLS(":8443", certPath, keyPath, http.HandlerFunc(panelHandler))
|
|
if err != nil {
|
|
log.Warning("http panel error: ", err)
|
|
}
|
|
}()
|
|
}
|
|
|
|
sig := make(chan os.Signal, 1)
|
|
signal.Notify(sig, syscall.SIGINT)
|
|
signal.Notify(sig, syscall.SIGTERM)
|
|
signal.Notify(sig, syscall.SIGHUP)
|
|
|
|
<-sig
|
|
cfg.StopWatching()
|
|
cfg.StopProviders()
|
|
StopFSWatcher()
|
|
StopDockerWatcher()
|
|
}
|