Skip to content

Commit d4d4b92

Browse files
authored
Merge pull request #279 from ricekot/use-passed-variables
Update js scripts to use passed variables
2 parents b0d7c8c + e35c51b commit d4d4b92

23 files changed

+115
-65
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
1717

1818
### Changed
1919
- standalone/enableDebugLogging.js > Updated for more recent logging funtionality.
20+
- Update JS scripts to use passed singleton variables (control, model, view) if available (>= ZAP 2.12.0).
2021

2122
## [14] - 2021-11-01
2223
### Added

extender/Simple Reverse Proxy.js

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,10 @@
11
// An extender script that adds a simple reverse proxy.
22
// Requires a ZAP version greater than 2.7.0.
33

4+
var control, model
5+
if (!control) control = Java.type("org.parosproxy.paros.control.Control").getSingleton()
6+
if (!model) model = Java.type("org.parosproxy.paros.model.Model").getSingleton()
7+
48
// To where the requests are sent.
59
var remoteAddress = "example.com"
610
var remotePort = 80
@@ -10,12 +14,11 @@ var proxyAddress = "127.0.0.1"
1014
var proxyPort = 8081
1115

1216
var ProxyServer = Java.type("org.parosproxy.paros.core.proxy.ProxyServer")
13-
var Model = Java.type("org.parosproxy.paros.model.Model")
1417
var ProxyListener = Java.type("org.parosproxy.paros.core.proxy.ProxyListener")
1518
var ZapXmlConfiguration = Java.type("org.zaproxy.zap.utils.ZapXmlConfiguration")
1619
var URI = Java.type("org.apache.commons.httpclient.URI")
1720

18-
var extLoader = Java.type("org.parosproxy.paros.control.Control").getSingleton().getExtensionLoader()
21+
var extLoader = control.getExtensionLoader()
1922
var proxy
2023

2124
function install(helper) {
@@ -26,7 +29,7 @@ function install(helper) {
2629
proxyParam.setBehindNat(false);
2730
proxyParam.setRemoveUnsupportedEncodings(true);
2831

29-
proxy.setConnectionParam(Model.getSingleton().getOptionsParam().getConnectionParam());
32+
proxy.setConnectionParam(model.getOptionsParam().getConnectionParam());
3033
proxy.setEnableApi(false);
3134

3235
extLoader.addProxyServer(proxy)

httpfuzzerprocessor/add_msgs_sites_tree.js

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,10 @@
22
// with messages sent by the fuzzer (by default the fuzz result/messages
33
// are not shown in the Fuzzer tab).
44

5-
var session = org.parosproxy.paros.model.Model.getSingleton().getSession();
5+
var model;
6+
if (!model) model = Java.type("org.parosproxy.paros.model.Model").getSingleton();
7+
8+
var session = model.getSession();
69

710
function processMessage(utils, message) {}
811

httpsender/Alert on HTTP Response Code Errors.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,11 @@
22
// By default it will raise 'Info' level alerts for Client Errors (4xx) (apart from 404s) and 'Low' Level alerts for Server Errors (5xx)
33
// But it can be easily changed.
44

5+
var control, model
6+
if (!control) control = Java.type("org.parosproxy.paros.control.Control").getSingleton()
7+
if (!model) model = Java.type("org.parosproxy.paros.model.Model").getSingleton()
8+
59
var Pattern = Java.type("java.util.regex.Pattern")
6-
var model = Java.type("org.parosproxy.paros.model.Model").getSingleton()
710
pluginid = 100000 // https://github.com/zaproxy/zaproxy/blob/main/docs/scanners.md
811

912
function sendingRequest(msg, initiator, helper) {
@@ -15,7 +18,7 @@ function responseReceived(msg, initiator, helper) {
1518
// Not of interest.
1619
return
1720
}
18-
var extensionAlert = org.parosproxy.paros.control.Control.getSingleton().getExtensionLoader().getExtension(
21+
var extensionAlert = control.getExtensionLoader().getExtension(
1922
org.zaproxy.zap.extension.alert.ExtensionAlert.NAME)
2023
if (extensionAlert != null) {
2124
var code = msg.getResponseHeader().getStatusCode()
@@ -69,8 +72,7 @@ function responseReceived(msg, initiator, helper) {
6972
type = 15 // User - fallback
7073
break
7174
}
72-
ref = new org.parosproxy.paros.model.HistoryReference(
73-
org.parosproxy.paros.model.Model.getSingleton().getSession(), type, msg)
75+
ref = new org.parosproxy.paros.model.HistoryReference(model.getSession(), type, msg)
7476
}
7577
alert.setMessage(msg)
7678
alert.setUri(msg.getRequestHeader().getURI().toString())

httpsender/Alert on Unexpected Content Types.js

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,15 @@
22
// By default it will raise 'Low' level alerts for content types that are not expected to be returned by APIs.
33
// But it can be easily changed.
44

5+
var control, model
6+
if (!control) control = Java.type("org.parosproxy.paros.control.Control").getSingleton()
7+
if (!model) model = Java.type("org.parosproxy.paros.model.Model").getSingleton()
8+
59
var Pattern = Java.type("java.util.regex.Pattern")
6-
var model = Java.type("org.parosproxy.paros.model.Model").getSingleton()
710

811
var pluginid = 100001 // https://github.com/zaproxy/zaproxy/blob/main/docs/scanners.md
912

10-
var extensionAlert = org.parosproxy.paros.control.Control.getSingleton().getExtensionLoader().getExtension(
13+
var extensionAlert = control.getExtensionLoader().getExtension(
1114
org.zaproxy.zap.extension.alert.ExtensionAlert.NAME)
1215

1316
var expectedTypes = [
@@ -85,8 +88,7 @@ function responseReceived(msg, initiator, helper) {
8588
type = 15 // User - fallback
8689
break
8790
}
88-
ref = new org.parosproxy.paros.model.HistoryReference(
89-
org.parosproxy.paros.model.Model.getSingleton().getSession(), type, msg)
91+
ref = new org.parosproxy.paros.model.HistoryReference(model.getSession(), type, msg)
9092
}
9193
alert.setMessage(msg)
9294
alert.setUri(msg.getRequestHeader().getURI().toString())

standalone/Active scan rule list.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,10 @@
11
// This script gives details about all of the active scan rules installed
22

3-
extAscan = org.parosproxy.paros.control.Control.getSingleton().
4-
getExtensionLoader().getExtension(
5-
org.zaproxy.zap.extension.ascan.ExtensionActiveScan.NAME);
3+
var control;
4+
if (!control) control = Java.type("org.parosproxy.paros.control.Control").getSingleton();
5+
6+
extAscan = control.getExtensionLoader().getExtension(
7+
org.zaproxy.zap.extension.ascan.ExtensionActiveScan.NAME);
68

79
plugins = extAscan.getPolicyManager().getDefaultScanPolicy().getPluginFactory().getAllPlugin().toArray();
810

standalone/Juice shop authentication by form.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,15 +4,17 @@
44
// a user with a name of test@test.com and a password of test123
55
// You can change any of the variables to match your environment if needed.
66

7+
var control;
8+
if (!control) control = Java.type("org.parosproxy.paros.control.Control").getSingleton();
9+
710
var By = Java.type('org.openqa.selenium.By');
811
var Thread = Java.type('java.lang.Thread');
912
var juiceshop = 'http://localhost:3000/';
1013
var username = '[email protected]';
1114
var password = 'test123';
1215

13-
var extSel = org.parosproxy.paros.control.Control.getSingleton().
14-
getExtensionLoader().getExtension(
15-
org.zaproxy.zap.extension.selenium.ExtensionSelenium.class)
16+
var extSel = control.getExtensionLoader().getExtension(
17+
org.zaproxy.zap.extension.selenium.ExtensionSelenium.class)
1618

1719
var wd = extSel.getWebDriverProxyingViaZAP(1, "firefox");
1820
wd.get(juiceshop);

standalone/Juice shop authentication by google.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,15 +3,17 @@
33
// Juice Shop will need to be accessible via http://localhost:3000/ and you will need to change the
44
// username and password to match a valid Google account.
55

6+
var control
7+
if (!control) control = Java.type("org.parosproxy.paros.control.Control").getSingleton()
8+
69
var By = Java.type('org.openqa.selenium.By');
710
var Thread = Java.type('java.lang.Thread');
811
var juiceshop = 'http://localhost:3000/';
912
var username = '[email protected]'; // Change this to an account you own
1013
var password = 'nottherealpassword'; // Change this to the right password for your account
1114

12-
var extSel = org.parosproxy.paros.control.Control.getSingleton().
13-
getExtensionLoader().getExtension(
14-
org.zaproxy.zap.extension.selenium.ExtensionSelenium.class)
15+
var extSel = control.getExtensionLoader().getExtension(
16+
org.zaproxy.zap.extension.selenium.ExtensionSelenium.class)
1517

1618
var wd = extSel.getWebDriverProxyingViaZAP(1, "firefox");
1719
wd.get(juiceshop);

standalone/Loop through alerts.js

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,10 @@
22
//
33
// This is a standalone script which you can run from the Script Console
44

5-
extAlert = org.parosproxy.paros.control.Control.getSingleton().
6-
getExtensionLoader().getExtension(
5+
var control
6+
if (!control) control = Java.type("org.parosproxy.paros.control.Control").getSingleton()
7+
8+
extAlert = control.getExtensionLoader().getExtension(
79
org.zaproxy.zap.extension.alert.ExtensionAlert.NAME)
810
if (extAlert != null) {
911
var Alert = org.parosproxy.paros.core.scanner.Alert

standalone/Loop through history table.js

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,11 @@
33
// Standalone scripts have no template.
44
// They are only evaluated when you run them.
55

6-
extHist = org.parosproxy.paros.control.Control.getSingleton().
7-
getExtensionLoader().getExtension(
8-
org.parosproxy.paros.extension.history.ExtensionHistory.NAME)
6+
var control
7+
if (!control) control = Java.type("org.parosproxy.paros.control.Control").getSingleton()
8+
9+
extHist = control.getExtensionLoader().getExtension(
10+
org.parosproxy.paros.extension.history.ExtensionHistory.NAME)
911
if (extHist != null) {
1012
i=1
1113
lastRef=extHist.getLastHistoryId();// Get current max history reference

0 commit comments

Comments
 (0)