112 lines
4.0 KiB
C#
112 lines
4.0 KiB
C#
using OpenSaveCloudCore.Core;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Threading.Tasks;
|
|
using System.Windows.Forms;
|
|
|
|
namespace OpenSaveCloudClient
|
|
{
|
|
public partial class LoginForm : Form
|
|
{
|
|
|
|
private ServerConnector serverConnector;
|
|
|
|
public LoginForm()
|
|
{
|
|
InitializeComponent();
|
|
serverConnector = ServerConnector.Instance;
|
|
}
|
|
|
|
private void LoginButton_Click(object sender, EventArgs e)
|
|
{
|
|
LockControls(true);
|
|
if (string.IsNullOrWhiteSpace(ServerTextBox.Text))
|
|
{
|
|
MessageBox.Show("The server hostname or IP is empty, cannot login to an unknown server", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
LockControls(false);
|
|
return;
|
|
}
|
|
if (string.IsNullOrWhiteSpace(UsernameTextBox.Text) || string.IsNullOrWhiteSpace(PasswordTextBox.Text))
|
|
{
|
|
MessageBox.Show("Password or username cannot be empty", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
LockControls(false);
|
|
return;
|
|
}
|
|
ThreadPool.QueueUserWorkItem(delegate
|
|
{
|
|
try
|
|
{
|
|
decimal port = PortNumericBox.Value;
|
|
string host = ServerTextBox.Text;
|
|
if (host.StartsWith("https://"))
|
|
{
|
|
sslCheckBox.Checked = true;
|
|
}
|
|
else if (host.StartsWith("http://"))
|
|
{
|
|
sslCheckBox.Checked = false;
|
|
}
|
|
else
|
|
{
|
|
host = (sslCheckBox.Checked ? "https://" : "http://") + host;
|
|
}
|
|
serverConnector.BindNewServer(host, (int)port);
|
|
if (serverConnector.Bind)
|
|
{
|
|
serverConnector.Login(UsernameTextBox.Text, PasswordTextBox.Text);
|
|
if (serverConnector.Connected)
|
|
{
|
|
this.Invoke((MethodInvoker)delegate {
|
|
Close();
|
|
});
|
|
}
|
|
else
|
|
{
|
|
this.Invoke((MethodInvoker)delegate {
|
|
MessageBox.Show("Wrong username or password", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
LockControls(false);
|
|
});
|
|
}
|
|
}
|
|
else
|
|
{
|
|
this.Invoke((MethodInvoker)delegate {
|
|
MessageBox.Show("Failed to find the server, check the hostname or the port", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
LockControls(false);
|
|
});
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
this.Invoke((MethodInvoker)delegate {
|
|
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
|
|
LockControls(false);
|
|
});
|
|
}
|
|
});
|
|
}
|
|
|
|
private void LockControls(bool value)
|
|
{
|
|
value = !value;
|
|
ServerTextBox.Enabled = value;
|
|
PortNumericBox.Enabled = value;
|
|
UsernameTextBox.Enabled = value;
|
|
PasswordTextBox.Enabled = value;
|
|
LoginButton.Enabled = value;
|
|
sslCheckBox.Enabled = value;
|
|
}
|
|
|
|
private void AboutButton_Click(object sender, EventArgs e)
|
|
{
|
|
LogsForm form = new();
|
|
form.Show();
|
|
}
|
|
}
|
|
}
|