示例#1
0
        static async Task Main(string[] args)
        {
            IEnvVarReader           envVarReader            = new EnvVarReader();
            CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();

            try
            {
                var service = new DnsService(envVarReader);

                Console.CancelKeyPress += (sender, eventArgs) =>
                {
                    Console.WriteLine("Cancel event triggered");
                    cancellationTokenSource
                    .Cancel(false);

                    eventArgs.Cancel = true;
                };

                await service.Start(cancellationTokenSource.Token).ConfigureAwait(false);

                service.Dispose();
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.ToString());
            }

            Console.WriteLine("DNS Server was stopped successfully.");
        }
示例#2
0
        private GXProperties ProcessProperties(string serviceType, string serviceName, GXXMLReader reader)
        {
            GXProperties properties = new GXProperties();

            reader.Read();
            while (reader.Name == "Property")
            {
                reader.ReadType(1, "Name");
                string name = reader.Value;
                reader.ReadType(1, "Value");
                string value = reader.Value;

                if (EnvVarReader.GetEnvironmentValue(serviceType, serviceName, name, out string envVarValue))
                {
                    value = envVarValue;
                }

                properties.Add(name, value);
                reader.Read();
                reader.Read();
            }
            return(properties);
        }
        static NameValueCollection loadConfigJson(string appSettings)
        {
            if (ConfigRoot == null)
            {
                var builder = new ConfigurationBuilder()
                              .SetBasePath(FileUtil.GetBasePath())
                              .AddJsonFile(appSettings, optional: false, reloadOnChange: true)

                              .AddEnvironmentVariables();
                ConfigRoot = builder.Build();
            }
            languages = new Hashtable(StringComparer.OrdinalIgnoreCase);
            NameValueCollection cfg = new NameValueCollection(StringComparer.Ordinal);             //Case sensitive

            foreach (var c in ConfigRoot.GetSection("appSettings").GetChildren())
            {
                string key   = c.Key;
                string value = c.Value;
                if (EnvVarReader.GetEnvironmentValue(key, out string envVarValue))
                {
                    value = envVarValue;
                }
                cfg.Add(key, value);
            }

            foreach (var c in ConfigRoot.GetSection("languages").GetChildren())
            {
                languages[c.Key] = new Hashtable(StringComparer.OrdinalIgnoreCase);
                Hashtable language = (Hashtable)languages[c.Key];
                foreach (var prop in c.GetChildren())
                {
                    language[prop.Key] = prop.Value;
                }
            }

            return(cfg);
        }
        static NameValueCollection loadConfig(string filename, out string logConfigSource)
        {
            GXLogging.Debug(log, "Start loadConfig, filename '", filename, "'");
            NameValueCollection cfg = new NameValueCollection(StringComparer.Ordinal);             //Case sensitive

            logConfigSource = null;
            if (!File.Exists(filename))
            {
                return(cfg);
            }
#pragma warning disable CA3075 // Insecure DTD processing in XML
            using (XmlReader rdr = XmlReader.Create(filename))
#pragma warning restore CA3075 // Insecure DTD processing in XML
            {
                languages = new Hashtable(StringComparer.OrdinalIgnoreCase);

                while (rdr.Read())
                {
                    if (rdr.IsStartElement())
                    {
                        if (rdr.Name.Equals("datastores"))
                        {
                            while (rdr.Read() && !(!rdr.IsStartElement() && rdr.Name.Equals("datastores")))
                            {
                                if (!(rdr.IsStartElement() && rdr["key"] == null) && (rdr.IsStartElement()))
                                {
                                    cfg.Add(rdr["key"], rdr["value"]);
                                }
                            }
                        }
                        else if (rdr.Name.Equals("appSettings"))
                        {
                            while (rdr.Read() && rdr.IsStartElement())
                            {
                                string key   = rdr["key"];
                                string value = rdr["value"];
                                if (EnvVarReader.GetEnvironmentValue(key, out string envVarValue))
                                {
                                    value = envVarValue;
                                }

                                cfg.Add(key, value);
                            }
                        }
                        else if (rdr.Name.Equals("log4net") && rdr.IsStartElement())
                        {
                            logConfigSource = rdr["configSource"];
                        }
                        else if (rdr.Name.Equals("languages"))
                        {
                            while (rdr.Read() && rdr.IsStartElement())
                            {
                                languages[rdr.Name] = new Hashtable(StringComparer.OrdinalIgnoreCase);
                                Hashtable language = (Hashtable)languages[rdr.Name];
                                language["code"]          = rdr["code"];
                                language["time_fmt"]      = rdr["time_fmt"];
                                language["decimal_point"] = rdr["decimal_point"];
                                language["date_fmt"]      = rdr["date_fmt"];
                                language["culture"]       = rdr["culture"];
                                language["thousand_sep"]  = rdr["thousand_sep"];
                            }
                        }
                    }
                }
            }
            GXLogging.Debug(log, "Return loadConfig");
            return(cfg);
        }