Skip to content

Commit a45a4f8

Browse files
author
jie.xiong
committed
http端口监听支持范围,default值改成default_server
1 parent 50a92f4 commit a45a4f8

1 file changed

Lines changed: 66 additions & 39 deletions

File tree

src/main/java/com/cym/service/ConfService.java

Lines changed: 66 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -414,6 +414,67 @@ public NgxBlock buildBlockUpstream(Upstream upstream) {
414414
return ngxBlockServer;
415415
}
416416

417+
public static Boolean processListenPort(Server server, NgxBlock ngxBlockServer, Boolean isIpv6) {
418+
if (isIpv6 && server.getIpv6() != 1){
419+
return false;
420+
}
421+
List<Integer> numbers = new ArrayList<>();
422+
423+
// 使用逗号分割字符串
424+
String[] partsByComma = server.getListen().split(",");
425+
426+
for (String part : partsByComma) {
427+
String[] range = part.split("-");
428+
if (range.length == 2) {
429+
// 处理为范围的情况
430+
int start = Integer.parseInt(range[0]);
431+
int end = Integer.parseInt(range[1]);
432+
433+
if (start <= end) {
434+
for (int i = start; i <= end; i++) {
435+
numbers.add(i);
436+
}
437+
} else {
438+
for (int i = start; i >= end; i--) {
439+
numbers.add(i);
440+
}
441+
}
442+
} else {
443+
// 处理单个数字的情况
444+
int num = Integer.parseInt(part);
445+
numbers.add(num);
446+
}
447+
}
448+
449+
String listenKey = "listen ";
450+
if (isIpv6){
451+
listenKey = "listen [::]:";
452+
}
453+
454+
String value = "";
455+
for (Integer port : numbers) {
456+
NgxParam ngxParam = new NgxParam();
457+
value = listenKey + port;
458+
if (server.getDef() == 1) {
459+
value += " default_server";
460+
}
461+
if (server.getProxyProtocol() == 1) {
462+
value += " proxy_protocol";
463+
}
464+
465+
if (server.getSsl() == 1) {
466+
value += " ssl";
467+
if (server.getHttp2() == 1) { // http2旧版写法
468+
value += " http2";
469+
}
470+
}
471+
ngxParam.addValue(value);
472+
ngxBlockServer.addEntry(ngxParam);
473+
}
474+
return true;
475+
476+
}
477+
417478
public NgxBlock bulidBlockServer(Server server, ConfExt confExt) {
418479
NgxParam ngxParam = null;
419480

@@ -438,44 +499,10 @@ public NgxBlock bulidBlockServer(Server server, ConfExt confExt) {
438499
}
439500

440501
// 监听端口
441-
ngxParam = new NgxParam();
442-
String value = "listen " + server.getListen();
443-
if (server.getDef() == 1) {
444-
value += " default";
445-
}
446-
if (server.getProxyProtocol() == 1) {
447-
value += " proxy_protocol";
448-
}
449-
450-
if (server.getSsl() == 1) {
451-
value += " ssl";
452-
if (server.getHttp2() == 1) { // http2旧版写法
453-
value += " http2";
454-
}
455-
}
456-
ngxParam.addValue(value);
457-
ngxBlockServer.addEntry(ngxParam);
458-
502+
processListenPort(server, ngxBlockServer, false);
459503
// 监控ipv6
460-
if (server.getIpv6() == 1) {
461-
ngxParam = new NgxParam();
462-
value = "listen [::]:" + replaceIp(server.getListen());
463-
if (server.getDef() == 1) {
464-
value += " default";
465-
}
466-
if (server.getProxyProtocol() == 1) {
467-
value += " proxy_protocol";
468-
}
504+
processListenPort(server, ngxBlockServer, true);
469505

470-
if (server.getSsl() == 1) {
471-
value += " ssl";
472-
if (server.getHttp2() == 1) { // http2旧版写法
473-
value += " http2";
474-
}
475-
}
476-
ngxParam.addValue(value);
477-
ngxBlockServer.addEntry(ngxParam);
478-
}
479506

480507
if (server.getSsl() == 1 && server.getHttp2() == 2) { // http2新版写法
481508
ngxParam = new NgxParam();
@@ -718,7 +745,7 @@ public NgxBlock bulidBlockServer(Server server, ConfExt confExt) {
718745

719746
/**
720747
* 配置ssl
721-
*
748+
*
722749
* @param server
723750
* @param ngxBlockServer
724751
*/
@@ -776,7 +803,7 @@ private void setServerSsl(Server server, NgxBlock ngxBlockServer) {
776803

777804
/**
778805
* 替换掉listen中的ip
779-
*
806+
*
780807
* @param listen
781808
* @return
782809
*/
@@ -791,7 +818,7 @@ private String replaceIp(String listen) {
791818

792819
/**
793820
* include防止重复
794-
*
821+
*
795822
* @param ngxBlockHttp
796823
* @param ngxParam
797824
* @return

0 commit comments

Comments
 (0)