- PHP 技术栈(Laravel + MySQL + Swoole)
- 单服务器多用户管理系统
- 使用网页添加、编辑、删除用户
- 单独统计每个用户每天、每周、每月的流量值及流量使用趋势
- 首页以小时、天、周为维度展示流量使用排行,便于找出资源消耗过量的账号
- ssserver 即 shadowsocks 的服务进程,以 manager 模式启动,这样就可以通过 udp 协议对其进行管理,可以在其运行过程中动态地添加、更新、删除账号,同时 ssserver 会将流量信息发送给通过 udp 协议控制它的某个进程
- Swoole 进程独立运行,每隔 5 秒查询一次数据库,将所有的端口号-密码组合向 ssserver 添加一遍(确实很 dirty,但是没办法)
- 网站部分有两个功能:
- 添加账号时,直接将数据写入数据库,等待 Swoole 进程每 5 秒一次的读取
- 删除账号时,使用 Swoole 的 udp 客户端的同步阻塞模式(简单独立调用,跟 Swoole 进程无关),给 ssserver 发送删除请求。更改密码采用 删除再新增 实现。
git clone https://github.com/ZhuFaner/shadowsocks-manage-system.git
更改权限:
cd shadowsocks-manage-system
sudo chmod -R 777 storage bootstrap/cache
修改 .env 文件:
DB_CONNECTION = mysql
DB_HOST = 127.0.0.1
DB_PORT = 3306
DB_DATABASE = db_name
DB_USERNAME = name
DB_PASSWORD = your password
php artisan migrate
在 config/app.php
中修改 ss_domain 为自己的服务器域名
'ss_domain' => 'your domain name'
① Ubuntu
sudo apt install python-pip
pip install git+https://github.com/shadowsocks/shadowsocks.git@master
② CentOS
sudo yum install python-setuptools && easy_install pip
pip install git+https://github.com/shadowsocks/shadowsocks.git@master
详细安装教程: https://github.com/shadowsocks/shadowsocks/blob/master/README.md
修改 shadowsocks-manage-system/shadowsocks.json
中的端口号和密码为你喜欢的值:
{
"server": "0.0.0.0",
"port_password": {
"端口号": "密码"
},
"timeout": 300,
"method": "aes-256-cfb"
}
将下列命令中的 ooxx 修改为真实的路径,执行一次:
ssserver --manager-address 0.0.0.0:6001 -c ooxx/shadowsocks-manage-system/shadowsocks.json -d restart
先安装 pecl。
CentOS 系统:
sudo yum install php-pear pecl
Ubuntu 系统:
sudo apt install php-pear php-dev
然后使用 pecl 安装 swoole:
pecl install swoole
extension = swoole.so
修改 shadowsocks-manage-system/swoole_config.json
:
{
"service_port": 6001,
"address":"127.0.0.1",
"dsn":"mysql:host=localhost;dbname=shadow_manage",
"db_user": "root",
"db_password": "",
"interval_time": 5000
}
php SwooleTask.php
Swoole 进程需要一直存在于内存中,以源源不断地接收来自 ssserver 进程的流量信息,同时承担着每 5 秒一次的账号更新操作。推荐使用 Supervisor 来维护 Swoole 进程,具体可以自行搜索,使用起来还是挺简单的。
遇到问题请提交 issue~