Config for web server release/debug mode (#40)

This commit is contained in:
Jamie Holdstock 2020-05-20 15:31:10 +01:00 committed by GitHub
parent 36c748ba12
commit 72fc9afa40
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 27 additions and 27 deletions

View File

@ -25,6 +25,7 @@ var (
defaultConfigFilename = "dcrvsp.conf"
defaultConfigFile = filepath.Join(defaultHomeDir, defaultConfigFilename)
defaultWalletHost = "127.0.0.1"
defaultWebServerDebug = false
)
// config defines the configuration options for the VSP.
@ -40,6 +41,7 @@ type config struct {
WalletUser string `long:"walletuser" ini-name:"walletuser" description:"Username for dcrwallet RPC connections."`
WalletPass string `long:"walletpass" ini-name:"walletpass" description:"Password for dcrwallet RPC connections."`
WalletCert string `long:"walletcert" ini-name:"walletcert" description:"The dcrwallet RPC certificate file."`
WebServerDebug bool `long:"webserverdebug" ini-name:"webserverdebug" description:"Enable web server debug mode (verbose logging to terminal and live-reloading templates)."`
dbPath string
netParams *netParams
@ -141,6 +143,7 @@ func loadConfig() (*config, error) {
HomeDir: defaultHomeDir,
ConfigFile: defaultConfigFile,
WalletHost: defaultWalletHost,
WebServerDebug: defaultWebServerDebug,
}
// Pre-parse the command line options to see if an alternative config

View File

@ -91,10 +91,7 @@ func run(ctx context.Context) error {
NetParams: cfg.netParams.Params,
FeeAccountName: feeAccountName,
}
// TODO: Make releaseMode properly configurable. Release mode enables very
// detailed webserver logging and live reloading of HTML templates.
releaseMode := true
err = webapi.Start(ctx, shutdownRequestChannel, &shutdownWg, cfg.Listen, db, walletRPC, releaseMode, apiCfg)
err = webapi.Start(ctx, shutdownRequestChannel, &shutdownWg, cfg.Listen, db, walletRPC, cfg.WebServerDebug, apiCfg)
if err != nil {
log.Errorf("Failed to initialise webapi: %v", err)
requestShutdown()

View File

@ -28,7 +28,7 @@ var db *database.VspDatabase
var walletRPC rpc.Client
func Start(ctx context.Context, requestShutdownChan chan struct{}, shutdownWg *sync.WaitGroup,
listen string, vdb *database.VspDatabase, wRPC rpc.Client, releaseMode bool, config Config) error {
listen string, vdb *database.VspDatabase, wRPC rpc.Client, debugMode bool, config Config) error {
// Create TCP listener.
var listenConfig net.ListenConfig
@ -39,7 +39,7 @@ func Start(ctx context.Context, requestShutdownChan chan struct{}, shutdownWg *s
log.Infof("Listening on %s", listen)
srv := http.Server{
Handler: router(releaseMode),
Handler: router(debugMode),
ReadTimeout: 5 * time.Second, // slow requests should not hold connections opened
WriteTimeout: 60 * time.Second, // hung responses must die
}
@ -81,10 +81,10 @@ func Start(ctx context.Context, requestShutdownChan chan struct{}, shutdownWg *s
return nil
}
func router(releaseMode bool) *gin.Engine {
func router(debugMode bool) *gin.Engine {
// With release mode enabled, gin will only read template files once and cache them.
// With release mode disabled, templates will be reloaded on the fly.
if releaseMode {
if !debugMode {
gin.SetMode(gin.ReleaseMode)
}
@ -96,7 +96,7 @@ func router(releaseMode bool) *gin.Engine {
// sending no response at all.
router.Use(gin.Recovery())
if !releaseMode {
if debugMode {
// Logger middleware outputs very detailed logging of webserver requests
// to the terminal. Does not get logged to file.
router.Use(gin.Logger())