main.go 847 B

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. // AnyLink 是一个企业级远程办公vpn软件,可以支持多人同时在线使用。
  2. // +build !windows
  3. package main
  4. import (
  5. "embed"
  6. "os"
  7. "os/signal"
  8. "syscall"
  9. "github.com/bjdgyc/anylink/admin"
  10. "github.com/bjdgyc/anylink/base"
  11. "github.com/bjdgyc/anylink/handler"
  12. )
  13. //go:embed ui
  14. var uiData embed.FS
  15. // 程序版本
  16. var CommitId string
  17. func main() {
  18. base.CommitId = CommitId
  19. admin.UiData = uiData
  20. base.Start()
  21. handler.Start()
  22. signalWatch()
  23. }
  24. func signalWatch() {
  25. base.Info("Server pid: ", os.Getpid())
  26. sigs := make(chan os.Signal, 1)
  27. signal.Notify(sigs, syscall.SIGINT, syscall.SIGTERM, syscall.SIGALRM)
  28. for {
  29. sig := <-sigs
  30. base.Info("Get signal:", sig)
  31. switch sig {
  32. case syscall.SIGUSR2:
  33. // reload
  34. base.Info("Reload")
  35. default:
  36. // stop
  37. base.Info("Stop")
  38. handler.Stop()
  39. return
  40. }
  41. }
  42. }