मुख्य सामग्री पर जाएँ
LICENTIVO / INTEGRATION

Node.js और Electron के लिए JavaScript सॉफ़्टवेयर लाइसेंसिंग

Node.js SDK स्थापित करें, ग्राहक की कुंजी सक्रिय करें और असिंक्रोनस निर्यात सुरक्षित करें। Electron के मुख्य प्रोसेस में लाइसेंस क्लाइंट रखकर डिवाइस पहचान और हार्टबीट सँभालें।

Node.js 20+ / Electronअपडेट

1. उत्पाद और लाइसेंस तैयार करें

डिवाइस-बद्ध लाइसेंस और सामान्य export फ़ीचर से शुरू करें। बुनियादी अनुमति प्रक्रिया चलने के बाद उपयोग गणना जोड़ें।

डिवाइस कोटा वर्तमान सक्रियणों से गिना जाता है और रिलीज़ पर लौटता है। सामान्य लाइसेंस ऑफ़लाइन भी गिने जाते हैं; फ्लोटिंग लाइसेंस की लीज़ समाप्त होने पर भी कोटा अपने आप लौटता है।

  1. कंसोल > उत्पाद से उत्पाद ID कॉपी करें। उसी उत्पाद की हस्ताक्षर सार्वजनिक कुंजियाँ खोलें और हर कुंजी ID/सार्वजनिक कुंजी जोड़ी को आरंभिक कोड में डालें; YOUR_PRODUCT_ID, YOUR_KEY_ID और YOUR_PUBLIC_KEY बदलें। त्वरित एकीकरण यह कोड भी बना सकता है। उत्पाद कॉन्फ़िगरेशन फ़ाइल नहीं चाहिए; SDK डिफ़ॉल्ट रूप से https://www.licentivo.com से जुड़ता है।
  2. त्वरित एकीकरण में उत्पाद बनाएँ या चुनें। नीति में export फ़ीचर सक्षम करें और परीक्षण लाइसेंस तैयार करें।

2. SDK स्थापित करें

अपने ऐप प्रोजेक्ट में नीचे दिया गया कमांड चलाकर या बिल्ड डिपेंडेंसी जोड़कर SDK 0.11.6 इंस्टॉल करें। पैकेज मैनेजर SDK प्राप्त करता है; सोर्स ZIP डाउनलोड करके निकालने या लोकल सोर्स पाथ सेट करने की ज़रूरत नहीं है।

Terminal
npm install @licentivo/sdk@0.11.6

3. वास्तविक निर्यात सुरक्षित करें

अपने ऐप के शुरू होने या सक्रियण पर SDK आरंभ करें। सक्रियण फ़ॉर्म से ग्राहक की कुंजी पढ़ें और उत्पाद ID तथा विश्वसनीय कुंजियाँ दें। ऐप बंद होने तक क्लाइंट रखें। वास्तविक कार्य के प्रवेश पर RunFeature लगाकर निर्यात उदाहरण की जगह अपना फ़ंक्शन दें।

Node.js 20+ / Electron · main.mjs
import {writeFile} from 'node:fs/promises';
import {Client} from '@licentivo/sdk'; // Installed package: import from '@licentivo/sdk'.

// BEGIN LICENTIVO PRODUCT
// Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
const PRODUCT_ID = 'YOUR_PRODUCT_ID';
const TRUSTED_KEYS = {'YOUR_KEY_ID': 'YOUR_PUBLIC_KEY'};
// END LICENTIVO PRODUCT

export async function exportReport(path) {
  // Replace this write with your existing, non-metered export operation.
  await writeFile(path, 'A report generated by the licensed application.\n', {mode: 0o600});
}

async function main() {
  // In Electron, create this in the main process, using customer activation input.
  const client = await Client.openProduct(
    PRODUCT_ID, TRUSTED_KEYS,
    process.env.LICENTIVO_LICENSE_KEY ?? '',
    error => console.error('Background verification:', error.message),
  );
  try {
    const feature = process.env.LICENTIVO_FEATURE ?? 'export';
    const path = process.env.LICENTIVO_OUTPUT ?? 'licensed-report.txt';
    const action = () => exportReport(path);
    if (process.env.LICENTIVO_METERED === '1') {
      await client.runMeteredFeature(feature, 1, process.env.LICENTIVO_OPERATION_ID ?? '', action);
    } else {
      await client.runFeature(feature, action);
    }
    console.log(`License OK: ${feature} is available\nExport completed: ${path}`);
  } finally {
    await client.close(); // In your application, close only when the app exits.
  }
}

main().catch(error => {console.error(error.message); process.exitCode = 2;});

4. ऐप बंद होने तक क्लाइंट जीवित रखें

यह कमांड-लाइन उदाहरण एक काम करके बंद होता है। डेस्कटॉप ऐप में स्टार्टअप पर एक क्लाइंट खोलें, निर्यात क्रिया से फ़ीचर कॉलबैक बुलाएँ और ऐप के निकास पर ही क्लाइंट बंद करें।

सक्रियण के बाद उसी उपयोगकर्ता और कैश स्थान से LICENTIVO_LICENSE_KEY खाली देकर निजी क्रेडेंशियल बहाल कर सकते हैं। क्रेडेंशियल उपयोगकर्ता की ऐप-डेटा डायरेक्टरी में रखें। बंद करना हार्टबीट रोकता है और फ़्लोटिंग सीट लौटाता है। सामान्य निकास पर डिवाइस-बद्ध पंजीकरण निष्क्रिय न करें।

ऑफ़लाइन उपयोग तभी उपलब्ध है जब नीति अनुमति देती हो और हस्ताक्षरित अनुमति मान्य हो। समाप्त अनुमति या अस्वीकृत फ़ीचर बंद रहना चाहिए। गणना ऑपरेशन के लिए नेटवर्क आवश्यक है।

Electron में Client का स्वामित्व मुख्य प्रोसेस में रखें और सीमित IPC इंटरफ़ेस से केवल आवश्यक सुरक्षित क्रियाएँ दें। runFeature और close को await करें। ऐप के पूरे जीवनकाल में क्लाइंट बनाए रखें। असिंक्रोनस कॉलबैक सफलता बताने से पहले अपना काम पूरा करे।

5. चलाएँ और परिणाम जाँचें

कंसोल > उत्पाद से उत्पाद ID कॉपी करें। उसी उत्पाद की हस्ताक्षर सार्वजनिक कुंजियाँ खोलें और हर कुंजी ID/सार्वजनिक कुंजी जोड़ी को आरंभिक कोड में डालें; YOUR_PRODUCT_ID, YOUR_KEY_ID और YOUR_PUBLIC_KEY बदलें। त्वरित एकीकरण यह कोड भी बना सकता है। उत्पाद कॉन्फ़िगरेशन फ़ाइल नहीं चाहिए; SDK डिफ़ॉल्ट रूप से https://www.licentivo.com से जुड़ता है।

  1. मान्य export अधिकार वाले लाइसेंस से licensed-report.txt बनने की पुष्टि करें।
  2. LICENTIVO_LICENSE_KEY खाली करके उसी उपयोगकर्ता से फिर चलाएँ; सहेजा क्रेडेंशियल बहाल होना चाहिए।
  3. LICENTIVO_FEATURE में अनुपस्थित फ़ीचर और LICENTIVO_OUTPUT में नया फ़ाइल नाम दें। प्रोग्राम अस्वीकृति बताए और वह फ़ाइल न बनाए।
  4. ऑफ़लाइन पुनः शुरुआत केवल नीति की अनुमति और अभी मान्य हस्ताक्षरित अनुमति से जाँचें। पृष्ठभूमि अपडेट त्रुटि के बाद असफल फ़ीचर जाँच को दरकिनार न करें।
Windows · PowerShell
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
node main.mjs
Linux / macOS · Bash
LICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY node main.mjs

सामान्य एकीकरण समस्याएँ

उत्पाद ID, हर कुंजी ID/सार्वजनिक कुंजी जोड़ी और ग्राहक लाइसेंस जाँचें। सार्वजनिक कुंजियाँ उत्पाद की हैं; लाइसेंस और डिवाइस प्रमाण अलग हैं। परीक्षण कुंजियाँ या प्रबंधन API Key वितरित न करें।

फ़ीचर अस्वीकृत, डिवाइस सीमा पूरी या लाइसेंस समाप्त हो तो कंसोल में लाइसेंस और नीति जाँचें। ग्राहक को SDK त्रुटि दिखाएँ। असफल अनुमति पर निर्यात फ़ंक्शन न चलाएँ।

RunFeature फ़ीचर अधिकार जाँचता है; गणना वाला विकल्प निर्धारित उपयोग आरक्षित करके हिसाब पूरा करता है। हर वास्तविक काम की स्थिर ऑपरेशन ID रखें और बाधित काम बहाल करने से पहले स्थायी परिणाम जाँचें।

Module न मिले तो main.mjs वाले प्रोजेक्ट में ही @licentivo/sdk स्थापित करें। proxy_url कॉन्फ़िगर करने पर अपने Node.js संस्करण से संगत वैकल्पिक undici पैकेज भी चाहिए।