Skip to content

Commit 178b899

Browse files
authored
Merge pull request #178 from diaodeng/diaodeng
http端口监听支持范围,default值改成default_server
2 parents 50a92f4 + 714bbe1 commit 178b899

1 file changed

Lines changed: 68 additions & 39 deletions

File tree

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

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

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

@@ -438,44 +501,10 @@ public NgxBlock bulidBlockServer(Server server, ConfExt confExt) {
438501
}
439502

440503
// 监听端口
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-
504+
processListenPort(server, ngxBlockServer, false);
459505
// 监控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-
}
506+
processListenPort(server, ngxBlockServer, true);
469507

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-
}
479508

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

719748
/**
720749
* 配置ssl
721-
*
750+
*
722751
* @param server
723752
* @param ngxBlockServer
724753
*/
@@ -776,7 +805,7 @@ private void setServerSsl(Server server, NgxBlock ngxBlockServer) {
776805

777806
/**
778807
* 替换掉listen中的ip
779-
*
808+
*
780809
* @param listen
781810
* @return
782811
*/
@@ -791,7 +820,7 @@ private String replaceIp(String listen) {
791820

792821
/**
793822
* include防止重复
794-
*
823+
*
795824
* @param ngxBlockHttp
796825
* @param ngxParam
797826
* @return

0 commit comments

Comments
 (0)