pylcx
1.0.0
基於CHAP 協定的多用戶非同步連接埠轉送工具,提供Web 端的管理和監控平台,實現基於時長和流量的配額管理,即時統計用戶使用流量情況並產生詳情,以圖表的形式展示於前端
協定:增強型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 : remote listen 的核心模組
slave.py : local slave 的核心模組
server.py : sanic app 的核心模組
使用者密碼使用MD5 加鹽加密存儲,協定的握手使用隨機因子防止重播攻擊
前後端分離,後端使用Sanic 提供RESTful API,並使用JWT 進行跨域認證
協定和雙向連接埠轉送都基於asyncio 實現,且資料庫使用aiomysql,整個後端異步非阻塞