انتقل إلى المحتوى
LICENTIVO / INTEGRATION

ترخيص برامج Rust: التفعيل والتحقق من الميزات

أضف صندوق Rust إلى تطبيق Cargo وقم بحماية التصدير الحقيقي باستخدام رد اتصال مكتوب. يدير النواة الأصلية المجمعة المنح وبيانات الاعتماد المخزنة مؤقتًا ونبضات القلب والمقاعد العائمة.

Rust 1.77+تم التحديث

1. قم بإعداد المنتج والترخيص

ابدأ بترخيص مقفل بالعقدة وميزة تصدير عادية. قم بإضافة الاستخدام المقنن فقط بعد عمل تدفق التفويض الأساسي.

تُحسب حصة الأجهزة من التفعيلات الحالية وتعود عند التحرير. تبقى التراخيص العادية محسوبة دون اتصال، وتعيد التراخيص العائمة الحصة تلقائيًا أيضًا عند انتهاء الإيجار.

  1. انسخ معرّف المنتج من لوحة التحكم > المنتجات. افتح مفاتيح التوقيع العامة للمنتج نفسه والصق جميع أزواج معرّف المفتاح والمفتاح العام في كود التهيئة بدلاً من YOUR_PRODUCT_ID وYOUR_KEY_ID وYOUR_PUBLIC_KEY. يمكن للتكامل السريع توليد هذا الكود. لا يلزم ملف إعداد للمنتج؛ يتصل SDK افتراضياً بـ https://www.licentivo.com.
  2. في التكامل السريع، قم بإنشاء منتج أو تحديده. قم بتمكين ميزة تسمى التصدير في سياستها وإعداد ترخيص اختباري.

2. قم بتثبيت SDK

ثبّت SDK 0.11.6 بتشغيل الأمر أدناه داخل مشروع تطبيقك أو بإضافة تبعية البناء. يتولى مدير الحزم جلب SDK؛ لا حاجة إلى تنزيل ملفات المصدر وفك ضغطها أو إعداد مسار محلي.

تشير أخطاء البناء الأصلية عادةً إلى فقدان C11 أو رؤوس libcurl أو بنيات غير متطابقة أو هدف Windows خاطئ. يتطلب النواة الأصلية لنظام التشغيل Windows الحالي 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 عند بدء برنامجك أو تنشيطه. اقرأ مفتاح العميل من نافذة التنشيط ومرّر معرّف المنتج والمفاتيح الموثوقة. احتفظ بالعميل حتى إغلاق التطبيق. ضع 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. قم بالتشغيل والتحقق من النتيجة

انسخ معرّف المنتج من لوحة التحكم > المنتجات. افتح مفاتيح التوقيع العامة للمنتج نفسه والصق جميع أزواج معرّف المفتاح والمفتاح العام في كود التهيئة بدلاً من 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

مشاكل التكامل المشتركة

تحقق من معرّف المنتج وجميع أزواج معرّف المفتاح والمفتاح العام وترخيص العميل. المفاتيح العامة تخص المنتج؛ التراخيص وبيانات اعتماد الأجهزة منفصلة. لا توزّع مفاتيح الاختبار أو مفاتيح API الإدارية.

تم رفض الميزة، أو تم الوصول إلى حد الجهاز أو انتهت صلاحية الترخيص: افحص الترخيص والسياسة في وحدة التحكم، ثم أظهر الخطأ SDK للعميل. يجب ألا يستدعي التفويض الفاشل وظيفة التصدير.

يتحقق run_feature من الوصول إلى الميزات؛ يقوم المتغير المقيس باحتجاز الاستخدام الذي تم تكوينه وتسويته. استخدم معرف عملية ثابتًا لكل مهمة عمل حقيقية وافحص نتائجها الدائمة قبل استعادة مهمة متقطعة.

تشير أخطاء البناء الأصلية عادةً إلى فقدان C11 أو رؤوس libcurl أو بنيات غير متطابقة أو هدف Windows خاطئ. يتطلب النواة الأصلية لنظام التشغيل Windows الحالي GNU/MinGW؛ MSVC القبول معلق.