Beispiel #1
0
        public async Task <IActionResult> LndServicesPost(string cryptoCode, int index)
        {
            var external = GetExternalLndConnectionString(cryptoCode, index);

            if (external == null)
            {
                return(NotFound());
            }
            LightningConfigurations confs = new LightningConfigurations();
            var macaroons = external.MacaroonDirectoryPath == null ? null : await Macaroons.GetFromDirectoryAsync(external.MacaroonDirectoryPath);

            if (external.ConnectionType == LightningConnectionType.LndGRPC)
            {
                LightningConfiguration grpcConf = new LightningConfiguration();
                grpcConf.Type = "grpc";
                grpcConf.Host = external.BaseUri.DnsSafeHost;
                grpcConf.Port = external.BaseUri.Port;
                grpcConf.SSL  = external.BaseUri.Scheme == "https";
                confs.Configurations.Add(grpcConf);
            }
            else if (external.ConnectionType == LightningConnectionType.LndREST)
            {
                var restconf = new LNDRestConfiguration();
                restconf.Type = "lnd-rest";
                restconf.Uri  = external.BaseUri.AbsoluteUri;
                confs.Configurations.Add(restconf);
            }
            else
            {
                throw new NotSupportedException(external.ConnectionType.ToString());
            }
            var commonConf = (LNDConfiguration)confs.Configurations[confs.Configurations.Count - 1];

            commonConf.ChainType             = _Options.NetworkType.ToString();
            commonConf.CryptoCode            = cryptoCode;
            commonConf.Macaroon              = external.Macaroon == null ? null : Encoders.Hex.EncodeData(external.Macaroon);
            commonConf.CertificateThumbprint = external.CertificateThumbprint == null ? null : Encoders.Hex.EncodeData(external.CertificateThumbprint);
            commonConf.AdminMacaroon         = macaroons?.AdminMacaroon?.Hex;
            commonConf.ReadonlyMacaroon      = macaroons?.ReadonlyMacaroon?.Hex;
            commonConf.InvoiceMacaroon       = macaroons?.InvoiceMacaroon?.Hex;

            var nonce     = RandomUtils.GetUInt32();
            var configKey = GetConfigKey("lnd", cryptoCode, index, nonce);

            _LnConfigProvider.KeepConfig(configKey, confs);
            return(RedirectToAction(nameof(LndServices), new { cryptoCode = cryptoCode, nonce = nonce }));
        }
Beispiel #2
0
        public IActionResult LndServicesPost(string cryptoCode, int index)
        {
            var external = GetExternalLndConnectionString(cryptoCode, index);

            if (external == null)
            {
                return(NotFound());
            }
            LightningConfigurations confs = new LightningConfigurations();

            if (external.ConnectionType == LightningConnectionType.LndGRPC)
            {
                LightningConfiguration conf = new LightningConfiguration();
                conf.Type                  = "grpc";
                conf.ChainType             = _Options.NetworkType.ToString();
                conf.CryptoCode            = cryptoCode;
                conf.Host                  = external.BaseUri.DnsSafeHost;
                conf.Port                  = external.BaseUri.Port;
                conf.SSL                   = external.BaseUri.Scheme == "https";
                conf.Macaroon              = external.Macaroon == null ? null : Encoders.Hex.EncodeData(external.Macaroon);
                conf.RestrictedMacaroon    = external.RestrictedMacaroon == null ? null : Encoders.Hex.EncodeData(external.RestrictedMacaroon);
                conf.CertificateThumbprint = external.CertificateThumbprint == null ? null : Encoders.Hex.EncodeData(external.CertificateThumbprint);
                confs.Configurations.Add(conf);
            }
            else if (external.ConnectionType == LightningConnectionType.LndREST)
            {
                var restconf = new LNDRestConfiguration();
                restconf.Type                  = "lnd-rest";
                restconf.ChainType             = _Options.NetworkType.ToString();
                restconf.CryptoCode            = cryptoCode;
                restconf.Uri                   = external.BaseUri.AbsoluteUri;
                restconf.Macaroon              = external.Macaroon == null ? null : Encoders.Hex.EncodeData(external.Macaroon);
                restconf.RestrictedMacaroon    = external.RestrictedMacaroon == null ? null : Encoders.Hex.EncodeData(external.RestrictedMacaroon);
                restconf.CertificateThumbprint = external.CertificateThumbprint == null ? null : Encoders.Hex.EncodeData(external.CertificateThumbprint);
                confs.Configurations.Add(restconf);
            }
            var nonce     = RandomUtils.GetUInt32();
            var configKey = GetConfigKey("lnd", cryptoCode, index, nonce);

            _LnConfigProvider.KeepConfig(configKey, confs);
            return(RedirectToAction(nameof(LndServices), new { cryptoCode = cryptoCode, nonce = nonce }));
        }
        public async Task <IActionResult> ServicePost(string serviceName, string cryptoCode)
        {
            if (!_dashBoard.IsFullySynched(cryptoCode, out var unusud))
            {
                StatusMessage = $"Error: {cryptoCode} is not fully synched";
                return(RedirectToAction(nameof(Services)));
            }
            var service = _Options.ExternalServices.GetService(serviceName, cryptoCode);

            if (service == null)
            {
                return(NotFound());
            }

            ExternalConnectionString connectionString = null;

            try
            {
                connectionString = await service.ConnectionString.Expand(this.Request.GetAbsoluteUriNoPathBase(), service.Type);
            }
            catch (Exception ex)
            {
                StatusMessage = $"Error: {ex.Message}";
                return(RedirectToAction(nameof(Services)));
            }

            LightningConfigurations confs = new LightningConfigurations();

            if (service.Type == ExternalServiceTypes.LNDGRPC)
            {
                LightningConfiguration grpcConf = new LightningConfiguration();
                grpcConf.Type = "grpc";
                grpcConf.Host = connectionString.Server.DnsSafeHost;
                grpcConf.Port = connectionString.Server.Port;
                grpcConf.SSL  = connectionString.Server.Scheme == "https";
                confs.Configurations.Add(grpcConf);
            }
            else if (service.Type == ExternalServiceTypes.LNDRest)
            {
                var restconf = new LNDRestConfiguration();
                restconf.Type = "lnd-rest";
                restconf.Uri  = connectionString.Server.AbsoluteUri;
                confs.Configurations.Add(restconf);
            }
            else
            {
                throw new NotSupportedException(service.Type.ToString());
            }
            var commonConf = (LNDConfiguration)confs.Configurations[confs.Configurations.Count - 1];

            commonConf.ChainType             = _Options.NetworkType.ToString();
            commonConf.CryptoCode            = cryptoCode;
            commonConf.Macaroon              = connectionString.Macaroon == null ? null : Encoders.Hex.EncodeData(connectionString.Macaroon);
            commonConf.CertificateThumbprint = connectionString.CertificateThumbprint == null ? null : connectionString.CertificateThumbprint;
            commonConf.AdminMacaroon         = connectionString.Macaroons?.AdminMacaroon?.Hex;
            commonConf.ReadonlyMacaroon      = connectionString.Macaroons?.ReadonlyMacaroon?.Hex;
            commonConf.InvoiceMacaroon       = connectionString.Macaroons?.InvoiceMacaroon?.Hex;

            var nonce     = RandomUtils.GetUInt32();
            var configKey = GetConfigKey("lnd", serviceName, cryptoCode, nonce);

            _LnConfigProvider.KeepConfig(configKey, confs);
            return(RedirectToAction(nameof(Service), new { cryptoCode = cryptoCode, serviceName = serviceName, nonce = nonce }));
        }