4845 lines
218 KiB
C#
4845 lines
218 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Diagnostics;
|
|
using System.Drawing;
|
|
using System.Globalization;
|
|
using System.IO;
|
|
using System.Linq;
|
|
using System.Reflection;
|
|
using System.Security.Cryptography;
|
|
using System.Security.Cryptography.X509Certificates;
|
|
using System.Text;
|
|
using System.Text.RegularExpressions;
|
|
using System.Windows.Forms;
|
|
using SebWindowsConfig.Controls;
|
|
using SebWindowsConfig.Entities;
|
|
using SebWindowsConfig.Utilities;
|
|
using DictObj = System.Collections.Generic.Dictionary<string, object>;
|
|
using ListObj = System.Collections.Generic.List<object>;
|
|
|
|
|
|
|
|
namespace SebWindowsConfig
|
|
{
|
|
public partial class SebWindowsConfigForm : Form
|
|
{
|
|
public bool adminPasswordFieldsContainHash = false;
|
|
public bool quitPasswordFieldsContainHash = false;
|
|
public bool settingsPasswordFieldsContainHash = false;
|
|
|
|
public bool quittingMyself = false;
|
|
|
|
public SEBURLFilter urlFilter;
|
|
|
|
string settingsPassword = "";
|
|
|
|
private string lastBrowserExamKey = "";
|
|
private string lastSettingsPassword = "";
|
|
private int lastCryptoIdentityIndex = 0;
|
|
|
|
internal const string SEB_CONFIG_LOG = "SebConfig.log";
|
|
|
|
//X509Certificate2 fileCertificateRef = null;
|
|
|
|
|
|
/// ----------------------------------------------------------------------------------------
|
|
/// <summary>
|
|
/// OnLoad: Get the file name from command line arguments and load it.
|
|
/// </summary>
|
|
/// ----------------------------------------------------------------------------------------
|
|
protected override void OnLoad(EventArgs e)
|
|
{
|
|
base.OnLoad(e);
|
|
string[] args = Environment.GetCommandLineArgs();
|
|
|
|
string es = string.Join(", ", args);
|
|
Logger.AddInformation("OnLoad EventArgs: " + es, null, null);
|
|
|
|
if (args.Length > 1)
|
|
{
|
|
LoadConfigurationFileIntoEditor(args[1]);
|
|
// Update Browser Exam Key
|
|
lastBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
lastSettingsPassword = textBoxSettingsPassword.Text;
|
|
lastCryptoIdentityIndex = comboBoxCryptoIdentity.SelectedIndex;
|
|
// Display the new Browser Exam Key in Exam pane
|
|
textBoxBrowserExamKey.Text = lastBrowserExamKey;
|
|
textBoxConfigurationKey.Text = SEBProtectionController.ComputeConfigurationKey();
|
|
}
|
|
}
|
|
|
|
|
|
// ***********
|
|
//
|
|
// Constructor
|
|
//
|
|
// ***********
|
|
|
|
public SebWindowsConfigForm()
|
|
{
|
|
// Initialize URL filter
|
|
urlFilter = new SEBURLFilter();
|
|
|
|
InitializeComponent();
|
|
|
|
// This is necessary to instanciate the password dialog
|
|
//SEBConfigFileManager.InitSEBConfigFileManager();
|
|
|
|
/// Initialize the Logger
|
|
|
|
//Sets paths to files SEB has to save or read from the file system
|
|
SEBClientInfo.SetSebPaths();
|
|
|
|
// Set the path of the SebConfig.log file
|
|
StringBuilder sebConfigLogFileBuilder = new StringBuilder(SEBClientInfo.SebClientLogFileDirectory).Append(SEB_CONFIG_LOG);
|
|
string SebConfigLogFile = sebConfigLogFileBuilder.ToString();
|
|
|
|
Logger.InitLogger(SEBClientInfo.SebClientLogFileDirectory, SebConfigLogFile);
|
|
|
|
// Set all the default values for the Plist structure "SEBSettings.settingsCurrent"
|
|
SEBSettings.RestoreDefaultAndCurrentSettings();
|
|
SEBSettings.AddDefaultProhibitedProcesses();
|
|
|
|
// Initialise the global variables for the GUI widgets
|
|
InitialiseGlobalVariablesForGUIWidgets();
|
|
|
|
// Initialise the GUI widgets themselves
|
|
InitialiseGUIWidgets();
|
|
|
|
// When starting up, load the default local client settings
|
|
Logger.AddInformation("Loading the default local client settings", null, null);
|
|
SEBClientInfo.LoadingSettingsFileName = "Local Client Settings";
|
|
if (!LoadConfigurationFileIntoEditor(currentPathSebConfigFile))
|
|
{
|
|
// If this didn't work, then there are no local client settings and we set the current settings title to "Default Settings"
|
|
currentPathSebConfigFile = SEBUIStrings.settingsTitleDefaultSettings;
|
|
// Update URL filter rules, also the seb-Browser white/blacklist keys,
|
|
// which are necessary for compatibility to SEB 2.1.x
|
|
urlFilter.UpdateFilterRules();
|
|
UpdateAllWidgetsOfProgram();
|
|
}
|
|
|
|
// Update Browser Exam Key
|
|
lastBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
lastSettingsPassword = textBoxSettingsPassword.Text;
|
|
lastCryptoIdentityIndex = comboBoxCryptoIdentity.SelectedIndex;
|
|
// Display the new Browser Exam Key in Exam pane
|
|
textBoxBrowserExamKey.Text = lastBrowserExamKey;
|
|
textBoxConfigurationKey.Text = SEBProtectionController.ComputeConfigurationKey();
|
|
|
|
LoadVersionInfo();
|
|
|
|
} // end of contructor SebWindowsConfigForm()
|
|
|
|
private void LoadVersionInfo()
|
|
{
|
|
var executable = Assembly.GetEntryAssembly();
|
|
var programBuild = FileVersionInfo.GetVersionInfo(executable.Location).FileVersion;
|
|
var programVersion = executable.GetCustomAttribute<AssemblyInformationalVersionAttribute>().InformationalVersion;
|
|
var statusStrip = new StatusStrip();
|
|
|
|
statusStrip.Dock = DockStyle.Bottom;
|
|
statusStrip.SizingGrip = false;
|
|
statusStrip.Items.Add($"SEB Information: Version {programVersion}, Build {programBuild}");
|
|
|
|
Controls.Add(statusStrip);
|
|
|
|
Height += statusStrip.Height;
|
|
}
|
|
|
|
// *************************************************
|
|
// Open the configuration file and read the settings
|
|
// *************************************************
|
|
private Boolean LoadConfigurationFileIntoEditor(String fileName)
|
|
{
|
|
Cursor.Current = Cursors.WaitCursor;
|
|
// Read the file into "new" settings
|
|
Logger.AddInformation("Loading settings from file " + fileName, null, null);
|
|
|
|
// Set the filename into the global variable so it gets displayed in the password dialogs
|
|
if (String.IsNullOrEmpty(SEBClientInfo.LoadingSettingsFileName))
|
|
{
|
|
SEBClientInfo.LoadingSettingsFileName = Path.GetFileName(fileName);
|
|
}
|
|
|
|
// In these variables we get back the configuration file password the user entered for decrypting and/or
|
|
// the certificate reference found in the config file:
|
|
string filePassword = null;
|
|
X509Certificate2 fileCertificateRef = null;
|
|
bool passwordIsHash = false;
|
|
|
|
if (!SEBSettings.ReadSebConfigurationFile(fileName, true, ref filePassword, ref passwordIsHash, ref fileCertificateRef))
|
|
{
|
|
SEBClientInfo.LoadingSettingsFileName = "";
|
|
return false;
|
|
}
|
|
SEBClientInfo.LoadingSettingsFileName = "";
|
|
|
|
if (!String.IsNullOrEmpty(filePassword))
|
|
{
|
|
// If we got the settings password because the user entered it when opening the .seb file,
|
|
// we store it in a local variable
|
|
settingsPassword = filePassword;
|
|
settingsPasswordFieldsContainHash = passwordIsHash;
|
|
}
|
|
else
|
|
{
|
|
// We didn't get back any settings password, we clear the local variable
|
|
settingsPassword = "";
|
|
settingsPasswordFieldsContainHash = false;
|
|
}
|
|
|
|
// Check if we got a certificate reference used to encrypt the openend settings back
|
|
if (fileCertificateRef != null)
|
|
{
|
|
comboBoxCryptoIdentity.SelectedIndex = 0;
|
|
int indexOfCertificateRef = certificateReferences.IndexOf(fileCertificateRef);
|
|
// Find this certificate reference in the list of all certificates from the certificate store
|
|
// if found (this should always be the case), select that certificate in the comboBox list
|
|
if (indexOfCertificateRef != -1) comboBoxCryptoIdentity.SelectedIndex = indexOfCertificateRef + 1;
|
|
}
|
|
|
|
// Check if default permitted processes should be removed from settings
|
|
// CheckAndOptionallyRemoveDefaultProhibitedProcesses();
|
|
|
|
// Update URL filter rules, also the seb-Browser white/blacklist keys,
|
|
// which are necessary for compatibility to SEB 2.1.x
|
|
urlFilter.UpdateFilterRules();
|
|
|
|
// GUI-related part: Update the widgets
|
|
currentDireSebConfigFile = Path.GetDirectoryName(fileName);
|
|
currentFileSebConfigFile = Path.GetFileName(fileName);
|
|
currentPathSebConfigFile = Path.GetFullPath(fileName);
|
|
|
|
UpdateAllWidgetsOfProgram();
|
|
buttonRevertToLastOpened.Enabled = true;
|
|
Cursor.Current = Cursors.Default;
|
|
return true;
|
|
}
|
|
|
|
|
|
private void CheckAndOptionallyRemoveDefaultProhibitedProcesses()
|
|
{
|
|
//if ((bool) SEBSettings.settingsCurrent[SEBSettings.KeyCreateNewDesktop])
|
|
//{
|
|
// if (SEBSettings.CheckForDefaultProhibitedProcesses(false))
|
|
// {
|
|
// var messageBoxResult = MessageBox.Show(
|
|
// this,
|
|
// "Settings contain at least one of the default prohibited processes (mostly web browsers), " +
|
|
// "which should not run when SEB is used with the Disable Explorer Shell kiosk mode. " +
|
|
// "As your settings are not using Disable Explorer Shell, " +
|
|
// "do you want to remove those default prohibited processes from the configuration?",
|
|
// "Default Prohibited Processes Found",
|
|
// MessageBoxButtons.YesNo,
|
|
// MessageBoxIcon.Question);
|
|
|
|
// if (messageBoxResult == DialogResult.Yes)
|
|
// {
|
|
// SEBSettings.CheckForDefaultProhibitedProcesses(true);
|
|
// }
|
|
// }
|
|
//}
|
|
}
|
|
|
|
|
|
// ********************************************************
|
|
// Write the settings to the configuration file and save it
|
|
// ********************************************************
|
|
private Boolean SaveConfigurationFileFromEditor(String fileName)
|
|
{
|
|
Cursor.Current = Cursors.WaitCursor;
|
|
// Get settings password
|
|
string filePassword = settingsPassword;
|
|
|
|
// Get selected certificate
|
|
X509Certificate2 fileCertificateRef = null;
|
|
int selectedCertificate = (int) SEBSettings.intArrayCurrent[SEBSettings.ValCryptoIdentity];
|
|
if (selectedCertificate > 0)
|
|
{
|
|
fileCertificateRef = (X509Certificate2) certificateReferences[selectedCertificate - 1];
|
|
|
|
} //comboBoxCryptoIdentity.SelectedIndex;
|
|
|
|
// Get selected config purpose
|
|
int currentConfigPurpose = (int) SEBSettings.valueForDictionaryKey(SEBSettings.settingsCurrent, SEBSettings.KeySebConfigPurpose);
|
|
SEBSettings.sebConfigPurposes configPurpose = (SEBSettings.sebConfigPurposes) currentConfigPurpose;
|
|
bool useOldAsymmetricOnlyEncryption = checkBoxUseOldAsymmetricOnlyEncryption.Checked;
|
|
|
|
// Write the "new" settings to file
|
|
if (!SEBSettings.WriteSebConfigurationFile(fileName, filePassword, settingsPasswordFieldsContainHash, fileCertificateRef, useOldAsymmetricOnlyEncryption, configPurpose, forEditing: true))
|
|
{
|
|
return false;
|
|
}
|
|
|
|
// If the settings could be written to file, update the widgets
|
|
currentDireSebConfigFile = Path.GetDirectoryName(fileName);
|
|
currentFileSebConfigFile = Path.GetFileName(fileName);
|
|
currentPathSebConfigFile = Path.GetFullPath(fileName);
|
|
|
|
UpdateAllWidgetsOfProgram();
|
|
Cursor.Current = Cursors.Default;
|
|
return true;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
// *****************************************************
|
|
// Set the widgets to the new settings of SebStarter.ini
|
|
// *****************************************************
|
|
private void UpdateAllWidgetsOfProgram()
|
|
{
|
|
// Update the filename in the title bar
|
|
this.Text = this.ProductName;
|
|
this.Text += " - ";
|
|
this.Text += currentPathSebConfigFile;
|
|
|
|
// Group "General"
|
|
textBoxStartURL.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyStartURL];
|
|
textBoxSebServerURL.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeySebServerURL];
|
|
|
|
// If an admin password is saved in the settings (as a hash),
|
|
// then we fill a placeholder string into the admin password text fields
|
|
if (!String.IsNullOrEmpty((String) SEBSettings.settingsCurrent[SEBSettings.KeyHashedAdminPassword]))
|
|
{
|
|
// CAUTION: Do not change the order of setting the placeholders and the flag,
|
|
// since the fired textBox..._TextChanged() events use these data!
|
|
textBoxAdminPassword.Text = "0000000000000000";
|
|
adminPasswordFieldsContainHash = true;
|
|
textBoxConfirmAdminPassword.Text = "0000000000000000";
|
|
}
|
|
else
|
|
{
|
|
// CAUTION: Do not change the order of setting the placeholders and the flag,
|
|
// since the fired textBox..._TextChanged() events use these data!
|
|
adminPasswordFieldsContainHash = false;
|
|
textBoxAdminPassword.Text = "";
|
|
textBoxConfirmAdminPassword.Text = "";
|
|
}
|
|
|
|
checkBoxAllowQuit.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowQuit];
|
|
checkBoxIgnoreExitKeys.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyIgnoreExitKeys];
|
|
|
|
// If a quit password is saved in the settings (as a hash),
|
|
// then we fill a placeholder string into the quit password text fields
|
|
if (!String.IsNullOrEmpty((String) SEBSettings.settingsCurrent[SEBSettings.KeyHashedQuitPassword]))
|
|
{
|
|
// CAUTION: Do not change the order of setting the placeholders and the flag,
|
|
// since the fired textBox..._TextChanged() events use these data!
|
|
textBoxQuitPassword.Text = "0000000000000000";
|
|
quitPasswordFieldsContainHash = true;
|
|
textBoxConfirmQuitPassword.Text = "0000000000000000";
|
|
}
|
|
else
|
|
{
|
|
// CAUTION: Do not change the order of setting the placeholders and the flag,
|
|
// since the fired textBox..._TextChanged() events use these data!
|
|
quitPasswordFieldsContainHash = false;
|
|
textBoxQuitPassword.Text = "";
|
|
textBoxConfirmQuitPassword.Text = "";
|
|
}
|
|
|
|
listBoxExitKey1.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyExitKey1];
|
|
listBoxExitKey2.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyExitKey2];
|
|
listBoxExitKey3.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyExitKey3];
|
|
|
|
// Group "Config File"
|
|
radioButtonStartingAnExam.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeySebConfigPurpose] == 0);
|
|
radioButtonConfiguringAClient.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeySebConfigPurpose] == 1);
|
|
checkBoxAllowPreferencesWindow.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowPreferencesWindow];
|
|
checkBoxUseOldAsymmetricOnlyEncryption.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyUseAsymmetricOnlyEncryption];
|
|
comboBoxCryptoIdentity.SelectedIndex = SEBSettings.intArrayCurrent[SEBSettings.ValCryptoIdentity];
|
|
|
|
// If the settings password local variable contains a hash (and it isn't empty)
|
|
if (settingsPasswordFieldsContainHash && !String.IsNullOrEmpty(settingsPassword))
|
|
{
|
|
// CAUTION: We need to reset this flag BEFORE changing the textBox text value,
|
|
// because otherwise the compare passwords method will delete the first textBox again.
|
|
settingsPasswordFieldsContainHash = false;
|
|
textBoxSettingsPassword.Text = "0000000000000000";
|
|
settingsPasswordFieldsContainHash = true;
|
|
textBoxConfirmSettingsPassword.Text = "0000000000000000";
|
|
}
|
|
else
|
|
{
|
|
textBoxSettingsPassword.Text = settingsPassword;
|
|
textBoxConfirmSettingsPassword.Text = settingsPassword;
|
|
}
|
|
|
|
// Group "User Interface"
|
|
if ((Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyTouchOptimized] == true)
|
|
{
|
|
radioButtonTouchOptimized.Checked = true;
|
|
}
|
|
else
|
|
{
|
|
radioButtonUseBrowserWindow.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserViewMode] == 0);
|
|
radioButtonUseFullScreenMode.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserViewMode] == 1);
|
|
}
|
|
comboBoxMainBrowserWindowWidth.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowWidth];
|
|
comboBoxMainBrowserWindowHeight.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowHeight];
|
|
listBoxMainBrowserWindowPositioning.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowPositioning];
|
|
checkBoxEnableBrowserWindowToolbar.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableBrowserWindowToolbar];
|
|
checkBoxHideBrowserWindowToolbar.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyHideBrowserWindowToolbar];
|
|
checkBoxShowMenuBar.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyShowMenuBar];
|
|
checkBoxShowTaskBar.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyShowTaskBar];
|
|
checkBoxHideBrowserWindowToolbar.Enabled = checkBoxEnableBrowserWindowToolbar.Checked;
|
|
checkBoxAllowMainWindowAddressBar.Enabled = checkBoxEnableBrowserWindowToolbar.Checked;
|
|
checkBoxAllowAdditionalWindowAddressBar.Enabled = checkBoxEnableBrowserWindowToolbar.Checked;
|
|
checkBoxShowSideMenu.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyShowSideMenu];
|
|
checkBoxShowReloadButton.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyShowReloadButton];
|
|
comboBoxTaskBarHeight.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyTaskBarHeight].ToString();
|
|
checkBoxEnableTouchExit.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableTouchExit];
|
|
checkBoxAllowMainWindowAddressBar.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserWindowAllowAddressBar];
|
|
checkBoxAllowAdditionalWindowAddressBar.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowAllowAddressBar];
|
|
checkBoxAllowDeveloperConsole.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowDeveloperConsole];
|
|
checkBoxAllowDeveloperConsole.Enabled = checkBoxEnableBrowserWindowToolbar.Checked;
|
|
|
|
var defaultText = "(part of application)";
|
|
var defaultStyle = new DataGridViewCellStyle { BackColor = Color.LightGray };
|
|
var allowedDictionaries = SEBSettings.settingsCurrent[SEBSettings.KeyAllowSpellCheckDictionary] as ListObj;
|
|
var compressor = new FileCompressor();
|
|
var danish = new DataGridViewRow();
|
|
var australian = new DataGridViewRow();
|
|
var british = new DataGridViewRow();
|
|
var american = new DataGridViewRow();
|
|
var spanish = new DataGridViewRow();
|
|
var french = new DataGridViewRow();
|
|
var portuguese = new DataGridViewRow();
|
|
var swedish = new DataGridViewRow();
|
|
var swedishFinland = new DataGridViewRow();
|
|
|
|
danish.Tag = true;
|
|
danish.Cells.Add(new DataGridViewCheckBoxCell(false) { Value = allowedDictionaries.Any(l => l as string == "da-DK"), Style = defaultStyle });
|
|
danish.Cells.Add(new DataGridViewTextBoxCell { Value = "da-DK", Style = defaultStyle });
|
|
danish.Cells.Add(new DataGridViewTextBoxCell { Value = defaultText, Style = defaultStyle });
|
|
|
|
australian.Tag = true;
|
|
australian.Cells.Add(new DataGridViewCheckBoxCell(false) { Value = allowedDictionaries.Any(l => l as string == "en-AU"), Style = defaultStyle });
|
|
australian.Cells.Add(new DataGridViewTextBoxCell { Value = "en-AU", Style = defaultStyle });
|
|
australian.Cells.Add(new DataGridViewTextBoxCell { Value = defaultText, Style = defaultStyle });
|
|
|
|
british.Tag = true;
|
|
british.Cells.Add(new DataGridViewCheckBoxCell(false) { Value = allowedDictionaries.Any(l => l as string == "en-GB"), Style = defaultStyle });
|
|
british.Cells.Add(new DataGridViewTextBoxCell { Value = "en-GB", Style = defaultStyle });
|
|
british.Cells.Add(new DataGridViewTextBoxCell { Value = defaultText, Style = defaultStyle });
|
|
|
|
american.Tag = true;
|
|
american.Cells.Add(new DataGridViewCheckBoxCell(false) { Value = allowedDictionaries.Any(l => l as string == "en-US"), Style = defaultStyle });
|
|
american.Cells.Add(new DataGridViewTextBoxCell { Value = "en-US", Style = defaultStyle });
|
|
american.Cells.Add(new DataGridViewTextBoxCell { Value = defaultText, Style = defaultStyle });
|
|
|
|
spanish.Tag = true;
|
|
spanish.Cells.Add(new DataGridViewCheckBoxCell(false) { Value = allowedDictionaries.Any(l => l as string == "es-ES"), Style = defaultStyle });
|
|
spanish.Cells.Add(new DataGridViewTextBoxCell { Value = "es-ES", Style = defaultStyle });
|
|
spanish.Cells.Add(new DataGridViewTextBoxCell { Value = defaultText, Style = defaultStyle });
|
|
|
|
french.Tag = true;
|
|
french.Cells.Add(new DataGridViewCheckBoxCell(false) { Value = allowedDictionaries.Any(l => l as string == "fr-FR"), Style = defaultStyle });
|
|
french.Cells.Add(new DataGridViewTextBoxCell { Value = "fr-FR", Style = defaultStyle });
|
|
french.Cells.Add(new DataGridViewTextBoxCell { Value = defaultText, Style = defaultStyle });
|
|
|
|
portuguese.Tag = true;
|
|
portuguese.Cells.Add(new DataGridViewCheckBoxCell(false) { Value = allowedDictionaries.Any(l => l as string == "pt-PT"), Style = defaultStyle });
|
|
portuguese.Cells.Add(new DataGridViewTextBoxCell { Value = "pt-PT", Style = defaultStyle });
|
|
portuguese.Cells.Add(new DataGridViewTextBoxCell { Value = defaultText, Style = defaultStyle });
|
|
|
|
swedish.Tag = true;
|
|
swedish.Cells.Add(new DataGridViewCheckBoxCell(false) { Value = allowedDictionaries.Any(l => l as string == "sv-SE"), Style = defaultStyle });
|
|
swedish.Cells.Add(new DataGridViewTextBoxCell { Value = "sv-SE", Style = defaultStyle });
|
|
swedish.Cells.Add(new DataGridViewTextBoxCell { Value = defaultText, Style = defaultStyle });
|
|
|
|
swedishFinland.Tag = true;
|
|
swedishFinland.Cells.Add(new DataGridViewCheckBoxCell(false) { Value = allowedDictionaries.Any(l => l as string == "sv-FI"), Style = defaultStyle });
|
|
swedishFinland.Cells.Add(new DataGridViewTextBoxCell { Value = "sv-FI", Style = defaultStyle });
|
|
swedishFinland.Cells.Add(new DataGridViewTextBoxCell { Value = defaultText, Style = defaultStyle });
|
|
|
|
spellCheckerDataGridView.Rows.Clear();
|
|
spellCheckerDataGridView.Rows.Add(danish);
|
|
spellCheckerDataGridView.Rows.Add(australian);
|
|
spellCheckerDataGridView.Rows.Add(british);
|
|
spellCheckerDataGridView.Rows.Add(american);
|
|
spellCheckerDataGridView.Rows.Add(spanish);
|
|
spellCheckerDataGridView.Rows.Add(french);
|
|
spellCheckerDataGridView.Rows.Add(portuguese);
|
|
spellCheckerDataGridView.Rows.Add(swedish);
|
|
spellCheckerDataGridView.Rows.Add(swedishFinland);
|
|
|
|
foreach (DictObj dictionary in SEBSettings.settingsCurrent[SEBSettings.KeyAdditionalDictionaries] as ListObj)
|
|
{
|
|
var locale = dictionary[SEBSettings.KeyAdditionalDictionaryLocale] as string;
|
|
var data = dictionary[SEBSettings.KeyAdditionalDictionaryData] as string;
|
|
var enabled = allowedDictionaries.Any(l => l as string == locale);
|
|
var files = compressor.GetFileList(data);
|
|
var fileList = ToDictionaryFileList(files);
|
|
|
|
spellCheckerDataGridView.Rows.Add(enabled, locale, fileList);
|
|
}
|
|
|
|
// Group "Browser"
|
|
listBoxOpenLinksHTML.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkPolicy];
|
|
checkBoxBlockLinksHTML.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkBlockForeign];
|
|
|
|
comboBoxNewBrowserWindowWidth.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkWidth];
|
|
comboBoxNewBrowserWindowHeight.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkHeight];
|
|
listBoxNewBrowserWindowPositioning.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkPositioning];
|
|
|
|
checkBoxEnablePlugIns.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnablePlugIns];
|
|
checkBoxEnableJava.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableJava];
|
|
checkBoxEnableJavaScript.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableJavaScript];
|
|
checkBoxBlockPopUpWindows.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyBlockPopUpWindows];
|
|
checkBoxAllowVideoCapture.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowVideoCapture];
|
|
checkBoxAllowAudioCapture.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowAudioCapture];
|
|
checkBoxAllowBrowsingBackForward.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowBrowsingBackForward];
|
|
checkBoxAllowNavigationNewWindow.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowNavigation];
|
|
checkBoxAllowReload.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserWindowAllowReload];
|
|
checkBoxShowReloadWarning.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyShowReloadWarning];
|
|
checkBoxAllowReloadNewWindow.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowAllowReload];
|
|
checkBoxShowReloadWarningNewWindow.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowShowReloadWarning];
|
|
checkBoxEnableZoomPage.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableZoomPage];
|
|
checkBoxEnableZoomText.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableZoomText];
|
|
radioButtonUseZoomPage.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyZoomMode] == 0);
|
|
radioButtonUseZoomText.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyZoomMode] == 1);
|
|
enableZoomAdjustZoomMode();
|
|
checkBoxEnableZoomText.CheckedChanged += checkBoxEnableZoomText_CheckedChanged;
|
|
checkBoxEnableZoomPage.CheckedChanged += checkBoxEnableZoomPage_CheckedChanged;
|
|
checkBoxAllowPdfReaderToolbar.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowPDFReaderToolbar];
|
|
checkBoxAllowFind.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowFind];
|
|
checkBoxAllowPrint.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowPrint];
|
|
|
|
checkBoxAllowSpellCheck.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowSpellCheck];
|
|
checkBoxAllowDictionaryLookup.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowDictionaryLookup];
|
|
checkBoxRemoveProfile.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyRemoveBrowserProfile];
|
|
checkBoxRemoveProfile.Enabled = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyExamSessionClearCookiesOnEnd];
|
|
checkBoxDisableLocalStorage.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyDisableLocalStorage];
|
|
checkBoxUseSebWithoutBrowser.Checked = !((Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableSebBrowser]);
|
|
// BEWARE: you must invert this value since "Use Without" is "Not Enable"!
|
|
|
|
textBoxUserAgent.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgent];
|
|
|
|
textBoxUserAgentMacCustom.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentMacCustom];
|
|
radioButtonUserAgentMacDefault.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentMac] == 0);
|
|
radioButtonUserAgentMacCustom.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentMac] == 1);
|
|
textBoxUserAgentMacCustom.TextChanged += textBoxUserAgentMacCustom_TextChanged;
|
|
|
|
textBoxUserAgentDesktopModeCustom.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentDesktopModeCustom];
|
|
textBoxUserAgentDesktopModeDefault.Text = SEBClientInfo.BROWSER_USERAGENT_DESKTOP;
|
|
radioButtonUserAgentDesktopDefault.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentDesktopMode] == 0);
|
|
radioButtonUserAgentDesktopCustom.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentDesktopMode] == 1);
|
|
textBoxUserAgentDesktopModeCustom.TextChanged += textBoxUserAgentDesktopModeCustom_TextChanged;
|
|
|
|
textBoxUserAgentTouchModeCustom.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchModeCustom];
|
|
textBoxUserAgentTouchModeDefault.Text = SEBClientInfo.BROWSER_USERAGENT_TOUCH;
|
|
textBoxUserAgentTouchModeIPad.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchModeIPad];
|
|
radioButtonUserAgentTouchDefault.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchMode] == 0);
|
|
radioButtonUserAgentTouchIPad.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchMode] == 1);
|
|
radioButtonUserAgentTouchCustom.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchMode] == 2);
|
|
textBoxUserAgentTouchModeCustom.TextChanged += textBoxUserAgentTouchModeCustom_TextChanged;
|
|
|
|
|
|
textBoxBrowserSuffix.Text = ((string) SEBSettings.settingsCurrent[SEBSettings.KeyBrowserWindowTitleSuffix]);
|
|
|
|
checkBoxEnableAudioControl.Checked = ((bool) SEBSettings.settingsCurrent[SEBSettings.KeyAudioControlEnabled]);
|
|
checkBoxMuteAudio.Checked = ((bool) SEBSettings.settingsCurrent[SEBSettings.KeyAudioMute]);
|
|
checkBoxSetVolumeLevel.Checked = ((bool) SEBSettings.settingsCurrent[SEBSettings.KeyAudioSetVolumeLevel]);
|
|
trackBarVolumeLevel.Value = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyAudioVolumeLevel]);
|
|
|
|
comboBoxUrlPolicyMainWindow.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowUrlPolicy];
|
|
comboBoxUrlPolicyNewWindow.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowUrlPolicy];
|
|
|
|
// Group "Down/Uploads"
|
|
checkBoxAllowDownUploads.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowDownUploads];
|
|
checkBoxAllowCustomDownloadLocation.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowCustomDownUploadLocation];
|
|
checkBoxOpenDownloads.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyOpenDownloads];
|
|
checkBoxDownloadPDFFiles.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyDownloadPDFFiles];
|
|
checkBoxAllowPDFPlugIn.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowPDFPlugIn];
|
|
textBoxDownloadDirectoryWin.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyDownloadDirectoryWin];
|
|
checkBoxTemporaryDownloadDirectory.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyUseTemporaryDownUploadDirectory];
|
|
textBoxDownloadDirectoryWin.Enabled = !checkBoxTemporaryDownloadDirectory.Checked;
|
|
buttonDownloadDirectoryWin.Enabled = !checkBoxTemporaryDownloadDirectory.Checked;
|
|
textBoxDownloadDirectoryOSX.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyDownloadDirectoryOSX];
|
|
listBoxChooseFileToUploadPolicy.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyChooseFileToUploadPolicy];
|
|
checkBoxDownloadOpenSEBFiles.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyDownloadAndOpenSebConfig];
|
|
checkBoxShowFileSystemElementPath.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyShowFileSystemElementPath];
|
|
checkBoxAllowDownloads.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowDownloads];
|
|
checkBoxAllowUploads.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowUploads];
|
|
|
|
// Group "Exam"
|
|
checkBoxSendBrowserExamKey.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeySendBrowserExamKey];
|
|
checkBoxClearSessionOnEnd.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyExamSessionClearCookiesOnEnd];
|
|
checkBoxClearSessionOnStart.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyExamSessionClearCookiesOnStart];
|
|
textBoxBrowserExamKey.Enabled = checkBoxSendBrowserExamKey.Checked;
|
|
textBoxConfigurationKey.Enabled = checkBoxSendBrowserExamKey.Checked;
|
|
textBoxQuitURL.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyQuitURL];
|
|
checkBoxQuitURLConfirm.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyQuitURLConfirm];
|
|
checkBoxResetOnQuitUrl.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyResetOnQuitUrl];
|
|
checkBoxUseStartURL.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyRestartExamUseStartURL];
|
|
textBoxRestartExamLink.Enabled = !(Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyRestartExamUseStartURL];
|
|
checkBoxRestartExamPasswordProtected.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyRestartExamPasswordProtected];
|
|
textBoxRestartExamLink.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyRestartExamURL];
|
|
textBoxRestartExamText.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyRestartExamText];
|
|
checkBoxAllowReconfiguration.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowReconfiguration];
|
|
textBoxReconfigurationUrl.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyReconfigurationUrl];
|
|
checkBoxUseStartUrlQuery.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyUseStartUrlQuery];
|
|
|
|
// Group AdditionalResources
|
|
tabControlSebWindowsConfig.TabPages.Remove(tabPageAdditionalResources);
|
|
//tabPageAdditionalResources.Controls.Clear();
|
|
//tabPageAdditionalResources.Controls.Add(new AdditionalResources());
|
|
|
|
//FillStartupResourcesinCombobox();
|
|
//foreach (KeyValuePair<string, string> item in comboBoxAdditionalResourceStartUrl.Items)
|
|
//{
|
|
// if (item.Key == SEBSettings.settingsCurrent[SEBSettings.KeyStartResource].ToString())
|
|
// {
|
|
// comboBoxAdditionalResourceStartUrl.SelectedItem = item;
|
|
// }
|
|
//}
|
|
|
|
// Group "Applications"
|
|
checkBoxMonitorProcesses.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyMonitorProcesses];
|
|
checkBoxAllowSwitchToApplications.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowSwitchToApplications];
|
|
checkBoxAllowFlashFullscreen.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowFlashFullscreen];
|
|
|
|
|
|
// Group "Applications - Permitted/Prohibited Processes"
|
|
// Group "Network - Filter/Certificates/Proxies"
|
|
|
|
// Update the lists for the DataGridViews
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.embeddedCertificateList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyEmbeddedCertificates];
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
|
|
SEBSettings.bypassedProxyList = (ListObj) SEBSettings.proxiesData[SEBSettings.KeyExceptionsList];
|
|
|
|
// Check if currently loaded lists have any entries
|
|
if (SEBSettings.permittedProcessList.Count > 0)
|
|
SEBSettings.permittedProcessIndex = 0;
|
|
else SEBSettings.permittedProcessIndex = -1;
|
|
|
|
if (SEBSettings.prohibitedProcessList.Count > 0)
|
|
SEBSettings.prohibitedProcessIndex = 0;
|
|
else SEBSettings.prohibitedProcessIndex = -1;
|
|
|
|
if (SEBSettings.embeddedCertificateList.Count > 0)
|
|
SEBSettings.embeddedCertificateIndex = 0;
|
|
else SEBSettings.embeddedCertificateIndex = -1;
|
|
|
|
SEBSettings.proxyProtocolIndex = 0;
|
|
|
|
if (SEBSettings.bypassedProxyList.Count > 0)
|
|
SEBSettings.bypassedProxyIndex = 0;
|
|
else SEBSettings.bypassedProxyIndex = -1;
|
|
|
|
// Remove all previously displayed list entries from DataGridViews
|
|
groupBoxPermittedProcess.Enabled = (SEBSettings.permittedProcessList.Count > 0);
|
|
dataGridViewPermittedProcesses.Enabled = (SEBSettings.permittedProcessList.Count > 0);
|
|
dataGridViewPermittedProcesses.Rows.Clear();
|
|
|
|
groupBoxProhibitedProcess.Enabled = (SEBSettings.prohibitedProcessList.Count > 0);
|
|
dataGridViewProhibitedProcesses.Enabled = (SEBSettings.prohibitedProcessList.Count > 0);
|
|
dataGridViewProhibitedProcesses.Rows.Clear();
|
|
|
|
dataGridViewEmbeddedCertificates.Enabled = (SEBSettings.embeddedCertificateList.Count > 0);
|
|
dataGridViewEmbeddedCertificates.Rows.Clear();
|
|
|
|
dataGridViewProxyProtocols.Enabled = true;
|
|
dataGridViewProxyProtocols.Rows.Clear();
|
|
|
|
textBoxBypassedProxyHostList.Text = "";
|
|
|
|
// Add Permitted Processes of currently opened file to DataGridView
|
|
for (int index = 0; index < SEBSettings.permittedProcessList.Count; index++)
|
|
{
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[index];
|
|
Boolean active = (Boolean) SEBSettings.permittedProcessData[SEBSettings.KeyActive];
|
|
Int32 os = (Int32) SEBSettings.permittedProcessData[SEBSettings.KeyOS];
|
|
String executable = (String) SEBSettings.permittedProcessData[SEBSettings.KeyExecutable];
|
|
String title = (String) SEBSettings.permittedProcessData[SEBSettings.KeyTitle];
|
|
dataGridViewPermittedProcesses.Rows.Add(active, StringOS[os], executable, title);
|
|
}
|
|
|
|
// Add Prohibited Processes of currently opened file to DataGridView
|
|
for (int index = 0; index < SEBSettings.prohibitedProcessList.Count; index++)
|
|
{
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[index];
|
|
Boolean active = (Boolean) SEBSettings.prohibitedProcessData[SEBSettings.KeyActive];
|
|
Int32 os = (Int32) SEBSettings.prohibitedProcessData[SEBSettings.KeyOS];
|
|
String executable = (String) SEBSettings.prohibitedProcessData[SEBSettings.KeyExecutable];
|
|
String description = (String) SEBSettings.prohibitedProcessData[SEBSettings.KeyDescription];
|
|
dataGridViewProhibitedProcesses.Rows.Add(active, StringOS[os], executable, description);
|
|
}
|
|
|
|
// Add Url Filters
|
|
var filterControl = new FilterRuleControl();
|
|
|
|
SEBSettings.urlFilterRuleList = SEBSettings.settingsCurrent[SEBSettings.KeyURLFilterRules] as ListObj;
|
|
|
|
foreach (DictObj config in SEBSettings.urlFilterRuleList)
|
|
{
|
|
var rule = FilterRule.FromConfig(config);
|
|
|
|
filterControl.AddRule(rule);
|
|
}
|
|
|
|
filterControl.Dock = DockStyle.Fill;
|
|
filterControl.DataChanged += (rules) =>
|
|
{
|
|
SEBSettings.urlFilterRuleList.Clear();
|
|
|
|
foreach (var rule in rules)
|
|
{
|
|
var config = FilterRule.ToConfig(rule);
|
|
|
|
SEBSettings.urlFilterRuleList.Add(config);
|
|
}
|
|
};
|
|
|
|
UrlFilterContainer.Controls.Clear();
|
|
UrlFilterContainer.Controls.Add(filterControl);
|
|
|
|
// Add Embedded Certificates of Certificate Store to DataGridView
|
|
for (int index = 0; index < SEBSettings.embeddedCertificateList.Count; index++)
|
|
{
|
|
SEBSettings.embeddedCertificateData = (DictObj) SEBSettings.embeddedCertificateList[index];
|
|
Int32 type = (Int32) SEBSettings.embeddedCertificateData[SEBSettings.KeyType];
|
|
String name = (String) SEBSettings.embeddedCertificateData[SEBSettings.KeyName];
|
|
dataGridViewEmbeddedCertificates.Rows.Add(StringCertificateType[type], name);
|
|
|
|
// For downwards compatibility of embedded SSL certs, if there is no data in the new data key certificateDataBase64
|
|
// we read data from the old data key certificateDataWin and save it to the new key.
|
|
// Please note: The Browser Exam Key of these settings is changed by this
|
|
if (type == IntSSLClientCertificate && String.IsNullOrEmpty((String) SEBSettings.embeddedCertificateData[SEBSettings.KeyCertificateDataBase64]))
|
|
{
|
|
String base64Data = (String) SEBSettings.embeddedCertificateData[SEBSettings.KeyCertificateDataWin];
|
|
SEBSettings.embeddedCertificateData[SEBSettings.KeyCertificateDataBase64] = base64Data;
|
|
}
|
|
}
|
|
/*
|
|
// Get the "Enabled" boolean values of current "proxies" dictionary
|
|
BooleanProxyProtocolEnabled[IntProxyAutoDiscovery ] = (Boolean)SEBSettings.proxiesData[SEBSettings.KeyAutoDiscoveryEnabled];
|
|
BooleanProxyProtocolEnabled[IntProxyAutoConfiguration] = (Boolean)SEBSettings.proxiesData[SEBSettings.KeyAutoConfigurationEnabled];
|
|
BooleanProxyProtocolEnabled[IntProxyHTTP ] = (Boolean)SEBSettings.proxiesData[SEBSettings.KeyHTTPEnable];
|
|
BooleanProxyProtocolEnabled[IntProxyHTTPS ] = (Boolean)SEBSettings.proxiesData[SEBSettings.KeyHTTPSEnable];
|
|
BooleanProxyProtocolEnabled[IntProxyFTP ] = (Boolean)SEBSettings.proxiesData[SEBSettings.KeyFTPEnable];
|
|
BooleanProxyProtocolEnabled[IntProxySOCKS ] = (Boolean)SEBSettings.proxiesData[SEBSettings.KeySOCKSEnable];
|
|
BooleanProxyProtocolEnabled[IntProxyRTSP ] = (Boolean)SEBSettings.proxiesData[SEBSettings.KeyRTSPEnable];
|
|
*/
|
|
// Get the "Enabled" boolean values of current "proxies" dictionary.
|
|
// Add Proxy Protocols of currently opened file to DataGridView.
|
|
for (int index = 0; index < NumProxyProtocols; index++)
|
|
{
|
|
Boolean enable = (Boolean) SEBSettings.proxiesData[KeyProxyProtocolEnable[index]];
|
|
String type = (String) StringProxyProtocolTableCaption[index];
|
|
dataGridViewProxyProtocols.Rows.Add(enable, type);
|
|
BooleanProxyProtocolEnabled[index] = enable;
|
|
}
|
|
|
|
// Add Bypassed Proxies of currently opened file to the comma separated list
|
|
StringBuilder bypassedProxiesStringBuilder = new StringBuilder();
|
|
for (int index = 0; index < SEBSettings.bypassedProxyList.Count; index++)
|
|
{
|
|
SEBSettings.bypassedProxyData = (String) SEBSettings.bypassedProxyList[index];
|
|
if (bypassedProxiesStringBuilder.Length > 0)
|
|
{
|
|
bypassedProxiesStringBuilder.Append(", ");
|
|
}
|
|
bypassedProxiesStringBuilder.Append(SEBSettings.bypassedProxyData);
|
|
}
|
|
textBoxBypassedProxyHostList.Text = bypassedProxiesStringBuilder.ToString();
|
|
|
|
// Load the currently selected process data
|
|
if (SEBSettings.permittedProcessList.Count > 0)
|
|
LoadAndUpdatePermittedSelectedProcessGroup(SEBSettings.permittedProcessIndex);
|
|
else ClearPermittedSelectedProcessGroup();
|
|
|
|
if (SEBSettings.prohibitedProcessList.Count > 0)
|
|
LoadAndUpdateProhibitedSelectedProcessGroup(SEBSettings.prohibitedProcessIndex);
|
|
else ClearProhibitedSelectedProcessGroup();
|
|
|
|
// Auto-resize the columns and cells
|
|
|
|
//dataGridViewPermittedProcesses .AutoResizeColumns();
|
|
//dataGridViewProhibitedProcesses .AutoResizeColumns();
|
|
//dataGridViewURLFilterRules .AutoResizeColumns();
|
|
//dataGridViewEmbeddedCertificates.AutoResizeColumns();
|
|
//dataGridViewProxyProtocols .AutoResizeColumns();
|
|
//dataGridViewBypassedProxies .AutoResizeColumns();
|
|
|
|
//dataGridViewPermittedProcesses .AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
|
|
//dataGridViewProhibitedProcesses .AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
|
|
//dataGridViewURLFilterRules .AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
|
|
//dataGridViewEmbeddedCertificates.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
|
|
//dataGridViewProxyProtocols .AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
|
|
//dataGridViewBypassedProxies .AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells);
|
|
|
|
//Group "Network - URL Filter"
|
|
checkBoxEnableURLFilter.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyURLFilterEnable];
|
|
checkBoxEnableURLContentFilter.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyURLFilterEnableContentFilter];
|
|
checkBoxEnableURLContentFilter.Enabled = checkBoxEnableURLFilter.Checked;
|
|
|
|
// Group "Network - Certificates"
|
|
checkBoxPinEmbeddedCertificates.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyPinEmbeddedCertificates];
|
|
|
|
// Group "Network - Proxies"
|
|
radioButtonUseSystemProxySettings.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyProxySettingsPolicy] == 0);
|
|
radioButtonUseSebProxySettings.Checked = ((int) SEBSettings.settingsCurrent[SEBSettings.KeyProxySettingsPolicy] == 1);
|
|
|
|
textBoxAutoProxyConfigurationURL.Text = (String) SEBSettings.proxiesData[SEBSettings.KeyAutoConfigurationURL];
|
|
checkBoxExcludeSimpleHostnames.Checked = (Boolean) SEBSettings.proxiesData[SEBSettings.KeyExcludeSimpleHostnames];
|
|
checkBoxUsePassiveFTPMode.Checked = (Boolean) SEBSettings.proxiesData[SEBSettings.KeyFTPPassive];
|
|
|
|
// Group "Security"
|
|
listBoxSebServicePolicy.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeySebServicePolicy];
|
|
checkBoxSebServiceIgnore.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeySebServiceIgnore];
|
|
labelSebServiceIgnore.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
labelSebServicePolicy.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
listBoxSebServicePolicy.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
groupBoxInsideSeb.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
checkBoxAllowWindowsUpdate.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
checkBoxAllowScreenSharing.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
checkBoxAllowChromeNotifications.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
checkBoxAllowVirtualMachine.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowVirtualMachine];
|
|
checkBoxAllowScreenSharing.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowScreenSharing];
|
|
checkBoxEnablePrivateClipboard.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnablePrivateClipboard];
|
|
radioCreateNewDesktop.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyCreateNewDesktop];
|
|
radioKillExplorerShell.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyKillExplorerShell];
|
|
radioNoKiosMode.Checked = !(Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyKillExplorerShell] && !(Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyCreateNewDesktop];
|
|
checkBoxEnableLogging.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableLogging];
|
|
textBoxLogDirectoryWin.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyLogDirectoryWin];
|
|
checkBoxAllowLogAccess.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowApplicationLog];
|
|
checkBoxShowLogButton.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyShowApplicationLogButton];
|
|
checkBoxShowLogButton.Enabled = checkBoxAllowLogAccess.Checked;
|
|
checkBoxAllowChromeNotifications.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowChromeNotifications];
|
|
checkBoxAllowWindowsUpdate.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowWindowsUpdate];
|
|
checkBoxEnableCursorVerification.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableCursorVerification];
|
|
checkBoxEnableSessionVerification.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableSessionVerification];
|
|
lockscreenColorTextbox.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyLockScreenBackgroundColor];
|
|
checkBoxAllowStickyKeys.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowStickyKeys];
|
|
|
|
if (String.IsNullOrEmpty(textBoxLogDirectoryWin.Text))
|
|
{
|
|
checkBoxUseStandardDirectory.Checked = true;
|
|
}
|
|
else
|
|
{
|
|
checkBoxUseStandardDirectory.Checked = false;
|
|
}
|
|
textBoxLogDirectoryOSX.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyLogDirectoryOSX];
|
|
checkboxAllowWlan.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowWLAN];
|
|
checkBoxEnableScreenCapture.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnablePrintScreen];
|
|
|
|
comboBoxMinMacOSVersion.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyMinMacOSVersion];
|
|
checkBoxEnableAppSwitcherCheck.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableAppSwitcherCheck];
|
|
checkBoxForceAppFolderInstall.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyForceAppFolderInstall];
|
|
checkBoxAllowUserAppFolderInstall.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowUserAppFolderInstall];
|
|
checkBoxAllowSiri.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowSiri];
|
|
checkBoxAllowDictation.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowDictation];
|
|
checkBoxDetectStoppedProcess.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyDetectStoppedProcess];
|
|
checkBoxAllowDisplayMirroring.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowDisplayMirroring];
|
|
comboBoxAllowedDisplaysMaxNumber.Text = (String) SEBSettings.settingsCurrent[SEBSettings.KeyAllowedDisplaysMaxNumber].ToString();
|
|
checkBoxAllowedDisplayBuiltin.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowedDisplayBuiltin];
|
|
checkBoxEnforceBuiltinDisplay.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowedDisplayBuiltinEnforce];
|
|
checkBoxAllowedDisplayIgnoreError.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyAllowedDisplayIgnoreFailure];
|
|
radioButtonClipboardPolicyAllow.Checked = (int) SEBSettings.settingsCurrent[SEBSettings.KeyClipboardPolicy] == 0;
|
|
radioButtonClipboardPolicyBlock.Checked = (int) SEBSettings.settingsCurrent[SEBSettings.KeyClipboardPolicy] == 1;
|
|
radioButtonClipboardPolicyIsolated.Checked = (int) SEBSettings.settingsCurrent[SEBSettings.KeyClipboardPolicy] == 2;
|
|
|
|
if (SEBSettings.settingsCurrent.TryGetValue(SEBSettings.KeyVersionRestrictions, out var value) && value is ListObj restrictions)
|
|
{
|
|
versionRestrictionsTextBox.Clear();
|
|
|
|
foreach (var restriction in restrictions.Cast<string>())
|
|
{
|
|
versionRestrictionsTextBox.Text += $"{restriction}{Environment.NewLine}";
|
|
}
|
|
}
|
|
|
|
// Group "Registry"
|
|
checkBoxInsideSebEnableSwitchUser.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableSwitchUser];
|
|
checkBoxInsideSebEnableLockThisComputer.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableLockThisComputer];
|
|
checkBoxInsideSebEnableChangeAPassword.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableChangeAPassword];
|
|
checkBoxInsideSebEnableStartTaskManager.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableStartTaskManager];
|
|
checkBoxInsideSebEnableLogOff.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableLogOff];
|
|
checkBoxInsideSebEnableShutDown.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableShutDown];
|
|
checkBoxInsideSebEnableEaseOfAccess.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableEaseOfAccess];
|
|
checkBoxSetVmwareConfiguration.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeySetVmwareConfiguration];
|
|
checkBoxInsideSebEnableVmWareClientShade.Enabled = checkBoxSetVmwareConfiguration.Checked;
|
|
checkBoxInsideSebEnableVmWareClientShade.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableVmWareClientShade];
|
|
checkBoxInsideSebEnableNetworkConnectionSelector.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableNetworkConnectionSelector];
|
|
checkBoxEnableFindPrinter.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableFindPrinter];
|
|
|
|
// Group "Hooked Keys"
|
|
checkBoxHookKeys.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyHookKeys];
|
|
|
|
checkBoxEnableEsc.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableEsc];
|
|
checkBoxEnableCtrlEsc.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableCtrlEsc];
|
|
checkBoxEnableAltEsc.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableAltEsc];
|
|
checkBoxEnableAltTab.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableAltTab];
|
|
checkBoxEnableAltF4.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableAltF4];
|
|
checkBoxEnableMiddleMouse.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableMiddleMouse];
|
|
checkBoxEnableRightMouse.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableRightMouse];
|
|
checkBoxEnablePrintScreen.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnablePrintScreen];
|
|
checkBoxEnableAltMouseWheel.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableAltMouseWheel];
|
|
|
|
checkBoxEnableF1.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF1];
|
|
checkBoxEnableF2.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF2];
|
|
checkBoxEnableF3.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF3];
|
|
checkBoxEnableF4.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF4];
|
|
checkBoxEnableF5.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF5];
|
|
checkBoxEnableF6.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF6];
|
|
checkBoxEnableF7.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF7];
|
|
checkBoxEnableF8.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF8];
|
|
checkBoxEnableF9.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF9];
|
|
checkBoxEnableF10.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF10];
|
|
checkBoxEnableF11.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF11];
|
|
checkBoxEnableF12.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyEnableF12];
|
|
|
|
checkBoxShowTime.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyShowTime];
|
|
checkBoxShowKeyboardLayout.Checked = (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyShowInputLanguage];
|
|
|
|
return;
|
|
}
|
|
|
|
/// ----------------------------------------------------------------------------------------
|
|
/// <summary>
|
|
/// Compare password textfields and show or hide compare label accordingly
|
|
/// if passwords are same, save the password hash
|
|
/// </summary>
|
|
/// ----------------------------------------------------------------------------------------
|
|
public void ComparePasswords(TextBox passwordField, TextBox confirmPasswordField, ref bool passwordFieldsContainHash, Label label, string settingsKey)
|
|
{
|
|
// Get the password text from the text fields
|
|
string password = passwordField.Text;
|
|
string confirmPassword = confirmPasswordField.Text;
|
|
|
|
if (passwordFieldsContainHash)
|
|
{
|
|
// If the flag is set for password fields contain a placeholder
|
|
// instead of the hash loaded from settings (no clear text password)
|
|
if (password.CompareTo(confirmPassword) != 0)
|
|
{
|
|
// and when the password texts aren't the same anymore, this means the user tries to edit the password
|
|
// (which is only the placeholder right now), we have to clear the placeholder from the textFields
|
|
passwordField.Text = password;
|
|
confirmPasswordField.Text = confirmPassword;
|
|
passwordFieldsContainHash = false;
|
|
}
|
|
}
|
|
|
|
// Compare text value of password fields, regardless if they contain actual passwords or a hash
|
|
if (password.CompareTo(confirmPassword) == 0)
|
|
{
|
|
/// Passwords are same
|
|
// Hide the "Please confirm password" label
|
|
label.Visible = false;
|
|
|
|
String newStringHashcode = "";
|
|
if (!passwordFieldsContainHash && !String.IsNullOrEmpty(password) && settingsKey != null)
|
|
{
|
|
// If the password isn't the placeholder for the hash, isn't empty
|
|
// and we got the key to where to save the hash (for the settings pw we don't need a hash)
|
|
// we hash the password, otherwise just save the empty string into settings
|
|
// Password hashing using the SHA-256 hash algorithm
|
|
SHA256 sha256Algorithm = new SHA256Managed();
|
|
// Hash the new quit password
|
|
byte[] passwordBytes = Encoding.UTF8.GetBytes(password);
|
|
byte[] hashcodeBytes = sha256Algorithm.ComputeHash(passwordBytes);
|
|
// Generate a base16 hash string
|
|
newStringHashcode = BitConverter.ToString(hashcodeBytes);
|
|
newStringHashcode = newStringHashcode.Replace("-", "");
|
|
}
|
|
// Save the new password into settings password variable
|
|
if (!passwordFieldsContainHash && settingsKey == null)
|
|
{
|
|
settingsPassword = password;
|
|
}
|
|
// Save the new hash string into settings
|
|
if (!passwordFieldsContainHash && settingsKey != null) SEBSettings.settingsCurrent[settingsKey] = newStringHashcode;
|
|
// Enable the save/use settings buttons
|
|
//SetButtonsCommandsEnabled(true);
|
|
}
|
|
else
|
|
{
|
|
/// Passwords are not same
|
|
|
|
// If this was a settings password hash and it got edited: Clear the settings password variable and the hash flag
|
|
if (passwordFieldsContainHash && settingsKey == null)
|
|
{
|
|
settingsPassword = "";
|
|
settingsPasswordFieldsContainHash = false;
|
|
}
|
|
|
|
//SetButtonsCommandsEnabled(false);
|
|
label.Visible = true;
|
|
}
|
|
}
|
|
|
|
/// ----------------------------------------------------------------------------------------
|
|
/// <summary>
|
|
/// Change the enabled status of buttons and menu commands
|
|
/// for saving and using current settings.
|
|
/// </summary>
|
|
/// ----------------------------------------------------------------------------------------
|
|
private void SetButtonsCommandsEnabled(bool enabledStatus)
|
|
{
|
|
buttonSaveSettings.Enabled = enabledStatus;
|
|
buttonSaveSettingsAs.Enabled = enabledStatus;
|
|
buttonConfigureClient.Enabled = enabledStatus;
|
|
buttonApplyAndStartSEB.Enabled = enabledStatus;
|
|
|
|
saveSettingsToolStripMenuItem.Enabled = enabledStatus;
|
|
saveSettingsAsToolStripMenuItem.Enabled = enabledStatus;
|
|
configureClientToolStripMenuItem.Enabled = enabledStatus;
|
|
applyAndStartSEBToolStripMenuItem.Enabled = enabledStatus;
|
|
}
|
|
|
|
|
|
/// ----------------------------------------------------------------------------------------
|
|
/// <summary>
|
|
/// Check if there are some unconfirmed passwords and show alert if so.
|
|
/// </summary>
|
|
/// ----------------------------------------------------------------------------------------
|
|
private bool ArePasswordsUnconfirmed()
|
|
{
|
|
bool passwordIsUnconfirmed = false;
|
|
string unconfirmedPassword;
|
|
|
|
if (textBoxAdminPassword.Text.CompareTo(textBoxConfirmAdminPassword.Text) != 0)
|
|
{
|
|
unconfirmedPassword = SEBUIStrings.passwordAdmin;
|
|
PresentAlertForUnconfirmedPassword(unconfirmedPassword);
|
|
passwordIsUnconfirmed = true;
|
|
}
|
|
|
|
if (textBoxQuitPassword.Text.CompareTo(textBoxConfirmQuitPassword.Text) != 0)
|
|
{
|
|
unconfirmedPassword = SEBUIStrings.passwordQuit;
|
|
PresentAlertForUnconfirmedPassword(unconfirmedPassword);
|
|
passwordIsUnconfirmed = true;
|
|
}
|
|
|
|
if (textBoxSettingsPassword.Text.CompareTo(textBoxConfirmSettingsPassword.Text) != 0)
|
|
{
|
|
unconfirmedPassword = SEBUIStrings.passwordSettings;
|
|
PresentAlertForUnconfirmedPassword(unconfirmedPassword);
|
|
passwordIsUnconfirmed = true;
|
|
}
|
|
|
|
return passwordIsUnconfirmed;
|
|
}
|
|
|
|
/// ----------------------------------------------------------------------------------------
|
|
/// <summary>
|
|
/// Check if there are some unconfirmed passwords and show alert if so.
|
|
/// </summary>
|
|
/// ----------------------------------------------------------------------------------------
|
|
private void PresentAlertForUnconfirmedPassword(string unconfirmedPassword)
|
|
{
|
|
MessageBox.Show(SEBUIStrings.unconfirmedPasswordMessage.Replace("%s", unconfirmedPassword), SEBUIStrings.unconfirmedPasswordTitle, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
|
|
// **************
|
|
//
|
|
// Event handlers
|
|
//
|
|
// **************
|
|
|
|
|
|
|
|
// ***************
|
|
// Group "General"
|
|
// ***************
|
|
private void textBoxStartURL_TextChanged(object sender, EventArgs e)
|
|
{
|
|
comboBoxAdditionalResourceStartUrl.Enabled = string.IsNullOrEmpty(textBoxStartURL.Text);
|
|
if (!string.IsNullOrEmpty(textBoxStartURL.Text))
|
|
{
|
|
comboBoxAdditionalResourceStartUrl.SelectedItem = null;
|
|
comboBoxAdditionalResourceStartUrl.Text = "Choose an embedded resource...";
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyStartResource] = "";
|
|
}
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyStartURL] = textBoxStartURL.Text;
|
|
}
|
|
|
|
private void textBoxSebServerURL_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeySebServerURL] = textBoxSebServerURL.Text;
|
|
}
|
|
|
|
private void textBoxAdminPassword_TextChanged(object sender, EventArgs e)
|
|
{
|
|
ComparePasswords(textBoxAdminPassword, textBoxConfirmAdminPassword, ref adminPasswordFieldsContainHash, labelAdminPasswordCompare, SEBSettings.KeyHashedAdminPassword);
|
|
}
|
|
|
|
private void textBoxConfirmAdminPassword_TextChanged(object sender, EventArgs e)
|
|
{
|
|
ComparePasswords(textBoxAdminPassword, textBoxConfirmAdminPassword, ref adminPasswordFieldsContainHash, labelAdminPasswordCompare, SEBSettings.KeyHashedAdminPassword);
|
|
}
|
|
|
|
private void checkBoxAllowQuit_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowQuit] = checkBoxAllowQuit.Checked;
|
|
}
|
|
|
|
private void textBoxQuitPassword_TextChanged(object sender, EventArgs e)
|
|
{
|
|
ComparePasswords(textBoxQuitPassword, textBoxConfirmQuitPassword, ref quitPasswordFieldsContainHash, labelQuitPasswordCompare, SEBSettings.KeyHashedQuitPassword);
|
|
}
|
|
|
|
|
|
private void textBoxConfirmQuitPassword_TextChanged(object sender, EventArgs e)
|
|
{
|
|
ComparePasswords(textBoxQuitPassword, textBoxConfirmQuitPassword, ref quitPasswordFieldsContainHash, labelQuitPasswordCompare, SEBSettings.KeyHashedQuitPassword);
|
|
}
|
|
|
|
|
|
private void checkBoxIgnoreExitKeys_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyIgnoreExitKeys] = checkBoxIgnoreExitKeys.Checked;
|
|
groupBoxExitSequence.Enabled = !checkBoxIgnoreExitKeys.Checked;
|
|
}
|
|
|
|
private void listBoxExitKey1_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
// Make sure that all three exit keys are different.
|
|
// If selected key is already occupied, revert to previously selected key.
|
|
if ((listBoxExitKey1.SelectedIndex == listBoxExitKey2.SelectedIndex) ||
|
|
(listBoxExitKey1.SelectedIndex == listBoxExitKey3.SelectedIndex))
|
|
listBoxExitKey1.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyExitKey1];
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExitKey1] = listBoxExitKey1.SelectedIndex;
|
|
}
|
|
|
|
private void listBoxExitKey2_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
// Make sure that all three exit keys are different.
|
|
// If selected key is already occupied, revert to previously selected key.
|
|
if ((listBoxExitKey2.SelectedIndex == listBoxExitKey1.SelectedIndex) ||
|
|
(listBoxExitKey2.SelectedIndex == listBoxExitKey3.SelectedIndex))
|
|
listBoxExitKey2.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyExitKey2];
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExitKey2] = listBoxExitKey2.SelectedIndex;
|
|
}
|
|
|
|
private void listBoxExitKey3_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
// Make sure that all three exit keys are different.
|
|
// If selected key is already occupied, revert to previously selected key.
|
|
if ((listBoxExitKey3.SelectedIndex == listBoxExitKey1.SelectedIndex) ||
|
|
(listBoxExitKey3.SelectedIndex == listBoxExitKey2.SelectedIndex))
|
|
listBoxExitKey3.SelectedIndex = (int) SEBSettings.settingsCurrent[SEBSettings.KeyExitKey3];
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExitKey3] = listBoxExitKey3.SelectedIndex;
|
|
}
|
|
|
|
private void buttonAbout_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void buttonHelp_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void buttonQuit_Click(object sender, EventArgs e)
|
|
{
|
|
/*
|
|
// If no file has been opened, save the current settings
|
|
// to the default configuration file ("SebStarter.xml/seb")
|
|
if (currentFileSebStarterIni.Equals(""))
|
|
{
|
|
currentFileSebStarter = defaultFileSebStarter;
|
|
currentPathSebStarter = defaultPathSebStarter;
|
|
}
|
|
|
|
// Save the configuration file so that nothing gets lost
|
|
SaveConfigurationFile(currentPathSebStarter);
|
|
*/
|
|
// Close the configuration window and exit
|
|
this.Close();
|
|
}
|
|
|
|
|
|
|
|
// *******************
|
|
// Group "Config File"
|
|
// *******************
|
|
private void radioButtonStartingAnExam_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonStartingAnExam.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeySebConfigPurpose] = 0;
|
|
else SEBSettings.settingsCurrent[SEBSettings.KeySebConfigPurpose] = 1;
|
|
sebConfigPurposeChanged = true;
|
|
}
|
|
|
|
private void radioButtonConfiguringAClient_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonConfiguringAClient.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeySebConfigPurpose] = 1;
|
|
else SEBSettings.settingsCurrent[SEBSettings.KeySebConfigPurpose] = 0;
|
|
sebConfigPurposeChanged = true;
|
|
}
|
|
|
|
private void checkBoxAllowPreferencesWindow_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowPreferencesWindow] = checkBoxAllowPreferencesWindow.Checked;
|
|
}
|
|
|
|
private void comboBoxCryptoIdentity_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValCryptoIdentity] = comboBoxCryptoIdentity.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValCryptoIdentity] = comboBoxCryptoIdentity.Text;
|
|
}
|
|
|
|
private void comboBoxCryptoIdentity_TextUpdate(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValCryptoIdentity] = comboBoxCryptoIdentity.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValCryptoIdentity] = comboBoxCryptoIdentity.Text;
|
|
}
|
|
|
|
private void checkBoxUseOldAsymmetricOnlyEncryption_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyUseAsymmetricOnlyEncryption] = checkBoxUseOldAsymmetricOnlyEncryption.Checked;
|
|
}
|
|
|
|
private void textBoxSettingsPassword_TextChanged(object sender, EventArgs e)
|
|
{
|
|
ComparePasswords(textBoxSettingsPassword, textBoxConfirmSettingsPassword, ref settingsPasswordFieldsContainHash, labelSettingsPasswordCompare, null);
|
|
// We can store the settings password regardless if the same is entered in the confirm text field,
|
|
// as saving the .seb file is only allowed when they are same
|
|
//settingsPassword = textBoxSettingsPassword.Text;
|
|
}
|
|
|
|
private void textBoxConfirmSettingsPassword_TextChanged(object sender, EventArgs e)
|
|
{
|
|
ComparePasswords(textBoxSettingsPassword, textBoxConfirmSettingsPassword, ref settingsPasswordFieldsContainHash, labelSettingsPasswordCompare, null);
|
|
// We can store the settings password regardless if the same is entered in the confirm text field,
|
|
// as saving the .seb file is only allowed when they are same
|
|
//settingsPassword = textBoxSettingsPassword.Text;
|
|
}
|
|
|
|
/// ----------------------------------------------------------------------------------------
|
|
/// <summary>
|
|
/// Check if settings changed since last saved/opened
|
|
/// </summary>
|
|
/// ----------------------------------------------------------------------------------------
|
|
private int checkSettingsChanged()
|
|
{
|
|
int result = 0;
|
|
// Generate current Browser Exam Key
|
|
string currentBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
if (!lastBrowserExamKey.Equals(currentBrowserExamKey) || !lastSettingsPassword.Equals(textBoxSettingsPassword.Text) || lastCryptoIdentityIndex != comboBoxCryptoIdentity.SelectedIndex)
|
|
{
|
|
var messageBoxResult = MessageBox.Show(SEBUIStrings.unsavedChangesQuestion, SEBUIStrings.unsavedChangesTitle, MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
|
|
if (messageBoxResult == DialogResult.Yes)
|
|
{
|
|
result = 1;
|
|
}
|
|
if (messageBoxResult == DialogResult.Cancel)
|
|
{
|
|
result = 2;
|
|
}
|
|
}
|
|
return result;
|
|
}
|
|
|
|
private void buttonOpenSettings_Click(object sender, EventArgs e)
|
|
{
|
|
// Check if there are unconfirmed passwords, if yes show an alert and abort saving
|
|
if (ArePasswordsUnconfirmed()) return;
|
|
|
|
// Check if settings changed since last saved/opened
|
|
int result = checkSettingsChanged();
|
|
// User selected cancel, abort
|
|
if (result == 2) return;
|
|
// User selected "Save current settings first: yes"
|
|
if (result == 1)
|
|
{
|
|
// Abort if saving settings failed
|
|
if (!saveCurrentSettings()) return;
|
|
}
|
|
|
|
// Set the default directory and file name in the File Dialog
|
|
openFileDialogSebConfigFile.InitialDirectory = currentDireSebConfigFile;
|
|
openFileDialogSebConfigFile.FileName = "";
|
|
openFileDialogSebConfigFile.DefaultExt = "seb";
|
|
openFileDialogSebConfigFile.Filter = "SEB Files|*.seb";
|
|
|
|
// Get the user inputs in the File Dialog
|
|
DialogResult fileDialogResult = openFileDialogSebConfigFile.ShowDialog();
|
|
String fileName = openFileDialogSebConfigFile.FileName;
|
|
|
|
// If the user clicked "Cancel", do nothing
|
|
// If the user clicked "OK" , read the settings from the configuration file
|
|
if (fileDialogResult.Equals(DialogResult.Cancel)) return;
|
|
if (fileDialogResult.Equals(DialogResult.OK))
|
|
{
|
|
if (!LoadConfigurationFileIntoEditor(fileName))
|
|
{
|
|
MessageBox.Show(SEBUIStrings.openingSettingsFailedMessage, SEBUIStrings.openingSettingsFailed, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
// Generate Browser Exam Key of this new settings
|
|
lastBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
// Save the current settings password so it can be used for comparing later if it changed
|
|
lastSettingsPassword = textBoxSettingsPassword.Text;
|
|
lastCryptoIdentityIndex = comboBoxCryptoIdentity.SelectedIndex;
|
|
// Display the new Browser Exam Key in Exam pane
|
|
textBoxBrowserExamKey.Text = lastBrowserExamKey;
|
|
textBoxConfigurationKey.Text = SEBProtectionController.ComputeConfigurationKey();
|
|
// Reset the path of the last saved file which is used in case "Edit duplicate" was used
|
|
lastPathSebConfigFile = null;
|
|
}
|
|
}
|
|
|
|
|
|
public void openSettingsFile(string filePath)
|
|
{
|
|
// Check if there are unconfirmed passwords, if yes show an alert and abort saving
|
|
if (ArePasswordsUnconfirmed()) return;
|
|
|
|
// Check if settings changed since last saved/opened
|
|
int result = checkSettingsChanged();
|
|
// User selected cancel, abort
|
|
if (result == 2) return;
|
|
// User selected "Save current settings first: yes"
|
|
// User selected "Save current settings first: yes"
|
|
if (result == 1)
|
|
{
|
|
// Abort if saving settings failed
|
|
if (!saveCurrentSettings()) return;
|
|
}
|
|
|
|
if (!LoadConfigurationFileIntoEditor(filePath))
|
|
{
|
|
MessageBox.Show(SEBUIStrings.openingSettingsFailedMessage, SEBUIStrings.openingSettingsFailed, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
// Generate Browser Exam Key of this new settings
|
|
lastBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
// Save the current settings password so it can be used for comparing later if it changed
|
|
lastSettingsPassword = textBoxSettingsPassword.Text;
|
|
lastCryptoIdentityIndex = comboBoxCryptoIdentity.SelectedIndex;
|
|
// Display the new Browser Exam Key in Exam pane
|
|
textBoxBrowserExamKey.Text = lastBrowserExamKey;
|
|
textBoxConfigurationKey.Text = SEBProtectionController.ComputeConfigurationKey();
|
|
// Reset the path of the last saved file which is used in case "Edit duplicate" was used
|
|
lastPathSebConfigFile = null;
|
|
}
|
|
|
|
|
|
private void buttonSaveSettings_Click(object sender, EventArgs e)
|
|
{
|
|
saveCurrentSettings();
|
|
}
|
|
|
|
public bool saveCurrentSettings()
|
|
{
|
|
// Check if there are unconfirmed passwords, if yes show an alert and abort saving
|
|
if (ArePasswordsUnconfirmed()) return false;
|
|
|
|
StringBuilder sebClientSettingsAppDataBuilder = new StringBuilder(currentDireSebConfigFile).Append(@"\").Append(currentFileSebConfigFile);
|
|
String fileName = sebClientSettingsAppDataBuilder.ToString();
|
|
|
|
// Update URL filter rules, also the seb-Browser white/blacklist keys,
|
|
// which are necessary for compatibility to SEB 2.1.x
|
|
urlFilter.UpdateFilterRules();
|
|
|
|
/// Generate Browser Exam Key and its salt, in case settings or the settings password changed
|
|
string newBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
// Save current Browser Exam Key salt in case saving fails
|
|
byte[] currentExamKeySalt = (byte[]) SEBSettings.settingsCurrent[SEBSettings.KeyExamKeySalt];
|
|
|
|
if (!lastBrowserExamKey.Equals(newBrowserExamKey) || !lastSettingsPassword.Equals(textBoxSettingsPassword.Text) || lastCryptoIdentityIndex != comboBoxCryptoIdentity.SelectedIndex)
|
|
{
|
|
// As the exam key changed, we will generate a new salt
|
|
byte[] newExamKeySalt = SEBProtectionController.GenerateBrowserExamKeySalt();
|
|
// Save the new salt
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExamKeySalt] = newExamKeySalt;
|
|
}
|
|
if (!SaveConfigurationFileFromEditor(fileName))
|
|
{
|
|
MessageBox.Show(SEBUIStrings.savingSettingsFailedMessage, SEBUIStrings.savingSettingsFailed, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
// Restore the old Browser Exam Key salt
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExamKeySalt] = currentExamKeySalt;
|
|
return false;
|
|
}
|
|
|
|
// Before displaying message check if saved settings are local client settings or the default settings (no client settings saved yet), in other words:
|
|
// Check if not saving local client settings (in %appdata% or %commonappdata%) or if the last saved/opened file isn't the same we're saving now (usually after "Edit Duplicate") or if the flag for being duplicated was set
|
|
if ((!currentPathSebConfigFile.Equals(SEBClientInfo.SebClientSettingsAppDataFile) && !currentPathSebConfigFile.Equals(SEBClientInfo.SebClientSettingsProgramDataFile) && sebConfigPurposeChanged) || currentSebConfigFileWasDuplicated)
|
|
{
|
|
// In this case tell the user what purpose the file was saved for
|
|
string messageFilePurpose = (int) SEBSettings.settingsCurrent[SEBSettings.KeySebConfigPurpose] == 0 ? SEBUIStrings.savingSettingsSucceededStartExam : SEBUIStrings.savingSettingsSucceededMessageConfigureClient;
|
|
MessageBox.Show(messageFilePurpose, SEBUIStrings.savingSettingsSucceeded, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
currentSebConfigFileWasDuplicated = false;
|
|
sebConfigPurposeChanged = false;
|
|
}
|
|
|
|
// Generate the new Browser Exam Key
|
|
lastBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
// Display the new Browser Exam Key in Exam pane
|
|
textBoxBrowserExamKey.Text = lastBrowserExamKey;
|
|
textBoxConfigurationKey.Text = SEBProtectionController.ComputeConfigurationKey();
|
|
// Save the current settings password so it can be used for comparing later if it changed
|
|
lastSettingsPassword = textBoxSettingsPassword.Text;
|
|
// Reset the path of the last saved file which is used in case "Edit duplicate" was used
|
|
lastPathSebConfigFile = null;
|
|
return true;
|
|
}
|
|
|
|
|
|
private void buttonSaveSettingsAs_Click(object sender, EventArgs e)
|
|
{
|
|
// Check if there are unconfirmed passwords, if yes show an alert and abort saving
|
|
if (ArePasswordsUnconfirmed()) return;
|
|
|
|
// Set the default directory and file name in the File Dialog
|
|
saveFileDialogSebConfigFile.InitialDirectory = currentDireSebConfigFile;
|
|
saveFileDialogSebConfigFile.FileName = currentFileSebConfigFile;
|
|
|
|
// Get the user inputs in the File Dialog
|
|
DialogResult fileDialogResult = saveFileDialogSebConfigFile.ShowDialog();
|
|
String fileName = saveFileDialogSebConfigFile.FileName;
|
|
|
|
// If the user clicked "Cancel", do nothing
|
|
// If the user clicked "OK" , write the settings to the configuration file
|
|
if (fileDialogResult.Equals(DialogResult.Cancel)) return;
|
|
|
|
// Update URL filter rules, also the seb-Browser white/blacklist keys,
|
|
// which are necessary for compatibility to SEB 2.1.x
|
|
urlFilter.UpdateFilterRules();
|
|
|
|
// Generate Browser Exam Key and its salt, if settings changed
|
|
string newBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
// Save current Browser Exam Key salt in case saving fails
|
|
byte[] currentExamKeySalt = (byte[]) SEBSettings.settingsCurrent[SEBSettings.KeyExamKeySalt];
|
|
|
|
if (!lastBrowserExamKey.Equals(newBrowserExamKey) || !lastSettingsPassword.Equals(textBoxSettingsPassword.Text) || lastCryptoIdentityIndex != comboBoxCryptoIdentity.SelectedIndex)
|
|
{
|
|
// If the exam key changed, then settings changed and we will generate a new salt
|
|
byte[] newExamKeySalt = SEBProtectionController.GenerateBrowserExamKeySalt();
|
|
// Save the new salt
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExamKeySalt] = newExamKeySalt;
|
|
}
|
|
if (fileDialogResult.Equals(DialogResult.OK))
|
|
{
|
|
if (!SaveConfigurationFileFromEditor(fileName))
|
|
{
|
|
MessageBox.Show(SEBUIStrings.savingSettingsFailedMessage, SEBUIStrings.savingSettingsFailed, MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
// Restore the old Browser Exam Key salt
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExamKeySalt] = currentExamKeySalt;
|
|
return;
|
|
}
|
|
// If currently edited settings should be saved as local client settings (in %appdata% or %commonappdata%), then don't show the config file purpose message
|
|
if (!currentPathSebConfigFile.Equals(SEBClientInfo.SebClientSettingsAppDataFile) && !currentPathSebConfigFile.Equals(SEBClientInfo.SebClientSettingsProgramDataFile))
|
|
{
|
|
// Tell the user what purpose the file was saved for
|
|
string messageFilePurpose = (int) SEBSettings.settingsCurrent[SEBSettings.KeySebConfigPurpose] == 0 ? SEBUIStrings.savingSettingsSucceededStartExam : SEBUIStrings.savingSettingsSucceededMessageConfigureClient;
|
|
MessageBox.Show(messageFilePurpose, SEBUIStrings.savingSettingsSucceeded, MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
currentSebConfigFileWasDuplicated = false;
|
|
sebConfigPurposeChanged = false;
|
|
}
|
|
|
|
// Generate the new Browser Exam Key
|
|
lastBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
// Display the new Browser Exam Key in Exam pane
|
|
textBoxBrowserExamKey.Text = lastBrowserExamKey;
|
|
textBoxConfigurationKey.Text = SEBProtectionController.ComputeConfigurationKey();
|
|
// Save the current settings password so it can be used for comparing later if it changed
|
|
lastSettingsPassword = textBoxSettingsPassword.Text;
|
|
lastCryptoIdentityIndex = comboBoxCryptoIdentity.SelectedIndex;
|
|
// Reset the path of the last saved file which is used in case "Edit duplicate" was used
|
|
lastPathSebConfigFile = null;
|
|
}
|
|
}
|
|
|
|
|
|
private void buttonRevertToDefaultSettings_Click(object sender, EventArgs e)
|
|
{
|
|
// Check if there are unconfirmed passwords, if yes show an alert and abort saving
|
|
if (ArePasswordsUnconfirmed()) return;
|
|
|
|
// Check if settings changed since last saved/opened
|
|
int result = checkSettingsChanged();
|
|
// User selected cancel, abort
|
|
if (result == 2) return;
|
|
// User selected "Save current settings first: yes"
|
|
if (result == 1)
|
|
{
|
|
// Abort if saving settings failed
|
|
if (!saveCurrentSettings()) return;
|
|
}
|
|
|
|
settingsPassword = "";
|
|
settingsPasswordFieldsContainHash = false;
|
|
SEBSettings.RestoreDefaultAndCurrentSettings();
|
|
SEBSettings.AddDefaultProhibitedProcesses();
|
|
|
|
// Check if currently edited settings are local client settings (in %appdata% or %commonappdata%) or the default settings (no client settings saved yet)
|
|
if (!currentPathSebConfigFile.Equals(SEBClientInfo.SebClientSettingsAppDataFile) && !currentPathSebConfigFile.Equals(SEBClientInfo.SebClientSettingsProgramDataFile) && !currentPathSebConfigFile.Equals(SEBUIStrings.settingsTitleDefaultSettings))
|
|
{
|
|
// If reverting other than local client/default settings, use "starting exam" as config purpose
|
|
SEBSettings.settingsCurrent[SEBSettings.KeySebConfigPurpose] = 0;
|
|
}
|
|
|
|
// Update URL filter rules, also the seb-Browser white/blacklist keys,
|
|
// which are necessary for compatibility to SEB 2.1.x
|
|
urlFilter.UpdateFilterRules();
|
|
|
|
UpdateAllWidgetsOfProgram();
|
|
// Generate Browser Exam Key of default settings
|
|
string currentBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
lastSettingsPassword = textBoxSettingsPassword.Text;
|
|
lastCryptoIdentityIndex = comboBoxCryptoIdentity.SelectedIndex;
|
|
// Display the new Browser Exam Key in Exam pane
|
|
textBoxBrowserExamKey.Text = currentBrowserExamKey;
|
|
textBoxConfigurationKey.Text = SEBProtectionController.ComputeConfigurationKey();
|
|
}
|
|
|
|
|
|
private void buttonRevertToLocalClientSettings_Click(object sender, EventArgs e)
|
|
{
|
|
// Check if there are unconfirmed passwords, if yes show an alert and abort saving
|
|
if (ArePasswordsUnconfirmed()) return;
|
|
|
|
// Check if settings changed since last saved/opened
|
|
int result = checkSettingsChanged();
|
|
// User selected cancel, abort
|
|
if (result == 2) return;
|
|
// User selected "Save current settings first: yes"
|
|
if (result == 1)
|
|
{
|
|
// Abort if saving settings failed
|
|
if (!saveCurrentSettings()) return;
|
|
}
|
|
|
|
// Get the path to the local client settings configuration file
|
|
currentDireSebConfigFile = SEBClientInfo.SebClientSettingsAppDataDirectory;
|
|
currentFileSebConfigFile = SEBClientInfo.SEB_CLIENT_CONFIG;
|
|
StringBuilder sebClientSettingsAppDataBuilder = new StringBuilder(currentDireSebConfigFile).Append(currentFileSebConfigFile);
|
|
currentPathSebConfigFile = sebClientSettingsAppDataBuilder.ToString();
|
|
|
|
if (!LoadConfigurationFileIntoEditor(currentPathSebConfigFile))
|
|
{
|
|
settingsPassword = "";
|
|
settingsPasswordFieldsContainHash = false;
|
|
SEBSettings.RestoreDefaultAndCurrentSettings();
|
|
SEBSettings.AddDefaultProhibitedProcesses();
|
|
currentPathSebConfigFile = SEBUIStrings.settingsTitleDefaultSettings;
|
|
// Update URL filter rules, also the seb-Browser white/blacklist keys,
|
|
// which are necessary for compatibility to SEB 2.1.x
|
|
urlFilter.UpdateFilterRules();
|
|
UpdateAllWidgetsOfProgram();
|
|
}
|
|
// Generate Browser Exam Key of this new settings
|
|
lastBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
lastSettingsPassword = textBoxSettingsPassword.Text;
|
|
lastCryptoIdentityIndex = comboBoxCryptoIdentity.SelectedIndex;
|
|
// Display the new Browser Exam Key in Exam pane
|
|
textBoxBrowserExamKey.Text = lastBrowserExamKey;
|
|
textBoxConfigurationKey.Text = SEBProtectionController.ComputeConfigurationKey();
|
|
}
|
|
|
|
|
|
private void buttonRevertToLastOpened_Click(object sender, EventArgs e)
|
|
{
|
|
// Check if there are unconfirmed passwords, if yes show an alert and abort saving
|
|
if (ArePasswordsUnconfirmed()) return;
|
|
|
|
// Check if settings changed since last saved/opened
|
|
int result = checkSettingsChanged();
|
|
// User selected cancel, abort
|
|
if (result == 2) return;
|
|
// User selected "Save current settings first: yes"
|
|
if (result == 1)
|
|
{
|
|
// Abort if saving settings failed
|
|
if (!saveCurrentSettings()) return;
|
|
}
|
|
|
|
if (!LoadConfigurationFileIntoEditor(String.IsNullOrEmpty(lastPathSebConfigFile) ? currentPathSebConfigFile : lastPathSebConfigFile)) return;
|
|
lastPathSebConfigFile = null;
|
|
// Generate Browser Exam Key of this new settings
|
|
lastBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
lastSettingsPassword = textBoxSettingsPassword.Text;
|
|
lastCryptoIdentityIndex = comboBoxCryptoIdentity.SelectedIndex;
|
|
// Display the new Browser Exam Key in Exam pane
|
|
textBoxBrowserExamKey.Text = lastBrowserExamKey;
|
|
textBoxConfigurationKey.Text = SEBProtectionController.ComputeConfigurationKey();
|
|
}
|
|
|
|
|
|
private void buttonEditDuplicate_Click(object sender, EventArgs e)
|
|
{
|
|
// Check if there are unconfirmed passwords, if yes show an alert and abort saving
|
|
if (ArePasswordsUnconfirmed()) return;
|
|
|
|
// Check if settings changed since last saved/opened
|
|
int result = checkSettingsChanged();
|
|
// User selected cancel, abort
|
|
if (result == 2) return;
|
|
// User selected yes: Save current settings first and proceed only, when saving didn't fail
|
|
// User selected "Save current settings first: yes"
|
|
if (result == 1)
|
|
{
|
|
// Abort if saving settings failed
|
|
if (!saveCurrentSettings()) return;
|
|
}
|
|
|
|
// Add string " copy" (or " n+1" if the filename already ends with " copy" or " copy n") to the config name filename
|
|
// Get the filename without extension
|
|
string filename = Path.GetFileNameWithoutExtension(currentFileSebConfigFile);
|
|
// Get the extension (should be .seb)
|
|
string extension = Path.GetExtension(currentFileSebConfigFile);
|
|
StringBuilder newFilename = new StringBuilder();
|
|
if (filename.Length == 0)
|
|
{
|
|
newFilename.Append(SEBUIStrings.settingsUntitledFilename);
|
|
extension = ".seb";
|
|
}
|
|
else
|
|
{
|
|
int copyStringPosition = filename.LastIndexOf(SEBUIStrings.settingsDuplicateSuffix);
|
|
if (copyStringPosition == -1)
|
|
{
|
|
newFilename.Append(filename).Append(SEBUIStrings.settingsDuplicateSuffix);
|
|
}
|
|
else
|
|
{
|
|
newFilename.Append(filename.Substring(0, copyStringPosition + SEBUIStrings.settingsDuplicateSuffix.Length));
|
|
string copyNumberString = filename.Substring(copyStringPosition + SEBUIStrings.settingsDuplicateSuffix.Length);
|
|
if (copyNumberString.Length == 0)
|
|
{
|
|
newFilename.Append(" 1");
|
|
}
|
|
else
|
|
{
|
|
int copyNumber = Convert.ToInt16(copyNumberString.Substring(1));
|
|
if (copyNumber == 0)
|
|
{
|
|
newFilename.Append(SEBUIStrings.settingsDuplicateSuffix);
|
|
}
|
|
else
|
|
{
|
|
newFilename.Append(" ").Append((copyNumber + 1).ToString());
|
|
}
|
|
}
|
|
}
|
|
}
|
|
lastPathSebConfigFile = currentPathSebConfigFile;
|
|
currentFileSebConfigFile = newFilename.Append(extension).ToString();
|
|
|
|
StringBuilder sebClientSettingsAppDataBuilder = new StringBuilder(currentDireSebConfigFile).Append(@"\").Append(currentFileSebConfigFile);
|
|
currentPathSebConfigFile = sebClientSettingsAppDataBuilder.ToString();
|
|
currentSebConfigFileWasDuplicated = true;
|
|
// Update title of edited settings file
|
|
UpdateAllWidgetsOfProgram();
|
|
}
|
|
|
|
|
|
private void buttonConfigureClient_Click(object sender, EventArgs e)
|
|
{
|
|
// Check if there are unconfirmed passwords, if yes show an alert and abort saving
|
|
if (ArePasswordsUnconfirmed()) return;
|
|
|
|
// Get the path to the local client settings configuration file
|
|
StringBuilder sebClientSettingsAppDataBuilder = new StringBuilder(SEBClientInfo.SebClientSettingsAppDataDirectory).Append(SEBClientInfo.SEB_CLIENT_CONFIG);
|
|
string filename = sebClientSettingsAppDataBuilder.ToString();
|
|
|
|
// Update URL filter rules, also the seb-Browser white/blacklist keys,
|
|
// which are necessary for compatibility to SEB 2.1.x
|
|
urlFilter.UpdateFilterRules();
|
|
|
|
// Generate Browser Exam Key and its salt, if settings changed
|
|
string newBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
// Save current Browser Exam Key salt in case saving fails
|
|
byte[] currentExamKeySalt = (byte[]) SEBSettings.settingsCurrent[SEBSettings.KeyExamKeySalt];
|
|
|
|
if (!lastBrowserExamKey.Equals(newBrowserExamKey) || !lastSettingsPassword.Equals(textBoxSettingsPassword.Text))
|
|
{
|
|
// If the exam key changed, then settings changed and we will generate a new salt
|
|
byte[] newExamKeySalt = SEBProtectionController.GenerateBrowserExamKeySalt();
|
|
// Save the new salt
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExamKeySalt] = newExamKeySalt;
|
|
}
|
|
if (!SaveConfigurationFileFromEditor(filename))
|
|
{
|
|
// SebClientSettings.seb config file wasn't saved successfully, revert changed settings
|
|
// Restore the old Browser Exam Key salt
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExamKeySalt] = currentExamKeySalt;
|
|
return;
|
|
}
|
|
// Generate the new Browser Exam Key
|
|
lastBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
// Save the current settings password so it can be used for comparing later if it changed
|
|
lastSettingsPassword = textBoxSettingsPassword.Text;
|
|
lastCryptoIdentityIndex = comboBoxCryptoIdentity.SelectedIndex;
|
|
// Display the new Browser Exam Key in Exam pane
|
|
textBoxBrowserExamKey.Text = lastBrowserExamKey;
|
|
textBoxConfigurationKey.Text = SEBProtectionController.ComputeConfigurationKey();
|
|
}
|
|
|
|
|
|
private void buttonApplyAndStartSEB_Click(object sender, EventArgs e)
|
|
{
|
|
// Check if there are unconfirmed passwords, if yes show an alert and abort saving
|
|
if (ArePasswordsUnconfirmed()) return;
|
|
|
|
// Update URL filter rules, also the seb-Browser white/blacklist keys,
|
|
// which are necessary for compatibility to SEB 2.1.x
|
|
urlFilter.UpdateFilterRules();
|
|
|
|
// Check if settings changed and save them if yes
|
|
// Generate current Browser Exam Key
|
|
string currentBrowserExamKey = SEBProtectionController.ComputeBrowserExamKey();
|
|
if (!lastBrowserExamKey.Equals(currentBrowserExamKey) || !lastSettingsPassword.Equals(textBoxSettingsPassword.Text) || !String.IsNullOrEmpty(lastPathSebConfigFile))
|
|
{
|
|
if (!saveCurrentSettings()) return;
|
|
}
|
|
// Get the path to the local client settings configuration file
|
|
currentDireSebConfigFile = SEBClientInfo.SebClientSettingsAppDataDirectory;
|
|
currentFileSebConfigFile = SEBClientInfo.SEB_CLIENT_CONFIG;
|
|
StringBuilder sebClientSettingsAppDataBuilder = new StringBuilder(currentDireSebConfigFile).Append(currentFileSebConfigFile);
|
|
string localSebClientSettings = sebClientSettingsAppDataBuilder.ToString();
|
|
|
|
StringBuilder sebClientExeBuilder = new StringBuilder(SEBClientInfo.SebClientDirectory).Append(SEBClientInfo.PRODUCT_NAME).Append(".exe");
|
|
string sebClientExe = sebClientExeBuilder.ToString();
|
|
|
|
var p = new Process();
|
|
p.StartInfo.FileName = sebClientExe;
|
|
|
|
if (!currentPathSebConfigFile.Equals(localSebClientSettings) && !currentPathSebConfigFile.Equals(SEBUIStrings.settingsTitleDefaultSettings))
|
|
{
|
|
p.StartInfo.Arguments = String.Format("\"{0}\"", currentPathSebConfigFile);
|
|
}
|
|
|
|
p.Start();
|
|
|
|
Application.Exit();
|
|
}
|
|
|
|
|
|
// **********************
|
|
// Group "User Interface"
|
|
// **********************
|
|
private void radioButtonUseBrowserWindow_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUseBrowserWindow.Checked == true)
|
|
{
|
|
groupBoxMainBrowserWindow.Enabled = true;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserViewMode] = 0;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyTouchOptimized] = false;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserScreenKeyboard] = false;
|
|
checkBoxEnableTouchExit.Enabled = false;
|
|
checkBoxEnableTouchExit.Checked = false;
|
|
}
|
|
}
|
|
|
|
private void radioButtonUseFullScreenMode_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUseFullScreenMode.Checked == true)
|
|
{
|
|
groupBoxMainBrowserWindow.Enabled = false;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserViewMode] = 1;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyTouchOptimized] = false;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserScreenKeyboard] = false;
|
|
checkBoxEnableTouchExit.Enabled = false;
|
|
checkBoxEnableTouchExit.Checked = false;
|
|
}
|
|
}
|
|
|
|
private void radioButtonTouchOptimized_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonTouchOptimized.Checked == true)
|
|
{
|
|
if ((Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyCreateNewDesktop])
|
|
{
|
|
MessageBox.Show("Touch optimization will not work when kiosk mode is set to 'Create new desktop', please change kiosk mode to 'Disable Explorer Shell' in the Security tab.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
|
}
|
|
|
|
groupBoxMainBrowserWindow.Enabled = false;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserViewMode] = 1;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkWidth] = "100%";
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkHeight] = "100%";
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserViewMode] = 1;
|
|
|
|
if ((bool) SEBSettings.settingsCurrent[SEBSettings.KeyTouchOptimized] == false)
|
|
{
|
|
checkBoxEnableTouchExit.Checked = (bool) SEBSettings.settingsCurrent[SEBSettings.KeyEnableTouchExit];
|
|
}
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyTouchOptimized] = true;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserScreenKeyboard] = true;
|
|
checkBoxEnableTouchExit.Enabled = true;
|
|
}
|
|
}
|
|
|
|
private void comboBoxMainBrowserWindowWidth_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValMainBrowserWindowWidth] = comboBoxMainBrowserWindowWidth.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValMainBrowserWindowWidth] = comboBoxMainBrowserWindowWidth.Text;
|
|
//SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowWidth] = comboBoxMainBrowserWindowWidth.SelectedIndex;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowWidth] = comboBoxMainBrowserWindowWidth.Text;
|
|
}
|
|
|
|
private void comboBoxMainBrowserWindowWidth_TextUpdate(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValMainBrowserWindowWidth] = comboBoxMainBrowserWindowWidth.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValMainBrowserWindowWidth] = comboBoxMainBrowserWindowWidth.Text;
|
|
//SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowWidth] = comboBoxMainBrowserWindowWidth.SelectedIndex;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowWidth] = comboBoxMainBrowserWindowWidth.Text;
|
|
}
|
|
|
|
private void comboBoxMainBrowserWindowHeight_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValMainBrowserWindowHeight] = comboBoxMainBrowserWindowHeight.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValMainBrowserWindowHeight] = comboBoxMainBrowserWindowHeight.Text;
|
|
//SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowHeight] = comboBoxMainBrowserWindowHeight.SelectedIndex;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowHeight] = comboBoxMainBrowserWindowHeight.Text;
|
|
}
|
|
|
|
private void comboBoxMainBrowserWindowHeight_TextUpdate(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValMainBrowserWindowHeight] = comboBoxMainBrowserWindowHeight.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValMainBrowserWindowHeight] = comboBoxMainBrowserWindowHeight.Text;
|
|
//SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowHeight] = comboBoxMainBrowserWindowHeight.SelectedIndex;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowHeight] = comboBoxMainBrowserWindowHeight.Text;
|
|
}
|
|
|
|
private void listBoxMainBrowserWindowPositioning_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowPositioning] = listBoxMainBrowserWindowPositioning.SelectedIndex;
|
|
}
|
|
|
|
private void checkBoxEnableBrowserWindowToolbar_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableBrowserWindowToolbar] = checkBoxEnableBrowserWindowToolbar.Checked;
|
|
checkBoxHideBrowserWindowToolbar.Enabled = checkBoxEnableBrowserWindowToolbar.Checked;
|
|
checkBoxAllowMainWindowAddressBar.Enabled = checkBoxEnableBrowserWindowToolbar.Checked;
|
|
checkBoxAllowAdditionalWindowAddressBar.Enabled = checkBoxEnableBrowserWindowToolbar.Checked;
|
|
checkBoxAllowDeveloperConsole.Enabled = checkBoxEnableBrowserWindowToolbar.Checked;
|
|
}
|
|
|
|
private void checkBoxHideBrowserWindowToolbar_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyHideBrowserWindowToolbar] = checkBoxHideBrowserWindowToolbar.Checked;
|
|
}
|
|
|
|
private void checkBoxShowMenuBar_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyShowMenuBar] = checkBoxShowMenuBar.Checked;
|
|
}
|
|
|
|
private void checkBoxShowTaskBar_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyShowTaskBar] = checkBoxShowTaskBar.Checked;
|
|
comboBoxTaskBarHeight.Enabled = checkBoxShowTaskBar.Checked;
|
|
}
|
|
|
|
private void comboBoxTaskBarHeight_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValTaskBarHeight] = comboBoxTaskBarHeight.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValTaskBarHeight] = comboBoxTaskBarHeight.Text;
|
|
//SEBSettings.settingsCurrent[SEBSettings.KeyTaskBarHeight] = comboBoxTaskBarHeight.SelectedIndex;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyTaskBarHeight] = Int32.Parse(comboBoxTaskBarHeight.Text);
|
|
}
|
|
|
|
private void comboBoxTaskBarHeight_TextUpdate(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValTaskBarHeight] = comboBoxTaskBarHeight.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValTaskBarHeight] = comboBoxTaskBarHeight.Text;
|
|
//SEBSettings.settingsCurrent[SEBSettings.KeyTaskBarHeight] = comboBoxTaskBarHeight.SelectedIndex;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyTaskBarHeight] = Int32.Parse(comboBoxTaskBarHeight.Text);
|
|
}
|
|
|
|
private void addDictionaryButton_Click(object sender, EventArgs e)
|
|
{
|
|
var validLocale = TryGetLocale(out string locale);
|
|
|
|
if (!validLocale)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var validFiles = TryGetFiles(out IEnumerable<string> files);
|
|
|
|
if (!validFiles)
|
|
{
|
|
return;
|
|
}
|
|
|
|
var saved = TrySaveDictionary(files, locale, out Exception exception);
|
|
|
|
if (!saved)
|
|
{
|
|
var message = $"Failed to save dictionary data for locale '{locale}' and files '{String.Join("', '", files)}'!";
|
|
|
|
Logger.AddError(message, this, exception);
|
|
MessageBox.Show(this, message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
}
|
|
|
|
private bool TryGetLocale(out string locale)
|
|
{
|
|
locale = string.Empty;
|
|
|
|
var dialog = new Form
|
|
{
|
|
FormBorderStyle = FormBorderStyle.FixedDialog,
|
|
Height = 150,
|
|
MaximizeBox = false,
|
|
MinimizeBox = false,
|
|
Owner = this,
|
|
StartPosition = FormStartPosition.CenterParent,
|
|
Text = "Dictionary Locale",
|
|
Width = 450
|
|
};
|
|
var description = new Label
|
|
{
|
|
Height = 40,
|
|
Left = 15,
|
|
Text = @"Please enter the locale for the dictionary you wish to add. The locale must comply with the format ""language-COUNTRY"", e.g. ""en-US"" or ""de-CH"".",
|
|
Top = 10,
|
|
Width = 400
|
|
};
|
|
var textBox = new TextBox { Left = 15, Top = 50, Width = 400 };
|
|
var button = new Button { DialogResult = DialogResult.OK, Enabled = false, Left = 175, Width = 75, Text = "OK", Top = 75, };
|
|
var isValid = false;
|
|
|
|
button.Click += (o, args) => dialog.Close();
|
|
textBox.TextChanged += (o, args) =>
|
|
{
|
|
isValid = Regex.IsMatch(textBox.Text, @"^[a-z]{2}-[A-Z]{2}$");
|
|
button.Enabled = isValid;
|
|
textBox.ForeColor = isValid ? Color.Green : Color.Red;
|
|
};
|
|
dialog.Controls.Add(description);
|
|
dialog.Controls.Add(textBox);
|
|
dialog.Controls.Add(button);
|
|
dialog.AcceptButton = button;
|
|
|
|
var result = dialog.ShowDialog();
|
|
|
|
if (isValid)
|
|
{
|
|
locale = textBox.Text;
|
|
}
|
|
|
|
foreach (DataGridViewRow row in spellCheckerDataGridView.Rows)
|
|
{
|
|
if (row.Cells[spellCheckerDictionaryLocaleColumn.Index].Value as string == locale)
|
|
{
|
|
isValid = false;
|
|
MessageBox.Show(this, $"You can only specify one dictionary per locale ({locale})!", "Duplicate Locale", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
|
|
break;
|
|
}
|
|
}
|
|
|
|
return result == DialogResult.OK && isValid;
|
|
}
|
|
|
|
private bool TryGetFiles(out IEnumerable<string> files)
|
|
{
|
|
files = Enumerable.Empty<string>();
|
|
|
|
var dialog = new OpenFileDialog();
|
|
var isValid = false;
|
|
|
|
dialog.Filter = "dictionary files (*.aff, *.dic)|*.aff;*.dic";
|
|
dialog.FilterIndex = 2;
|
|
dialog.Multiselect = true;
|
|
dialog.RestoreDirectory = true;
|
|
|
|
var result = dialog.ShowDialog();
|
|
|
|
isValid = dialog.FileNames.Count() == 2;
|
|
isValid &= dialog.FileNames.Count(f => f.EndsWith(".aff")) == 1;
|
|
isValid &= dialog.FileNames.Count(f => f.EndsWith(".dic")) == 1;
|
|
|
|
if (isValid)
|
|
{
|
|
files = dialog.FileNames;
|
|
}
|
|
else if (result == DialogResult.OK)
|
|
{
|
|
MessageBox.Show(this, "You need to select one .aff and one .dic file!", "Invalid File(s)", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
|
|
return result == DialogResult.OK && isValid;
|
|
}
|
|
|
|
private bool TrySaveDictionary(IEnumerable<string> files, string locale, out Exception exception)
|
|
{
|
|
exception = null;
|
|
|
|
try
|
|
{
|
|
var allowedDictionaries = SEBSettings.settingsCurrent[SEBSettings.KeyAllowSpellCheckDictionary] as ListObj;
|
|
var dictionaries = SEBSettings.settingsCurrent[SEBSettings.KeyAdditionalDictionaries] as ListObj;
|
|
var data = ZipAndEncodeDictionaryFiles(files, locale);
|
|
var format = (int) SEBSettings.DictionaryFormat.Mozilla;
|
|
var fileList = ToDictionaryFileList(files);
|
|
var dictionary = new DictObj
|
|
{
|
|
{ SEBSettings.KeyAdditionalDictionaryData, data },
|
|
{ SEBSettings.KeyAdditionalDictionaryFormat, format },
|
|
{ SEBSettings.KeyAdditionalDictionaryLocale, locale }
|
|
};
|
|
|
|
dictionaries.Add(dictionary);
|
|
allowedDictionaries.Add(locale);
|
|
spellCheckerDataGridView.Rows.Add(true, locale, fileList);
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
exception = e;
|
|
}
|
|
|
|
return exception == null;
|
|
}
|
|
|
|
private string ZipAndEncodeDictionaryFiles(IEnumerable<string> files, string locale)
|
|
{
|
|
var compressor = new FileCompressor();
|
|
var tempDirectory = Directory.CreateDirectory(Path.Combine(Path.GetTempPath(), locale));
|
|
|
|
foreach (var file in files)
|
|
{
|
|
var tempFile = Path.Combine(tempDirectory.FullName, Path.GetFileName(file));
|
|
|
|
File.Copy(file, tempFile, true);
|
|
}
|
|
|
|
var data = compressor.CompressAndEncodeEntireDirectory(tempDirectory.FullName);
|
|
|
|
tempDirectory.Delete(true);
|
|
|
|
return data;
|
|
}
|
|
|
|
private string ToDictionaryFileList(IEnumerable<string> files)
|
|
{
|
|
var affFile = Path.GetFileName(files.First(f => f.EndsWith(".aff")));
|
|
var dicFile = Path.GetFileName(files.First(f => f.EndsWith(".dic")));
|
|
|
|
return $@"{affFile}{Environment.NewLine}{dicFile}";
|
|
}
|
|
|
|
private void spellCheckerDataGridView_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
if (e.RowIndex >= 0 && e.ColumnIndex >= 0 && e.ColumnIndex == spellCheckerDictionaryEnabledColumn.Index)
|
|
{
|
|
var allowedDictionaries = SEBSettings.settingsCurrent[SEBSettings.KeyAllowSpellCheckDictionary] as ListObj;
|
|
var enabled = spellCheckerDataGridView.Rows[e.RowIndex].Cells[spellCheckerDictionaryEnabledColumn.Index].Value is true;
|
|
var locale = spellCheckerDataGridView.Rows[e.RowIndex].Cells[spellCheckerDictionaryLocaleColumn.Index].Value as string;
|
|
|
|
if (enabled && allowedDictionaries.All(l => l as string != locale))
|
|
{
|
|
allowedDictionaries.Add(locale);
|
|
}
|
|
else if (!enabled)
|
|
{
|
|
allowedDictionaries.RemoveAll(l => l as string == locale);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void spellCheckerDataGridView_CurrentCellDirtyStateChanged(object sender, EventArgs e)
|
|
{
|
|
if (spellCheckerDataGridView.IsCurrentCellDirty && spellCheckerDataGridView.CurrentCell.ColumnIndex == spellCheckerDictionaryEnabledColumn.Index)
|
|
{
|
|
spellCheckerDataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
|
|
}
|
|
}
|
|
|
|
private void removeDictionaryButton_Click(object sender, EventArgs e)
|
|
{
|
|
var warningSeen = false;
|
|
|
|
void ShowDefaultDictionaryInfo()
|
|
{
|
|
if (!warningSeen)
|
|
{
|
|
MessageBox.Show(this, "Default dictionaries cannot be removed, as they are part of the application installation.", "Default Dictionary", MessageBoxButtons.OK, MessageBoxIcon.Information);
|
|
warningSeen = true;
|
|
}
|
|
}
|
|
|
|
if (spellCheckerDataGridView.SelectedRows.Count > 0)
|
|
{
|
|
foreach (DataGridViewRow row in spellCheckerDataGridView.SelectedRows)
|
|
{
|
|
if (row.Tag is true)
|
|
{
|
|
ShowDefaultDictionaryInfo();
|
|
}
|
|
else
|
|
{
|
|
RemoveDictionary(row);
|
|
}
|
|
}
|
|
}
|
|
else if (spellCheckerDataGridView.CurrentRow != null)
|
|
{
|
|
if (spellCheckerDataGridView.CurrentRow.Tag is true)
|
|
{
|
|
ShowDefaultDictionaryInfo();
|
|
}
|
|
else
|
|
{
|
|
RemoveDictionary(spellCheckerDataGridView.CurrentRow);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void RemoveDictionary(DataGridViewRow row)
|
|
{
|
|
var allowedDictionaries = SEBSettings.settingsCurrent[SEBSettings.KeyAllowSpellCheckDictionary] as ListObj;
|
|
var dictionaries = SEBSettings.settingsCurrent[SEBSettings.KeyAdditionalDictionaries] as ListObj;
|
|
var locale = row.Cells[spellCheckerDictionaryLocaleColumn.Index].Value as string;
|
|
|
|
allowedDictionaries.RemoveAll(l => l as string == locale);
|
|
dictionaries.RemoveAll(d => (d as DictObj).TryGetValue(SEBSettings.KeyAdditionalDictionaryLocale, out object l) && l as string == locale);
|
|
spellCheckerDataGridView.Rows.Remove(row);
|
|
}
|
|
|
|
// ***************
|
|
// Group "Browser"
|
|
// ***************
|
|
private void listBoxOpenLinksHTML_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkPolicy] = listBoxOpenLinksHTML.SelectedIndex;
|
|
}
|
|
|
|
|
|
private void checkBoxBlockLinksHTML_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkBlockForeign] = checkBoxBlockLinksHTML.Checked;
|
|
}
|
|
|
|
|
|
private void comboBoxNewBrowserWindowWidth_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValNewBrowserWindowByLinkWidth] = comboBoxNewBrowserWindowWidth.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValNewBrowserWindowByLinkWidth] = comboBoxNewBrowserWindowWidth.Text;
|
|
//SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkWidth] = comboBoxNewBrowserWindowWidth.SelectedIndex;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkWidth] = comboBoxNewBrowserWindowWidth.Text;
|
|
}
|
|
|
|
private void comboBoxNewBrowserWindowWidth_TextUpdate(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValNewBrowserWindowByLinkWidth] = comboBoxNewBrowserWindowWidth.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValNewBrowserWindowByLinkWidth] = comboBoxNewBrowserWindowWidth.Text;
|
|
//SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkWidth] = comboBoxNewBrowserWindowWidth.SelectedIndex;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkWidth] = comboBoxNewBrowserWindowWidth.Text;
|
|
}
|
|
|
|
private void comboBoxNewBrowserWindowHeight_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValNewBrowserWindowByLinkHeight] = comboBoxNewBrowserWindowHeight.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValNewBrowserWindowByLinkHeight] = comboBoxNewBrowserWindowHeight.Text;
|
|
//SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkHeight] = comboBoxNewBrowserWindowHeight.SelectedIndex;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkHeight] = comboBoxNewBrowserWindowHeight.Text;
|
|
}
|
|
|
|
private void comboBoxNewBrowserWindowHeight_TextUpdate(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValNewBrowserWindowByLinkHeight] = comboBoxNewBrowserWindowHeight.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValNewBrowserWindowByLinkHeight] = comboBoxNewBrowserWindowHeight.Text;
|
|
//SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkHeight] = comboBoxNewBrowserWindowHeight.SelectedIndex;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkHeight] = comboBoxNewBrowserWindowHeight.Text;
|
|
}
|
|
|
|
private void listBoxNewBrowserWindowPositioning_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowByLinkPositioning] = listBoxNewBrowserWindowPositioning.SelectedIndex;
|
|
}
|
|
|
|
private void checkBoxEnablePlugins_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnablePlugIns] = checkBoxEnablePlugIns.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableJava_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableJava] = checkBoxEnableJava.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableJavaScript_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableJavaScript] = checkBoxEnableJavaScript.Checked;
|
|
}
|
|
|
|
private void checkBoxBlockPopUpWindows_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBlockPopUpWindows] = checkBoxBlockPopUpWindows.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowVideoCapture_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowVideoCapture] = checkBoxAllowVideoCapture.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowAudioCapture_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowAudioCapture] = checkBoxAllowAudioCapture.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowBrowsingBackForward_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowBrowsingBackForward] = checkBoxAllowBrowsingBackForward.Checked;
|
|
checkBoxEnableAltMouseWheel.Checked = checkBoxAllowBrowsingBackForward.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowReload_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserWindowAllowReload] = checkBoxAllowReload.Checked;
|
|
}
|
|
|
|
private void checkBoxShowReloadWarning_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyShowReloadWarning] = checkBoxShowReloadWarning.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowNavigationNewWindow_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowNavigation] = checkBoxAllowNavigationNewWindow.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowReloadNewWindow_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowAllowReload] = checkBoxAllowReloadNewWindow.Checked;
|
|
}
|
|
|
|
private void checkBoxShowReloadWarningNewWindow_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowShowReloadWarning] = checkBoxShowReloadWarningNewWindow.Checked;
|
|
}
|
|
|
|
private void checkBoxRemoveProfile_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyRemoveBrowserProfile] = checkBoxRemoveProfile.Checked;
|
|
}
|
|
|
|
private void checkBoxDisableLocalStorage_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyDisableLocalStorage] = checkBoxDisableLocalStorage.Checked;
|
|
}
|
|
|
|
// BEWARE: you must invert this value since "Use Without" is "Not Enable"!
|
|
private void checkBoxUseSebWithoutBrowser_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableSebBrowser] = !(checkBoxUseSebWithoutBrowser.Checked);
|
|
}
|
|
|
|
private void checkBoxShowReloadButton_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyShowReloadButton] = checkBoxShowReloadButton.Checked;
|
|
}
|
|
|
|
private void radioButtonUseZoomPage_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUseZoomPage.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyZoomMode] = 0;
|
|
else SEBSettings.settingsCurrent[SEBSettings.KeyZoomMode] = 1;
|
|
}
|
|
|
|
private void radioButtonUseZoomText_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUseZoomText.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyZoomMode] = 1;
|
|
else SEBSettings.settingsCurrent[SEBSettings.KeyZoomMode] = 0;
|
|
}
|
|
|
|
private void radioButtonUserAgentDesktopDefault_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUserAgentDesktopDefault.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentDesktopMode] = 0;
|
|
//else SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentDesktopMode] = 1;
|
|
}
|
|
|
|
private void radioButtonUserAgentDesktopCustom_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUserAgentDesktopCustom.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentDesktopMode] = 1;
|
|
//else SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentDesktopMode] = 0;
|
|
}
|
|
|
|
private void textBoxUserAgent_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgent] = textBoxUserAgent.Text;
|
|
}
|
|
|
|
private void textBoxUserAgentTouchModeIPad_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchModeIPad] = textBoxUserAgentTouchModeIPad.Text;
|
|
}
|
|
|
|
private void textBoxUserAgentDesktopModeCustom_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentDesktopModeCustom] = textBoxUserAgentDesktopModeCustom.Text;
|
|
radioButtonUserAgentDesktopCustom.Checked = true;
|
|
}
|
|
|
|
private void radioButtonUserAgentTouchDefault_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUserAgentTouchDefault.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchMode] = 0;
|
|
//else SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchMode] = 1;
|
|
}
|
|
|
|
private void radioButtonUserAgentTouchIPad_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUserAgentTouchIPad.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchMode] = 1;
|
|
}
|
|
|
|
private void radioButtonUserAgentTouchCustom_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUserAgentTouchCustom.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchMode] = 2;
|
|
//else SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchMode] = 0;
|
|
}
|
|
|
|
private void textBoxUserAgentTouchModeCustom_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentTouchModeCustom] = textBoxUserAgentTouchModeCustom.Text;
|
|
radioButtonUserAgentTouchCustom.Checked = true;
|
|
}
|
|
|
|
|
|
private void radioButtonUserAgentMacDefault_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUserAgentMacDefault.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentMac] = 0;
|
|
}
|
|
|
|
private void radioButtonUserAgentMacCustom_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUserAgentMacCustom.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentMac] = 1;
|
|
}
|
|
|
|
private void textBoxUserAgentMacCustom_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserUserAgentMacCustom] = textBoxUserAgentMacCustom.Text;
|
|
radioButtonUserAgentMacCustom.Checked = true;
|
|
}
|
|
|
|
|
|
// ********************
|
|
// Group "Down/Uploads"
|
|
// ********************
|
|
private void checkBoxAllowDownUploads_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowDownUploads] = checkBoxAllowDownUploads.Checked;
|
|
}
|
|
|
|
private void buttonDownloadDirectoryWin_Click(object sender, EventArgs e)
|
|
{
|
|
// Set the default directory in the Folder Browser Dialog
|
|
folderBrowserDialogDownloadDirectoryWin.RootFolder = Environment.SpecialFolder.DesktopDirectory;
|
|
// folderBrowserDialogDownloadDirectoryWin.RootFolder = Environment.CurrentDirectory;
|
|
|
|
// Get the user inputs in the File Dialog
|
|
DialogResult dialogResult = folderBrowserDialogDownloadDirectoryWin.ShowDialog();
|
|
String path = folderBrowserDialogDownloadDirectoryWin.SelectedPath;
|
|
|
|
// If the user clicked "Cancel", do nothing
|
|
if (dialogResult.Equals(DialogResult.Cancel)) return;
|
|
|
|
// If the user clicked "OK", ...
|
|
string pathUsingEnvironmentVariables = SEBClientInfo.ContractEnvironmentVariables(path);
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyDownloadDirectoryWin] = pathUsingEnvironmentVariables;
|
|
textBoxDownloadDirectoryWin.Text = pathUsingEnvironmentVariables;
|
|
}
|
|
|
|
private void textBoxDownloadDirectoryWin_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyDownloadDirectoryWin] = textBoxDownloadDirectoryWin.Text;
|
|
}
|
|
|
|
private void textBoxDownloadDirectoryOSX_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyDownloadDirectoryOSX] = textBoxDownloadDirectoryOSX.Text;
|
|
}
|
|
|
|
private void checkBoxDownloadOpenSEBFiles_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyDownloadAndOpenSebConfig] = checkBoxDownloadOpenSEBFiles.Checked;
|
|
}
|
|
|
|
private void checkBoxOpenDownloads_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyOpenDownloads] = checkBoxOpenDownloads.Checked;
|
|
}
|
|
|
|
private void listBoxChooseFileToUploadPolicy_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyChooseFileToUploadPolicy] = listBoxChooseFileToUploadPolicy.SelectedIndex;
|
|
}
|
|
|
|
private void checkBoxDownloadPDFFiles_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyDownloadPDFFiles] = checkBoxDownloadPDFFiles.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowPDFPlugIn_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowPDFPlugIn] = checkBoxAllowPDFPlugIn.Checked;
|
|
}
|
|
|
|
|
|
// ************
|
|
// Group "Exam"
|
|
// ************
|
|
|
|
private void textBoxBrowserExamKey_TextChanged(object sender, EventArgs e)
|
|
{
|
|
}
|
|
|
|
private void checkBoxSendBrowserExamKey_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeySendBrowserExamKey] = checkBoxSendBrowserExamKey.Checked;
|
|
textBoxBrowserExamKey.Enabled = checkBoxSendBrowserExamKey.Checked;
|
|
textBoxConfigurationKey.Enabled = checkBoxSendBrowserExamKey.Checked;
|
|
}
|
|
|
|
private void textBoxQuitURL_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyQuitURL] = textBoxQuitURL.Text;
|
|
}
|
|
|
|
private void checkBoxQuitURLConfirm_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyQuitURLConfirm] = checkBoxQuitURLConfirm.Checked;
|
|
}
|
|
|
|
private void checkBoxUseStartURL_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyRestartExamUseStartURL] = checkBoxUseStartURL.Checked;
|
|
textBoxRestartExamLink.Enabled = !checkBoxUseStartURL.Checked;
|
|
}
|
|
|
|
private void textBoxRestartExamLink_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyRestartExamURL] = textBoxRestartExamLink.Text;
|
|
}
|
|
|
|
private void textBoxRestartExamText_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyRestartExamText] = textBoxRestartExamText.Text;
|
|
}
|
|
|
|
private void checkBoxRestartExamPasswordProtected_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyRestartExamPasswordProtected] = checkBoxRestartExamPasswordProtected.Checked;
|
|
}
|
|
|
|
|
|
|
|
// ********************
|
|
// Group "Applications"
|
|
// ********************
|
|
private void checkBoxMonitorProcesses_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyMonitorProcesses] = checkBoxMonitorProcesses.Checked;
|
|
}
|
|
|
|
|
|
// ******************************************
|
|
// Group "Applications - Permitted Processes"
|
|
// ******************************************
|
|
private void checkBoxAllowSwitchToApplications_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowSwitchToApplications] = checkBoxAllowSwitchToApplications.Checked;
|
|
checkBoxAllowFlashFullscreen.Enabled = checkBoxAllowSwitchToApplications.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowFlashFullscreen_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowFlashFullscreen] = checkBoxAllowFlashFullscreen.Checked;
|
|
}
|
|
|
|
|
|
private void LoadAndUpdatePermittedSelectedProcessGroup(int selectedProcessIndex)
|
|
{
|
|
// Get the process data of the selected process
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[selectedProcessIndex];
|
|
SEBSettings.permittedArgumentList = (ListObj) SEBSettings.permittedProcessData[SEBSettings.KeyArguments];
|
|
|
|
// Beware double events:
|
|
// Update the widgets in "Selected Process" group,
|
|
// but prevent the following "widget changed" event from firing the "cell changed" event once more!
|
|
ignoreWidgetEventPermittedProcessesActive = true;
|
|
ignoreWidgetEventPermittedProcessesOS = true;
|
|
ignoreWidgetEventPermittedProcessesExecutable = true;
|
|
ignoreWidgetEventPermittedProcessesTitle = true;
|
|
|
|
// Update the widgets in the "Selected Process" group
|
|
checkBoxPermittedProcessActive.Checked = (Boolean) SEBSettings.permittedProcessData[SEBSettings.KeyActive];
|
|
checkBoxPermittedProcessAutostart.Checked = (Boolean) SEBSettings.permittedProcessData[SEBSettings.KeyAutostart];
|
|
checkBoxPermittedProcessIconInTaskbar.Checked = (Boolean) SEBSettings.permittedProcessData[SEBSettings.KeyIconInTaskbar];
|
|
checkBoxPermittedProcessAutohide.Checked = (Boolean) SEBSettings.permittedProcessData[SEBSettings.KeyRunInBackground];
|
|
checkBoxPermittedProcessIconInTaskbar.Enabled = !checkBoxPermittedProcessAutohide.Checked | checkBoxPermittedProcessAutostart.Checked;
|
|
checkBoxPermittedProcessAllowUser.Checked = (Boolean) SEBSettings.permittedProcessData[SEBSettings.KeyAllowUser];
|
|
checkBoxPermittedProcessStrongKill.Checked = (Boolean) SEBSettings.permittedProcessData[SEBSettings.KeyStrongKill];
|
|
listBoxPermittedProcessOS.SelectedIndex = (Int32) SEBSettings.permittedProcessData[SEBSettings.KeyOS];
|
|
textBoxPermittedProcessTitle.Text = (String) SEBSettings.permittedProcessData[SEBSettings.KeyTitle];
|
|
textBoxPermittedProcessDescription.Text = (String) SEBSettings.permittedProcessData[SEBSettings.KeyDescription];
|
|
textBoxPermittedProcessExecutable.Text = (String) SEBSettings.permittedProcessData[SEBSettings.KeyExecutable];
|
|
textBoxPermittedProcessOriginalName.Text = (String) SEBSettings.permittedProcessData[SEBSettings.KeyOriginalName];
|
|
textBoxPermittedProcessExecutables.Text = (String) SEBSettings.permittedProcessData[SEBSettings.KeyWindowHandlingProcess];
|
|
textBoxPermittedProcessPath.Text = (String) SEBSettings.permittedProcessData[SEBSettings.KeyPath];
|
|
textBoxPermittedProcessIdentifier.Text = (String) SEBSettings.permittedProcessData[SEBSettings.KeyIdentifier];
|
|
textBoxPermittedProcessSignature.Text = (String) SEBSettings.permittedProcessData[SEBSettings.KeySignature];
|
|
|
|
// Reset the ignore widget event flags
|
|
ignoreWidgetEventPermittedProcessesActive = false;
|
|
ignoreWidgetEventPermittedProcessesOS = false;
|
|
ignoreWidgetEventPermittedProcessesExecutable = false;
|
|
ignoreWidgetEventPermittedProcessesTitle = false;
|
|
|
|
// Check if selected process has any arguments
|
|
if (SEBSettings.permittedArgumentList.Count > 0)
|
|
SEBSettings.permittedArgumentIndex = 0;
|
|
else SEBSettings.permittedArgumentIndex = -1;
|
|
|
|
// Remove all previously displayed arguments from DataGridView
|
|
dataGridViewPermittedProcessArguments.Enabled = (SEBSettings.permittedArgumentList.Count > 0);
|
|
dataGridViewPermittedProcessArguments.Rows.Clear();
|
|
|
|
// Add arguments of selected process to DataGridView
|
|
for (int index = 0; index < SEBSettings.permittedArgumentList.Count; index++)
|
|
{
|
|
SEBSettings.permittedArgumentData = (DictObj) SEBSettings.permittedArgumentList[index];
|
|
Boolean active = (Boolean) SEBSettings.permittedArgumentData[SEBSettings.KeyActive];
|
|
String argument = (String) SEBSettings.permittedArgumentData[SEBSettings.KeyArgument];
|
|
dataGridViewPermittedProcessArguments.Rows.Add(active, argument);
|
|
}
|
|
|
|
// Get the selected argument data
|
|
if (SEBSettings.permittedArgumentList.Count > 0)
|
|
SEBSettings.permittedArgumentData = (DictObj) SEBSettings.permittedArgumentList[SEBSettings.permittedArgumentIndex];
|
|
}
|
|
|
|
|
|
private void ClearPermittedSelectedProcessGroup()
|
|
{
|
|
// Beware double events:
|
|
// Update the widgets in "Selected Process" group,
|
|
// but prevent the following "widget changed" event from firing the "cell changed" event once more!
|
|
ignoreWidgetEventPermittedProcessesActive = true;
|
|
ignoreWidgetEventPermittedProcessesOS = true;
|
|
ignoreWidgetEventPermittedProcessesExecutable = true;
|
|
ignoreWidgetEventPermittedProcessesTitle = true;
|
|
|
|
// Clear the widgets in the "Selected Process" group
|
|
checkBoxPermittedProcessActive.Checked = true;
|
|
checkBoxPermittedProcessAutostart.Checked = true;
|
|
checkBoxPermittedProcessAutohide.Checked = true;
|
|
checkBoxPermittedProcessAllowUser.Checked = true;
|
|
checkBoxPermittedProcessStrongKill.Checked = false;
|
|
listBoxPermittedProcessOS.SelectedIndex = IntWin;
|
|
textBoxPermittedProcessTitle.Text = "";
|
|
textBoxPermittedProcessDescription.Text = "";
|
|
textBoxPermittedProcessExecutable.Text = "";
|
|
textBoxPermittedProcessOriginalName.Text = "";
|
|
textBoxPermittedProcessExecutables.Text = "";
|
|
textBoxPermittedProcessPath.Text = "";
|
|
textBoxPermittedProcessIdentifier.Text = "";
|
|
|
|
// Reset the ignore widget event flags
|
|
ignoreWidgetEventPermittedProcessesActive = false;
|
|
ignoreWidgetEventPermittedProcessesOS = false;
|
|
ignoreWidgetEventPermittedProcessesExecutable = false;
|
|
ignoreWidgetEventPermittedProcessesTitle = false;
|
|
|
|
// Remove all previously displayed arguments from DataGridView
|
|
dataGridViewPermittedProcessArguments.Enabled = false;
|
|
dataGridViewPermittedProcessArguments.Rows.Clear();
|
|
}
|
|
|
|
|
|
private void dataGridViewPermittedProcesses_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
// CAUTION:
|
|
// If a row was previously selected and the user clicks onto another row,
|
|
// the SelectionChanged() event is fired TWICE!!!
|
|
// The first time, it is only for UNselecting the old row,
|
|
// so the SelectedRows.Count is ZERO, so ignore this event handler!
|
|
// The second time, SelectedRows.Count is ONE.
|
|
// Now you can set the widgets in the "Selected Process" groupBox.
|
|
|
|
if (dataGridViewPermittedProcesses.SelectedRows.Count != 1) return;
|
|
SEBSettings.permittedProcessIndex = dataGridViewPermittedProcesses.SelectedRows[0].Index;
|
|
|
|
// The process list should contain at least one element here:
|
|
// SEBSettings.permittedProcessList.Count > 0
|
|
// SEBSettings.permittedProcessIndex >= 0
|
|
LoadAndUpdatePermittedSelectedProcessGroup(SEBSettings.permittedProcessIndex);
|
|
}
|
|
|
|
|
|
private void dataGridViewPermittedProcesses_CurrentCellDirtyStateChanged(object sender, EventArgs e)
|
|
{
|
|
// When a CheckBox/ListBox/TextBox entry of a DataGridView table cell is edited,
|
|
// immediately call the CellValueChanged() event,
|
|
// which will update the SelectedProcess data and widgets.
|
|
if (dataGridViewPermittedProcesses.IsCurrentCellDirty)
|
|
dataGridViewPermittedProcesses.CommitEdit(DataGridViewDataErrorContexts.Commit);
|
|
}
|
|
|
|
|
|
private void dataGridViewPermittedProcesses_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
// Prevent double events from switching to false process index
|
|
if (ignoreCellEventPermittedProcessesActive == true) return;
|
|
if (ignoreCellEventPermittedProcessesOS == true) return;
|
|
if (ignoreCellEventPermittedProcessesExecutable == true) return;
|
|
if (ignoreCellEventPermittedProcessesTitle == true) return;
|
|
|
|
// Get the current cell where the user has changed a value
|
|
int row = dataGridViewPermittedProcesses.CurrentCellAddress.Y;
|
|
int column = dataGridViewPermittedProcesses.CurrentCellAddress.X;
|
|
|
|
// At the beginning, row = -1 and column = -1, so skip this event
|
|
if (row < 0) return;
|
|
if (column < 0) return;
|
|
|
|
// Get the changed value of the current cell
|
|
object value = dataGridViewPermittedProcesses.CurrentCell.EditedFormattedValue;
|
|
|
|
// Convert the selected "OS" ListBox entry from String to Integer
|
|
if (column == IntColumnProcessOS)
|
|
{
|
|
if ((String) value == StringOSX) value = IntOSX;
|
|
else if ((String) value == StringWin) value = IntWin;
|
|
}
|
|
|
|
// Get the process data of the process belonging to the current row
|
|
SEBSettings.permittedProcessIndex = row;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
|
|
// Update the process data belonging to the current cell
|
|
if (column == IntColumnProcessActive) SEBSettings.permittedProcessData[SEBSettings.KeyActive] = (Boolean) value;
|
|
if (column == IntColumnProcessOS) SEBSettings.permittedProcessData[SEBSettings.KeyOS] = (Int32) value;
|
|
if (column == IntColumnProcessExecutable) SEBSettings.permittedProcessData[SEBSettings.KeyExecutable] = (String) value;
|
|
if (column == IntColumnProcessTitle) SEBSettings.permittedProcessData[SEBSettings.KeyTitle] = (String) value;
|
|
|
|
// Beware double events:
|
|
// when a cell is being edited by the user, update its corresponding widget in "Selected Process" group,
|
|
// but prevent the following "widget changed" event from firing the "cell changed" event once more!
|
|
if (column == IntColumnProcessActive) ignoreWidgetEventPermittedProcessesActive = true;
|
|
if (column == IntColumnProcessOS) ignoreWidgetEventPermittedProcessesOS = true;
|
|
if (column == IntColumnProcessExecutable) ignoreWidgetEventPermittedProcessesExecutable = true;
|
|
if (column == IntColumnProcessTitle) ignoreWidgetEventPermittedProcessesTitle = true;
|
|
|
|
// In "Selected Process" group: update the widget belonging to the current cell
|
|
// (this will fire the corresponding "widget changed" event).
|
|
if (column == IntColumnProcessActive) checkBoxPermittedProcessActive.Checked = (Boolean) value;
|
|
if (column == IntColumnProcessOS) listBoxPermittedProcessOS.SelectedIndex = (Int32) value;
|
|
if (column == IntColumnProcessExecutable) textBoxPermittedProcessExecutable.Text = (String) value;
|
|
if (column == IntColumnProcessTitle) textBoxPermittedProcessTitle.Text = (String) value;
|
|
|
|
// Reset the ignore widget event flags
|
|
if (column == IntColumnProcessActive) ignoreWidgetEventPermittedProcessesActive = false;
|
|
if (column == IntColumnProcessOS) ignoreWidgetEventPermittedProcessesOS = false;
|
|
if (column == IntColumnProcessExecutable) ignoreWidgetEventPermittedProcessesExecutable = false;
|
|
if (column == IntColumnProcessTitle) ignoreWidgetEventPermittedProcessesTitle = false;
|
|
}
|
|
|
|
|
|
private void buttonAddPermittedProcess_Click(object sender, EventArgs e)
|
|
{
|
|
// Get the process list
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
|
|
if (SEBSettings.permittedProcessList.Count > 0)
|
|
{
|
|
if (dataGridViewPermittedProcesses.SelectedRows.Count != 1) return;
|
|
//SEBSettings.permittedProcessIndex = dataGridViewPermittedProcesses.SelectedRows[0].Index;
|
|
SEBSettings.permittedProcessIndex = SEBSettings.permittedProcessList.Count;
|
|
}
|
|
else
|
|
{
|
|
// If process list was empty before, enable it
|
|
SEBSettings.permittedProcessIndex = 0;
|
|
dataGridViewPermittedProcesses.Enabled = true;
|
|
groupBoxPermittedProcess.Enabled = true;
|
|
}
|
|
|
|
// Create new process dataset containing default values
|
|
DictObj processData = new DictObj();
|
|
|
|
processData[SEBSettings.KeyActive] = true;
|
|
processData[SEBSettings.KeyAutostart] = false;
|
|
processData[SEBSettings.KeyIconInTaskbar] = true;
|
|
processData[SEBSettings.KeyRunInBackground] = false;
|
|
processData[SEBSettings.KeyAllowUser] = false;
|
|
processData[SEBSettings.KeyStrongKill] = false;
|
|
processData[SEBSettings.KeyOS] = IntWin;
|
|
processData[SEBSettings.KeyTitle] = "";
|
|
processData[SEBSettings.KeyDescription] = "";
|
|
processData[SEBSettings.KeyExecutable] = "";
|
|
processData[SEBSettings.KeyOriginalName] = "";
|
|
processData[SEBSettings.KeyWindowHandlingProcess] = "";
|
|
processData[SEBSettings.KeyPath] = "";
|
|
processData[SEBSettings.KeyIdentifier] = "";
|
|
processData[SEBSettings.KeyArguments] = new ListObj();
|
|
processData[SEBSettings.KeySignature] = "";
|
|
|
|
// Insert new process into process list at position index
|
|
SEBSettings.permittedProcessList.Insert(SEBSettings.permittedProcessIndex, processData);
|
|
dataGridViewPermittedProcesses.Rows.Insert(SEBSettings.permittedProcessIndex, true, StringOS[IntWin], "", "");
|
|
dataGridViewPermittedProcesses.Rows[SEBSettings.permittedProcessIndex].Selected = true;
|
|
}
|
|
|
|
|
|
private void buttonRemovePermittedProcess_Click(object sender, EventArgs e)
|
|
{
|
|
if (dataGridViewPermittedProcesses.SelectedRows.Count != 1) return;
|
|
|
|
// Clear the widgets in the "Selected Process" group
|
|
ClearPermittedSelectedProcessGroup();
|
|
|
|
// Delete process from process list at position index
|
|
SEBSettings.permittedProcessIndex = dataGridViewPermittedProcesses.SelectedRows[0].Index;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessList.RemoveAt(SEBSettings.permittedProcessIndex);
|
|
dataGridViewPermittedProcesses.Rows.RemoveAt(SEBSettings.permittedProcessIndex);
|
|
|
|
if (SEBSettings.permittedProcessIndex == SEBSettings.permittedProcessList.Count)
|
|
SEBSettings.permittedProcessIndex--;
|
|
|
|
if (SEBSettings.permittedProcessList.Count > 0)
|
|
{
|
|
dataGridViewPermittedProcesses.Rows[SEBSettings.permittedProcessIndex].Selected = true;
|
|
}
|
|
else
|
|
{
|
|
// If process list is now empty, disable it
|
|
SEBSettings.permittedProcessIndex = -1;
|
|
dataGridViewPermittedProcesses.Enabled = false;
|
|
groupBoxPermittedProcess.Enabled = false;
|
|
}
|
|
}
|
|
|
|
|
|
private void buttonChoosePermittedApplication_Click(object sender, EventArgs e)
|
|
{
|
|
var permittedApplicationInformation = ChooseApplicationDialog();
|
|
if (permittedApplicationInformation != null)
|
|
{
|
|
buttonAddPermittedProcess_Click(this, EventArgs.Empty);
|
|
textBoxPermittedProcessExecutable.Text = permittedApplicationInformation.Executable;
|
|
textBoxPermittedProcessOriginalName.Text = permittedApplicationInformation.OriginalName;
|
|
textBoxPermittedProcessTitle.Text = permittedApplicationInformation.Title;
|
|
textBoxPermittedProcessPath.Text = permittedApplicationInformation.Path;
|
|
textBoxPermittedProcessSignature.Text = permittedApplicationInformation.Signature;
|
|
}
|
|
}
|
|
|
|
private void ButtonChooseExecutable_Click(object sender, EventArgs e)
|
|
{
|
|
var permittedApplicationInformation = ChooseApplicationDialog();
|
|
if (permittedApplicationInformation != null)
|
|
{
|
|
textBoxPermittedProcessExecutable.Text = permittedApplicationInformation.Executable;
|
|
textBoxPermittedProcessOriginalName.Text = permittedApplicationInformation.OriginalName;
|
|
textBoxPermittedProcessTitle.Text = permittedApplicationInformation.Title;
|
|
textBoxPermittedProcessPath.Text = permittedApplicationInformation.Path;
|
|
textBoxPermittedProcessSignature.Text = permittedApplicationInformation.Signature;
|
|
}
|
|
}
|
|
|
|
private PermittedApplicationInformation ChooseApplicationDialog()
|
|
{
|
|
var permittedApplicationInformation = new PermittedApplicationInformation();
|
|
|
|
var fileDialog = new OpenFileDialog
|
|
{
|
|
InitialDirectory = Path.GetPathRoot(Environment.SystemDirectory),
|
|
Multiselect = false
|
|
};
|
|
var res = fileDialog.ShowDialog();
|
|
|
|
if (res == DialogResult.OK)
|
|
{
|
|
var filename = fileDialog.FileName.ToLower();
|
|
permittedApplicationInformation.Title = Path.GetFileNameWithoutExtension(fileDialog.FileName);
|
|
permittedApplicationInformation.Executable = Path.GetFileName(filename);
|
|
|
|
var filePath = Path.GetDirectoryName(fileDialog.FileName);
|
|
if (filePath == null)
|
|
{
|
|
return null;
|
|
}
|
|
filePath = filePath.ToLower();
|
|
|
|
//Check SebWindo2wsClientForm.GetApplicationPath() for how SEB searches the locations
|
|
//Check if Path to the executable is in Registry - SEB gets the path from there if it exists
|
|
using (Microsoft.Win32.RegistryKey key = Microsoft.Win32.RegistryKey.OpenRemoteBaseKey(Microsoft.Win32.RegistryHive.LocalMachine, ""))
|
|
{
|
|
string subKeyName = @"SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\" + Path.GetFileName(fileDialog.FileName);
|
|
using (Microsoft.Win32.RegistryKey subkey = key.OpenSubKey(subKeyName))
|
|
{
|
|
if (subkey != null)
|
|
{
|
|
object path = subkey.GetValue("Path");
|
|
if (path != null)
|
|
{
|
|
filePath = filePath.Replace(path.ToString().ToLower(), "");
|
|
filePath = filePath.Replace(path.ToString().TrimEnd('\\').ToLower(), "");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
//Replace all the seach locations - SEB looks in all these directories
|
|
filePath = filePath
|
|
.Replace(SEBClientInfo.ProgramFilesX86Directory.ToLower() + "\\", "")
|
|
.Replace(SEBClientInfo.ProgramFilesX86Directory.ToLower(), "")
|
|
.Replace(Environment.SystemDirectory.ToLower() + "\\", "")
|
|
.Replace(Environment.SystemDirectory.ToLower(), "");
|
|
|
|
permittedApplicationInformation.Path = filePath;
|
|
permittedApplicationInformation.OriginalName = FileVersionInfo.GetVersionInfo(filename).OriginalFilename;
|
|
|
|
try
|
|
{
|
|
using (var certificate = X509Certificate.CreateFromSignedFile(filename))
|
|
{
|
|
permittedApplicationInformation.Signature = certificate.GetCertHashString()?.ToLower();
|
|
}
|
|
}
|
|
catch (Exception e)
|
|
{
|
|
Logger.AddWarning($"Signature for application {filename} could not be loaded! {e.Message}", exception: e);
|
|
MessageBox.Show(this, "The chosen application has no signature and therefore its integrity cannot be verified when SEB is running.", "Signature Load Error", MessageBoxButtons.OK, MessageBoxIcon.Warning);
|
|
}
|
|
|
|
return permittedApplicationInformation;
|
|
}
|
|
return null;
|
|
}
|
|
|
|
private void buttonChoosePermittedProcess_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
private void checkBoxPermittedProcessActive_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
// Prevent double events from switching to false process index
|
|
if (ignoreWidgetEventPermittedProcessesActive == true) return;
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyActive] = checkBoxPermittedProcessActive.Checked;
|
|
Boolean active = checkBoxPermittedProcessActive.Checked;
|
|
ignoreCellEventPermittedProcessesActive = true;
|
|
dataGridViewPermittedProcesses.Rows[SEBSettings.permittedProcessIndex].Cells[IntColumnProcessActive].Value = active.ToString();
|
|
ignoreCellEventPermittedProcessesActive = false;
|
|
}
|
|
|
|
|
|
private void checkBoxPermittedProcessAutostart_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyAutostart] = checkBoxPermittedProcessAutostart.Checked;
|
|
checkBoxPermittedProcessIconInTaskbar.Enabled = !checkBoxPermittedProcessAutohide.Checked | checkBoxPermittedProcessAutostart.Checked;
|
|
}
|
|
|
|
private void checkBoxPermittedProcessIconInTaskbar_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyIconInTaskbar] = checkBoxPermittedProcessIconInTaskbar.Checked;
|
|
}
|
|
|
|
private void checkBoxPermittedProcessAutohide_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyRunInBackground] = checkBoxPermittedProcessAutohide.Checked;
|
|
checkBoxPermittedProcessIconInTaskbar.Enabled = !checkBoxPermittedProcessAutohide.Checked | checkBoxPermittedProcessAutostart.Checked;
|
|
}
|
|
|
|
private void checkBoxPermittedProcessAllowUser_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyAllowUser] = checkBoxPermittedProcessAllowUser.Checked;
|
|
}
|
|
|
|
private void checkBoxPermittedProcessStrongKill_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyStrongKill] = checkBoxPermittedProcessStrongKill.Checked;
|
|
}
|
|
|
|
|
|
private void listBoxPermittedProcessOS_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
// Prevent double events from switching to false process index
|
|
if (ignoreWidgetEventPermittedProcessesOS == true) return;
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyOS] = listBoxPermittedProcessOS.SelectedIndex;
|
|
Int32 os = listBoxPermittedProcessOS.SelectedIndex;
|
|
ignoreCellEventPermittedProcessesOS = true;
|
|
dataGridViewPermittedProcesses.Rows[SEBSettings.permittedProcessIndex].Cells[IntColumnProcessOS].Value = StringOS[os];
|
|
ignoreCellEventPermittedProcessesOS = false;
|
|
}
|
|
|
|
|
|
private void textBoxPermittedProcessTitle_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Prevent double events from switching to false process index
|
|
if (ignoreWidgetEventPermittedProcessesTitle == true) return;
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyTitle] = textBoxPermittedProcessTitle.Text;
|
|
String title = textBoxPermittedProcessTitle.Text;
|
|
ignoreCellEventPermittedProcessesTitle = true;
|
|
dataGridViewPermittedProcesses.Rows[SEBSettings.permittedProcessIndex].Cells[IntColumnProcessTitle].Value = title;
|
|
ignoreCellEventPermittedProcessesTitle = false;
|
|
}
|
|
|
|
|
|
private void textBoxPermittedProcessDescription_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyDescription] = textBoxPermittedProcessDescription.Text;
|
|
}
|
|
|
|
|
|
private void textBoxPermittedProcessExecutable_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Prevent double events from switching to false process index
|
|
if (ignoreWidgetEventPermittedProcessesExecutable == true) return;
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyExecutable] = textBoxPermittedProcessExecutable.Text;
|
|
String executable = textBoxPermittedProcessExecutable.Text;
|
|
ignoreCellEventPermittedProcessesExecutable = true;
|
|
dataGridViewPermittedProcesses.Rows[SEBSettings.permittedProcessIndex].Cells[IntColumnProcessExecutable].Value = executable;
|
|
ignoreCellEventPermittedProcessesExecutable = false;
|
|
}
|
|
|
|
private void textBoxPermittedProcessOriginalName_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyOriginalName] = textBoxPermittedProcessOriginalName.Text;
|
|
}
|
|
|
|
private void textBoxPermittedProcessPath_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyPath] = textBoxPermittedProcessPath.Text;
|
|
}
|
|
|
|
private void textBoxPermittedProcessIdentifier_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyIdentifier] = textBoxPermittedProcessIdentifier.Text;
|
|
}
|
|
|
|
private void textBoxPermittedProcessExecutables_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeyWindowHandlingProcess] = textBoxPermittedProcessExecutables.Text;
|
|
}
|
|
|
|
private void buttonPermittedProcessCodeSignature_Click(object sender, EventArgs args)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
|
|
|
|
}
|
|
|
|
|
|
private void dataGridViewPermittedProcessArguments_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
// CAUTION:
|
|
// If a row was previously selected and the user clicks onto another row,
|
|
// the SelectionChanged() event is fired TWICE!!!
|
|
// The first time, it is only for UNselecting the old row,
|
|
// so the SelectedRows.Count is ZERO, so ignore this event handler!
|
|
// The second time, SelectedRows.Count is ONE.
|
|
|
|
if (dataGridViewPermittedProcessArguments.SelectedRows.Count != 1) return;
|
|
|
|
// Get the argument data of the selected argument
|
|
SEBSettings.permittedArgumentIndex = dataGridViewPermittedProcessArguments.SelectedRows[0].Index;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedArgumentList = (ListObj) SEBSettings.permittedProcessData[SEBSettings.KeyArguments];
|
|
SEBSettings.permittedArgumentData = (DictObj) SEBSettings.permittedArgumentList[SEBSettings.permittedArgumentIndex];
|
|
}
|
|
|
|
|
|
private void dataGridViewPermittedProcessArguments_CurrentCellDirtyStateChanged(object sender, EventArgs e)
|
|
{
|
|
// When a CheckBox/ListBox/TextBox entry of a DataGridView table cell is edited,
|
|
// immediately call the CellValueChanged() event,
|
|
// which will update the SelectedProcess data and widgets.
|
|
if (dataGridViewPermittedProcessArguments.IsCurrentCellDirty)
|
|
dataGridViewPermittedProcessArguments.CommitEdit(DataGridViewDataErrorContexts.Commit);
|
|
}
|
|
|
|
|
|
private void dataGridViewPermittedProcessArguments_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
// Get the current cell where the user has changed a value
|
|
int row = dataGridViewPermittedProcessArguments.CurrentCellAddress.Y;
|
|
int column = dataGridViewPermittedProcessArguments.CurrentCellAddress.X;
|
|
|
|
// At the beginning, row = -1 and column = -1, so skip this event
|
|
if (row < 0) return;
|
|
if (column < 0) return;
|
|
|
|
// Get the changed value of the current cell
|
|
object value = dataGridViewPermittedProcessArguments.CurrentCell.EditedFormattedValue;
|
|
|
|
// Get the argument data of the argument belonging to the cell (row)
|
|
SEBSettings.permittedArgumentIndex = row;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedArgumentList = (ListObj) SEBSettings.permittedProcessData[SEBSettings.KeyArguments];
|
|
SEBSettings.permittedArgumentData = (DictObj) SEBSettings.permittedArgumentList[SEBSettings.permittedArgumentIndex];
|
|
|
|
// Update the argument data belonging to the current cell
|
|
if (column == IntColumnProcessActive) SEBSettings.permittedArgumentData[SEBSettings.KeyActive] = (Boolean) value;
|
|
if (column == IntColumnProcessArgument) SEBSettings.permittedArgumentData[SEBSettings.KeyArgument] = (String) value;
|
|
}
|
|
|
|
|
|
private void buttonPermittedProcessAddArgument_Click(object sender, EventArgs e)
|
|
{
|
|
// Get the permitted argument list
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedArgumentList = (ListObj) SEBSettings.permittedProcessData[SEBSettings.KeyArguments];
|
|
|
|
if (SEBSettings.permittedArgumentList.Count > 0)
|
|
{
|
|
if (dataGridViewPermittedProcessArguments.SelectedRows.Count != 1) return;
|
|
//SEBSettings.permittedArgumentIndex = dataGridViewPermittedProcessArguments.SelectedRows[0].Index;
|
|
SEBSettings.permittedArgumentIndex = SEBSettings.permittedArgumentList.Count;
|
|
}
|
|
else
|
|
{
|
|
// If argument list was empty before, enable it
|
|
SEBSettings.permittedArgumentIndex = 0;
|
|
dataGridViewPermittedProcessArguments.Enabled = true;
|
|
}
|
|
|
|
// Create new argument dataset containing default values
|
|
DictObj argumentData = new DictObj();
|
|
|
|
argumentData[SEBSettings.KeyActive] = true;
|
|
argumentData[SEBSettings.KeyArgument] = "";
|
|
|
|
// Insert new argument into argument list at position SEBSettings.permittedArgumentIndex
|
|
SEBSettings.permittedArgumentList.Insert(SEBSettings.permittedArgumentIndex, argumentData);
|
|
dataGridViewPermittedProcessArguments.Rows.Insert(SEBSettings.permittedArgumentIndex, true, "");
|
|
dataGridViewPermittedProcessArguments.Rows[SEBSettings.permittedArgumentIndex].Selected = true;
|
|
}
|
|
|
|
|
|
private void buttonPermittedProcessRemoveArgument_Click(object sender, EventArgs e)
|
|
{
|
|
if (dataGridViewPermittedProcessArguments.SelectedRows.Count != 1) return;
|
|
|
|
// Get the permitted argument list
|
|
SEBSettings.permittedArgumentIndex = dataGridViewPermittedProcessArguments.SelectedRows[0].Index;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedArgumentList = (ListObj) SEBSettings.permittedProcessData[SEBSettings.KeyArguments];
|
|
|
|
// Delete argument from argument list at position SEBSettings.permittedArgumentIndex
|
|
SEBSettings.permittedArgumentList.RemoveAt(SEBSettings.permittedArgumentIndex);
|
|
dataGridViewPermittedProcessArguments.Rows.RemoveAt(SEBSettings.permittedArgumentIndex);
|
|
|
|
if (SEBSettings.permittedArgumentIndex == SEBSettings.permittedArgumentList.Count)
|
|
SEBSettings.permittedArgumentIndex--;
|
|
|
|
if (SEBSettings.permittedArgumentList.Count > 0)
|
|
{
|
|
dataGridViewPermittedProcessArguments.Rows[SEBSettings.permittedArgumentIndex].Selected = true;
|
|
}
|
|
else
|
|
{
|
|
// If argument list is now empty, disable it
|
|
SEBSettings.permittedArgumentIndex = -1;
|
|
//SEBSettings.permittedArgumentList.Clear();
|
|
//SEBSettings.permittedArgumentData.Clear();
|
|
dataGridViewPermittedProcessArguments.Enabled = false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// *******************************************
|
|
// Group "Applications - Prohibited Processes"
|
|
// *******************************************
|
|
private void LoadAndUpdateProhibitedSelectedProcessGroup(int selectedProcessIndex)
|
|
{
|
|
// Get the process data of the selected process
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[selectedProcessIndex];
|
|
|
|
// Beware double events:
|
|
// Update the widgets in "Selected Process" group,
|
|
// but prevent the following "widget changed" event from firing the "cell changed" event once more!
|
|
ignoreWidgetEventProhibitedProcessesActive = true;
|
|
ignoreWidgetEventProhibitedProcessesOS = true;
|
|
ignoreWidgetEventProhibitedProcessesExecutable = true;
|
|
ignoreWidgetEventProhibitedProcessesDescription = true;
|
|
|
|
// Update the widgets in the "Selected Process" group
|
|
checkBoxProhibitedProcessActive.Checked = (Boolean) SEBSettings.prohibitedProcessData[SEBSettings.KeyActive];
|
|
checkBoxProhibitedProcessCurrentUser.Checked = (Boolean) SEBSettings.prohibitedProcessData[SEBSettings.KeyCurrentUser];
|
|
checkBoxProhibitedProcessStrongKill.Checked = (Boolean) SEBSettings.prohibitedProcessData[SEBSettings.KeyStrongKill];
|
|
listBoxProhibitedProcessOS.SelectedIndex = (Int32) SEBSettings.prohibitedProcessData[SEBSettings.KeyOS];
|
|
textBoxProhibitedProcessExecutable.Text = (String) SEBSettings.prohibitedProcessData[SEBSettings.KeyExecutable];
|
|
textBoxProhibitedProcessOriginalName.Text = (String) SEBSettings.prohibitedProcessData[SEBSettings.KeyOriginalName];
|
|
textBoxProhibitedProcessDescription.Text = (String) SEBSettings.prohibitedProcessData[SEBSettings.KeyDescription];
|
|
textBoxProhibitedProcessIdentifier.Text = (String) SEBSettings.prohibitedProcessData[SEBSettings.KeyIdentifier];
|
|
textBoxProhibitedProcessUser.Text = (String) SEBSettings.prohibitedProcessData[SEBSettings.KeyUser];
|
|
|
|
// Reset the ignore widget event flags
|
|
ignoreWidgetEventProhibitedProcessesActive = false;
|
|
ignoreWidgetEventProhibitedProcessesOS = false;
|
|
ignoreWidgetEventProhibitedProcessesExecutable = false;
|
|
ignoreWidgetEventProhibitedProcessesDescription = false;
|
|
}
|
|
|
|
|
|
private void ClearProhibitedSelectedProcessGroup()
|
|
{
|
|
// Beware double events:
|
|
// Update the widgets in "Selected Process" group,
|
|
// but prevent the following "widget changed" event from firing the "cell changed" event once more!
|
|
ignoreWidgetEventProhibitedProcessesActive = true;
|
|
ignoreWidgetEventProhibitedProcessesOS = true;
|
|
ignoreWidgetEventProhibitedProcessesExecutable = true;
|
|
ignoreWidgetEventProhibitedProcessesDescription = true;
|
|
|
|
// Clear the widgets in the "Selected Process" group
|
|
checkBoxProhibitedProcessActive.Checked = true;
|
|
checkBoxProhibitedProcessCurrentUser.Checked = true;
|
|
checkBoxProhibitedProcessStrongKill.Checked = false;
|
|
listBoxProhibitedProcessOS.SelectedIndex = IntWin;
|
|
textBoxProhibitedProcessExecutable.Text = "";
|
|
textBoxProhibitedProcessOriginalName.Text = "";
|
|
textBoxProhibitedProcessDescription.Text = "";
|
|
textBoxProhibitedProcessIdentifier.Text = "";
|
|
textBoxProhibitedProcessUser.Text = "";
|
|
|
|
// Reset the ignore widget event flags
|
|
ignoreWidgetEventProhibitedProcessesActive = false;
|
|
ignoreWidgetEventProhibitedProcessesOS = false;
|
|
ignoreWidgetEventProhibitedProcessesExecutable = false;
|
|
ignoreWidgetEventProhibitedProcessesDescription = false;
|
|
}
|
|
|
|
|
|
private void dataGridViewProhibitedProcesses_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
// CAUTION:
|
|
// If a row was previously selected and the user clicks onto another row,
|
|
// the SelectionChanged() event is fired TWICE!!!
|
|
// The first time, it is only for UNselecting the old row,
|
|
// so the SelectedRows.Count is ZERO, so ignore this event handler!
|
|
// The second time, SelectedRows.Count is ONE.
|
|
// Now you can set the widgets in the "Selected Process" groupBox.
|
|
|
|
if (dataGridViewProhibitedProcesses.SelectedRows.Count != 1) return;
|
|
SEBSettings.prohibitedProcessIndex = dataGridViewProhibitedProcesses.SelectedRows[0].Index;
|
|
|
|
// The process list should contain at least one element here:
|
|
// SEBSettings.prohibitedProcessList.Count > 0
|
|
// SEBSettings.prohibitedProcessIndex >= 0
|
|
LoadAndUpdateProhibitedSelectedProcessGroup(SEBSettings.prohibitedProcessIndex);
|
|
}
|
|
|
|
|
|
private void dataGridViewProhibitedProcesses_CurrentCellDirtyStateChanged(object sender, EventArgs e)
|
|
{
|
|
// When a CheckBox/ListBox/TextBox entry of a DataGridView table cell is edited,
|
|
// immediately call the CellValueChanged() event,
|
|
// which will update the SelectedProcess data and widgets.
|
|
if (dataGridViewProhibitedProcesses.IsCurrentCellDirty)
|
|
dataGridViewProhibitedProcesses.CommitEdit(DataGridViewDataErrorContexts.Commit);
|
|
}
|
|
|
|
|
|
private void dataGridViewProhibitedProcesses_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
|
|
// Prevent double events from switching to false process index
|
|
if (ignoreCellEventProhibitedProcessesActive == true) return;
|
|
if (ignoreCellEventProhibitedProcessesOS == true) return;
|
|
if (ignoreCellEventProhibitedProcessesExecutable == true) return;
|
|
if (ignoreCellEventProhibitedProcessesDescription == true) return;
|
|
|
|
// Get the current cell where the user has changed a value
|
|
int row = dataGridViewProhibitedProcesses.CurrentCellAddress.Y;
|
|
int column = dataGridViewProhibitedProcesses.CurrentCellAddress.X;
|
|
|
|
// At the beginning, row = -1 and column = -1, so skip this event
|
|
if (row < 0) return;
|
|
if (column < 0) return;
|
|
|
|
// Get the changed value of the current cell
|
|
object value = dataGridViewProhibitedProcesses.CurrentCell.EditedFormattedValue;
|
|
|
|
// Convert the selected "OS" ListBox entry from String to Integer
|
|
if (column == IntColumnProcessOS)
|
|
{
|
|
if ((String) value == StringOSX) value = IntOSX;
|
|
else if ((String) value == StringWin) value = IntWin;
|
|
}
|
|
|
|
// Get the process data of the process belonging to the current row
|
|
SEBSettings.prohibitedProcessIndex = row;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[SEBSettings.prohibitedProcessIndex];
|
|
|
|
// Update the process data belonging to the current cell
|
|
if (column == IntColumnProcessActive) SEBSettings.prohibitedProcessData[SEBSettings.KeyActive] = (Boolean) value;
|
|
if (column == IntColumnProcessOS) SEBSettings.prohibitedProcessData[SEBSettings.KeyOS] = (Int32) value;
|
|
if (column == IntColumnProcessExecutable) SEBSettings.prohibitedProcessData[SEBSettings.KeyExecutable] = (String) value;
|
|
if (column == IntColumnProcessDescription) SEBSettings.prohibitedProcessData[SEBSettings.KeyDescription] = (String) value;
|
|
|
|
// Beware double events:
|
|
// when a cell has been edited, update its corresponding widget in "Selected Process" group,
|
|
// but prevent the following "widget changed" event from firing the "cell changed" event once more!
|
|
if (column == IntColumnProcessActive) ignoreWidgetEventProhibitedProcessesActive = true;
|
|
if (column == IntColumnProcessOS) ignoreWidgetEventProhibitedProcessesOS = true;
|
|
if (column == IntColumnProcessExecutable) ignoreWidgetEventProhibitedProcessesExecutable = true;
|
|
if (column == IntColumnProcessDescription) ignoreWidgetEventProhibitedProcessesDescription = true;
|
|
|
|
// In "Selected Process" group: update the widget belonging to the current cell
|
|
// (this will fire the corresponding "widget changed" event).
|
|
if (column == IntColumnProcessActive) checkBoxProhibitedProcessActive.Checked = (Boolean) value;
|
|
if (column == IntColumnProcessOS) listBoxProhibitedProcessOS.SelectedIndex = (Int32) value;
|
|
if (column == IntColumnProcessExecutable) textBoxProhibitedProcessExecutable.Text = (String) value;
|
|
if (column == IntColumnProcessDescription) textBoxProhibitedProcessDescription.Text = (String) value;
|
|
|
|
// Reset the ignore widget event flags
|
|
if (column == IntColumnProcessActive) ignoreWidgetEventProhibitedProcessesActive = false;
|
|
if (column == IntColumnProcessOS) ignoreWidgetEventProhibitedProcessesOS = false;
|
|
if (column == IntColumnProcessExecutable) ignoreWidgetEventProhibitedProcessesExecutable = false;
|
|
if (column == IntColumnProcessDescription) ignoreWidgetEventProhibitedProcessesDescription = false;
|
|
}
|
|
|
|
|
|
private void buttonAddProhibitedProcess_Click(object sender, EventArgs e)
|
|
{
|
|
// Get the process list
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
|
|
if (SEBSettings.prohibitedProcessList.Count > 0)
|
|
{
|
|
if (dataGridViewProhibitedProcesses.SelectedRows.Count != 1) return;
|
|
//SEBSettings.prohibitedProcessIndex = dataGridViewProhibitedProcesses.SelectedRows[0].Index;
|
|
SEBSettings.prohibitedProcessIndex = SEBSettings.prohibitedProcessList.Count;
|
|
}
|
|
else
|
|
{
|
|
// If process list was empty before, enable it
|
|
SEBSettings.prohibitedProcessIndex = 0;
|
|
dataGridViewProhibitedProcesses.Enabled = true;
|
|
groupBoxProhibitedProcess.Enabled = true;
|
|
}
|
|
|
|
// Create new process dataset containing default values
|
|
DictObj processData = new DictObj();
|
|
|
|
processData[SEBSettings.KeyActive] = true;
|
|
processData[SEBSettings.KeyCurrentUser] = true;
|
|
processData[SEBSettings.KeyStrongKill] = false;
|
|
processData[SEBSettings.KeyOS] = IntWin;
|
|
processData[SEBSettings.KeyExecutable] = "";
|
|
processData[SEBSettings.KeyOriginalName] = "";
|
|
processData[SEBSettings.KeyDescription] = "";
|
|
processData[SEBSettings.KeyIdentifier] = "";
|
|
processData[SEBSettings.KeyUser] = "";
|
|
|
|
// Insert new process into process list at position index
|
|
SEBSettings.prohibitedProcessList.Insert(SEBSettings.prohibitedProcessIndex, processData);
|
|
dataGridViewProhibitedProcesses.Rows.Insert(SEBSettings.prohibitedProcessIndex, true, StringOS[IntWin], "", "");
|
|
dataGridViewProhibitedProcesses.Rows[SEBSettings.prohibitedProcessIndex].Selected = true;
|
|
}
|
|
|
|
|
|
private void buttonRemoveProhibitedProcess_Click(object sender, EventArgs e)
|
|
{
|
|
if (dataGridViewProhibitedProcesses.SelectedRows.Count != 1) return;
|
|
|
|
// Clear the widgets in the "Selected Process" group
|
|
ClearProhibitedSelectedProcessGroup();
|
|
|
|
// Delete process from process list at position index
|
|
SEBSettings.prohibitedProcessIndex = dataGridViewProhibitedProcesses.SelectedRows[0].Index;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessList.RemoveAt(SEBSettings.prohibitedProcessIndex);
|
|
dataGridViewProhibitedProcesses.Rows.RemoveAt(SEBSettings.prohibitedProcessIndex);
|
|
|
|
if (SEBSettings.prohibitedProcessIndex == SEBSettings.prohibitedProcessList.Count)
|
|
SEBSettings.prohibitedProcessIndex--;
|
|
|
|
if (SEBSettings.prohibitedProcessList.Count > 0)
|
|
{
|
|
dataGridViewProhibitedProcesses.Rows[SEBSettings.prohibitedProcessIndex].Selected = true;
|
|
}
|
|
else
|
|
{
|
|
// If process list is now empty, disable it
|
|
SEBSettings.prohibitedProcessIndex = -1;
|
|
dataGridViewProhibitedProcesses.Enabled = false;
|
|
groupBoxProhibitedProcess.Enabled = false;
|
|
}
|
|
}
|
|
|
|
|
|
private void buttonChooseProhibitedExecutable_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void buttonChooseProhibitedProcess_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
private void checkBoxProhibitedProcessActive_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
// Prevent double events from switching to false process index
|
|
if (ignoreWidgetEventProhibitedProcessesActive == true) return;
|
|
if (SEBSettings.prohibitedProcessIndex < 0) return;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[SEBSettings.prohibitedProcessIndex];
|
|
SEBSettings.prohibitedProcessData[SEBSettings.KeyActive] = checkBoxProhibitedProcessActive.Checked;
|
|
Boolean active = checkBoxProhibitedProcessActive.Checked;
|
|
ignoreCellEventProhibitedProcessesActive = true;
|
|
dataGridViewProhibitedProcesses.Rows[SEBSettings.prohibitedProcessIndex].Cells[IntColumnProcessActive].Value = active.ToString();
|
|
ignoreCellEventProhibitedProcessesActive = false;
|
|
}
|
|
|
|
|
|
private void checkBoxProhibitedProcessCurrentUser_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.prohibitedProcessIndex < 0) return;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[SEBSettings.prohibitedProcessIndex];
|
|
SEBSettings.prohibitedProcessData[SEBSettings.KeyCurrentUser] = checkBoxProhibitedProcessCurrentUser.Checked;
|
|
}
|
|
|
|
private void checkBoxProhibitedProcessStrongKill_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.prohibitedProcessIndex < 0) return;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[SEBSettings.prohibitedProcessIndex];
|
|
SEBSettings.prohibitedProcessData[SEBSettings.KeyStrongKill] = checkBoxProhibitedProcessStrongKill.Checked;
|
|
}
|
|
|
|
|
|
private void listBoxProhibitedProcessOS_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
// Prevent double events from switching to false process index
|
|
if (ignoreWidgetEventProhibitedProcessesOS == true) return;
|
|
if (SEBSettings.prohibitedProcessIndex < 0) return;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[SEBSettings.prohibitedProcessIndex];
|
|
SEBSettings.prohibitedProcessData[SEBSettings.KeyOS] = listBoxProhibitedProcessOS.SelectedIndex;
|
|
Int32 os = listBoxProhibitedProcessOS.SelectedIndex;
|
|
ignoreCellEventProhibitedProcessesOS = true;
|
|
dataGridViewProhibitedProcesses.Rows[SEBSettings.prohibitedProcessIndex].Cells[IntColumnProcessOS].Value = StringOS[os];
|
|
ignoreCellEventProhibitedProcessesOS = false;
|
|
}
|
|
|
|
|
|
private void textBoxProhibitedProcessExecutable_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Prevent double events from switching to false process index
|
|
if (ignoreWidgetEventProhibitedProcessesExecutable == true) return;
|
|
if (SEBSettings.prohibitedProcessIndex < 0) return;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[SEBSettings.prohibitedProcessIndex];
|
|
SEBSettings.prohibitedProcessData[SEBSettings.KeyExecutable] = textBoxProhibitedProcessExecutable.Text;
|
|
String executable = textBoxProhibitedProcessExecutable.Text;
|
|
ignoreCellEventProhibitedProcessesExecutable = true;
|
|
dataGridViewProhibitedProcesses.Rows[SEBSettings.prohibitedProcessIndex].Cells[IntColumnProcessExecutable].Value = executable;
|
|
ignoreCellEventProhibitedProcessesExecutable = false;
|
|
}
|
|
|
|
private void textBoxProhibitedProcessOriginalName_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.prohibitedProcessIndex < 0) return;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[SEBSettings.prohibitedProcessIndex];
|
|
SEBSettings.prohibitedProcessData[SEBSettings.KeyOriginalName] = textBoxProhibitedProcessOriginalName.Text;
|
|
}
|
|
|
|
private void textBoxProhibitedProcessDescription_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Prevent double events from switching to false process index
|
|
if (ignoreWidgetEventProhibitedProcessesDescription == true) return;
|
|
if (SEBSettings.prohibitedProcessIndex < 0) return;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[SEBSettings.prohibitedProcessIndex];
|
|
SEBSettings.prohibitedProcessData[SEBSettings.KeyDescription] = textBoxProhibitedProcessDescription.Text;
|
|
String description = textBoxProhibitedProcessDescription.Text;
|
|
ignoreCellEventProhibitedProcessesDescription = true;
|
|
dataGridViewProhibitedProcesses.Rows[SEBSettings.prohibitedProcessIndex].Cells[IntColumnProcessDescription].Value = description;
|
|
ignoreCellEventProhibitedProcessesDescription = false;
|
|
}
|
|
|
|
|
|
private void textBoxProhibitedProcessIdentifier_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.prohibitedProcessIndex < 0) return;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[SEBSettings.prohibitedProcessIndex];
|
|
SEBSettings.prohibitedProcessData[SEBSettings.KeyIdentifier] = textBoxProhibitedProcessIdentifier.Text;
|
|
}
|
|
|
|
private void textBoxProhibitedProcessUser_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.prohibitedProcessIndex < 0) return;
|
|
SEBSettings.prohibitedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyProhibitedProcesses];
|
|
SEBSettings.prohibitedProcessData = (DictObj) SEBSettings.prohibitedProcessList[SEBSettings.prohibitedProcessIndex];
|
|
SEBSettings.prohibitedProcessData[SEBSettings.KeyUser] = textBoxProhibitedProcessUser.Text;
|
|
}
|
|
|
|
private void buttonProhibitedProcessCodeSignature_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void checkBoxEnableURLFilter_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyURLFilterEnable] = checkBoxEnableURLFilter.Checked;
|
|
checkBoxEnableURLContentFilter.Enabled = checkBoxEnableURLFilter.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableURLContentFilter_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyURLFilterEnableContentFilter] = checkBoxEnableURLContentFilter.Checked;
|
|
}
|
|
|
|
// ******************************
|
|
// Group "Network - Certificates"
|
|
// ******************************
|
|
private void comboBoxChooseSSLServerCertificate_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
var cert = (X509Certificate2) certificateSSLReferences[comboBoxChooseSSLServerCertificate.SelectedIndex];
|
|
|
|
SEBSettings.embeddedCertificateList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyEmbeddedCertificates];
|
|
|
|
SEBSettings.embeddedCertificateIndex = SEBSettings.embeddedCertificateList.Count;
|
|
|
|
DictObj certData = new DictObj();
|
|
|
|
String stringSSLCertificateType;
|
|
|
|
certData[SEBSettings.KeyCertificateDataBase64] = exportToPEM(cert);
|
|
if (checkBoxDebugCertificate.Checked)
|
|
{
|
|
certData[SEBSettings.KeyType] = IntSSLDebugCertificate;
|
|
stringSSLCertificateType = StringSSLDebugCertificate;
|
|
checkBoxDebugCertificate.Checked = false;
|
|
}
|
|
else
|
|
{
|
|
// We also save the certificate data into the deprecated subkey certificateDataWin (for downwards compatibility to < SEB 2.2)
|
|
certData[SEBSettings.KeyCertificateDataWin] = exportToPEM(cert);
|
|
certData[SEBSettings.KeyType] = IntSSLClientCertificate;
|
|
stringSSLCertificateType = StringSSLServerCertificate;
|
|
}
|
|
certData[SEBSettings.KeyName] = comboBoxChooseSSLServerCertificate.SelectedItem;
|
|
|
|
SEBSettings.embeddedCertificateList.Insert(SEBSettings.embeddedCertificateIndex, certData);
|
|
|
|
dataGridViewEmbeddedCertificates.Rows.Insert(SEBSettings.embeddedCertificateIndex, stringSSLCertificateType, comboBoxChooseSSLServerCertificate.SelectedItem);
|
|
dataGridViewEmbeddedCertificates.Rows[SEBSettings.embeddedCertificateIndex].Selected = true;
|
|
|
|
comboBoxChooseSSLServerCertificate.BeginInvoke((Action) (() =>
|
|
{
|
|
comboBoxChooseSSLServerCertificate.Text = SEBUIStrings.ChooseEmbeddedCert;
|
|
}));
|
|
|
|
dataGridViewEmbeddedCertificates.Enabled = true;
|
|
}
|
|
|
|
private void comboBoxChooseCACertificate_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
var cert = (X509Certificate2) certificateSSLReferences[comboBoxChooseCACertificate.SelectedIndex];
|
|
|
|
SEBSettings.embeddedCertificateList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyEmbeddedCertificates];
|
|
|
|
SEBSettings.embeddedCertificateIndex = SEBSettings.embeddedCertificateList.Count;
|
|
|
|
DictObj certData = new DictObj();
|
|
|
|
certData[SEBSettings.KeyCertificateDataBase64] = exportToPEM(cert);
|
|
certData[SEBSettings.KeyType] = IntCACertificate;
|
|
certData[SEBSettings.KeyName] = comboBoxChooseCACertificate.SelectedItem;
|
|
|
|
SEBSettings.embeddedCertificateList.Insert(SEBSettings.embeddedCertificateIndex, certData);
|
|
|
|
dataGridViewEmbeddedCertificates.Rows.Insert(SEBSettings.embeddedCertificateIndex, StringCACertificate, comboBoxChooseCACertificate.SelectedItem);
|
|
dataGridViewEmbeddedCertificates.Rows[SEBSettings.embeddedCertificateIndex].Selected = true;
|
|
|
|
comboBoxChooseCACertificate.BeginInvoke((Action) (() =>
|
|
{
|
|
comboBoxChooseCACertificate.Text = SEBUIStrings.ChooseEmbeddedCert;
|
|
}));
|
|
|
|
dataGridViewEmbeddedCertificates.Enabled = true;
|
|
}
|
|
|
|
private void checkBoxPinEmbeddedCertificates_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyPinEmbeddedCertificates] = checkBoxPinEmbeddedCertificates.Checked;
|
|
}
|
|
|
|
private void comboBoxChooseIdentityToEmbed_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
var cert = (X509Certificate2) certificateReferences[comboBoxChooseIdentityToEmbed.SelectedIndex];
|
|
|
|
SEBSettings.embeddedCertificateList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyEmbeddedCertificates];
|
|
|
|
SEBSettings.embeddedCertificateIndex = SEBSettings.embeddedCertificateList.Count;
|
|
|
|
DictObj identityToEmbedd = new DictObj();
|
|
|
|
byte[] certData = new byte[0];
|
|
|
|
try
|
|
{
|
|
certData = cert.Export(X509ContentType.Pkcs12, SEBClientInfo.DEFAULT_KEY);
|
|
}
|
|
|
|
catch (Exception certExportException)
|
|
{
|
|
Logger.AddError(string.Format("The identity (certificate with private key) {0} could not be exported", comboBoxChooseIdentityToEmbed.SelectedItem), null, certExportException, certExportException.Message);
|
|
|
|
MessageBox.Show(SEBUIStrings.identityExportError, string.Format(SEBUIStrings.identityExportErrorMessage, comboBoxChooseIdentityToEmbed.SelectedItem), MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
}
|
|
|
|
if (certData.Length > 0)
|
|
{
|
|
identityToEmbedd[SEBSettings.KeyCertificateData] = certData;
|
|
//certData[SEBSettings.KeyCertificateDataWin] = exportToPEM(cert);
|
|
identityToEmbedd[SEBSettings.KeyType] = 1;
|
|
identityToEmbedd[SEBSettings.KeyName] = comboBoxChooseIdentityToEmbed.SelectedItem;
|
|
|
|
SEBSettings.embeddedCertificateList.Insert(SEBSettings.embeddedCertificateIndex, identityToEmbedd);
|
|
|
|
dataGridViewEmbeddedCertificates.Rows.Insert(SEBSettings.embeddedCertificateIndex, "Identity", comboBoxChooseIdentityToEmbed.SelectedItem);
|
|
dataGridViewEmbeddedCertificates.Rows[SEBSettings.embeddedCertificateIndex].Selected = true;
|
|
}
|
|
|
|
comboBoxChooseIdentityToEmbed.BeginInvoke((Action) (() =>
|
|
{
|
|
comboBoxChooseIdentityToEmbed.Text = SEBUIStrings.ChooseEmbeddedCert;
|
|
}));
|
|
|
|
dataGridViewEmbeddedCertificates.Enabled = true;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Export a certificate to a PEM format string
|
|
/// </summary>
|
|
/// <param name="cert">The certificate to export</param>
|
|
/// <returns>A PEM encoded string</returns>
|
|
private string exportToPEM(X509Certificate cert)
|
|
{
|
|
string certToBase64String = Convert.ToBase64String(cert.Export(X509ContentType.Cert));
|
|
//certToBase64String = certToBase64String.Replace("/", @"\/");
|
|
//certToBase64String = certToBase64String.Substring(0, certToBase64String.Length - 1);
|
|
|
|
StringBuilder builder = new StringBuilder();
|
|
|
|
//builder.Append("-----BEGIN CERTIFICATE-----");
|
|
builder.Append(certToBase64String); //Convert.ToBase64String(cert.Export(X509ContentType.Cert))); //, Base64FormattingOptions.InsertLineBreaks));
|
|
//builder.Append("-----END CERTIFICATE-----");
|
|
|
|
return builder.ToString();
|
|
}
|
|
|
|
private void dataGridViewEmbeddedCertificates_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
// CAUTION:
|
|
// If a row was previously selected and the user clicks onto another row,
|
|
// the SelectionChanged() event is fired TWICE!!!
|
|
// The first time, it is only for UNselecting the old row,
|
|
// so the SelectedRows.Count is ZERO, so ignore this event handler!
|
|
// The second time, SelectedRows.Count is ONE.
|
|
// Now you can set the widgets in the "Selected Process" groupBox.
|
|
|
|
if (dataGridViewEmbeddedCertificates.SelectedRows.Count != 1) return;
|
|
SEBSettings.embeddedCertificateIndex = dataGridViewEmbeddedCertificates.SelectedRows[0].Index;
|
|
}
|
|
|
|
|
|
private void dataGridViewEmbeddedCertificates_CurrentCellDirtyStateChanged(object sender, EventArgs e)
|
|
{
|
|
// When a CheckBox/ListBox/TextBox entry of a DataGridView table cell is edited,
|
|
// immediately call the CellValueChanged() event.
|
|
if (dataGridViewEmbeddedCertificates.IsCurrentCellDirty)
|
|
dataGridViewEmbeddedCertificates.CommitEdit(DataGridViewDataErrorContexts.Commit);
|
|
}
|
|
|
|
|
|
private void dataGridViewEmbeddedCertificates_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
// Get the current cell where the user has changed a value
|
|
int row = dataGridViewEmbeddedCertificates.CurrentCellAddress.Y;
|
|
int column = dataGridViewEmbeddedCertificates.CurrentCellAddress.X;
|
|
|
|
// At the beginning, row = -1 and column = -1, so skip this event
|
|
if (row < 0) return;
|
|
if (column < 0) return;
|
|
|
|
// Get the changed value of the current cell
|
|
object value = dataGridViewEmbeddedCertificates.CurrentCell.EditedFormattedValue;
|
|
|
|
// Convert the selected Type ListBox entry from String to Integer
|
|
if (column == IntColumnCertificateType)
|
|
{
|
|
if ((String) value == StringSSLServerCertificate) value = IntSSLClientCertificate;
|
|
else if ((String) value == StringIdentity) value = IntIdentity;
|
|
else if ((String) value == StringCACertificate) value = IntCACertificate;
|
|
else if ((String) value == StringSSLDebugCertificate) value = IntSSLDebugCertificate;
|
|
}
|
|
|
|
// Get the data of the certificate belonging to the cell (row)
|
|
SEBSettings.embeddedCertificateIndex = row;
|
|
SEBSettings.embeddedCertificateList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyEmbeddedCertificates];
|
|
SEBSettings.embeddedCertificateData = (DictObj) SEBSettings.embeddedCertificateList[SEBSettings.embeddedCertificateIndex];
|
|
|
|
// Update the certificate data belonging to the current cell
|
|
if (column == IntColumnCertificateType) SEBSettings.embeddedCertificateData[SEBSettings.KeyType] = (Int32) value;
|
|
if (column == IntColumnCertificateName) SEBSettings.embeddedCertificateData[SEBSettings.KeyName] = (String) value;
|
|
}
|
|
|
|
|
|
private void buttonRemoveEmbeddedCertificate_Click(object sender, EventArgs e)
|
|
{
|
|
if (dataGridViewEmbeddedCertificates.SelectedRows.Count != 1) return;
|
|
SEBSettings.embeddedCertificateIndex = dataGridViewEmbeddedCertificates.SelectedRows[0].Index;
|
|
|
|
// Delete certificate from certificate list at position index
|
|
SEBSettings.embeddedCertificateList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyEmbeddedCertificates];
|
|
SEBSettings.embeddedCertificateList.RemoveAt(SEBSettings.embeddedCertificateIndex);
|
|
dataGridViewEmbeddedCertificates.Rows.RemoveAt(SEBSettings.embeddedCertificateIndex);
|
|
|
|
if (SEBSettings.embeddedCertificateIndex == SEBSettings.embeddedCertificateList.Count)
|
|
SEBSettings.embeddedCertificateIndex--;
|
|
|
|
if (SEBSettings.embeddedCertificateList.Count > 0)
|
|
{
|
|
dataGridViewEmbeddedCertificates.Rows[SEBSettings.embeddedCertificateIndex].Selected = true;
|
|
}
|
|
else
|
|
{
|
|
// If certificate list is now empty, disable it
|
|
SEBSettings.embeddedCertificateIndex = -1;
|
|
dataGridViewEmbeddedCertificates.Enabled = false;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
// *************************
|
|
// Group "Network - Proxies"
|
|
// *************************
|
|
private void radioButtonUseSystemProxySettings_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUseSystemProxySettings.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyProxySettingsPolicy] = 0;
|
|
else SEBSettings.settingsCurrent[SEBSettings.KeyProxySettingsPolicy] = 1;
|
|
}
|
|
|
|
private void radioButtonUseSebProxySettings_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonUseSebProxySettings.Checked == true)
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyProxySettingsPolicy] = 1;
|
|
else SEBSettings.settingsCurrent[SEBSettings.KeyProxySettingsPolicy] = 0;
|
|
}
|
|
|
|
private void checkBoxExcludeSimpleHostnames_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
// Get the proxies data
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
SEBSettings.proxiesData[SEBSettings.KeyExcludeSimpleHostnames] = checkBoxExcludeSimpleHostnames.Checked;
|
|
}
|
|
|
|
private void checkBoxUsePassiveFTPMode_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
// Get the proxies data
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
SEBSettings.proxiesData[SEBSettings.KeyFTPPassive] = checkBoxUsePassiveFTPMode.Checked;
|
|
}
|
|
|
|
|
|
private void dataGridViewProxyProtocols_SelectionChanged(object sender, EventArgs e)
|
|
{
|
|
// CAUTION:
|
|
// If a row was previously selected and the user clicks onto another row,
|
|
// the SelectionChanged() event is fired TWICE!!!
|
|
// The first time, it is only for UNselecting the old row,
|
|
// so the SelectedRows.Count is ZERO, so ignore this event handler!
|
|
// The second time, SelectedRows.Count is ONE.
|
|
// Now you can set the widgets in the "Selected Process" groupBox.
|
|
|
|
if (dataGridViewProxyProtocols.SelectedRows.Count != 1) return;
|
|
SEBSettings.proxyProtocolIndex = dataGridViewProxyProtocols.SelectedRows[0].Index;
|
|
|
|
// if proxyProtocolIndex is 0 (AutoDiscovery ), do nothing
|
|
// if proxyProtocolIndex is 1 (AutoConfiguration), enable Proxy URL widgets
|
|
// if proxyProtocolIndex is >= 2 (... Proxy Server ), enable Proxy Server widgets
|
|
|
|
Boolean useAutoConfiguration = (SEBSettings.proxyProtocolIndex == IntProxyAutoConfiguration);
|
|
Boolean useProxyServer = (SEBSettings.proxyProtocolIndex > IntProxyAutoConfiguration);
|
|
|
|
// Enable the proxy widgets belonging to Auto Configuration
|
|
labelAutoProxyConfigurationURL.Visible = useAutoConfiguration;
|
|
labelProxyConfigurationFileURL.Visible = useAutoConfiguration;
|
|
textBoxIfYourNetworkAdministrator.Visible = useAutoConfiguration;
|
|
textBoxAutoProxyConfigurationURL.Visible = useAutoConfiguration;
|
|
buttonChooseProxyConfigurationFile.Visible = useAutoConfiguration;
|
|
|
|
// Enable the proxy widgets belonging to Proxy Server
|
|
// (HTTP, HTTPS, FTP, SOCKS, RTSP)
|
|
labelProxyServerHost.Visible = useProxyServer;
|
|
labelProxyServerPort.Visible = useProxyServer;
|
|
textBoxProxyServerHost.Visible = useProxyServer;
|
|
textBoxProxyServerPort.Visible = useProxyServer;
|
|
|
|
labelProxyServerUsername.Visible = useProxyServer;
|
|
labelProxyServerPassword.Visible = useProxyServer;
|
|
textBoxProxyServerUsername.Visible = useProxyServer;
|
|
textBoxProxyServerPassword.Visible = useProxyServer;
|
|
|
|
checkBoxProxyServerRequires.Visible = useProxyServer;
|
|
|
|
if (useProxyServer)
|
|
{
|
|
labelProxyServerHost.Text = StringProxyProtocolServerLabel[SEBSettings.proxyProtocolIndex];
|
|
labelProxyServerHost.Text += " Proxy Server";
|
|
}
|
|
|
|
// Get the proxy protocol type
|
|
String KeyProtocolType = KeyProxyProtocolType[SEBSettings.proxyProtocolIndex];
|
|
|
|
// Get the proxies data
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
|
|
// Update the proxy widgets
|
|
if (useAutoConfiguration)
|
|
{
|
|
textBoxAutoProxyConfigurationURL.Text = (String) SEBSettings.proxiesData[SEBSettings.KeyAutoConfigurationURL];
|
|
}
|
|
|
|
if (useProxyServer)
|
|
{
|
|
checkBoxProxyServerRequires.Checked = (Boolean) SEBSettings.proxiesData[KeyProtocolType + SEBSettings.KeyRequires];
|
|
textBoxProxyServerHost.Text = (String) SEBSettings.proxiesData[KeyProtocolType + SEBSettings.KeyHost];
|
|
textBoxProxyServerPort.Text = (String) SEBSettings.proxiesData[KeyProtocolType + SEBSettings.KeyPort].ToString();
|
|
textBoxProxyServerUsername.Text = (String) SEBSettings.proxiesData[KeyProtocolType + SEBSettings.KeyUsername];
|
|
textBoxProxyServerPassword.Text = (String) SEBSettings.proxiesData[KeyProtocolType + SEBSettings.KeyPassword];
|
|
|
|
// Disable the username/password textboxes when they are not required
|
|
textBoxProxyServerUsername.Enabled = checkBoxProxyServerRequires.Checked;
|
|
textBoxProxyServerPassword.Enabled = checkBoxProxyServerRequires.Checked;
|
|
}
|
|
}
|
|
|
|
|
|
private void dataGridViewProxyProtocols_CurrentCellDirtyStateChanged(object sender, EventArgs e)
|
|
{
|
|
// When a CheckBox/ListBox/TextBox entry of a DataGridView table cell is edited,
|
|
// immediately call the CellValueChanged() event.
|
|
if (dataGridViewProxyProtocols.IsCurrentCellDirty)
|
|
dataGridViewProxyProtocols.CommitEdit(DataGridViewDataErrorContexts.Commit);
|
|
}
|
|
|
|
|
|
private void dataGridViewProxyProtocols_CellValueChanged(object sender, DataGridViewCellEventArgs e)
|
|
{
|
|
// Get the current cell where the user has changed a value
|
|
int row = dataGridViewProxyProtocols.CurrentCellAddress.Y;
|
|
int column = dataGridViewProxyProtocols.CurrentCellAddress.X;
|
|
|
|
// At the beginning, row = -1 and column = -1, so skip this event
|
|
if (row < 0) return;
|
|
if (column < 0) return;
|
|
|
|
// Get the changed value of the current cell
|
|
object value = dataGridViewProxyProtocols.CurrentCell.EditedFormattedValue;
|
|
|
|
// Get the proxies data of the proxy protocol belonging to the cell (row)
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
|
|
SEBSettings.proxyProtocolIndex = row;
|
|
|
|
// Update the proxy enable data belonging to the current cell
|
|
if (column == IntColumnProxyProtocolEnable)
|
|
{
|
|
String key = KeyProxyProtocolEnable[row];
|
|
SEBSettings.proxiesData[key] = (Boolean) value;
|
|
BooleanProxyProtocolEnabled[row] = (Boolean) value;
|
|
}
|
|
}
|
|
|
|
|
|
private void textBoxAutoProxyConfigurationURL_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Get the proxies data
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
SEBSettings.proxiesData[SEBSettings.KeyAutoConfigurationURL] = textBoxAutoProxyConfigurationURL.Text;
|
|
}
|
|
|
|
|
|
private void buttonChooseProxyConfigurationFile_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
|
|
private void textBoxProxyServerHost_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Get the proxies data
|
|
String key = KeyProxyProtocolType[SEBSettings.proxyProtocolIndex] + SEBSettings.KeyHost;
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
SEBSettings.proxiesData[key] = textBoxProxyServerHost.Text;
|
|
}
|
|
|
|
private void textBoxProxyServerPort_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Get the proxies data
|
|
String key = KeyProxyProtocolType[SEBSettings.proxyProtocolIndex] + SEBSettings.KeyPort;
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
|
|
// Convert the "Port" string to an integer
|
|
try
|
|
{
|
|
SEBSettings.proxiesData[key] = Int32.Parse(textBoxProxyServerPort.Text);
|
|
}
|
|
catch (FormatException)
|
|
{
|
|
textBoxProxyServerPort.Text = "";
|
|
}
|
|
}
|
|
|
|
private void checkBoxProxyServerRequiresPassword_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
// Get the proxies data
|
|
String key = KeyProxyProtocolType[SEBSettings.proxyProtocolIndex] + SEBSettings.KeyRequires;
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
SEBSettings.proxiesData[key] = (Boolean) checkBoxProxyServerRequires.Checked;
|
|
|
|
// Disable the username/password textboxes when they are not required
|
|
textBoxProxyServerUsername.Enabled = checkBoxProxyServerRequires.Checked;
|
|
textBoxProxyServerPassword.Enabled = checkBoxProxyServerRequires.Checked;
|
|
}
|
|
|
|
private void textBoxProxyServerUsername_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Get the proxies data
|
|
String key = KeyProxyProtocolType[SEBSettings.proxyProtocolIndex] + SEBSettings.KeyUsername;
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
SEBSettings.proxiesData[key] = textBoxProxyServerUsername.Text;
|
|
}
|
|
|
|
private void textBoxProxyServerPassword_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Get the proxies data
|
|
String key = KeyProxyProtocolType[SEBSettings.proxyProtocolIndex] + SEBSettings.KeyPassword;
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
SEBSettings.proxiesData[key] = textBoxProxyServerPassword.Text;
|
|
}
|
|
|
|
|
|
private void textBoxBypassedProxyHostList_TextChanged(object sender, EventArgs e)
|
|
{
|
|
// Get the proxies data
|
|
SEBSettings.proxiesData = (DictObj) SEBSettings.settingsCurrent[SEBSettings.KeyProxies];
|
|
string bypassedProxiesCommaSeparatedList = textBoxBypassedProxyHostList.Text;
|
|
// Create List
|
|
List<string> bypassedProxyHostList = bypassedProxiesCommaSeparatedList.Split(',').ToList();
|
|
// Trim whitespace from host strings
|
|
ListObj bypassedProxyTrimmedHostList = new ListObj();
|
|
foreach (string host in bypassedProxyHostList)
|
|
{
|
|
bypassedProxyTrimmedHostList.Add(host.Trim());
|
|
}
|
|
SEBSettings.proxiesData[SEBSettings.KeyExceptionsList] = bypassedProxyTrimmedHostList;
|
|
}
|
|
|
|
|
|
// ****************
|
|
// Group "Security"
|
|
// ****************
|
|
private void listBoxSebServicePolicy_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeySebServicePolicy] = listBoxSebServicePolicy.SelectedIndex;
|
|
}
|
|
|
|
private void checkBoxAllowVirtualMachine_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowVirtualMachine] = checkBoxAllowVirtualMachine.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowScreenSharing_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowScreenSharing] = checkBoxAllowScreenSharing.Checked;
|
|
}
|
|
|
|
private void checkBoxEnablePrivateClipboard_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnablePrivateClipboard] = checkBoxEnablePrivateClipboard.Checked;
|
|
}
|
|
|
|
private void radioCreateNewDesktop_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyCreateNewDesktop] = radioCreateNewDesktop.Checked;
|
|
checkBoxMonitorProcesses.Enabled = !radioCreateNewDesktop.Checked;
|
|
checkBoxMonitorProcesses.Checked = radioCreateNewDesktop.Checked;
|
|
|
|
if (radioCreateNewDesktop.Checked && (Boolean) SEBSettings.settingsCurrent[SEBSettings.KeyTouchOptimized] == true)
|
|
{
|
|
MessageBox.Show("Touch optimization will not work when kiosk mode is set to Create New Desktop, please change the appearance.", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
|
|
}
|
|
|
|
if (radioCreateNewDesktop.Checked)
|
|
{
|
|
CheckAndOptionallyRemoveDefaultProhibitedProcesses();
|
|
UpdateAllWidgetsOfProgram();
|
|
}
|
|
}
|
|
|
|
private void radioKillExplorerShell_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyKillExplorerShell] = radioKillExplorerShell.Checked;
|
|
checkBoxMonitorProcesses.Enabled = !radioKillExplorerShell.Checked;
|
|
checkBoxMonitorProcesses.Checked = radioKillExplorerShell.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowWlan_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowWLAN] = checkboxAllowWlan.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowSiri_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowSiri] = checkBoxAllowSiri.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableAppSwitcherCheck_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableAppSwitcherCheck] = checkBoxEnableAppSwitcherCheck.Checked;
|
|
}
|
|
|
|
private void checkBoxForceAppFolderInstall_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyForceAppFolderInstall] = checkBoxForceAppFolderInstall.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableLogging_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableLogging] = checkBoxEnableLogging.Checked;
|
|
}
|
|
|
|
private void buttonLogDirectoryWin_Click(object sender, EventArgs e)
|
|
{
|
|
// Set the default directory in the Folder Browser Dialog
|
|
//folderBrowserDialogLogDirectoryWin.SelectedPath = textBoxLogDirectoryWin.Text;
|
|
folderBrowserDialogLogDirectoryWin.RootFolder = Environment.SpecialFolder.Desktop;
|
|
// folderBrowserDialogLogDirectoryWin.RootFolder = Environment.CurrentDirectory;
|
|
|
|
// Get the user inputs in the File Dialog
|
|
DialogResult dialogResult = folderBrowserDialogLogDirectoryWin.ShowDialog();
|
|
String path = folderBrowserDialogLogDirectoryWin.SelectedPath;
|
|
|
|
// If the user clicked "Cancel", do nothing
|
|
if (dialogResult.Equals(DialogResult.Cancel)) return;
|
|
|
|
// If the user clicked "OK", ...
|
|
string pathUsingEnvironmentVariables = SEBClientInfo.ContractEnvironmentVariables(path);
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyLogDirectoryWin] = pathUsingEnvironmentVariables;
|
|
textBoxLogDirectoryWin.Text = pathUsingEnvironmentVariables;
|
|
if (String.IsNullOrEmpty(path))
|
|
{
|
|
checkBoxUseStandardDirectory.Checked = true;
|
|
}
|
|
else
|
|
{
|
|
checkBoxUseStandardDirectory.Checked = false;
|
|
}
|
|
}
|
|
|
|
private void textBoxLogDirectoryWin_TextChanged(object sender, EventArgs e)
|
|
{
|
|
string path = textBoxLogDirectoryWin.Text;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyLogDirectoryWin] = path;
|
|
|
|
if (String.IsNullOrEmpty(path))
|
|
{
|
|
checkBoxUseStandardDirectory.Checked = true;
|
|
}
|
|
else
|
|
{
|
|
checkBoxUseStandardDirectory.Checked = false;
|
|
}
|
|
}
|
|
|
|
private void checkBoxUseStandardDirectory_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (checkBoxUseStandardDirectory.Checked)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyLogDirectoryWin] = "";
|
|
textBoxLogDirectoryWin.Text = "";
|
|
}
|
|
}
|
|
|
|
private void textBoxLogDirectoryOSX_TextChanged(object sender, EventArgs e)
|
|
{
|
|
string path = textBoxLogDirectoryOSX.Text;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyLogDirectoryOSX] = path;
|
|
}
|
|
|
|
private void checkBoxAllowDictation_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowDictation] = checkBoxAllowDictation.Checked;
|
|
}
|
|
|
|
private void checkBoxDetectStoppedProcess_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyDetectStoppedProcess] = checkBoxDetectStoppedProcess.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowDisplayMirroring_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowDisplayMirroring] = checkBoxAllowDisplayMirroring.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowUserAppFolderInstall_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowUserAppFolderInstall] = checkBoxAllowUserAppFolderInstall.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowedDisplayBuiltin_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowedDisplayBuiltin] = checkBoxAllowedDisplayBuiltin.Checked;
|
|
}
|
|
|
|
private void comboBoxMinMacOSVersion_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValMinMacOSVersion] = comboBoxMinMacOSVersion.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValMinMacOSVersion] = comboBoxMinMacOSVersion.Text;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyMinMacOSVersion] = comboBoxMinMacOSVersion.SelectedIndex;
|
|
}
|
|
|
|
private void comboBoxMinMacOSVersion_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValMinMacOSVersion] = comboBoxMinMacOSVersion.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValMinMacOSVersion] = comboBoxMinMacOSVersion.Text;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyMinMacOSVersion] = comboBoxMinMacOSVersion.SelectedIndex;
|
|
}
|
|
|
|
private void comboBoxAllowedDisplaysMaxNumber_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValAllowedDisplaysMaxNumber] = comboBoxAllowedDisplaysMaxNumber.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValAllowedDisplaysMaxNumber] = comboBoxAllowedDisplaysMaxNumber.Text;
|
|
int allowedDisplaysMaxNumber = 1;
|
|
int.TryParse(comboBoxAllowedDisplaysMaxNumber.Text, out allowedDisplaysMaxNumber);
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowedDisplaysMaxNumber] = allowedDisplaysMaxNumber;
|
|
}
|
|
|
|
private void comboBoxAllowedDisplaysMaxNumber_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.intArrayCurrent[SEBSettings.ValAllowedDisplaysMaxNumber] = comboBoxAllowedDisplaysMaxNumber.SelectedIndex;
|
|
SEBSettings.strArrayCurrent[SEBSettings.ValAllowedDisplaysMaxNumber] = comboBoxAllowedDisplaysMaxNumber.Text;
|
|
int allowedDisplaysMaxNumber = 1;
|
|
int.TryParse(comboBoxAllowedDisplaysMaxNumber.Text, out allowedDisplaysMaxNumber);
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowedDisplaysMaxNumber] = allowedDisplaysMaxNumber;
|
|
}
|
|
|
|
|
|
// ****************
|
|
// Group "Registry"
|
|
// ****************
|
|
|
|
|
|
|
|
// ******************
|
|
// Group "Inside SEB"
|
|
// ******************
|
|
private void checkBoxInsideSebEnableSwitchUser_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableSwitchUser] = checkBoxInsideSebEnableSwitchUser.Checked;
|
|
}
|
|
|
|
private void checkBoxInsideSebEnableLockThisComputer_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableLockThisComputer] = checkBoxInsideSebEnableLockThisComputer.Checked;
|
|
}
|
|
|
|
private void checkBoxInsideSebEnableChangeAPassword_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableChangeAPassword] = checkBoxInsideSebEnableChangeAPassword.Checked;
|
|
}
|
|
|
|
private void checkBoxInsideSebEnableStartTaskManager_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableStartTaskManager] = checkBoxInsideSebEnableStartTaskManager.Checked;
|
|
|
|
}
|
|
|
|
private void checkBoxInsideSebEnableLogOff_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableLogOff] = checkBoxInsideSebEnableLogOff.Checked;
|
|
}
|
|
|
|
private void checkBoxInsideSebEnableShutDown_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableShutDown] = checkBoxInsideSebEnableShutDown.Checked;
|
|
}
|
|
|
|
private void checkBoxInsideSebEnableEaseOfAccess_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableEaseOfAccess] = checkBoxInsideSebEnableEaseOfAccess.Checked;
|
|
}
|
|
|
|
private void checkBoxInsideSebEnableVmWareClientShade_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableVmWareClientShade] = checkBoxInsideSebEnableVmWareClientShade.Checked;
|
|
}
|
|
|
|
private void checkBoxInsideSebEnableNetworkConnectionSelector_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyInsideSebEnableNetworkConnectionSelector] = checkBoxInsideSebEnableNetworkConnectionSelector.Checked;
|
|
}
|
|
|
|
|
|
// *******************
|
|
// Group "Hooked Keys"
|
|
// *******************
|
|
private void checkBoxHookKeys_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyHookKeys] = checkBoxHookKeys.Checked;
|
|
}
|
|
|
|
|
|
|
|
// ********************
|
|
// Group "Special Keys"
|
|
// ********************
|
|
private void checkBoxEnableEsc_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableEsc] = checkBoxEnableEsc.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableCtrlEsc_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableCtrlEsc] = checkBoxEnableCtrlEsc.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableAltEsc_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableAltEsc] = checkBoxEnableAltEsc.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableAltTab_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableAltTab] = checkBoxEnableAltTab.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableAltF4_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableAltF4] = checkBoxEnableAltF4.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableRightMouse_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableRightMouse] = checkBoxEnableRightMouse.Checked;
|
|
}
|
|
|
|
private void checkBoxEnablePrintScreen_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnablePrintScreen] = checkBoxEnablePrintScreen.Checked;
|
|
checkBoxEnableScreenCapture.Checked = checkBoxEnablePrintScreen.Checked;
|
|
|
|
}
|
|
|
|
private void checkBoxEnableAltMouseWheel_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableAltMouseWheel] = checkBoxEnableAltMouseWheel.Checked;
|
|
checkBoxAllowBrowsingBackForward.Checked = checkBoxEnableAltMouseWheel.Checked;
|
|
}
|
|
|
|
|
|
// *********************
|
|
// Group "Function Keys"
|
|
// *********************
|
|
private void checkBoxEnableF1_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF1] = checkBoxEnableF1.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF2_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF2] = checkBoxEnableF2.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF3_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF3] = checkBoxEnableF3.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF4_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF4] = checkBoxEnableF4.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF5_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF5] = checkBoxEnableF5.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF6_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF6] = checkBoxEnableF6.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF7_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF7] = checkBoxEnableF7.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF8_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF8] = checkBoxEnableF8.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF9_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF9] = checkBoxEnableF9.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF10_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF10] = checkBoxEnableF10.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF11_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF11] = checkBoxEnableF11.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableF12_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableF12] = checkBoxEnableF12.Checked;
|
|
}
|
|
|
|
private void labelHashedAdminPassword_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void labelOpenLinksHTML_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void label6_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void checkBoxEnableZoomText_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableZoomText] = checkBoxEnableZoomText.Checked;
|
|
enableZoomAdjustZoomMode();
|
|
}
|
|
|
|
private void checkBoxEnableZoomPage_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableZoomPage] = checkBoxEnableZoomPage.Checked;
|
|
enableZoomAdjustZoomMode();
|
|
}
|
|
|
|
private void enableZoomAdjustZoomMode()
|
|
{
|
|
if (!checkBoxEnableZoomPage.Checked && !checkBoxEnableZoomText.Checked)
|
|
{
|
|
groupBoxZoomMode.Enabled = false;
|
|
}
|
|
else if (checkBoxEnableZoomPage.Checked && !checkBoxEnableZoomText.Checked)
|
|
{
|
|
groupBoxZoomMode.Enabled = true;
|
|
radioButtonUseZoomPage.Checked = true;
|
|
radioButtonUseZoomPage.Enabled = true;
|
|
radioButtonUseZoomText.Enabled = false;
|
|
}
|
|
else if (!checkBoxEnableZoomPage.Checked && checkBoxEnableZoomText.Checked)
|
|
{
|
|
groupBoxZoomMode.Enabled = true;
|
|
radioButtonUseZoomText.Checked = true;
|
|
radioButtonUseZoomText.Enabled = true;
|
|
radioButtonUseZoomPage.Enabled = false;
|
|
}
|
|
else
|
|
{
|
|
groupBoxZoomMode.Enabled = true;
|
|
radioButtonUseZoomPage.Enabled = true;
|
|
radioButtonUseZoomText.Enabled = true;
|
|
}
|
|
}
|
|
|
|
private void checkBoxAllowSpellCheck_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowSpellCheck] = checkBoxAllowSpellCheck.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowDictionaryLookup_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowDictionaryLookup] = checkBoxAllowDictionaryLookup.Checked;
|
|
}
|
|
|
|
|
|
private void checkBoxShowTime_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyShowTime] = checkBoxShowTime.Checked;
|
|
}
|
|
|
|
private void checkBoxShowKeyboardLayout_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyShowInputLanguage] = checkBoxShowKeyboardLayout.Checked;
|
|
}
|
|
|
|
private void SebWindowsConfigForm_Load(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void editDuplicateToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
buttonEditDuplicate_Click(null, null);
|
|
}
|
|
|
|
private void configureClientToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
buttonConfigureClient_Click(null, null);
|
|
}
|
|
|
|
private void applyAndStartSEBToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
buttonApplyAndStartSEB_Click(null, null);
|
|
}
|
|
|
|
private void openSettingsToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
buttonOpenSettings_Click(null, null);
|
|
}
|
|
|
|
private void saveSettingsToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
buttonSaveSettings_Click(null, null);
|
|
}
|
|
|
|
private void saveSettingsAsToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
buttonSaveSettingsAs_Click(null, null);
|
|
}
|
|
|
|
private void defaultSettingsToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
buttonRevertToDefaultSettings_Click(null, null);
|
|
}
|
|
|
|
private void localClientSettingsToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
buttonRevertToLocalClientSettings_Click(null, null);
|
|
}
|
|
|
|
private void lastOpenedToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
buttonRevertToLastOpened_Click(null, null);
|
|
}
|
|
|
|
private void exitToolStripMenuItem_Click(object sender, EventArgs e)
|
|
{
|
|
if (ArePasswordsUnconfirmed()) return;
|
|
|
|
Application.Exit();
|
|
}
|
|
|
|
private void SebWindowsConfigForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
{
|
|
if (!quittingMyself)
|
|
{
|
|
if (ArePasswordsUnconfirmed())
|
|
{
|
|
e.Cancel = true;
|
|
return;
|
|
}
|
|
|
|
int result = checkSettingsChanged();
|
|
// User selected cancel, abort
|
|
if (result == 2)
|
|
{
|
|
e.Cancel = true;
|
|
return;
|
|
}
|
|
// User selected "Save current settings first: yes"
|
|
if (result == 1)
|
|
{
|
|
// Abort if saving settings failed
|
|
if (!saveCurrentSettings())
|
|
{
|
|
e.Cancel = true;
|
|
return;
|
|
}
|
|
quittingMyself = true;
|
|
Application.Exit();
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SebWindowsConfigForm_DragDrop(object sender, DragEventArgs e)
|
|
{
|
|
string[] files = (string[]) e.Data.GetData(DataFormats.FileDrop);
|
|
if (files.Length > 0)
|
|
{
|
|
string filePath = files[0];
|
|
string fileExtension = Path.GetExtension(filePath);
|
|
if (String.Equals(fileExtension, ".seb",
|
|
StringComparison.OrdinalIgnoreCase))
|
|
{
|
|
openSettingsFile(filePath);
|
|
}
|
|
}
|
|
}
|
|
|
|
private void SebWindowsConfigForm_DragEnter(object sender, DragEventArgs e)
|
|
{
|
|
if (e.Data.GetDataPresent(DataFormats.FileDrop))
|
|
e.Effect = DragDropEffects.Copy;
|
|
else
|
|
e.Effect = DragDropEffects.None;
|
|
}
|
|
|
|
private void tabControlSebWindowsConfig_Selecting(object sender, TabControlCancelEventArgs e)
|
|
{
|
|
if (ArePasswordsUnconfirmed())
|
|
{
|
|
e.Cancel = true;
|
|
}
|
|
checkBoxEnableURLFilter.Checked = (bool) SEBSettings.settingsCurrent[SEBSettings.KeyURLFilterEnable];
|
|
}
|
|
|
|
private void label1_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void checkBoxEnableScreenCapture_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnablePrintScreen] = checkBoxEnableScreenCapture.Checked;
|
|
checkBoxEnablePrintScreen.Checked = checkBoxEnableScreenCapture.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableTouchExit_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableTouchExit] = checkBoxEnableTouchExit.Checked;
|
|
}
|
|
|
|
private void comboBoxAdditionalResourceStartUrl_DropDown(object sender, EventArgs e)
|
|
{
|
|
FillStartupResourcesinCombobox();
|
|
}
|
|
|
|
private void AddResourceToStartupResourceDropdown(DictObj resource)
|
|
{
|
|
if (!string.IsNullOrEmpty((string) resource[SEBSettings.KeyAdditionalResourcesResourceData]))
|
|
{
|
|
//check if SEB is the launcher
|
|
//if (
|
|
// (string)((DictObj)((ListObj)SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses])[
|
|
// (int)resource[SEBSettings.KeyAdditionalResourcesResourceDataLauncher]])[SEBSettings.KeyTitle] ==
|
|
// "SEB")
|
|
if ((int) resource[SEBSettings.KeyAdditionalResourcesResourceDataLauncher] == 0)
|
|
{
|
|
comboBoxAdditionalResourceStartUrl.Items.Add(
|
|
new KeyValuePair<string, string>((string) resource[SEBSettings.KeyAdditionalResourcesIdentifier],
|
|
(string) resource[SEBSettings.KeyAdditionalResourcesTitle]));
|
|
}
|
|
}
|
|
}
|
|
|
|
private void FillStartupResourcesinCombobox()
|
|
{
|
|
comboBoxAdditionalResourceStartUrl.Items.Clear();
|
|
foreach (DictObj l0Resource in SEBSettings.additionalResourcesList)
|
|
{
|
|
AddResourceToStartupResourceDropdown(l0Resource);
|
|
foreach (DictObj l1Resource in (ListObj) l0Resource[SEBSettings.KeyAdditionalResources])
|
|
{
|
|
AddResourceToStartupResourceDropdown(l1Resource);
|
|
foreach (DictObj l2Resource in (ListObj) l1Resource[SEBSettings.KeyAdditionalResources])
|
|
{
|
|
AddResourceToStartupResourceDropdown(l2Resource);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private void comboBoxAdditionalResourceStartUrl_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
if (comboBoxAdditionalResourceStartUrl.SelectedItem is KeyValuePair<string, string>)
|
|
{
|
|
var selectedItem = (KeyValuePair<string, string>) comboBoxAdditionalResourceStartUrl.SelectedItem;
|
|
textBoxStartURL.Text = "";
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyStartResource] = selectedItem.Key;
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyStartURL] = "";
|
|
}
|
|
}
|
|
|
|
private void label10_Click(object sender, EventArgs e)
|
|
{
|
|
|
|
}
|
|
|
|
private void textBoxBrowserSuffix_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserWindowTitleSuffix] = textBoxBrowserSuffix.Text;
|
|
}
|
|
|
|
private void checkBoxEnableAudioControl_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAudioControlEnabled] = checkBoxEnableAudioControl.Checked;
|
|
}
|
|
|
|
private void checkBoxMuteAudio_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAudioMute] = checkBoxMuteAudio.Checked;
|
|
}
|
|
|
|
private void checkBoxSetVolumeLevel_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAudioSetVolumeLevel] = checkBoxSetVolumeLevel.Checked;
|
|
}
|
|
|
|
private void trackBarVolumeLevel_Scroll(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAudioVolumeLevel] = trackBarVolumeLevel.Value;
|
|
}
|
|
|
|
private void collectLogFilesToolStripMenuItem_Click(object sender, EventArgs args)
|
|
{
|
|
new LogCollector(this).Run();
|
|
}
|
|
|
|
private void checkBoxAllowMainWindowAddressBar_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyBrowserWindowAllowAddressBar] = checkBoxAllowMainWindowAddressBar.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowAdditionalWindowAddressBar_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowAllowAddressBar] = checkBoxAllowAdditionalWindowAddressBar.Checked;
|
|
}
|
|
|
|
private void checkBoxClearSessionOnStart_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExamSessionClearCookiesOnStart] = checkBoxClearSessionOnStart.Checked;
|
|
}
|
|
|
|
private void checkBoxClearSessionOnEnd_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyExamSessionClearCookiesOnEnd] = checkBoxClearSessionOnEnd.Checked;
|
|
checkBoxRemoveProfile.Enabled = checkBoxClearSessionOnEnd.Checked;
|
|
}
|
|
|
|
private void checkBoxShowSideMenu_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyShowSideMenu] = checkBoxShowSideMenu.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowLogAccess_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowApplicationLog] = checkBoxAllowLogAccess.Checked;
|
|
checkBoxShowLogButton.Enabled = checkBoxAllowLogAccess.Checked;
|
|
}
|
|
|
|
private void checkBoxShowLogButton_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyShowApplicationLogButton] = checkBoxShowLogButton.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowChromeNotifications_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowChromeNotifications] = checkBoxAllowChromeNotifications.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowWindowsUpdate_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowWindowsUpdate] = checkBoxAllowWindowsUpdate.Checked;
|
|
}
|
|
|
|
private void checkBoxDeveloperConsole_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowDeveloperConsole] = checkBoxAllowDeveloperConsole.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowPdfReaderToolbar_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowPDFReaderToolbar] = checkBoxAllowPdfReaderToolbar.Checked;
|
|
}
|
|
|
|
private void checkBoxSetVmwareConfiguration_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeySetVmwareConfiguration] = checkBoxSetVmwareConfiguration.Checked;
|
|
checkBoxInsideSebEnableVmWareClientShade.Enabled = checkBoxSetVmwareConfiguration.Checked;
|
|
}
|
|
|
|
private void checkBoxSebServiceIgnore_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeySebServiceIgnore] = checkBoxSebServiceIgnore.Checked;
|
|
labelSebServiceIgnore.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
labelSebServicePolicy.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
listBoxSebServicePolicy.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
groupBoxInsideSeb.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
checkBoxAllowWindowsUpdate.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
checkBoxAllowScreenSharing.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
checkBoxAllowChromeNotifications.Enabled = !checkBoxSebServiceIgnore.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowCustomDownloadLocation_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowCustomDownUploadLocation] = checkBoxAllowCustomDownloadLocation.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowFind_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowFind] = checkBoxAllowFind.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowReconfiguration_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowReconfiguration] = checkBoxAllowReconfiguration.Checked;
|
|
}
|
|
|
|
private void textBoxReconfigurationUrl_TextChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyReconfigurationUrl] = textBoxReconfigurationUrl.Text;
|
|
}
|
|
|
|
private void checkBoxResetOnQuitUrl_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyResetOnQuitUrl] = checkBoxResetOnQuitUrl.Checked;
|
|
}
|
|
|
|
private void checkBoxUseStartUrlQuery_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyUseStartUrlQuery] = checkBoxUseStartUrlQuery.Checked;
|
|
}
|
|
|
|
private void comboBoxUrlPolicyMainWindow_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyMainBrowserWindowUrlPolicy] = comboBoxUrlPolicyMainWindow.SelectedIndex;
|
|
}
|
|
|
|
private void comboBoxUrlPolicyNewWindow_SelectedIndexChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyNewBrowserWindowUrlPolicy] = comboBoxUrlPolicyNewWindow.SelectedIndex;
|
|
}
|
|
|
|
private void checkBoxEnforceBuiltinDisplay_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowedDisplayBuiltinEnforce] = checkBoxEnforceBuiltinDisplay.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowedDisplayIgnoreError_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowedDisplayIgnoreFailure] = checkBoxAllowedDisplayIgnoreError.Checked;
|
|
}
|
|
|
|
private void checkBoxTemporaryDownloadDirectory_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyUseTemporaryDownUploadDirectory] = checkBoxTemporaryDownloadDirectory.Checked;
|
|
buttonDownloadDirectoryWin.Enabled = !checkBoxTemporaryDownloadDirectory.Checked;
|
|
textBoxDownloadDirectoryWin.Enabled = !checkBoxTemporaryDownloadDirectory.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableMiddleMouse_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableMiddleMouse] = checkBoxEnableMiddleMouse.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowPrint_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowPrint] = checkBoxAllowPrint.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableFindPrinter_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableFindPrinter] = checkBoxEnableFindPrinter.Checked;
|
|
}
|
|
|
|
private void checkBoxShowFileSystemElementPath_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyShowFileSystemElementPath] = checkBoxShowFileSystemElementPath.Checked;
|
|
}
|
|
|
|
private void textBoxPermittedProcessSignature_TextChanged(object sender, EventArgs e)
|
|
{
|
|
if (SEBSettings.permittedProcessIndex < 0) return;
|
|
SEBSettings.permittedProcessList = (ListObj) SEBSettings.settingsCurrent[SEBSettings.KeyPermittedProcesses];
|
|
SEBSettings.permittedProcessData = (DictObj) SEBSettings.permittedProcessList[SEBSettings.permittedProcessIndex];
|
|
SEBSettings.permittedProcessData[SEBSettings.KeySignature] = textBoxPermittedProcessSignature.Text;
|
|
}
|
|
|
|
private void versionRestrictionsTextBox_TextChanged(object sender, EventArgs e)
|
|
{
|
|
var raw = versionRestrictionsTextBox.Text;
|
|
var invalid = new List<string>();
|
|
var valid = new List<string>();
|
|
|
|
foreach (var line in raw?.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries))
|
|
{
|
|
if (Regex.IsMatch(line, @"^(Win|Mac|iOS)(\.\d{1,}){2,4}(\.AE)?(\.min)?$"))
|
|
{
|
|
valid.Add(line);
|
|
}
|
|
else
|
|
{
|
|
invalid.Add(line);
|
|
}
|
|
}
|
|
|
|
versionRestrictionsTextBox.BackColor = invalid.Any() ? Color.FromArgb(255, 156, 156) : Color.White;
|
|
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyVersionRestrictions] = new ListObj(valid);
|
|
}
|
|
|
|
private void radioButtonClipboardPolicyAllow_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonClipboardPolicyAllow.Checked)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyClipboardPolicy] = 0;
|
|
}
|
|
}
|
|
|
|
private void radioButtonClipboardPolicyBlock_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonClipboardPolicyBlock.Checked)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyClipboardPolicy] = 1;
|
|
}
|
|
}
|
|
|
|
private void radioButtonClipboardPolicyIsolated_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
if (radioButtonClipboardPolicyIsolated.Checked)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyClipboardPolicy] = 2;
|
|
}
|
|
}
|
|
|
|
private void checkBoxAllowDownloads_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowDownloads] = checkBoxAllowDownloads.Checked;
|
|
}
|
|
|
|
private void checkBoxAllowUploads_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowUploads] = checkBoxAllowUploads.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableCursorVerification_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableCursorVerification] = checkBoxEnableCursorVerification.Checked;
|
|
}
|
|
|
|
private void checkBoxEnableSessionVerification_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyEnableSessionVerification] = checkBoxEnableSessionVerification.Checked;
|
|
}
|
|
|
|
private void lockscreenColorButton_Click(object sender, EventArgs e)
|
|
{
|
|
var dialog = new ColorDialog();
|
|
|
|
dialog.AllowFullOpen = true;
|
|
dialog.FullOpen = true;
|
|
dialog.Color = lockscreenColorTextbox.BackColor;
|
|
|
|
if (dialog.ShowDialog() == DialogResult.OK)
|
|
{
|
|
lockscreenColorTextbox.BackColor = dialog.Color;
|
|
lockscreenColorTextbox.Text = $"#{dialog.Color.R:x2}{dialog.Color.G:x2}{dialog.Color.B:x2}";
|
|
}
|
|
}
|
|
|
|
private void lockscreenColorTextbox_TextChanged(object sender, EventArgs e)
|
|
{
|
|
var raw = lockscreenColorTextbox.Text;
|
|
|
|
if (!string.IsNullOrWhiteSpace(raw) && Regex.IsMatch(raw, "^#[0-9a-f]{6}$", RegexOptions.IgnoreCase))
|
|
{
|
|
var r = byte.Parse(raw.Substring(1, 2), NumberStyles.HexNumber);
|
|
var g = byte.Parse(raw.Substring(3, 2), NumberStyles.HexNumber);
|
|
var b = byte.Parse(raw.Substring(5, 2), NumberStyles.HexNumber);
|
|
|
|
lockscreenColorTextbox.BackColor = Color.FromArgb(r, g, b);
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyLockScreenBackgroundColor] = raw;
|
|
}
|
|
}
|
|
|
|
private void checkBoxAllowStickyKeys_CheckedChanged(object sender, EventArgs e)
|
|
{
|
|
SEBSettings.settingsCurrent[SEBSettings.KeyAllowStickyKeys] = checkBoxAllowStickyKeys.Checked;
|
|
}
|
|
}
|
|
}
|