예제 #1
0
        private void saveButton_Click(object sender, RoutedEventArgs e)
        {
            var newConfig = new DynDns53Config()
            {
                UpdateInterval   = int.Parse(updateIntervalTextBox.Text),
                Route53AccessKey = accessKeyTextBox.Text,
                Route53SecretKey = secretKeyTextBox.Text,
                RunAtSystemStart = runAtStartCheckBox.IsChecked.Value
            };

            newConfig.DomainList = new List <HostedDomainInfo>();

            List <HostedDomainInfo> newList = domainsListView.Items.Cast <HostedDomainInfo>().ToList();

            newList.ToList().ForEach(li =>
            {
                newConfig.DomainList.Add(li);
            });

            ConfigHandler.SaveConfig(newConfig);

            ReloadConfig = true;

            Close();
        }
예제 #2
0
        private void InitConfig()
        {
            AddLog("Loading configuration values...");

            _configHandler = new AppConfigHandler();
            _config        = _configHandler.GetConfig();
            _ipChecker     = _config.IPChecker;

            var _amazonClient = new AmazonRoute53Client(_config.Route53AccessKey, _config.Route53SecretKey, RegionEndpoint.USEast1);

            _dnsUpdater = new DnsUpdater(_amazonClient);

            AddLog($"Found {_config.DomainList.Count} domain(s)");
            foreach (HostedDomainInfo domainInfo in _config.DomainList)
            {
                AddLog($"{domainInfo.DomainName}");
            }

            if (_timer != null)
            {
                // Stop to avoid multiple timer_Tick invocations
                _timer.Stop();
            }

            int interval = _config.UpdateInterval;

            _timer          = new System.Windows.Threading.DispatcherTimer();
            _timer.Tick    += timer_Tick;
            _timer.Interval = new TimeSpan(0, 0, interval);
            _timer.Start();

            AddLog($"Time set to update domains every {interval} seconds");

            SetAutoStart();
        }
예제 #3
0
        public void SaveConfig(DynDns53Config config)
        {
            string exeFileName = System.Reflection.Assembly.GetCallingAssembly().Location;
            var    configFile  = ConfigurationManager.OpenExeConfiguration(exeFileName);

            configFile.AppSettings.Settings.Remove("UpdateInterval");
            configFile.AppSettings.Settings.Add("UpdateInterval", config.UpdateInterval.ToString());

            configFile.AppSettings.Settings.Remove("RunAtSystemStart");
            configFile.AppSettings.Settings.Add("RunAtSystemStart", config.RunAtSystemStart.ToString());

            configFile.AppSettings.Settings.Remove("IPChecker");
            configFile.AppSettings.Settings.Add("IPChecker", config.IPChecker.ToString());

            // AWS section
            var awsConfigSection = configFile.GetSection("awsSettings");

            awsConfigSection.SectionInformation.ForceSave = true;
            string rawXml = awsConfigSection.SectionInformation.GetRawXml();

            awsConfigSection.ElementInformation.Properties["route53AccessKey"].Value = config.Route53AccessKey;
            awsConfigSection.ElementInformation.Properties["route53SecretKey"].Value = config.Route53SecretKey;


            // Domain info
            var domainConfigSection = configFile.GetSection("domainSettings") as DomainSettings;

            domainConfigSection.SectionInformation.ForceSave = true;
            domainConfigSection.DomainList.Clear();

            foreach (var domain in config.DomainList)
            {
                domainConfigSection.DomainList.Add(new DomainElement()
                {
                    SubDomain = domain.DomainName, ZoneId = domain.ZoneId
                });
            }

            configFile.Save(ConfigurationSaveMode.Full);
        }
예제 #4
0
        public DynDns53Config GetConfig()
        {
            ConfigurationManager.RefreshSection("appSettings");
            ConfigurationManager.RefreshSection("awsSettings");
            ConfigurationManager.RefreshSection("domainSettings");

            _config = new DynDns53Config();

            string exeFile    = System.Reflection.Assembly.GetCallingAssembly().Location;
            var    configFile = ConfigurationManager.OpenExeConfiguration(exeFile);

            var awsConfigSection = configFile.GetSection("awsSettings");

            _config.UpdateInterval   = int.Parse(ConfigurationManager.AppSettings["UpdateInterval"]);
            _config.ClientId         = ConfigurationManager.AppSettings["ClientId"];
            _config.IPChecker        = IPCheckerHelper.CreateIPChecker((IPChecker)Enum.Parse(typeof(IPChecker), ConfigurationManager.AppSettings["IPChecker"]));
            _config.Route53AccessKey = awsConfigSection.ElementInformation.Properties["route53AccessKey"].Value.ToString();
            _config.Route53SecretKey = awsConfigSection.ElementInformation.Properties["route53SecretKey"].Value.ToString();
            _config.RunAtSystemStart = bool.Parse(ConfigurationManager.AppSettings["RunAtSystemStart"]);

            _config.DomainList = new List <HostedDomainInfo>();
            var domainConfigSection = configFile.GetSection("domainSettings") as DomainSettings;
            var domainList          = domainConfigSection.ElementInformation.Properties;

            foreach (DomainElement domainInfo in DomainSettings.Settings.DomainList)
            {
                if (!string.IsNullOrEmpty(domainInfo.SubDomain) && !string.IsNullOrEmpty(domainInfo.ZoneId))
                {
                    _config.DomainList.Add(new HostedDomainInfo()
                    {
                        DomainName = domainInfo.SubDomain, ZoneId = domainInfo.ZoneId
                    });
                }
            }

            return(_config);
        }
예제 #5
0
 public void SaveConfig(DynDns53Config config)
 {
     throw new NotImplementedException();
 }
예제 #6
0
 public void SaveConfig(DynDns53Config config)
 {
     var configAsJson = Newtonsoft.Json.JsonConvert.SerializeObject(config);
     File.WriteAllText(_configName, configAsJson);
 }