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

ترخيص برامج Python: التحقق من مفاتيح الترخيص

أضف التحقق من التراخيص إلى تطبيق Python. أنشئ بيئة افتراضية، وفعّل ترخيصًا، واختبر صلاحيات الميزات وبيانات الاعتماد المحفوظة ورفض الوصول.

Python 3.10+ · سطر الأوامر وسطح المكتبتم التحديث

1. قم بإعداد لغة Python وميزة مرخصة

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

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

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

2. التثبيت في بيئة افتراضية

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

Windows · PowerShell
python -m venv .venv
./.venv/Scripts/python.exe -m pip install "licentivo-sdk==0.11.6"
Linux / macOS · Bash
python3 -m venv .venv
./.venv/bin/python -m pip install "licentivo-sdk==0.11.6"

3. التحقق من صحة الترخيص قبل التصدير

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

Python · complete app.py
"""A protected operation to move into your own application's business handler."""
import os
import sys
from pathlib import Path
from licentivo import Client


# BEGIN LICENTIVO PRODUCT
# Copy Product ID and all key ID/public key pairs from Console > Products > Signing public keys.
PRODUCT_ID = 'YOUR_PRODUCT_ID'
TRUSTED_KEYS = {'YOUR_KEY_ID': 'YOUR_PUBLIC_KEY'}
# END LICENTIVO PRODUCT

def export_report(path):
    # Replace this write with your existing, non-metered export operation.
    Path(path).write_text('A report generated by the licensed application.\n', encoding='utf-8')


def main():
    # In a GUI, read the activation input; later starts pass an empty key.
    with Client.open_product(
        PRODUCT_ID, TRUSTED_KEYS,
        os.getenv('LICENTIVO_LICENSE_KEY', ''),
        on_error=lambda error: print(f'Background verification: {error}', file=sys.stderr),
    ) as client:
        feature = os.getenv('LICENTIVO_FEATURE', 'export')
        path = os.getenv('LICENTIVO_OUTPUT', 'licensed-report.txt')
        action = lambda: export_report(path)
        if os.getenv('LICENTIVO_METERED') == '1':
            client.run_metered_feature(feature, 1, os.getenv('LICENTIVO_OPERATION_ID', ''), action)
        else:
            client.run_feature(feature, action)
        print(f'License OK: {feature} is available\nExport completed: {path}')
    # Keep this context open until your real app exits. No Deactivate on normal exit.


if __name__ == '__main__':
    try:
        main()
    except Exception as error:
        print(str(error), file=sys.stderr)
        sys.exit(2)
Windows · PowerShell
$env:LICENTIVO_LICENSE_KEY = 'YOUR_TEST_LICENSE_KEY'
./.venv/Scripts/python.exe app.py
# On later starts, restore the saved device credential:
Remove-Item Env:LICENTIVO_LICENSE_KEY
./.venv/Scripts/python.exe app.py
Linux / macOS · Bash
export LICENTIVO_LICENSE_KEY='YOUR_TEST_LICENSE_KEY'
./.venv/bin/python app.py
# On later starts, restore the saved device credential:
unset LICENTIVO_LICENSE_KEY
./.venv/bin/python app.py

4. إبقاء العميل على قيد الحياة في تطبيق سطح المكتب

بالنسبة لتصدير سطر الأوامر، يمكن للكتلة with أن تغطي العملية بأكملها. بالنسبة لتطبيق سطح المكتب، افتح العميل أثناء التنشيط واحتفظ به حتى تغلق النافذة؛ لا تقم بإنشاء وإغلاق العميل لكل نقرة زر.

نفّذ التفعيل عبر الإنترنت وعمليات الشبكة الأخرى خارج خيط واجهة المستخدم الرسومية، ثم أعد النتائج إلى خيط الواجهة لتحديثها. يتوفر مثال سطح المكتب باستخدام Tkinter بشكل منفصل عبر رابط التوثيق أدناه؛ ولا يؤدي تثبيت حزمة pip إلى تثبيت شيفرة المثال.

يجب أن يستدعي كل زر أو اختصار أو أمر تصدير client.run_feature("export", lambda: export_report(path)). عند إيقاف التشغيل، اتصل بإغلاق؛ فهو يحتفظ بالتسجيل المرتبط بالجهاز ويحاول إعادة المقعد العائم.

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

5. التحقق من المسارات المسموح بها والممنوعة

  1. قم بالتنشيط باستخدام مفتاح الاختبار الخاص بك وافحص التقرير الناتج.
  2. قم بإلغاء تعيين LICENTIVO_LICENSE_KEY وأعد التشغيل باستخدام نفس البيئة الافتراضية ومستخدم نظام التشغيل. تأكد من استعادة بيانات اعتماد الجهاز المحفوظ.
  3. قم بتعيين LICENTIVO_FEATURE إلى ميزة غير موجودة في الترخيص وLICENTIVO_OUTPUT إلى اسم ملف جديد. توقع رمز خروج غير صفري ولا يوجد تصدير جديد.
  4. إذا قمت بتمكين القياس، فقم أولاً بتكوين قاعدة الاستخدام، ثم قم بتعيين LICENTIVO_METERED=1 وقم بتوفير LICENTIVO_OPERATION_ID لمهمة العمل الدائمة. التحقق من أن العمل الناجح يقلل من عداده مرة واحدة.

استكشاف أخطاء التثبيت والترخيص وإصلاحها

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

عادةً ما يعني ModuleNotFoundError أن النقطة (pip) ويستخدم التطبيق مترجمين مختلفين لـ Python. استخدم نفس البيئة الافتراضية القابلة للتنفيذ لكلا الأمرين.

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

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