Skip to content

christarcher/suo5-standalone-java

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

suo5-standalone (java)

一个可直接运行的 suo5 独立版服务端实现. 项目主要逻辑来自 suo5.jsp, 去掉了 JSP 和 Servlet 容器相关部分, 改为使用 JDK 自带的 HTTP 服务能力启动和处理请求, 因此不需要 Tomcat, Jetty 等容器.

适合需要单独启动 Suo5 代理, 但又不想要部署一个完整 Servlet 容器的场景.

主要改动

  • 去除了 suo5.jsp 对 Servlet 方法, 和 Servlet 容器生命周期的依赖.
  • 增加 Suo5Handler, 负责处理 HTTP 请求入口, 路径注册和简单鉴权.
  • 增加 SimpleRequestSimpleResponse, 用 HttpExchange 适配原 suo5 逻辑需要的请求, 响应方法.
  • 保留 suo5 原有协议处理逻辑, 包括握手, 全双工流, 半双工流, 经典模式, 隧道状态管理, 数据编解码, 转发和模板响应等核心行为.

编译

需要先安装 JDK, 并确保 javac, jar, java 已加入 PATH.

Windows:

build-windows.bat

Linux:

bash build-linux.sh

编译成功后会生成

Suo5Server.jar

运行

默认启动:

java -jar Suo5Server.jar

默认监听 http://0.0.0.0:1098/s5 , 使用suo5客户端连接即可

指定监听地址, 端口, 路径和 token:

java -jar Suo5Server.jar -l 127.0.0.1 -p 1098 -P /s5 -t your-token -k 'X-Auth-Token'

参数说明

-l  监听地址, 默认 0.0.0.0
-p  监听端口, 默认 1098
-P  HTTP 路径, 默认 /s5
-t  访问 token, 默认空. 为空时不启用鉴权
-k  token 请求头名称, 默认 X-Authorization

启用 -t 后, 请求需要满足以下任一条件:

  • 请求头中带上 token, 例如 X-Authorization: your-token
  • URL 查询参数中带上 token, 例如 /s5?token=your-token

如果使用自定义请求头:

java -jar Suo5Server.jar -t your-token -k X-Token

客户端请求需要带上:

X-Token: your-token

示例

监听本机地址, 仅允许本机访问:

java -jar Suo5Server.jar -l 127.0.0.1 -p 1098 -P /s5 -t change-me

监听所有网卡:

java -jar Suo5Server.jar -l 0.0.0.0 -p 1098 -P /s5 -t change-me

然后将兼容 suo5 协议的客户端服务端地址配置为:

http://127.0.0.1:1098/s5

如果启用了 token, 需要在客户端请求中配置对应请求头, 或在 URL 中追加 ?token=change-me.

About

一个可直接运行的suo5独立版服务端实现, 无需Tomcat/Jetty等Servlet容器. A standalone Java implementation of suo5, designed to run directly without servlet containers such as Tomcat or Jetty.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors