pylcx
1.0.0
웹 측 관리 및 모니터링 플랫폼을 제공하고 기간 및 트래픽을 기반으로 할당량 관리를 구현하며 실시간으로 사용자 트래픽 사용량을 계산하고 자세한 주문을 생성하는 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를 사용합니다.
프로토콜과 양방향 포트 포워딩은 asyncio를 기반으로 구현되었으며 데이터베이스는 aiomysql을 사용하고 전체 백엔드는 비동기식이며 Non-Blocking입니다.