UNPKG

@ufdevsllc/authme2.0

Version:

SDK for license management and remote monitoring with automatic system tracking, license validation, and remote control capabilities

392 lines (286 loc) 10.9 kB
# License Monitoring SDK A comprehensive SDK for license management and remote monitoring with automatic system tracking, license validation, and remote control capabilities. ## Features - **License Validation**: Automatic license key validation with distribution limits - **System Tracking**: Automatic collection of system information and deployment details - **Remote Control**: Database-driven remote command execution and application control - **Data Logging**: Flexible API for logging user data operations - **MongoDB Integration**: Built-in MongoDB connectivity for monitoring operations - **Error Handling**: Comprehensive error handling and logging system ## Installation ```bash npm install @ufdevsllc/authme2.0 ``` ## Quick Start ### Basic Usage ```javascript import LicenseMonitoringSDK from '@ufdevsllc/authme2.0'; // Initialize the SDK const sdk = new LicenseMonitoringSDK(); async function initializeApp() { try { // Initialize with your license key await sdk.init('your-license-key-here'); console.log('SDK initialized successfully'); // Your application code here } catch (error) { console.error('SDK initialization failed:', error.message); process.exit(1); } } initializeApp(); ``` ### Advanced Usage with Options ```javascript import LicenseMonitoringSDK from '@ufdevsllc/authme2.0'; const sdk = new LicenseMonitoringSDK(); async function initializeApp() { try { await sdk.init('your-license-key-here', { validateLicense: true, // Enable license validation (default: true) startSystemTracking: true, // Enable system tracking (default: true) startRemoteControl: true, // Enable remote control (default: true) exitOnLicenseFailure: true, // Exit on license failure (default: true) logToConsole: true // Log to console (default: true) }); console.log('SDK initialized with custom options'); } catch (error) { console.error('Initialization failed:', error.message); } } ``` ## API Reference ### Initialization #### `sdk.init(licenseKey, options)` Initialize the SDK with a license key and optional configuration. **Parameters:** - `licenseKey` (string): Your license key (required) - `options` (object): Configuration options (optional) **Options:** - `validateLicense` (boolean): Enable license validation (default: true) - `startSystemTracking` (boolean): Enable automatic system tracking (default: true) - `startRemoteControl` (boolean): Enable remote control capabilities (default: true) - `exitOnLicenseFailure` (boolean): Exit process on license validation failure (default: true) - `logToConsole` (boolean): Enable console logging (default: true) ### Data Logging #### `sdk.logData(collection, data, operation)` Log data operations to the monitoring database. ```javascript // Log user data await sdk.logData('users', { name: 'John Doe', email: 'john@example.com' }, 'create'); // Log custom operations await sdk.logData('orders', { orderId: '12345', amount: 99.99 }, 'purchase'); ``` #### `sdk.logUserActivity(userId, action, details)` Log user activity with additional details. ```javascript await sdk.logUserActivity('user123', 'login', { ip: '192.168.1.1', userAgent: 'Mozilla/5.0...', timestamp: new Date() }); ``` #### `sdk.logModelOperation(modelName, operation, data)` Log model-specific operations. ```javascript await sdk.logModelOperation('User', 'update', { userId: 'user123', changes: { email: 'newemail@example.com' } }); ``` ### License Management #### `sdk.isLicenseValid()` Check if the current license is valid. ```javascript const isValid = await sdk.isLicenseValid(); if (!isValid) { console.log('License is invalid or expired'); } ``` #### `sdk.getLicenseStatus()` Get detailed license status information. ```javascript const status = await sdk.getLicenseStatus(); console.log('License status:', status); ``` ### Application Control #### `sdk.isApplicationBlocked()` Check if the application is blocked by remote control. ```javascript if (sdk.isApplicationBlocked()) { console.log('Application is blocked:', sdk.getBlockReason()); } ``` ### Health Monitoring #### `sdk.getStatus()` Get current SDK status and component health. ```javascript const status = sdk.getStatus(); console.log('SDK Status:', status); ``` #### `sdk.healthCheck()` Perform a comprehensive health check on all components. ```javascript const health = await sdk.healthCheck(); console.log('Health Check:', health); ``` ### Cleanup #### `sdk.shutdown()` Properly shutdown the SDK and clean up resources. ```javascript // Graceful shutdown process.on('SIGINT', async () => { console.log('Shutting down...'); await sdk.shutdown(); process.exit(0); }); ``` ## Integration Examples ### Express.js Integration ```javascript import express from 'express'; import LicenseMonitoringSDK from '@ufdevsllc/authme2.0'; const app = express(); const sdk = new LicenseMonitoringSDK(); // Initialize SDK before starting server async function startServer() { try { await sdk.init('your-license-key-here'); // Middleware to check if application is blocked app.use((req, res, next) => { if (sdk.isApplicationBlocked()) { return res.status(503).json({ error: 'Service temporarily unavailable', reason: sdk.getBlockReason() }); } next(); }); // Log user activities app.post('/api/users', async (req, res) => { try { // Your user creation logic const user = await createUser(req.body); // Log the operation await sdk.logData('users', user, 'create'); res.json(user); } catch (error) { res.status(500).json({ error: error.message }); } }); app.listen(3000, () => { console.log('Server running on port 3000'); }); } catch (error) { console.error('Failed to start server:', error.message); process.exit(1); } } startServer(); ``` ### Mongoose Integration ```javascript import mongoose from 'mongoose'; import LicenseMonitoringSDK from '@ufdevsllc/authme2.0'; const sdk = new LicenseMonitoringSDK(); // User schema const userSchema = new mongoose.Schema({ name: String, email: String }); // Post-save hook to log operations userSchema.post('save', async function(doc) { try { await sdk.logModelOperation('User', 'save', { userId: doc._id, data: doc.toObject() }); } catch (error) { console.error('Failed to log user save:', error.message); } }); const User = mongoose.model('User', userSchema); // Initialize SDK and connect to your database async function initialize() { try { await sdk.init('your-license-key-here'); await mongoose.connect('your-mongodb-connection-string'); console.log('Application initialized successfully'); } catch (error) { console.error('Initialization failed:', error.message); process.exit(1); } } initialize(); ``` ## Error Handling The SDK includes comprehensive error handling. All methods that can fail will throw errors that should be caught: ```javascript try { await sdk.init('invalid-license-key'); } catch (error) { if (error.message.includes('License validation failed')) { console.error('Invalid license key provided'); // Handle license error } else if (error.message.includes('Database initialization failed')) { console.error('Database connection error'); // Handle database error } else { console.error('Unknown initialization error:', error.message); } } ``` ## Requirements - Node.js >= 14.0.0 - MongoDB connection (handled automatically by the SDK) - Valid license key ## Dependencies - `mongoose`: MongoDB object modeling - `os`: Operating system utilities (built-in Node.js module) ## License ISC ## Documentation ### 📚 Complete Documentation Suite - **[CLIENT-DOCUMENTATION.md](./CLIENT-DOCUMENTATION.md)** - Complete guide for developers integrating the SDK - **[VENDOR-DOCUMENTATION.md](./VENDOR-DOCUMENTATION.md)** - Comprehensive guide for software vendors managing licenses - **[API-REFERENCE.md](./API-REFERENCE.md)** - Complete API reference with all classes and methods - **[FEATURES-OVERVIEW.md](./FEATURES-OVERVIEW.md)** - Detailed overview of all SDK features and capabilities ### 🚀 Quick Links - **Getting Started**: See [CLIENT-DOCUMENTATION.md](./CLIENT-DOCUMENTATION.md#quick-start-guide) - **License Management**: See [VENDOR-DOCUMENTATION.md](./VENDOR-DOCUMENTATION.md#license-creation-and-management) - **Integration Examples**: See [CLIENT-DOCUMENTATION.md](./CLIENT-DOCUMENTATION.md#framework-integrations) - **API Methods**: See [API-REFERENCE.md](./API-REFERENCE.md#main-sdk-class) - **All Features**: See [FEATURES-OVERVIEW.md](./FEATURES-OVERVIEW.md#core-features) ### 📖 Documentation by Role **For Developers/Clients:** - Start with [CLIENT-DOCUMENTATION.md](./CLIENT-DOCUMENTATION.md) for integration guide - Reference [API-REFERENCE.md](./API-REFERENCE.md) for technical details - Check [FEATURES-OVERVIEW.md](./FEATURES-OVERVIEW.md) for feature explanations **For Software Vendors:** - Start with [VENDOR-DOCUMENTATION.md](./VENDOR-DOCUMENTATION.md) for license management - Reference [FEATURES-OVERVIEW.md](./FEATURES-OVERVIEW.md) for monitoring capabilities - Use [API-REFERENCE.md](./API-REFERENCE.md) for technical implementation ## Real-World Testing The SDK has been thoroughly tested with real applications. See the `real-world-test/` directory for: - **[USAGE-GUIDE.md](./real-world-test/USAGE-GUIDE.md)** - Complete usage examples with database output - **[FINAL-SUMMARY.md](./real-world-test/FINAL-SUMMARY.md)** - Implementation summary and verification - **[TEST_RESULTS.md](./real-world-test/TEST_RESULTS.md)** - Comprehensive test results - **Demo Scripts** - Working examples you can run immediately ## Support ### 📞 Support Channels - **Issues**: https://github.com/ufdevsllc/authme2.0/issues - **Documentation**: Complete guides in this repository - **Email**: support@ufdevsllc.com ### 🆘 Getting Help 1. **Check Documentation**: Start with the relevant documentation file above 2. **Run Examples**: Try the examples in `real-world-test/` directory 3. **Search Issues**: Check existing GitHub issues 4. **Create Issue**: Open a new issue with details and error messages ## Author ufdevs llc @rameshvishwakarma