Skip to content

Commit

Permalink
Fix an issue with GetKey not recording IP and Friendly Name
Browse files Browse the repository at this point in the history
  • Loading branch information
artemlos committed Nov 2, 2021
1 parent 38dc1d2 commit 5dfd456
Show file tree
Hide file tree
Showing 4 changed files with 25 additions and 13 deletions.
15 changes: 9 additions & 6 deletions LicenseServer/Helpers.cs
Expand Up @@ -42,6 +42,7 @@ public static string ProcessActivateRequest(byte[] stream, Dictionary<LAKey, LAR

var licenseKey = nvc.Get("Key");
var machineCode = nvc.Get("MachineCode");
var friendlyName = nvc.Get("FriendlyName");
int floatingTimeInterval = -1;
int.TryParse(nvc.Get("FloatingTimeInterval"), out floatingTimeInterval);

Expand Down Expand Up @@ -86,7 +87,7 @@ public static string ProcessActivateRequest(byte[] stream, Dictionary<LAKey, LAR
activationData = activatedMachinesFloating.AddOrUpdate(key, x => new ConcurrentDictionary<string, ActivationData>(), (x, y) => y);
}

if(method == APIMethod.GetKey)
if (method == APIMethod.GetKey)
{
FloatingResult(result, null, null, context, 1, activationData.Values.Select(x => new ActivationData { Time = x.Time, FloatingExpires = x.FloatingExpires, FriendlyName = x.FriendlyName, IP = x.IP, Mid = x.Mid }).ToList());
return $"Floating license {licenseKey} returned successfully using a GetKey request. The data from the local license server is used.";
Expand All @@ -99,12 +100,14 @@ public static string ProcessActivateRequest(byte[] stream, Dictionary<LAKey, LAR
if(activation != null && activation.FloatingExpires > DateTime.UtcNow)
{
activation.FloatingExpires = DateTime.UtcNow.AddSeconds(floatingTimeInterval);
activation.FriendlyName = friendlyName;
activation.IP = context.Request.RemoteEndPoint.ToString();
FloatingResult(result, activation, machineCode, context);
return $"Floating license {licenseKey} returned successfully.";
}
else if(activationData.Count(x=> x.Value.FloatingExpires > DateTime.UtcNow) < result.LicenseKey.MaxNoOfMachines)
{
activation = activationData.AddOrUpdate(machineCode, x=> new ActivationData { Mid = machineCode, Time = DateTime.UtcNow, FloatingExpires = DateTime.UtcNow.AddSeconds(floatingTimeInterval) }, (x,y) => new ActivationData { Mid = machineCode, Time = y.Time, FloatingExpires = DateTime.UtcNow.AddSeconds(floatingTimeInterval) });
activation = activationData.AddOrUpdate(machineCode, x=> new ActivationData { Mid = machineCode, Time = DateTime.UtcNow, FloatingExpires = DateTime.UtcNow.AddSeconds(floatingTimeInterval), FriendlyName = friendlyName, IP = context.Request.RemoteEndPoint.ToString() }, (x,y) => new ActivationData { Mid = machineCode, Time = y.Time, FloatingExpires = DateTime.UtcNow.AddSeconds(floatingTimeInterval), FriendlyName = friendlyName, IP = context.Request.RemoteEndPoint.ToString() });

FloatingResult(result, activation, machineCode, context);
return $"Floating license {licenseKey} returned successfully.";
Expand All @@ -120,7 +123,7 @@ public static string ProcessActivateRequest(byte[] stream, Dictionary<LAKey, LAR
}
else
{
var activation = new ActivationData { Mid = machineCode, Time = DateTime.UtcNow, FloatingExpires = DateTime.UtcNow.AddSeconds(floatingTimeInterval) };
var activation = new ActivationData { Mid = machineCode, FriendlyName = friendlyName, IP = context.Request.RemoteEndPoint.ToString(), Time = DateTime.UtcNow, FloatingExpires = DateTime.UtcNow.AddSeconds(floatingTimeInterval) };
FloatingResult(result, activation, machineCode, context);
return $"Floating license {licenseKey} returned successfully.";
}
Expand Down Expand Up @@ -230,12 +233,12 @@ public static void FloatingResult(LAResult result, ActivationData activation, st

if (activations != null)
{
licenseKeyToReturn.ActivatedMachines = activations.Select(x => new ActivationDataPI { FriendlyName = x.FriendlyName, IP = x.IP, Time = ToUnixTimestamp(x.Time.Value), Mid = $"floating:{x.Mid}"}).ToList();
licenseKeyToReturn.ActivatedMachines = activations.Select(x => new ActivationDataPIV3 { FriendlyName = x.FriendlyName, IP = x.IP, Time = ToUnixTimestamp(x.Time.Value), Mid = $"floating:{x.Mid}", FloatingExpires = ToUnixTimestamp(x.FloatingExpires.Value)}).ToList();
}
else
{
licenseKeyToReturn.ActivatedMachines = new List<ActivationDataPI>() { new ActivationDataPI { Mid = $"floating:{machineCode}", Time =
ToUnixTimestamp(activation.Time.Value)} };
licenseKeyToReturn.ActivatedMachines = new List<ActivationDataPIV3>() { new ActivationDataPIV3 { Mid = $"floating:{machineCode}", Time =
ToUnixTimestamp(activation.Time.Value), FriendlyName = activation.FriendlyName, IP = activation.IP, FloatingExpires = ToUnixTimestamp(activation.FloatingExpires.Value) } };
}

licenseKeyToReturn.Block = result.LicenseKey.Block;
Expand Down
13 changes: 11 additions & 2 deletions LicenseServer/LicenseKeyPI.cs
Expand Up @@ -54,7 +54,7 @@ public LicenseKeyPI()

public CustomerPI Customer { get; set; }

public List<ActivationDataPI> ActivatedMachines { get; set; }
public List<ActivationDataPIV3> ActivatedMachines { get; set; }

public bool TrialActivation { get; set; }

Expand All @@ -74,7 +74,7 @@ public LicenseKey ToLicenseKey()

foreach (var item in ActivatedMachines)
{
activationData.Add(new ActivationData() { IP = item.IP, Mid = item.Mid, Time = epoch.AddSeconds(item.Time) });
activationData.Add(new ActivationData() { IP = item.IP, Mid = item.Mid, Time = epoch.AddSeconds(item.Time), FriendlyName = item.FriendlyName, FloatingExpires = epoch.AddSeconds(item.FloatingExpires) });
}

return new LicenseKey
Expand Down Expand Up @@ -130,4 +130,13 @@ public class ActivationDataPI
public string FriendlyName { get; set; }
}

public class ActivationDataPIV3
{
public string Mid { get; set; }
public string FriendlyName { get; set; }
public string IP { get; set; }
public long Time { get; set; }
public long FloatingExpires { get; set; }
}

}
6 changes: 3 additions & 3 deletions LicenseServer/LicenseServerCore.csproj
Expand Up @@ -18,13 +18,13 @@

<PackageId>LicenseServer</PackageId>

<AssemblyVersion>2.5.1.0</AssemblyVersion>
<AssemblyVersion>2.6.1.0</AssemblyVersion>

<FileVersion>2.5.1.0</FileVersion>
<FileVersion>2.6.1.0</FileVersion>

<Copyright>Copyright © 2019 - 2021 Cryptolens AB</Copyright>

<Version>2.5</Version>
<Version>2.6</Version>

<AssemblyName>LicenseServer</AssemblyName>

Expand Down
4 changes: 2 additions & 2 deletions LicenseServer/Program.cs
Expand Up @@ -29,7 +29,7 @@ namespace LicenseServer
{
class Program
{
public const string versionInfo = "v2.5 (2021-10-21)" ;
public const string versionInfo = "v2.6 (2021-11-02)" ;

public const string ServiceName = "license-server";

Expand Down Expand Up @@ -77,7 +77,7 @@ protected override void OnStop()

// A configuration can be generated on https://app.cryptolens.io/extensions/licenseserver
// More instructions can be found here: https://github.com/Cryptolens/license-server/#floating-licenses-offline
public static string ConfigurationFromCryptolens = "ksUFW5jNH5DNAW3DkaxsaWNlbnNlZmlsZXPD2gGfPFJTQUtleVZhbHVlPjxNb2R1bHVzPnNHYnZ4d2RsRGJxRlhPTWxWVW5BRjVldzB0MFdwUFc3ckZwSTVqSFFPRmtodC8zMjZkdmg3dDc0UlllTXBqeTM1N05sam91aHBUTEEzYTZpZG5uNGo2YzNqbVBXQmtqWm5kR3NQTDRCcW0rZndFNDhuS3BHUGprajRxL3l6VDR0SFhCVHl2YUJqQThiVm9DVG51K0xpQzRYRWFMWlJUaEd6SW41S1FYS0NpZ2c2dFFSeTBHWEUxM1hZRlZ6L3gxbWpGYlQ5LzdkUzhwODVuOEJ1d2xZNUp2dUJJUWtLaHVDTkZmclV4Qld5dTg3Q0ZuWFdqSXVwQ0QyVk8vR2J4YUN2enJSakxaakFuZ0xDTXRaYllCQUxrc3FHUGdUVU43Wk0yNFhiUFd5THRLUGFYRjJpNFhSUjl1NmVUajVCZm5MYktBVTVQSVZmaklTK3ZOWVlvZ3RlUT09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPtoDkzxSU0FLZXlWYWx1ZT48TW9kdWx1cz5td0JwdVliQW52QlNPQmtzbDJrTUlRcTluTHM5Z2FoaUpyUGtHTjZrT1h4Q0ZVbi8wN0MybWR1TVhRTkxtdEdVaWZQaGQ3TnJpZy91NGRCUlJyOWZNcEgxNDNwcFFwemhOM2dXemZsTlpDUDA3RU45VUJyZ2hwTks0cTlHUkF3VHFJM0VyMWFaQmd5K3hjTGJwQWVhQ1VZbjYwZ2hLdkQwSzl0Qkl0ejdEOXM9PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48UD51TlVoaUF2UU10SFdha1l4Q0ZlYmROemR2Z3B3dGxZY2hacnAvc1BuMmx5ZCswY05Ibm4wcnlTYm5LRXk1QVlMSHdzR3d6NzJOQXowd1NDV0pPUlArUT09PC9QPjxRPjFxN2IvUVdxTEpuSUFyS3ZhVTlLZG93M283N2VYRzRuNjE2TGFuVDliVDR3cDdkeCtta2ZDMHVCa1hIaHlGbjZsL3VEc0N3bzMybURQQm9pZEpMN2N3PT08L1E+PERQPmQwRmswaSsxRktVWmNCWjcyb01VRlpIUUxLYjExRis1SldjdnBTWm51UmRiQTE3emt2OWpKWUk4T1JJMUVMVHBoZzBLUHYybnd5dTgyOE1YdlJQbW1RPT08L0RQPjxEUT5YSTV3MitwNFR0aFNLZytkbnJxSHNRcU01blRnNjFxMnJUeEt3VEFGSHZja0JQc0xFZG9HZjFraldIQ1AxbEFzd1IrM3k5bU9HWndrNzJHWkgwZExUdz09PC9EUT48SW52ZXJzZVE+bjNveVFJWStrcDVza1RIc2doUkx6Y0R5d0hOMHRibDk1UWRuR1JMaWpKdTEwZU9rOTY0cUcydndxbVRhSUNSdTVLc1dXdlI3U3IraVhpaHViL0wyeVE9PTwvSW52ZXJzZVE+PEQ+RnJhWFI0Zi9CdXRaYVA0TFlqNlM5KzZPZlg2VWswRGM3U1gwT1U2Nnl1K3g4Vk93S05HZTJHbnJKaUFhL3B0U2hHcVg4Z1g1THJpSi9VNGM4dHlOTXUzVVNlbkxUTHp3MUJYa2MwK3E3cGtUcU0vWEpFV1Blb056NGlyZlA3RlRzajhzZnBvMFpNZDUza3M3SG9LMFBCeEh2RncvTnZya2RpeUZUU0lLbDRrPTwvRD48L1JTQUtleVZhbHVlPpLX/0Kh5FBiyDxyAMUBAGstJe4ROJWsaqrJkdTeYtSUtXstslHf0J8k6nfMROTg9E0qM2mjtky3OdlbvT834VoEzsl208A8y4QqCo6HAhJmMmwUh5+5rMKz/Z3T+EkHyT0RIN42M36G9y9PsAYM3qzrmLPzj6lvksETdAT+i0k4Yv/iRoxsO9yGLuf+J533x4wLjkiBr0NlVDQTbx4ZHMLSDOIxNzU2d1diDW3kliGBJu29AuQE+jdB7pFaCD+JxmFIsjGNAR6QcKYmli0Q1Uzl4jrCGks6R0ldSOsbraf+qqIEQP+80GwZU/H08YR6KCgHcLM6JU73HA160Wn2CgXuOqYU1UJdp4Cn4vN/e80=";
public static string ConfigurationFromCryptolens = "ksUFW5jNH5DNAW3DkaxsaWNlbnNlZmlsZXPD2gGfPFJTQUtleVZhbHVlPjxNb2R1bHVzPnNHYnZ4d2RsRGJxRlhPTWxWVW5BRjVldzB0MFdwUFc3ckZwSTVqSFFPRmtodC8zMjZkdmg3dDc0UlllTXBqeTM1N05sam91aHBUTEEzYTZpZG5uNGo2YzNqbVBXQmtqWm5kR3NQTDRCcW0rZndFNDhuS3BHUGprajRxL3l6VDR0SFhCVHl2YUJqQThiVm9DVG51K0xpQzRYRWFMWlJUaEd6SW41S1FYS0NpZ2c2dFFSeTBHWEUxM1hZRlZ6L3gxbWpGYlQ5LzdkUzhwODVuOEJ1d2xZNUp2dUJJUWtLaHVDTkZmclV4Qld5dTg3Q0ZuWFdqSXVwQ0QyVk8vR2J4YUN2enJSakxaakFuZ0xDTXRaYllCQUxrc3FHUGdUVU43Wk0yNFhiUFd5THRLUGFYRjJpNFhSUjl1NmVUajVCZm5MYktBVTVQSVZmaklTK3ZOWVlvZ3RlUT09PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48L1JTQUtleVZhbHVlPtoDkzxSU0FLZXlWYWx1ZT48TW9kdWx1cz5zcWp4TzgwOXV0dmdTazc5RCt4NzBNZjhPNUlEZ0VsV3QwUkY0Znk0NVpKNkRpajl2UkxYU1JMSHpvZENvWGhFeVp4SDZQcjU2YnZrTHlsaUNiUkozWGhPU24yRmNPQ24vT0M5T1lJdjdScHBsRU9LMWM2c2hsRmQrbktMV3llOTZ5M0Q4Q3RZbU5MQkQrWnJpaCsrUVByK3ZjRW9aK3pWVTJBNVBlRGx1dHM9PC9Nb2R1bHVzPjxFeHBvbmVudD5BUUFCPC9FeHBvbmVudD48UD4wSytQdG5FcEVhVDI2SVRxNjBDYW5wRXFsdVk3TnpRazBDVjNtd2h3TTJBVm5xOFM1RTY5NzByWkVSN00rWG4xRVJhdExvQU1IRkVjdEJVMHJBTlJ1dz09PC9QPjxRPjJ5cWlod0V6cDZoMlN4OHU4NUhtQ0hNZlNCdHFidWx4UFhMR096WE5BTXRUeFNEUncwTjJqRmNSbU93Nm8xeVNkbE83UFhvbWVKdG43bHNoaVRHWllRPT08L1E+PERQPmJDZnhSYzhVUis3RmdQRVNoK2F0dkN6a2M5elRKK05BaVJoQ0N2bXVuUkhaWXFxK0VkRzFvc1dhQnNOOTNIYVd5c3FENnl1Mkd4NzJ6MmFHSy9oMGJRPT08L0RQPjxEUT5QQ1VTSHh4OFVYbFFwVUwwZnBFK1lIay9UMmwrcHR0WFlUYWJJZXFjektmLzRDd21oSUNDQ3ZkbDgrSjRJUmFwZHVGNWsrQnVxRkIxa0JyZ05DY3hZUT09PC9EUT48SW52ZXJzZVE+b2ZJVnc3Mmxwem1rQlVmUkJJYVhRV29WZldkU0djeFVIdHFEUGc1SFJUVnZXQ3UxcElsT0pxMDBRVlc4VFZTS2tVV3ZiRGJpUGZWbUkzaHliVXBPM3c9PTwvSW52ZXJzZVE+PEQ+UXlpZGtlRExlUi9wRnBYTnEvdzE2TndjTlZwa1pZZHNDUFVwbmRNdHYrS0piaVE3aWFUNDkzZVBVMVBtR0tPSW5BN2F1em9JMHJOMkNjSnhIM3U5bmRtanRHLzFuQWhWRXhnN0R2a09oOU55K24yRFVtNlVtTDJwS1liSnVGNFVyeVEyMEZOSE12WEs5K2pUMEl1Ynhzc3JNYzZVMGFtTGtwZWwyMnhmU1NFPTwvRD48L1JTQUtleVZhbHVlPpLX/xNXkZBjYiw0AMUBAGIPD6Z1i5Ze9xVOHLDxFSa7JvDTvd7zld7LEQ5dCxtiezrjibT2Mo7PsWZd/ZEYZcBrwT0LtAEDkKvLUEWs0PCRLaMAflWHb4Zh+16uEYePYduU/4GxDhhDXxktzowX6EJA8KywsqrPUZgOgPijsjdHnqi63+PzGIhl7dBOphBuM2U441zh370PGIz0h58RZZh4CLGCcbCTNTHzEkBTT+eh4LT8g6GW5xfTVWAohRxUkMQr1zOoYCZm3hyhjmiNsPaXTdrOMSGvkoRzpBuxYhGaeaTl+fN0TJupuW+y+GPC6tp/0GOCFEvDIDxCbbajY0BpOQFWIxTR9PV0fXta7rU=";


static void Main(string[] args)
Expand Down

0 comments on commit 5dfd456

Please sign in to comment.