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

Rust সফটওয়্যার লাইসেন্সিং: সক্রিয়করণ ও ফিচার যাচাই

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

Rust 1.77+আপডেট করা হয়েছে

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

একটি নোড-লকড লাইসেন্স এবং একটি সাধারণ রপ্তানি বৈশিষ্ট্য দিয়ে শুরু করুন। মৌলিক অনুমোদন প্রবাহ কাজ করার পরেই মিটারযুক্ত ব্যবহার যোগ করুন।

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

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

2. SDK ইনস্টল করুন

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

নেটিভ বিল্ড ত্রুটিগুলি সাধারণত অনুপস্থিত C11 বা libcurl হেডার, অমিল আর্কিটেকচার বা ভুল উইন্ডোজ লক্ষ্য নির্দেশ করে। বর্তমান উইন্ডোজ নেটিভ কোরের প্রয়োজন GNU/MinGW; MSVC গ্রহণযোগ্যতা মুলতুবি আছে।

Terminal · new Cargo application
cargo new licensed_app
cd licensed_app
cargo add licentivo@=0.11.6
Ubuntu / Debian · native dependencies
sudo apt-get update
sudo apt-get install build-essential libcurl4-openssl-dev libssl-dev pkg-config
Windows x64 · PowerShell · GNU/MinGW
rustup toolchain install stable-x86_64-pc-windows-gnu --profile minimal
$env:LICENTIVO_CURL_ROOT = "C:/path/to/curl-mingw"
$env:PATH = "$env:LICENTIVO_CURL_ROOT/bin;$env:PATH"
cargo +stable-x86_64-pc-windows-gnu build

3. একটি বাস্তব রপ্তানি রক্ষা করুন

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

Rust 1.77+ · src/main.rs
use licentivo::{Client, Error};
use std::{env, fs};

// BEGIN LICENTIVO PRODUCT
// Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
const PRODUCT_ID: &str = "YOUR_PRODUCT_ID";
const TRUSTED_KEYS_JSON: &str = r#"{"YOUR_KEY_ID":"YOUR_PUBLIC_KEY"}"#;
// END LICENTIVO PRODUCT

fn setting(name: &str, fallback: &str) -> String {
    env::var(name).ok().filter(|value| !value.is_empty()).unwrap_or_else(|| fallback.into())
}

fn export_report(path: &str) -> Result<(), Error> {
    // Replace this write with your existing export operation.
    fs::write(path, "A report generated by the licensed application.\n")?;
    Ok(())
}

fn run() -> Result<(), Error> {
    // A GUI supplies the activation input. Later starts use an empty key.
    let mut client = Client::open_product(
        PRODUCT_ID, TRUSTED_KEYS_JSON,
        &setting("LICENTIVO_LICENSE_KEY", ""),
    )?;
    let feature = setting("LICENTIVO_FEATURE", "export");
    let path = setting("LICENTIVO_OUTPUT", "licensed-report.txt");
    if setting("LICENTIVO_METERED", "0") == "1" {
        client.run_metered_feature(&feature, 1, &setting("LICENTIVO_OPERATION_ID", ""), || export_report(&path))?;
    } else {
        client.run_feature(&feature, || export_report(&path))?;
    }
    println!("License OK: {feature} is available\nExport completed: {path}");
    // Real app: keep client alive until shutdown. Drop returns floating seats;
    // do not deactivate a device on a normal application exit.
    Ok(())
}

fn main() {
    if let Err(error) = run() { eprintln!("{error}"); std::process::exit(2); }
}

4. শাটডাউন না হওয়া পর্যন্ত ক্লায়েন্টকে জীবিত রাখুন

এই কমান্ড-লাইন উদাহরণটি একটি অপারেশন সঞ্চালিত করে এবং প্রস্থান করে। একটি ডেস্কটপ অ্যাপ্লিকেশনে, স্টার্টআপে একটি ক্লায়েন্ট খুলুন, এক্সপোর্ট অ্যাকশন থেকে ফিচার কলব্যাক শুরু করুন এবং অ্যাপ্লিকেশনটি প্রস্থান করলেই ক্লায়েন্ট বন্ধ করুন।

সক্রিয়করণের পরে, পরবর্তী সূচনাগুলি LICENTIVO_LICENSE_KEY খালি ছেড়ে দিতে পারে এবং একই ব্যবহারকারী এবং ক্যাশে অবস্থানের অধীনে ব্যক্তিগত শংসাপত্র পুনরুদ্ধার করতে পারে। ব্যবহারকারী অ্যাপ্লিকেশন-ডেটা ডিরেক্টরিতে সেই শংসাপত্রটি রাখুন। বন্ধ হওয়া হার্টবিট বন্ধ করে এবং ভাসমান আসন ফিরিয়ে দেয়; স্বাভাবিক প্রস্থান একটি নোড-লক ডিভাইস নিষ্ক্রিয় করা উচিত নয়.

অফলাইন অ্যাক্সেস শুধুমাত্র তখনই পাওয়া যায় যখন নীতি অনুমতি দেয় এবং স্বাক্ষরিত অনুদান বৈধ থাকে। একটি মেয়াদ উত্তীর্ণ বা অস্বীকৃত বৈশিষ্ট্য অবরুদ্ধ থাকা আবশ্যক. পরিমাপিত অপারেশনগুলির জন্য একটি নেটওয়ার্ক সংযোগ প্রয়োজন৷

মিউটেবল ক্লায়েন্টকে মালিকানাধীন অ্যাপ্লিকেশন অবস্থায় রাখুন। এটি পাঠান কিন্তু সিঙ্ক নয়: সমসাময়িক কলগুলি ভাগ করার পরিবর্তে এটিকে একজন কর্মীর কাছে নিয়ে যান৷ ড্রপ ব্যাকগ্রাউন্ডের কাজ বন্ধ করে এবং ভাসমান আসন ফিরিয়ে দেয়। ক্লোজ ক্লায়েন্ট গ্রাস করে; স্বাভাবিক প্রস্থান ডিভাইস বাঁধাই সংরক্ষণ করে।

5. চালান এবং ফলাফল যাচাই করুন

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

  1. নিশ্চিত করুন যে এক্সপোর্ট অ্যাক্সেস সহ একটি বৈধ লাইসেন্স licensed-report.txt তৈরি করে৷
  2. LICENTIVO_LICENSE_KEY সাফ করুন এবং একই ব্যবহারকারীর অ্যাকাউন্ট ব্যবহার করে আবার চালান: সংরক্ষিত শংসাপত্রটি পুনরুদ্ধার করা উচিত।
  3. লাইসেন্স থেকে অনুপস্থিত একটি বৈশিষ্ট্যে LICENTIVO_FEATURE সেট করুন এবং একটি নতুন ফাইলের নাম LICENTIVO_OUTPUT সেট করুন৷ প্রোগ্রামটিকে অবশ্যই সেই ফাইলটি তৈরি না করে একটি অস্বীকারের প্রতিবেদন করতে হবে।
  4. শুধুমাত্র একটি অনুমোদিত, মেয়াদ শেষ না হওয়া স্বাক্ষরিত অনুদান দিয়ে একটি অফলাইন রিস্টার্ট পরীক্ষা করুন। পটভূমি রিফ্রেশ ত্রুটির পরে একটি ব্যর্থ বৈশিষ্ট্য পরীক্ষা বাইপাস করবেন না।
Windows · PowerShell
$env:LICENTIVO_LICENSE_KEY = 'YOUR_LICENSE_KEY'
cargo +stable-x86_64-pc-windows-gnu run
Linux · Bash
LICENTIVO_LICENSE_KEY=YOUR_LICENSE_KEY cargo run

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

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

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

run_feature বৈশিষ্ট্য অ্যাক্সেস পরীক্ষা করে; মিটারযুক্ত বৈকল্পিক সংরক্ষণ করে এবং কনফিগার করা ব্যবহার নিষ্পত্তি করে। প্রকৃত ব্যবসায়িক কাজের প্রতি একটি স্থিতিশীল অপারেশন আইডি ব্যবহার করুন এবং একটি বাধাপ্রাপ্ত কাজ পুনরুদ্ধার করার আগে এর টেকসই ফলাফল পরিদর্শন করুন।

নেটিভ বিল্ড ত্রুটিগুলি সাধারণত অনুপস্থিত C11 বা libcurl হেডার, অমিল আর্কিটেকচার বা ভুল উইন্ডোজ লক্ষ্য নির্দেশ করে। বর্তমান উইন্ডোজ নেটিভ কোরের প্রয়োজন GNU/MinGW; MSVC গ্রহণযোগ্যতা মুলতুবি আছে।