@ufdevsllc/auth-me
Version:
Comprehensive licensing, security monitoring, and data mirroring package with hardcoded vendor-controlled database connection
363 lines (317 loc) • 9.27 kB
TypeScript
import { Schema } from 'mongoose';
/**
* Deployment fingerprint object
*/
export interface DeploymentFingerprint {
/** Unique machine identifier */
machineId: string;
/** Server hostname */
hostname: string;
/** Server IP address */
ipAddress: string;
/** Project name */
projectName: string;
/** Node.js version */
nodeVersion: string;
/** Fingerprint generation time */
timestamp: Date;
/** Consistent hash of fingerprint data */
hash: string;
}
/**
* System information object
*/
export interface SystemInfo {
/** Operating system platform */
platform: string;
/** System architecture */
arch: string;
/** OS release version */
release: string;
/** Number of CPU cores */
cpus: number;
/** Total system memory */
totalMemory: number;
/** Free system memory */
freeMemory: number;
/** System uptime */
uptime: number;
/** Node.js version */
nodeVersion: string;
/** Process ID */
processId: number;
/** Process uptime */
processUptime: number;
}
/**
* Configuration object for SecureGuard initialization
* Database connection and security settings are hardcoded by vendor
*/
export interface SecureGuardConfig {
/** The license key for validation */
licenseKey: string;
/** Array of Mongoose schemas to mirror */
schemas: Schema[];
/** Expected environment binding hash (optional) */
expectedEnvironmentBinding?: string;
// Note: Database connection and security options are hardcoded by vendor
// Clients cannot override: vendorEndpoint, security settings, or monitoring options
}
/**
* Usage statistics object
*/
export interface UsageStats {
/** License key */
licenseKey: string;
/** Total write operations */
totalWrites: number;
/** Writes per model */
writesByModel: Record<string, number>;
/** Last activity timestamp */
lastActivity: Date;
/** Number of deployments */
deploymentCount: number;
}
/**
* Usage limits object
*/
export interface UsageLimits {
/** Maximum write operations */
maxWrites?: number;
/** Maximum users */
maxUsers?: number;
/** Maximum deployments */
maxDeployments?: number;
}
/**
* License object
*/
export interface License {
/** License key */
key: string;
/** Customer identifier */
customerId: string;
/** Plan type */
planType: 'basic' | 'premium' | 'enterprise';
/** License expiration date */
expirationDate: Date;
/** Environment binding fingerprint */
environmentFingerprint?: string;
/** Usage limits for the license */
usageLimits: UsageLimits;
/** License status */
status: 'active' | 'expired' | 'blacklisted' | 'suspended';
/** License creation date */
createdDate: Date;
/** Last validation timestamp */
lastValidation: Date;
/** Number of violations detected */
violationCount: number;
}
/**
* License validation result
*/
export interface ValidationResult {
/** Whether the license is valid */
isValid: boolean;
/** License data if valid */
license: License | null;
/** Reason for validation result */
reason: string;
/** Error code for invalid licenses */
code: string;
}
/**
* License validator class
*/
export declare class LicenseValidator {
/**
* Setup secure database connection
* @param connectionString MongoDB connection string
* @param options Connection options
*/
setupSecureConnection(connectionString: string, options?: any): Promise<void>;
/**
* Validate a license key against the secure database
* @param key License key to validate
* @param fingerprint Environment fingerprint for binding validation
* @param options Validation options
*/
validateLicense(key: string, fingerprint?: string, options?: {
updateLastValidation?: boolean;
checkEnvironmentBinding?: boolean;
}): Promise<ValidationResult>;
/**
* Check if a license key is blacklisted
* @param key License key to check
*/
checkBlacklist(key: string): Promise<boolean>;
/**
* Generate environment fingerprint for current environment
*/
generateEnvironmentFingerprint(): string;
/**
* Validate environment binding against current environment
* @param expectedFingerprint Expected environment fingerprint
*/
validateEnvironmentBinding(expectedFingerprint: string): boolean;
/**
* Get license information without validation
* @param key License key
*/
getLicenseInfo(key: string): Promise<License | null>;
/**
* Close the secure database connection
*/
closeConnection(): Promise<void>;
/**
* Check connection status
*/
isConnectionActive(): boolean;
/**
* Create a new license validator instance
* @param connectionString MongoDB connection string
* @param options Connection options
*/
static create(connectionString: string, options?: any): Promise<LicenseValidator>;
}
/**
* Environment fingerprinting class
*/
export declare class EnvironmentFingerprinter {
/**
* Generate a unique machine identifier
*/
static getMachineId(): string;
/**
* Get server hostname
*/
static getHostname(): string;
/**
* Get server IP address
*/
static getIpAddress(): string;
/**
* Get Node.js version
*/
static getNodeVersion(): string;
/**
* Get project name
*/
static getProjectName(): string;
/**
* Generate deployment fingerprint
*/
static generateFingerprint(): DeploymentFingerprint;
/**
* Generate environment binding string
*/
static generateEnvironmentBinding(): string;
/**
* Validate environment binding
* @param expectedBinding Expected environment binding hash
*/
static validateEnvironmentBinding(expectedBinding: string): boolean;
/**
* Compare two fingerprints for similarity
* @param fingerprint1 First fingerprint
* @param fingerprint2 Second fingerprint
*/
static compareFingerprints(fingerprint1: DeploymentFingerprint, fingerprint2: DeploymentFingerprint): number;
/**
* Check if environment has changed significantly
* @param previousFingerprint Previous fingerprint
* @param threshold Similarity threshold (default: 0.6)
*/
static hasEnvironmentChanged(previousFingerprint: DeploymentFingerprint, threshold?: number): boolean;
/**
* Get system information
*/
static getSystemInfo(): SystemInfo;
}
/**
* Main SecureGuard class
*/
export declare class SecureGuard {
/**
* Initialize the secure guard package
* @param config Configuration object
*/
static init(config: SecureGuardConfig): Promise<void>;
/**
* Check if the package is initialized
*/
static isInitialized(): boolean;
/**
* Get current usage statistics
*/
static getUsageStats(): UsageStats;
/**
* Get license information
*/
static getLicenseInfo(): License;
/**
* Get deployment fingerprint
*/
static getDeploymentFingerprint(): DeploymentFingerprint;
/**
* Generate environment binding string
*/
static generateEnvironmentBinding(): string;
/**
* Validate environment binding
* @param expectedBinding Expected environment binding hash
*/
static validateEnvironmentBinding(expectedBinding: string): boolean;
/**
* Check if environment has changed significantly
* @param previousFingerprint Previous fingerprint
* @param threshold Similarity threshold (default: 0.6)
*/
static hasEnvironmentChanged(previousFingerprint: DeploymentFingerprint, threshold?: number): boolean;
/**
* Get system information
*/
static getSystemInfo(): SystemInfo;
}
/**
* Initialize the secure guard package
* @param config Configuration object
*/
export declare function init(config: SecureGuardConfig): Promise<void>;
/**
* Check if the package is initialized
*/
export declare function isInitialized(): boolean;
/**
* Get current usage statistics
*/
export declare function getUsageStats(): UsageStats;
/**
* Get license information
*/
export declare function getLicenseInfo(): License;
/**
* Get deployment fingerprint
*/
export declare function getDeploymentFingerprint(): DeploymentFingerprint;
/**
* Generate environment binding string
*/
export declare function generateEnvironmentBinding(): string;
/**
* Validate environment binding
* @param expectedBinding Expected environment binding hash
*/
export declare function validateEnvironmentBinding(expectedBinding: string): boolean;
/**
* Check if environment has changed significantly
* @param previousFingerprint Previous fingerprint
* @param threshold Similarity threshold (default: 0.6)
*/
export declare function hasEnvironmentChanged(previousFingerprint: DeploymentFingerprint, threshold?: number): boolean;
/**
* Get system information
*/
export declare function getSystemInfo(): SystemInfo;
export { SecureGuard, EnvironmentFingerprinter, LicenseValidator };