예제 #1
0
        public CertificateSelectView(ServerSettings settings)
        {
            InitializeComponent();
            _settings = settings;
            Refresh();

            btInstallNewCert.Click += (o, e) => {
                var openFileDialog = new OpenFileDialog();
                openFileDialog.Filter = "Файл сертификата (*.pfx,*.cer,*.p7b)|*.pfx;*.cer;*.p7b";
                if (openFileDialog.ShowDialog() == DialogResult.OK)
                {
                    EnterPasswordView.Show("Введите пароль сертификата...", (pass) => {
                        try
                        {
                            var certHash = Lazurite.Windows.Server.Utils.AddCertificate(openFileDialog.FileName, pass);
                            Refresh();
                            certListView.GetItems().Where(x => ((CertificateInfo)((ItemView)x).Tag).Hash.Equals(certHash)).All(x => x.Selected = true);
                        }
                        catch (Exception exception)
                        {
                            _warningHandler.ErrorFormat(exception, "Ошибка при добавлении сертификата [{0}]", openFileDialog.FileName);
                        }
                    }, null, "Если файл сертификата не имеет пароль, то нажмите \"Применить\"");
                }
            };

            certListView.SelectionChanged += (o, e) => btApply.IsEnabled = true;
            btApply.Click += (o, e) =>
            {
                var selectedCert = (CertificateInfo)((ItemView)certListView.SelectedItem).Tag;
                _settings.CertificateHash = selectedCert.Hash;
                Selected?.Invoke(settings);
            };
        }
예제 #2
0
        public ServerSettingsView()
        {
            InitializeComponent();

            var strOriginalBtChangeFileSecretKeyText = btChangeFileSecretKey.Content.ToString();

            if (!_dataEncryptor.IsSecretKeyExist)
            {
                btChangeFileSecretKey.Content = "Задать ключ шифрования файлов";
            }

            _settings                = (ServerSettings)Lazurite.Windows.Utils.Utils.CloneObject(_server.Settings);
            tbPort.Validation        = (v) => EntryViewValidation.UShortValidation().Invoke(v);
            tbPort.TextChanged      += (o, e) => SettingsChanged();
            btChangeCert.Click      += (o, e) => CertificateSelectView.Show(_settings, (s) => SettingsChanged());
            _server.StatusChanged   += Server_StatusChanged;
            btChangeSecretKey.Click += (o, e) => {
                EnterPasswordView.Show(
                    "Введите новый секретный ключ сервера...",
                    (pass) => {
                    _settings.SecretKey = pass;
                    SettingsChanged();
                },
                    (pass) => pass.Length == 16,
                    "Длина секретного ключа должна быть равна 16-и символам");
            };
            btChangeFileSecretKey.Click += (o, e) => {
                EnterPasswordView.Show(
                    "Введите ключ шифрования файлов...",
                    (pass) => {
                    _dataEncryptor.SecretKey      = pass;
                    btChangeFileSecretKey.Content = strOriginalBtChangeFileSecretKeyText;
                },
                    (pass) => pass.Length == 16,
                    "Длина секретного ключа должна быть равна 16-и символам");
            };

            btApply.Click += (o, e) => {
                try
                {
                    _settings.Port    = ushort.Parse(tbPort.Text);
                    _server.Settings  = _settings;
                    btApply.IsEnabled = false;
                    _server.Restart(null);
                }
                catch (Exception exception)
                {
                    _warningHandler.Error("Во время применения настроек сервера произошла ошибка.", exception);
                }
            };

            Unloaded += (o, e) => Dispose();

            Refresh();
        }
        public ServerSettingsView()
        {
            InitializeComponent();
            _settings                = (ServerSettings)Lazurite.Windows.Utils.Utils.CloneObject(_server.GetSettings());
            tbPort.Validation        = (v) => EntryViewValidation.UShortValidation().Invoke(v);
            tbServiceName.Validation = (v) => {
                var value = v.InputString.Replace(" ", "");
                if (value.Length == 0)
                {
                    value       = "Lazurite";
                    v.SelectAll = true;
                }
                v.OutputString = value;
            };
            tbPort.TextChanged        += (o, e) => SettingsChanged();
            tbServiceName.TextChanged += (o, e) => SettingsChanged();
            btChangeCert.Click        += (o, e) => CertificateSelectView.Show(_settings, (s) => SettingsChanged());
            btChangeSecretKey.Click   += (o, e) => {
                EnterPasswordView.Show(
                    "Введите новый секретный ключ сервера...",
                    (pass) => {
                    _settings.SecretKey = pass;
                    SettingsChanged();
                },
                    (pass) => pass.Length == 16,
                    "Длина секретного ключа должна быть равна 16-и символам");
            };
            _server.StatusChanged += _server_StatusChanged;

            btApply.Click += (o, e) => {
                try
                {
                    _settings.Port        = ushort.Parse(tbPort.Text);
                    _settings.ServiceName = tbServiceName.Text;
                    _server.SetSettings(_settings);
                    Lazurite.Windows.Server.Utils.NetshAddSslCert(_settings.CertificateHash, _settings.Port);
                    Lazurite.Windows.Server.Utils.NetshAddUrlacl(_settings.GetAddress());
                    Lazurite.Windows.Server.Utils.NetshAllowPort(_settings.Port);
                    _server.Restart(null);
                    btApply.IsEnabled = false;
                }
                catch (Exception exception)
                {
                    _warningHandler.Error("Во время применения настроек сервера произошла ошибка", exception);
                }
            };
            Refresh();
        }