81 lines
1.9 KiB
Go
81 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"fmt"
|
|
"git.wh64.net/wh64/static-deployer/config"
|
|
"github.com/devproje/commando"
|
|
"github.com/devproje/commando/option"
|
|
"github.com/devproje/commando/types"
|
|
"github.com/gin-gonic/gin"
|
|
"os"
|
|
)
|
|
|
|
var (
|
|
hash = "unknown"
|
|
branch = "unknown"
|
|
version = "unknown"
|
|
)
|
|
|
|
func daemon(n *commando.Node) error {
|
|
cnf := config.Get()
|
|
debug, err := option.ParseBool(*n.MustGetOpt("debug"), n)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if cnf.Environment == "production" {
|
|
gin.SetMode(gin.ReleaseMode)
|
|
} else if debug || cnf.Environment != "production" {
|
|
gin.SetMode(gin.DebugMode)
|
|
} else {
|
|
return fmt.Errorf("unknown environment: %s", cnf.Environment)
|
|
}
|
|
|
|
fmt.Printf("Current Environment: %s\n", cnf.Environment)
|
|
|
|
app := gin.Default()
|
|
app.StaticFS("/", gin.Dir(cnf.Service.Index, false))
|
|
|
|
if !cnf.Service.TLS {
|
|
fmt.Printf("web server binding at: http://%s:%d\n", cnf.Service.Host, cnf.Service.Port)
|
|
if err = app.Run(fmt.Sprintf("%s:%d", cnf.Service.Host, cnf.Service.Port)); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
key := cnf.Service.TLSOpt.KeyFile
|
|
cert := cnf.Service.TLSOpt.CertFile
|
|
|
|
fmt.Printf("Key File: %s\n", cnf.Service.TLSOpt.KeyFile)
|
|
fmt.Printf("Cert File: %s\n", cnf.Service.TLSOpt.CertFile)
|
|
fmt.Printf("web server binding TLS at: https://%s:%d\n", cnf.Service.Host, cnf.Service.Port)
|
|
|
|
if err = app.RunTLS(
|
|
fmt.Sprintf("%s:%d", cnf.Service.Host, cnf.Service.Port), cert, key); err != nil {
|
|
return err
|
|
}
|
|
|
|
return nil
|
|
}
|
|
|
|
func main() {
|
|
config.DefineVersion(fmt.Sprintf("%s-%s (%s)", version, branch, hash))
|
|
|
|
cnf := config.Get()
|
|
fmt.Printf("Static Deployer v%s\n", cnf.Version)
|
|
|
|
command := commando.NewCommando(os.Args[1:])
|
|
command.Root("daemon", "running webserver daemon", daemon, types.OptionData{
|
|
Name: "debug",
|
|
Desc: "enable debug mode",
|
|
Short: []string{"-d"},
|
|
Type: types.BOOLEAN,
|
|
})
|
|
|
|
if err := command.Execute(); err != nil {
|
|
_, _ = fmt.Fprintln(os.Stderr, err)
|
|
os.Exit(1)
|
|
}
|
|
}
|