12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package main
- import (
- "context"
- "flag"
- "fmt"
- "net"
- "net/http"
- "os/signal"
- "syscall"
- "code.pfad.fr/risefront"
- "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/pkg/errors"
- "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"
- )
- func Program(confPath string) func(l []net.Listener) error {
- return func(l []net.Listener) error {
- defer logger.Sync()
- defer logger.Info("Server exited")
- cosy.RegisterModels(model.GenerateAllModel()...)
- cosy.RegisterAsyncFunc(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()
- // Gin router initialization
- cRouter.Init()
- // Kernel boot
- cKernel.Boot()
- srv := &http.Server{
- Handler: cRouter.GetEngine(),
- }
- // defer Shutdown to wait for ongoing requests to be served before returning
- defer func(srv *http.Server, ctx context.Context) {
- err := srv.Shutdown(ctx)
- if err != nil {
- logger.Fatal(err)
- }
- }(srv, context.Background())
- return srv.Serve(l[0])
- }
- }
- func main() {
- var confPath string
- flag.StringVar(&confPath, "config", "app.ini", "Specify the configuration file")
- flag.Parse()
- settings.Init(confPath)
- ctx, cancel := signal.NotifyContext(context.Background(), syscall.SIGINT, syscall.SIGTERM)
- defer cancel()
- err := risefront.New(ctx, risefront.Config{
- Run: Program(confPath),
- Name: "nginx-ui",
- Addresses: []string{fmt.Sprintf("%s:%d", cSettings.ServerSettings.Host, cSettings.ServerSettings.Port)},
- ErrorHandler: func(kind string, err error) {
- if errors.Is(err, net.ErrClosed) {
- return
- }
- logger.Error(kind, err)
- },
- })
- if err != nil && !errors.Is(err, context.DeadlineExceeded) &&
- !errors.Is(err, context.Canceled) &&
- !errors.Is(err, net.ErrClosed) {
- logger.Error(err)
- }
- }
|