public async Task OutBoundConnectAll() { var clightningPeerInfo = await CLightningClient.ListPeersAsync(); var lndPeerInfo = await LndClient.SwaggerClient.ListPeersAsync(); var nrlInfo = await NRustLightningHttpClient.GetInfoAsync(); if (clightningPeerInfo.Any(x => x.Id.Equals(nrlInfo.ConnectionString.NodeId.ToHex())) && lndPeerInfo.Peers.Any(x => x.Pub_key.Equals(nrlInfo.ConnectionString.NodeId.ToHex()))) { return; } var lndConnString = (await LndLNClient.GetInfo()).NodeInfoList.First().ToConnectionString(); var clightningConnString = (await ClightningLNClient.GetInfo()).NodeInfoList.First().ToConnectionString(); await NRustLightningHttpClient.ConnectAsync(lndConnString); await NRustLightningHttpClient.ConnectAsync(clightningConnString); await Support.Utils.Retry(4, TimeSpan.FromSeconds(2), async() => { clightningPeerInfo = await CLightningClient.ListPeersAsync(); lndPeerInfo = await LndClient.SwaggerClient.ListPeersAsync(); nrlInfo = await NRustLightningHttpClient.GetInfoAsync(); return (nrlInfo.NodeIds.Count >= 2 && clightningPeerInfo.Any(x => x.Id.Equals(nrlInfo.ConnectionString.NodeId.ToHex())) && lndPeerInfo.Peers.Any(x => x.Pub_key.Equals(nrlInfo.ConnectionString.NodeId.ToHex()))); }, "Failed to establish outbound connection"); }
static async Task Main(string[] args) { var command = CommandLine.GetRootCommand(); command.Handler = CommandHandler.Create((ParseResult pr) => { Console.WriteLine($"Calling handler"); Network?network; var n = pr.RootCommandResult.ValueForOption <string>("network"); network = n == "mainnet" ? Network.Main : n == "testnet" ? Network.TestNet : n == "regtest" ? Network.RegTest : null; if (network is null) { if (pr.RootCommandResult.ValueForOption <bool>("testnet")) { network = Network.TestNet; } else if (pr.RootCommandResult.ValueForOption <bool>("regtest")) { network = Network.RegTest; } } if (network is null) { network = Network.Main; } var ip = pr.RootCommandResult.ValueForOption <string>("rpcip"); if (String.IsNullOrEmpty(ip)) { ip = "127.0.0.1"; } var networkProvider = new NRustLightningNetworkProvider(network.NetworkType); var nrustLightningNetwork = networkProvider.GetByCryptoCode(pr.RootCommandResult.ValueForOption <string>("cryptocode") ?? "btc"); var port = pr.RootCommandResult.ValueForOption <int>("rpcport"); if (port == 0) { port = 80; } var baseUrl = $"http://{ip}:{port}"; var client = new NRustLightningClient(baseUrl, nrustLightningNetwork); var subCommand = pr.CommandResult.Symbol.Name; Console.WriteLine($"Subcomamnd is {subCommand}"); if (subCommand == SubCommands.GetInfo) { var nodeInfo = client.GetInfoAsync().Result; Console.WriteLine(nodeInfo.ConnectionString); } else { throw new ArgumentException($"Unknown sub command {subCommand}"); } return; }); var commandLine = new CommandLineBuilder(command).UseDefaults() .Build(); await commandLine.InvokeAsync(args); }