fix(server): use gocfg to get port
This commit is contained in:
parent
05c89234f0
commit
04b39eff03
4 changed files with 30 additions and 18 deletions
2
go.mod
2
go.mod
|
@ -12,7 +12,7 @@ require (
|
||||||
github.com/go-playground/validator/v10 v10.9.0 // indirect
|
github.com/go-playground/validator/v10 v10.9.0 // indirect
|
||||||
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
|
||||||
github.com/golang/protobuf v1.5.2 // indirect
|
github.com/golang/protobuf v1.5.2 // indirect
|
||||||
github.com/ihexxa/gocfg v0.0.0-20201206115732-ab537e3b1086
|
github.com/ihexxa/gocfg v0.0.0-20210914021417-6ba19520f0ff
|
||||||
github.com/ihexxa/multipart v0.0.0-20201207132919-72f6e0e58b25
|
github.com/ihexxa/multipart v0.0.0-20201207132919-72f6e0e58b25
|
||||||
github.com/jessevdk/go-flags v1.4.0
|
github.com/jessevdk/go-flags v1.4.0
|
||||||
github.com/json-iterator/go v1.1.11 // indirect
|
github.com/json-iterator/go v1.1.11 // indirect
|
||||||
|
|
2
go.sum
2
go.sum
|
@ -59,6 +59,8 @@ github.com/hashicorp/go-version v1.0.0 h1:21MVWPKDphxa7ineQQTrCU5brh7OuVVAzGOCnn
|
||||||
github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
github.com/hashicorp/go-version v1.0.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA=
|
||||||
github.com/ihexxa/gocfg v0.0.0-20201206115732-ab537e3b1086 h1:1IzU4pzD8NyEHgJGLOS3Iq56b0zlAylRwbJq+08PD9Y=
|
github.com/ihexxa/gocfg v0.0.0-20201206115732-ab537e3b1086 h1:1IzU4pzD8NyEHgJGLOS3Iq56b0zlAylRwbJq+08PD9Y=
|
||||||
github.com/ihexxa/gocfg v0.0.0-20201206115732-ab537e3b1086/go.mod h1:oqDTq1ywx4Qi9DdhFwwMHoPCYv6Txrfj2SY5WWcgiJs=
|
github.com/ihexxa/gocfg v0.0.0-20201206115732-ab537e3b1086/go.mod h1:oqDTq1ywx4Qi9DdhFwwMHoPCYv6Txrfj2SY5WWcgiJs=
|
||||||
|
github.com/ihexxa/gocfg v0.0.0-20210914021417-6ba19520f0ff h1:rsaVb8KIlg3gd7CEPTV/Qi5cf6i4C12EmbnsRMjGxkY=
|
||||||
|
github.com/ihexxa/gocfg v0.0.0-20210914021417-6ba19520f0ff/go.mod h1:oqDTq1ywx4Qi9DdhFwwMHoPCYv6Txrfj2SY5WWcgiJs=
|
||||||
github.com/ihexxa/multipart v0.0.0-20201207132919-72f6e0e58b25 h1:gQCaP2qoFWCTz17jj9EUhE/plgqJwk3nHbcS4RHQYCw=
|
github.com/ihexxa/multipart v0.0.0-20201207132919-72f6e0e58b25 h1:gQCaP2qoFWCTz17jj9EUhE/plgqJwk3nHbcS4RHQYCw=
|
||||||
github.com/ihexxa/multipart v0.0.0-20201207132919-72f6e0e58b25/go.mod h1:rhOAe/52S/J1fq1VnXvKX8FHuo65I+IcYUozW4M7+wE=
|
github.com/ihexxa/multipart v0.0.0-20201207132919-72f6e0e58b25/go.mod h1:rhOAe/52S/J1fq1VnXvKX8FHuo65I+IcYUozW4M7+wE=
|
||||||
github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA=
|
github.com/jessevdk/go-flags v1.4.0 h1:4IU2WS7AumrZ/40jfhf4QVDMsQwqA7VEHozFRrGARJA=
|
||||||
|
|
|
@ -34,7 +34,7 @@ type Secrets struct {
|
||||||
type ServerCfg struct {
|
type ServerCfg struct {
|
||||||
Debug bool `json:"debug" yaml:"debug"`
|
Debug bool `json:"debug" yaml:"debug"`
|
||||||
Host string `json:"host" yaml:"host"`
|
Host string `json:"host" yaml:"host"`
|
||||||
Port int `json:"port" yaml:"port"`
|
Port int `json:"port" yaml:"port" cfg:"env"`
|
||||||
ReadTimeout int `json:"readTimeout" yaml:"readTimeout"`
|
ReadTimeout int `json:"readTimeout" yaml:"readTimeout"`
|
||||||
WriteTimeout int `json:"writeTimeout" yaml:"writeTimeout"`
|
WriteTimeout int `json:"writeTimeout" yaml:"writeTimeout"`
|
||||||
MaxHeaderBytes int `json:"maxHeaderBytes" yaml:"maxHeaderBytes"`
|
MaxHeaderBytes int `json:"maxHeaderBytes" yaml:"maxHeaderBytes"`
|
||||||
|
|
|
@ -10,6 +10,7 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"os/signal"
|
"os/signal"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strconv"
|
||||||
"syscall"
|
"syscall"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
@ -53,11 +54,20 @@ func NewServer(cfg gocfg.ICfg) (*Server, error) {
|
||||||
router := gin.Default()
|
router := gin.Default()
|
||||||
router, err := initHandlers(router, cfg, deps)
|
router, err := initHandlers(router, cfg, deps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("init handlers error: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
port := cfg.GrabInt("Server.Port")
|
||||||
|
portStr, ok := cfg.String("ENV.PORT")
|
||||||
|
if ok {
|
||||||
|
port, err = strconv.Atoi(portStr)
|
||||||
|
if err != nil {
|
||||||
|
panic(fmt.Sprintf("invalid port: %s", portStr))
|
||||||
|
}
|
||||||
|
cfg.SetInt("Server.Port", port)
|
||||||
|
}
|
||||||
srv := &http.Server{
|
srv := &http.Server{
|
||||||
Addr: fmt.Sprintf("%s:%d", cfg.GrabString("Server.Host"), cfg.GrabInt("Server.Port")),
|
Addr: fmt.Sprintf("%s:%d", cfg.GrabString("Server.Host"), port),
|
||||||
Handler: router,
|
Handler: router,
|
||||||
ReadTimeout: time.Duration(cfg.GrabInt("Server.ReadTimeout")) * time.Millisecond,
|
ReadTimeout: time.Duration(cfg.GrabInt("Server.ReadTimeout")) * time.Millisecond,
|
||||||
WriteTimeout: time.Duration(cfg.GrabInt("Server.WriteTimeout")) * time.Millisecond,
|
WriteTimeout: time.Duration(cfg.GrabInt("Server.WriteTimeout")) * time.Millisecond,
|
||||||
|
@ -65,9 +75,9 @@ func NewServer(cfg gocfg.ICfg) (*Server, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
return &Server{
|
return &Server{
|
||||||
server: srv,
|
server: srv,
|
||||||
deps: deps,
|
deps: deps,
|
||||||
cfg: cfg,
|
cfg: cfg,
|
||||||
}, nil
|
}, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -77,10 +87,10 @@ func mkRoot(rootPath string) {
|
||||||
if os.IsNotExist(err) {
|
if os.IsNotExist(err) {
|
||||||
err = os.MkdirAll(rootPath, 0760)
|
err = os.MkdirAll(rootPath, 0760)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(fmt.Sprintf("mk root path error: %s", err))
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
panic(err)
|
panic(fmt.Sprintf("stat root Path error: %s", err))
|
||||||
}
|
}
|
||||||
} else if !info.IsDir() {
|
} else if !info.IsDir() {
|
||||||
panic(fmt.Sprintf("can not create %s folder: there is a file with same name", rootPath))
|
panic(fmt.Sprintf("can not create %s folder: there is a file with same name", rootPath))
|
||||||
|
@ -143,7 +153,7 @@ func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps) (*gin.E
|
||||||
// handlers
|
// handlers
|
||||||
userHdrs, err := multiusers.NewMultiUsersSvc(cfg, deps)
|
userHdrs, err := multiusers.NewMultiUsersSvc(cfg, deps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("new users svc error: %w", err)
|
||||||
}
|
}
|
||||||
if cfg.BoolOr("Users.EnableAuth", true) && !userHdrs.IsInited() {
|
if cfg.BoolOr("Users.EnableAuth", true) && !userHdrs.IsInited() {
|
||||||
adminName, ok := cfg.String("ENV.DEFAULTADMIN")
|
adminName, ok := cfg.String("ENV.DEFAULTADMIN")
|
||||||
|
@ -157,7 +167,7 @@ func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps) (*gin.E
|
||||||
if adminPwd == "" {
|
if adminPwd == "" {
|
||||||
adminPwd, err = generatePwd()
|
adminPwd, err = generatePwd()
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("generate pwd error: %w", err)
|
||||||
}
|
}
|
||||||
// only write to stdout
|
// only write to stdout
|
||||||
fmt.Printf("password is generated: %s, please update it after login\n", adminPwd)
|
fmt.Printf("password is generated: %s, please update it after login\n", adminPwd)
|
||||||
|
@ -165,10 +175,10 @@ func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps) (*gin.E
|
||||||
|
|
||||||
pwdHash, err := bcrypt.GenerateFromPassword([]byte(adminPwd), 10)
|
pwdHash, err := bcrypt.GenerateFromPassword([]byte(adminPwd), 10)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("generate pwd error: %w", err)
|
||||||
}
|
}
|
||||||
if _, err := userHdrs.Init(adminName, string(pwdHash)); err != nil {
|
if _, err := userHdrs.Init(adminName, string(pwdHash)); err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("init admin error: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
deps.Log().Infof("user (%s) is created\n", adminName)
|
deps.Log().Infof("user (%s) is created\n", adminName)
|
||||||
|
@ -176,12 +186,12 @@ func initHandlers(router *gin.Engine, cfg gocfg.ICfg, deps *depidx.Deps) (*gin.E
|
||||||
|
|
||||||
fileHdrs, err := fileshdr.NewFileHandlers(cfg, deps)
|
fileHdrs, err := fileshdr.NewFileHandlers(cfg, deps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("new files service error: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
settingsSvc, err := settings.NewSettingsSvc(cfg, deps)
|
settingsSvc, err := settings.NewSettingsSvc(cfg, deps)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, fmt.Errorf("new setting service error: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
publicPath, ok := cfg.String("Server.PublicPath")
|
publicPath, ok := cfg.String("Server.PublicPath")
|
||||||
|
@ -295,7 +305,7 @@ func (s *Server) Start() error {
|
||||||
|
|
||||||
err := s.server.ListenAndServe()
|
err := s.server.ListenAndServe()
|
||||||
if err != http.ErrServerClosed {
|
if err != http.ErrServerClosed {
|
||||||
return err
|
return fmt.Errorf("listen error: %w", err)
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -319,7 +329,7 @@ func makeRandToken() string {
|
||||||
b := make([]byte, 32)
|
b := make([]byte, 32)
|
||||||
_, err := rand.Read(b)
|
_, err := rand.Read(b)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
panic(err)
|
panic(fmt.Sprintf("make rand token error: %s", err))
|
||||||
}
|
}
|
||||||
return string(b)
|
return string(b)
|
||||||
}
|
}
|
||||||
|
@ -329,7 +339,7 @@ func generatePwd() (string, error) {
|
||||||
buf := make([]byte, size)
|
buf := make([]byte, size)
|
||||||
size, err := rand.Read(buf)
|
size, err := rand.Read(buf)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", err
|
return "", fmt.Errorf("generate pwd error: %w", err)
|
||||||
}
|
}
|
||||||
|
|
||||||
return fmt.Sprintf("%x", sha1.Sum(buf[:size]))[:6], nil
|
return fmt.Sprintf("%x", sha1.Sum(buf[:size]))[:6], nil
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue