예제 #1
0
        private void SetSettings(AppSettings settings)
        {
            __Settings = settings;
            __Settings.PropertyChanged += __Settings_PropertyChanged;

            Settings       = new AppSettingsAdapter(__Settings);
            NetworkActions = new ObservableObject(__Settings.NetworkActions);

            __NetworksViewModel         = new ViewModelNetworksSettings(__Settings.NetworkActions, this);
            NetworksViewModelObservable = new ObservableObject(__NetworksViewModel);

            __Observers = new List <IDisposable>();
            __Observers.Add(Settings.AddObserver(new NSString("ProxyTypeId"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                if (Window.FirstResponder is NSTextView)
                {
                    UnfocusElement();
                }
            }));

            __Observers.Add(Settings.AddObserver(new NSString("FirewallAllowLAN"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                __MainViewModel.KillSwitchAllowLAN = __Settings.FirewallAllowLAN;
            }));

            __Observers.Add(Settings.AddObserver(new NSString("FirewallAllowLANMulticast"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                __MainViewModel.KillSwitchAllowLANMulticast = __Settings.FirewallAllowLANMulticast;
            }));

            __Observers.Add(Settings.AddObserver(new NSString("ServiceUseObfsProxy"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                __Service.Proxy.SetPreference("enable_obfsproxy", settings.ServiceUseObfsProxy ? "1" : "0");
            }));

            __Observers.Add(Settings.AddObserver(new NSString("IsLoggingEnabled"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                __Service.Proxy.SetPreference("enable_logging", settings.IsLoggingEnabled ? "1" : "0");
            }));

            __Observers.Add(Settings.AddObserver(new NSString("FirewallTypeId"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                bool isPersistent = settings.FirewallType == IVPNFirewallType.Persistent;
                __MainViewModel.KillSwitchIsPersistent = isPersistent;
            }));

            __Observers.Add(Settings.AddObserver(new NSString("OpenVPNExtraParameters"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                if (!Helpers.OpenVPN.OpenVPNConfigChecker.IsIsUserParametersAllowed(settings.OpenVPNExtraParameters, out string errorDesc))
                {
                    IVPNAlert.Show(//this.Window, - do not use window argument (alert will be possible to show when window closing)
                        __MainViewModel.AppServices.LocalizedString("OpenVPNParamsNotSupported", "Some OpenVPN additional parameters are not supported"),
                        errorDesc,
                        NSAlertStyle.Warning);
                    return;
                }

                __Service.Proxy.SetPreference("open_vpn_extra_parameters", settings.OpenVPNExtraParameters);
            }));

            __Observers.Add(Settings.AddObserver(new NSString("StopServerOnClientDisconnect"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                __Service.Proxy.SetPreference("is_stop_server_on_client_disconnect", __Settings.StopServerOnClientDisconnect ? "1" : "0");
            }));
        }
        private void SetSettings(AppSettings settings)
        {
            __Settings = settings;
            __Settings.PropertyChanged += __Settings_PropertyChanged;

            __MainViewModel.AppState.OnSessionChanged += AppState_OnSessionChanged;

            Settings       = new AppSettingsAdapter(__Settings);
            NetworkActions = new ObservableObject(__Settings.NetworkActions);

            __NetworksViewModel         = new ViewModelNetworksSettings(__Settings.NetworkActions, this);
            NetworksViewModelObservable = new ObservableObject(__NetworksViewModel);

            __Observers = new List <IDisposable>();
            __Observers.Add(Settings.AddObserver(new NSString("ProxyTypeId"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                if (Window.FirstResponder is NSTextView)
                {
                    UnfocusElement();
                }
            }));

            __Observers.Add(Settings.AddObserver(new NSString("FirewallAllowLAN"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                __MainViewModel.KillSwitchAllowLAN = __Settings.FirewallAllowLAN;
            }));

            __Observers.Add(Settings.AddObserver(new NSString("FirewallAllowLANMulticast"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                __MainViewModel.KillSwitchAllowLANMulticast = __Settings.FirewallAllowLANMulticast;
            }));

            __Observers.Add(Settings.AddObserver(new NSString("ServiceUseObfsProxy"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                __Service.Proxy.SetPreference("enable_obfsproxy", settings.ServiceUseObfsProxy ? "1" : "0");
            }));

            __Observers.Add(Settings.AddObserver(new NSString("IsLoggingEnabled"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                __Service.Proxy.SetPreference("enable_logging", settings.IsLoggingEnabled ? "1" : "0");
            }));

            __Observers.Add(Settings.AddObserver(new NSString("FirewallTypeId"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                bool isPersistent = settings.FirewallType == IVPNFirewallType.Persistent;
                __MainViewModel.KillSwitchIsPersistent = isPersistent;
            }));

            __Observers.Add(Settings.AddObserver(new NSString("StopServerOnClientDisconnect"), NSKeyValueObservingOptions.New, (NSObservedChange e) => {
                __Service.Proxy.SetPreference("is_stop_server_on_client_disconnect", __Settings.StopServerOnClientDisconnect ? "1" : "0");
            }));
        }