أداة إعادة توجيه منفذ غير متزامنة متعددة المستخدمين تعتمد على بروتوكول CHAP ، والتي توفر نظامًا أساسيًا للإدارة والمراقبة على جانب الويب، وتنفذ إدارة الحصص بناءً على المدة وحركة المرور، وتحسب استخدام حركة مرور المستخدم في الوقت الفعلي، وتنشئ أوامر مفصلة، والتي يتم عرضها على الواجهة الأمامية على شكل رسوم بيانية.
البروتوكول: بروتوكول CHAP المحسن
الواجهة الأمامية: vue.js + vuex + vue-router + vue-cli + axios + element-ui + v-chart
الواجهة الخلفية: asyncio + sanic + sanic_cors + sanic_jwt + aiomysql
(back_end) root@iZ2zehx50rbasf3o9jdehaZ:~/pylcx/back_end# python main.py -h
usage: main.py [-h] {listen,slave} ...
async LCX with CHAP
positional arguments:
{listen,slave} choose a mode to run
listen run in listen mode
slave run in slave mode
optional arguments:
-h, --help show this help message and exit
(back_end) root@iZ2zehx50rbasf3o9jdehaZ:~/pylcx/back_end# python main.py listen -h
usage: main.py listen [-h] -p PORT [-a ADDR] [-v]
optional arguments:
-h, --help show this help message and exit
-p PORT Port listen for slave side
-a ADDR Address for a web server to manage users, default
0.0.0.0:8000
-v, --verbose verbose log (repeat for more verbose)
(back_end) root@iZ2zehx50rbasf3o9jdehaZ:~/pylcx/back_end# python main.py slave -h
usage: main.py slave [-h] [-b BIND] -l LOCAL -r REMOTE -u USER [-v]
optional arguments:
-h, --help show this help message and exit
-b BIND Open a bind port at remote listen, connected by remote
client, default 0 (random port)
-l LOCAL Local server address in format host:port
-r REMOTE Remote listen address in format host:port
-u USER User in format username:password
-v, --verbose verbose log (repeat for more verbose)
main.py
: إدخال البرنامج وقراءة معلمات سطر الأوامر وتكوين السجلات
chap.py
: وحدة قراءة وكتابة البيانات في الجزء السفلي من البروتوكول
listen.py
: الوحدة الأساسية للاستماع عن بعد
slave.py
: الوحدة الأساسية للعبد المحلي
server.py
: الوحدة الأساسية لتطبيق sanic
يتم تشفير كلمات مرور المستخدم وتخزينها باستخدام ملح MD5، وتستخدم مصافحة البروتوكول عوامل عشوائية لمنع هجمات إعادة التشغيل.
يتم فصل الواجهة الأمامية والخلفية، وتستخدم الواجهة الخلفية Sanic لتوفير RESTful API وتستخدم JWT للمصادقة عبر المجال.
يتم تنفيذ البروتوكول وإعادة توجيه المنفذ ثنائي الاتجاه على أساس غير متزامن، وتستخدم قاعدة البيانات aiomysql، والواجهة الخلفية بأكملها غير متزامنة وغير محظورة.