متن پر جائیں
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 کو خالی چھوڑ سکتے ہیں اور اسی صارف اور کیش لوکیشن کے تحت نجی اسناد کو بحال کر سکتے ہیں۔ اس سند کو صارف ایپلیکیشن ڈیٹا ڈائرکٹری میں رکھیں۔ بند ہونے سے دل کی دھڑکنیں رک جاتی ہیں اور تیرتی نشستیں واپس آتی ہیں۔ نارمل ایگزٹ نوڈ لاکڈ ڈیوائس کو غیر فعال نہیں کرنا چاہیے۔

آف لائن رسائی صرف اس صورت میں دستیاب ہے جب پالیسی اس کی اجازت دیتی ہے اور دستخط شدہ گرانٹ درست رہتی ہے۔ ایک میعاد ختم یا مسترد شدہ خصوصیت کو مسدود رہنا چاہیے۔ میٹرڈ آپریشنز کے لیے نیٹ ورک کنکشن کی ضرورت ہوتی ہے۔

متغیر کلائنٹ کو اپنی درخواست کی حالت میں رکھیں۔ یہ Send ہے لیکن Sync نہیں ہے: ہم آہنگی کالوں کا اشتراک کرنے کے بجائے اسے ایک کارکن کے پاس منتقل کریں۔ ڈراپ پس منظر کے کام کو روکتا ہے اور تیرتی نشستیں واپس کرتا ہے۔ بند کلائنٹ کھاتا ہے؛ نارمل ایگزٹ ڈیوائس بائنڈنگ کو محفوظ رکھتا ہے۔

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 کی خرابی دکھائیں۔ ایک ناکام اجازت کو ایکسپورٹ فنکشن کو کال نہیں کرنا چاہیے۔

رن فیچر فیچر تک رسائی کی جانچ کرتا ہے۔ میٹرڈ ویرینٹ ریزرو کرتا ہے اور ترتیب شدہ استعمال کو حل کرتا ہے۔ حقیقی کاروباری جاب کے لیے ایک مستحکم آپریشن آئی ڈی استعمال کریں اور کسی رکاوٹ والی نوکری کو بحال کرنے سے پہلے اس کے پائیدار نتیجہ کا معائنہ کریں۔

مقامی تعمیراتی خرابیاں عام طور پر C11 یا libcurl ہیڈر، غیر مماثل آرکیٹیکچرز یا ونڈوز کے غلط ہدف کی نشاندہی کرتی ہیں۔ موجودہ ونڈوز مقامی کور کو GNU/MinGW کی ضرورت ہے۔ MSVC کی منظوری زیر التواء ہے۔