From 9bfaf1c108e6aac57ee7ca54e009729c5365e10c Mon Sep 17 00:00:00 2001 From: thc202 Date: Thu, 23 Jul 2026 12:14:54 +0100 Subject: [PATCH] Remove script types httpsender/proxy/targeted The script types will be provided by the scripts add-on. Part of #8027. Signed-off-by: thc202 --- .../zap/extension/script/ExtensionScript.java | 60 +++++++----------- .../extension/script/HttpSenderScript.java | 3 + .../script/HttpSenderScriptHelper.java | 4 ++ .../script/HttpSenderScriptListener.java | 5 ++ .../extension/script/ProxyListenerScript.java | 5 ++ .../zap/extension/script/ProxyScript.java | 2 + .../zap/extension/script/TargetedScript.java | 2 + .../zaproxy/zap/resources/Messages.properties | 6 -- .../resource/icon/16/script-httpsender.png | Bin 737 -> 0 bytes .../resource/icon/16/script-proxy.png | Bin 596 -> 0 bytes .../resource/icon/16/script-targeted.png | Bin 758 -> 0 bytes .../HttpSenderScriptListenerUnitTest.java | 1 + .../script/ProxyListenerScriptUnitTest.java | 1 + 13 files changed, 47 insertions(+), 42 deletions(-) delete mode 100644 zap/src/main/resources/resource/icon/16/script-httpsender.png delete mode 100644 zap/src/main/resources/resource/icon/16/script-proxy.png delete mode 100644 zap/src/main/resources/resource/icon/16/script-targeted.png diff --git a/zap/src/main/java/org/zaproxy/zap/extension/script/ExtensionScript.java b/zap/src/main/java/org/zaproxy/zap/extension/script/ExtensionScript.java index 7a35886c481..85bbdd55788 100644 --- a/zap/src/main/java/org/zaproxy/zap/extension/script/ExtensionScript.java +++ b/zap/src/main/java/org/zaproxy/zap/extension/script/ExtensionScript.java @@ -115,9 +115,24 @@ public class ExtensionScript extends ExtensionAdaptor implements CommandLineList protected static final String SCRIPT_NAME_ATT = "zap.script.name"; + /** + * @deprecated (2.18.0) Replaced by scripts add-on. + */ + @Deprecated(since = "2.18.0", forRemoval = true) public static final String TYPE_HTTP_SENDER = "httpsender"; + + /** + * @deprecated (2.18.0) Replaced by scripts add-on. + */ + @Deprecated(since = "2.18.0", forRemoval = true) public static final String TYPE_PROXY = "proxy"; + public static final String TYPE_STANDALONE = "standalone"; + + /** + * @deprecated (2.18.0) Replaced by scripts add-on. + */ + @Deprecated(since = "2.18.0", forRemoval = true) public static final String TYPE_TARGETED = "targeted"; private ScriptEngineManager mgr = new ScriptEngineManager(); @@ -127,8 +142,6 @@ public class ExtensionScript extends ExtensionAdaptor implements CommandLineList private ScriptTreeModel treeModel = null; private List engineWrappers = new ArrayList<>(); private Map typeMap = new ConcurrentHashMap<>(); - private ProxyListenerScript proxyListener = null; - private HttpSenderScriptListener httpSenderScriptListener; private List listeners = new ArrayList<>(); private MultipleWriters writers = new MultipleWriters(); @@ -189,12 +202,6 @@ public String getUIName() { public void hook(ExtensionHook extensionHook) { super.hook(extensionHook); - this.registerScriptType( - new ScriptType( - TYPE_PROXY, - "script.type.proxy", - createIcon("/resource/icon/16/script-proxy.png"), - true)); this.registerScriptType( new ScriptType( TYPE_STANDALONE, @@ -202,23 +209,9 @@ public void hook(ExtensionHook extensionHook) { createIcon("/resource/icon/16/script-standalone.png"), false, new String[] {ScriptType.CAPABILITY_APPEND})); - this.registerScriptType( - new ScriptType( - TYPE_TARGETED, - "script.type.targeted", - createIcon("/resource/icon/16/script-targeted.png"), - false)); - this.registerScriptType( - new ScriptType( - TYPE_HTTP_SENDER, - "script.type.httpsender", - createIcon("/resource/icon/16/script-httpsender.png"), - true)); extensionHook.addSessionListener(new ClearScriptVarsOnSessionChange()); - extensionHook.addProxyListener(this.getProxyListener()); - extensionHook.addHttpSenderListener(getHttpSenderScriptListener()); extensionHook.addOptionsParamSet(getScriptParam()); extensionHook.addCommandLine(getCommandLineArguments()); @@ -251,20 +244,6 @@ private OptionsScriptPanel getOptionsScriptPanel() { return optionsScriptPanel; } - private ProxyListenerScript getProxyListener() { - if (this.proxyListener == null) { - this.proxyListener = new ProxyListenerScript(this); - } - return this.proxyListener; - } - - private HttpSenderScriptListener getHttpSenderScriptListener() { - if (this.httpSenderScriptListener == null) { - this.httpSenderScriptListener = new HttpSenderScriptListener(this); - } - return this.httpSenderScriptListener; - } - public List getScriptingEngines() { List engineNames = new ArrayList<>(); List engines = mgr.getEngineFactories(); @@ -1651,8 +1630,11 @@ public void handleScriptError(ScriptWrapper script, String error) { * @param script the script to invoke. * @param msg the HTTP message to process. * @since 2.2.0 + * @deprecated (2.18.0) Replaced by scripts add-on. * @see #getInterface(ScriptWrapper, Class) */ + @SuppressWarnings("removal") + @Deprecated(since = "2.18.0", forRemoval = true) public void invokeTargetedScript(ScriptWrapper script, HttpMessage msg) { validateScriptType(script, TYPE_TARGETED); @@ -1754,8 +1736,11 @@ private void handleUnspecifiedScriptError( * @param request {@code true} if processing the request, {@code false} otherwise. * @return {@code true} if the request should be forward to the server, {@code false} otherwise. * @since 2.2.0 + * @deprecated (2.18.0) Replaced by scripts add-on. * @see #getInterface(ScriptWrapper, Class) */ + @SuppressWarnings("removal") + @Deprecated(since = "2.18.0", forRemoval = true) public boolean invokeProxyScript(ScriptWrapper script, HttpMessage msg, boolean request) { validateScriptType(script, TYPE_PROXY); @@ -1800,8 +1785,11 @@ public boolean invokeProxyScript(ScriptWrapper script, HttpMessage msg, boolean * @param sender the sender of the given {@code HttpMessage}. * @param request {@code true} if processing the request, {@code false} otherwise. * @since 2.4.1 + * @deprecated (2.18.0) Replaced by scripts add-on. * @see #getInterface(ScriptWrapper, Class) */ + @SuppressWarnings("removal") + @Deprecated(since = "2.18.0", forRemoval = true) public void invokeSenderScript( ScriptWrapper script, HttpMessage msg, diff --git a/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScript.java b/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScript.java index 8350c105814..034db78cc1c 100644 --- a/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScript.java +++ b/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScript.java @@ -35,7 +35,10 @@ * following scripts/listeners may modify it. * * @since 2.4.1 + * @deprecated (2.18.0) Replaced by scripts add-on. */ +@SuppressWarnings("removal") +@Deprecated(since = "2.18.0", forRemoval = true) public interface HttpSenderScript { /** diff --git a/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScriptHelper.java b/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScriptHelper.java index 3a91f95b46a..98e168f333e 100644 --- a/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScriptHelper.java +++ b/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScriptHelper.java @@ -21,6 +21,10 @@ import org.parosproxy.paros.network.HttpSender; +/** + * @deprecated (2.18.0) Replaced by scripts add-on. + */ +@Deprecated(since = "2.18.0", forRemoval = true) public class HttpSenderScriptHelper { private HttpSender httpSender; diff --git a/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScriptListener.java b/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScriptListener.java index 4f49ae7fe37..d731533ca37 100644 --- a/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScriptListener.java +++ b/zap/src/main/java/org/zaproxy/zap/extension/script/HttpSenderScriptListener.java @@ -25,6 +25,11 @@ import org.zaproxy.zap.extension.script.ScriptsCache.Configuration; import org.zaproxy.zap.network.HttpSenderListener; +/** + * @deprecated (2.18.0) Replaced by scripts add-on. + */ +@SuppressWarnings("removal") +@Deprecated(since = "2.18.0", forRemoval = true) class HttpSenderScriptListener implements HttpSenderListener { private final ScriptsCache scriptsCache; diff --git a/zap/src/main/java/org/zaproxy/zap/extension/script/ProxyListenerScript.java b/zap/src/main/java/org/zaproxy/zap/extension/script/ProxyListenerScript.java index 04c48222711..7797ecde60f 100644 --- a/zap/src/main/java/org/zaproxy/zap/extension/script/ProxyListenerScript.java +++ b/zap/src/main/java/org/zaproxy/zap/extension/script/ProxyListenerScript.java @@ -26,6 +26,11 @@ import org.zaproxy.zap.extension.script.ScriptsCache.CachedScript; import org.zaproxy.zap.extension.script.ScriptsCache.Configuration; +/** + * @deprecated (2.18.0) Replaced by scripts add-on. + */ +@SuppressWarnings("removal") +@Deprecated(since = "2.18.0", forRemoval = true) public class ProxyListenerScript implements ProxyListener { // Should be the last one but one before the listener that saves the HttpMessage to the db diff --git a/zap/src/main/java/org/zaproxy/zap/extension/script/ProxyScript.java b/zap/src/main/java/org/zaproxy/zap/extension/script/ProxyScript.java index 02a99798b16..9f66cf45c2c 100644 --- a/zap/src/main/java/org/zaproxy/zap/extension/script/ProxyScript.java +++ b/zap/src/main/java/org/zaproxy/zap/extension/script/ProxyScript.java @@ -34,7 +34,9 @@ * modify it or drop it. * * @since 2.2.0 + * @deprecated (2.18.0) Replaced by scripts add-on. */ +@Deprecated(since = "2.18.0", forRemoval = true) public interface ProxyScript { /** diff --git a/zap/src/main/java/org/zaproxy/zap/extension/script/TargetedScript.java b/zap/src/main/java/org/zaproxy/zap/extension/script/TargetedScript.java index a5993f426cd..b304e3a6a6d 100644 --- a/zap/src/main/java/org/zaproxy/zap/extension/script/TargetedScript.java +++ b/zap/src/main/java/org/zaproxy/zap/extension/script/TargetedScript.java @@ -26,7 +26,9 @@ * A script that is executed on demand by the user for selected {@link HttpMessage HTTP message}(s). * * @since 2.2.0 + * @deprecated (2.18.0) Replaced by scripts add-on. */ +@Deprecated(since = "2.18.0", forRemoval = true) public interface TargetedScript { /** diff --git a/zap/src/main/resources/org/zaproxy/zap/resources/Messages.properties b/zap/src/main/resources/org/zaproxy/zap/resources/Messages.properties index 8c57504f68f..334a702f9dd 100644 --- a/zap/src/main/resources/org/zaproxy/zap/resources/Messages.properties +++ b/zap/src/main/resources/org/zaproxy/zap/resources/Messages.properties @@ -2503,19 +2503,13 @@ script.resource = Script: {0} script.tree.root = Scripting script.tree.scripts = Scripts script.tree.templates = Templates -script.type.httpsender = HTTP Sender -script.type.httpsender.desc = HTTP Sender scripts run against every request/response sent/received by ZAP.\nThis includes the proxied messages, messages sent during active scanner, fuzzer, ...\n\nYou must enable them before they will be used. script.type.inline = Inline script.type.library = Library -script.type.proxy = Proxy -script.type.proxy.desc = Proxy scripts run against every request and response proxied through ZAP.\n\nYou must enable them before they will be used. script.type.sequence = Sequence script.type.sitemodifier = Site Modifier script.type.sitemodifier.desc = Site Modifier scripts can change the structure of the application as understood by ZAP by changing the Sites Tree as new requests and responses are added.\n\n script.type.standalone = Stand Alone script.type.standalone.desc = Stand Alone scripts are self contained scripts that can only be run manually.\n\nYou run them using the 'Run' button in the above toolbar. -script.type.targeted = Targeted -script.type.targeted.desc = Targeted scripts are scripts that act on a specified URL or set of URLs.\n\nYou typically invoke them by right-clicking on a node in the Sites tree or on a record in a list of responses and selecting 'Run with Script'. search.api.desc = search.api.other.harByHeaderRegex = Returns the HTTP messages, in HAR format, that match the given regular expression in the header(s) optionally filtered by URL and paginated with 'start' position and 'count' of messages. diff --git a/zap/src/main/resources/resource/icon/16/script-httpsender.png b/zap/src/main/resources/resource/icon/16/script-httpsender.png deleted file mode 100644 index 82848ca2a417f3245526c07328f255a73817d7b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 737 zcmV<70v`Q|P)nE7Y#a;cJUS(6nIcb z$n+Q$7MXz&6xf>B9(097Qah=rt0=L4tn2#je011ctSo$Bm|xg1(wE<6PR@HYkHbb4vfIs!vrqG#~nFe`rqWwm})p z*aAo?1EqNe31QO^YUEOPITdd!P)gD7>Zfz;B}#+RP}4C?X`X?UGGJ~4Fd2=|I^BYI zpO=z?;{XUDn4g~~JQwCl(NzF)a&k~Q<@pWJG4g~NdxoWvCE~F-1{o-)BsVvg3V$V1 zX@nMJXJ^wouny3d?m<)Uvd(YJ*Y`g@)C;RCI&Nznx3%^+_;vT_dmXp6UQHzRolvcA z>Rr}bzH|jb2=Y9BZk@i1)8XVxWPr!x%}mtK0<>6IyRGXy&V-rf9+fl24+ zbAB9{MJdJQuJb6R$S=s}(BXp|jg=sxI{=c&Bo2oQ3G^(yqR>-Fad9!GnYt2kUTg7q^EMsZ)2iWYj(z54tT!z~^?7<#n>hW8$$K0BqQj*oI&wo@6bNB**8X^3;Bs zdnRbPe#8JUrIdjOl|}4Ex1WAX2PpjnDJ4_OyYeHY{0opFrR*CRTS({pf1|Ga7z1Mq zNGa0^GytmG!$FT_27F$NtV|1^$HMDM^*6pLSlh5!S+`k>+icjPucM|c{f&PDknnDk TuZ;~h00000NkvXXu0mjfIdw-e diff --git a/zap/src/main/resources/resource/icon/16/script-proxy.png b/zap/src/main/resources/resource/icon/16/script-proxy.png deleted file mode 100644 index 2b839687bceaae1e98387a36b7ce9c957e373227..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 596 zcmV-a0;~OrP)xQbK!8{d(Zdqz2|<9@x1DDGYJ5T z>y+k9?63t93&Ix6nZvtX1zi`~?lA8v%0R}{S_1)|eb%MaS;J19F_`64fBJT{<(C2? zg7!f~>_pr^`y3g!7S~C{4MfBqZ!ooZsj+kji^XCi&XEn4o3FX??)n54jYe6hbP^Kep*=&~F%QRO`uZ%dR=Xod}JkMi$bMwDn*Jw28bUJwR`wLVs#nZLszJl@he7Li9h@5y5$8j8LwHjX@{2JAc&!DvM=7&8WI?l?c7AJ!y zLF*U*eOGvNxr)>CNM7)GRoSMHKF7FfQ$*~?h4VAn_uh+d6P^(fOc9~^XC^)eO}FR7 za%E#@rX9F{?IM+p9Ymx&QlPcYy#LxNRlonXBO!}ZVT(x6B6MQ7$Gw4~-FI=iF72L6 i-&N&@g=7XmYt3K8AC=VR2z~wl0000(}1>IC52v#&1%oL?5E;2`F?!D(dx5b!@w8#U8m&4)r@Z;eeBbyJn)dv7i z7sws9NJVXEv>|H4VXJmmRj}>BmRFlqg#!#(T5G`M$vd6v?=VvR?FIm{zK%OPi@&&t zUR?#iY-=NY<_wXM5%McRD*q$MSt5cCOhhDgt}ToXz;ztlsTYJ}F`_3<5NdC)K|K#Q zzrgM7B#&?Q@#dRK?E=F5ou1?1O*|u(Ok&03aQ-~(0<4u4thaAzv0KmqhzPrY+Ci)F7HcBnam?Xijum2z&2IxZrcw&gpp;@~W`4rpzqS}vnXCA^LfjHM+i&CQh4Y0Bv|mF8xQrKNoh_Bp7Y z>SKLl18Z)M-xn_;N)gFsF$x8YLV-v&izxMvgWTAw<H#+5yQ zDI(7N$Dinc|L%KNPxJNB6e8m6HPBiQ&AtDT%YR-=HAZZXL~R-yY$Ath|9Hn$Y*joq ow>`FYJSv`Y?qBa40?=CX2O$@;OXdexT>t<807*qoM6N<$g8d{xs{jB1 diff --git a/zap/src/test/java/org/zaproxy/zap/extension/script/HttpSenderScriptListenerUnitTest.java b/zap/src/test/java/org/zaproxy/zap/extension/script/HttpSenderScriptListenerUnitTest.java index e9d61244bb1..17a80c5c690 100644 --- a/zap/src/test/java/org/zaproxy/zap/extension/script/HttpSenderScriptListenerUnitTest.java +++ b/zap/src/test/java/org/zaproxy/zap/extension/script/HttpSenderScriptListenerUnitTest.java @@ -45,6 +45,7 @@ import org.zaproxy.zap.extension.script.ScriptsCache.ScriptAction; /** Unit test for {@link HttpSenderScriptListener}. */ +@SuppressWarnings("removal") class HttpSenderScriptListenerUnitTest extends WithConfigsTest { private static final String SCRIPT_TYPE = ExtensionScript.TYPE_HTTP_SENDER; diff --git a/zap/src/test/java/org/zaproxy/zap/extension/script/ProxyListenerScriptUnitTest.java b/zap/src/test/java/org/zaproxy/zap/extension/script/ProxyListenerScriptUnitTest.java index e9963b8cec8..9cb1f0fb75e 100644 --- a/zap/src/test/java/org/zaproxy/zap/extension/script/ProxyListenerScriptUnitTest.java +++ b/zap/src/test/java/org/zaproxy/zap/extension/script/ProxyListenerScriptUnitTest.java @@ -48,6 +48,7 @@ import org.zaproxy.zap.extension.script.ScriptsCache.InterfaceErrorMessageProvider; /** Unit test for {@link ProxyListenerScript}. */ +@SuppressWarnings("removal") class ProxyListenerScriptUnitTest extends WithConfigsTest { private static final String SCRIPT_TYPE = ExtensionScript.TYPE_PROXY;