github.com/easysoft/zendata@v0.0.0-20240513203326-705bd5a7fd67/cmd/server/main.go (about) 1 package main 2 3 import ( 4 "flag" 5 "os" 6 "os/signal" 7 "syscall" 8 9 configUtils "github.com/easysoft/zendata/internal/pkg/config" 10 consts "github.com/easysoft/zendata/internal/pkg/const" 11 serverConfig "github.com/easysoft/zendata/internal/server/config" 12 "github.com/easysoft/zendata/internal/server/core/web" 13 serverConst "github.com/easysoft/zendata/internal/server/utils/const" 14 fileUtils "github.com/easysoft/zendata/pkg/utils/file" 15 i118Utils "github.com/easysoft/zendata/pkg/utils/i118" 16 logUtils "github.com/easysoft/zendata/pkg/utils/log" 17 "github.com/easysoft/zendata/pkg/utils/vari" 18 "github.com/fatih/color" 19 ) 20 21 var ( 22 flagSet *flag.FlagSet 23 uuid = "" 24 root string 25 ) 26 27 func main() { 28 channel := make(chan os.Signal) 29 signal.Notify(channel, os.Interrupt, syscall.SIGTERM) 30 go func() { 31 <-channel 32 cleanup() 33 os.Exit(0) 34 }() 35 36 flagSet = flag.NewFlagSet("zd", flag.ContinueOnError) 37 38 flagSet.StringVar(&uuid, "uuid", "", "区分服务进程的唯一ID") 39 40 flagSet.IntVar(&vari.Port, "p", 0, "") 41 flagSet.IntVar(&vari.Port, "port", 0, "") 42 flagSet.StringVar(&root, "R", "", "") 43 flagSet.StringVar(&root, "root", "", "") 44 flagSet.BoolVar(&vari.Verbose, "verbose", false, "") 45 46 flagSet.Parse(os.Args[1:]) 47 48 vari.GlobalVars.RunMode = consts.RunModeServer 49 50 configUtils.InitConfig(root) 51 vari.DB, _ = serverConfig.NewGormDB() 52 53 vari.AgentLogDir = vari.WorkDir + serverConst.AgentLogDir + consts.PthSep 54 err := fileUtils.MkDirIfNeeded(vari.AgentLogDir) 55 if err != nil { 56 logUtils.PrintToWithColor(i118Utils.I118Prt.Sprintf("perm_deny", vari.AgentLogDir), color.FgRed) 57 os.Exit(1) 58 } 59 60 if vari.Port == 0 { 61 vari.Port = consts.DefaultDataServicePort 62 } 63 64 webServer := web.Init() 65 if webServer == nil { 66 return 67 } 68 69 webServer.Run() 70 } 71 72 func init() { 73 cleanup() 74 } 75 76 func cleanup() { 77 color.Unset() 78 }