Alat penerusan port asinkron multi-pengguna berdasarkan protokol CHAP , yang menyediakan platform manajemen dan pemantauan sisi web, menerapkan manajemen kuota berdasarkan durasi dan lalu lintas, menghitung penggunaan lalu lintas pengguna secara real-time dan menghasilkan pesanan terperinci, yang ditampilkan di ujung depan dalam bentuk grafik.
Protokol: Protokol CHAP yang ditingkatkan
Bagian depan: vue.js + vuex + vue-router + vue-cli + axios + elemen-ui + v-chart
Bagian belakang: 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
: entri program, membaca parameter baris perintah dan mengkonfigurasi log
chap.py
: Modul membaca dan menulis data di bagian bawah protokol
listen.py
: modul inti mendengarkan jarak jauh
slave.py
: modul inti dari budak lokal
server.py
: modul inti aplikasi sanic
Kata sandi pengguna dienkripsi dan disimpan menggunakan garam MD5, dan jabat tangan protokol menggunakan faktor acak untuk mencegah serangan replay.
Front-end dan back-end dipisahkan. Back-end menggunakan Sanic untuk menyediakan RESTful API dan menggunakan JWT untuk otentikasi lintas domain.
Protokol dan penerusan port dua arah diimplementasikan berdasarkan asyncio, dan database menggunakan aiomysql, dan seluruh backend bersifat asynchronous dan non-blocking.