Babel Licensing Tool Server
Babel.Licensing.Tool distribuisce la riga di comando lic come strumento dotnet: puoi generare e gestire le licenze da un terminale o da uno script su Windows, Linux e macOS con il solo SDK .NET installato.
Che cosa contiene il pacchetto
Babel.Licensing.Tool è un pacchetto di strumento .NET che installa il comando lic. È lo stesso strumento da riga di comando distribuito nei pacchetti zip di Babel, con le stesse opzioni, ed è compreso nelle edizioni di Babel Licensing, Server e Data Center. Il pacchetto include una build dello strumento per ogni runtime supportato, da .NET 6.0 a .NET 10.0, e la CLI dotnet sceglie la build che corrisponde all’SDK presente sul computer.
Come gli altri pacchetti Babel, il pacchetto dello strumento non è su nuget.org: ospitalo sul tuo feed come descritto in Ospitare il pacchetto, oppure aggiungilo a un feed in una cartella locale come mostrato in Componenti client.
Quando usare lo strumento
Usa lo strumento ovunque le licenze siano prodotte da un processo anziché da una persona in Babel Desktop:
- Emettere licenze da una pipeline degli ordini, da uno script di assistenza o da una build, su qualsiasi sistema operativo.
- Generare e ruotare le coppie di chiavi di firma, ed esportare la chiave pubblica da incorporare in un’applicazione.
- Verificare le licenze che i clienti ti rimandano, e aggiornarle senza ricrearle.
- Calcolare la chiave hardware di un computer, per emettere una licenza vincolata a quel computer.
- Automatizzare il lavoro con agenti tramite la modalità compatibile con l’AI, che lo strumento
liccondivide con l’offuscatore.
Lo strumento genera licenze che l’applicazione convalida offline, con la libreria client Babel.Licensing. Le licenze gestite dal Babel Licensing Service, come le licenze con attivazione e le licenze flottanti, si creano invece con gli strumenti del servizio: Babel Desktop, l’applicazione web (Data Center), l’API REST o il server MCP.
Installare lo strumento
Strumento globale
Uno strumento globale viene installato una volta per utente ed è disponibile da ogni terminale:
dotnet tool install Babel.Licensing.Tool -gQuando il feed non è elencato in un file NuGet.config, passalo esplicitamente. L’origine può essere l’URL di un feed o una cartella locale:
dotnet tool install Babel.Licensing.Tool -g --add-source ~/NuGetSu Linux e macOS assicurati che la cartella degli strumenti sia nel PATH, altrimenti il comando lic non viene trovato:
export PATH="$PATH:$HOME/.dotnet/tools"Strumento locale
Uno strumento locale è fissato a un repository tramite un manifesto degli strumenti, così ogni sviluppatore e ogni agente CI esegue la stessa versione:
dotnet new tool-manifest
dotnet tool install Babel.Licensing.ToolLo strumento viene così registrato in .config/dotnet-tools.json, che devi includere nel commit. Su qualsiasi altro computer, dotnet tool restore installa la versione fissata. Uno strumento locale si richiama tramite la CLI dotnet:
dotnet lic --versionAggiornare e rimuovere
dotnet tool update Babel.Licensing.Tool -g
dotnet tool list -g
dotnet tool uninstall Babel.Licensing.Tool -gPer uno strumento locale ometti -g. dotnet tool list mostra il pacchetto installato, la sua versione e il comando lic che fornisce, accanto a babel quando è installato anche lo strumento dell’offuscatore. Gli stessi comandi sono descritti in Installazione.
Fornire la licenza allo strumento
Lo strumento richiede una licenza di Babel Licensing. Uno strumento dotnet non ha una cartella di installazione in cui copiare babel.licenses, quindi fornisci la licenza a lic in uno di questi modi:
- Imposta la variabile d’ambiente
BABEL_LICENSE_PATHsul percorso completo del file di licenza. È la configurazione consigliata sui computer degli sviluppatori e sugli agenti di build:
export BABEL_LICENSE_PATH=~/Babel/babel.licenses- Passa
--licensea ogni chiamata, con il percorso del file di licenza o di una cartella in cui cercarlo. - Passa
--license env:BABEL_LICENSE, dove la variabile contiene una chiave di licenza: è la scelta giusta sui server di build, dove la chiave è conservata in un segreto.
lic --license senza argomenti stampa la licenza in uso. Un file di licenza è valido per una sola versione del prodotto: usa il file ricevuto con la stessa versione dello strumento e aggiorna entrambi insieme.
Usare lo strumento
Il comando lic accetta la sintassi e le opzioni documentate in Strumenti da riga di comando e nel Riferimento della riga di comando. Una chiamata tipica indica l’assembly per cui emettere la licenza, la chiave, il contenuto della licenza e il file di output:
lic MyApp.dll --keyfile keys.pem --sign --licensee name="Contoso" --product name="MyApp" --expiredate 365 --feature Pro=1 --trial days=30 --output MyApp.licenses --encoding utf-8Con uno strumento locale, anteponi dotnet al comando.
Script e automazione
Dalla versione 11.8 la riga di comando lic ha una modalità compatibile con l’AI pensata per script e agenti:
lic MyApp.dll --keyfile keys.pem --sign --licensee name="Contoso" --expiredate 365 --format json --quiet --strict-exit--format json o ndjson trasforma l’output in un flusso leggibile dalle macchine e indirizza sullo standard error la diagnostica destinata alle persone, --quiet rimuove il banner e fa fallire subito qualsiasi richiesta interattiva, e --strict-exit restituisce un codice di uscita distinto per argomenti non validi, input mancante ed errori di elaborazione della licenza, di licenza e di firma. I codici di uscita sono gli stessi dell’offuscatore, quindi un solo script può pilotare entrambi gli strumenti con un’unica tabella.
Eseguire lo strumento su un server di build
Lo strumento si adatta alle pipeline che emettono licenze in uno dei loro passi, per esempio per dotare di una licenza la build di test di un’applicazione prima che partano i test di integrazione. Con un manifesto degli strumenti incluso nel repository e il feed configurato in NuGet.config (vedi l’esempio GitHub Actions per una configurazione che si autentica su GitHub Packages), un job di GitHub Actions ha questo aspetto:
steps:
- uses: actions/checkout@v4
- uses: actions/setup-dotnet@v4
with:
dotnet-version: '10.0.x'
- name: Restore tools
run: dotnet tool restore
env:
PACKAGES_TOKEN: ${{ secrets.PACKAGES_TOKEN }}
- name: Write the signing key
run: echo "$SIGNING_KEY" > keys.pem
env:
SIGNING_KEY: ${{ secrets.LICENSE_SIGNING_KEY }}
- name: Issue the test license
run: dotnet lic artifacts/MyApp.dll --license env:BABEL_LICENSE --keyfile keys.pem --sign --licensee name="CI" --expiredate 7 --output artifacts/MyApp.licenses --quiet --strict-exit
env:
BABEL_LICENSE: ${{ secrets.BABEL_LICENSE_SECRET }}Conserva la chiave privata in un segreto e mai nel repository: chi la possiede può emettere licenze per il tuo prodotto.
Risoluzione dei problemi
lic: command not found: la cartella degli strumenti globali non è nel PATH; aggiungi~/.dotnet/toolsaPATH, oppure usa uno strumento locale ed eseguidotnet lic.- Un messaggio che chiede di installare .NET: la build dello strumento selezionata richiede il runtime .NET corrispondente, dalla versione 6.0 alla 10.0. Installa quel runtime, oppure imposta
DOTNET_ROLL_FORWARD=Majorper eseguire lo strumento su un runtime più recente. - A valid license could not be found: controlla
BABEL_LICENSE_PATHo l’argomento--license, poi eseguilic --licenseper vedere che cosa ha caricato lo strumento. Un file di licenza di un’altra versione viene segnalato come non valido. - L’applicazione segnala la licenza come non valida: probabilmente la licenza è stata scritta senza
--sign, oppure è stata firmata con una coppia di chiavi la cui chiave pubblica non corrisponde a quella incorporata nell’applicazione. Eseguilic <file> --verify --keyfile <key>per controllare la firma con la chiave che ti aspetti. Unrecognized option: sta rispondendo unlicpiù vecchio presente nel PATH; eseguidotnet tool list -gelic --versionper controllare quale build stai richiamando.--format json,--quiete--strict-exitrichiedono la versione 11.8 o successiva.