forked from ayende/rhino-licensing
-
Notifications
You must be signed in to change notification settings - Fork 22
/
LicenseValidator.cs
84 lines (77 loc) · 2.67 KB
/
LicenseValidator.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using System;
using System.IO;
namespace Rhino.Licensing
{
/// <summary>
/// License validator validates a license file
/// that can be located on disk.
/// </summary>
public class LicenseValidator : AbstractLicenseValidator
{
private readonly string licensePath;
private string inMemoryLicense;
/// <summary>
/// Creates a new instance of <seealso cref="LicenseValidator"/>.
/// </summary>
/// <param name="publicKey">public key</param>
/// <param name="licensePath">path to license file</param>
public LicenseValidator(string publicKey, string licensePath)
: base(publicKey)
{
this.licensePath = licensePath;
}
/// <summary>
/// Creates a new instance of <seealso cref="LicenseValidator"/>.
/// </summary>
/// <param name="publicKey">public key</param>
/// <param name="licensePath">path to license file</param>
/// <param name="licenseServerUrl">license server endpoint address</param>
/// <param name="clientId">Id of the license holder</param>
public LicenseValidator(string publicKey, string licensePath, string licenseServerUrl, Guid clientId)
: base(publicKey, licenseServerUrl, clientId)
{
this.licensePath = licensePath;
}
/// <summary>
/// Gets or Sets the license content
/// </summary>
protected override string License
{
get
{
return inMemoryLicense ?? File.ReadAllText(licensePath);
}
set
{
try
{
File.WriteAllText(licensePath, value);
}
catch (Exception e)
{
inMemoryLicense = value;
Log.Warn("Could not write new license value, using in memory model instead", e);
}
}
}
/// <summary>
/// Validates loaded license
/// </summary>
public override void AssertValidLicense()
{
if (File.Exists(licensePath) == false)
{
Log.WarnFormat("Could not find license file: {0}", licensePath);
throw new LicenseFileNotFoundException();
}
base.AssertValidLicense();
}
/// <summary>
/// Removes existing license from the machine.
/// </summary>
public override void RemoveExistingLicense()
{
File.Delete(licensePath);
}
}
}