মূল লেখায় যান
LICENTIVO / INTEGRATION

একটি Go অ্যাপ্লিকেশনে সফ্টওয়্যার লাইসেন্স যোগ করুন

Go SDK ইনস্টল করুন, একটি গ্রাহকের কী দিয়ে সক্রিয় করুন এবং একটি প্রকৃত ফাইল রপ্তানি রক্ষা করুন৷ SDK ডিভাইসের পরিচয়, স্বাক্ষরিত অনুমোদন, সংরক্ষিত শংসাপত্র এবং হার্টবিট পরিচালনা করে।

Go ইনস্টল থাকলে প্রায় 15 মিনিটআপডেট করা হয়েছে

1. একটি পণ্য এবং লাইসেন্স প্রস্তুত করুন

একটি ডেস্কটপ ইউটিলিটি, কমান্ড-লাইন অ্যাপ্লিকেশন বা নোড-লক লাইসেন্সের প্রয়োজন এমন একটি পরিষেবার জন্য এই পথটি ব্যবহার করুন। একটি মিটারবিহীন রপ্তানি বৈশিষ্ট্য দিয়ে শুরু করুন যাতে আপনি ব্যবহারের কাউন্টার যোগ করার আগে লাইসেন্সিং যাচাই করতে পারেন।

ডিভাইস কোটা বর্তমান সক্রিয়করণ অনুযায়ী গণনা হয় এবং মুক্ত করলে ফেরত আসে। সাধারণ লাইসেন্স অফলাইনেও গণনা হয়; ফ্লোটিং লাইসেন্সের লিজ শেষ হলেও কোটা স্বয়ংক্রিয়ভাবে ফেরত আসে।

  1. কনসোল > পণ্য থেকে পণ্যের ID কপি করুন। একই পণ্যের স্বাক্ষরের পাবলিক কী খুলে প্রতিটি কী ID/পাবলিক কী জোড়া ইনিশিয়ালাইজেশন কোডে বসান; YOUR_PRODUCT_ID, YOUR_KEY_ID এবং YOUR_PUBLIC_KEY বদলান। দ্রুত ইন্টিগ্রেশন থেকেও এই কোড পাওয়া যায়। পণ্যের কনফিগারেশন ফাইল লাগে না; SDK ডিফল্টভাবে https://www.licentivo.com ব্যবহার করে।
  2. Go 1.26 বা তার পরে ইনস্টল করুন। কনসোলে, দ্রুত ইন্টিগ্রেশন খুলুন এবং একটি পণ্য তৈরি করুন।
  3. পণ্যের অনুমোদন নীতিতে রপ্তানি নামের একটি বৈশিষ্ট্য সক্ষম করুন৷ একটি পরীক্ষা লাইসেন্স তৈরি করুন বা নির্বাচন করুন।

2. আপনার প্রকল্পে SDK ইনস্টল করুন

আপনার অ্যাপ প্রকল্পে নিচের কমান্ড চালিয়ে বা বিল্ড ডিপেন্ডেন্সি যোগ করে SDK 0.11.6 ইনস্টল করুন। প্যাকেজ ম্যানেজার SDK সংগ্রহ করে; সোর্স ZIP ডাউনলোড ও এক্সট্র্যাক্ট করা বা স্থানীয় পাথ সেট করার প্রয়োজন নেই।

Terminal
go get github.com/spf86/licentivo-sdk@v0.11.6

3. একটি অপারেশন রক্ষা করুন

অ্যাপ চালু বা সক্রিয় করার সময় SDK শুরু করুন। সক্রিয়করণ ফর্ম থেকে গ্রাহকের কী পড়ে পণ্যের ID ও বিশ্বস্ত কী দিন। অ্যাপ বন্ধ হওয়া পর্যন্ত ক্লায়েন্ট রাখুন। আসল কাজের প্রবেশপথে RunFeature ব্যবহার করে উদাহরণের এক্সপোর্টের বদলে নিজের ফাংশন দিন।

Go · complete main.go
// 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 রাখুন। শাটডাউন পর্যন্ত ক্লায়েন্টকে জীবিত রাখুন। ব্যাকগ্রাউন্ডের কাজ বন্ধ করে দেয়; এটি সাধারণ নোড-লকড রেজিস্ট্রেশন সংরক্ষণ করে।

SDK সক্রিয়করণের পরে একটি মেশিন-বাউন্ড শংসাপত্র সঞ্চয় করে। পরবর্তী সূচনা একটি খালি কী পাস করতে পারে এবং একই ব্যবহারকারী অ্যাকাউন্ট এবং ক্যাশে অবস্থান থেকে এটি পুনরুদ্ধার করতে পারে। আপনাকে অ্যাক্টিভেশন আইডি সঞ্চয় করতে বা HTTP হার্টবিট নিজে পাঠাতে হবে না।

SDK ব্যাকগ্রাউন্ডে অনলাইন রিফ্রেশ করার সময় একটি বৈধ নোড-লক অফলাইন লিজ অবিলম্বে পুনরুদ্ধার করতে পারে। একটি ফ্লোটিং বা শুধুমাত্র-অনলাইন নীতির জন্য একটি সফল সার্ভার প্রতিক্রিয়া প্রয়োজন। একটি ব্যর্থ বৈশিষ্ট্য চেক বাইপাস করার অনুমতি হিসাবে লগ করা ব্যাকগ্রাউন্ড ত্রুটিকে কখনই বিবেচনা করবেন না।

5. অনুমোদিত এবং অস্বীকৃত অপারেশন যাচাই করুন

  1. পরীক্ষা কী দিয়ে একবার চালান এবং নিশ্চিত করুন যে রিপোর্টটি বিদ্যমান।
  2. LICENTIVO_LICENSE_KEY সরান এবং একই ব্যবহারকারীর অধীনে আবার চালান: সংরক্ষিত শংসাপত্রগুলি পুনরুদ্ধার করা উচিত।
  3. লাইসেন্স থেকে অনুপস্থিত একটি বৈশিষ্ট্যে রপ্তানি পরিবর্তন করুন: অপারেশনটি একটি প্রতিবেদন না লিখে একটি ত্রুটি ফেরত দিতে হবে৷
  4. একটি অফলাইন রিস্টার্ট চেক করুন শুধুমাত্র যখন পলিসি এটির অনুমতি দেয় এবং স্বাক্ষরিত লিজ এখনও বৈধ থাকে৷

সাধারণ ইন্টিগ্রেশন সমস্যা

পণ্যের ID, প্রতিটি কী ID/পাবলিক কী জোড়া এবং গ্রাহকের লাইসেন্স যাচাই করুন। পাবলিক কী পণ্যের; লাইসেন্স ও ডিভাইস পরিচয়পত্র আলাদা। পরীক্ষার কী বা ব্যবস্থাপনার API Key বিতরণ করবেন না।

একটি অস্বীকৃত বৈশিষ্ট্য বৈশিষ্ট্যের নাম এবং লাইসেন্স নীতি পরীক্ষা করা প্রয়োজন; RunFeature এনটাইটেলমেন্ট চেক করে, অবশিষ্ট ব্যবহার নয়। একটি কাউন্টারের জন্য RunMeteredFeature ব্যবহার করুন।

ডিভাইসের সীমা, মেয়াদোত্তীর্ণ লাইসেন্স বা একটি স্পষ্ট সার্ভার অস্বীকারের জন্য গ্রাহক বা বিক্রেতাকে অনুমোদনের সমাধান করতে হবে। ত্রুটি দেখান এবং যেখানে উপলব্ধ আইডি অনুরোধ করুন. অ্যাপ্লিকেশনে ভেন্ডর ম্যানেজমেন্ট কীগুলি কখনই অন্তর্ভুক্ত করবেন না।