Fix --port setting (#13288)
* Fix --port setting Unfortunately there was an error in #13195 which set the --port option before the settings were read. This PR fixes this by moving applying this option to after the the settings are read However, on looking further into this code I believe that the setPort code was slightly odd. Firstly, it may make sense to run the install page on a different temporary port to the full system and this should be possible with a --install-port option. Secondy, if the --port option is provided we should apply it to both otherwise there will be unusual behaviour on graceful restart Thirdly, the documentation for --port says that the setting is temporary - it should therefore not save its result to the configuration (This however, does mean that authorized_keys and internal links may not be correct. - I think we need to discuss this option further.) Fix #13277 Signed-off-by: Andrew Thornton <art27@cantab.net> * Update cmd/web.go * Apply suggestions from code review Co-authored-by: techknowlogick <techknowlogick@gitea.io>
This commit is contained in:
parent
20a5eff3e8
commit
dd12384f22
2 changed files with 23 additions and 8 deletions
30
cmd/web.go
30
cmd/web.go
|
@ -41,6 +41,11 @@ and it takes care of all the other things for you`,
|
||||||
Value: "3000",
|
Value: "3000",
|
||||||
Usage: "Temporary port number to prevent conflict",
|
Usage: "Temporary port number to prevent conflict",
|
||||||
},
|
},
|
||||||
|
cli.StringFlag{
|
||||||
|
Name: "install-port",
|
||||||
|
Value: "3000",
|
||||||
|
Usage: "Temporary port number to run the install page on to prevent conflict",
|
||||||
|
},
|
||||||
cli.StringFlag{
|
cli.StringFlag{
|
||||||
Name: "pid, P",
|
Name: "pid, P",
|
||||||
Value: setting.PIDFile,
|
Value: setting.PIDFile,
|
||||||
|
@ -116,16 +121,20 @@ func runWeb(ctx *cli.Context) error {
|
||||||
setting.WritePIDFile = true
|
setting.WritePIDFile = true
|
||||||
}
|
}
|
||||||
|
|
||||||
// Flag for port number in case first time run conflict.
|
|
||||||
if ctx.IsSet("port") {
|
|
||||||
if err := setPort(ctx.String("port")); err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// Perform pre-initialization
|
// Perform pre-initialization
|
||||||
needsInstall := routers.PreInstallInit(graceful.GetManager().HammerContext())
|
needsInstall := routers.PreInstallInit(graceful.GetManager().HammerContext())
|
||||||
if needsInstall {
|
if needsInstall {
|
||||||
|
// Flag for port number in case first time run conflict
|
||||||
|
if ctx.IsSet("port") {
|
||||||
|
if err := setPort(ctx.String("port")); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if ctx.IsSet("install-port") {
|
||||||
|
if err := setPort(ctx.String("install-port")); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
m := routes.NewMacaron()
|
m := routes.NewMacaron()
|
||||||
routes.RegisterInstallRoute(m)
|
routes.RegisterInstallRoute(m)
|
||||||
err := listen(m, false)
|
err := listen(m, false)
|
||||||
|
@ -152,6 +161,12 @@ func runWeb(ctx *cli.Context) error {
|
||||||
// Perform global initialization
|
// Perform global initialization
|
||||||
routers.GlobalInit(graceful.GetManager().HammerContext())
|
routers.GlobalInit(graceful.GetManager().HammerContext())
|
||||||
|
|
||||||
|
// Override the provided port number within the configuration
|
||||||
|
if ctx.IsSet("port") {
|
||||||
|
if err := setPort(ctx.String("port")); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
// Set up Macaron
|
// Set up Macaron
|
||||||
m := routes.NewMacaron()
|
m := routes.NewMacaron()
|
||||||
routes.RegisterRoutes(m)
|
routes.RegisterRoutes(m)
|
||||||
|
@ -190,7 +205,6 @@ func setPort(port string) error {
|
||||||
defaultLocalURL += ":" + setting.HTTPPort + "/"
|
defaultLocalURL += ":" + setting.HTTPPort + "/"
|
||||||
|
|
||||||
cfg.Section("server").Key("LOCAL_ROOT_URL").SetValue(defaultLocalURL)
|
cfg.Section("server").Key("LOCAL_ROOT_URL").SetValue(defaultLocalURL)
|
||||||
|
|
||||||
if err := cfg.SaveTo(setting.CustomConf); err != nil {
|
if err := cfg.SaveTo(setting.CustomConf); err != nil {
|
||||||
return fmt.Errorf("Error saving generated JWT Secret to custom config: %v", err)
|
return fmt.Errorf("Error saving generated JWT Secret to custom config: %v", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -40,6 +40,7 @@ Starts the server:
|
||||||
|
|
||||||
- Options:
|
- Options:
|
||||||
- `--port number`, `-p number`: Port number. Optional. (default: 3000). Overrides configuration file.
|
- `--port number`, `-p number`: Port number. Optional. (default: 3000). Overrides configuration file.
|
||||||
|
- `--install-port number`: Port number to run the install page on. Optional. (default: 3000). Overrides configuration file.
|
||||||
- `--pid path`, `-P path`: Pidfile path. Optional.
|
- `--pid path`, `-P path`: Pidfile path. Optional.
|
||||||
- Examples:
|
- Examples:
|
||||||
- `gitea web`
|
- `gitea web`
|
||||||
|
|
Loading…
Reference in a new issue