184 lines
7.9 KiB
C#
184 lines
7.9 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.ComponentModel;
|
|
using System.Data;
|
|
using System.Drawing;
|
|
using System.Linq;
|
|
using System.Text;
|
|
using System.Windows.Forms;
|
|
using GZTW.AyaNova.BLL;
|
|
|
|
namespace AyaNova
|
|
{
|
|
public partial class GlobalFetchKey : Form
|
|
{
|
|
public GlobalFetchKey()
|
|
{
|
|
InitializeComponent();
|
|
}
|
|
|
|
private void GlobalFetchKey_Load(object sender, EventArgs e)
|
|
{
|
|
Icon = Resource1.AyaNova5;
|
|
}
|
|
|
|
private void btnCancel_Click(object sender, EventArgs e)
|
|
{
|
|
this.Close();
|
|
}
|
|
|
|
private void btnOK_Click(object sender, EventArgs e)
|
|
{
|
|
string sEmail = edEmail.Text;
|
|
string sFetchCode = edFetchCode.Text;
|
|
if (string.IsNullOrWhiteSpace(sEmail))
|
|
{
|
|
MessageBox.Show("Email address is required\r\nEnter it exactly as it appears in the license email we sent you.");
|
|
return;
|
|
}
|
|
|
|
if (string.IsNullOrWhiteSpace(sFetchCode))
|
|
{
|
|
MessageBox.Show("Fetch Code is required\r\nEnter it exactly as it appears in the license email we sent you.");
|
|
return;
|
|
}
|
|
|
|
#if(DEBUG)
|
|
string sUrl = "https://sockeye.ayanova.com/fetch/" + sFetchCode + "/" + sEmail;
|
|
//string sUrl = "http://192.168.1.253:7676/fetch/" + sFetchCode + "/" + sEmail;
|
|
#else
|
|
string sUrl = "https://rockfish.ayanova.com/fetch/" + sFetchCode + "/" + sEmail;
|
|
#endif
|
|
//string sUrl = "https://rockfish.gztechworks.com/fetch/" + sFetchCode + "/" + sEmail;
|
|
//TODO: maybe alt url in case?? or fuck it wont' matter with v8 coming anyway
|
|
|
|
//case 3875
|
|
System.Net.ServicePointManager.SecurityProtocol = (System.Net.SecurityProtocolType)3072;
|
|
|
|
using (System.Net.WebClient client = new System.Net.WebClient())
|
|
{
|
|
try
|
|
{
|
|
Cursor.Current = Cursors.WaitCursor;
|
|
string s = client.DownloadString(sUrl);
|
|
|
|
//case 1172
|
|
string sKeyType = "AyaNovaLiteLicenseKey";
|
|
|
|
if (s.Contains("AyaNovaLicenseKey"))//modified to take out <> for case 3122
|
|
{
|
|
sKeyType = "AyaNovaLicenseKey";
|
|
}
|
|
|
|
bool containsXML = s.Contains("<?xml version=\"1.0\" encoding=\"utf-16\" standalone=\"yes\"?>");
|
|
bool containsJSON = s.Contains("[KEY");
|
|
if (!containsXML && !containsJSON)
|
|
{
|
|
Util.PromptWithIconOKOnlyFromLocaleKey("Key.Error.NotFound", MessageBoxIcon.Error);
|
|
return;
|
|
}
|
|
|
|
|
|
//Key sanity checks
|
|
bool isRequestedTrial = false;
|
|
int newScheduleableUsers = 0;
|
|
|
|
if (containsJSON)
|
|
{
|
|
string keyNoWS = System.Text.RegularExpressions.Regex.Replace(AyaBizUtils.ExtractString(s, "[KEY", "KEY]").Trim(), "(\"(?:[^\"\\\\]|\\\\.)*\")|\\s+", "$1").ToLowerInvariant();
|
|
if (keyNoWS.Contains("\"RequestedTrial\":\"True\"".ToLowerInvariant()))
|
|
{
|
|
isRequestedTrial = true;
|
|
}
|
|
|
|
newScheduleableUsers = int.Parse(AyaBizUtils.ExtractString(keyNoWS, ",\"TotalScheduleableUsers\":\"".ToLowerInvariant(), "\","));
|
|
}
|
|
else
|
|
{
|
|
//xml key
|
|
isRequestedTrial = s.Contains("RequestedTrial>true");
|
|
newScheduleableUsers = int.Parse(AyaBizUtils.ExtractString(s, "<TotalScheduleableUsers>", "</TotalScheduleableUsers>"));
|
|
}
|
|
|
|
|
|
if (AyaBizUtils.RequestedTrial && isRequestedTrial)
|
|
{
|
|
MessageBox.Show(
|
|
"This requested trial license can not be used because this database already contains a requested trial license\r\n"
|
|
, "", MessageBoxButtons.OK, MessageBoxIcon.Stop);
|
|
return;
|
|
}
|
|
|
|
//Don't allow them to enter a lite key into a db that is currently not a standalone firebird
|
|
//otherwise they could permanently lock themselves out of the db (until we fixed it of course)
|
|
if (sKeyType == "AyaNovaLiteLicenseKey" && !AyaBizUtils.AyaNovaConnectionSetting.SingleUserConnection)
|
|
{
|
|
MessageBox.Show(
|
|
"This AyaNova Lite license can not be used because the current database is not a single user stand alone FireBird database.\r\n" +
|
|
"AyaNova Lite can not be used with a Firebird server or Microsoft SQL server.\r\n", "", MessageBoxButtons.OK, MessageBoxIcon.Stop);
|
|
return;
|
|
}
|
|
|
|
//case 2084
|
|
//warn if less users in new key than in current license
|
|
if (!AyaBizUtils.Trial)
|
|
{
|
|
if (AyaBizUtils.ScheduleableUsers > newScheduleableUsers)
|
|
{
|
|
//case 3199
|
|
if (MessageBox.Show("WARNING: The Key you are about to apply is for less scheduleable resource licenses than your database is presently licensed for.\r\n\r\nPlease cancel and resolve; or select OK to apply", "", MessageBoxButtons.OKCancel, MessageBoxIcon.Exclamation) != DialogResult.OK)
|
|
{
|
|
return;
|
|
}
|
|
}
|
|
|
|
}
|
|
|
|
if (!AyaBizUtils.Insert(s))
|
|
{
|
|
Util.PromptWithIconOKOnlyFromLocaleKey("Key.Error.NotValid", MessageBoxIcon.Error);
|
|
Application.Exit();
|
|
}
|
|
else
|
|
{
|
|
//edNotes.Text = AyaBizUtils.View();
|
|
Util.PromptWithIconOKOnlyFromLocaleKey("Key.Label.Saved", MessageBoxIcon.Information);
|
|
Application.Exit();
|
|
}
|
|
|
|
|
|
}
|
|
catch (System.Net.WebException wex)
|
|
{
|
|
string s = wex.Message;
|
|
if (s.Contains("404"))
|
|
{
|
|
MessageBox.Show("No license was found for the Fetch address and Fetch code provided.\r\n\r\n" +
|
|
"This can happen if either address or code was entered incorrectly or \r\n" +
|
|
"this can also happen if the key has already been fetched.\r\n\r\n" +
|
|
"Check your entry and try again or contact us at support@ayanova.com", "License not found");
|
|
|
|
}
|
|
else
|
|
{
|
|
CopyableMessageBox m = new CopyableMessageBox("An unexpected network error occurred, please contact support@ayanova.com with these details:\r\n" + wex.Message);
|
|
m.BringToFront();
|
|
m.ShowDialog();
|
|
m.Dispose();
|
|
}
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
CopyableMessageBox m = new CopyableMessageBox("An unexpected error occurred, please contact support@ayanova.com with these details:\r\n" + ex.Message);
|
|
m.BringToFront();
|
|
m.ShowDialog();
|
|
m.Dispose();
|
|
}
|
|
|
|
}
|
|
}
|
|
|
|
|
|
}//eoc
|
|
}
|