/// <summary> /// Loads the rpc settings from the application configuration. /// </summary> /// <param name="nodeSettings">Application configuration.</param> private void LoadSettingsFromConfig(NodeSettings nodeSettings) { TextFileConfiguration config = nodeSettings.ConfigReader; this.Server = config.GetOrDefault <bool>("server", false, this.logger); this.RPCPort = config.GetOrDefault <int>("rpcport", nodeSettings.Network.DefaultRPCPort, this.logger); this.RPCContentType = config.GetOrDefault("rpccontenttype", "application/json; charset=utf-8", this.logger); if (this.Server) { this.RpcUser = config.GetOrDefault <string>("rpcuser", null, this.logger); this.RpcPassword = config.GetOrDefault <string>("rpcpassword", null); // No logging! try { this.AllowIp = config .GetAll("rpcallowip", this.logger) .Select(p => IPAddressBlock.Parse(p)) .ToList(); } catch (FormatException) { throw new ConfigurationException("Invalid rpcallowip value"); } try { this.DefaultBindings = config .GetAll("rpcbind", this.logger) .Select(p => p.ToIPEndPoint(this.RPCPort)) .ToList(); } catch (FormatException) { throw new ConfigurationException("Invalid rpcbind value"); } } }
/// <summary> /// Loads the rpc settings from the application configuration. /// </summary> /// <param name="nodeSettings">Application configuration.</param> private void LoadSettingsFromConfig(NodeSettings nodeSettings) { TextFileConfiguration config = nodeSettings.ConfigReader; this.Server = config.GetOrDefault <bool>("server", false, this.logger); this.RPCPort = config.GetOrDefault <int>("rpcport", nodeSettings.Network.DefaultRPCPort, this.logger); this.RPCContentType = config.GetOrDefault("rpccontenttype", "application/json; charset=utf-8", this.logger); if (this.Server) { this.RpcUser = config.GetOrDefault <string>("rpcuser", null, this.logger); this.RpcPassword = config.GetOrDefault <string>("rpcpassword", null); // No logging! try { this.AllowIp = config .GetAll("rpcallowip", this.logger) .Select(p => IPAddressBlock.Parse(p)) .ToList(); } catch (FormatException) { throw new ConfigurationException("Invalid rpcallowip value"); } try { this.DefaultBindings = config .GetAll("rpcbind", this.logger) .Select(p => p.ToIPEndPoint(this.RPCPort)) .ToList(); } catch (FormatException) { throw new ConfigurationException("Invalid rpcbind value"); } // If the "Bind" list has not been specified via callback. if (this.Bind.Count == 0) { this.Bind = this.DefaultBindings; } if (this.AllowIp.Count == 0) { if (this.Bind.Count > 0) { this.logger.LogWarning("WARNING: RPC bind selection (-rpcbind) was ignored because allowed ip's (-rpcallowip) were not specified, refusing to allow everyone to connect"); } this.Bind.Clear(); this.Bind.Add(new IPEndPoint(IPAddress.Parse("::1"), this.RPCPort)); this.Bind.Add(new IPEndPoint(IPAddress.Parse("127.0.0.1"), this.RPCPort)); } if (this.Bind.Count == 0) { this.Bind.Add(new IPEndPoint(IPAddress.Parse("::"), this.RPCPort)); this.Bind.Add(new IPEndPoint(IPAddress.Parse("0.0.0.0"), this.RPCPort)); } } }