Ein auf dem CHAP-Protokoll basierendes asynchrones Port-Weiterleitungstool für mehrere Benutzer , das eine webseitige Verwaltungs- und Überwachungsplattform bereitstellt, eine Quotenverwaltung basierend auf Dauer und Datenverkehr implementiert, die Benutzerdatenverkehrsnutzung in Echtzeit zählt und detaillierte Bestellungen generiert, die auf angezeigt werden das Frontend in Form von Diagrammen.
Protokoll: Erweitertes CHAP-Protokoll
Frontend: vue.js + vuex + vue-router + vue-cli + axios + element-ui + v-chart
Backend: 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
: Programmeingabe, Befehlszeilenparameter lesen und Protokolle konfigurieren
chap.py
: Das Modul zum Lesen und Schreiben von Daten am Ende des Protokolls
listen.py
: Kernmodul von Remote Listen
slave.py
: Das Kernmodul des lokalen Slaves
server.py
: Kernmodul der Sanic-App
Benutzerkennwörter werden mit MD5-Salt verschlüsselt und gespeichert, und der Handshake des Protokolls nutzt Zufallsfaktoren, um Replay-Angriffe zu verhindern.
Das Front-End und das Back-End sind getrennt. Das Back-End verwendet Sanic, um eine RESTful-API bereitzustellen, und verwendet JWT für die domänenübergreifende Authentifizierung.
Das Protokoll und die bidirektionale Portweiterleitung basieren auf Asyncio, die Datenbank verwendet AiomySQL und das gesamte Backend ist asynchron und nicht blockierend.