fix(license): failsafes

This commit is contained in:
rjindael 2023-08-01 22:08:04 -07:00
parent 64d200c0b9
commit f68ce87cb5
No known key found for this signature in database
GPG Key ID: D069369C906CCF31
1 changed files with 52 additions and 39 deletions

View File

@ -8,45 +8,8 @@ namespace Kiseki.Launcher.Windows
{
public readonly static string Version = Assembly.GetExecutingAssembly().GetName().Version!.ToString()[..^2];
#region Licensing
public static void TryLoadLicense()
{
if (!File.Exists(Directories.License))
{
AskForLicense(Directories.License);
}
#region ILauncher implementation
// ... load the license ...
while (!Web.LoadLicense(File.ReadAllText(Directories.License)))
{
// ... and if it's invalid, keep asking for a new one.
File.Delete(Directories.License);
MessageBox.Show($"Corrupt license file! Please verify the contents of your license file (it should be named \"license.bin\".)", Constants.PROJECT_NAME, MessageBoxButtons.OK, MessageBoxIcon.Error);
AskForLicense(Directories.License, false);
}
}
private static void AskForLicense(string licensePath, bool showDialog = true)
{
DialogResult answer = showDialog ? MessageBox.Show($"{Constants.PROJECT_NAME} is currently under maintenance and requires a license in order to access games. Would you like to look for the license file now?", Constants.PROJECT_NAME, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) : DialogResult.Yes;
if (answer == DialogResult.Yes)
{
using OpenFileDialog dialog = new()
{
Title = "Select your license file",
Filter = "License files (*.bin)|*.bin",
InitialDirectory = Win32.GetDownloadsPath()
};
if (dialog.ShowDialog() == DialogResult.OK)
{
File.Copy(dialog.FileName, licensePath, true);
}
}
}
#endregion
#region ILauncher implementation
public static void Install()
{
Directory.CreateDirectory(Directories.Base);
@ -84,6 +47,56 @@ namespace Kiseki.Launcher.Windows
{
Registry.CurrentUser.DeleteSubKey($@"Software\{Constants.PROJECT_NAME}");
}
#endregion
#endregion
#region Licensing
public static void TryLoadLicense()
{
if (!File.Exists(Directories.License))
{
if (!AskForLicense(Directories.License))
{
// They don't want us :(
return;
}
}
// ... load the license ...
while (!Web.LoadLicense(File.ReadAllText(Directories.License)))
{
// ... and if it's invalid, keep asking for a new one.
File.Delete(Directories.License);
MessageBox.Show($"Corrupt license file! Please verify the contents of your license file (it should be named \"license.bin\".)", Constants.PROJECT_NAME, MessageBoxButtons.OK, MessageBoxIcon.Error);
AskForLicense(Directories.License, false);
}
}
private static bool AskForLicense(string licensePath, bool showDialog = true)
{
DialogResult answer = showDialog ? MessageBox.Show($"{Constants.PROJECT_NAME} is currently under maintenance and requires a license in order to access games. Would you like to look for the license file now?", Constants.PROJECT_NAME, MessageBoxButtons.YesNo, MessageBoxIcon.Warning) : DialogResult.Yes;
if (answer == DialogResult.Yes)
{
using OpenFileDialog dialog = new()
{
Title = "Select your license file",
Filter = "License files (*.bin)|*.bin",
InitialDirectory = Win32.GetDownloadsPath()
};
if (dialog.ShowDialog() == DialogResult.OK)
{
Directory.CreateDirectory(Directories.Base); // failsafe
File.Copy(dialog.FileName, licensePath, true);
}
return true;
}
return false;
}
#endregion
}
}