private void BuildConnectionWithAgent(XNodeConfiguration nodeConfig)
        {
            string serviceUrl = CheckAndFixServiceUrl(nodeConfig.ServiceUrl);
            string location   = $"{serviceUrl}/realtime/v2/storage";

            _connection = new HubConnectionBuilder()
                          .AddJsonProtocol(opts =>
            {
                opts.PayloadSerializerOptions.Converters.Add(new JsonStringEnumConverter());
            })
                          .WithUrl($"{serviceUrl}/realtime/v2/storage", option =>
            {
                var env = Environment.GetEnvironmentVariable("ASPNETCORE_ENVIRONMENT");
                if (env == "Development")
                {
                    option.HttpMessageHandlerFactory = (message) =>
                    {
                        if (message is HttpClientHandler httpClientHandler)
                        {
                            httpClientHandler.ServerCertificateCustomValidationCallback +=
                                (sender, certificate, chain, sslPolicyErrors) => { return(true); }
                        }
                        ;
                        return(message);
                    };
                }
                else
                {
                    option.HttpMessageHandlerFactory = (message) =>
                    {
                        if (message is HttpClientHandler httpClientHandler)
                        {
                            httpClientHandler.ClientCertificateOptions = ClientCertificateOption.Manual;
                            httpClientHandler.SslProtocols             = SslProtocols.Tls12;
                            var certLocation = Path.Combine(SystemLocations.GetConfigCertificateDirectory(), nodeConfig.CertificateFile);
                            httpClientHandler.ClientCertificates.Add(new X509Certificate2(certLocation, nodeConfig.CertificatePassword));
                        }

                        return(message);
                    };
                }

                option.Headers["x-andyx-storage-name"] = dataStorageConfig.Name;

                option.Headers["x-andyx-storage-username"] = nodeConfig.Username;
                option.Headers["x-andyx-storage-password"] = nodeConfig.Password;

                option.Headers["x-andyx-storage-status"]             = dataStorageConfig.Status.ToString();
                option.Headers["x-andyx-storage-agent-id"]           = agentId;
                option.Headers["x-andyx-storage-agent-max"]          = agentConfiguration.MaxNumber.ToString();
                option.Headers["x-andyx-storage-agent-min"]          = agentConfiguration.MinNumber.ToString();
                option.Headers["x-andyx-storage-agent-loadbalanced"] = agentConfiguration.LoadBalanced.ToString();
            })
                          .WithAutomaticReconnect()
                          .Build();
        }
示例#2
0
 public void CreateConfigDirectories()
 {
     Directory.CreateDirectory(SystemLocations.GetDataDirectory());
     Directory.CreateDirectory(SystemLocations.GetConfigNodesDirectory());
     Directory.CreateDirectory(SystemLocations.GetConfigGeoReplicationDirectory());
     Directory.CreateDirectory(SystemLocations.GetConfigCredentialsDirectory());
     Directory.CreateDirectory(SystemLocations.GetConfigCertificateDirectory());
     Directory.CreateDirectory(SystemLocations.GetStorageDirectory());
     Directory.CreateDirectory(SystemLocations.GetTenantRootDirectory());
 }
示例#3
0
        private void DoFileConfiguration()
        {
            if (Directory.Exists(SystemLocations.GetConfigDirectory()) && Directory.Exists(SystemLocations.GetStorageDirectory()))
            {
                return;
            }

            _logger.LogInformation("Importing Configuration");
            _logger.LogWarning($"If configuration process failes make sure that user have access to write in this location {SystemLocations.GetRootDirectory()}");

            _systemIOService.CreateConfigDirectories();
        }
 public static bool WriteCredentialsConfigurationFromFile(CredentialsConfiguration credentialsConfiguration)
 {
     if (File.Exists(SystemLocations.GetCredentialsConfigFile()))
     {
         File.Delete(SystemLocations.GetCredentialsConfigFile());
     }
     try
     {
         File.WriteAllText(SystemLocations.GetCredentialsConfigFile(), credentialsConfiguration.ToJsonAndEncrypt());
         return(true);
     }
     catch (System.Exception)
     {
         return(false);
     }
 }
 public static bool WriteXNodesConfigurationFromFile(List <XNodeConfiguration> xNodes)
 {
     if (File.Exists(SystemLocations.GetNodesConfigFile()))
     {
         File.Delete(SystemLocations.GetNodesConfigFile());
     }
     try
     {
         File.WriteAllText(SystemLocations.GetNodesConfigFile(), xNodes.ToJsonAndEncrypt());
         return(true);
     }
     catch (System.Exception)
     {
         return(false);
     }
 }
示例#6
0
        private void UpdateDataStorageConfiguration()
        {
            DataStorageConfiguration newConfig = dataStorage;

            if (File.Exists(SystemLocations.GetStorageCredentialsConfigFile()))
            {
                var actualConfig = SystemConfigurationReader.ReadStorageConfigurationFromFile();
                if (newConfig.Name != actualConfig.Name || newConfig.Status != actualConfig.Status)
                {
                    SystemConfigurationWriter.WriteStorageConfigurationFromFile(newConfig);
                }
            }
            else
            {
                SystemConfigurationWriter.WriteStorageConfigurationFromFile(newConfig);
            }
        }
示例#7
0
        private void UpdateCredentials()
        {
            CredentialsConfiguration newConfig = credentials;

            if (File.Exists(SystemLocations.GetCredentialsConfigFile()))
            {
                var actualConfig = SystemConfigurationReader.ReadCredentialsConfigurationFromFile();
                if (newConfig.Username != actualConfig.Username || newConfig.Password != actualConfig.Password)
                {
                    SystemConfigurationWriter.WriteCredentialsConfigurationFromFile(newConfig);
                }
            }
            else
            {
                SystemConfigurationWriter.WriteCredentialsConfigurationFromFile(newConfig);
            }
        }
        public static List <Consumer> ReadAllConsumers()
        {
            List <Consumer> consumersResult = new List <Consumer>();

            if (Directory.Exists(SystemLocations.GetTenantRootDirectory()) != true)
            {
                return(consumersResult);
            }

            string[] tenants = Directory.GetDirectories(SystemLocations.GetTenantRootDirectory());
            foreach (var tenantLocation in tenants)
            {
                // go on every product
                string   tenant   = Path.GetFileName(tenantLocation);
                string[] products = Directory.GetDirectories(TenantLocations.GetProductRootDirectory(tenant));
                foreach (var productLocation in products)
                {
                    string product = Path.GetFileName(productLocation);
                    if (product == "logs")
                    {
                        continue;
                    }

                    string[] components = Directory.GetDirectories(TenantLocations.GetComponentRootDirectory(tenant, product));
                    foreach (var componentLocation in components)
                    {
                        string component = Path.GetFileName(componentLocation);

                        string[] topics = Directory.GetDirectories(TenantLocations.GetTopicRootDirectory(tenant, product, component));
                        foreach (var topicLocation in topics)
                        {
                            string   topic     = Path.GetFileName(topicLocation);
                            string[] consumers = Directory.GetDirectories(TenantLocations.GetConsumerRootDirectory(tenant, product, component, topic));
                            foreach (var consumerLocation in consumers)
                            {
                                string consumer = Path.GetFileName(consumerLocation);
                                consumersResult.Add(ReadConsumerConfigFile(tenant, product, component, topic, consumer));
                            }
                        }
                    }
                }
            }

            return(consumersResult);
        }
示例#9
0
        private void UpdateXNodesConfiguration()
        {
            List <XNodeConfiguration> xNodes = nodes;

            if (File.Exists(SystemLocations.GetNodesConfigFile()))
            {
                xNodes = SystemConfigurationReader.ReadXNodesConfigurationFromFile();
                foreach (var node in nodes)
                {
                    var nodeExists = xNodes.Exists(x => x.ServiceUrl == node.ServiceUrl);
                    if (nodeExists != true)
                    {
                        xNodes.Add(node);
                    }
                }
            }
            SystemConfigurationWriter.WriteXNodesConfigurationFromFile(xNodes);
        }
 public static CredentialsConfiguration ReadCredentialsConfigurationFromFile()
 {
     return(File.ReadAllText(SystemLocations.GetCredentialsConfigFile()).JsonToObjectAndDecrypt <CredentialsConfiguration>());
 }
 public static List <XNodeConfiguration> ReadXNodesConfigurationFromFile()
 {
     return(File.ReadAllText(SystemLocations.GetNodesConfigFile()).JsonToObjectAndDecrypt <List <XNodeConfiguration> >());
 }