diff --git a/.editorconfig b/.editorconfig index 88d539d3..fd8405bb 100644 --- a/.editorconfig +++ b/.editorconfig @@ -2,4 +2,7 @@ root=true [*.{groovy,java,kt,xml}] indent_style = space -indent_size = 4 \ No newline at end of file +indent_size = 4 + +[*.sh] +end_of_line=lf diff --git a/.gitignore b/.gitignore index 0e6c3a3b..cfef0ef9 100644 --- a/.gitignore +++ b/.gitignore @@ -57,5 +57,6 @@ hs_err_pid* neutrino-proxy-vuepress/deploy.sh .NEUTRINO_PROXY_CLIENT_ID logs +data **/cert/** neutrino-proxy-server/src/main/resources/static/** diff --git a/Milestone.md b/Milestone.md new file mode 100644 index 00000000..c2c384de --- /dev/null +++ b/Milestone.md @@ -0,0 +1,16 @@ +- 2022-06-16 1.0.0版本发布,基于自研应用框架、纯配置无管理后台 +- 2022-10-12 1.5.0版本发布,底层框架优化,新增管理后台 +- 2022-11-23 1.6.0版本发布,新增日志管理模块,新增首页流量统计 +- 2023-01-08 中微子代理Gitee Star突破100 +- 2023-01-16 加入Dromara组织 +- 2023-02-23 1.6.4版本发布,管理后台增、删、改、禁用实时生效,启动参数、GZip优化 +- 2023-03-12 1.7.0版本发布,底层框架更换为Solon + MybatisPlus +- 2023-03-26 1.7.1版本发布,新增端口池分组、新增报表管理模块、首页图表优化 +- 2023-04-03 1.8.0版本发布,端口映射支持选择协议,HTTP映射支持子域名 +- 2023-05-27 1.8.2版本发布,增加HTTPS支持 +- 2023-06-03 1.8.3版本发布,客户端重连优化、服务端验证客户端身份逻辑优化 +- 2023-06-08 1.8.4版本发布,增加对mariadb的支持、配置文件支持指定日志级别、重连参数 +- 2023-07-04 1.8.5版本发布,后台若干细节优化、配置文件优化 +- 2023-09-07 1.8.6版本发布,后台若干细节优化 +- 2023-09-22 1.9.0版本发布,端口映射支持UDP协议 +- 2023-09-25 中微子代理Gitee Star数突破1000 diff --git a/README.md b/README.md index 5dc93ff2..edca90c0 100644 --- a/README.md +++ b/README.md @@ -4,8 +4,8 @@

star fork - - + + license MIT diff --git a/VLog.md b/VLog.md new file mode 100644 index 00000000..3c44297a --- /dev/null +++ b/VLog.md @@ -0,0 +1,74 @@ +# 1.x +## 1.0.0 +> 第一个基本可用版本 +- 基于自研底层应用框架、Netty +- 纯配置实现、无管理后台 +- 支持TCP代理 + +## 1.5.0 +- 管理后台新增用户管理、License管理、端口映射、调度管理、客户端连接日志、调度日志 +- 支持默认sqlite数据库 +- 底层框架Aop、Banner、SqlMapper、Ioc、@Value注解、Yml配置加载、静态资源服务等优化 +- 底层框架新增@Async、@Singleton等注解 +- 新增AsgcCompiler、ApplicationEvent机制封装 + +## 1.6.0 +- 新增日志管理模块,调度日志迁移至日志管理 +- 管理后台新增登录日志 +- 新增首页流量统计 + +## 1.6.4 +- 支持代理服务端用户(删除/禁用)、端口池(删除/禁用/启用)、License(删除/禁用/启用)、端口映射(新增/删除/禁用/启用)实时生效 +- 启动参数优化 +- 服务端静态资源服务支持缓存、gzip压缩,提升响应速度 + +## 1.7.0 +- 底层框架更换为Solon + MybatisPlus + +## 1.7.1 +- 针对管理后台各页面的排序、搜索条件的优化 +- 增加端口池分组、相关的端口映射优化 +- 增加了报表管理模块:用户流量报表、license流量报表、用户流量月度明细、license流量月度明细 +- 完成首页图表展示:license统计、端口映射统计、今日流量统计、汇总流量统计、最近15日流量折线图 + +## 1.8.0 +- 端口映射支持选择协议 +- HTTP协议下映射支持配置子域名(前提是server端配置了域名) + +## 1.8.2 +- 增加HTTPS的支持。 + +## 1.8.3 +- 客户端重连优化 +- 服务端验证客户端身份逻辑优化 + +## 1.8.4 +- 增加对mariadb的支持 +- 服务端/客户端,支持配置文件、启动参数指定日志级别 +- 客户端支持配置文件指定重连间隔,是否开启无限重连 + +## 1.8.5 +- 后台端口池管理支持批量删除 +- 端口映射下拉选择端口支持搜索 +- 客户端/服务端配置增加心跳日志开关,有需要时开启,方便排查问题 +- 客户端/服务端读写超时逻辑微调 + +## 1.8.6 +- 端口映射选择端口支持分页 +- 新增/更新端口映射,增加端口占用检测(端口映射编辑时,如果端口号没有变动,则不验证。避免出现端口映射正在使用时,无法更新端口映射其他信息的问题) +- 下拉搜索license,支持模糊搜索 +- license下拉用户搜索,支持模糊搜索 +- 端口映射HTTP(S)新增打开网页按钮 +- 客户端断开连接时,记录日志空指针异常问题修复 + +## 1.9.0 +- 端口映射支持UDP协议 +- 端口映射HTTP(S)新增打开网页按钮,优先使用域名打开 +- 新增/编辑端口映射时端口占用检测功能屏蔽,解决docker下使用的各种问题 + +# 2.x +## 2.0.0 +- solon版本升级为`2.5.11` +- jdk版本升级为17 +- 支持原生编译改造 +- 默认支持的数据库由sqlite改为h2 diff --git a/neutrino-proxy-client/Dockerfile b/neutrino-proxy-client/Dockerfile index 85388bdf..0ba1eb31 100644 --- a/neutrino-proxy-client/Dockerfile +++ b/neutrino-proxy-client/Dockerfile @@ -1,12 +1,12 @@ -FROM openjdk:8-jdk-alpine +FROM openjdk:17-jdk-alpine #同步时间 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \ apk update && apk add wget unzip vim && apk add -U tzdata && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone RUN mkdir -p /root/neutrino-proxy/config WORKDIR /root/neutrino-proxy -COPY ../neutrino-proxy-client/target/neutrino-proxy-client.jar /root/neutrino-proxy/neutrino-proxy-client.jar -COPY ../neutrino-proxy-client/src/main/resources/app.yml /root/neutrino-proxy/config +COPY ./target/neutrino-proxy-client.jar /root/neutrino-proxy/neutrino-proxy-client.jar +COPY ./src/main/resources/app.yml /root/neutrino-proxy/config #VOLUME ["/root/neutrino-proxy"] ENTRYPOINT ["java","-jar","neutrino-proxy-client.jar","config=./config/app.yml"] diff --git a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/ProxyClient.java b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/ProxyClient.java index a22a9489..3f5d6628 100644 --- a/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/ProxyClient.java +++ b/neutrino-proxy-client/src/main/java/org/dromara/neutrinoproxy/client/ProxyClient.java @@ -16,12 +16,12 @@ public class ProxyClient { public static void main(String[] args) { Solon.start(ProxyClient.class, args, app -> { - setAlias("neutrino.proxy.tunnel.serverIp", "serverIp"); - setAlias("neutrino.proxy.tunnel.serverPort", "serverPort"); - setAlias("neutrino.proxy.tunnel.sslEnable", "sslEnable"); - setAlias("neutrino.proxy.tunnel.jksPath", "jksPath"); - setAlias("neutrino.proxy.tunnel.keyStorePassword", "keyStorePassword"); - setAlias("neutrino.proxy.tunnel.licenseKey", "licenseKey"); + setAlias("neutrino.proxy.tunnel.server-ip", "serverIp"); + setAlias("neutrino.proxy.tunnel.server-port", "serverPort"); + setAlias("neutrino.proxy.tunnel.ssl-enable", "sslEnable"); + setAlias("neutrino.proxy.tunnel.jks-path", "jksPath"); + setAlias("neutrino.proxy.tunnel.key-store-password", "keyStorePassword"); + setAlias("neutrino.proxy.tunnel.license-key", "licenseKey"); }); } diff --git a/neutrino-proxy-server/Dockerfile b/neutrino-proxy-server/Dockerfile index 6893ea59..56aa5cef 100644 --- a/neutrino-proxy-server/Dockerfile +++ b/neutrino-proxy-server/Dockerfile @@ -1,15 +1,13 @@ -FROM openjdk:8-jdk-alpine +FROM openjdk:17-jdk-alpine #同步时间 RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.aliyun.com/g' /etc/apk/repositories && \ apk update && apk add wget unzip vim && apk add -U tzdata && \ ln -sf /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo 'Asia/Shanghai' >/etc/timezone RUN mkdir -p /root/neutrino-proxy/config -RUN mkdir -p /root/neutrino-proxy/neutrino-proxy-admin WORKDIR /root/neutrino-proxy -COPY ../neutrino-proxy-server/target/neutrino-proxy-server.jar /root/neutrino-proxy/neutrino-proxy-server.jar -COPY ../neutrino-proxy-server/src/main/resources/app.yml /root/neutrino-proxy/config -COPY ../neutrino-proxy-admin/dist /root/neutrino-proxy/neutrino-proxy-admin/dist +COPY ./target/neutrino-proxy-server.jar /root/neutrino-proxy/neutrino-proxy-server.jar +COPY ./src/main/resources/app.yml /root/neutrino-proxy/config #VOLUME ["/root/neutrino-proxy"] ENTRYPOINT ["java","-jar","neutrino-proxy-server.jar","config=./config/app.yml"] -#docker run -it -p 9000-9200:9000-9200/tcp -p 8888:8888 -v /root/neutrino-proxy/config:/root/neutrino-proxy/config -d --restart=always --name neutrino registry.cn-hangzhou.aliyuncs.com/asgc/aoshiguchen-docker-images:1.7 \ No newline at end of file +#docker run -it -p 9000-9200:9000-9200/tcp -p 8888:8888 -v /root/neutrino-proxy/config:/root/neutrino-proxy/config -d --restart=always --name neutrino registry.cn-hangzhou.aliyuncs.com/asgc/aoshiguchen-docker-images:1.7 diff --git a/neutrino-proxy-server/src/main/resources/app.yml b/neutrino-proxy-server/src/main/resources/app.yml index d92bd55e..7719937b 100644 --- a/neutrino-proxy-server/src/main/resources/app.yml +++ b/neutrino-proxy-server/src/main/resources/app.yml @@ -77,7 +77,7 @@ neutrino: # 数据库类型,目前支持h2、mysql、mariadb type: ${DB_TYPE:h2} # 数据库连接URL - url: ${DB_URL:jdbc:h2:file:~/.neutrino-proxy/data/db;MODE=MySQL;AUTO_SERVER=TRUE} + url: ${DB_URL:jdbc:h2:file:./data/db;MODE=MySQL;AUTO_SERVER=TRUE} # 数据库用户名 username: ${DB_USER:} # 数据库密码 diff --git a/pom.xml b/pom.xml index c15e63f6..721fad87 100644 --- a/pom.xml +++ b/pom.xml @@ -76,7 +76,7 @@ mysql mysql-connector-java - 5.1.49 + 8.0.33 org.mariadb.jdbc diff --git a/scripts/unix/admin_build_dev.sh b/scripts/unix/admin_build_dev.sh index 37c3e5eb..55c27091 100644 --- a/scripts/unix/admin_build_dev.sh +++ b/scripts/unix/admin_build_dev.sh @@ -44,3 +44,9 @@ cp -rf ./neutrino-proxy-admin/dist $adminDeployDir/ cp -rf ./neutrino-proxy-admin/dist/ $giteePagesDir cd $serverDeployDir zip -r neutrino-proxy-admin.zip "neutrino-proxy-admin/" + +#拷贝到neutrino-proxy-server项目静态资源目录下 +cd ../.. +rm -rf ./neutrino-proxy-server/src/main/resources/static +mkdir -p neutrino-proxy-server/src/main/resources/static +cp -rf ./neutrino-proxy-admin/dist/ ./neutrino-proxy-server/src/main/resources/static diff --git a/scripts/unix/client_build.sh b/scripts/unix/client_build.sh index 889c19ce..08811217 100644 --- a/scripts/unix/client_build.sh +++ b/scripts/unix/client_build.sh @@ -1,7 +1,7 @@ #!/bin/sh # 中微子代理客户端编译打包脚本,基础参数请自行修改 -export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home +export JAVA_HOME=/Users/yangwen/my/service/graalvm/graalvm-community-openjdk-17.0.8+7.1/Contents/Home export MAVEN_HOME=/Users/yangwen/my/service/maven/apache-maven-3.8.1 export PATH=:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin @@ -11,12 +11,13 @@ clientDeployDir=$deployDir"/client" #切到项目根目录 cd ../.. #初始化文件夹 -if [ ! -d "$deployDir" ];then - mkdir $deployDir -fi -if [ ! -d "$clientDeployDir" ];then - mkdir $clientDeployDir -fi +#if [ ! -d "$deployDir" ];then +# mkdir $deployDir +#fi +#if [ ! -d "$clientDeployDir" ];then +# mkdir $clientDeployDir +#fi +mkdir -p $clientDeployDir rm -rf $clientDeployDir/neutrino-proxy-client.jar #客户端打包 mvn clean install -U -pl neutrino-proxy-client -am -Dmaven.test.skip=true diff --git a/scripts/unix/client_docker_build.sh b/scripts/unix/client_docker_build.sh index b077caeb..13e80569 100644 --- a/scripts/unix/client_docker_build.sh +++ b/scripts/unix/client_docker_build.sh @@ -1,29 +1,29 @@ #!/bin/sh # 镜像版本,每次更新版本时需要调整 -ImageVer=1.8.5 +ImageVer=2.0.0 ImageName=neutrino-proxy-client -DockerFilePath=$PWD/../../neutrino-proxy-client/Dockerfile +DockerFilePath=$PWD/../../neutrino-proxy-client -deployDir=$PWD/../../"deploy" -clientDeployDir=$deployDir"/client" - -#切到项目根目录 -#初始化文件夹 -if [ ! -d "$deployDir" ];then - mkdir $deployDir -fi -if [ ! -d "$clientDeployDir" ];then - mkdir $clientDeployDir -fi -rm -rf $clientDeployDir/$ImageName.tar +##初始化文件夹 +#deployDir=$PWD/../../"deploy" +#clientDeployDir=$deployDir"/client" +#if [ ! -d "$deployDir" ];then +# mkdir $deployDir +#fi +#if [ ! -d "$clientDeployDir" ];then +# mkdir $clientDeployDir +#fi +#rm -rf $clientDeployDir/$ImageName.tar #echo '打包jar...' -sh ./client_build.sh +#sh ./client_build.sh # 删除老的本地镜像 docker rmi -f $(docker images | grep $ImageName | awk '{print $3}') # 构建镜像 -docker build -t $ImageName:$ImageVer -t $ImageName:latest -f $DockerFilePath $PWD/../.. +docker build -t $ImageName:$ImageVer -t $ImageName:latest $DockerFilePath # 保存镜像到本地 -docker save -o $clientDeployDir/$ImageName.tar $ImageName:$ImageVer +#docker save -o $clientDeployDir/$ImageName.tar $ImageName:$ImageVer + +# docker run -it -e LICENSE_KEY=b0a907332b474b25897c4dcb31fc7eb6 -e SERVER_IP=host.docker.internal --name np-client neutrino-proxy-client:2.0.0 diff --git a/scripts/unix/client_start.sh b/scripts/unix/client_start.sh index 81ef6f56..add5d12a 100755 --- a/scripts/unix/client_start.sh +++ b/scripts/unix/client_start.sh @@ -1,8 +1,8 @@ #!/bin/sh # 中微子代理客户端启动脚本,基础参数请自行修改 -JAVA_OPS="-server -Xms256m -Xmx512m -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/work/$NAME/heapError/" -export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home +JAVA_OPS="-server -Xms256m -Xmx512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/work/$NAME/heapError/" +export JAVA_HOME=/Users/yangwen/my/service/graalvm/graalvm-community-openjdk-17.0.8+7.1/Contents/Home export PATH=:$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar mkdir -p /work/$NAME/heapError/ diff --git a/scripts/unix/server_build.sh b/scripts/unix/server_build.sh index 03193ca1..4f19e66a 100644 --- a/scripts/unix/server_build.sh +++ b/scripts/unix/server_build.sh @@ -1,7 +1,7 @@ #!/bin/sh # 中微子代理服务端编译打包脚本,基础参数请自行修改 -export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home +export JAVA_HOME=/Users/yangwen/my/service/graalvm/graalvm-community-openjdk-17.0.8+7.1/Contents/Home export MAVEN_HOME=/Users/yangwen/my/service/maven/apache-maven-3.8.1 export PATH=:$PATH:$JAVA_HOME/bin:$MAVEN_HOME/bin @@ -11,12 +11,13 @@ serverDeployDir=$deployDir"/server" #切到项目根目录 cd ../.. #初始化文件夹 -if [ ! -d "$deployDir" ];then - mkdir $deployDir -fi -if [ ! -d "$serverDeployDir" ];then - mkdir $serverDeployDir -fi +#if [ ! -d "$deployDir" ];then +# mkdir $deployDir +#fi +#if [ ! -d "$serverDeployDir" ];then +# mkdir $serverDeployDir +#fi +mkdir -p $serverDeployDir rm -rf $serverDeployDir/neutrino-proxy-server.jar #服务端打包 diff --git a/scripts/unix/server_docker_build.sh b/scripts/unix/server_docker_build.sh index 364b0873..714823c2 100644 --- a/scripts/unix/server_docker_build.sh +++ b/scripts/unix/server_docker_build.sh @@ -1,17 +1,18 @@ #!/bin/sh # 镜像版本,每次更新版本时需要调整 -ImageVer=1.0.0 +ImageVer=2.0.0 ImageName=neutrino-proxy -DockerFilePath=$PWD/../.. +DockerFilePath=$PWD/../../neutrino-proxy-server -#echo '打包jar...' -sh ./server_build.sh #echo '打包管理后台...' sh ./admin_build_docker.sh +#echo '打包jar...' +sh ./server_build.sh # 删除老的本地镜像 docker rmi -f $(docker images | grep $ImageName | awk '{print $3}') # 构建镜像 docker build -t $ImageName:$ImageVer -t $ImageName:latest $DockerFilePath +# docker run -it -p 9000-9200:9000-9200/tcp -p 8888:8888 --name np-server neutrino-proxy:2.0.0 diff --git a/scripts/unix/server_start.sh b/scripts/unix/server_start.sh index 07ad4fcd..14134200 100755 --- a/scripts/unix/server_start.sh +++ b/scripts/unix/server_start.sh @@ -1,8 +1,8 @@ #!/bin/sh # 中微子代理服务端启动脚本,基础参数请自行修改 -JAVA_OPS="-server -Xms256m -Xmx1024m -XX:PermSize=128M -XX:MaxPermSize=256M -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/work/$NAME/heapError/" -export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_151.jdk/Contents/Home +JAVA_OPS="-server -Xms256m -Xmx1024m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/work/$NAME/heapError/" +export JAVA_HOME=/Users/yangwen/my/service/graalvm/graalvm-community-openjdk-17.0.8+7.1/Contents/Home export PATH=:$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar mkdir -p /work/$NAME/heapError/