main.go 867 B

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