private void LoadProperty(AppSettings settings, string propertyName) { var propertyInfo = GetPropertyInfo(settings, propertyName); var propertyType = propertyInfo.PropertyType; object value; if (propertyType == typeof(string)) { value = (string)NSUserDefaults.StandardUserDefaults.StringForKey(propertyName); } else if (propertyType == typeof(int)) { value = (int)NSUserDefaults.StandardUserDefaults.IntForKey(propertyName); } else if (propertyType == typeof(bool)) { value = (bool)NSUserDefaults.StandardUserDefaults.BoolForKey(propertyName); } else if (propertyType.BaseType == typeof(Enum)) { value = Enum.ToObject(propertyType, (int)NSUserDefaults.StandardUserDefaults.IntForKey(propertyName)); } /*else if (propertyType == typeof (DateTime)) * { * NSDate date = (NSDate) NSUserDefaults.StandardUserDefaults.ValueForKey (MacLib.MacHelpers.ToNSString (propertyName)); * value = MacLib.MacHelpers.NSDateToDateTime (date); * }*/ else if (propertyType == Type.GetType("System.Collections.Generic.List`1[System.String]")) { try { string serialized = (string)NSUserDefaults.StandardUserDefaults.StringForKey(propertyName); XmlSerializer xs = new XmlSerializer(typeof(List <string>)); List <string> newList = (List <string>)xs.Deserialize(new StringReader(serialized)); value = newList; } catch { value = new List <string>(); } } else if (propertyType == typeof(ServersFilterConfig)) { value = ServersFilterConfig.Deserialize((string)NSUserDefaults.StandardUserDefaults.StringForKey(propertyName)); } else if (propertyType == typeof(NetworkActionsConfig)) { value = NetworkActionsConfig.Deserialize((string)NSUserDefaults.StandardUserDefaults.StringForKey(propertyName)); } else { throw new InvalidOperationException("Trying to load property from AppSettings with unsupported type"); } propertyInfo.SetValue(settings, value); }
public void Load(AppSettings settings) { try { settings.IsAutomaticServerSelection = Properties.Settings.Default.IsAutomaticServerSelection; settings.LastUsedServerId = Properties.Settings.Default.ServerId; settings.LastUsedExitServerId = Properties.Settings.Default.ExitServerId; settings.IsAutomaticServerSelectionWg = Properties.Settings.Default.IsAutomaticServerSelectionWg; settings.LastUsedWgServerId = Properties.Settings.Default.LastUsedWgServerId; settings.LastUsedWgExitServerId = Properties.Settings.Default.LastUsedWgExitServerId; // Fastest server settings.LastOvpnFastestServerId = Properties.Settings.Default.LastOvpnFastestServerId; settings.LastWgFastestServerId = Properties.Settings.Default.LastWgFastestServerId; settings.AlternateAPIHost = Properties.Settings.Default.AlternateAPIHost; string username = Properties.Settings.Default.Username; if (string.IsNullOrEmpty(username)) { settings.DeleteSession(); settings.SetWireGuardCredentials(null, null, true, null); } else { // SESSION settings.SetSession(username, Properties.Settings.Default.SessionToken, Properties.Settings.Default.VpnUser, Properties.Settings.Default.VpnSafePass, isPassEncrypded: true); } // Connection settings settings.IsAutoPortSelection = Properties.Settings.Default.IsAutoPortSelection; settings.PreferredPortIndex = Properties.Settings.Default.PreferredPortIndex; LoadProxySettings(settings); // General settings settings.RunOnLogin = GetRunOnLoginFromRegistry(); settings.MinimizeToTray = Properties.Settings.Default.MinimizeToTray; settings.LaunchMinimized = Properties.Settings.Default.LaunchMinimized; settings.AutoConnectOnStart = Properties.Settings.Default.AutoConnectOnLaunch; settings.StopServerOnClientDisconnect = Properties.Settings.Default.StopServerOnClientDisconnect; settings.DoNotShowDialogOnAppClose = Properties.Settings.Default.DoNotShowDialogOnAppClose; // Advanced settings.ServiceUseObfsProxy = Properties.Settings.Default.ServiceUseObfsProxy; settings.ServiceConnectOnInsecureWifi = Properties.Settings.Default.ServiceConnectOnInsecureWifi; settings.FirewallDisableAutoOnOff = Properties.Settings.Default.FirewallDisableAutoOnOff; settings.FirewallDisableDeactivationOnExit = Properties.Settings.Default.FirewallDisableDeactivationOnExit; settings.FirewallLastStatus = Properties.Settings.Default.FirewallLastStatus; settings.FirewallAllowLAN = Properties.Settings.Default.FirewallAllowLAN; settings.FirewallAllowLANMulticast = Properties.Settings.Default.FirewallAllowMulticast; settings.IsIVPNFirewalIntoduced = Properties.Settings.Default.IsIVPNFirewalIntoduced; settings.IsIVPNAlwaysOnWarningDisplayed = Properties.Settings.Default.IsIVPNAlwaysOnWarningDisplayed; settings.LastWindowPosition = Properties.Settings.Default.LastWindowPosition; settings.LastNotificationWindowPosition = Properties.Settings.Default.LastNotificationWindowPosition; settings.IsMultiHop = Properties.Settings.Default.IsMultiHop; settings.FirewallType = LoadFirewallType(); // Diagnostics settings.IsLoggingEnabled = Properties.Settings.Default.IsLoggingEnabled; // Additional OpenVPN parameters defined by user settings.OpenVPNExtraParameters = Properties.Settings.Default.OpenVPNExtraParameters; settings.DisableFirewallNotificationWindow = Properties.Settings.Default.DisableFirewallNotificationWindow; // Actions for Trusted\Untrusted networks settings.IsNetworkActionsEnabled = Properties.Settings.Default.IsNetworkActionsEnabled; settings.NetworkActions = NetworkActionsConfig.Deserialize(Properties.Settings.Default.NetworkActions); //Servers filter settings.ServersFilter = ServersFilterConfig.Deserialize(Properties.Settings.Default.ServersFilter); //DNS filter settings.IsAntiTrackerHardcore = Properties.Settings.Default.IsAntiTrackerHardcore; settings.IsAntiTracker = Properties.Settings.Default.IsAntiTracker; settings.IsCustomDns = Properties.Settings.Default.IsCustomDns; settings.CustomDns = Properties.Settings.Default.CustomDns; // VPN type settings.VpnProtocolType = (VpnType)Properties.Settings.Default.VpnProtocolType; // WireGuard DateTime wgKeyTimestamp; try { wgKeyTimestamp = DateTime.ParseExact(Properties.Settings.Default.WireGuardKeysTimestamp, DateTimeSerializationFormatString, System.Globalization.CultureInfo.InvariantCulture); } catch { wgKeyTimestamp = default(DateTime); } settings.SetWireGuardCredentials(Properties.Settings.Default.WireGuardClientPrivateKey, Properties.Settings.Default.WireGuardClientPublicKey, true, Properties.Settings.Default.WireGuardClientInternalIp, wgKeyTimestamp); settings.WireGuardKeysRegenerationIntervalHours = Properties.Settings.Default.WireGuardKeysRegenerationIntervalHours; settings.WireGuardPreferredPortIndex = Properties.Settings.Default.WireGuardPreferredPortIndex; settings.UpdateEnabledServerPorts(); } catch (Exception ex) { Logging.Info("Settings loading error: " + (string.IsNullOrEmpty(ex.Message) ? "<no error information>" : ex.Message)); } }
public SettingsProvider() { __Defaults = new Dictionary <string, object>(); __Defaults["VpnProtocolType"] = (int)VpnType.OpenVPN; __Defaults["AlternateAPIHost"] = ""; __Defaults["IsFirstIntroductionDone"] = false; __Defaults["AutoConnectOnStart"] = false; __Defaults["LaunchMinimized"] = false; __Defaults["DoNotShowDialogOnAppClose"] = false; __Defaults["WireGuardPreferredPortIndex"] = 0; __Defaults["ProxyType"] = (int)ProxyType.None; __Defaults["ProxyServer"] = ""; __Defaults["ProxyPort"] = 8080; __Defaults["ProxyUsername"] = ""; __Defaults["ProxySafePassword"] = ""; __Defaults["ServiceUseObfsProxy"] = false; __Defaults["ServiceConnectOnInsecureWifi"] = false; __Defaults["IsAutomaticServerSelection"] = true; __Defaults["IsAutomaticServerSelectionWg"] = true; __Defaults["LastUsedServerId"] = ""; __Defaults["LastUsedExitServerId"] = ""; __Defaults["LastUsedWgServerId"] = ""; __Defaults["LastUsedWgExitServerId"] = ""; __Defaults["LastOvpnFastestServerId"] = ""; __Defaults["LastWgFastestServerId"] = ""; __Defaults["IsMultiHop"] = false; __Defaults["PreferredPortIndex"] = 0; __Defaults["IsAutoPortSelection"] = true; __Defaults["FirewallAutoOnOff"] = true; __Defaults["FirewallDeactivationOnExit"] = true; __Defaults["FirewallLastStatus"] = false; __Defaults["FirewallAllowLAN"] = false; __Defaults["FirewallAllowLANMulticast"] = true; __Defaults["IsIVPNFirewalIntoduced"] = false; __Defaults["FirewallType"] = (int)IVPNFirewallType.Manual; __Defaults["IsIVPNAlwaysOnWarningDisplayed"] = false; __Defaults["IsLoggingEnabled"] = false; __Defaults["LastWindowPosition"] = ""; __Defaults["LastNotificationWindowPosition"] = ""; __Defaults["DisableFirewallNotificationWindow"] = false; __Defaults["RunOnLogin"] = false; __Defaults["MacIsShowIconInSystemDock"] = false; __Defaults["StopServerOnClientDisconnect"] = false; __Defaults["IsNetworkActionsEnabled"] = true; __Defaults["ServersFilter"] = new ServersFilterConfig(); __Defaults["NetworkActions"] = new NetworkActionsConfig(); __Defaults["IsAntiTrackerHardcore"] = false; __Defaults["IsAntiTracker"] = false; __Defaults["IsCustomDns"] = false; __Defaults["CustomDns"] = ""; }
public void Load(AppSettings settings) { try { settings.IsAutomaticServerSelection = Properties.Settings.Default.IsAutomaticServerSelection; settings.LastUsedServerId = Properties.Settings.Default.ServerId; settings.LastUsedExitServerId = Properties.Settings.Default.ExitServerId; settings.IsAutomaticServerSelectionWg = Properties.Settings.Default.IsAutomaticServerSelectionWg; settings.LastUsedWgServerId = Properties.Settings.Default.LastUsedWgServerId; settings.LastUsedWgExitServerId = Properties.Settings.Default.LastUsedWgExitServerId; // Fastest server settings.LastOvpnFastestServerId = Properties.Settings.Default.LastOvpnFastestServerId; settings.LastWgFastestServerId = Properties.Settings.Default.LastWgFastestServerId; settings.AlternateAPIHost = Properties.Settings.Default.AlternateAPIHost; // Connection settings settings.IsAutoPortSelection = Properties.Settings.Default.IsAutoPortSelection; settings.PreferredPortIndex = Properties.Settings.Default.PreferredPortIndex; LoadProxySettings(settings); // General settings settings.RunOnLogin = GetRunOnLoginFromRegistry(); settings.MinimizeToTray = Properties.Settings.Default.MinimizeToTray; settings.LaunchMinimized = Properties.Settings.Default.LaunchMinimized; settings.AutoConnectOnStart = Properties.Settings.Default.AutoConnectOnLaunch; settings.StopServerOnClientDisconnect = Properties.Settings.Default.StopServerOnClientDisconnect; settings.DoNotShowDialogOnAppClose = Properties.Settings.Default.DoNotShowDialogOnAppClose; // Advanced settings.ServiceUseObfsProxy = Properties.Settings.Default.ServiceUseObfsProxy; settings.ServiceConnectOnInsecureWifi = Properties.Settings.Default.ServiceConnectOnInsecureWifi; settings.FirewallDisableAutoOnOff = Properties.Settings.Default.FirewallDisableAutoOnOff; settings.FirewallDisableDeactivationOnExit = Properties.Settings.Default.FirewallDisableDeactivationOnExit; settings.FirewallLastStatus = Properties.Settings.Default.FirewallLastStatus; settings.FirewallAllowLAN = Properties.Settings.Default.FirewallAllowLAN; settings.FirewallAllowLANMulticast = Properties.Settings.Default.FirewallAllowMulticast; settings.IsIVPNFirewalIntoduced = Properties.Settings.Default.IsIVPNFirewalIntoduced; settings.IsIVPNAlwaysOnWarningDisplayed = Properties.Settings.Default.IsIVPNAlwaysOnWarningDisplayed; settings.LastWindowPosition = Properties.Settings.Default.LastWindowPosition; settings.LastNotificationWindowPosition = Properties.Settings.Default.LastNotificationWindowPosition; settings.IsMultiHop = Properties.Settings.Default.IsMultiHop; settings.FirewallType = LoadFirewallType(); // Diagnostics settings.IsLoggingEnabled = Properties.Settings.Default.IsLoggingEnabled; settings.DisableFirewallNotificationWindow = Properties.Settings.Default.DisableFirewallNotificationWindow; // Actions for Trusted\Untrusted networks settings.IsNetworkActionsEnabled = Properties.Settings.Default.IsNetworkActionsEnabled; settings.NetworkActions = NetworkActionsConfig.Deserialize(Properties.Settings.Default.NetworkActions); //Servers filter settings.ServersFilter = ServersFilterConfig.Deserialize(Properties.Settings.Default.ServersFilter); //DNS filter settings.IsAntiTrackerHardcore = Properties.Settings.Default.IsAntiTrackerHardcore; settings.IsAntiTracker = Properties.Settings.Default.IsAntiTracker; settings.IsCustomDns = Properties.Settings.Default.IsCustomDns; settings.CustomDns = Properties.Settings.Default.CustomDns; // VPN type settings.VpnProtocolType = (VpnType)Properties.Settings.Default.VpnProtocolType; // WireGuard settings.WireGuardPreferredPortIndex = Properties.Settings.Default.WireGuardPreferredPortIndex; settings.UpdateEnabledServerPorts(); } catch (Exception ex) { Logging.Info("Settings loading error: " + (string.IsNullOrEmpty(ex.Message) ? "<no error information>" : ex.Message)); } }