Use smarter btcd cert path logic.
If ~/.btcwallet/btcd.cert does not exist and the CA file has not been explicitly set using the config file or command line flags, it's possible that the cert can be found in ~/.btcd. If connecting to a localhost btcd and the previous statements are true, the default CA file config option is updated for the certificate in them btcd homedir. If ~/.btcwallet/btcd.cert does exist and the CA file has not been set, it is used without checking for a cert in the btcd homedir.
This commit is contained in:
parent
3e2f67fda7
commit
ebcaa95b35
1 changed files with 28 additions and 1 deletions
29
config.go
29
config.go
|
@ -35,8 +35,10 @@ const (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
|
btcdHomeDir = btcutil.AppDataDir("btcd", false)
|
||||||
btcwalletHomeDir = btcutil.AppDataDir("btcwallet", false)
|
btcwalletHomeDir = btcutil.AppDataDir("btcwallet", false)
|
||||||
defaultCAFile = filepath.Join(btcwalletHomeDir, defaultCAFilename)
|
defaultCAFile = filepath.Join(btcwalletHomeDir, defaultCAFilename)
|
||||||
|
btcdHomedirCAFile = filepath.Join(btcdHomeDir, "rpc.cert")
|
||||||
defaultConfigFile = filepath.Join(btcwalletHomeDir, defaultConfigFilename)
|
defaultConfigFile = filepath.Join(btcwalletHomeDir, defaultConfigFilename)
|
||||||
defaultDataDir = btcwalletHomeDir
|
defaultDataDir = btcwalletHomeDir
|
||||||
defaultRPCKeyFile = filepath.Join(btcwalletHomeDir, "rpc.key")
|
defaultRPCKeyFile = filepath.Join(btcwalletHomeDir, "rpc.key")
|
||||||
|
@ -136,7 +138,6 @@ func loadConfig() (*config, []string, error) {
|
||||||
// Default config.
|
// Default config.
|
||||||
cfg := config{
|
cfg := config{
|
||||||
DebugLevel: defaultLogLevel,
|
DebugLevel: defaultLogLevel,
|
||||||
CAFile: defaultCAFile,
|
|
||||||
ConfigFile: defaultConfigFile,
|
ConfigFile: defaultConfigFile,
|
||||||
DataDir: defaultDataDir,
|
DataDir: defaultDataDir,
|
||||||
RPCKey: defaultRPCKeyFile,
|
RPCKey: defaultRPCKeyFile,
|
||||||
|
@ -218,6 +219,32 @@ func loadConfig() (*config, []string, error) {
|
||||||
// Add default port to connect flag if missing.
|
// Add default port to connect flag if missing.
|
||||||
cfg.Connect = normalizeAddress(cfg.Connect, activeNetParams.btcdPort)
|
cfg.Connect = normalizeAddress(cfg.Connect, activeNetParams.btcdPort)
|
||||||
|
|
||||||
|
// If CAFile is unset, choose either the copy or local btcd cert.
|
||||||
|
if cfg.CAFile == "" {
|
||||||
|
cfg.CAFile = defaultCAFile
|
||||||
|
|
||||||
|
// If the CA copy does not exist, check if we're connecting to
|
||||||
|
// a local btcd and switch to its RPC cert if it exists.
|
||||||
|
if !fileExists(cfg.CAFile) {
|
||||||
|
host, _, err := net.SplitHostPort(cfg.Connect)
|
||||||
|
if err != nil {
|
||||||
|
return nil, nil, err
|
||||||
|
}
|
||||||
|
switch host {
|
||||||
|
case "localhost":
|
||||||
|
fallthrough
|
||||||
|
|
||||||
|
case "127.0.0.1":
|
||||||
|
fallthrough
|
||||||
|
|
||||||
|
case "::1":
|
||||||
|
if fileExists(btcdHomedirCAFile) {
|
||||||
|
cfg.CAFile = btcdHomedirCAFile
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if len(cfg.SvrListeners) == 0 {
|
if len(cfg.SvrListeners) == 0 {
|
||||||
addrs, err := net.LookupHost("localhost")
|
addrs, err := net.LookupHost("localhost")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
Loading…
Reference in a new issue