mirror of
https://github.com/kaspanet/kaspad.git
synced 2025-10-14 00:59:33 +00:00

* [NOD-286] Implement API-Server base structure * [NOD-286] Add rpc user and password as command line arguments * [NOD-286] Make log directory a CLI argument * [NOD-286] Add db login details as CLI arguments
59 lines
1.7 KiB
Go
59 lines
1.7 KiB
Go
package main
|
|
|
|
import (
|
|
"errors"
|
|
"github.com/daglabs/btcd/util"
|
|
"github.com/jessevdk/go-flags"
|
|
"path/filepath"
|
|
)
|
|
|
|
const (
|
|
defaultLogFilename = "apiserver.log"
|
|
defaultErrLogFilename = "apiserver_err.log"
|
|
)
|
|
|
|
var (
|
|
// Default configuration options
|
|
defaultLogDir = util.AppDataDir("apiserver", false)
|
|
defaultDBHost = "localhost:3306"
|
|
)
|
|
|
|
type config struct {
|
|
LogDir string `long:"logdir" description:"Directory to log output."`
|
|
RPCUser string `short:"u" long:"rpcuser" description:"RPC username" required:"true"`
|
|
RPCPassword string `short:"P" long:"rpcpass" default-mask:"-" description:"RPC password" required:"true"`
|
|
RPCServer string `short:"s" long:"rpcserver" description:"RPC server to connect to" required:"true"`
|
|
RPCCert string `short:"c" long:"rpccert" description:"RPC server certificate chain for validation"`
|
|
DisableTLS bool `long:"notls" description:"Disable TLS"`
|
|
DBHost string `long:"dbhost" description:"Database host"`
|
|
DBUser string `long:"dbuser" description:"Database user" required:"true"`
|
|
DBPassword string `long:"dbpass" description:"Database password" required:"true"`
|
|
}
|
|
|
|
func parseConfig() (*config, error) {
|
|
cfg := &config{
|
|
LogDir: defaultLogDir,
|
|
DBHost: defaultDBHost,
|
|
}
|
|
parser := flags.NewParser(cfg, flags.PrintErrors|flags.HelpFlag)
|
|
_, err := parser.Parse()
|
|
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
if cfg.RPCCert == "" && !cfg.DisableTLS {
|
|
return nil, errors.New("--notls has to be disabled if --cert is used")
|
|
}
|
|
|
|
if cfg.RPCCert != "" && cfg.DisableTLS {
|
|
return nil, errors.New("--cert should be omitted if --notls is used")
|
|
}
|
|
|
|
logFile := filepath.Join(cfg.LogDir, defaultLogFilename)
|
|
errLogFile := filepath.Join(cfg.LogDir, defaultErrLogFilename)
|
|
initLog(logFile, errLogFile)
|
|
|
|
return cfg, nil
|
|
}
|