GNU Lesser General Public License v3.0

项目介绍

talkincode/ToughProxy 是一个托管在 GitHub 上的开源项目,主要使用 JavaScript 编写,采用 GNU Lesser General Public License v3.0 许可证,目前获得 51 个 Star、29 次 Fork。

仓库全名
talkincode/ToughProxy
开源许可证
GNU Lesser General Public License v3.0
Star 数
51
Fork 数
29
未关闭 Issue
4

README 摘要

ToughProxy ToughProxy 是一个代理服务器, 目标是提供一个综合性的代理服务软件,支持 socks5,socks4, http, https代理协议, 针对 Socks5 提供完善的认证机制,以及提供流量控制策略,访问控制策略。 基础功能清单 Socks5 代理(支持UDP穿透) Socks4 代理 Http代理 Https代理 Socks5 Radius 认证, 支持下发限速扩展 Socks5 数据库认证 认证用户管理,批量创建用户支持,用户组支持 全局限速和单个连接限速 连接数控制 源地址,目标地址,域名访问控制 实时连接会话查询,实时流量统计 连接日志存档查询,可自定义保存天数 Http APi 提供 快速开始 注意, linux 下提供了快捷安装脚本,请参考安装包内的 linux-installer.md 系统环境依赖 操作系统:支持跨平台部署 (Linux,Windows,MacOS等) java…

完整内容见 GitHub 原始 README 或本页 。

常见问题

ToughProxy 用什么语言开发?

主要使用 JavaScript 编写,采用 GNU Lesser General Public License v3.0 许可证,目前有 51 个 Star。

ToughProxy 可以免费商用吗?

仓库标注的许可证为 GNU Lesser General Public License v3.0,商用前请先阅读仓库 LICENSE 文件确认授权范围。

如何获取 ToughProxy 的源码?

可以直接克隆仓库:git clone https://github.com/talkincode/ToughProxy.git,默认分支为 master;安装与运行步骤见仓库 README。

ToughProxy 最近还在维护吗?

仓库最近一次更新为 2022年5月21日,当前有 4 个未关闭 Issue;Star 数为 51,可作为社区活跃度的参考。

简要分析

热度分
116
价值分
39
活跃状态
活跃

语言占比

Batchfile
CSS
HTML
Java
JavaScript
Python
Shell

README

****

ToughProxy

ToughProxy 是一个代理服务器, 目标是提供一个综合性的代理服务软件,支持 socks5,socks4, http, https代理协议, 针对 Socks5 提供完善的认证机制,以及提供流量控制策略,访问控制策略。

基础功能清单

  • Socks5 代理(支持UDP穿透)
  • Socks4 代理
  • Http代理
  • Https代理
  • Socks5 Radius 认证, 支持下发限速扩展
  • Socks5 数据库认证
  • 认证用户管理,批量创建用户支持,用户组支持
  • 全局限速和单个连接限速
  • 连接数控制
  • 源地址,目标地址,域名访问控制
  • 实时连接会话查询,实时流量统计
  • 连接日志存档查询,可自定义保存天数
  • Http APi 提供

快速开始

注意, linux 下提供了快捷安装脚本,请参考安装包内的 linux-installer.md

系统环境依赖

  • 操作系统:支持跨平台部署 (Linux,Windows,MacOS等)
  • java 版本: 1.8或更高
  • 数据库服务器:MySQL/MariaDB

数据库初始化

数据库的安装配置请自行完成,首先确保你的数据库服务器已经运行

运行创建数据库脚本以及创建专用用户

create database toughproxy DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
GRANT ALL ON toughproxy.* TO proxyuser@'127.0.0.1' IDENTIFIED BY 'proxypwd' WITH GRANT OPTION;FLUSH PRIVILEGES;

创建数据库表

USE `toughproxy`;

-- 表 toughproxy.ts_acl 结构
CREATE TABLE IF NOT EXISTS `ts_acl` (
  `id` bigint(20) unsigned NOT NULL,
  `priority` int(10) unsigned NOT NULL DEFAULT '0',
  `status` int(10) unsigned NOT NULL DEFAULT '1',
  `hits` int(10) unsigned NOT NULL DEFAULT '0',
  `policy` varchar(50) COLLATE utf8mb4_unicode_ci NOT NULL,
  `src` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `target` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `domain` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;


-- 表 toughproxy.ts_config 结构
CREATE TABLE IF NOT EXISTS `ts_config` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `type` varchar(32) COLLATE utf8mb4_unicode_ci NOT NULL,
  `name` varchar(128) COLLATE utf8mb4_unicode_ci NOT NULL,
  `value` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `remark` varchar(255) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 表 toughproxy.ts_group 结构
CREATE TABLE IF NOT EXISTS `ts_group` (
  `id` bigint(20) unsigned DEFAULT NULL,
  `name` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `status` int(10) unsigned NOT NULL DEFAULT '1',
  `up_limit` int(10) unsigned DEFAULT NULL,
  `down_limit` int(10) unsigned DEFAULT NULL,
  `max_session` int(10) unsigned DEFAULT NULL,
  `remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

-- 表 toughproxy.ts_user 结构
CREATE TABLE IF NOT EXISTS `ts_user` (
  `id` bigint(20) unsigned DEFAULT NULL,
  `group_id` bigint(20) unsigned DEFAULT NULL,
  `group_policy` int(10) unsigned DEFAULT NULL,
  `realname` varchar(50) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `username` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `password` varchar(64) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `mobile` varchar(32) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `email` varchar(128) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `status` int(10) unsigned DEFAULT NULL,
  `up_limit` int(10) unsigned DEFAULT NULL,
  `down_limit` int(10) unsigned DEFAULT NULL,
  `max_session` int(10) unsigned DEFAULT NULL,
  `create_time` timestamp NULL DEFAULT NULL,
  `update_time` timestamp NULL DEFAULT NULL,
  `expire_time` timestamp NULL DEFAULT NULL,
  `remark` varchar(512) COLLATE utf8mb4_unicode_ci DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

运行主程序

java -jar -Xms256M -Xmx1024M /opt/toughproxy-latest.jar  --spring.profiles.active=prod

注意 jar 文件(toughproxy-latest.jar)的路径

Linux systemd 服务配置

/opt/application-prod.properties

# web访问端口
server.port = 1823

# 日志配置,可选 logback-prod.xml 或 logback-dev.xml, 日志目录为 /var/toughproxy/logs
logging.config=classpath:logback-prod.xml

# 数据库配置
spring.datasource.url=jdbc:mysql://127.0.0.1:3306/toughproxy?serverTimezone=Asia/Shanghai&useUnicode=true&characterEncoding=utf-8
&allowMultiQueries
=true
spring.datasource.username=proxyuser
spring.datasource.password=proxypwd
spring.datasource.max-active=120
spring.datasource.driver-class-name=com.mysql.cj.jdbc.Driver

/usr/lib/systemd/system/toughproxy.service

[Unit]
Description=toughproxy
After=syslog.target

[Service]
WorkingDirectory=/opt
User=root
LimitNOFILE=65535
LimitNPROC=65535
Type=simple
ExecStart=/usr/bin/java -server -jar -Xms256M -Xmx1024M /opt/toughproxy-latest.jar  --spring.profiles.active=prod
SuccessExitStatus=143

[Install]
WantedBy=multi-user.target

如果了解 spring systemd和配置原理,可以根据自己的实际需要进行修改

通过以下指令启动服务

systemctl enable toughproxy
systemctl start toughproxy

WEB 管理访问

打开浏览器访问 http://服务器地址:1823

进入登录页面, 默认管理员用户名密码 admin root

意见反馈

如您有好的建议想法, 请加入 QQ 群 247860313 交流

评论

暂无评论