1. उत्पाद और लाइसेंस तैयार करें
यह तरीका डेस्कटॉप टूल, कमांड-लाइन ऐप या डिवाइस से बंधे लाइसेंस वाली सेवा के लिए है। पहले बिना उपयोग-गणना वाला export फ़ीचर जोड़ें; लाइसेंसिंग की जाँच के बाद उपयोग काउंटर जोड़ें।
डिवाइस कोटा वर्तमान सक्रियणों से गिना जाता है और रिलीज़ पर लौटता है। सामान्य लाइसेंस ऑफ़लाइन भी गिने जाते हैं; फ्लोटिंग लाइसेंस की लीज़ समाप्त होने पर भी कोटा अपने आप लौटता है।
- कंसोल > उत्पाद से उत्पाद ID कॉपी करें। उसी उत्पाद की हस्ताक्षर सार्वजनिक कुंजियाँ खोलें और हर कुंजी ID/सार्वजनिक कुंजी जोड़ी को आरंभिक कोड में डालें; YOUR_PRODUCT_ID, YOUR_KEY_ID और YOUR_PUBLIC_KEY बदलें। त्वरित एकीकरण यह कोड भी बना सकता है। उत्पाद कॉन्फ़िगरेशन फ़ाइल नहीं चाहिए; SDK डिफ़ॉल्ट रूप से https://www.licentivo.com से जुड़ता है।
- Go 1.26 या नया संस्करण स्थापित करें। कंसोल में त्वरित एकीकरण खोलकर उत्पाद बनाएँ।
- उत्पाद की लाइसेंस नीति में export नाम का फ़ीचर सक्षम करें। परीक्षण लाइसेंस बनाएँ या चुनें।
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. ऐप के पूरे जीवनकाल में एक क्लाइंट रखें
वास्तविक ऐप में स्टार्टअप पर क्लाइंट खोलें और निर्यात बटन या कमांड हैंडलर में RunFeature रखें। ऐप बंद होने तक क्लाइंट जीवित रखें। Close पृष्ठभूमि कार्य रोकता है; सामान्य डिवाइस पंजीकरण बना रहता है।
सक्रियण के बाद SDK मशीन से बंधे क्रेडेंशियल सहेजता है। बाद में उसी उपयोगकर्ता खाते और कैश स्थान से खाली कुंजी देकर उन्हें बहाल कर सकते हैं। सक्रियण ID सहेजने या HTTP हार्टबीट स्वयं भेजने की आवश्यकता नहीं है।
मान्य ऑफ़लाइन अनुमति वाला डिवाइस-बद्ध लाइसेंस तुरंत बहाल हो सकता है, जबकि SDK पृष्ठभूमि में ऑनलाइन अपडेट करता है। फ़्लोटिंग या केवल ऑनलाइन नीति के लिए सफल सर्वर उत्तर आवश्यक है। पृष्ठभूमि त्रुटि लॉग होने से असफल फ़ीचर जाँच को दरकिनार करने की अनुमति नहीं मिलती।
5. अनुमत और अस्वीकृत ऑपरेशन जाँचें
- परीक्षण कुंजी से एक बार चलाएँ और रिपोर्ट बनने की पुष्टि करें।
- LICENTIVO_LICENSE_KEY हटाकर उसी उपयोगकर्ता से फिर चलाएँ; सहेजे गए क्रेडेंशियल बहाल होने चाहिए।
- export की जगह ऐसा फ़ीचर दें जो लाइसेंस में नहीं है। रिपोर्ट बनाए बिना त्रुटि मिलनी चाहिए।
- ऑफ़लाइन पुनः शुरुआत तभी जाँचें जब नीति इसकी अनुमति देती हो और हस्ताक्षरित अनुमति अभी मान्य हो।
सामान्य एकीकरण समस्याएँ
उत्पाद ID, हर कुंजी ID/सार्वजनिक कुंजी जोड़ी और ग्राहक लाइसेंस जाँचें। सार्वजनिक कुंजियाँ उत्पाद की हैं; लाइसेंस और डिवाइस प्रमाण अलग हैं। परीक्षण कुंजियाँ या प्रबंधन API Key वितरित न करें।
फ़ीचर अस्वीकार होने पर उसका नाम और लाइसेंस नीति जाँचें। RunFeature फ़ीचर का अधिकार जाँचता है, बची हुई उपयोग-संख्या नहीं। काउंटर के लिए RunMeteredFeature इस्तेमाल करें।
डिवाइस सीमा, समाप्त लाइसेंस या सर्वर की स्पष्ट अस्वीकृति का समाधान ग्राहक या विक्रेता को करना होगा। उपलब्ध होने पर त्रुटि और request ID दिखाएँ। ऐप में विक्रेता की प्रबंधन कुंजी कभी शामिल न करें।