0.7.64 • Published 2 years ago

evoleap-licensing v0.7.64

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

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}`);
    });