@wibus-studio/keygen-node
v0.0.4
Published
Node.js SDK for Keygen.sh. Specially customized for private use.
Readme
Keygen Node.js SDK
Node.js SDK for Keygen.sh. Specially customized for private use.
Motivation
The Keygen.sh platform does not provide any usable SDK, with only an official keygen-go and an unofficial keygen-rust. Neither of these SDKs align with my technology stack, so I had to write my own...
Additionally, these SDKs are merely implementations of the API Reference, requiring users to implement all the necessary details themselves. I need a convenient SDK that can easily handle product activation/validation/deactivation processes... and to achieve this, we need to create our own library...
There are many customizations that I have made to the SDK, so it is not suitable for public use.
Features
- [x] License Validation
- [x] Machine Activation
- [x] Machine Deactivation
- [x] Get System Information
Usage
pnpm install @wibus-studio/keygen-nodeBasic Usage
If you are inside my studio, you can use the following code to initialize the client:
Initialize Client
import { KeygenClient } from "@wibus-studio/keygen-node";
const client = new KeygenClient({
accountId: "YOUR_ACCOUNT_ID",
productId: "YOUR_PRODUCT_ID",
// Optional configuration
baseUrl: "https://api.keygen.sh/v1",
// Whether to require fingerprint validation
requireFingerprintValidation: true,
// System identifier configuration
systemIdentifier: {
includeFingerprint: true,
includePlatform: true,
includeHostname: true,
includeIp: true,
includeCores: true,
metadata: {
// Custom metadata
},
},
});License Validation
[!IMPORTANT] You need to check the validity of the license yourself. For more information, please refer to the API Reference.
// Basic validation
const validation = await client.validateLicense("LICENSE_KEY");
if (validation.meta.valid) {
// ⚠️ You need to check the validity of the license yourself!!!
console.log("License is valid");
console.log("License details:", validation.data);
} else {
console.log("License is invalid:", validation.meta.detail);
}
// Validation with system information
const validationWithSystem =
await client.validateLicenseWithSystem("LICENSE_KEY");Machine Activation
// Activate machine
const activation = await client.activateMachine("LICENSE_ID", "LICENSE_KEY");
console.log("Machine activated:", activation.data);
// Deactivate machine
await client.deactivateMachine("MACHINE_ID", "LICENSE_KEY");Error Handling
All errors are thrown as Error objects.
We provide a ApiError type to help you handle errors. It's following the API Reference.
import type { ApiError } from "@wibus-studio/keygen-node";API Reference
KeygenClient Configuration Options
interface KeygenConfig {
// Required parameters
accountId: string; // Keygen account ID
productId: string; // Product ID
// Optional parameters
baseUrl?: string; // API base URL
version?: string; // API version
requireFingerprintValidation?: boolean; // Whether to require fingerprint validation
systemIdentifier?: SystemIdentifierConfig; // System identifier configuration
}
interface SystemIdentifierConfig {
includeFingerprint?: boolean; // Whether to include fingerprint
includePlatform?: boolean; // Whether to include platform information
includeHostname?: boolean; // Whether to include hostname
includeIp?: boolean; // Whether to include IP
includeCores?: boolean; // Whether to include CPU cores
metadata?: Record<string, any>; // Custom metadata
}License Status
License may have the following statuses:
enum LicenseStatus {
ACTIVE = "ACTIVE", // Active
INACTIVE = "INACTIVE", // Inactive
EXPIRING = "EXPIRING", // Expiring
EXPIRED = "EXPIRED", // Expired
SUSPENDED = "SUSPENDED", // Suspended
BANNED = "BANNED", // Banned
}Validation Status
Validation response will contain one of the following statuses:
enum LicenseValidationStatus {
VALID = "VALID", // Valid
SUSPENDED = "SUSPENDED", // Suspended
EXPIRED = "EXPIRED", // Expired
OVERDUE = "OVERDUE", // Overdue
NOT_FOUND = "NOT_FOUND", // Not found
NO_MACHINE = "NO_MACHINE", // No machine
NO_MACHINES = "NO_MACHINES", // No machine group
TOO_MANY_MACHINES = "TOO_MANY_MACHINES", // Too many machines
// ... More statuses please refer to type definition
}References
Author
Keygen Node.js SDK © Wibus. Created on Jan 19, 2025. All rights reserved.
Personal Website · Blog · GitHub @wibus-wee · Telegram @wibus✪
