From a4666295427a5e745e30225422e2dd5a626c37da Mon Sep 17 00:00:00 2001 From: 819574156 Date: Tue, 22 Oct 2024 17:15:49 +0800 Subject: [PATCH 1/2] =?UTF-8?q?getParamJsonFromLocationBlock=20=E5=A4=84?= =?UTF-8?q?=E7=90=86=E4=BA=86location=E4=B8=AD=E5=B8=B8=E8=A7=81=E7=9A=84h?= =?UTF-8?q?ttp=E8=AE=BE=E7=BD=AE=E5=8F=82=E6=95=B0=20=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E6=90=BA=E5=B8=A6Host=E5=8F=82=E6=95=B0=200?= =?UTF-8?q?=E5=90=A6=201=E6=98=AF(=E9=BB=98=E8=AE=A4)=20=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E4=B8=BA=E4=B8=8D=E6=90=BA=E5=B8=A6=E4=BA=86=20=E5=8A=A0?= =?UTF-8?q?=E4=BA=86ali=E7=9A=84json=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pom.xml | 7 ++- src/main/java/com/cym/model/Location.java | 2 +- .../java/com/cym/service/ServerService.java | 55 ++++++++++++++++--- 3 files changed, 55 insertions(+), 9 deletions(-) diff --git a/pom.xml b/pom.xml index 96870049..69ef4f78 100644 --- a/pom.xml +++ b/pom.xml @@ -30,6 +30,7 @@ 2.13.1 3.0 0.5.11 + 2.0.47 @@ -134,7 +135,11 @@ expiringmap ${expiringmap.version} - + + com.alibaba + fastjson + ${fastjson.version} + diff --git a/src/main/java/com/cym/model/Location.java b/src/main/java/com/cym/model/Location.java index ad567ad9..68454aad 100644 --- a/src/main/java/com/cym/model/Location.java +++ b/src/main/java/com/cym/model/Location.java @@ -76,7 +76,7 @@ public class Location extends BaseModel { /** * 是否携带Host参数 0否 1是(默认) */ - @InitValue("1") + @InitValue("0") Integer header; /** * Host参数类型 $host(默认) $http_host $host:$proxy_port $host:$server_port diff --git a/src/main/java/com/cym/service/ServerService.java b/src/main/java/com/cym/service/ServerService.java index 3a9cfed3..83d68e15 100644 --- a/src/main/java/com/cym/service/ServerService.java +++ b/src/main/java/com/cym/service/ServerService.java @@ -1,11 +1,11 @@ package com.cym.service; import java.io.IOException; -import java.util.ArrayList; -import java.util.Collections; -import java.util.List; -import java.util.UUID; +import java.util.*; +import cn.hutool.json.JSONArray; +import com.alibaba.fastjson.JSONObject; +import com.beust.jcommander.internal.Lists; import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; import org.slf4j.Logger; @@ -235,10 +235,13 @@ public class ServerService { // 设置location List locations = new ArrayList<>(); List locationBlocks = serverNgx.findAll(NgxBlock.class, "location"); + NgxBlock locationBlockTemp; for (NgxEntry item : locationBlocks) { Location location = new Location(); // 目前只支持http段的 proxy_pass - NgxParam proxyPassParam = ((NgxBlock) item).findParam("proxy_pass"); + locationBlockTemp = (NgxBlock) item; + + NgxParam proxyPassParam = locationBlockTemp.findParam("proxy_pass"); location.setPath(((NgxBlock) item).getValue()); // 如果没有proxy_pass type 0,说明可能是静态文件夹映射 type 1 @@ -264,7 +267,7 @@ public class ServerService { location.setType(1); } - location.setLocationParamJson(null); + location.setLocationParamJson(getParamJsonFromLocationBlock(locationBlockTemp)); locations.add(location); } @@ -272,11 +275,49 @@ public class ServerService { server.setSeq(SnowFlakeUtils.getId()); addOver(server, "", locations); } + // 删除临时文件 FileUtil.del(initNginxPath); } - + + private String getParamJsonFromLocationBlock(NgxBlock locationBlock){ + + List proxyConfigList = Lists.newArrayList("proxy_http_version", "proxy_redirect", + "proxy_set_header", "proxy_cache", "proxy_cache_valid", "proxy_cache_key", "proxy_connect_timeout", + "proxy_read_timeout", "proxy_send_timeout", "proxy_buffer_size", "proxy_buffers", + "proxy_busy_buffers_size", "proxy_cookie_path","proxy_intercept_errors","proxy_request_buffering", + "proxy_buffering", + "proxy_ignore_client_abort","expires","add_header","client_max_body_size" + ); + + Collection entries = locationBlock.getEntries(); + List paramsTemp; + JSONObject paramJsonTemp = null; + JSONArray paramJsonArray = new JSONArray(); + NgxParam ngxParamTemp; + for (String proxyConfig : proxyConfigList) { + paramsTemp = locationBlock.findAll(NgxParam.class,proxyConfig); + if (paramsTemp != null && !paramsTemp.isEmpty()){ + + for (NgxEntry paramEntry : paramsTemp) { + ngxParamTemp = (NgxParam) paramEntry; + ngxParamTemp.getName(); + paramJsonTemp = new JSONObject(); + paramJsonTemp.put("name",ngxParamTemp.getName()); + paramJsonTemp.put("value",ngxParamTemp.getValue()); + paramJsonArray.add(paramJsonTemp); + } + } + + } + if (!paramJsonArray.isEmpty()){ + return paramJsonArray.toString(); + }else { + return null; + } + + } /** * 重新创建配置文件,删除影响解析的行(比如#号开头,但是此行没有其他内容) * -- Gitee From 93614263860ce9457af6e38fe0349827a34381ea Mon Sep 17 00:00:00 2001 From: 819574156 Date: Tue, 22 Oct 2024 17:53:48 +0800 Subject: [PATCH 2/2] =?UTF-8?q?getParamJsonFromLocationBlock=20=E5=A4=84?= =?UTF-8?q?=E7=90=86=E4=BA=86location=E4=B8=AD=E5=B8=B8=E8=A7=81=E7=9A=84h?= =?UTF-8?q?ttp=E8=AE=BE=E7=BD=AE=E5=8F=82=E6=95=B0=20=E8=AE=BE=E7=BD=AE?= =?UTF-8?q?=E6=98=AF=E5=90=A6=E6=90=BA=E5=B8=A6Host=E5=8F=82=E6=95=B0=200?= =?UTF-8?q?=E5=90=A6=201=E6=98=AF(=E9=BB=98=E8=AE=A4)=20=E9=BB=98=E8=AE=A4?= =?UTF-8?q?=E4=B8=BA=E4=B8=8D=E6=90=BA=E5=B8=A6=E4=BA=86=20=E5=8A=A0?= =?UTF-8?q?=E4=BA=86ali=E7=9A=84json=E5=8C=85?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 取消了ali的json的引用 手动设置了header在导入的时候为0 --- pom.xml | 6 ------ src/main/java/com/cym/model/Location.java | 2 +- src/main/java/com/cym/service/ServerService.java | 4 +++- 3 files changed, 4 insertions(+), 8 deletions(-) diff --git a/pom.xml b/pom.xml index 69ef4f78..f7025c3a 100644 --- a/pom.xml +++ b/pom.xml @@ -30,7 +30,6 @@ 2.13.1 3.0 0.5.11 - 2.0.47 @@ -135,11 +134,6 @@ expiringmap ${expiringmap.version} - - com.alibaba - fastjson - ${fastjson.version} - diff --git a/src/main/java/com/cym/model/Location.java b/src/main/java/com/cym/model/Location.java index 68454aad..ad567ad9 100644 --- a/src/main/java/com/cym/model/Location.java +++ b/src/main/java/com/cym/model/Location.java @@ -76,7 +76,7 @@ public class Location extends BaseModel { /** * 是否携带Host参数 0否 1是(默认) */ - @InitValue("0") + @InitValue("1") Integer header; /** * Host参数类型 $host(默认) $http_host $host:$proxy_port $host:$server_port diff --git a/src/main/java/com/cym/service/ServerService.java b/src/main/java/com/cym/service/ServerService.java index 83d68e15..3827ef4f 100644 --- a/src/main/java/com/cym/service/ServerService.java +++ b/src/main/java/com/cym/service/ServerService.java @@ -4,7 +4,8 @@ import java.io.IOException; import java.util.*; import cn.hutool.json.JSONArray; -import com.alibaba.fastjson.JSONObject; +//import com.alibaba.fastjson.JSONObject; +import cn.hutool.json.JSONObject; import com.beust.jcommander.internal.Lists; import org.noear.solon.annotation.Component; import org.noear.solon.annotation.Inject; @@ -268,6 +269,7 @@ public class ServerService { location.setType(1); } location.setLocationParamJson(getParamJsonFromLocationBlock(locationBlockTemp)); + location.setHeader(0); locations.add(location); } -- Gitee