Skip to content

Commit 2e95841

Browse files
committed
refactor: simplify config build
1 parent 87eacf9 commit 2e95841

File tree

13 files changed

+248
-20
lines changed

13 files changed

+248
-20
lines changed

boot/src/main/java/com/reajason/javaweb/boot/controller/ConfigController.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,8 @@ public Map<String, List<String>> getServers() {
2626
Map<String, List<String>> servers = new LinkedHashMap<>();
2727
List<String> supportedServers = ServerFactory.getSupportedServers();
2828
for (String supportedServer : supportedServers) {
29-
Set<String> supportedShellTypes = ServerFactory.getServer(supportedServer).getShellInjectorMapping().getSupportedShellTypes();
29+
Set<String> supportedShellTypes = ServerFactory.getServer(supportedServer)
30+
.getShellInjectorMapping().getSupportedShellTypes();
3031
servers.put(supportedServer, supportedShellTypes.stream().toList());
3132
}
3233
return servers;
@@ -45,9 +46,6 @@ public List<String> getPackers() {
4546
List<String> supportedServers = ServerFactory.getSupportedServers();
4647
for (String supportedServer : supportedServers) {
4748
AbstractServer server = ServerFactory.getServer(supportedServer);
48-
if (server == null) {
49-
continue;
50-
}
5149
Map<String, Set<String>> map = new LinkedHashMap<>(16);
5250
for (String shellTool : server.getSupportedShellTools()) {
5351
Set<String> supportedShellTypes = server.getSupportedShellTypes(shellTool);

boot/src/main/java/com/reajason/javaweb/boot/dto/MemShellGenerateRequest.java

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -38,38 +38,38 @@ public ShellToolConfig parseShellToolConfig() {
3838
return switch (shellConfig.getShellTool()) {
3939
case Godzilla -> GodzillaConfig.builder()
4040
.shellClassName(shellToolConfig.getShellClassName())
41-
.pass(StringUtils.defaultIfBlank(shellToolConfig.getGodzillaPass(), CommonUtil.getRandomString(8)))
42-
.key(StringUtils.defaultIfBlank(shellToolConfig.getGodzillaKey(), CommonUtil.getRandomString(8)))
41+
.pass(shellToolConfig.getGodzillaPass())
42+
.key(shellToolConfig.getGodzillaKey())
4343
.headerName(shellToolConfig.getHeaderName())
44-
.headerValue(StringUtils.defaultIfBlank(shellToolConfig.getHeaderValue(), CommonUtil.getRandomString(8)))
44+
.headerValue(shellToolConfig.getHeaderValue())
4545
.build();
4646
case Behinder -> BehinderConfig.builder()
4747
.shellClassName(shellToolConfig.getShellClassName())
48-
.pass(StringUtils.defaultIfBlank(shellToolConfig.getBehinderPass(), CommonUtil.getRandomString(8)))
48+
.pass(shellToolConfig.getBehinderPass())
4949
.headerName(shellToolConfig.getHeaderName())
50-
.headerValue(StringUtils.defaultIfBlank(shellToolConfig.getHeaderValue(), CommonUtil.getRandomString(8)))
50+
.headerValue(shellToolConfig.getHeaderValue())
5151
.build();
5252
case Command -> CommandConfig.builder()
5353
.shellClassName(shellToolConfig.getShellClassName())
54-
.paramName(StringUtils.defaultIfBlank(shellToolConfig.getCommandParamName(), CommonUtil.getRandomString(8)))
54+
.paramName(shellToolConfig.getCommandParamName())
5555
.encryptor(CommandConfig.Encryptor.fromString(shellToolConfig.getEncryptor()))
5656
.implementationClass(CommandConfig.ImplementationClass.fromString(shellToolConfig.getImplementationClass()))
5757
.build();
5858
case Suo5 -> Suo5Config.builder()
5959
.shellClassName(shellToolConfig.getShellClassName())
6060
.headerName(shellToolConfig.getHeaderName())
61-
.headerValue(StringUtils.defaultIfBlank(shellToolConfig.getHeaderValue(), CommonUtil.getRandomString(8)))
61+
.headerValue(shellToolConfig.getHeaderValue())
6262
.build();
6363
case AntSword -> AntSwordConfig.builder()
6464
.shellClassName(shellToolConfig.getShellClassName())
65-
.pass(StringUtils.defaultIfBlank(shellToolConfig.getAntSwordPass(), CommonUtil.getRandomString(8)))
65+
.pass(shellToolConfig.getAntSwordPass())
6666
.headerName(shellToolConfig.getHeaderName())
67-
.headerValue(StringUtils.defaultIfBlank(shellToolConfig.getHeaderValue(), CommonUtil.getRandomString(8)))
67+
.headerValue(shellToolConfig.getHeaderValue())
6868
.build();
6969
case NeoreGeorg -> NeoreGeorgConfig.builder()
7070
.shellClassName(shellToolConfig.getShellClassName())
7171
.headerName(shellToolConfig.getHeaderName())
72-
.headerValue(StringUtils.defaultIfBlank(shellToolConfig.getHeaderValue(), CommonUtil.getRandomString(8)))
72+
.headerValue(shellToolConfig.getHeaderValue())
7373
.build();
7474
case Custom -> CustomConfig.builder()
7575
.shellClassBase64(shellToolConfig.getShellClassBase64())

generator/src/main/java/com/reajason/javaweb/memshell/config/AntSwordConfig.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import com.reajason.javaweb.utils.CommonUtil;
44
import lombok.*;
55
import lombok.experimental.SuperBuilder;
6+
import org.apache.commons.lang3.StringUtils;
67

78
/**
89
* @author ReaJason
910
* @since 2024/12/21
1011
*/
1112
@Getter
12-
@SuperBuilder
13+
@SuperBuilder(toBuilder = true)
1314
@NoArgsConstructor
1415
@AllArgsConstructor
1516
@ToString
@@ -20,4 +21,31 @@ public class AntSwordConfig extends ShellToolConfig {
2021
private String headerName = "User-Agent";
2122
@Builder.Default
2223
private String headerValue = CommonUtil.getRandomString(8);
24+
25+
public static abstract class AntSwordConfigBuilder<C extends AntSwordConfig, B extends AntSwordConfig.AntSwordConfigBuilder<C, B>>
26+
extends ShellToolConfig.ShellToolConfigBuilder<C, B> {
27+
public B pass(final String pass) {
28+
if (StringUtils.isNotBlank(pass)) {
29+
this.pass$value = pass;
30+
pass$set = true;
31+
}
32+
return self();
33+
}
34+
35+
public B headerName(final String headerName) {
36+
if (StringUtils.isNotBlank(headerName)) {
37+
this.headerName$value = headerName;
38+
headerName$set = true;
39+
}
40+
return self();
41+
}
42+
43+
public B headerValue(final String headerValue) {
44+
if (StringUtils.isNotBlank(headerValue)) {
45+
this.headerValue$value = headerValue;
46+
headerValue$set = true;
47+
}
48+
return self();
49+
}
50+
}
2351
}

generator/src/main/java/com/reajason/javaweb/memshell/config/BehinderConfig.java

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import com.reajason.javaweb.utils.CommonUtil;
44
import lombok.*;
55
import lombok.experimental.SuperBuilder;
6+
import org.apache.commons.lang3.StringUtils;
67

78
/**
89
* @author ReaJason
910
* @since 2024/12/21
1011
*/
1112
@Getter
12-
@SuperBuilder
13+
@SuperBuilder(toBuilder = true)
1314
@NoArgsConstructor
1415
@AllArgsConstructor
1516
@ToString
@@ -20,4 +21,31 @@ public class BehinderConfig extends ShellToolConfig {
2021
private String headerName = "User-Agent";
2122
@Builder.Default
2223
private String headerValue = CommonUtil.getRandomString(8);
24+
25+
public static abstract class BehinderConfigBuilder<C extends BehinderConfig, B extends BehinderConfig.BehinderConfigBuilder<C, B>>
26+
extends ShellToolConfig.ShellToolConfigBuilder<C, B> {
27+
public B pass(final String pass) {
28+
if (StringUtils.isNotBlank(pass)) {
29+
this.pass$value = pass;
30+
pass$set = true;
31+
}
32+
return self();
33+
}
34+
35+
public B headerName(final String headerName) {
36+
if (StringUtils.isNotBlank(headerName)) {
37+
this.headerName$value = headerName;
38+
headerName$set = true;
39+
}
40+
return self();
41+
}
42+
43+
public B headerValue(final String headerValue) {
44+
if (StringUtils.isNotBlank(headerValue)) {
45+
this.headerValue$value = headerValue;
46+
headerValue$set = true;
47+
}
48+
return self();
49+
}
50+
}
2351
}

generator/src/main/java/com/reajason/javaweb/memshell/config/CommandConfig.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import lombok.Getter;
66
import lombok.ToString;
77
import lombok.experimental.SuperBuilder;
8+
import org.apache.commons.lang3.StringUtils;
89

910
/**
1011
* @author ReaJason
@@ -23,6 +24,17 @@ public class CommandConfig extends ShellToolConfig {
2324
@Builder.Default
2425
private ImplementationClass implementationClass = ImplementationClass.RuntimeExec;
2526

27+
public static abstract class CommandConfigBuilder<C extends CommandConfig, B extends CommandConfig.CommandConfigBuilder<C, B>>
28+
extends ShellToolConfig.ShellToolConfigBuilder<C, B> {
29+
public B paramName(String paramName) {
30+
if (StringUtils.isNotBlank(paramName)) {
31+
paramName$value = paramName;
32+
paramName$set = true;
33+
}
34+
return self();
35+
}
36+
}
37+
2638

2739
public enum ImplementationClass {
2840
RuntimeExec, ForkAndExec;

generator/src/main/java/com/reajason/javaweb/memshell/config/GodzillaConfig.java

Lines changed: 37 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,14 @@
33
import com.reajason.javaweb.utils.CommonUtil;
44
import lombok.*;
55
import lombok.experimental.SuperBuilder;
6+
import org.apache.commons.lang3.StringUtils;
67

78
/**
89
* @author ReaJason
910
* @since 2024/11/24
1011
*/
1112
@Getter
12-
@SuperBuilder
13+
@SuperBuilder(toBuilder = true)
1314
@NoArgsConstructor
1415
@AllArgsConstructor
1516
@ToString
@@ -22,4 +23,39 @@ public class GodzillaConfig extends ShellToolConfig {
2223
private String headerName = "User-Agent";
2324
@Builder.Default
2425
private String headerValue = CommonUtil.getRandomString(8);
26+
27+
public static abstract class GodzillaConfigBuilder<C extends GodzillaConfig, B extends GodzillaConfigBuilder<C, B>>
28+
extends ShellToolConfig.ShellToolConfigBuilder<C, B> {
29+
public B pass(final String pass) {
30+
if (StringUtils.isNotBlank(pass)) {
31+
this.pass$value = pass;
32+
pass$set = true;
33+
}
34+
return self();
35+
}
36+
37+
public B key(final String key) {
38+
if (StringUtils.isNotBlank(key)) {
39+
this.key$value = key;
40+
key$set = true;
41+
}
42+
return self();
43+
}
44+
45+
public B headerName(final String headerName) {
46+
if (StringUtils.isNotBlank(headerName)) {
47+
this.headerName$value = headerName;
48+
headerName$set = true;
49+
}
50+
return self();
51+
}
52+
53+
public B headerValue(final String headerValue) {
54+
if (StringUtils.isNotBlank(headerValue)) {
55+
this.headerValue$value = headerValue;
56+
headerValue$set = true;
57+
}
58+
return self();
59+
}
60+
}
2561
}

generator/src/main/java/com/reajason/javaweb/memshell/config/InjectorConfig.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,7 @@ public class InjectorConfig {
3131
/**
3232
* 注入器类名
3333
*/
34-
@Builder.Default
35-
private String injectorClassName = CommonUtil.generateInjectorClassName();
34+
private String injectorClassName;
3635
/**
3736
* 注入访问的地址
3837
*/

generator/src/main/java/com/reajason/javaweb/memshell/config/NeoreGeorgConfig.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.reajason.javaweb.utils.CommonUtil;
44
import lombok.*;
55
import lombok.experimental.SuperBuilder;
6+
import org.apache.commons.lang3.StringUtils;
67

78
/**
89
* @author ReaJason
@@ -18,4 +19,24 @@ public class NeoreGeorgConfig extends ShellToolConfig {
1819
private String headerName = "Referer";
1920
@Builder.Default
2021
private String headerValue = CommonUtil.getRandomString(8);
22+
23+
public static abstract class NeoreGeorgConfigBuilder<C extends NeoreGeorgConfig, B extends NeoreGeorgConfig.NeoreGeorgConfigBuilder<C, B>>
24+
extends ShellToolConfig.ShellToolConfigBuilder<C, B> {
25+
26+
public B headerName(final String headerName) {
27+
if (StringUtils.isNotBlank(headerName)) {
28+
this.headerName$value = headerName;
29+
headerName$set = true;
30+
}
31+
return self();
32+
}
33+
34+
public B headerValue(final String headerValue) {
35+
if (StringUtils.isNotBlank(headerValue)) {
36+
this.headerValue$value = headerValue;
37+
headerValue$set = true;
38+
}
39+
return self();
40+
}
41+
}
2142
}

generator/src/main/java/com/reajason/javaweb/memshell/config/ShellToolConfig.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@
1010
* @since 2024/11/24
1111
*/
1212
@Data
13-
@SuperBuilder
13+
@SuperBuilder(toBuilder = true)
1414
@NoArgsConstructor
1515
@AllArgsConstructor
1616
public class ShellToolConfig {

generator/src/main/java/com/reajason/javaweb/memshell/config/Suo5Config.java

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
import com.reajason.javaweb.utils.CommonUtil;
44
import lombok.*;
55
import lombok.experimental.SuperBuilder;
6+
import org.apache.commons.lang3.StringUtils;
67

78
/**
89
* @author ReaJason
@@ -18,4 +19,24 @@ public class Suo5Config extends ShellToolConfig {
1819
private String headerName = "User-Agent";
1920
@Builder.Default
2021
private String headerValue = CommonUtil.getRandomString(8);
22+
23+
public static abstract class Suo5ConfigBuilder<C extends Suo5Config, B extends Suo5Config.Suo5ConfigBuilder<C, B>>
24+
extends ShellToolConfig.ShellToolConfigBuilder<C, B> {
25+
26+
public B headerName(final String headerName) {
27+
if (StringUtils.isNotBlank(headerName)) {
28+
this.headerName$value = headerName;
29+
headerName$set = true;
30+
}
31+
return self();
32+
}
33+
34+
public B headerValue(final String headerValue) {
35+
if (StringUtils.isNotBlank(headerValue)) {
36+
this.headerValue$value = headerValue;
37+
headerValue$set = true;
38+
}
39+
return self();
40+
}
41+
}
2142
}

0 commit comments

Comments
 (0)