main.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172
  1. package main
  2. import (
  3. "flag"
  4. "git.swzry.com/zry/zry-go-program-framework/svcfw"
  5. "git.swzry.com/zry/zry-go-program-framework/websubsvc"
  6. "net/http"
  7. "os"
  8. )
  9. var ArgsBindAddr string
  10. var ArgsWWWRoot string
  11. var ArgsHelp bool
  12. var ArgsVueHistoryMode bool
  13. var App *svcfw.AppFramework
  14. var SubSvcWeb *websubsvc.WebSubService
  15. var WebLogic *WebLogicClass
  16. var WWWRootFS websubsvc.IFilesystem
  17. func main() {
  18. flag.BoolVar(&ArgsHelp, "h", false, "print help")
  19. flag.BoolVar(&ArgsVueHistoryMode, "v", false, "enable vue history mode")
  20. flag.StringVar(&ArgsBindAddr, "b", ":8080", "bind address")
  21. flag.StringVar(&ArgsWWWRoot, "w", "./wwwroot", "wwwroot path. default is './wwwroot'")
  22. flag.Parse()
  23. if ArgsHelp {
  24. flag.PrintDefaults()
  25. return
  26. }
  27. App = svcfw.NewAppFramework(true, "main")
  28. App.InitConsoleLogBackend(os.Stdout, "")
  29. WWWRootFS = websubsvc.NewOsFsWithPrefix(ArgsWWWRoot)
  30. WebLogic = NewWebLogic(ArgsBindAddr)
  31. SubSvcWeb = websubsvc.NewWebSubService(WebLogic)
  32. App.AddSubSvc("web", SubSvcWeb)
  33. App.Info("preparing sub services...")
  34. err := App.Prepare()
  35. if err != nil {
  36. App.Panic("error in preparing sub services: ", err)
  37. }
  38. App.Info("start running sub services...")
  39. err = App.Run()
  40. App.Info("all sub services end.")
  41. if err != nil {
  42. App.Panic("error in running sub services: ", err)
  43. }
  44. }
  45. type WebLogicClass struct {
  46. bindAddr string
  47. }
  48. func NewWebLogic(bindAddr string) *WebLogicClass {
  49. l := &WebLogicClass{
  50. bindAddr: bindAddr,
  51. }
  52. return l
  53. }
  54. func (w WebLogicClass) GetHttpServer(ctx *websubsvc.WebSubServiceContext) *http.Server {
  55. return ctx.MakeHttpServer(w.bindAddr, nil)
  56. }
  57. func (w WebLogicClass) Prepare(ctx *websubsvc.WebSubServiceContext) error {
  58. ctx.DefaultMiddleware("access", "err500")
  59. ctx.Info("prepare URL router...")
  60. ctx.EnableFrontend(WWWRootFS, ArgsVueHistoryMode)
  61. return nil
  62. }