เครื่องมือการส่งต่อพอร์ต แบบอะซิงโครนัสสำหรับผู้ใช้หลายราย ที่ใช้ โปรโตคอล 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 และแบ็กเอนด์ทั้งหมดเป็นแบบอะซิงโครนัสและไม่มีการบล็อก