عن المشروع
OpenPT هي أداة خفيفة الوزن تعتمد على التكوين للإبلاغ عن تتبع BitTorrent، تهدف إلى سيناريوهات seeding في التتبع الخاص (PT). تعمل الأداة من خلال ملفات .torrent وحدها: لا يتطلب الأمر تنزيل محتوى فعلي، حيث يقوم البرنامج بمحاكاة عميل يبلغ بشكل دوري عن حالة seeding، وكمية البيانات المرفوعة، والمنفذ، وهوية العميل إلى التتبع (tracker). وبما أنها تبلغ عن أرقام بدلاً من نقل البيانات، فهي أداة لمحاكاة seeding وليست عميل BitTorrent؛ وتظل قواعد التتبع وسياسات الاستخدام المقبول مسؤولية المشغل.
تشمل القدرات الموثقة المسح التلقائي لدليل torrents وتحميل ملفات .torrent؛ وحد أقصى قابل للتكوين لعمليات seeding المتزامنة (0 تعني غير محدود)؛ ملفات انتحال هوية العميل لـ qBittorrent و Transmission و Deluge و uTorrent؛ ثلاث استراتيجيات رفع (none، conservative_rate، configured_rate) مع فترات تذبذب وتحديث؛ تخصيص سرعة الرفع ديناميكياً من الأقران الذين يعيدهم التتبع؛ نسبة مشاركة مستهدفة يتم عندها إيقاف torrent؛ إعادة محاولة بتراجع أسي بعد فشل الإبلاغ؛ دعم تتبع HTTP و HTTPS و UDP؛ ودعم info hashes لـ BitTorrent v1 و hybrid و v2-only؛ وأرشفة تلقائية لملفات torrent التالفة أو غير القابلة للتحليل؛ وحفظ إجمالي الرفع وحالة الاكتمال بحيث يمكن الاستئناف بعد إعادة التشغيل؛ وإيقاف الإبلاغ عند حذف ملف torrent؛ بالإضافة إلى مقاييس بتنسيق Prometheus ونقطة نهاية لفحص الحالة (health check).
مسارات النشر هي إما ملف ثنائي مبني محلياً يتم تشغيله كـ openpt --config config.toml، أو صورة Docker المنشورة chenbin3625/openpt التي يتم تشغيلها عبر Docker Compose مع تعيين PUID/PGID ومجلد ./data يحتوي على دليل torrents. التكوين بصيغة TOML، يتم نسخه من examples/config.example.toml، ويغطي simultaneous_seed، و client، و torrents_dir، و clients_dir، و archive_dir، و state_file، وفترة المسح، ومهلة إيقاف التشغيل، واستراتيجية الرفع وحدود السرعة، و ratio_target، ومنفذ/IP/IPv6 الخاص بالإبلاغ، ومهلة التتبع، والوكيل (HTTP أو SOCKS5، يستخدم فقط لتتبع HTTP/HTTPS، بينما تعيد تتبعات UDP خطأً واضحاً)، وحدود التراجع، وعنوان ومسار الاستماع للمقاييس، ومخرجات السجلات.
واجهة المستخدم الويب المدمجة مكتوبة باستخدام Vite و React و antd ومدمجة في الملف الثنائي عبر go:embed؛ مخرجات الواجهة الأمامية المبنية محفوظة، لذا يمكن بناء نسخة جديدة أو اختبارها مباشرة باستخدام Go toolchain. تعرض واجهة المستخدم أعداد torrents النشطة وغير الطبيعية، وسرعة الرفع الحالية، وإجمالي المرفوعات، ووقت الإبلاغ التالي، وحجم كل torrent، والبيانات المرفوعة، والسرعة، والأقران، ونسبة المشاركة، ووقت وفترة الإبلاغ الأخير/التالي، ومضيف التتبع ومؤشر التبديل، بالإضافة إلى تفاصيل الحالة والأخطاء، مع فرز الأعمدة وتصفية الحالة والبحث بالاسم أو التتبع. كما يوفر مستمع المقاييس /metrics و /healthz؛ وتظل /healthz متاحة حتى عندما تكون metrics.enabled خاطئة. يؤدي إرسال SIGHUP إلى إعادة تحميل مجموعة فرعية من الإعدادات (simultaneous seeds، واستراتيجية الرفع ومعدلاتها، و ratio target، ومهلة إيقاف التشغيل، ومنفذ/IP/IPv6 الخاص بالإبلاغ، ومهلة التتبع، والوكيل والتراجع)، بينما تتطلب ملفات انتحال هوية العميل، والأدلة، وملف الحالة، وفترة المسح، وملف السجلات، وخيارات المقاييس/واجهة المستخدم إعادة تشغيل.
بشكل افتراضي، يؤدي تعيين announce.port = 0 إلى إنشاء منفذ ديناميكي عشوائي في النطاق 49152-65535 عند كل تشغيل بدلاً من إعادة استخدام القيم الافتراضية الشائعة مثل 6881. المشروع مرخص بموجب رخصة MIT.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.