Some checks are pending
Build / build_app (push) Waiting to run
Build / build (386, linux) (push) Blocked by required conditions
Build / build (amd64, darwin) (push) Blocked by required conditions
Build / build (amd64, linux) (push) Blocked by required conditions
Build / build (arm, 5, linux) (push) Blocked by required conditions
Build / build (arm, 6, linux) (push) Blocked by required conditions
Build / build (arm, 7, linux) (push) Blocked by required conditions
Build / build (arm64, darwin) (push) Blocked by required conditions
Build / build (arm64, linux) (push) Blocked by required conditions
Build / build (loong64, linux) (push) Blocked by required conditions
Build / build (mips, linux) (push) Blocked by required conditions
Build / build (mips64, linux) (push) Blocked by required conditions
Build / build (mips64le, linux) (push) Blocked by required conditions
Build / build (mipsle, linux) (push) Blocked by required conditions
Build / build (riscv64, linux) (push) Blocked by required conditions
Build / docker-build (push) Blocked by required conditions
Build Documents / build (push) Waiting to run
74 lines
1.8 KiB
Go
74 lines
1.8 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"fmt"
|
|
"net/http"
|
|
"time"
|
|
|
|
"github.com/0xJacky/Nginx-UI/internal/cmd"
|
|
"github.com/0xJacky/Nginx-UI/internal/kernel"
|
|
"github.com/0xJacky/Nginx-UI/model"
|
|
"github.com/0xJacky/Nginx-UI/router"
|
|
"github.com/0xJacky/Nginx-UI/settings"
|
|
"github.com/gin-gonic/gin"
|
|
"github.com/jpillora/overseer"
|
|
"github.com/uozi-tech/cosy"
|
|
cKernel "github.com/uozi-tech/cosy/kernel"
|
|
"github.com/uozi-tech/cosy/logger"
|
|
cRouter "github.com/uozi-tech/cosy/router"
|
|
cSettings "github.com/uozi-tech/cosy/settings"
|
|
)
|
|
|
|
//go:generate go run cmd/version/generate.go
|
|
|
|
func Program(confPath string) func(state overseer.State) {
|
|
return func(state overseer.State) {
|
|
defer logger.Sync()
|
|
defer logger.Info("Server exited")
|
|
cosy.RegisterModels(model.GenerateAllModel()...)
|
|
|
|
cosy.RegisterInitFunc(kernel.Boot, router.InitRouter)
|
|
|
|
// Initialize settings package
|
|
settings.Init(confPath)
|
|
|
|
// Set gin mode
|
|
gin.SetMode(cSettings.ServerSettings.RunMode)
|
|
|
|
// Initialize logger package
|
|
logger.Init(cSettings.ServerSettings.RunMode)
|
|
defer logger.Sync()
|
|
|
|
if state.Listener == nil {
|
|
return
|
|
}
|
|
// Gin router initialization
|
|
cRouter.Init()
|
|
|
|
// Kernel boot
|
|
cKernel.Boot()
|
|
|
|
addr := fmt.Sprintf("%s:%d", cSettings.ServerSettings.Host, cSettings.ServerSettings.Port)
|
|
srv := &http.Server{
|
|
Addr: addr,
|
|
Handler: cRouter.GetEngine(),
|
|
}
|
|
if err := srv.Serve(state.Listener); err != nil && !errors.Is(err, http.ErrServerClosed) {
|
|
logger.Fatalf("listen: %s\n", err)
|
|
}
|
|
}
|
|
}
|
|
|
|
func main() {
|
|
appCmd := cmd.NewAppCmd()
|
|
|
|
confPath := appCmd.String("config")
|
|
settings.Init(confPath)
|
|
overseer.Run(overseer.Config{
|
|
Program: Program(confPath),
|
|
Address: fmt.Sprintf("%s:%d", cSettings.ServerSettings.Host, cSettings.ServerSettings.Port),
|
|
TerminateTimeout: 5 * time.Second,
|
|
})
|
|
}
|