diff --git a/boot/build.gradle.kts b/boot/build.gradle.kts index 0ec08078..f7d1f537 100644 --- a/boot/build.gradle.kts +++ b/boot/build.gradle.kts @@ -1,6 +1,6 @@ plugins { id("java") - id("org.springframework.boot") version "3.5.7" + id("org.springframework.boot") version "3.5.8" id("io.spring.dependency-management") version "1.1.7" } @@ -21,6 +21,8 @@ configurations { } } +extra["byte-buddy.version"] = libs.versions.byte.buddy.get() + dependencies { implementation(project(":generator")) { exclude(group = "commons-logging", module = "commons-logging") diff --git a/build-logic/build.gradle.kts b/build-logic/build.gradle.kts index a431f70e..e96e0a4d 100644 --- a/build-logic/build.gradle.kts +++ b/build-logic/build.gradle.kts @@ -7,5 +7,5 @@ repositories { } dependencies { - implementation("com.vanniktech:gradle-maven-publish-plugin:0.34.0") + implementation("com.vanniktech:gradle-maven-publish-plugin:0.35.0") } \ No newline at end of file diff --git a/build-logic/src/main/kotlin/maven-publish-convention.gradle.kts b/build-logic/src/main/kotlin/maven-publish-convention.gradle.kts index 211a68ed..9a9ffa52 100644 --- a/build-logic/src/main/kotlin/maven-publish-convention.gradle.kts +++ b/build-logic/src/main/kotlin/maven-publish-convention.gradle.kts @@ -3,7 +3,7 @@ plugins { } mavenPublishing { - publishToMavenCentral(true) + publishToMavenCentral() signAllPublications() coordinates( "io.github.reajason", diff --git a/build.gradle.kts b/build.gradle.kts index 36c01c87..a407da35 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,7 +9,7 @@ idea { } } -version = "2.4.0" +version = "2.4.1-SNAPSHOT" tasks.register("publishAllToMavenCentral") { dependsOn(":memshell-party-common:publishToMavenCentral") diff --git a/generator/build.gradle.kts b/generator/build.gradle.kts index 97bcf358..5b948521 100644 --- a/generator/build.gradle.kts +++ b/generator/build.gradle.kts @@ -1,5 +1,5 @@ plugins { - id("java") + id("java-library") alias(libs.plugins.lombok) id("maven-publish-convention") } @@ -29,7 +29,7 @@ tasks.test { dependencies { implementation(project(":memshell-party-common")) implementation(project(":packer")) - implementation(libs.byte.buddy) + api(libs.byte.buddy) implementation(libs.asm.commons) implementation(libs.javax.websocket.api) implementation(libs.javax.servlet.api) diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/config/CommandConfig.java b/generator/src/main/java/com/reajason/javaweb/memshell/config/CommandConfig.java index 9018164b..bbcbda2d 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/config/CommandConfig.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/config/CommandConfig.java @@ -35,7 +35,7 @@ public class CommandConfig extends ShellToolConfig { private ImplementationClass implementationClass = ImplementationClass.RuntimeExec; /** - * 命令执行模板,例如 sh -c "{command}" 2>&1,使用 {command} 作为占位符 + * 命令执行模板,使用 {command} 作为占位符 */ private String template; diff --git a/generator/src/main/java/com/reajason/javaweb/memshell/injector/apusic/ApusicFilterInjector.java b/generator/src/main/java/com/reajason/javaweb/memshell/injector/apusic/ApusicFilterInjector.java index 416c63ec..0dc74a7e 100644 --- a/generator/src/main/java/com/reajason/javaweb/memshell/injector/apusic/ApusicFilterInjector.java +++ b/generator/src/main/java/com/reajason/javaweb/memshell/injector/apusic/ApusicFilterInjector.java @@ -80,7 +80,7 @@ public class ApusicFilterInjector { /** * context: com.apusic.web.container.WebContainer - * context -> webapp: com.apusic.deploy.runtime.WebModule + * context - webapp: com.apusic.deploy.runtime.WebModule * /usr/local/ass/lib/apusic.jar */ public Set getContext() throws Exception { diff --git a/generator/src/main/java/com/reajason/javaweb/probe/config/ResponseBodyConfig.java b/generator/src/main/java/com/reajason/javaweb/probe/config/ResponseBodyConfig.java index 155c61fc..2a48a20d 100644 --- a/generator/src/main/java/com/reajason/javaweb/probe/config/ResponseBodyConfig.java +++ b/generator/src/main/java/com/reajason/javaweb/probe/config/ResponseBodyConfig.java @@ -29,7 +29,7 @@ public class ResponseBodyConfig extends ProbeContentConfig { private String base64Bytes; /** - * 命令执行模板,例如 sh -c "{command}" 2>&1,使用 {command} 作为占位符 + * 命令执行模板,使用 {command} 作为占位符 */ private String commandTemplate; diff --git a/generator/src/main/java/com/reajason/javaweb/probe/payload/ServerProbe.java b/generator/src/main/java/com/reajason/javaweb/probe/payload/ServerProbe.java index 47731f38..2c94aa3a 100644 --- a/generator/src/main/java/com/reajason/javaweb/probe/payload/ServerProbe.java +++ b/generator/src/main/java/com/reajason/javaweb/probe/payload/ServerProbe.java @@ -9,7 +9,6 @@ import java.util.Set; /** * HTTP 服务类型识别,主要识别 Servlet 容器实现,例如 WildFly 识别为 Undertow,Payara 识别为 GlassFish * 很多国产中间件都是基于 GlassFish 改的,都会识别为 GlassFish - *
* 额外需要注意: * 1. 不会识别 SpringWebMVC Struct2 这种框架,只识别其提供 HTTP 服务的 Servlet 容器类型 * 2. 识别的顺序很重要,部分类型的识别单独拿出来是不准确的,没有测试的情况下,不要以下的 if 判断顺序 diff --git a/gradle/libs.versions.toml b/gradle/libs.versions.toml index 879591a9..6d5dacd5 100644 --- a/gradle/libs.versions.toml +++ b/gradle/libs.versions.toml @@ -10,12 +10,12 @@ reactor-netty = "1.1.25" jackson = "2.19.0" jetbrains-annotations = "26.0.2" -byte-buddy = "1.18.1" +byte-buddy = "1.18.2" commons-io = "2.21.0" -commons-lang3 = "3.19.0" +commons-lang3 = "3.20.0" commons-codec = "1.20.0" -logback = "1.5.21" -okhttp3 = "5.3.0" +logback = "1.5.22" +okhttp3 = "5.3.2" fastjson2 = "2.0.60" java-websocket = "1.6.0" diff --git a/memshell-party-common/src/main/java/com/reajason/javaweb/buddy/LogRemoveMethodVisitor.java b/memshell-party-common/src/main/java/com/reajason/javaweb/buddy/LogRemoveMethodVisitor.java index b07bff11..b5f18bd0 100644 --- a/memshell-party-common/src/main/java/com/reajason/javaweb/buddy/LogRemoveMethodVisitor.java +++ b/memshell-party-common/src/main/java/com/reajason/javaweb/buddy/LogRemoveMethodVisitor.java @@ -18,7 +18,6 @@ import static net.bytebuddy.jar.asm.Opcodes.POP; /** * Debug 信息打印移除器 * 目前仅支持移除以下几种 - *
* 1. System.out.println() - (printf 还不支持) * 2. e.printStackTrace() * 3. Logger.info (java.util) diff --git a/packer/src/main/java/com/reajason/javaweb/packer/AggregatePacker.java b/packer/src/main/java/com/reajason/javaweb/packer/AggregatePacker.java index 0c3be7d7..0bba0a07 100644 --- a/packer/src/main/java/com/reajason/javaweb/packer/AggregatePacker.java +++ b/packer/src/main/java/com/reajason/javaweb/packer/AggregatePacker.java @@ -16,7 +16,7 @@ public interface AggregatePacker extends Packer { * 聚合打包当前所有分类下的 payload * * @param config 生成结果 - * @return key -> 打包名称,value -> 打包 payload + * @return key - 打包名称,value - 打包 payload */ default Map packAll(ClassPackerConfig config) { return Packers.getPackersWithParent(this.getClass()).stream().collect(Collectors.toMap( diff --git a/packer/src/main/java/com/reajason/javaweb/packer/spel/SpELSpringGzipPacker.java b/packer/src/main/java/com/reajason/javaweb/packer/spel/SpELSpringGzipPacker.java index 18015c1b..3f5257ce 100644 --- a/packer/src/main/java/com/reajason/javaweb/packer/spel/SpELSpringGzipPacker.java +++ b/packer/src/main/java/com/reajason/javaweb/packer/spel/SpELSpringGzipPacker.java @@ -8,7 +8,7 @@ import com.reajason.javaweb.packer.Packers; /** * * @since 5.2.24,SpEL 限制了长度为 10000,常规的 Base64 编码已经不适用,需要进一步使用 GZIP 压缩 - * InternalSpelExpressionParser.java + * https://github.com/spring-projects/spring-framework/blob/2ed1b6e6dda48ff0c74b67b39cba65676b5397b6/spring-expression/src/main/java/org/springframework/expression/spel/standard/InternalSpelExpressionParser.java#L100 * * @author ReaJason * @since 2024/12/13 diff --git a/web/content/docs/changelog.mdx b/web/content/docs/changelog.mdx index 6378ef2a..32b6651c 100644 --- a/web/content/docs/changelog.mdx +++ b/web/content/docs/changelog.mdx @@ -8,6 +8,20 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +## [v2.4.1]() - Developing + +### Fixed + +1. 修复 Suo5v2、Godzilla、Command Listener 等无法中断请求的场景下未 close 响应流导致连接失败 +2. 修复非调试模式下,throwable.printStackTrace 未被正确移除 +3. 修复 responseBody 回显马如果业务优先触发 getOutputStream 或 getWriter 导致回显失败 + +### Changed + +1. generator 模块去除 bcel 依赖,简化 jackson 依赖 +2. UI 添加 tooltip 简易描述方便使用,并优化部分布局细节 +3. 依赖更新 + ## [v2.4.0](https://github.com/ReaJason/MemShellParty/releases/tag/v2.4.0) - 2025-12-10 ### Added