Skip to content

Commit 29ea479

Browse files
committed
feat: show urlPattern option when needed
1 parent 1614899 commit 29ea479

File tree

6 files changed

+30
-43
lines changed

6 files changed

+30
-43
lines changed

memshell-java8/src/main/java/com/reajason/javaweb/memshell/springwebflux/injector/SpringWebFluxWebFilterInjector.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -25,10 +25,6 @@ public class SpringWebFluxWebFilterInjector {
2525
new SpringWebFluxWebFilterInjector();
2626
}
2727

28-
public String getUrlPattern() {
29-
return "{{urlPattern}}";
30-
}
31-
3228
public String getClassName() {
3329
return "{{className}}";
3430
}

memshell-java8/src/main/java/com/reajason/javaweb/memshell/springwebmvc/injector/SpringWebMvcInterceptorInjector.java

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -20,10 +20,6 @@ public class SpringWebMvcInterceptorInjector {
2020
new SpringWebMvcInterceptorInjector();
2121
}
2222

23-
public String getUrlPattern() {
24-
return "{{urlPattern}}";
25-
}
26-
2723
public String getClassName() {
2824
return "{{className}}";
2925
}

web/src/components/results/basic-info.tsx

Lines changed: 8 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { shouldHidden } from "@/lib/utils";
12
import {
23
AntSwordShellToolConfig,
34
BehinderShellToolConfig,
@@ -33,11 +34,13 @@ export function BasicInfo({ generateResult }: Readonly<{ generateResult?: Genera
3334
<CopyableField label={t("mainConfig.server")} text={generateResult?.shellConfig.server} />
3435
<CopyableField label={t("mainConfig.shellTool")} text={generateResult?.shellConfig.shellTool} />
3536
<CopyableField label={t("mainConfig.shellMountType")} text={generateResult?.shellConfig.shellType} />
36-
<CopyableField
37-
label={t("mainConfig.urlPattern")}
38-
text={generateResult?.injectorConfig.urlPattern}
39-
value={generateResult?.injectorConfig.urlPattern}
40-
/>
37+
{!shouldHidden(generateResult?.shellConfig?.shellType) && (
38+
<CopyableField
39+
label={t("mainConfig.urlPattern")}
40+
text={generateResult?.injectorConfig.urlPattern}
41+
value={generateResult?.injectorConfig.urlPattern}
42+
/>
43+
)}
4144
</div>
4245
{generateResult?.shellConfig.shellTool !== ShellToolType.Custom && <Separator className="my-2" />}
4346
<div className="grid grid-cols-1 md:grid-cols-2 gap-2">
@@ -72,7 +75,6 @@ export function BasicInfo({ generateResult }: Readonly<{ generateResult?: Genera
7275
text={(generateResult?.shellToolConfig as GodzillaShellToolConfig).key}
7376
value={(generateResult?.shellToolConfig as GodzillaShellToolConfig).key}
7477
/>
75-
<CopyableField label={t("shellToolConfig.godzillaPayload")} text="JavaDynamicPayload" />
7678
<CopyableField label={t("shellToolConfig.godzillaEncryptor")} text="JAVA_AES_BASE64" />
7779
<CopyableField
7880
label={t("shellToolConfig.godzillaHeader")}

web/src/components/tips/url-pattern-tip.tsx

Lines changed: 0 additions & 21 deletions
This file was deleted.

web/src/components/tools/urlpattern-field.tsx

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,24 +1,24 @@
1-
import { UrlPatternTip } from "@/components/tips/url-pattern-tip.tsx";
2-
import { FormField, FormItem, FormLabel } from "@/components/ui/form.tsx";
1+
import { FormField, FormFieldItem, FormFieldLabel, FormMessage } from "@/components/ui/form.tsx";
32
import { Input } from "@/components/ui/input.tsx";
3+
import { shouldHidden } from "@/lib/utils";
44
import { FormSchema } from "@/types/schema.ts";
55
import { FormProvider, UseFormReturn } from "react-hook-form";
66
import { useTranslation } from "react-i18next";
77

88
export function UrlPatternFormField({ form }: Readonly<{ form: UseFormReturn<FormSchema> }>) {
99
const { t } = useTranslation();
10+
const shellType = form.watch("shellType");
1011
return (
1112
<FormProvider {...form}>
1213
<FormField
1314
control={form.control}
1415
name="urlPattern"
1516
render={({ field }) => (
16-
<FormItem className="gap-1">
17-
<FormLabel className="h-6 flex items-center gap-1">
18-
{t("mainConfig.urlPattern")} <UrlPatternTip />
19-
</FormLabel>
20-
<Input {...field} placeholder={t("placeholders.input")} className="h-8" />
21-
</FormItem>
17+
<FormFieldItem className={shouldHidden(shellType) ? "hidden" : "grid"}>
18+
<FormFieldLabel>{t("mainConfig.urlPattern")}</FormFieldLabel>
19+
<Input {...field} placeholder={t("placeholders.input")} />
20+
<FormMessage />
21+
</FormFieldItem>
2222
)}
2323
/>
2424
</FormProvider>

web/src/lib/utils.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,17 @@ export function formatBytes(bytes: number) {
4747
const kbValue = Number.parseFloat((bytes / k ** 1).toFixed(1));
4848
return `${kbValue} ${sizes[1]}`;
4949
}
50+
51+
export function shouldHidden(shellType: string | undefined) {
52+
if (shellType === undefined) {
53+
return false;
54+
}
55+
return (
56+
shellType.endsWith("Listener") ||
57+
shellType.endsWith("Valve") ||
58+
shellType.startsWith("Agent") ||
59+
shellType.endsWith("Interceptor") ||
60+
shellType.endsWith("NettyHandler") ||
61+
shellType.endsWith("WebFilter")
62+
);
63+
}

0 commit comments

Comments
 (0)