Vai al contenuto
LICENTIVO / INTEGRATION

Licenza software JavaScript per Node.js ed Electron

Installa Node.js SDK, attiva una chiave cliente e proteggi un'esportazione asincrona. In Electron, mantieni il client di licenza nel processo principale per l'identità del dispositivo e gli heartbeat.

Node.js 20+ / ElectronAggiornato

1. Preparare il prodotto e la licenza

Inizia con una licenza con nodo bloccato e una normale funzionalità di esportazione. Aggiungi l'utilizzo misurato solo dopo il funzionamento del flusso di autorizzazione di base.

La quota conta le attivazioni correnti e viene restituita al rilascio. Le licenze ordinarie contano anche offline; quelle flottanti restituiscono la quota anche alla scadenza del lease.

  1. Copia l’ID prodotto da Console > Prodotti. Apri le chiavi pubbliche di firma dello stesso prodotto e inserisci tutte le coppie ID chiave/chiave pubblica nel codice di inizializzazione, sostituendo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. L’integrazione rapida può generare il codice. Non serve un file di configurazione; l’SDK usa https://www.licentivo.com per impostazione predefinita.
  2. In Integrazione rapida, crea o seleziona un prodotto. Abilita una funzionalità denominata esportazione nella sua policy e prepara una licenza di prova.

2. Installare SDK

Installa SDK 0.11.6 eseguendo il comando seguente nel tuo progetto o aggiungendo la dipendenza di compilazione. Il gestore di pacchetti scarica SDK; non servono archivi sorgente, estrazione manuale o percorsi locali.

Terminal
npm install @licentivo/sdk@0.11.6

3. Tutelare un'esportazione reale

Inizializza l’SDK all’avvio o nel gestore di attivazione della tua applicazione. Leggi la chiave cliente dal modulo e passa ID prodotto e chiavi attendibili. Mantieni il client fino alla chiusura. Inserisci RunFeature nell’operazione reale e sostituisci l’esportazione con la tua funzione.

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. Mantenere il client attivo fino all'arresto

Questo esempio di riga di comando esegue un'operazione e termina. In un'applicazione desktop, apri un client all'avvio, richiama la funzione di callback dall'azione di esportazione e chiudi il client solo alla chiusura dell'applicazione.

Dopo l'attivazione, gli avvii successivi possono lasciare vuoto LICENTIVO_LICENSE_KEY e ripristinare la credenziale privata con lo stesso utente e percorso cache. Conserva le credenziali nella directory application-data dell'utente. La chiusura ferma i heartbeat e restituisce i posti fluttuanti; l'uscita normale non dovrebbe disattivare un dispositivo con nodo bloccato.

L'accesso offline è disponibile solo quando la policy lo consente e la concessione firmata rimane valida. Una funzionalità scaduta o negata deve rimanere bloccata. Le operazioni a consumo richiedono una connessione di rete.

In Electron, possiedi il client nel processo principale ed esponi solo le azioni protette richieste attraverso una ristretta interfaccia IPC. Attendi runFeature e chiudi; mantenere il client in vita per tutta la durata dell'applicazione. Una callback asincrona deve terminare prima di segnalare l'esito positivo.

5. Esegui e verifica il risultato

Copia l’ID prodotto da Console > Prodotti. Apri le chiavi pubbliche di firma dello stesso prodotto e inserisci tutte le coppie ID chiave/chiave pubblica nel codice di inizializzazione, sostituendo YOUR_PRODUCT_ID, YOUR_KEY_ID e YOUR_PUBLIC_KEY. L’integrazione rapida può generare il codice. Non serve un file di configurazione; l’SDK usa https://www.licentivo.com per impostazione predefinita.

  1. Confermare che una licenza valida con accesso all'esportazione crei licensed-report.txt.
  2. Cancella LICENTIVO_LICENSE_KEY ed esegui nuovamente utilizzando lo stesso account utente: le credenziali salvate dovrebbero essere ripristinate.
  3. Imposta LICENTIVO_FEATURE su una funzionalità assente nella licenza e LICENTIVO_OUTPUT su un nuovo nome file. Il programma deve segnalare un rifiuto senza creare quel file.
  4. Testare un riavvio offline solo con una concessione firmata consentita e non scaduta. Non ignorare un controllo delle funzionalità non riuscito dopo un errore di aggiornamento in background.
Windows · PowerShell
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
node main.mjs
Linux / macOS · Bash
LICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY node main.mjs

Problemi comuni di integrazione

Controlla ID prodotto, tutte le coppie ID chiave/chiave pubblica e la licenza del cliente. Le chiavi pubbliche appartengono al prodotto; licenze e credenziali dei dispositivi sono separate. Non distribuire chiavi di test o API Key di gestione.

Funzionalità negata, limite dispositivo raggiunto o licenza scaduta: controlla la licenza e la policy nella console, quindi mostra l'errore SDK al cliente. Un'autorizzazione fallita non deve richiamare la funzione di esportazione.

RunFeature controlla l'accesso alle funzionalità; la variante a consumo prenota e liquida l'utilizzo configurato. Utilizza un ID operazione stabile per un lavoro aziendale reale e controllane il risultato duraturo prima di ripristinare un lavoro interrotto.

Modulo non trovato: installa @licentivo/sdk nello stesso progetto che contiene main.mjs. Un proxy_url configurato necessita inoltre del pacchetto undici opzionale compatibile con la tua versione Node.js.