0.7.64 • Published 2 years ago
evoleap-licensing v0.7.64
evoleap-licensing
Client API for elm
This library includes code required to interact with evoleap license manager (https://elm.evoleap.com) for managing servers with users (usually web server applications)
Getting Started
After acquiring an elm login from evoleap, you can set up products. You will need:
- A Product ID
- One or more version numbers
- A public key for your product
After a product is set up, you can set up licenses in the elm portal. Each license has a unique license key.
Registering a license
To use elm, first import the elm library:
const elm = require('evoleap-licensing');
or
import * as elm from 'evoleap-licensing';
Next, on server startup, register the elm server by calling:
function getDefaultServerState() {
return {
registered: false,
registeredAt: '',
failedRegistrationTimes: [],
failedValidationTimes: [],
featureGroups: [],
features: [],
firstLaunchTime: '',
gracePeriodForValidationFailures: 0,
instanceId: '',
lastSuccessfulValidationTime: '',
lastValidationStatus: 0,
};
}
const emptyInstanceIdentity = {
MaximumMismatchCount: 1,
Values: new Map(),
Version: 1,
};
const productId = '818FE2BC-6D57-4BF9-AB89-B94684FC1185';
const version = '1.0';
const publicKey = `-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyfhD/yW2quaZYHGeXOHQ
MAWxZ7QWLnKq9fs23LAd2ERTcAYRnz1GsLcTMUNHpdrUwsnzAduiw/DFPT9i0IOX
GQpCZcvfQO6YXAsNKna7Q1/3LVM6IHLyjAEdLWGF2USUENRIIOfkk5WyJxsHdXS9
jt+1Nt7z9KKZ1tpZS8ixxKH5Eaew/5y9D3XtP6H6nBXT7I7G7BMeAdJ2pfzfwAlD
kyRQs09qL/qK1DAyJKxS8GV6zLUMpoKBqy+7x5shO3SYIp+opUu7gnqYuWFS7K+n
UGdrrzUyRip2z4eLUj8TwmxXNVfn9Ci/TFW05eiIWd7NT8cTL5761BgJj2wbe0F2
HQIDAQAB
-----END PUBLIC KEY-----`;
const licenseKey = '02TRD-TYQZA-11DO4-238L6-91JOZ';
const licenseState = elm.server.getServerControlManager(
productId,
version,
publicKey,
getDefaultServerState(),
elmPrefix
);
elm.hardware.addAllHardwareKeys(emptyInstanceIdentity)
.then((instanceIdentity) => {
elm.server.registerServer(
licenseKey,
licenseState,
instanceIdentity
))
.then((registrationResult) => {
if (!registrationResult.success) {
console.log(`Server registration was unsuccessful: ${registrationResult.message}`);
} else {
console.log('elm server registration successful!');
// Updated state is in registrationResult.state
elm.server.validateInstance(registrationResult.state, instanceIdentity)
.then((instanceValidity) => {
if (!instanceValidity || !instanceValidity.isValid) {
if (!instanceValidity) {
console.log('Server instance validation failed: unknown reason');
} else {
console.log(`Server instance validation failed: ${elm.state.InvalidReason[instanceValidity.InvalidReason]}`);
}
} else {
console.log('elm server instance valid!');
}
})
.catch((err) => {
console.log(`Licensing error validating instance ${err}`);
});
}
})
.catch((err) => {
console.log(`Licensing error registering instance ${err}`);
});
})
.catch((err) => {
console.log(`Licensing error adding hardware keys ${err}`);
});