287 lines
10 KiB
C#
287 lines
10 KiB
C#
|
using MySql.Data.MySqlClient;
|
|||
|
using Newtonsoft.Json;
|
|||
|
using Support.Crypto;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.ComponentModel;
|
|||
|
using System.Data;
|
|||
|
using System.Drawing;
|
|||
|
using System.IO;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
using System.Windows.Forms;
|
|||
|
|
|||
|
namespace Support.Controls
|
|||
|
{
|
|||
|
public partial class Settings : UserControl
|
|||
|
{
|
|||
|
private Models.Appsettings Appsettings = null;
|
|||
|
private Main _MainForm = null;
|
|||
|
|
|||
|
public Settings()
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
|
|||
|
this.Appsettings = new Models.Appsettings();
|
|||
|
|
|||
|
txtDatabaseConnectionString_KeyUp(null, null);
|
|||
|
}
|
|||
|
|
|||
|
public Settings(Models.Appsettings appsettings, Main mainForm)
|
|||
|
{
|
|||
|
InitializeComponent();
|
|||
|
this.Appsettings = appsettings;
|
|||
|
this._MainForm = mainForm;
|
|||
|
|
|||
|
if(this.Appsettings != null)
|
|||
|
{
|
|||
|
lblStatus.Text = "";
|
|||
|
txtServiceInsideURL.Text = this.Appsettings.ServiceInsideURL;
|
|||
|
txtServiceOutsideURL.Text = this.Appsettings.ServiceOutsideURL;
|
|||
|
txtPrivateDirectoryPath.Text = this.Appsettings.PrivateDirectory;
|
|||
|
txtPublicDirectoryPath.Text = this.Appsettings.PublicDirectory;
|
|||
|
txtDatabaseConnectionString.Text = this.Appsettings.DatabaseConnectionString;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.Appsettings = new Models.Appsettings();
|
|||
|
}
|
|||
|
|
|||
|
txtDatabaseConnectionString_KeyUp(null, null);
|
|||
|
}
|
|||
|
|
|||
|
private void btnEmpy_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
lblStatus.Text = "";
|
|||
|
|
|||
|
string constring = txtDatabaseConnectionString.Text;
|
|||
|
|
|||
|
string decrypted = AES.Decrypt(constring);
|
|||
|
|
|||
|
if (!string.IsNullOrEmpty(decrypted))
|
|||
|
{
|
|||
|
constring = decrypted;
|
|||
|
}
|
|||
|
|
|||
|
Database database = new Database(constring);
|
|||
|
|
|||
|
using (MySqlConnection client = database.CreateConnection())
|
|||
|
{
|
|||
|
client.Open();
|
|||
|
|
|||
|
MySqlCommand cmd = client.CreateCommand();
|
|||
|
|
|||
|
cmd.CommandText = "select maintenance from config c limit 1";
|
|||
|
|
|||
|
MySqlDataReader reader = cmd.ExecuteReader();
|
|||
|
|
|||
|
if(reader.Read())
|
|||
|
{
|
|||
|
int maintenance = 0;
|
|||
|
string str_maintenance = reader["maintenance"].ToString();
|
|||
|
|
|||
|
Int32.TryParse(str_maintenance, out maintenance);
|
|||
|
|
|||
|
if (maintenance == 1)
|
|||
|
{
|
|||
|
maintenance = 0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
maintenance = 1;
|
|||
|
}
|
|||
|
|
|||
|
if(!reader.IsClosed)
|
|||
|
{
|
|||
|
reader.Close();
|
|||
|
}
|
|||
|
|
|||
|
cmd.CommandText = "update config set maintenance = @maintenance";
|
|||
|
|
|||
|
cmd.Parameters.Clear();
|
|||
|
cmd.Parameters.Add(new MySqlParameter("maintenance", maintenance));
|
|||
|
|
|||
|
cmd.ExecuteNonQuery();
|
|||
|
|
|||
|
client.Close();
|
|||
|
|
|||
|
if (maintenance == 1)
|
|||
|
{
|
|||
|
lblStatus.Text = "Der Wartungsmodus wurde aktiviert";
|
|||
|
btnMaintenanceWork.Text = "Wartungsmodus deaktivieren";
|
|||
|
btnMaintenanceWork.BackColor = Color.Red;
|
|||
|
btnMaintenanceWork.ForeColor = Color.White;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lblStatus.Text = "Der Wartungsmodus wurde deaktiviert";
|
|||
|
btnMaintenanceWork.Text = "Wartungsmodus aktivieren";
|
|||
|
btnMaintenanceWork.BackColor = Color.Silver;
|
|||
|
btnMaintenanceWork.ForeColor = Color.Black;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
lblStatus.Text = ex.Message;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void btnSave_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
if (string.IsNullOrEmpty(txtServiceInsideURL.Text))
|
|||
|
{
|
|||
|
lblStatus.Text = "Bitte geben Sie die URL vom ServiceInside ein";
|
|||
|
}
|
|||
|
else if (string.IsNullOrEmpty(txtServiceOutsideURL.Text))
|
|||
|
{
|
|||
|
lblStatus.Text = "Bitte geben Sie die URL vom ServiceOutside ein";
|
|||
|
}
|
|||
|
else if (string.IsNullOrEmpty(txtPrivateDirectoryPath.Text))
|
|||
|
{
|
|||
|
lblStatus.Text = "Bitte wählen Sie den Pfad zum Verzeichnis \"private\" aus";
|
|||
|
}
|
|||
|
else if (string.IsNullOrEmpty(txtPublicDirectoryPath.Text))
|
|||
|
{
|
|||
|
lblStatus.Text = "Bitte wählen Sie den Pfad zum Verzeichnis \"public\" aus";
|
|||
|
}
|
|||
|
else if (string.IsNullOrEmpty(txtDatabaseConnectionString.Text))
|
|||
|
{
|
|||
|
lblStatus.Text = "Bitte geben Sie die Datenbank-Verbindungszeichenfolge ein";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
this.Appsettings.ServiceInsideURL = txtServiceInsideURL.Text;
|
|||
|
this.Appsettings.ServiceOutsideURL = txtServiceOutsideURL.Text;
|
|||
|
this.Appsettings.PrivateDirectory = txtPrivateDirectoryPath.Text;
|
|||
|
this.Appsettings.PublicDirectory = txtPublicDirectoryPath.Text;
|
|||
|
this.Appsettings.DatabaseConnectionString = txtDatabaseConnectionString.Text;
|
|||
|
|
|||
|
if (!string.IsNullOrEmpty(txtNewPassword.Text))
|
|||
|
{
|
|||
|
string key = txtCurrentPassword.Text;
|
|||
|
|
|||
|
if (!string.IsNullOrEmpty(key))
|
|||
|
{
|
|||
|
if (AES.Decrypt(this.Appsettings.SupportPassword, AES.GetKey(key)) == "Support_" + key)
|
|||
|
{
|
|||
|
this.Appsettings.SupportPassword = AES.Encrypt("Support_" + txtNewPassword.Text, AES.GetKey(txtNewPassword.Text));
|
|||
|
|
|||
|
if (this.Appsettings.Save())
|
|||
|
{
|
|||
|
lblStatus.Text = "Die Einstellungen wurden erfolgreich gespeichert";
|
|||
|
this._MainForm.Initialize();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lblStatus.Text = "Die Einstellungen konnten nicht gespeichert werden";
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lblStatus.Text = "Das aktuelle Support-Passwort ist ungültig";
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lblStatus.Text = "Bitte geben Sie das aktuelle Support-Passwort ein";
|
|||
|
}
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
if (this.Appsettings.Save())
|
|||
|
{
|
|||
|
lblStatus.Text = "Die Einstellungen wurden erfolgreich gespeichert";
|
|||
|
this._MainForm.Initialize();
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
lblStatus.Text = "Die Einstellungen konnten nicht gespeichert werden";
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
lblStatus.Text = ex.Message;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void btnPrivateDirectorySelector_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
|
|||
|
|
|||
|
if(folderBrowserDialog.ShowDialog() == DialogResult.OK)
|
|||
|
{
|
|||
|
txtPrivateDirectoryPath.Text = folderBrowserDialog.SelectedPath;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void btnPublicDirectorySelector_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
FolderBrowserDialog folderBrowserDialog = new FolderBrowserDialog();
|
|||
|
|
|||
|
if (folderBrowserDialog.ShowDialog() == DialogResult.OK)
|
|||
|
{
|
|||
|
txtPublicDirectoryPath.Text = folderBrowserDialog.SelectedPath;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void button1_Click(object sender, EventArgs e)
|
|||
|
{
|
|||
|
try
|
|||
|
{
|
|||
|
lblStatus.Text = "";
|
|||
|
|
|||
|
string constring = txtDatabaseConnectionString.Text;
|
|||
|
|
|||
|
string decrypted = AES.Decrypt(constring);
|
|||
|
|
|||
|
if(!string.IsNullOrEmpty(decrypted))
|
|||
|
{
|
|||
|
constring = decrypted;
|
|||
|
}
|
|||
|
|
|||
|
Database database = new Database(constring);
|
|||
|
|
|||
|
using (MySqlConnection client = database.CreateConnection())
|
|||
|
{
|
|||
|
client.Open();
|
|||
|
|
|||
|
MySqlCommand cmd = client.CreateCommand();
|
|||
|
|
|||
|
cmd.CommandText = "select * from config c limit 1";
|
|||
|
MySqlDataReader reader = cmd.ExecuteReader();
|
|||
|
client.Close();
|
|||
|
|
|||
|
lblStatus.Text = "Verbindung erfolgreich";
|
|||
|
}
|
|||
|
}
|
|||
|
catch (Exception ex)
|
|||
|
{
|
|||
|
lblStatus.Text = ex.Message;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
private void txtDatabaseConnectionString_KeyUp(object sender, KeyEventArgs e)
|
|||
|
{
|
|||
|
if(!string.IsNullOrEmpty(txtDatabaseConnectionString.Text))
|
|||
|
{
|
|||
|
btnMaintenanceWork.Visible = true;
|
|||
|
btnDatabaseConnectionCheck.Visible = true;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
btnMaintenanceWork.Visible = false;
|
|||
|
btnDatabaseConnectionCheck.Visible = false;
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|