public static RPCArgs Parse(TextFileConfiguration confArgs, Network network, string prefix = null) { prefix = prefix ?? ""; if (prefix != "") { if (!prefix.EndsWith(".")) { prefix += "."; } } try { var url = confArgs.GetOrDefault <string>(prefix + "rpc.url", network == null ? null : "http://localhost:" + network.RPCPort + "/"); return(new RPCArgs() { User = confArgs.GetOrDefault <string>(prefix + "rpc.user", null), Password = confArgs.GetOrDefault <string>(prefix + "rpc.password", null), CookieFile = confArgs.GetOrDefault <string>(prefix + "rpc.cookiefile", null), Url = url == null ? null : new Uri(url) }); } catch (FormatException) { throw new ConfigException("rpc.url is not an url"); } }
public void MergeInto(TextFileConfiguration destination, bool sourcePriority) { foreach (var kv in _Args) { foreach (var v in kv.Value) { destination.Add(kv.Key, v, sourcePriority); } } }
public ExplorerConfiguration LoadArgs(String[] args) { ConfigurationFile = args.Where(a => a.StartsWith("-conf=", StringComparison.Ordinal)).Select(a => a.Substring("-conf=".Length).Replace("\"", "")).FirstOrDefault(); DataDir = args.Where(a => a.StartsWith("-datadir=", StringComparison.Ordinal)).Select(a => a.Substring("-datadir=".Length).Replace("\"", "")).FirstOrDefault(); if (DataDir != null && ConfigurationFile != null) { var isRelativePath = Path.GetFullPath(ConfigurationFile).Length > ConfigurationFile.Length; if (isRelativePath) { ConfigurationFile = Path.Combine(DataDir, ConfigurationFile); } } Network = args.Contains("-testnet", StringComparer.OrdinalIgnoreCase) ? Network.TestNet : args.Contains("-regtest", StringComparer.OrdinalIgnoreCase) ? Network.RegTest : Network.DefaultMain; if (ConfigurationFile != null) { AssetConfigFileExists(); var configTemp = TextFileConfiguration.Parse(File.ReadAllText(ConfigurationFile)); Network = configTemp.GetOrDefault <bool>("testnet", false) ? Network.TestNet : configTemp.GetOrDefault <bool>("regtest", false) ? Network.RegTest : Network.DefaultMain; } if (DataDir == null) { DataDir = DefaultDataDirectory.GetDefaultDirectory("ElementExplorer", Network); } if (ConfigurationFile == null) { ConfigurationFile = GetDefaultConfigurationFile(); } if (!Directory.Exists(DataDir)) { throw new ConfigurationException("Data directory does not exists"); } var consoleConfig = new TextFileConfiguration(args); var config = TextFileConfiguration.Parse(File.ReadAllText(ConfigurationFile)); consoleConfig.MergeInto(config, true); if (Network == Network.DefaultMain || Network == Network.RegTest) { var rpc = RPCArgs.Parse(config, Network).ConfigureRPCClient(Network); Network = CreateNetwork(Network, rpc.GetBlock(0)); RPCArgs.CheckNetwork(Network, rpc); } Logs.Configuration.LogInformation("Network: " + Network); Logs.Configuration.LogInformation("Data directory set to " + DataDir); Logs.Configuration.LogInformation("Configuration file set to " + ConfigurationFile); Rescan = config.GetOrDefault <bool>("rescan", false); var defaultPort = config.GetOrDefault <int>("port", 37123); Listen = config .GetAll("bind") .Select(p => ConvertToEndpoint(p, defaultPort)) .ToList(); if (Listen.Count == 0) { Listen.Add(new IPEndPoint(IPAddress.Any, defaultPort)); } RPC = RPCArgs.Parse(config, Network); NodeEndpoint = ConvertToEndpoint(config.GetOrDefault <string>("node.endpoint", "127.0.0.1"), Network.DefaultPort); CacheChain = config.GetOrDefault <bool>("cachechain", true); StartHeight = config.GetOrDefault <int>("startheight", 0); return(this); }
public static RPCClient ConfigureRPCClient(TextFileConfiguration confArgs, Network network, string prefix = null) { RPCArgs args = Parse(confArgs, network, prefix); return(args.ConfigureRPCClient(network)); }