From d0572a4aba40df36fc3dd64f797ab200c42fa70d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=9F=BA=E6=A1=86=E6=9E=B6?= Date: Thu, 27 Mar 2025 00:01:09 +0800 Subject: [PATCH 01/11] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9docker?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=202=E3=80=81=E4=BF=AE=E6=94=B9=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=EF=BC=8C=E5=81=9C=E6=AD=A2=E8=84=9A=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- client/proxy-client-web/Dockerfile | 10 +++++----- client/proxy-client-web/pom.xml | 2 +- client/proxy-client-web/start.sh | 4 ++-- client/proxy-client-web/stop.sh | 2 +- server/proxy-server-web/Dockerfile | 8 ++++---- server/proxy-server-web/start.sh | 4 ++-- server/proxy-server-web/stop.sh | 2 +- 7 files changed, 16 insertions(+), 16 deletions(-) diff --git a/client/proxy-client-web/Dockerfile b/client/proxy-client-web/Dockerfile index 967a3e3..d79fe56 100644 --- a/client/proxy-client-web/Dockerfile +++ b/client/proxy-client-web/Dockerfile @@ -1,18 +1,18 @@ #指定以 openjdk:17-jdk-oracle 为基础镜像,来构建此镜像,可以理解为运行的需要基础环境 FROM openjdk:17-jdk-oracle #创建目录 -RUN mkdir -p /user/web -RUN mkdir -p /user/web/wiki-proxy -RUN mkdir -p /user/web/wiki-proxy/client +RUN mkdir -p /usr/web +RUN mkdir -p /usr/web/wiki-proxy +RUN mkdir -p /usr/web/wiki-proxy/client #指定容器的工作目录 -ENV jar_file /user/web/wiki-proxy/client +ENV jar_file /usr/web/wiki-proxy/client/ #添加时区指向 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone #WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行。 WORKDIR ${jar_file} #将当前文件夹下面 demo.jar 复制到容器对应目录下 -ENV jar_name wiKi-proxy-client.jar +ENV jar_name wiki-proxy-client.jar ADD ${jar_name} ${jar_file}${jar_name} #jar文件端口 通过启动命令传入进来 ENV server_port ${server_port} diff --git a/client/proxy-client-web/pom.xml b/client/proxy-client-web/pom.xml index 375db5c..c9fb96f 100644 --- a/client/proxy-client-web/pom.xml +++ b/client/proxy-client-web/pom.xml @@ -37,7 +37,7 @@ compile - wiKi-proxy-client + wiki-proxy-client org.springframework.boot diff --git a/client/proxy-client-web/start.sh b/client/proxy-client-web/start.sh index 677f09c..a19f01c 100644 --- a/client/proxy-client-web/start.sh +++ b/client/proxy-client-web/start.sh @@ -4,7 +4,7 @@ echo "开始构建" #分别输入 容器名称 和要构建的 版本号 eg test 111 生成版本号为 test:111 #contain_name=test #version=1 -contain_name=wiKi-proxy-client +contain_name=wiki-proxy-client read -p "Please enter your contain name and version eg : v1.0: " version echo "contain name and version is [${contain_name}:${version}]" #输入要构建的端口号 或者自定义 @@ -14,7 +14,7 @@ echo "you input server port is [${server_port}]" #取消自定义命令 #contain_name=demo docker rmi ${contain_name}:${version} -docker buildx build -t ${contain_name}:${version} . +docker build -t ${contain_name}:${version} . #停用之前的服务 docker stop ${contain_name} docker rm ${contain_name} diff --git a/client/proxy-client-web/stop.sh b/client/proxy-client-web/stop.sh index de4fc73..7362d83 100644 --- a/client/proxy-client-web/stop.sh +++ b/client/proxy-client-web/stop.sh @@ -1,6 +1,6 @@ #vi stopAndRemoveContain.sh #!/bin/bash -contain_name=wiKi-proxy-client +contain_name=wiki-proxy-client #停止容器 docker stop ${contain_name} #删除容器 diff --git a/server/proxy-server-web/Dockerfile b/server/proxy-server-web/Dockerfile index c2ca0e1..d4963c4 100644 --- a/server/proxy-server-web/Dockerfile +++ b/server/proxy-server-web/Dockerfile @@ -1,11 +1,11 @@ #指定以 openjdk:17-jdk-oracle 为基础镜像,来构建此镜像,可以理解为运行的需要基础环境 FROM openjdk:17-jdk-oracle #创建目录 -RUN mkdir -p /user/web -RUN mkdir -p /user/web/wiki-proxy -RUN mkdir -p /user/web/wiki-proxy/server +RUN mkdir -p /usr/web +RUN mkdir -p /usr/web/wiki-proxy +RUN mkdir -p /usr/web/wiki-proxy/server #指定容器的工作目录 -ENV jar_file /user/web/wiki-proxy/server +ENV jar_file /usr/web/wiki-proxy/server/ #添加时区指向 ENV TZ=Asia/Shanghai RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone diff --git a/server/proxy-server-web/start.sh b/server/proxy-server-web/start.sh index c9df325..cbeca3a 100644 --- a/server/proxy-server-web/start.sh +++ b/server/proxy-server-web/start.sh @@ -4,7 +4,7 @@ echo "开始构建" #分别输入 容器名称 和要构建的 版本号 eg test 111 生成版本号为 test:111 #contain_name=test #version=1 -contain_name=wiKi-proxy-server +contain_name=wiki-proxy-server read -p "Please enter your contain name and version eg : v1.0: " version echo "contain name and version is [${contain_name}:${version}]" #输入要构建的端口号 或者自定义 @@ -14,7 +14,7 @@ echo "you input server port is [${server_port}]" #取消自定义命令 #contain_name=demo docker rmi ${contain_name}:${version} -docker buildx build -t ${contain_name}:${version} . +docker build -t ${contain_name}:${version} . #停用之前的服务 docker stop ${contain_name} docker rm ${contain_name} diff --git a/server/proxy-server-web/stop.sh b/server/proxy-server-web/stop.sh index 696eb62..869d2e4 100644 --- a/server/proxy-server-web/stop.sh +++ b/server/proxy-server-web/stop.sh @@ -1,6 +1,6 @@ #vi stopAndRemoveContain.sh #!/bin/bash -contain_name=wiKi-proxy-server +contain_name=wiki-proxy-server #停止容器 docker stop ${contain_name} #删除容器 -- Gitee From 790e8da17d97fe5e06a535075ba345a5aba60fe3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=9F=BA=E6=A1=86=E6=9E=B6?= Date: Fri, 28 Mar 2025 21:09:11 +0800 Subject: [PATCH 02/11] =?UTF-8?q?1=E3=80=81=E4=BF=AE=E6=94=B9docker?= =?UTF-8?q?=E8=84=9A=E6=9C=AC=202=E3=80=81=E4=BF=AE=E6=94=B9=E5=90=AF?= =?UTF-8?q?=E5=8A=A8=EF=BC=8C=E5=81=9C=E6=AD=A2=E8=84=9A=E6=9C=AC=203?= =?UTF-8?q?=E3=80=81=E4=BB=A3=E7=A0=81=E4=BC=98=E5=8C=96=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.cn.md | 24 +--- README.md | 24 +--- client/proxy-client-web/Dockerfile | 59 ++++++---- .../src/main/resources/application-test.yml | 5 + .../src/main/resources/application.yml | 7 +- client/proxy-client-web/start.sh | 94 ++++++++++++---- client/proxy-client-web/stop.sh | 18 +-- .../proxy/client/core/WikiProxyClient.java | 12 +- .../proxy/client/core/config/ProxyConfig.java | 2 + .../core/side/client/ClientControlThread.java | 6 +- .../side/client/adapter/ClientAdapter.java | 4 +- .../impl/InteractiveSimpleClientAdapter.java | 18 +-- .../core/side/client/config/ClientConfig.java | 4 +- .../AllSecretInteractiveClientConfig.java | 8 +- .../config/impl/HttpRouteClientConfig.java | 14 +-- .../config/impl/InteractiveClientConfig.java | 10 +- .../impl/SecretInteractiveClientConfig.java | 9 +- .../handler/impl/CommonReplyHandler.java | 5 +- .../handler/impl/ServerHeartHandler.java | 7 +- .../handler/impl/ServerWaitClientHandler.java | 7 +- .../client/heart/impl/ClientHeartThread.java | 2 +- .../com/framewiki/network/proxy/agent.iml | 11 -- .../core}/api/IBelongControl.java | 4 +- .../core}/api/IHttpRouting.java | 6 +- .../core}/api/passway/SecretPassway.java | 16 +-- .../core}/api/passway/SimplePassway.java | 15 ++- .../core}/api/secret/ISecret.java | 4 +- .../core}/api/secret/impl/AesSecret.java | 8 +- .../core}/api/socket/part/BaseSocketPart.java | 6 +- .../api/socket/part/HttpRouteSocketPart.java | 16 +-- .../api/socket/part/SecretSocketPart.java | 14 +-- .../api/socket/part/SimpleSocketPart.java | 11 +- .../proxy => proxy/core}/channel/Channel.java | 4 +- .../core}/channel/impl/BaseSocketChannel.java | 6 +- .../channel/impl/InteractiveChannelBase.java | 6 +- .../core}/channel/impl/JsonChannelBase.java | 4 +- .../core}/channel/impl/LengthChannelBase.java | 6 +- .../impl/SecretInteractiveChannelBase.java | 10 +- .../core}/channel/impl/StringChannelBase.java | 4 +- .../core}/common/CommonConstants.java | 4 +- .../core}/common/CommonFormat.java | 4 +- .../proxy => proxy/core}/common/Optional.java | 4 +- .../core}/executor/FrameExecutor.java | 10 +- .../core}/executor/IExecutor.java | 10 +- .../core}/executor/impl/SimpleExecutor.java | 6 +- .../core}/model/FrameResultModel.java | 7 +- .../proxy => proxy/core}/model/HttpRoute.java | 4 +- .../core}/model/InteractiveModel.java | 8 +- .../core}/model/SecretInteractiveModel.java | 8 +- .../core}/model/enums/FrameResultEnum.java | 6 +- .../model/enums/InteractiveTypeEnum.java | 4 +- .../model/interactive/ClientConnectModel.java | 4 +- .../model/interactive/ClientControlModel.java | 4 +- .../model/interactive/ServerWaitModel.java | 4 +- .../core}/nio/NioProcessed.java | 4 +- .../core}/nio/impl/NioHallows.java | 13 +-- .../core}/nio/impl/ProcessedHolder.java | 6 +- .../proxy => proxy/core}/util/AesUtils.java | 5 +- .../core}/util/AssertUtils.java | 4 +- .../core}/util/CountWaitLatch.java | 4 +- .../core}/util/Md5Signature.java | 5 +- .../proxy => proxy/core}/util/ToolsUtils.java | 4 +- server/proxy-server-web/Dockerfile | 58 ++++++---- .../src/main/resources/application-test.yml | 5 + .../src/main/resources/application.yml | 4 +- server/proxy-server-web/start.sh | 106 ++++++++++++++---- server/proxy-server-web/stop.sh | 18 +-- .../proxy/server/core/WikiProxyServer.java | 4 +- .../core/config/ProxyAutoConfiguration.java | 1 + .../proxy/server/core/config/ProxyConfig.java | 2 + .../server/client/ClientServiceThread.java | 10 +- .../client/adapter/ClientServiceAdapter.java | 2 +- .../DefaultReadAheadPassValueAdapter.java | 4 +- .../adapter/impl/PassValueNextEnum.java | 2 +- .../impl/ReadAheadPassValueAdapter.java | 6 +- .../client/config/IClientServiceConfig.java | 4 +- .../SecretSimpleClientServiceConfig.java | 10 +- .../config/SimpleClientServiceConfig.java | 8 +- .../client/handler/PassValueHandler.java | 6 +- .../DefaultInteractiveProcessHandler.java | 2 +- .../impl/InteractiveProcessHandler.java | 13 +-- .../side/server/client/process/IProcess.java | 6 +- .../process/impl/ClientConnectProcess.java | 16 +-- .../process/impl/ClientControlProcess.java | 14 +-- .../server/listen/ListenServerControl.java | 2 +- .../core/side/server/listen/ServerListen.java | 2 +- .../server/listen/ServerListenThread.java | 17 ++- .../clear/IClearInvalidSocketPartThread.java | 2 +- .../impl/ClearInvalidSocketPartThread.java | 5 +- .../listen/config/ListenServerConfig.java | 4 +- .../AllSecretSimpleListenServerConfig.java | 10 +- .../impl/MultControlListenServerConfig.java | 4 +- .../impl/SecretSimpleListenServerConfig.java | 11 +- .../config/impl/SimpleListenServerConfig.java | 13 +-- .../server/listen/control/IControlSocket.java | 2 +- .../listen/control/impl/ControlSocket.java | 13 +-- .../control/impl/MultControlSocket.java | 2 +- .../control/impl/MultiControlSocket.java | 2 +- .../side/server/listen/recv/IRecvHandler.java | 4 +- .../listen/recv/impl/ClientHeartHandler.java | 10 +- .../listen/recv/impl/CommonReplyHandler.java | 9 +- .../serversocket/ICreateServerSocket.java | 2 +- 102 files changed, 575 insertions(+), 462 deletions(-) create mode 100644 client/proxy-client-web/src/main/resources/application-test.yml delete mode 100644 proxy-core/src/main/java/com/framewiki/network/proxy/agent.iml rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/api/IBelongControl.java (85%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/api/IHttpRouting.java (70%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/api/passway/SecretPassway.java (89%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/api/passway/SimplePassway.java (92%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/api/secret/ISecret.java (86%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/api/secret/impl/AesSecret.java (83%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/api/socket/part/BaseSocketPart.java (91%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/api/socket/part/HttpRouteSocketPart.java (92%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/api/socket/part/SecretSocketPart.java (90%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/api/socket/part/SimpleSocketPart.java (91%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/channel/Channel.java (91%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/channel/impl/BaseSocketChannel.java (85%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/channel/impl/InteractiveChannelBase.java (93%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/channel/impl/JsonChannelBase.java (96%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/channel/impl/LengthChannelBase.java (97%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/channel/impl/SecretInteractiveChannelBase.java (93%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/channel/impl/StringChannelBase.java (96%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/common/CommonConstants.java (94%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/common/CommonFormat.java (94%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/common/Optional.java (89%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/executor/FrameExecutor.java (90%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/executor/IExecutor.java (88%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/executor/impl/SimpleExecutor.java (90%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/model/FrameResultModel.java (94%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/model/HttpRoute.java (93%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/model/InteractiveModel.java (93%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/model/SecretInteractiveModel.java (93%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/model/enums/FrameResultEnum.java (90%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/model/enums/InteractiveTypeEnum.java (93%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/model/interactive/ClientConnectModel.java (78%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/model/interactive/ClientControlModel.java (78%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/model/interactive/ServerWaitModel.java (78%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/nio/NioProcessed.java (81%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/nio/impl/NioHallows.java (96%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/nio/impl/ProcessedHolder.java (85%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/util/AesUtils.java (96%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/util/AssertUtils.java (92%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/util/CountWaitLatch.java (97%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/util/Md5Signature.java (95%) rename proxy-core/src/main/java/com/framewiki/{network/proxy => proxy/core}/util/ToolsUtils.java (95%) create mode 100644 server/proxy-server-web/src/main/resources/application-test.yml diff --git a/README.cn.md b/README.cn.md index edd21d4..944d594 100644 --- a/README.cn.md +++ b/README.cn.md @@ -123,9 +123,9 @@ spring:

先将wiki-proxy-server.jar包、Dockerfile、start.sh、stop.sh上传至服务器 /user/web/wiki-proxy/server 目录下。

-### 4.1.1 构建Docker镜像 +### 4.1.1 构建并运行Docker镜像 -

切换工作目录至/user/web/wiki-proxy/server目录下

+

切换工作目录至/user/web/wiki-proxy/server目录下(根据自己的服务器目录结构进行修改)

```shell cd /user/web/wiki-proxy/server @@ -134,14 +134,7 @@ cd /user/web/wiki-proxy/server

执行如下命令构建Docker镜像

-```shell -docker build -t wiki-proxy-server . - -``` - -### 4.1.2 运行Docker镜像 - -```shell +``` shell ./start.sh ``` @@ -157,9 +150,9 @@ docker build -t wiki-proxy-server .

先将wiki-proxy-client.jar包、Dockerfile、start.sh、stop.sh上传至服务器 /user/web/wiki-proxy/client 目录下。

-### 4.2.1 构建Docker镜像 +### 4.2.1 构建并运行Docker镜像 -

切换工作目录至/user/web/wiki-proxy/client 目录下

+

切换工作目录至/user/web/wiki-proxy/client 目录下(根据自己的服务器目录结构进行修改)

```shell cd /user/web/wiki-proxy/client @@ -168,13 +161,6 @@ cd /user/web/wiki-proxy/client

执行如下命令构建Docker镜像

-```shell -docker build -t wiki-proxy-client . - -``` - -### 4.2.2 运行Docker镜像 - ```shell ./start.sh diff --git a/README.md b/README.md index 8df36c0..7831baf 100644 --- a/README.md +++ b/README.md @@ -129,9 +129,9 @@ spring:

First, upload the wiki-proxy-server. jar package, Dockerfile, start.sh, and stop.sh to the server/user/web/wiki proxy/server directory.

-### 4.1.1 Building Docker Images +### 4.1.1 Build and run Docker images -

Switch the working directory to the /user/web/wiki proxy/server directory

+

Switch the working directory to the/user/web/wiki-proxy/server directory (modify according to your own server directory structure)

```shell cd /user/web/wiki-proxy/server @@ -140,13 +140,6 @@ cd /user/web/wiki-proxy/server

Execute the following command to build a Docker image

-```shell -docker build -t wiki-proxy-server . - -``` - -### 4.1.2 Run Docker image - ```shell ./start.sh @@ -161,11 +154,11 @@ docker build -t wiki-proxy-server . ## 4.2 Deploy client -

First, upload the wiki-proy-client. jar package, Dockerfile, start.sh, and stop.sh to the server/user/web/wiki proxy/client directory.

+

First, upload the wiki-proy-client. jar package, Dockerfile, start.sh, and stop.sh to the server/user/web/wiki proxy/client directory (modify according to your own server directory structure)

-### 4.2.1 Building Docker Images +### 4.2.1 Build and run Docker images -

Switch the working directory to the /user/web/wiki proxy/client directory

+

Switch the working directory to the /user/web/wiki-proxy/client directory

```shell cd /user/web/wiki-proxy/client @@ -174,13 +167,6 @@ cd /user/web/wiki-proxy/client

Execute the following command to build a Docker image

-```shell -docker build -t wiki-proxy-client . - -``` - -### 4.2.2 Run Docker image - ```shell ./start.sh diff --git a/client/proxy-client-web/Dockerfile b/client/proxy-client-web/Dockerfile index d79fe56..77f940e 100644 --- a/client/proxy-client-web/Dockerfile +++ b/client/proxy-client-web/Dockerfile @@ -1,23 +1,38 @@ -#指定以 openjdk:17-jdk-oracle 为基础镜像,来构建此镜像,可以理解为运行的需要基础环境 +# 使用官方OpenJDK镜像 FROM openjdk:17-jdk-oracle -#创建目录 -RUN mkdir -p /usr/web -RUN mkdir -p /usr/web/wiki-proxy -RUN mkdir -p /usr/web/wiki-proxy/client -#指定容器的工作目录 -ENV jar_file /usr/web/wiki-proxy/client/ -#添加时区指向 -ENV TZ=Asia/Shanghai -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone -#WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行。 -WORKDIR ${jar_file} -#将当前文件夹下面 demo.jar 复制到容器对应目录下 -ENV jar_name wiki-proxy-client.jar -ADD ${jar_name} ${jar_file}${jar_name} -#jar文件端口 通过启动命令传入进来 -ENV server_port ${server_port} -EXPOSE ${server_port} -#容器启动时执行的命令 -CMD nohup java -jar \ --Xmx256m -Xmn256m -Xss256k -XX:+HeapDumpOnOutOfMemoryError \ -${jar_file}${jar_name} --server.port=${server_port} \ No newline at end of file + +# 定义构建参数(带默认值) +ARG SERVER_PORT=8888 +ARG TCP_PORT=10010 +ARG TCP_IP=127.0.0.1 +ARG SPRING_PROFILE=test +ARG JAR_NAME=wiki-proxy-client.jar + +# 设置时区和工作目录的环境变量 +ENV TZ=Asia/Shanghai \ + JAR_FILE=/usr/web/wiki-proxy/client/ \ + SPRING_PROFILES_ACTIVE=${SPRING_PROFILE} \ + SPRING_PROXY_CLIENT_SERVICE_IP=${TCP_IP} \ + SPRING_PROXY_CLIENT_SERVICE_PORT=${TCP_PORT} + +# 创建目录(合并为单条RUN指令减少层数) +RUN mkdir -p ${JAR_FILE} && \ + ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \ + echo $TZ > /etc/timezone + +# 设置工作目录 +WORKDIR ${JAR_FILE} + +# 复制JAR文件到容器指定目录 +COPY ${JAR_NAME} ${JAR_FILE}${JAR_NAME} + +# 暴露端口(使用构建参数) +EXPOSE ${SERVER_PORT} + +# 使用 sh -c 执行启动命令,确保环境变量得到解析 +ENTRYPOINT ["sh", "-c", "java -jar -Xmx256m -Xmn256m -Xss256k \ + -XX:+HeapDumpOnOutOfMemoryError ${JAR_FILE}wiki-proxy-client.jar \ + -Dspring.proxy.client.serviceIp=${TCP_IP} \ + -Dspring.proxy.client.servicePort=${TCP_PORT} \ + -Dserver.port=${SERVER_PORT} \ + -Dspring.profiles.active=${SPRING_PROFILE}"] \ No newline at end of file diff --git a/client/proxy-client-web/src/main/resources/application-test.yml b/client/proxy-client-web/src/main/resources/application-test.yml new file mode 100644 index 0000000..45da09b --- /dev/null +++ b/client/proxy-client-web/src/main/resources/application-test.yml @@ -0,0 +1,5 @@ +spring: + proxy: + server: + # 证书存放路径 + ssl-key-store-path: /usr/web/wiki-proxy/server/wiki-proxy.jks \ No newline at end of file diff --git a/client/proxy-client-web/src/main/resources/application.yml b/client/proxy-client-web/src/main/resources/application.yml index 518ab23..5a884dc 100644 --- a/client/proxy-client-web/src/main/resources/application.yml +++ b/client/proxy-client-web/src/main/resources/application.yml @@ -2,12 +2,13 @@ server: port: 8888 spring: + profile: test application: name: wiki-proxy-client proxy: client: # 服务端ip - service-ip: 127.0.0.1 + service-ip: 10.10.0.94 # 服务端端口 service-port: 10010 ip: @@ -16,8 +17,8 @@ spring: - 50501 port: - 443 # 服务端暴露端口 - # 证书存放路径,若不想打进jar包,可不带classpath:前缀 - ssl-key-store-path: "D:\\Project\\wiki-proxy\\server\\proxy-server-web\\src\\main\\resources\\wiki-proxy.jks" + # 证书存放路径 + ssl-key-store-path: "F:\\workspace\\wiki-proxy\\server\\proxy-server-web\\src\\main\\resources\\wiki-proxy.jks" # 证书密码 ssl-key-store-password: "wiki-proxy@SaFePwd2025!" # 证书类型 diff --git a/client/proxy-client-web/start.sh b/client/proxy-client-web/start.sh index a19f01c..5d751a3 100644 --- a/client/proxy-client-web/start.sh +++ b/client/proxy-client-web/start.sh @@ -1,23 +1,73 @@ #!/bin/bash -echo "开始构建" -#构建镜像 -#分别输入 容器名称 和要构建的 版本号 eg test 111 生成版本号为 test:111 -#contain_name=test -#version=1 -contain_name=wiki-proxy-client -read -p "Please enter your contain name and version eg : v1.0: " version -echo "contain name and version is [${contain_name}:${version}]" -#输入要构建的端口号 或者自定义 -#server_port=8001 -read -p "Please enter your application server port in(1024到49151) " server_port -echo "you input server port is [${server_port}]" -#取消自定义命令 -#contain_name=demo -docker rmi ${contain_name}:${version} -docker build -t ${contain_name}:${version} . -#停用之前的服务 -docker stop ${contain_name} -docker rm ${contain_name} -#启动容器 -docker run -p ${server_port}:${server_port} -e server_port=${server_port} --name ${contain_name} -d ${contain_name}:${version} -echo "构建完成" \ No newline at end of file + +contain_name="wiki-proxy-client" +default_port=8888 +default_tcp_port=10010 +default_ip="127.0.0.1" +default_profile="test" + +# 输入镜像版本 +read -p "请输入镜像版本号(例如 v1.0.0): " version +if [[ -z "$version" ]]; then + echo "错误:版本号不能为空!" + exit 1 +fi + +# 输入应用端口(校验范围) +while true; do + read -p "请输入应用端口号(1024-49151,默认${default_port}): " server_port + server_port=${server_port:-$default_port} + if [[ "$server_port" =~ ^[0-9]+$ ]] && [ "$server_port" -ge 1024 ] && [ "$server_port" -le 49151 ]; then + break + else + echo "错误:端口号必须是1024到49151之间的数字!" + fi +done +# 输入应用TCP端口(校验范围) +while true; do + read -p "请输入应用TCP端口号(1024-49151,默认${default_tcp_port}): " tcp_port + tcp_port=${tcp_port:-$default_tcp_port} + if [[ "$tcp_port" =~ ^[0-9]+$ ]] && [ "$tcp_port" -ge 1024 ] && [ "$tcp_port" -le 49151 ]; then + break + else + echo "错误:端口号必须是1024到49151之间的数字!" + fi +done + +# 输入 Spring 配置文件(例如 test, dev, prod) +read -p "请输入应用TCP IP(默认${default_ip})切记输入为服务器的IP地址: " tcp_ip +tcp_ip=${tcp_ip:-$default_ip} + +# 输入 Spring 配置文件(例如 test, dev, prod) +read -p "请输入 Spring 配置文件(默认${default_profile}): " profile +profile=${profile:-$default_profile} + +echo "------------------------------" +echo "镜像名称与版本: ${contain_name}:${version}" +echo "应用端口号: ${server_port}" +echo "应用TCP端口号: ${tcp_port}" +echo "应用TCP IP: ${tcp_ip}" +echo "使用的 Spring 配置文件: ${profile}" +echo "------------------------------" + +# 清理旧镜像和容器 +docker stop ${contain_name} 2>/dev/null +docker rm ${contain_name} 2>/dev/null +docker rmi ${contain_name}:${version} 2>/dev/null + +# 构建镜像(传递构建参数) +docker build --build-arg SERVER_PORT=${server_port} --build-arg TCP_IP=${tcp_ip} --build-arg TCP_PORT=${tcp_port} --build-arg SPRING_PROFILE=${profile} -t ${contain_name}:${version} . + +# 运行容器(传递环境变量) +docker run -d \ + --restart always \ + -p ${server_port}:${server_port} \ + --name ${contain_name} \ + -e SERVER_PORT=${server_port} \ + -e TCP_PORT=${tcp_port} \ + -e TCP_IP=${tcp_ip} \ + -e SPRING_PROFILE=${profile} \ + ${contain_name}:${version} + +echo "构建完成!" +echo "访问地址:http://localhost:${server_port}" diff --git a/client/proxy-client-web/stop.sh b/client/proxy-client-web/stop.sh index 7362d83..7567df2 100644 --- a/client/proxy-client-web/stop.sh +++ b/client/proxy-client-web/stop.sh @@ -1,9 +1,11 @@ -#vi stopAndRemoveContain.sh #!/bin/bash -contain_name=wiki-proxy-client -#停止容器 -docker stop ${contain_name} -#删除容器 -docker rm ${contain_name} -#删除容器镜像 -docker rmi ${contain_name} \ No newline at end of file + +contain_name="wiki-proxy-client" + +# 检查并停止容器 +if docker ps -q -f name=${contain_name}; then + echo "停止容器 ${contain_name} ..." + docker stop ${contain_name} +else + echo "容器 ${contain_name} 未运行或不存在!" +fi \ No newline at end of file diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/WikiProxyClient.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/WikiProxyClient.java index 1f1164d..caf1721 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/WikiProxyClient.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/WikiProxyClient.java @@ -1,8 +1,10 @@ package com.framewiki.proxy.client.core; +import com.cdkjframework.util.log.LogUtils; +import com.cdkjframework.util.tool.JsonUtils; import com.framewiki.proxy.client.core.config.ProxyConfig; -import com.framewiki.network.proxy.common.CommonConstants; -import com.framewiki.network.proxy.model.HttpRoute; +import com.framewiki.proxy.core.common.CommonConstants; +import com.framewiki.proxy.core.model.HttpRoute; import com.framewiki.proxy.client.core.side.client.ClientControlThread; import com.framewiki.proxy.client.core.side.client.config.impl.AllSecretInteractiveClientConfig; import com.framewiki.proxy.client.core.side.client.config.impl.HttpRouteClientConfig; @@ -12,7 +14,7 @@ import org.apache.commons.lang3.StringUtils; import java.util.List; -import static com.framewiki.network.proxy.common.CommonConstants.ListenDest; +import static com.framewiki.proxy.core.common.CommonConstants.ListenDest; /** * @ProjectName: wiki-proxy @@ -24,6 +26,10 @@ import static com.framewiki.network.proxy.common.CommonConstants.ListenDest; * @Version: 1.0 */ public class WikiProxyClient { + /** + * 日志 + */ + private final LogUtils log = LogUtils.getLogger(WikiProxyClient.class); /** * 配置 diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/config/ProxyConfig.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/config/ProxyConfig.java index 9bdf18a..a1d3198 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/config/ProxyConfig.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/config/ProxyConfig.java @@ -3,6 +3,7 @@ package com.framewiki.proxy.client.core.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -18,6 +19,7 @@ import java.util.List; * @Version: 1.0 */ @Data +@Primary @Component @Configuration @ConfigurationProperties(prefix = "spring.proxy.client") diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/ClientControlThread.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/ClientControlThread.java index 6329cb3..e2d7ab2 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/ClientControlThread.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/ClientControlThread.java @@ -1,8 +1,8 @@ package com.framewiki.proxy.client.core.side.client; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.IBelongControl; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.api.IBelongControl; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; import com.framewiki.proxy.client.core.side.client.adapter.ClientAdapter; import com.framewiki.proxy.client.core.side.client.config.ClientConfig; import com.framewiki.proxy.client.core.side.client.heart.IClientHeartThread; @@ -16,7 +16,7 @@ import java.util.concurrent.ConcurrentHashMap; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.nio + * @Package: com.framewiki.proxy.core.nio * @ClassName: FrameExecutor * @Description: 客户端控制服务 * @Author: frank tiger diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/adapter/ClientAdapter.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/adapter/ClientAdapter.java index 0dbbe0f..eba6764 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/adapter/ClientAdapter.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/adapter/ClientAdapter.java @@ -1,7 +1,7 @@ package com.framewiki.proxy.client.core.side.client.adapter; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.interactive.ServerWaitModel; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.interactive.ServerWaitModel; import java.time.LocalDateTime; diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/adapter/impl/InteractiveSimpleClientAdapter.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/adapter/impl/InteractiveSimpleClientAdapter.java index a1bd250..2dc1fcb 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/adapter/impl/InteractiveSimpleClientAdapter.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/adapter/impl/InteractiveSimpleClientAdapter.java @@ -2,15 +2,15 @@ package com.framewiki.proxy.client.core.side.client.adapter.impl; import com.cdkjframework.exceptions.GlobalRuntimeException; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.executor.FrameExecutor; -import com.framewiki.network.proxy.model.FrameResultModel; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.enums.FrameResultEnum; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; -import com.framewiki.network.proxy.model.interactive.ClientControlModel; -import com.framewiki.network.proxy.model.interactive.ServerWaitModel; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.executor.FrameExecutor; +import com.framewiki.proxy.core.model.FrameResultModel; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.enums.FrameResultEnum; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; +import com.framewiki.proxy.core.model.interactive.ClientControlModel; +import com.framewiki.proxy.core.model.interactive.ServerWaitModel; import com.framewiki.proxy.client.core.side.client.ClientControlThread; import com.framewiki.proxy.client.core.side.client.adapter.ClientAdapter; import com.framewiki.proxy.client.core.side.client.config.ClientConfig; diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/ClientConfig.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/ClientConfig.java index 8d398a8..7b06e26 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/ClientConfig.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/ClientConfig.java @@ -1,7 +1,7 @@ package com.framewiki.proxy.client.core.side.client.config; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; import com.framewiki.proxy.client.core.side.client.ClientControlThread; import com.framewiki.proxy.client.core.side.client.adapter.ClientAdapter; import com.framewiki.proxy.client.core.side.client.heart.IClientHeartThread; diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/AllSecretInteractiveClientConfig.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/AllSecretInteractiveClientConfig.java index bd0ce9d..d32ace2 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/AllSecretInteractiveClientConfig.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/AllSecretInteractiveClientConfig.java @@ -1,10 +1,10 @@ package com.framewiki.proxy.client.core.side.client.config.impl; -import com.framewiki.network.proxy.api.secret.impl.AesSecret; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; -import com.framewiki.network.proxy.api.socket.part.SecretSocketPart; +import com.framewiki.proxy.core.api.secret.impl.AesSecret; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.api.socket.part.SecretSocketPart; import com.framewiki.proxy.client.core.side.client.ClientControlThread; -import com.framewiki.network.proxy.util.AesUtils; +import com.framewiki.proxy.core.util.AesUtils; import lombok.Getter; import lombok.Setter; diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/HttpRouteClientConfig.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/HttpRouteClientConfig.java index 886f092..21b2ab3 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/HttpRouteClientConfig.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/HttpRouteClientConfig.java @@ -1,12 +1,12 @@ package com.framewiki.proxy.client.core.side.client.config.impl; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.IHttpRouting; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; -import com.framewiki.network.proxy.api.socket.part.HttpRouteSocketPart; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.HttpRoute; -import com.framewiki.network.proxy.model.InteractiveModel; +import com.framewiki.proxy.core.api.IHttpRouting; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.api.socket.part.HttpRouteSocketPart; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.HttpRoute; +import com.framewiki.proxy.core.model.InteractiveModel; import com.framewiki.proxy.client.core.side.client.ClientControlThread; import com.framewiki.proxy.client.core.side.client.adapter.ClientAdapter; import com.framewiki.proxy.client.core.side.client.adapter.impl.InteractiveSimpleClientAdapter; @@ -14,7 +14,7 @@ import com.framewiki.proxy.client.core.side.client.handler.impl.CommonReplyHandl import com.framewiki.proxy.client.core.side.client.handler.impl.ServerHeartHandler; import com.framewiki.proxy.client.core.side.client.handler.impl.ServerWaitClientHandler; import com.framewiki.proxy.client.core.side.client.heart.IClientHeartThread; -import com.framewiki.network.proxy.util.AssertUtils; +import com.framewiki.proxy.core.util.AssertUtils; import lombok.Getter; import org.apache.commons.lang3.StringUtils; diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/InteractiveClientConfig.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/InteractiveClientConfig.java index 8918418..dbb240e 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/InteractiveClientConfig.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/InteractiveClientConfig.java @@ -2,11 +2,11 @@ package com.framewiki.proxy.client.core.side.client.config.impl; import com.cdkjframework.exceptions.GlobalRuntimeException; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; -import com.framewiki.network.proxy.api.socket.part.SimpleSocketPart; -import com.framewiki.network.proxy.channel.impl.InteractiveChannelBase; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.InteractiveModel; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.api.socket.part.SimpleSocketPart; +import com.framewiki.proxy.core.channel.impl.InteractiveChannelBase; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.InteractiveModel; import com.framewiki.proxy.client.core.side.client.ClientControlThread; import com.framewiki.proxy.client.core.side.client.adapter.ClientAdapter; import com.framewiki.proxy.client.core.side.client.adapter.impl.InteractiveSimpleClientAdapter; diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/SecretInteractiveClientConfig.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/SecretInteractiveClientConfig.java index b3bad20..be61138 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/SecretInteractiveClientConfig.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/config/impl/SecretInteractiveClientConfig.java @@ -2,11 +2,10 @@ package com.framewiki.proxy.client.core.side.client.config.impl; import com.cdkjframework.exceptions.GlobalRuntimeException; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.channel.impl.SecretInteractiveChannelBase; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.util.AesUtils; -import com.framewiki.proxy.client.core.side.client.adapter.impl.InteractiveSimpleClientAdapter; +import com.framewiki.proxy.core.channel.impl.SecretInteractiveChannelBase; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.util.AesUtils; import lombok.Data; import lombok.EqualsAndHashCode; diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/CommonReplyHandler.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/CommonReplyHandler.java index 644262e..2b591ff 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/CommonReplyHandler.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/CommonReplyHandler.java @@ -1,10 +1,9 @@ package com.framewiki.proxy.client.core.side.client.handler.impl; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; import com.framewiki.proxy.client.core.side.client.adapter.ClientAdapter; -import com.framewiki.proxy.client.core.side.client.adapter.impl.InteractiveSimpleClientAdapter; import com.framewiki.proxy.client.core.side.client.handler.IClientHandler; import lombok.Getter; import lombok.Setter; diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/ServerHeartHandler.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/ServerHeartHandler.java index dab9bb8..ebe6dee 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/ServerHeartHandler.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/ServerHeartHandler.java @@ -1,11 +1,10 @@ package com.framewiki.proxy.client.core.side.client.handler.impl; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.enums.FrameResultEnum; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.enums.FrameResultEnum; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; import com.framewiki.proxy.client.core.side.client.adapter.ClientAdapter; -import com.framewiki.proxy.client.core.side.client.config.impl.SecretInteractiveClientConfig; import com.framewiki.proxy.client.core.side.client.handler.IClientHandler; diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/ServerWaitClientHandler.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/ServerWaitClientHandler.java index d4bed54..cc0328b 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/ServerWaitClientHandler.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/handler/impl/ServerWaitClientHandler.java @@ -1,9 +1,8 @@ package com.framewiki.proxy.client.core.side.client.handler.impl; -import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; -import com.framewiki.network.proxy.model.interactive.ServerWaitModel; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; +import com.framewiki.proxy.core.model.interactive.ServerWaitModel; import com.framewiki.proxy.client.core.side.client.adapter.ClientAdapter; import com.framewiki.proxy.client.core.side.client.handler.IClientHandler; diff --git a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/heart/impl/ClientHeartThread.java b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/heart/impl/ClientHeartThread.java index 9b98ba9..3aaf30d 100644 --- a/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/heart/impl/ClientHeartThread.java +++ b/client/proxy-client/src/main/java/com/framewiki/proxy/client/core/side/client/heart/impl/ClientHeartThread.java @@ -1,7 +1,7 @@ package com.framewiki.proxy.client.core.side.client.heart.impl; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.executor.FrameExecutor; +import com.framewiki.proxy.core.executor.FrameExecutor; import com.framewiki.proxy.client.core.side.client.ClientControlThread; import com.framewiki.proxy.client.core.side.client.heart.IClientHeartThread; import lombok.Getter; diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/agent.iml b/proxy-core/src/main/java/com/framewiki/network/proxy/agent.iml deleted file mode 100644 index bcafec0..0000000 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/agent.iml +++ /dev/null @@ -1,11 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/api/IBelongControl.java b/proxy-core/src/main/java/com/framewiki/proxy/core/api/IBelongControl.java similarity index 85% rename from proxy-core/src/main/java/com/framewiki/network/proxy/api/IBelongControl.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/api/IBelongControl.java index bc57731..9319120 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/api/IBelongControl.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/api/IBelongControl.java @@ -1,8 +1,8 @@ -package com.framewiki.network.proxy.api; +package com.framewiki.proxy.core.api; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.api + * @Package: com.framewiki.proxy.core.api * @ClassName: IBelongControl * @Description: 通知上次停止的统一类,为适应不同的类型进行不同的函数封装 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/api/IHttpRouting.java b/proxy-core/src/main/java/com/framewiki/proxy/core/api/IHttpRouting.java similarity index 70% rename from proxy-core/src/main/java/com/framewiki/network/proxy/api/IHttpRouting.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/api/IHttpRouting.java index 2e59538..9a09921 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/api/IHttpRouting.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/api/IHttpRouting.java @@ -1,10 +1,10 @@ -package com.framewiki.network.proxy.api; +package com.framewiki.proxy.core.api; -import com.framewiki.network.proxy.model.HttpRoute; +import com.framewiki.proxy.core.model.HttpRoute; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.api + * @Package: com.framewiki.proxy.core.api * @ClassName: IHttpRouting * @Description: http 路由器 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/api/passway/SecretPassway.java b/proxy-core/src/main/java/com/framewiki/proxy/core/api/passway/SecretPassway.java similarity index 89% rename from proxy-core/src/main/java/com/framewiki/network/proxy/api/passway/SecretPassway.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/api/passway/SecretPassway.java index 00f2ae8..b677447 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/api/passway/SecretPassway.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/api/passway/SecretPassway.java @@ -1,12 +1,12 @@ -package com.framewiki.network.proxy.api.passway; +package com.framewiki.proxy.core.api.passway; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.IBelongControl; -import com.framewiki.network.proxy.api.secret.ISecret; -import com.framewiki.network.proxy.channel.impl.LengthChannelBase; -import com.framewiki.network.proxy.executor.FrameExecutor; -import com.framewiki.network.proxy.nio.impl.NioHallows; -import com.framewiki.network.proxy.util.ToolsUtils; +import com.framewiki.proxy.core.api.IBelongControl; +import com.framewiki.proxy.core.api.secret.ISecret; +import com.framewiki.proxy.core.channel.impl.LengthChannelBase; +import com.framewiki.proxy.core.executor.FrameExecutor; +import com.framewiki.proxy.core.nio.impl.NioHallows; +import com.framewiki.proxy.core.util.ToolsUtils; import lombok.Data; @@ -20,7 +20,7 @@ import java.util.Objects; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.api.passway + * @Package: com.framewiki.proxy.core.api.passway * @ClassName: SecretPassway * @Description: 加密型隧道,一侧加密,一侧原样输入、输出 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/api/passway/SimplePassway.java b/proxy-core/src/main/java/com/framewiki/proxy/core/api/passway/SimplePassway.java similarity index 92% rename from proxy-core/src/main/java/com/framewiki/network/proxy/api/passway/SimplePassway.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/api/passway/SimplePassway.java index 6d2beaa..9701ab4 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/api/passway/SimplePassway.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/api/passway/SimplePassway.java @@ -1,12 +1,11 @@ -package com.framewiki.network.proxy.api.passway; +package com.framewiki.proxy.core.api.passway; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.IBelongControl; -import com.framewiki.network.proxy.api.socket.part.SimpleSocketPart; -import com.framewiki.network.proxy.executor.FrameExecutor; -import com.framewiki.network.proxy.nio.NioProcessed; -import com.framewiki.network.proxy.nio.impl.NioHallows; -import com.framewiki.network.proxy.util.ToolsUtils; +import com.framewiki.proxy.core.api.IBelongControl; +import com.framewiki.proxy.core.executor.FrameExecutor; +import com.framewiki.proxy.core.nio.NioProcessed; +import com.framewiki.proxy.core.nio.impl.NioHallows; +import com.framewiki.proxy.core.util.ToolsUtils; import lombok.AccessLevel; import lombok.Getter; import lombok.Setter; @@ -23,7 +22,7 @@ import java.util.Objects; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.api.passway + * @Package: com.framewiki.proxy.core.api.passway * @ClassName: SimplePassway * @Description: 简单的隧道,无任何处理,只从输入侧原样输出到输出侧 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/api/secret/ISecret.java b/proxy-core/src/main/java/com/framewiki/proxy/core/api/secret/ISecret.java similarity index 86% rename from proxy-core/src/main/java/com/framewiki/network/proxy/api/secret/ISecret.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/api/secret/ISecret.java index bea41ca..833927e 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/api/secret/ISecret.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/api/secret/ISecret.java @@ -1,8 +1,8 @@ -package com.framewiki.network.proxy.api.secret; +package com.framewiki.proxy.core.api.secret; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.api.secret + * @Package: com.framewiki.proxy.core.api.secret * @ClassName: ISecret * @Description: 加密方法 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/api/secret/impl/AesSecret.java b/proxy-core/src/main/java/com/framewiki/proxy/core/api/secret/impl/AesSecret.java similarity index 83% rename from proxy-core/src/main/java/com/framewiki/network/proxy/api/secret/impl/AesSecret.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/api/secret/impl/AesSecret.java index 22fd35c..bdab1f5 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/api/secret/impl/AesSecret.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/api/secret/impl/AesSecret.java @@ -1,14 +1,14 @@ -package com.framewiki.network.proxy.api.secret.impl; +package com.framewiki.proxy.core.api.secret.impl; -import com.framewiki.network.proxy.api.secret.ISecret; -import com.framewiki.network.proxy.util.AesUtils; +import com.framewiki.proxy.core.api.secret.ISecret; +import com.framewiki.proxy.core.util.AesUtils; import lombok.Data; import java.security.Key; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.api + * @Package: com.framewiki.proxy.core.api * @ClassName: AesSecret * @Description: AES加密方式 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/BaseSocketPart.java b/proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/BaseSocketPart.java similarity index 91% rename from proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/BaseSocketPart.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/BaseSocketPart.java index 92f0d9f..e862eb1 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/BaseSocketPart.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/BaseSocketPart.java @@ -1,6 +1,6 @@ -package com.framewiki.network.proxy.api.socket.part; +package com.framewiki.proxy.core.api.socket.part; -import com.framewiki.network.proxy.api.IBelongControl; +import com.framewiki.proxy.core.api.IBelongControl; import lombok.AccessLevel; import lombok.Data; import lombok.Getter; @@ -12,7 +12,7 @@ import java.time.LocalDateTime; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.api.socketpart + * @Package: com.framewiki.proxy.core.api.socketpart * @ClassName: BaseSocketPart * @Description: socketPart抽象类 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/HttpRouteSocketPart.java b/proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/HttpRouteSocketPart.java similarity index 92% rename from proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/HttpRouteSocketPart.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/HttpRouteSocketPart.java index 8cde2aa..6a0d58a 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/HttpRouteSocketPart.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/HttpRouteSocketPart.java @@ -1,12 +1,12 @@ -package com.framewiki.network.proxy.api.socket.part; +package com.framewiki.proxy.core.api.socket.part; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.IBelongControl; -import com.framewiki.network.proxy.api.IHttpRouting; -import com.framewiki.network.proxy.api.passway.SimplePassway; -import com.framewiki.network.proxy.model.HttpRoute; -import com.framewiki.network.proxy.util.AssertUtils; -import com.framewiki.network.proxy.util.ToolsUtils; +import com.framewiki.proxy.core.api.IBelongControl; +import com.framewiki.proxy.core.api.IHttpRouting; +import com.framewiki.proxy.core.api.passway.SimplePassway; +import com.framewiki.proxy.core.model.HttpRoute; +import com.framewiki.proxy.core.util.AssertUtils; +import com.framewiki.proxy.core.util.ToolsUtils; import java.io.BufferedInputStream; @@ -19,7 +19,7 @@ import java.nio.charset.StandardCharsets; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.api.socketpart + * @Package: com.framewiki.proxy.core.api.socketpart * @ClassName: HttpRouteSocketPart * @Description: http路由socket对 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/SecretSocketPart.java b/proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/SecretSocketPart.java similarity index 90% rename from proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/SecretSocketPart.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/SecretSocketPart.java index 2370101..b4b5612 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/SecretSocketPart.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/SecretSocketPart.java @@ -1,11 +1,11 @@ -package com.framewiki.network.proxy.api.socket.part; +package com.framewiki.proxy.core.api.socket.part; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.IBelongControl; -import com.framewiki.network.proxy.api.passway.SecretPassway; -import com.framewiki.network.proxy.api.secret.ISecret; -import com.framewiki.network.proxy.model.FrameResultModel; -import com.framewiki.network.proxy.util.AssertUtils; +import com.framewiki.proxy.core.api.IBelongControl; +import com.framewiki.proxy.core.api.passway.SecretPassway; +import com.framewiki.proxy.core.api.secret.ISecret; +import com.framewiki.proxy.core.model.FrameResultModel; +import com.framewiki.proxy.core.util.AssertUtils; import lombok.Getter; import lombok.Setter; @@ -16,7 +16,7 @@ import java.util.concurrent.CountDownLatch; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.api.socketpart + * @Package: com.framewiki.proxy.core.api.socketpart * @ClassName: SecretSocketPart * @Description: 加密-无加密socket对 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/SimpleSocketPart.java b/proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/SimpleSocketPart.java similarity index 91% rename from proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/SimpleSocketPart.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/SimpleSocketPart.java index 9a8bf5e..53e8993 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/api/socket/part/SimpleSocketPart.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/api/socket/part/SimpleSocketPart.java @@ -1,10 +1,9 @@ -package com.framewiki.network.proxy.api.socket.part; +package com.framewiki.proxy.core.api.socket.part; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.IBelongControl; -import com.framewiki.network.proxy.api.passway.SecretPassway; -import com.framewiki.network.proxy.api.passway.SimplePassway; -import com.framewiki.network.proxy.util.AssertUtils; +import com.framewiki.proxy.core.api.IBelongControl; +import com.framewiki.proxy.core.api.passway.SimplePassway; +import com.framewiki.proxy.core.util.AssertUtils; import lombok.Getter; import lombok.Setter; @@ -15,7 +14,7 @@ import java.util.concurrent.CountDownLatch; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.api.socketpart + * @Package: com.framewiki.proxy.core.api.socketpart * @ClassName: SimpleSocketPart * @Description: socket匹配对 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/Channel.java b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/Channel.java similarity index 91% rename from proxy-core/src/main/java/com/framewiki/network/proxy/channel/Channel.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/channel/Channel.java index c93dd12..5a0d192 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/Channel.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/Channel.java @@ -1,4 +1,4 @@ -package com.framewiki.network.proxy.channel; +package com.framewiki.proxy.core.channel; import java.io.Closeable; import java.nio.charset.Charset; @@ -7,7 +7,7 @@ import java.nio.charset.Charset; * @param 读取返回的类型 * @param 写入的类型 * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.channel + * @Package: com.framewiki.proxy.core.channel * @ClassName: StringChannelBase * @Description: 读写通道 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/BaseSocketChannel.java b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/BaseSocketChannel.java similarity index 85% rename from proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/BaseSocketChannel.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/BaseSocketChannel.java index 5280ada..8bbc35a 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/BaseSocketChannel.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/BaseSocketChannel.java @@ -1,6 +1,6 @@ -package com.framewiki.network.proxy.channel.impl; +package com.framewiki.proxy.core.channel.impl; -import com.framewiki.network.proxy.channel.Channel; +import com.framewiki.proxy.core.channel.Channel; import java.io.IOException; import java.net.Socket; @@ -9,7 +9,7 @@ import java.net.Socket; * @param 通道读取的类型 * @param 通道写入的类型 * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.channel + * @Package: com.framewiki.proxy.core.channel * @ClassName: BaseSocketChannel * @Description: socket通道 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/InteractiveChannelBase.java b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/InteractiveChannelBase.java similarity index 93% rename from proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/InteractiveChannelBase.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/InteractiveChannelBase.java index 306b535..c8a3eb8 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/InteractiveChannelBase.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/InteractiveChannelBase.java @@ -1,7 +1,7 @@ -package com.framewiki.network.proxy.channel.impl; +package com.framewiki.proxy.core.channel.impl; import com.alibaba.fastjson.JSONObject; -import com.framewiki.network.proxy.model.InteractiveModel; +import com.framewiki.proxy.core.model.InteractiveModel; import java.io.IOException; import java.net.Socket; @@ -13,7 +13,7 @@ import java.nio.charset.Charset; */ /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.channel + * @Package: com.framewiki.proxy.core.channel * @ClassName: InteractiveChannelBase * @Description: InteractiveModel 模式读写 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/JsonChannelBase.java b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/JsonChannelBase.java similarity index 96% rename from proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/JsonChannelBase.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/JsonChannelBase.java index 31e9e6e..f992d89 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/JsonChannelBase.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/JsonChannelBase.java @@ -1,4 +1,4 @@ -package com.framewiki.network.proxy.channel.impl; +package com.framewiki.proxy.core.channel.impl; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONAware; @@ -10,7 +10,7 @@ import java.nio.charset.Charset; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.channel + * @Package: com.framewiki.proxy.core.channel * @ClassName: JsonChannelBase * @Description: json方式读写 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/LengthChannelBase.java b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/LengthChannelBase.java similarity index 97% rename from proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/LengthChannelBase.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/LengthChannelBase.java index b69df7d..fd6a59a 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/LengthChannelBase.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/LengthChannelBase.java @@ -1,6 +1,6 @@ -package com.framewiki.network.proxy.channel.impl; +package com.framewiki.proxy.core.channel.impl; -import com.framewiki.network.proxy.util.ToolsUtils; +import com.framewiki.proxy.core.util.ToolsUtils; import java.io.IOException; import java.io.InputStream; @@ -12,7 +12,7 @@ import java.util.concurrent.locks.ReentrantLock; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.channel + * @Package: com.framewiki.proxy.core.channel * @ClassName: LengthChannel * @Description: 长度限定读写通道 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/SecretInteractiveChannelBase.java b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/SecretInteractiveChannelBase.java similarity index 93% rename from proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/SecretInteractiveChannelBase.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/SecretInteractiveChannelBase.java index c050c77..02081a6 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/SecretInteractiveChannelBase.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/SecretInteractiveChannelBase.java @@ -1,9 +1,9 @@ -package com.framewiki.network.proxy.channel.impl; +package com.framewiki.proxy.core.channel.impl; import com.alibaba.fastjson.JSONObject; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.SecretInteractiveModel; -import com.framewiki.network.proxy.util.AesUtils; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.SecretInteractiveModel; +import com.framewiki.proxy.core.util.AesUtils; import lombok.*; import lombok.EqualsAndHashCode.Exclude; @@ -14,7 +14,7 @@ import java.security.Key; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.channel + * @Package: com.framewiki.proxy.core.channel * @ClassName: SecretInteractiveChannel * @Description: InteractiveModel 加密型通道,AES加密 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/StringChannelBase.java b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/StringChannelBase.java similarity index 96% rename from proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/StringChannelBase.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/StringChannelBase.java index 3d7a6b9..cbd92a9 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/channel/impl/StringChannelBase.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/channel/impl/StringChannelBase.java @@ -1,4 +1,4 @@ -package com.framewiki.network.proxy.channel.impl; +package com.framewiki.proxy.core.channel.impl; import java.io.IOException; import java.net.Socket; @@ -7,7 +7,7 @@ import java.nio.charset.StandardCharsets; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.channel + * @Package: com.framewiki.proxy.core.channel * @ClassName: StringChannelBase * @Description: 字符型通道 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/common/CommonConstants.java b/proxy-core/src/main/java/com/framewiki/proxy/core/common/CommonConstants.java similarity index 94% rename from proxy-core/src/main/java/com/framewiki/network/proxy/common/CommonConstants.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/common/CommonConstants.java index fbc0c22..df363af 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/common/CommonConstants.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/common/CommonConstants.java @@ -1,4 +1,4 @@ -package com.framewiki.network.proxy.common; +package com.framewiki.proxy.core.common; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -8,7 +8,7 @@ import java.util.List; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.common + * @Package: com.framewiki.proxy.core.common * @ClassName: CommonConstants * @Description: 公共参数 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/common/CommonFormat.java b/proxy-core/src/main/java/com/framewiki/proxy/core/common/CommonFormat.java similarity index 94% rename from proxy-core/src/main/java/com/framewiki/network/proxy/common/CommonFormat.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/common/CommonFormat.java index f94e5c1..908903d 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/common/CommonFormat.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/common/CommonFormat.java @@ -1,4 +1,4 @@ -package com.framewiki.network.proxy.common; +package com.framewiki.proxy.core.common; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -10,7 +10,7 @@ import java.time.format.DateTimeFormatter; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.common + * @Package: com.framewiki.proxy.core.common * @ClassName: CommonConstants * @Description: 公用的格式化类 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/common/Optional.java b/proxy-core/src/main/java/com/framewiki/proxy/core/common/Optional.java similarity index 89% rename from proxy-core/src/main/java/com/framewiki/network/proxy/common/Optional.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/common/Optional.java index 7355d90..13c355f 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/common/Optional.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/common/Optional.java @@ -1,8 +1,8 @@ -package com.framewiki.network.proxy.common; +package com.framewiki.proxy.core.common; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.common + * @Package: com.framewiki.proxy.core.common * @ClassName: Optional * @Description: 操作对象,主要是让值能够通过引用进行传递 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/executor/FrameExecutor.java b/proxy-core/src/main/java/com/framewiki/proxy/core/executor/FrameExecutor.java similarity index 90% rename from proxy-core/src/main/java/com/framewiki/network/proxy/executor/FrameExecutor.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/executor/FrameExecutor.java index 66ecbc8..d97bf42 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/executor/FrameExecutor.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/executor/FrameExecutor.java @@ -1,7 +1,7 @@ -package com.framewiki.network.proxy.executor; +package com.framewiki.proxy.core.executor; -import com.framewiki.network.proxy.executor.impl.SimpleExecutor; -import com.framewiki.network.proxy.nio.impl.NioHallows; +import com.framewiki.proxy.core.executor.impl.SimpleExecutor; +import com.framewiki.proxy.core.nio.impl.NioHallows; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -10,7 +10,7 @@ import java.util.concurrent.ScheduledFuture; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.nio + * @Package: com.framewiki.proxy.core.nio * @ClassName: FrameExecutor * @Description: 线程执行器 主要是为了统一位置,方便管理 * @Author: frank tiger @@ -81,7 +81,7 @@ public final class FrameExecutor { /** * 隧道线程执行器 *

- * For {@link com.framewiki.network.proxy.api.passway} + * For {@link com.framewiki.proxy.core.api.passway} * * @param runnable 可运行 */ diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/executor/IExecutor.java b/proxy-core/src/main/java/com/framewiki/proxy/core/executor/IExecutor.java similarity index 88% rename from proxy-core/src/main/java/com/framewiki/network/proxy/executor/IExecutor.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/executor/IExecutor.java index bd937cf..089cefc 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/executor/IExecutor.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/executor/IExecutor.java @@ -1,10 +1,12 @@ -package com.framewiki.network.proxy.executor; +package com.framewiki.proxy.core.executor; + +import com.framewiki.proxy.core.nio.impl.NioHallows; import java.util.concurrent.ScheduledFuture; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.nio + * @Package: com.framewiki.proxy.core.nio * @ClassName: IExecutor * @Description: 执行器实现 * @Author: frank tiger @@ -56,7 +58,7 @@ public interface IExecutor { /** * 隧道线程执行器 - * For {@link com.framewiki.network.proxy.api.passway} + * For {@link com.framewiki.proxy.core.api.passway} * * @param runnable 待执行任务 */ @@ -66,7 +68,7 @@ public interface IExecutor { /** * nio事件任务执行器 - * For {@link com.framewiki.network.proxy.nio.impl.NioHallows#run()} + * For {@link NioHallows#run()} * * @param runnable 待执行任务 */ diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/executor/impl/SimpleExecutor.java b/proxy-core/src/main/java/com/framewiki/proxy/core/executor/impl/SimpleExecutor.java similarity index 90% rename from proxy-core/src/main/java/com/framewiki/network/proxy/executor/impl/SimpleExecutor.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/executor/impl/SimpleExecutor.java index 4a82334..98b4078 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/executor/impl/SimpleExecutor.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/executor/impl/SimpleExecutor.java @@ -1,12 +1,12 @@ -package com.framewiki.network.proxy.executor.impl; +package com.framewiki.proxy.core.executor.impl; -import com.framewiki.network.proxy.executor.IExecutor; +import com.framewiki.proxy.core.executor.IExecutor; import java.util.concurrent.*; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.executor.impl + * @Package: com.framewiki.proxy.core.executor.impl * @ClassName: FrameExecutor * @Description: 线程执行器 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/model/FrameResultModel.java b/proxy-core/src/main/java/com/framewiki/proxy/core/model/FrameResultModel.java similarity index 94% rename from proxy-core/src/main/java/com/framewiki/network/proxy/model/FrameResultModel.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/model/FrameResultModel.java index 87824c0..d908db6 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/model/FrameResultModel.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/model/FrameResultModel.java @@ -1,10 +1,9 @@ -package com.framewiki.network.proxy.model; +package com.framewiki.proxy.core.model; import com.alibaba.fastjson.JSONAware; import com.alibaba.fastjson.JSONObject; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.socket.part.HttpRouteSocketPart; -import com.framewiki.network.proxy.model.enums.FrameResultEnum; +import com.framewiki.proxy.core.model.enums.FrameResultEnum; import lombok.Data; @@ -13,7 +12,7 @@ import java.lang.reflect.Field; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.model + * @Package: com.framewiki.proxy.core.model * @ClassName: FrameResultModel * @Description: 常规类型的前后端返回model * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/model/HttpRoute.java b/proxy-core/src/main/java/com/framewiki/proxy/core/model/HttpRoute.java similarity index 93% rename from proxy-core/src/main/java/com/framewiki/network/proxy/model/HttpRoute.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/model/HttpRoute.java index 37f3ea4..6e19a3b 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/model/HttpRoute.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/model/HttpRoute.java @@ -1,4 +1,4 @@ -package com.framewiki.network.proxy.model; +package com.framewiki.proxy.core.model; import lombok.AccessLevel; import lombok.Getter; @@ -6,7 +6,7 @@ import lombok.Setter; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.model + * @Package: com.framewiki.proxy.core.model * @ClassName: HttpRoute * @Description: http路由表 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/model/InteractiveModel.java b/proxy-core/src/main/java/com/framewiki/proxy/core/model/InteractiveModel.java similarity index 93% rename from proxy-core/src/main/java/com/framewiki/network/proxy/model/InteractiveModel.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/model/InteractiveModel.java index 70d9bb5..d69ec44 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/model/InteractiveModel.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/model/InteractiveModel.java @@ -1,10 +1,10 @@ -package com.framewiki.network.proxy.model; +package com.framewiki.proxy.core.model; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONAware; import com.alibaba.fastjson.JSONObject; -import com.framewiki.network.proxy.common.CommonFormat; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; +import com.framewiki.proxy.core.common.CommonFormat; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; import lombok.AllArgsConstructor; import lombok.Data; import lombok.NoArgsConstructor; @@ -12,7 +12,7 @@ import lombok.experimental.Accessors; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.model + * @Package: com.framewiki.proxy.core.model * @ClassName: InteractiveModel * @Description: 交互基础类型 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/model/SecretInteractiveModel.java b/proxy-core/src/main/java/com/framewiki/proxy/core/model/SecretInteractiveModel.java similarity index 93% rename from proxy-core/src/main/java/com/framewiki/network/proxy/model/SecretInteractiveModel.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/model/SecretInteractiveModel.java index dabb5ac..e538864 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/model/SecretInteractiveModel.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/model/SecretInteractiveModel.java @@ -1,9 +1,9 @@ -package com.framewiki.network.proxy.model; +package com.framewiki.proxy.core.model; import com.alibaba.fastjson.JSON; import com.alibaba.fastjson.JSONObject; -import com.framewiki.network.proxy.util.AesUtils; -import com.framewiki.network.proxy.util.Md5Signature; +import com.framewiki.proxy.core.util.AesUtils; +import com.framewiki.proxy.core.util.Md5Signature; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -16,7 +16,7 @@ import java.security.Key; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.model + * @Package: com.framewiki.proxy.core.model * @ClassName: SecretInteractiveModel * @Description: 基于InteractiveModel模型的加密交互模型 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/model/enums/FrameResultEnum.java b/proxy-core/src/main/java/com/framewiki/proxy/core/model/enums/FrameResultEnum.java similarity index 90% rename from proxy-core/src/main/java/com/framewiki/network/proxy/model/enums/FrameResultEnum.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/model/enums/FrameResultEnum.java index bb4fe86..5c540dc 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/model/enums/FrameResultEnum.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/model/enums/FrameResultEnum.java @@ -1,11 +1,11 @@ -package com.framewiki.network.proxy.model.enums; +package com.framewiki.proxy.core.model.enums; -import com.framewiki.network.proxy.model.FrameResultModel; +import com.framewiki.proxy.core.model.FrameResultModel; import org.apache.commons.lang3.StringUtils; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.model.enums + * @Package: com.framewiki.proxy.core.model.enums * @ClassName: FrameResultEnum * @Description: 客户端服务端返回码 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/model/enums/InteractiveTypeEnum.java b/proxy-core/src/main/java/com/framewiki/proxy/core/model/enums/InteractiveTypeEnum.java similarity index 93% rename from proxy-core/src/main/java/com/framewiki/network/proxy/model/enums/InteractiveTypeEnum.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/model/enums/InteractiveTypeEnum.java index a684f10..8d49992 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/model/enums/InteractiveTypeEnum.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/model/enums/InteractiveTypeEnum.java @@ -1,11 +1,11 @@ -package com.framewiki.network.proxy.model.enums; +package com.framewiki.proxy.core.model.enums; import lombok.Getter; import org.apache.commons.lang3.StringUtils; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.channel + * @Package: com.framewiki.proxy.core.channel * @ClassName: InteractiveTypeEnum * @Description: 交互类型enum * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/model/interactive/ClientConnectModel.java b/proxy-core/src/main/java/com/framewiki/proxy/core/model/interactive/ClientConnectModel.java similarity index 78% rename from proxy-core/src/main/java/com/framewiki/network/proxy/model/interactive/ClientConnectModel.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/model/interactive/ClientConnectModel.java index e0eee9d..d535342 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/model/interactive/ClientConnectModel.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/model/interactive/ClientConnectModel.java @@ -1,4 +1,4 @@ -package com.framewiki.network.proxy.model.interactive; +package com.framewiki.proxy.core.model.interactive; import lombok.AllArgsConstructor; import lombok.Data; @@ -6,7 +6,7 @@ import lombok.NoArgsConstructor; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.model.interactive + * @Package: com.framewiki.proxy.core.model.interactive * @ClassName: ClientConnectModel * @Description: 客户端连接请求 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/model/interactive/ClientControlModel.java b/proxy-core/src/main/java/com/framewiki/proxy/core/model/interactive/ClientControlModel.java similarity index 78% rename from proxy-core/src/main/java/com/framewiki/network/proxy/model/interactive/ClientControlModel.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/model/interactive/ClientControlModel.java index fb77919..2a0109a 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/model/interactive/ClientControlModel.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/model/interactive/ClientControlModel.java @@ -1,4 +1,4 @@ -package com.framewiki.network.proxy.model.interactive; +package com.framewiki.proxy.core.model.interactive; import lombok.AllArgsConstructor; import lombok.Data; @@ -6,7 +6,7 @@ import lombok.NoArgsConstructor; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.model.interactive + * @Package: com.framewiki.proxy.core.model.interactive * @ClassName: ClientControlModel * @Description: 请求建立控制器模型 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/model/interactive/ServerWaitModel.java b/proxy-core/src/main/java/com/framewiki/proxy/core/model/interactive/ServerWaitModel.java similarity index 78% rename from proxy-core/src/main/java/com/framewiki/network/proxy/model/interactive/ServerWaitModel.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/model/interactive/ServerWaitModel.java index 073cff1..8dea05a 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/model/interactive/ServerWaitModel.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/model/interactive/ServerWaitModel.java @@ -1,4 +1,4 @@ -package com.framewiki.network.proxy.model.interactive; +package com.framewiki.proxy.core.model.interactive; import lombok.AllArgsConstructor; import lombok.Data; @@ -6,7 +6,7 @@ import lombok.NoArgsConstructor; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.model.interactive + * @Package: com.framewiki.proxy.core.model.interactive * @ClassName: ServerWaitModel * @Description: 服务端等待建立隧道模型 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/nio/NioProcessed.java b/proxy-core/src/main/java/com/framewiki/proxy/core/nio/NioProcessed.java similarity index 81% rename from proxy-core/src/main/java/com/framewiki/network/proxy/nio/NioProcessed.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/nio/NioProcessed.java index 9462f11..e6ec532 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/nio/NioProcessed.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/nio/NioProcessed.java @@ -1,10 +1,10 @@ -package com.framewiki.network.proxy.nio; +package com.framewiki.proxy.core.nio; import java.nio.channels.SelectionKey; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.nio + * @Package: com.framewiki.proxy.core.nio * @ClassName: NioProcessed * @Description: nio 执行器 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/nio/impl/NioHallows.java b/proxy-core/src/main/java/com/framewiki/proxy/core/nio/impl/NioHallows.java similarity index 96% rename from proxy-core/src/main/java/com/framewiki/network/proxy/nio/impl/NioHallows.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/nio/impl/NioHallows.java index 19d4061..f956968 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/nio/impl/NioHallows.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/nio/impl/NioHallows.java @@ -1,11 +1,10 @@ -package com.framewiki.network.proxy.nio.impl; +package com.framewiki.proxy.core.nio.impl; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.executor.FrameExecutor; -import com.framewiki.network.proxy.model.FrameResultModel; -import com.framewiki.network.proxy.nio.NioProcessed; -import com.framewiki.network.proxy.util.AssertUtils; -import com.framewiki.network.proxy.util.CountWaitLatch; +import com.framewiki.proxy.core.executor.FrameExecutor; +import com.framewiki.proxy.core.nio.NioProcessed; +import com.framewiki.proxy.core.util.AssertUtils; +import com.framewiki.proxy.core.util.CountWaitLatch; import lombok.AccessLevel; import lombok.Getter; import lombok.NoArgsConstructor; @@ -24,7 +23,7 @@ import java.util.concurrent.TimeUnit; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.nio + * @Package: com.framewiki.proxy.core.nio * @ClassName: NioHallows * @Description: nio 容器 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/nio/impl/ProcessedHolder.java b/proxy-core/src/main/java/com/framewiki/proxy/core/nio/impl/ProcessedHolder.java similarity index 85% rename from proxy-core/src/main/java/com/framewiki/network/proxy/nio/impl/ProcessedHolder.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/nio/impl/ProcessedHolder.java index aba9376..e043e68 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/nio/impl/ProcessedHolder.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/nio/impl/ProcessedHolder.java @@ -1,6 +1,6 @@ -package com.framewiki.network.proxy.nio.impl; +package com.framewiki.proxy.core.nio.impl; -import com.framewiki.network.proxy.nio.NioProcessed; +import com.framewiki.proxy.core.nio.NioProcessed; import lombok.AllArgsConstructor; import lombok.Data; @@ -9,7 +9,7 @@ import java.nio.channels.SelectionKey; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.nio + * @Package: com.framewiki.proxy.core.nio * @ClassName: ProcessedHolder * @Description: 执行器暂存 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/util/AesUtils.java b/proxy-core/src/main/java/com/framewiki/proxy/core/util/AesUtils.java similarity index 96% rename from proxy-core/src/main/java/com/framewiki/network/proxy/util/AesUtils.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/util/AesUtils.java index 61bfb76..211aea7 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/util/AesUtils.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/util/AesUtils.java @@ -1,7 +1,6 @@ -package com.framewiki.network.proxy.util; +package com.framewiki.proxy.core.util; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.socket.part.HttpRouteSocketPart; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -16,7 +15,7 @@ import java.util.Base64; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.util + * @Package: com.framewiki.proxy.core.util * @ClassName: AesUtils * @Description: AES加解密工具 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/util/AssertUtils.java b/proxy-core/src/main/java/com/framewiki/proxy/core/util/AssertUtils.java similarity index 92% rename from proxy-core/src/main/java/com/framewiki/network/proxy/util/AssertUtils.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/util/AssertUtils.java index 86a1340..acba12c 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/util/AssertUtils.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/util/AssertUtils.java @@ -1,8 +1,8 @@ -package com.framewiki.network.proxy.util; +package com.framewiki.proxy.core.util; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.util + * @Package: com.framewiki.proxy.core.util * @ClassName: AssertUtils * @Description: 断言 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/util/CountWaitLatch.java b/proxy-core/src/main/java/com/framewiki/proxy/core/util/CountWaitLatch.java similarity index 97% rename from proxy-core/src/main/java/com/framewiki/network/proxy/util/CountWaitLatch.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/util/CountWaitLatch.java index db30be5..f64221b 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/util/CountWaitLatch.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/util/CountWaitLatch.java @@ -1,11 +1,11 @@ -package com.framewiki.network.proxy.util; +package com.framewiki.proxy.core.util; import java.util.concurrent.TimeUnit; import java.util.concurrent.locks.AbstractQueuedSynchronizer; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.util + * @Package: com.framewiki.proxy.core.util * @ClassName: CountWaitLatch * @Description: 可增 计数 门闩 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/util/Md5Signature.java b/proxy-core/src/main/java/com/framewiki/proxy/core/util/Md5Signature.java similarity index 95% rename from proxy-core/src/main/java/com/framewiki/network/proxy/util/Md5Signature.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/util/Md5Signature.java index e06c536..05feeb1 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/util/Md5Signature.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/util/Md5Signature.java @@ -1,7 +1,6 @@ -package com.framewiki.network.proxy.util; +package com.framewiki.proxy.core.util; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.socket.part.HttpRouteSocketPart; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -15,7 +14,7 @@ import java.util.Random; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.util + * @Package: com.framewiki.proxy.core.util * @ClassName: Md5Signature * @Description: MD5散列签名 * @Author: frank tiger diff --git a/proxy-core/src/main/java/com/framewiki/network/proxy/util/ToolsUtils.java b/proxy-core/src/main/java/com/framewiki/proxy/core/util/ToolsUtils.java similarity index 95% rename from proxy-core/src/main/java/com/framewiki/network/proxy/util/ToolsUtils.java rename to proxy-core/src/main/java/com/framewiki/proxy/core/util/ToolsUtils.java index 998fa4b..382292c 100644 --- a/proxy-core/src/main/java/com/framewiki/network/proxy/util/ToolsUtils.java +++ b/proxy-core/src/main/java/com/framewiki/proxy/core/util/ToolsUtils.java @@ -1,4 +1,4 @@ -package com.framewiki.network.proxy.util; +package com.framewiki.proxy.core.util; import lombok.AccessLevel; import lombok.NoArgsConstructor; @@ -11,7 +11,7 @@ import java.nio.channels.WritableByteChannel; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.util + * @Package: com.framewiki.proxy.core.util * @ClassName: ToolsUtils * @Description: 无归类的工具集 * @Author: frank tiger diff --git a/server/proxy-server-web/Dockerfile b/server/proxy-server-web/Dockerfile index d4963c4..907b394 100644 --- a/server/proxy-server-web/Dockerfile +++ b/server/proxy-server-web/Dockerfile @@ -1,23 +1,37 @@ -#指定以 openjdk:17-jdk-oracle 为基础镜像,来构建此镜像,可以理解为运行的需要基础环境 +# 使用官方OpenJDK镜像 FROM openjdk:17-jdk-oracle -#创建目录 -RUN mkdir -p /usr/web -RUN mkdir -p /usr/web/wiki-proxy -RUN mkdir -p /usr/web/wiki-proxy/server -#指定容器的工作目录 -ENV jar_file /usr/web/wiki-proxy/server/ -#添加时区指向 -ENV TZ=Asia/Shanghai -RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone -#WORKDIR指令用于指定容器的一个目录, 容器启动时执行的命令会在该目录下执行。 -WORKDIR ${jar_file} -#将当前文件夹下面 demo.jar 复制到容器对应目录下 -ENV jar_name wiki-proxy-server.jar -ADD ${jar_name} ${jar_file}${jar_name} -#jar文件端口 通过启动命令传入进来 -ENV server_port ${server_port} -EXPOSE ${server_port} -#容器启动时执行的命令 -CMD nohup java -jar \ --Xmx256m -Xmn256m -Xss256k -XX:+HeapDumpOnOutOfMemoryError \ -${jar_file}${jar_name} --server.port=${server_port} \ No newline at end of file + +# 定义构建参数(带默认值) +ARG SERVER_PORT=6666 +ARG TCP_PORT=10010 +ARG JAR_NAME=wiki-proxy-server.jar +ARG SPRING_PROFILE=test +# 默认配置为test + +# 设置时区和工作目录的环境变量 +ENV TZ=Asia/Shanghai \ + JAR_FILE=/usr/web/wiki-proxy/server/ \ + SPRING_PROFILES_ACTIVE=${SPRING_PROFILE} + +# 创建目录(合并为单条RUN指令减少层数) +RUN mkdir -p ${JAR_FILE} && \ + ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && \ + echo $TZ > /etc/timezone + +# 设置工作目录 +WORKDIR ${JAR_FILE} + +# 复制JAR文件到容器指定目录 +COPY ${JAR_NAME} ${JAR_FILE}${JAR_NAME} +COPY wiki-proxy.jks ${JAR_FILE}wiki-proxy.jks + +# 暴露端口(使用构建参数) +EXPOSE ${SERVER_PORT} +EXPOSE ${TCP_PORT} + +# 使用 sh -c 执行启动命令,确保环境变量得到解析 +ENTRYPOINT ["sh", "-c", "java -jar -Xmx256m -Xmn256m -Xss256k \ + -XX:+HeapDumpOnOutOfMemoryError ${JAR_FILE}wiki-proxy-server.jar \ + -Dspring.proxy.server.servicePort=${TCP_PORT} \ + -Dserver.port=${SERVER_PORT} \ + -Dspring.profiles.active=${SPRING_PROFILE}"] diff --git a/server/proxy-server-web/src/main/resources/application-test.yml b/server/proxy-server-web/src/main/resources/application-test.yml new file mode 100644 index 0000000..45da09b --- /dev/null +++ b/server/proxy-server-web/src/main/resources/application-test.yml @@ -0,0 +1,5 @@ +spring: + proxy: + server: + # 证书存放路径 + ssl-key-store-path: /usr/web/wiki-proxy/server/wiki-proxy.jks \ No newline at end of file diff --git a/server/proxy-server-web/src/main/resources/application.yml b/server/proxy-server-web/src/main/resources/application.yml index 5437007..0366f7c 100644 --- a/server/proxy-server-web/src/main/resources/application.yml +++ b/server/proxy-server-web/src/main/resources/application.yml @@ -11,8 +11,8 @@ spring: # 暴露端口 可以为多个 port: - 443 - # 证书存放路径,若不想打进jar包,可不带classpath:前缀 - ssl-key-store-path: "D:\\Project\\wiki-proxy\\server\\proxy-server-web\\src\\main\\resources\\wiki-proxy.jks" + # 证书存放路径 + ssl-key-store-path: "F:\\workspace\\wiki-proxy\\server\\proxy-server-web\\src\\main\\resources\\wiki-proxy.jks" # 证书密码 ssl-key-store-password: "wiki-proxy@SaFePwd2025!" # 证书类型 diff --git a/server/proxy-server-web/start.sh b/server/proxy-server-web/start.sh index cbeca3a..b1a1eef 100644 --- a/server/proxy-server-web/start.sh +++ b/server/proxy-server-web/start.sh @@ -1,23 +1,85 @@ #!/bin/bash -echo "开始构建" -#构建镜像 -#分别输入 容器名称 和要构建的 版本号 eg test 111 生成版本号为 test:111 -#contain_name=test -#version=1 -contain_name=wiki-proxy-server -read -p "Please enter your contain name and version eg : v1.0: " version -echo "contain name and version is [${contain_name}:${version}]" -#输入要构建的端口号 或者自定义 -#server_port=8001 -read -p "Please enter your application server port in(1024到49151) " server_port -echo "you input server port is [${server_port}]" -#取消自定义命令 -#contain_name=demo -docker rmi ${contain_name}:${version} -docker build -t ${contain_name}:${version} . -#停用之前的服务 -docker stop ${contain_name} -docker rm ${contain_name} -#启动容器 -docker run -p ${server_port}:${server_port} -e server_port=${server_port} --name ${contain_name} -d ${contain_name}:${version} -echo "构建完成" \ No newline at end of file + +contain_name="wiki-proxy-server" +default_port=6666 +default_tcp_port=10010 +default_profile="test" + +# 输入镜像版本 +read -p "请输入镜像版本号(例如 v1.0.0): " version +if [[ -z "$version" ]]; then + echo "错误:版本号不能为空!" + exit 1 +fi + +# 输入应用端口(校验范围) +while true; do + read -p "请输入应用端口号(1024-49151,默认${default_port}): " server_port + server_port=${server_port:-$default_port} + if [[ "$server_port" =~ ^[0-9]+$ ]] && [ "$server_port" -ge 1024 ] && [ "$server_port" -le 49151 ]; then + break + else + echo "错误:端口号必须是1024到49151之间的数字!" + fi +done + +# 输入应用TCP端口(校验范围) +while true; do + read -p "请输入应用TCP端口号(1024-49151,默认${default_tcp_port}): " tcp_port + tcp_port=${tcp_port:-$default_tcp_port} + if [[ "$tcp_port" =~ ^[0-9]+$ ]] && [ "$tcp_port" -ge 1024 ] && [ "$tcp_port" -le 49151 ]; then + break + else + echo "错误:端口号必须是1024到49151之间的数字!" + fi +done + +# 输入 Spring 配置文件(例如 test, dev, prod) +read -p "请输入 Spring 配置文件(默认${default_profile}): " profile +profile=${profile:-$default_profile} + +echo "------------------------------" +echo "镜像名称与版本: ${contain_name}:${version}" +echo "应用端口号: ${server_port}" +echo "应用TCP端口号: ${tcp_port}" +echo "使用的 Spring 配置文件: ${profile}" +echo "------------------------------" + +# 清理旧镜像和容器(提供确认提示) +read -p "是否清理旧的容器和镜像?(y/n): " confirm +if [[ "$confirm" == "y" || "$confirm" == "Y" ]]; then + echo "正在停止并删除旧的容器..." + docker stop ${contain_name} 2>/dev/null + docker rm ${contain_name} 2>/dev/null + docker rmi ${contain_name}:${version} 2>/dev/null +else + echo "跳过清理旧容器和镜像。" +fi + +# 构建镜像(传递构建参数) +echo "正在构建镜像..." +docker build --build-arg SERVER_PORT=${server_port} --build-arg TCP_PORT=${tcp_port} --build-arg SPRING_PROFILE=${profile} -t ${contain_name}:${version} . +if [ $? -ne 0 ]; then + echo "镜像构建失败,退出!" + exit 1 +fi + +# 运行容器(传递环境变量) +echo "正在启动容器..." +docker run -d \ + --restart always \ + -p ${server_port}:${server_port} \ + -p ${tcp_port}:${tcp_port} \ + --name ${contain_name} \ + -e SERVER_PORT=${server_port} \ + -e TCP_PORT=${tcp_port} \ + -e SPRING_PROFILE=${profile} \ + ${contain_name}:${version} + +if [ $? -eq 0 ]; then + echo "构建完成!" + echo "访问地址:http://localhost:${server_port}" +else + echo "容器启动失败!" + exit 1 +fi diff --git a/server/proxy-server-web/stop.sh b/server/proxy-server-web/stop.sh index 869d2e4..18eb29d 100644 --- a/server/proxy-server-web/stop.sh +++ b/server/proxy-server-web/stop.sh @@ -1,9 +1,11 @@ -#vi stopAndRemoveContain.sh #!/bin/bash -contain_name=wiki-proxy-server -#停止容器 -docker stop ${contain_name} -#删除容器 -docker rm ${contain_name} -#删除容器镜像 -docker rmi ${contain_name} \ No newline at end of file + +contain_name="wiki-proxy-server" + +# 检查并停止容器 +if docker ps -q -f name=${contain_name}; then + echo "停止容器 ${contain_name} ..." + docker stop ${contain_name} +else + echo "容器 ${contain_name} 未运行或不存在!" +fi \ No newline at end of file diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/WikiProxyServer.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/WikiProxyServer.java index 6ec2667..e50cf87 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/WikiProxyServer.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/WikiProxyServer.java @@ -12,7 +12,7 @@ import com.framewiki.proxy.server.core.side.server.listen.config.impl.MultContro import com.framewiki.proxy.server.core.side.server.listen.config.impl.SecretSimpleListenServerConfig; import com.framewiki.proxy.server.core.side.server.listen.config.impl.SimpleListenServerConfig; import com.framewiki.proxy.server.core.side.server.listen.serversocket.ICreateServerSocket; -import com.framewiki.network.proxy.common.CommonConstants; +import com.framewiki.proxy.core.common.CommonConstants; import org.apache.commons.lang3.StringUtils; import javax.net.ssl.KeyManagerFactory; @@ -22,7 +22,7 @@ import java.nio.file.Files; import java.nio.file.Paths; import java.security.KeyStore; -import static com.framewiki.network.proxy.common.CommonConstants.ListenDest; +import static com.framewiki.proxy.core.common.CommonConstants.ListenDest; /** * @ProjectName: wiki-proxy diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/config/ProxyAutoConfiguration.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/config/ProxyAutoConfiguration.java index cf76ec5..55f7862 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/config/ProxyAutoConfiguration.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/config/ProxyAutoConfiguration.java @@ -10,6 +10,7 @@ import org.springframework.boot.context.properties.EnableConfigurationProperties import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.context.annotation.Lazy; +import org.springframework.context.annotation.Primary; /** * @ProjectName: wiki-proxy diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/config/ProxyConfig.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/config/ProxyConfig.java index ee74732..7e47415 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/config/ProxyConfig.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/config/ProxyConfig.java @@ -3,6 +3,7 @@ package com.framewiki.proxy.server.core.config; import lombok.Data; import org.springframework.boot.context.properties.ConfigurationProperties; import org.springframework.context.annotation.Configuration; +import org.springframework.context.annotation.Primary; import org.springframework.stereotype.Component; import java.util.ArrayList; @@ -18,6 +19,7 @@ import java.util.List; * @Version: 1.0 */ @Data +@Primary @Component @Configuration @ConfigurationProperties(prefix = "spring.proxy.server") diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/ClientServiceThread.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/ClientServiceThread.java index 8b37582..bd9466f 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/ClientServiceThread.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/ClientServiceThread.java @@ -3,10 +3,10 @@ package com.framewiki.proxy.server.core.side.server.client; import com.cdkjframework.exceptions.GlobalRuntimeException; import com.cdkjframework.util.log.LogUtils; import com.framewiki.proxy.server.core.side.server.client.config.IClientServiceConfig; -import com.framewiki.network.proxy.executor.FrameExecutor; -import com.framewiki.network.proxy.nio.NioProcessed; -import com.framewiki.network.proxy.nio.impl.NioHallows; -import com.framewiki.network.proxy.util.AssertUtils; +import com.framewiki.proxy.core.executor.FrameExecutor; +import com.framewiki.proxy.core.nio.NioProcessed; +import com.framewiki.proxy.core.nio.impl.NioHallows; +import com.framewiki.proxy.core.util.AssertUtils; import java.io.IOException; import java.net.ServerSocket; @@ -18,7 +18,7 @@ import java.util.Objects; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client + * @Package: com.framewiki.proxy.core.side.server.client * @ClassName: ClientServiceThread * @Description: Client service process * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/ClientServiceAdapter.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/ClientServiceAdapter.java index 810c6cf..a790041 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/ClientServiceAdapter.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/ClientServiceAdapter.java @@ -4,7 +4,7 @@ import java.net.Socket; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.adapter + * @Package: com.framewiki.proxy.core.side.server.client.adapter * @ClassName: ClientServiceAdapter * @Description: Client service adapter * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/DefaultReadAheadPassValueAdapter.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/DefaultReadAheadPassValueAdapter.java index f72e5f3..f966c6a 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/DefaultReadAheadPassValueAdapter.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/DefaultReadAheadPassValueAdapter.java @@ -1,12 +1,12 @@ package com.framewiki.proxy.server.core.side.server.client.adapter.impl; import com.framewiki.proxy.server.core.side.server.client.config.IClientServiceConfig; -import com.framewiki.network.proxy.model.InteractiveModel; +import com.framewiki.proxy.core.model.InteractiveModel; import com.framewiki.proxy.server.core.side.server.client.handler.impl.DefaultInteractiveProcessHandler; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.adapter + * @Package: com.framewiki.proxy.core.side.server.client.adapter * @ClassName: DefaultReadAheadPassValueAdapter * @Description: 默认的预读后处理适配器 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/PassValueNextEnum.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/PassValueNextEnum.java index 20d65b5..207f1e4 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/PassValueNextEnum.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/PassValueNextEnum.java @@ -4,7 +4,7 @@ import lombok.Getter; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.adapter + * @Package: com.framewiki.proxy.core.side.server.client.adapter * @ClassName: PassValueNextEnum * @Description: 传值适配器的handler回复信息 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/ReadAheadPassValueAdapter.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/ReadAheadPassValueAdapter.java index dd04290..377b5d6 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/ReadAheadPassValueAdapter.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/adapter/impl/ReadAheadPassValueAdapter.java @@ -1,8 +1,8 @@ package com.framewiki.proxy.server.core.side.server.client.adapter.impl; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.common.Optional; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.common.Optional; import com.framewiki.proxy.server.core.side.server.client.adapter.ClientServiceAdapter; import com.framewiki.proxy.server.core.side.server.client.config.IClientServiceConfig; import com.framewiki.proxy.server.core.side.server.client.handler.PassValueHandler; @@ -15,7 +15,7 @@ import java.util.List; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.adapter + * @Package: com.framewiki.proxy.core.side.server.client.adapter * @ClassName: ReadAheadPassValueAdapter * @Description: 预读后处理适配器 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/IClientServiceConfig.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/IClientServiceConfig.java index a2fad51..6a2fe0f 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/IClientServiceConfig.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/IClientServiceConfig.java @@ -1,6 +1,6 @@ package com.framewiki.proxy.server.core.side.server.client.config; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; import com.framewiki.proxy.server.core.side.server.client.adapter.ClientServiceAdapter; import java.net.ServerSocket; @@ -9,7 +9,7 @@ import java.nio.charset.Charset; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.config + * @Package: com.framewiki.proxy.core.side.server.client.config * @ClassName: IClientServiceConfig * @Description: 客户端服务配置 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/SecretSimpleClientServiceConfig.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/SecretSimpleClientServiceConfig.java index b9fbd92..f44d5e5 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/SecretSimpleClientServiceConfig.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/SecretSimpleClientServiceConfig.java @@ -1,9 +1,9 @@ package com.framewiki.proxy.server.core.side.server.client.config; -import com.framewiki.network.proxy.channel.impl.SecretInteractiveChannelBase; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.util.AesUtils; +import com.framewiki.proxy.core.channel.impl.SecretInteractiveChannelBase; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.util.AesUtils; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -13,7 +13,7 @@ import java.security.Key; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.config + * @Package: com.framewiki.proxy.core.side.server.client.config * @ClassName: SecretSimpleClientServiceConfig * @Description: 隧道过程加密的配置类 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/SimpleClientServiceConfig.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/SimpleClientServiceConfig.java index 9969050..c280789 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/SimpleClientServiceConfig.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/config/SimpleClientServiceConfig.java @@ -1,9 +1,9 @@ package com.framewiki.proxy.server.core.side.server.client.config; import com.framewiki.proxy.server.core.side.server.client.adapter.impl.DefaultReadAheadPassValueAdapter; -import com.framewiki.network.proxy.channel.impl.InteractiveChannelBase; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.InteractiveModel; +import com.framewiki.proxy.core.channel.impl.InteractiveChannelBase; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.InteractiveModel; import com.framewiki.proxy.server.core.side.server.client.adapter.ClientServiceAdapter; import lombok.NoArgsConstructor; @@ -17,7 +17,7 @@ import java.nio.charset.StandardCharsets; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.config + * @Package: com.framewiki.proxy.core.side.server.client.config * @ClassName: SimpleClientServiceConfig * @Description: 简单交互的客户端服务配置 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/PassValueHandler.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/PassValueHandler.java index 43b1eba..d132537 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/PassValueHandler.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/PassValueHandler.java @@ -1,12 +1,12 @@ package com.framewiki.proxy.server.core.side.server.client.handler; import com.framewiki.proxy.server.core.side.server.client.adapter.impl.PassValueNextEnum; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.common.Optional; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.common.Optional; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.handler + * @Package: com.framewiki.proxy.core.side.server.client.handler * @ClassName: PassValueHandler * @Description: 传值方式客户端是配置的处理接口 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/impl/DefaultInteractiveProcessHandler.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/impl/DefaultInteractiveProcessHandler.java index 25c3e7b..8d139ce 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/impl/DefaultInteractiveProcessHandler.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/impl/DefaultInteractiveProcessHandler.java @@ -5,7 +5,7 @@ import com.framewiki.proxy.server.core.side.server.client.process.impl.ClientCon /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.handler + * @Package: com.framewiki.proxy.core.side.server.client.handler * @ClassName: DefaultInteractiveProcessHandler * @Description: 默认的接收处理handler * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/impl/InteractiveProcessHandler.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/impl/InteractiveProcessHandler.java index 480973c..2b519b5 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/impl/InteractiveProcessHandler.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/handler/impl/InteractiveProcessHandler.java @@ -1,15 +1,14 @@ package com.framewiki.proxy.server.core.side.server.client.handler.impl; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.common.Optional; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.enums.FrameResultEnum; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.common.Optional; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.enums.FrameResultEnum; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; import com.framewiki.proxy.server.core.side.server.client.adapter.impl.PassValueNextEnum; import com.framewiki.proxy.server.core.side.server.client.handler.PassValueHandler; import com.framewiki.proxy.server.core.side.server.client.process.IProcess; -import com.framewiki.proxy.server.core.side.server.listen.ServerListenThread; import java.util.LinkedList; @@ -17,7 +16,7 @@ import java.util.List; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.handler + * @Package: com.framewiki.proxy.core.side.server.client.handler * @ClassName: InteractiveIProcessHandler * @Description: 常规接收处理handler * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/IProcess.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/IProcess.java index 1506500..07e88dc 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/IProcess.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/IProcess.java @@ -1,11 +1,11 @@ package com.framewiki.proxy.server.core.side.server.client.process; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.InteractiveModel; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.InteractiveModel; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.process + * @Package: com.framewiki.proxy.core.side.server.client.process * @ClassName: IProcess * @Description: 处理方法接口 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/impl/ClientConnectProcess.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/impl/ClientConnectProcess.java index 0ce786f..9cfa188 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/impl/ClientConnectProcess.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/impl/ClientConnectProcess.java @@ -3,17 +3,17 @@ package com.framewiki.proxy.server.core.side.server.client.process.impl; import com.framewiki.proxy.server.core.side.server.client.process.IProcess; import com.framewiki.proxy.server.core.side.server.listen.ListenServerControl; import com.framewiki.proxy.server.core.side.server.listen.ServerListenThread; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.common.CommonFormat; -import com.framewiki.network.proxy.model.FrameResultModel; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.enums.FrameResultEnum; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; -import com.framewiki.network.proxy.model.interactive.ClientConnectModel; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.common.CommonFormat; +import com.framewiki.proxy.core.model.FrameResultModel; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.enums.FrameResultEnum; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; +import com.framewiki.proxy.core.model.interactive.ClientConnectModel; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.process + * @Package: com.framewiki.proxy.core.side.server.client.process * @ClassName: ClientConnectProcess * @Description: 请求建立隧道处理器 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/impl/ClientControlProcess.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/impl/ClientControlProcess.java index c9175b5..a0f96b0 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/impl/ClientControlProcess.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/client/process/impl/ClientControlProcess.java @@ -2,17 +2,17 @@ package com.framewiki.proxy.server.core.side.server.client.process.impl; import com.framewiki.proxy.server.core.side.server.listen.ListenServerControl; import com.framewiki.proxy.server.core.side.server.listen.ServerListenThread; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.FrameResultModel; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.enums.FrameResultEnum; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; -import com.framewiki.network.proxy.model.interactive.ClientControlModel; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.FrameResultModel; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.enums.FrameResultEnum; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; +import com.framewiki.proxy.core.model.interactive.ClientControlModel; import com.framewiki.proxy.server.core.side.server.client.process.IProcess; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.client.process + * @Package: com.framewiki.proxy.core.side.server.client.process * @ClassName: ClientControlProcess * @Description: 请求建立控制器处理方法 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ListenServerControl.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ListenServerControl.java index bed7dd4..45e17fe 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ListenServerControl.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ListenServerControl.java @@ -14,7 +14,7 @@ import java.util.concurrent.ConcurrentHashMap; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen + * @Package: com.framewiki.proxy.core.side.server.listen * @ClassName: ListenServerControl * @Description: 转发监听服务控制类 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ServerListen.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ServerListen.java index 77ace2b..16010de 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ServerListen.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ServerListen.java @@ -4,7 +4,7 @@ import com.framewiki.proxy.server.core.side.server.listen.control.IControlSocket /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen + * @Package: com.framewiki.proxy.core.side.server.listen * @ClassName: ServerListen * @Description: 监听转发服务进程 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ServerListenThread.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ServerListenThread.java index 72f1b0b..f5fb3a0 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ServerListenThread.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/ServerListenThread.java @@ -2,17 +2,16 @@ package com.framewiki.proxy.server.core.side.server.listen; import com.cdkjframework.exceptions.GlobalRuntimeException; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.proxy.server.core.side.server.listen.config.impl.SimpleListenServerConfig; import com.framewiki.proxy.server.core.side.server.listen.control.IControlSocket; -import com.framewiki.network.proxy.api.IBelongControl; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; -import com.framewiki.network.proxy.common.CommonFormat; -import com.framewiki.network.proxy.executor.FrameExecutor; -import com.framewiki.network.proxy.nio.NioProcessed; -import com.framewiki.network.proxy.nio.impl.NioHallows; +import com.framewiki.proxy.core.api.IBelongControl; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.common.CommonFormat; +import com.framewiki.proxy.core.executor.FrameExecutor; +import com.framewiki.proxy.core.nio.NioProcessed; +import com.framewiki.proxy.core.nio.impl.NioHallows; import com.framewiki.proxy.server.core.side.server.listen.clear.IClearInvalidSocketPartThread; import com.framewiki.proxy.server.core.side.server.listen.config.ListenServerConfig; -import com.framewiki.network.proxy.util.AssertUtils; +import com.framewiki.proxy.core.util.AssertUtils; import java.io.IOException; @@ -26,7 +25,7 @@ import java.util.concurrent.ConcurrentHashMap; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen + * @Package: com.framewiki.proxy.core.side.server.listen * @ClassName: ServerListenThread * @Description: 监听转发服务进程 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/clear/IClearInvalidSocketPartThread.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/clear/IClearInvalidSocketPartThread.java index e1d626b..39de726 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/clear/IClearInvalidSocketPartThread.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/clear/IClearInvalidSocketPartThread.java @@ -2,7 +2,7 @@ package com.framewiki.proxy.server.core.side.server.listen.clear; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen + * @Package: com.framewiki.proxy.core.side.server.listen * @ClassName: IClearInvalidSocketPartThread * @Description: 清理无效端口 线程 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/clear/impl/ClearInvalidSocketPartThread.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/clear/impl/ClearInvalidSocketPartThread.java index ecf29b7..f9f824b 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/clear/impl/ClearInvalidSocketPartThread.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/clear/impl/ClearInvalidSocketPartThread.java @@ -3,8 +3,7 @@ package com.framewiki.proxy.server.core.side.server.listen.clear.impl; import com.cdkjframework.util.log.LogUtils; import com.framewiki.proxy.server.core.side.server.listen.ServerListenThread; import com.framewiki.proxy.server.core.side.server.listen.clear.IClearInvalidSocketPartThread; -import com.framewiki.network.proxy.executor.FrameExecutor; -import com.framewiki.proxy.server.core.side.server.listen.config.impl.SecretSimpleListenServerConfig; +import com.framewiki.proxy.core.executor.FrameExecutor; import lombok.Getter; import lombok.Setter; @@ -14,7 +13,7 @@ import java.util.concurrent.ScheduledFuture; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen + * @Package: com.framewiki.proxy.core.side.server.listen * @ClassName: ClearInvalidSocketPartThread * @Description: 清理无效端口 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/ListenServerConfig.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/ListenServerConfig.java index ccebb1a..26bc674 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/ListenServerConfig.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/ListenServerConfig.java @@ -4,7 +4,7 @@ import com.alibaba.fastjson.JSONObject; import com.framewiki.proxy.server.core.side.server.listen.ServerListenThread; import com.framewiki.proxy.server.core.side.server.listen.clear.IClearInvalidSocketPartThread; import com.framewiki.proxy.server.core.side.server.listen.control.IControlSocket; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; import java.net.ServerSocket; import java.net.Socket; @@ -12,7 +12,7 @@ import java.nio.charset.Charset; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.config + * @Package: com.framewiki.proxy.core.side.server.listen.config * @ClassName: ListenServerConfig * @Description: 穿透监听服务配置 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/AllSecretSimpleListenServerConfig.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/AllSecretSimpleListenServerConfig.java index f49e2cf..2ce65c7 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/AllSecretSimpleListenServerConfig.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/AllSecretSimpleListenServerConfig.java @@ -1,10 +1,10 @@ package com.framewiki.proxy.server.core.side.server.listen.config.impl; import com.framewiki.proxy.server.core.side.server.listen.ServerListenThread; -import com.framewiki.network.proxy.api.secret.impl.AesSecret; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; -import com.framewiki.network.proxy.api.socket.part.SecretSocketPart; -import com.framewiki.network.proxy.util.AesUtils; +import com.framewiki.proxy.core.api.secret.impl.AesSecret; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.api.socket.part.SecretSocketPart; +import com.framewiki.proxy.core.util.AesUtils; import lombok.Getter; import lombok.Setter; @@ -12,7 +12,7 @@ import java.security.Key; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.config + * @Package: com.framewiki.proxy.core.side.server.listen.config * @ClassName: AllSecretSimpleListenServerConfig * @Description: 交互及隧道都加密 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/MultControlListenServerConfig.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/MultControlListenServerConfig.java index 0cf1268..dd81fda 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/MultControlListenServerConfig.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/MultControlListenServerConfig.java @@ -5,7 +5,7 @@ import com.framewiki.proxy.server.core.side.server.listen.ServerListenThread; import com.framewiki.proxy.server.core.side.server.listen.clear.IClearInvalidSocketPartThread; import com.framewiki.proxy.server.core.side.server.listen.control.IControlSocket; import com.framewiki.proxy.server.core.side.server.listen.control.impl.MultiControlSocket; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; import com.framewiki.proxy.server.core.side.server.listen.config.ListenServerConfig; import java.net.ServerSocket; @@ -14,7 +14,7 @@ import java.nio.charset.Charset; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.config + * @Package: com.framewiki.proxy.core.side.server.listen.config * @ClassName: MultControlListenServerConfig * @Description: 多客户端;监听服务配置 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/SecretSimpleListenServerConfig.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/SecretSimpleListenServerConfig.java index 6f28d9c..8406763 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/SecretSimpleListenServerConfig.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/SecretSimpleListenServerConfig.java @@ -1,11 +1,10 @@ package com.framewiki.proxy.server.core.side.server.listen.config.impl; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.channel.impl.SecretInteractiveChannelBase; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.util.AesUtils; -import com.framewiki.proxy.server.core.side.server.listen.control.impl.ControlSocket; +import com.framewiki.proxy.core.channel.impl.SecretInteractiveChannelBase; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.util.AesUtils; import lombok.Data; import lombok.EqualsAndHashCode; import lombok.NoArgsConstructor; @@ -17,7 +16,7 @@ import java.security.Key; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.config + * @Package: com.framewiki.proxy.core.side.server.listen.config * @ClassName: SecretSimpleListenServerConfig * @Description: 交互加密配置 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/SimpleListenServerConfig.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/SimpleListenServerConfig.java index 0651308..b503de4 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/SimpleListenServerConfig.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/config/impl/SimpleListenServerConfig.java @@ -2,12 +2,11 @@ package com.framewiki.proxy.server.core.side.server.listen.config.impl; import com.alibaba.fastjson.JSONObject; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.api.socket.part.BaseSocketPart; -import com.framewiki.network.proxy.api.socket.part.SimpleSocketPart; -import com.framewiki.network.proxy.channel.impl.InteractiveChannelBase; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.proxy.server.core.side.server.client.adapter.impl.ReadAheadPassValueAdapter; +import com.framewiki.proxy.core.api.socket.part.BaseSocketPart; +import com.framewiki.proxy.core.api.socket.part.SimpleSocketPart; +import com.framewiki.proxy.core.channel.impl.InteractiveChannelBase; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.InteractiveModel; import com.framewiki.proxy.server.core.side.server.listen.ServerListenThread; import com.framewiki.proxy.server.core.side.server.listen.clear.IClearInvalidSocketPartThread; import com.framewiki.proxy.server.core.side.server.listen.clear.impl.ClearInvalidSocketPartThread; @@ -32,7 +31,7 @@ import java.nio.charset.StandardCharsets; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.config + * @Package: com.framewiki.proxy.core.side.server.listen.config * @ClassName: SimpleListenServerConfig * @Description: 简单的交互、隧道;监听服务配置 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/IControlSocket.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/IControlSocket.java index d408027..d5aee7a 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/IControlSocket.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/IControlSocket.java @@ -4,7 +4,7 @@ import com.framewiki.proxy.server.core.side.server.listen.ServerListen; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.control + * @Package: com.framewiki.proxy.core.side.server.listen.control * @ClassName: IControlSocket * @Description: 控制端口接口 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/ControlSocket.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/ControlSocket.java index 1413e84..e60d015 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/ControlSocket.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/ControlSocket.java @@ -1,12 +1,11 @@ package com.framewiki.proxy.server.core.side.server.listen.control.impl; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.enums.FrameResultEnum; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; -import com.framewiki.network.proxy.model.interactive.ServerWaitModel; -import com.framewiki.proxy.server.core.side.server.client.handler.impl.InteractiveProcessHandler; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.enums.FrameResultEnum; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; +import com.framewiki.proxy.core.model.interactive.ServerWaitModel; import com.framewiki.proxy.server.core.side.server.listen.ServerListen; import com.framewiki.proxy.server.core.side.server.listen.control.IControlSocket; import com.framewiki.proxy.server.core.side.server.listen.recv.IRecvHandler; @@ -20,7 +19,7 @@ import java.util.Objects; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.config + * @Package: com.framewiki.proxy.core.side.server.listen.config * @ClassName: ControlSocket * @Description: 控制socket实例 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/MultControlSocket.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/MultControlSocket.java index 09b2794..d03296c 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/MultControlSocket.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/MultControlSocket.java @@ -9,7 +9,7 @@ import java.util.Objects; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.config + * @Package: com.framewiki.proxy.core.side.server.listen.config * @ClassName: MultControlSocket * @Description: 复合 控制socket实例 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/MultiControlSocket.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/MultiControlSocket.java index e3d5a53..5c50d6f 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/MultiControlSocket.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/control/impl/MultiControlSocket.java @@ -9,7 +9,7 @@ import java.util.Objects; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.config + * @Package: com.framewiki.proxy.core.side.server.listen.config * @ClassName: MultiControlSocket * @Description: 复合 控制socket实例 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/IRecvHandler.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/IRecvHandler.java index 0a731e3..803f27b 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/IRecvHandler.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/IRecvHandler.java @@ -1,10 +1,10 @@ package com.framewiki.proxy.server.core.side.server.listen.recv; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.recv + * @Package: com.framewiki.proxy.core.side.server.listen.recv * @ClassName: IRecvHandler * @Description: 接收处理器 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/impl/ClientHeartHandler.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/impl/ClientHeartHandler.java index bd342c0..8b41e1e 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/impl/ClientHeartHandler.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/impl/ClientHeartHandler.java @@ -1,14 +1,14 @@ package com.framewiki.proxy.server.core.side.server.listen.recv.impl; import com.framewiki.proxy.server.core.side.server.listen.recv.IRecvHandler; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.enums.FrameResultEnum; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.enums.FrameResultEnum; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.recv + * @Package: com.framewiki.proxy.core.side.server.listen.recv * @ClassName: ClientHeartHandler * @Description: 心跳检测 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/impl/CommonReplyHandler.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/impl/CommonReplyHandler.java index 048d08f..b15fea9 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/impl/CommonReplyHandler.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/recv/impl/CommonReplyHandler.java @@ -1,10 +1,9 @@ package com.framewiki.proxy.server.core.side.server.listen.recv.impl; import com.cdkjframework.util.log.LogUtils; -import com.framewiki.network.proxy.channel.impl.BaseSocketChannel; -import com.framewiki.network.proxy.model.InteractiveModel; -import com.framewiki.network.proxy.model.enums.InteractiveTypeEnum; -import com.framewiki.proxy.server.core.side.server.listen.clear.impl.ClearInvalidSocketPartThread; +import com.framewiki.proxy.core.channel.impl.BaseSocketChannel; +import com.framewiki.proxy.core.model.InteractiveModel; +import com.framewiki.proxy.core.model.enums.InteractiveTypeEnum; import com.framewiki.proxy.server.core.side.server.listen.recv.IRecvHandler; import lombok.Getter; import lombok.Setter; @@ -14,7 +13,7 @@ import java.util.Objects; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.recv + * @Package: com.framewiki.proxy.core.side.server.listen.recv * @ClassName: CommonReplyHandler * @Description: 统一回复 处理器 * @Author: frank tiger diff --git a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/serversocket/ICreateServerSocket.java b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/serversocket/ICreateServerSocket.java index 1bab14e..ee9e6fa 100644 --- a/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/serversocket/ICreateServerSocket.java +++ b/server/proxy-server/src/main/java/com/framewiki/proxy/server/core/side/server/listen/serversocket/ICreateServerSocket.java @@ -4,7 +4,7 @@ import java.net.ServerSocket; /** * @ProjectName: wiki-proxy - * @Package: com.framewiki.network.proxy.side.server.listen.serversocket + * @Package: com.framewiki.proxy.core.side.server.listen.serversocket * @ClassName: ICreateServerSocket * @Description: 创建服务端口接口 * @Author: frank tiger -- Gitee From 32f082630cd0c1a790d371006e4d46ec62f31088 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=9F=BA=E6=A1=86=E6=9E=B6?= Date: Fri, 28 Mar 2025 21:32:16 +0800 Subject: [PATCH 03/11] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=95=B4MD=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.cn.md | 34 +++++++++++++++++----------------- README.md | 40 +++++++++++++++++----------------------- 2 files changed, 34 insertions(+), 40 deletions(-) diff --git a/README.cn.md b/README.cn.md index 944d594..ca49f15 100644 --- a/README.cn.md +++ b/README.cn.md @@ -1,23 +1,23 @@ -# FrameWiKi Network Proxy - -维基框架内网穿透工具 - -********************* - -## FrameWiKi Network Proxy 是做什么的? - -- 需要用户自行提供硬件支持的服务或电脑、部署的内网穿透工具。 -- 可提供TCP协议类型的内网穿透服务,包括但不限于 http(s)、数据库连接、ssh等协议。 -- 支持https 与 http协议与应用交互方式(推荐使用https更安全)。 -- 支持无加密、控制端口加密交互、数据加密交互方式。 -- 主要服务场景,需要将内网的应用开放到公网,如微信小程序开发调试、支付回调等。 -- 支持 http 根据 host 进行反向代理;目标依然是内网应用,只是可以根据 http 协议 header 中的 host 字段区分选择目标应用(注意:只是有人提出来了 - http 监听统一端口并用域名访问的问题,并且有做的价值才补充的该功能;没做负载功能,这个是内网穿透,不是 - nginx,更不建议直接用在生产上,需要负载的可以自己去实现) +

+keytool +

+

+ star +fork + + + + + license MIT + +

# 1、简介 -

维基代理(wiki-proxy)是一个基于Netty的、开源的java内网穿透项目。遵循MIT许可,因此您可以对它进行复制、修改、传播并用于任何个人或商业行为。

+- 维基代理(wiki-proxy)、开源的java内网穿透项目。 +- 技术栈:cdkjFramework(维基框架)、JPA、Netty +- 遵循MIT许可,因此您可以对它进行复制、修改、传播并用于任何个人或商业行为。 +- 官网地址:https://www.framewiki.com/ # 2、项目结构 diff --git a/README.md b/README.md index 7831baf..1cc2442 100644 --- a/README.md +++ b/README.md @@ -1,29 +1,23 @@ -# FrameWiKi Network Proxy - -Wiki Framework Internal Network Penetration Tool -********************* - -## What does FrameWiKi Network Proxy do? - --Users are required to provide hardware support services, computers, and deployed intranet penetration tools on their -own. --We can provide intranet penetration services for TCP protocol types, including but not limited to HTTP (s), database -connection, SSH, and other protocols. --Support HTTPS and HTTP protocols and application interaction methods (HTTPS is recommended for greater security). --Support unencrypted, control port encrypted interaction, and data encrypted interaction methods. --The main service scenario requires opening up internal network applications to the public network, such as WeChat mini -program development and debugging, payment callbacks, etc. --Support HTTP reverse proxy based on host; The target is still an internal network application, but the target -application can be selected based on the host field in the HTTP protocol header (note: it was only suggested by someone) -The issue of HTTP listening on a unified port and accessing it using a domain name, and the added value of this feature; -There is no load function, this is internal network penetration, not -nginx, It is not recommended to use it directly in production, and those that require load can be implemented by -themselves +

+keytool +

+

+ star +fork + + + + + license MIT + +

# 1. Introduction -

Wiki proxy is an open-source Java intranet penetration project based on Netty. Following the MIT license, you may copy, -modify, distribute, and use it for any personal or commercial activity.

+- Wiki proxy, an open-source Java intranet penetration project. +- Technical stack: cdkjFramework (Wiki Framework) JPA、Netty +- Following the MIT license, you may copy, modify, distribute, and use it for any personal or commercial activity. +- Official website address: https://www.framewiki.com/ # 2. Project Structure -- Gitee From a4ca06afb2ab9f23a44ff7f17830e0f57a9d4736 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=9F=BA=E6=A1=86=E6=9E=B6?= Date: Fri, 28 Mar 2025 21:35:52 +0800 Subject: [PATCH 04/11] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=95=B4MD=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.md b/README.md index 1cc2442..476248b 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@

keytool

+

维基代理

+

Wiki Proxy

star fork -- Gitee From 1dbb8989ec1548f9081aa9069f7d734c521ade14 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=9F=BA=E6=A1=86=E6=9E=B6?= Date: Fri, 28 Mar 2025 21:36:36 +0800 Subject: [PATCH 05/11] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=95=B4MD=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.cn.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/README.cn.md b/README.cn.md index ca49f15..6e35173 100644 --- a/README.cn.md +++ b/README.cn.md @@ -1,6 +1,8 @@

keytool

+

维基代理

+

Wiki Proxy

star fork -- Gitee From 671e35174c9861dc3baee8afbdc0508d72882e34 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=9F=BA=E6=A1=86=E6=9E=B6?= Date: Fri, 28 Mar 2025 21:42:45 +0800 Subject: [PATCH 06/11] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=95=B4MD=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.cn.md | 6 ++++-- README.md | 6 ++++-- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/README.cn.md b/README.cn.md index 6e35173..8f6e4f4 100644 --- a/README.cn.md +++ b/README.cn.md @@ -1,8 +1,10 @@

keytool

-

维基代理

-

Wiki Proxy

+ +
维基代理
+
Wiki Proxy
+

star fork diff --git a/README.md b/README.md index 476248b..a7a47b6 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,10 @@

keytool

-

维基代理

-

Wiki Proxy

+ +
维基代理
+
Wiki Proxy
+

star fork -- Gitee From 480b85536fe1728b115ddd2ccdb72f1937c237e7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=9F=BA=E6=A1=86=E6=9E=B6?= Date: Fri, 28 Mar 2025 21:43:19 +0800 Subject: [PATCH 07/11] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=95=B4MD=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.cn.md | 5 +++-- README.md | 5 +++-- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/README.cn.md b/README.cn.md index 8f6e4f4..f2d3c10 100644 --- a/README.cn.md +++ b/README.cn.md @@ -2,8 +2,9 @@ keytool

-
维基代理
-
Wiki Proxy
+#
维基代理 + +###
Wiki Proxy

star diff --git a/README.md b/README.md index a7a47b6..23d1c19 100644 --- a/README.md +++ b/README.md @@ -2,8 +2,9 @@ keytool

-
维基代理
-
Wiki Proxy
+#
维基代理 + +###
Wiki Proxy

star -- Gitee From b2ceee53bdf5023144ef9b7e90a4da70b74ad47b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=9F=BA=E6=A1=86=E6=9E=B6?= Date: Fri, 28 Mar 2025 21:45:38 +0800 Subject: [PATCH 08/11] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=95=B4MD=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.cn.md | 7 +++++-- README.md | 7 +++++-- 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/README.cn.md b/README.cn.md index f2d3c10..098b158 100644 --- a/README.cn.md +++ b/README.cn.md @@ -2,9 +2,12 @@ keytool

-#
维基代理 -###
Wiki Proxy +

+维基代理 +

+ +

Wiki Proxy

star diff --git a/README.md b/README.md index 23d1c19..c492c90 100644 --- a/README.md +++ b/README.md @@ -2,9 +2,12 @@ keytool

-#
维基代理 +

+维基代理 +

+ +

Wiki Proxy

-###
Wiki Proxy

star -- Gitee From 8689a53063359395f4ec8dcb17c098d7d40d33d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=9F=BA=E6=A1=86=E6=9E=B6?= Date: Fri, 28 Mar 2025 21:49:06 +0800 Subject: [PATCH 09/11] =?UTF-8?q?1=E3=80=81=E8=B0=83=E6=95=B4MD=E6=96=87?= =?UTF-8?q?=E4=BB=B6=E8=AF=B4=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.cn.md | 7 ------- README.md | 7 ------- 2 files changed, 14 deletions(-) diff --git a/README.cn.md b/README.cn.md index 098b158..2f6ec08 100644 --- a/README.cn.md +++ b/README.cn.md @@ -2,13 +2,6 @@ keytool

- -

-维基代理 -

- -

Wiki Proxy

-

star fork diff --git a/README.md b/README.md index c492c90..9a0a4af 100644 --- a/README.md +++ b/README.md @@ -2,13 +2,6 @@ keytool

-

-维基代理 -

- -

Wiki Proxy

- -

star fork -- Gitee From 84aed5d4786517cb4544a8af7b5cace9a7bc3066 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=BB=B4=E5=9F=BA=E6=A1=86=E6=9E=B6?= Date: Wed, 2 Apr 2025 21:05:43 +0800 Subject: [PATCH 10/11] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0=E5=8F=82?= =?UTF-8?q?=E4=B8=8E=E8=B4=A1=E7=8C=AE=E4=BA=BA=E5=91=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.cn.md | 3 +++ README.md | 5 ++++- assets/developer/linkeddt.png | Bin 0 -> 2496 bytes 3 files changed, 7 insertions(+), 1 deletion(-) create mode 100644 assets/developer/linkeddt.png diff --git a/README.cn.md b/README.cn.md index 2f6ec08..b4c9d19 100644 --- a/README.cn.md +++ b/README.cn.md @@ -189,3 +189,6 @@ cd /user/web/wiki-proxy/client 维基框架 + +linkeddt + diff --git a/README.md b/README.md index 9a0a4af..a4a3e5b 100644 --- a/README.md +++ b/README.md @@ -188,4 +188,7 @@ cd /user/web/wiki-proxy/client - \ No newline at end of file + + + linkeddt + diff --git a/assets/developer/linkeddt.png b/assets/developer/linkeddt.png new file mode 100644 index 0000000000000000000000000000000000000000..78e694a2496fd90c362968cd06e8cdab75511222 GIT binary patch literal 2496 zcmV;x2|xCUP)Dy(ztir&)9zx2 zw_%00He#Lm{Qvg)|MdC)-R%GO`~UO!{{W!r;_v_9?*IG!|KIKZ?)Lxj_y6ql|L5`l zhu5L?f>QQ|M~m>;_m*7q&2?K-vY4yEd| z;QE8l^((LKc+2!?#q;3t{z|*>;PdmnbIJ5Ch{>Jlu+r=O(ChtW#PeFf@&=;nvETYaxbIosZOrNXz~%dp)b|vp>u0Fg zZpias!}2|m&7J75==1%j-1&FQ^cbn@)b0I#&Gj>~?yTPVpxOAs-Sk(#@r%9Wo9M4a z+gdQ!Md$PXy5swL&Gk>c@g}bA3Z&}O^5U-E`JCAIjMDbV;PoS|?0U4{Y^>U4r`SZ5 z&*t{?wAJxSn9;H9#H{SSlIWy_<(GTpjZNKQJK0bm)i&Pk{O$Mq==S!n((eeP>dNrj zTA|g$@6=PB)V%J_r0cbF;)reHfN9};VBmBp);-+o`Q!5VJ+|-M^y-wt=7G22bgX9H{g-?L8vg$8?WS$x z;-;n5i|000MTNkl*hA zbLJA}FwE6+hbMB2$DFx@IgH2+9&_dr<}l3FbCc(?Q?EZwLtz}pU-?h;_vRdvHN2TE zUBPyBlXL^3!!;_*p=@(_i37O_;v$J4px_;^iHT9;U+Q^wx~+^&J7q)@z6smevxI!| zwB0f8826iwasN#J2~PQ4YkTi1A0v^-lkE>1OUh9c8n^U560EYW^tkZ2oy|yVTc4HC z^%S?Z6*<_)S4zlwircM3+V$jx5~|+f-bLCsv!*nWkV~ z;?&xD;}#SH*|_A)@qIY)g^4oZ`mxCQZTKZQx6rO64;BLV%7ZOzt-i3~RtDr!sPDl!HcD z9Y9H^hB?>z+cg>zcjBsA<uJrDs#oZ+8`x1*Re$vH;6C@{Cmk>uy~eEl_uNn>ld%C?ybUE%sZ*S%9LJgZOWXt1 z$Gwn>4|KjFhA-uRUYFy?4V*3ZcM!){fDzz=X_om7+b-7b!s)-<+Wj(Zci#UB#yd8 z$IpRmd6 zJmdeqL~AX>&mmj}(4&NlMs46W;RXRCDh|0ka5^gLfZM0&fcvig0{8VGju{n3Tet|*i&54*$Mr>_8QD-ITTT--|u4$P?QTt+L_(r#` zSX#Hi6x^J{?Ltu;jO~N&JmUV zRf#TR2*qi49?EC{k{@CWA=On*>t1db;vTbDhrD}3ZVFkvb;zY8Gz+o@lk@qtJXvHo zS`hP0E*7{++>h=lH?@C<+$+=~Z2)Q0Fieqbl`+Fm5b`LB2Tr|;GC4^;B$9@Y&p?Momud7^KBpGNZ^@s9hy{b zPwXkT$o(0nl-TYo`CI*$tR?HKNFtRx5p6byte`>}825@|qyq6>S`-UdAPK945S>vs zGqWPFq^i>un*1uzja->&)I^K#>!+mFShozFQ}Q+}iZ;Qh6*wp%P6Zi=az!jGMTFgM)_v05k57xv!(h}39F)*|t_A zUDu;mGc!9axtE#y$qm9aS$@sq<0hCfa)aH;&1Bb@Tv$jYnOs_M%!KnTIbWn}IYwjn z78-)PTu9SaoN_{pV{!#yHd~}}hNfxH=!`b9^gc%AbZuiH&v%mJuTge)`^~$Pmt|Rp zAVV41B4utG;#P#`i)RW+DVeZJXXMeip9fZDIWRH6Q;JEx9fw?3c4fZjbe01Se_dD0 z9r8V=vmE1~oNH4nAMlTgE$4N^)3~_ICCD3_yS!+4ypN1SuK%#*hWd{uxrfVn`j02M z|6J}x|6$7w_8(7j|JtK-8-{@xh@v|rwTGd@SHR4%`)|;R0jdL!WIi_VF+6$Po6kYw zUVJj{ Date: Wed, 2 Apr 2025 21:07:41 +0800 Subject: [PATCH 11/11] =?UTF-8?q?1=E3=80=81=E5=A2=9E=E5=8A=A0=E5=8F=82?= =?UTF-8?q?=E4=B8=8E=E8=B4=A1=E7=8C=AE=E4=BA=BA=E5=91=98=202=E3=80=81?= =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=81=94=E7=B3=BB=E4=BA=BA=E5=BE=AE=E4=BA=8C?= =?UTF-8?q?=E7=BB=B4=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.cn.md | 1 + README.md | 1 + assets/developer/wx.png | Bin 0 -> 312049 bytes 3 files changed, 2 insertions(+) create mode 100644 assets/developer/wx.png diff --git a/README.cn.md b/README.cn.md index b4c9d19..8a9ce8a 100644 --- a/README.cn.md +++ b/README.cn.md @@ -189,6 +189,7 @@ cd /user/web/wiki-proxy/client 维基框架 + linkeddt diff --git a/README.md b/README.md index a4a3e5b..58d1b60 100644 --- a/README.md +++ b/README.md @@ -189,6 +189,7 @@ cd /user/web/wiki-proxy/client + linkeddt diff --git a/assets/developer/wx.png b/assets/developer/wx.png new file mode 100644 index 0000000000000000000000000000000000000000..05db630ba175cf5a0db9a8c296fc005b0f7acd24 GIT binary patch literal 312049 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

s+ExtP@+?g^<|4c9}m`rc^ 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

`D~26v<$_r`zY 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 literal 0 HcmV?d00001 -- Gitee