1. ایک پروڈکٹ اور لائسنس تیار کریں۔
یہ راستہ ڈیسک ٹاپ یوٹیلیٹی، کمانڈ لائن ایپلیکیشن یا ایسی سروس کے لیے استعمال کریں جس کو نوڈ لاکڈ لائسنس کی ضرورت ہو۔ ایک غیر میٹرڈ ایکسپورٹ فیچر کے ساتھ شروع کریں تاکہ آپ استعمال کاؤنٹرز کو شامل کرنے سے پہلے لائسنسنگ کی تصدیق کر سکیں۔
آلات کا کوٹا موجودہ فعال رجسٹریشن کے مطابق گنا جاتا ہے اور آزاد کرنے پر واپس ملتا ہے۔ عام لائسنس آف لائن بھی شمار ہوتے ہیں؛ فلوٹنگ لائسنس کی لیز ختم ہونے پر بھی کوٹا خود واپس ملتا ہے۔
- کنسول > مصنوعات سے پروڈکٹ ID کاپی کریں۔ اسی پروڈکٹ کی دستخطی عوامی کلیدیں کھولیں اور ہر کلید ID/عوامی کلید کا جوڑا ابتدائی کوڈ میں درج کریں؛ YOUR_PRODUCT_ID، YOUR_KEY_ID اور YOUR_PUBLIC_KEY تبدیل کریں۔ فوری انضمام یہ کوڈ بھی بنا سکتا ہے۔ پروڈکٹ کی کنفیگریشن فائل درکار نہیں؛ SDK بطورِ طے شدہ https://www.licentivo.com استعمال کرتا ہے۔
- Go 1.26 یا بعد میں انسٹال کریں۔ کنسول میں، فوری انضمام کھولیں اور ایک پروڈکٹ بنائیں۔
- پروڈکٹ کی اجازت کی پالیسی میں برآمد نام کی خصوصیت کو فعال کریں۔ ٹیسٹ لائسنس بنائیں یا منتخب کریں۔
2. اپنے پروجیکٹ میں SDK انسٹال کریں
اپنے ایپ پروجیکٹ میں درج ذیل کمانڈ چلا کر یا بلڈ ڈیپنڈنسی شامل کر کے SDK 0.11.6 انسٹال کریں۔ پیکیج مینیجر SDK حاصل کرتا ہے؛ سورس ZIP ڈاؤن لوڈ اور اَن زِپ کرنے یا مقامی سورس پاتھ مقرر کرنے کی ضرورت نہیں۔
go get github.com/spf86/licentivo-sdk@v0.11.63. ایک آپریشن کی حفاظت کریں۔
اپنی ایپ کے آغاز یا فعالیت پر SDK شروع کریں۔ فعالیت فارم سے صارف کی کلید پڑھیں اور پروڈکٹ ID اور قابلِ اعتماد کلیدیں دیں۔ ایپ بند ہونے تک کلائنٹ قائم رکھیں۔ اصل کاروباری عمل کے دروازے پر RunFeature رکھیں اور نمونے کی برآمد کی جگہ اپنا فنکشن دیں۔
// One protected operation. Keep the client alive for the lifetime of your app.
package main
import (
"context"
"fmt"
licentivo "github.com/spf86/licentivo-sdk"
"os"
)
// BEGIN LICENTIVO PRODUCT
// Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
const productID = "YOUR_PRODUCT_ID"
var trustedKeys = map[string]string{"YOUR_KEY_ID": "YOUR_PUBLIC_KEY"}
// END LICENTIVO PRODUCT
func setting(name, fallback string) string {
if value := os.Getenv(name); value != "" {
return value
}
return fallback
}
// Call this at the business entry point, including keyboard/menu/CLI actions.
func exportReport(path string) error {
// Replace this write with your existing, non-metered export operation.
return os.WriteFile(path, []byte("A report generated by the licensed application.\n"), 0600)
}
func run() error {
ctx, cancel := context.WithCancel(context.Background())
defer cancel()
// In a GUI, obtain key from the activation input. Later starts use an empty key.
client, err := licentivo.OpenProduct(ctx, productID, trustedKeys, os.Getenv("LICENTIVO_LICENSE_KEY"), func(err error) {
fmt.Fprintln(os.Stderr, "Background verification:", err)
})
if err != nil {
return err
}
defer client.Close() // Floating seats return; node-locked registration stays.
feature := setting("LICENTIVO_FEATURE", "export")
path := setting("LICENTIVO_OUTPUT", "licensed-report.txt")
action := func() error { return exportReport(path) }
if os.Getenv("LICENTIVO_METERED") == "1" {
err = client.RunMeteredFeature(ctx, feature, 1, os.Getenv("LICENTIVO_OPERATION_ID"), action)
} else {
err = client.RunFeature(feature, action)
}
if err != nil {
return err
}
fmt.Printf("License OK: %s is available\nExport completed: %s\n", feature, path)
return nil
}
func main() {
if err := run(); err != nil {
fmt.Fprintln(os.Stderr, err)
os.Exit(2)
}
}
4. درخواست کی زندگی بھر کے لیے ایک کلائنٹ رکھیں
ایک حقیقی ایپلی کیشن میں، کلائنٹ کو اسٹارٹ اپ پر کھولیں اور رن فیچر کو ایکسپورٹ بٹن یا کمانڈ ہینڈلر کے اندر رکھیں۔ بند ہونے تک کلائنٹ کو زندہ رکھیں۔ پس منظر کے کام کو بند کریں؛ یہ عام نوڈ لاکڈ رجسٹریشن کو محفوظ رکھتا ہے۔
SDK ایکٹیویشن کے بعد مشین سے منسلک اسناد کو اسٹور کرتا ہے۔ بعد میں شروع ہونے والی ایک خالی کلید کو پاس کر سکتی ہے اور اسے اسی صارف اکاؤنٹ اور کیشے والے مقام سے بحال کر سکتی ہے۔ آپ کو ایکٹیویشن آئی ڈیز کو اسٹور کرنے یا خود HTTP دل کی دھڑکنیں بھیجنے کی ضرورت نہیں ہے۔
ایک درست نوڈ لاک آف لائن لیز فوری طور پر بحال ہو سکتی ہے جب کہ SDK پس منظر میں آن لائن ریفریش ہوتا ہے۔ فلوٹنگ یا صرف آن لائن پالیسی کے لیے سرور کے کامیاب جواب کی ضرورت ہوتی ہے۔ لاگ ان بیک گراؤنڈ کی غلطی کو ناکام فیچر چیک کو نظرانداز کرنے کی اجازت کے طور پر کبھی نہ سمجھیں۔
5. اجازت یافتہ اور انکاری آپریشنز کی تصدیق کریں۔
- ٹیسٹ کلید کے ساتھ ایک بار چلائیں اور تصدیق کریں کہ رپورٹ موجود ہے۔
- LICENTIVO_LICENSE_KEY کو ہٹائیں اور اسی صارف کے تحت دوبارہ چلائیں: محفوظ کردہ اسناد کو بحال کرنا چاہیے۔
- ایکسپورٹ کو لائسنس سے غیر موجود فیچر میں تبدیل کریں: آپریشن کو رپورٹ لکھے بغیر غلطی واپس کرنی چاہیے۔
- آف لائن ری اسٹارٹ کو صرف اس وقت چیک کریں جب پالیسی اس کی اجازت دے اور دستخط شدہ لیز اب بھی درست ہو۔
عام انضمام کے مسائل
پروڈکٹ ID، ہر کلید ID/عوامی کلید کا جوڑا اور صارف کا لائسنس جانچیں۔ عوامی کلیدیں پروڈکٹ کی ہیں؛ لائسنس اور آلے کی اسناد الگ ہیں۔ آزمائشی کلیدیں یا انتظامی API Key تقسیم نہ کریں۔
ایک مسترد شدہ خصوصیت کے لیے فیچر کا نام اور لائسنس کی پالیسی کی جانچ پڑتال کی ضرورت ہوتی ہے۔ RunFeature استحقاق کو چیک کرتا ہے، باقی استعمال کو نہیں۔ کاؤنٹر کے لیے RunMeteredFeature استعمال کریں۔
ڈیوائس کی حدود، ایک میعاد ختم ہونے والا لائسنس یا سرور سے واضح انکار کے لیے گاہک یا وینڈر سے اجازت کی ضرورت ہوتی ہے۔ غلطی دکھائیں اور جہاں دستیاب ہو ID کی درخواست کریں۔ درخواست میں وینڈر مینجمنٹ کیز کو کبھی شامل نہ کریں۔