Skip to content

Commit 87ea06a

Browse files
committed
Changed to use example alerts
Signed-off-by: Simon Bennetts <[email protected]>
1 parent 74f8e5e commit 87ea06a

File tree

1 file changed

+87
-96
lines changed

1 file changed

+87
-96
lines changed

Diff for: scripts/generate_alert_pages.js

+87-96
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
// Change the DIR below to match the local directory containing the alert files
77
var DIR = "/zap/wrk/zaproxy-website/site/content/docs/alerts/";
88
var Alert = Java.type('org.parosproxy.paros.core.scanner.Alert');
9+
var ArrayList = Java.type('java.util.ArrayList');
910
var Constant = Java.type('org.parosproxy.paros.Constant');
1011
var PluginPassiveScanner = Java.type('org.zaproxy.zap.extension.pscan.PluginPassiveScanner');
1112
var FileWriter = Java.type('java.io.FileWriter');
@@ -43,65 +44,97 @@ for (var i = 0; i < plugins.length; i++) {
4344

4445
print("Date: " + date);
4546

46-
function printAscanRule(plugin) {
47-
if (ignoreList.indexOf(plugin.getId()) !== -1) {
47+
function printAlerts(alerts, name, type, status, clazz) {
48+
var pluginId = alerts[0].getPluginId();
49+
if (ignoreList.indexOf(pluginId) !== -1) {
50+
print('Plugin ID: ' + pluginId + ' - ignored');
4851
return;
4952
}
50-
print('Plugin ID: ' + plugin.getId());
51-
var fw = new FileWriter(DIR + plugin.getId() + ".md");
53+
print('Plugin ID: ' + pluginId);
54+
var fw = new FileWriter(DIR + pluginId + ".md");
5255
var pw = new PrintWriter(fw);
5356
pw.println('---');
54-
pw.println('title: "' + plugin.getName() + '"');
55-
pw.println('alertid: ' + plugin.getId());
56-
pw.println('alerttype: "Active Scan Rule"');
57-
pw.println('status: ' + plugin.getStatus());
57+
pw.println('title: "' + name.replaceAll("\"", "'") + '"');
58+
pw.println('alertid: ' + pluginId);
59+
pw.println('alerttype: "' + type + '"');
60+
pw.println('alertcount: ' + alerts.length);
61+
pw.println('status: ' + status);
5862
pw.println('type: alert');
5963
pw.println('date: ' + date);
6064
pw.println('lastmod: ' + date);
6165
pw.println('---');
62-
pw.println('### Type: Active Scan');
63-
pw.println('');
64-
pw.println('### Risk: ' + Alert.MSG_RISK[plugin.getRisk()]);
65-
pw.println('');
66-
pw.println('### Description');
67-
pw.println('');
68-
pw.println(plugin.getDescription());
69-
pw.println('');
70-
pw.println('### Solution');
71-
pw.println('');
72-
pw.println(plugin.getSolution());
73-
pw.println('');
74-
var refs = plugin.getReference();
75-
if (refs && refs.length() > 0) {
76-
pw.println('### References');
66+
for (var a=0; a < alerts.length; a++) {
67+
var alert = alerts[a];
68+
pw.println('## Name: ' + alert.getName());
7769
pw.println('');
78-
var refsArray = refs.split('\n');
79-
for (var i = 0; i < refsArray.length; i++) {
80-
pw.println('* ' + refsArray[i]);
70+
if (a == 0) {
71+
pw.println('### Type: ' + type);
72+
pw.println('');
73+
}
74+
if (alert.getRisk() >= 0) {
75+
pw.println('### Risk: ' + Alert.MSG_RISK[alert.getRisk()]);
8176
}
8277
pw.println('');
83-
}
84-
var cweId = plugin.getCweId();
85-
if (cweId > 0) {
86-
pw.println('### CWE: [' + plugin.getCweId() + '](https://cwe.mitre.org/data/definitions/' + plugin.getCweId() + '.html)');
78+
pw.println('### Description');
8779
pw.println('');
88-
}
89-
var wascId = plugin.getWascId();
90-
if (wascId > 0) {
91-
pw.println('### WASC: ' + wascId);
80+
pw.println(alert.getDescription());
81+
pw.println('');
82+
pw.println('### Solution');
83+
pw.println('');
84+
pw.println(alert.getSolution());
9285
pw.println('');
86+
var refs = alert.getReference();
87+
if (refs && refs.length() > 0) {
88+
pw.println('### References');
89+
pw.println('');
90+
var refsArray = refs.split('\n');
91+
for (var i = 0; i < refsArray.length; i++) {
92+
pw.println('* ' + refsArray[i]);
93+
}
94+
pw.println('');
95+
}
96+
var cweId = alert.getCweId();
97+
if (cweId > 0) {
98+
pw.println('### CWE: [' + alert.getCweId() + '](https://cwe.mitre.org/data/definitions/' + alert.getCweId() + '.html)');
99+
pw.println('');
100+
}
101+
var wascId = alert.getWascId();
102+
if (wascId > 0) {
103+
pw.println('### WASC: ' + wascId);
104+
pw.println('');
105+
}
93106
}
94-
107+
95108
pw.println('### Code');
96109
pw.println('');
97-
var clazz = plugin.getClass().getName();
98110
var pkgs = clazz.split('.');
99111
var pkg = pkgs[pkgs.length - 2];
100112
var url = 'https://github.com/zaproxy/zap-extensions/blob/master/addOns/' + pkg + '/src/main/java/' + pkgs.join('/') + '.java';
101113
pw.println(' * [' + pkgs.join('/') + '.java' + '](' + url + ')');
102114
pw.println('');
115+
103116
pw.println('###### Last updated: ' + date);
104117
pw.close();
118+
119+
}
120+
121+
function printAscanRule(plugin) {
122+
var examples = getPrivateMethod(plugin, ['getExampleAlerts'], '', null);
123+
if (examples == null || examples.length == 0) {
124+
var alert = new Alert(plugin.getId());
125+
alert.setName(plugin.getName());
126+
alert.setRisk(plugin.getRisk());
127+
alert.setDescription(plugin.getDescription());
128+
alert.setSolution(plugin.getSolution());
129+
alert.setReference(plugin.getReference());
130+
alert.setCweId(plugin.getCweId());
131+
alert.setWascId(plugin.getWascId());
132+
133+
examples = new ArrayList();
134+
examples.add(alert);
135+
}
136+
137+
printAlerts(examples, plugin.getName(), "Active Scan Rule", plugin.getStatus(), plugin.getClass().getName());
105138
}
106139

107140
function getPrivateMethod(obj, methods, key, defaultVal) {
@@ -125,69 +158,27 @@ function getPrivateMethod(obj, methods, key, defaultVal) {
125158
} catch (e) {
126159
}
127160
}
128-
//print ('Failed on ' + obj.getName() + ' ' + methods);
161+
// Helps to show whats left to do :)
162+
print (' Failed on ' + obj.getName() + ' ' + methods);
129163
return defaultVal;
130164
}
131165

132166
function printPscanRule(plugin) {
133-
if (ignoreList.indexOf(plugin.getPluginId()) !== -1) {
134-
return;
135-
}
136-
print('Plugin ID: ' + plugin.getPluginId());
137-
var fw = new FileWriter(DIR + plugin.getPluginId() + ".md");
138-
var pw = new PrintWriter(fw);
139-
pw.println('---');
140-
pw.println('title: "' + plugin.getName().replaceAll("\"", "'") + '"');
141-
pw.println('alertid: ' + plugin.getPluginId());
142-
pw.println('alerttype: "Passive Scan Rule"');
143-
pw.println('status: ' + plugin.getStatus());
144-
pw.println('type: alert');
145-
pw.println('date: ' + date);
146-
pw.println('lastmod: ' + date);
147-
pw.println('---');
148-
pw.println('### Type: Passive Scan');
149-
pw.println('');
150-
pw.println('### Description');
151-
pw.println(getPrivateMethod(plugin, ['getDescription', 'getDesc', 'getDescriptionMessage'], 'desc', '_Unavailable_'));
152-
pw.println('');
153-
pw.println('### Solution');
154-
pw.println('');
155-
pw.println(getPrivateMethod(plugin, ['getSolution', 'getSoln', 'getSolutionMessage'], 'soln', '_Unavailable_'));
156-
pw.println('');
157-
var refs = getPrivateMethod(plugin, ['getReferences', 'getRefs', 'getReferenceMessage', 'getReferencesMessage'], 'refs', '');
158-
if (refs.length() > 0) {
159-
pw.println('### References');
160-
pw.println('');
161-
var refsArray = refs.split('\n');
162-
for (var i = 0; i < refsArray.length; i++) {
163-
pw.println('* ' + refsArray[i]);
164-
}
165-
pw.println('');
166-
}
167-
try {
168-
var cweId = getPrivateMethod(plugin, ['getCweId'], '', '');
169-
if (cweId.length() > 0 && parseInt(cweId) > 0) {
170-
pw.println('### CWE: [' + cweId + '](https://cwe.mitre.org/data/definitions/' + cweId + '.html)');
171-
pw.println('');
172-
}
173-
} catch (e) {
174-
}
175-
try {
176-
var wascId = getPrivateMethod(plugin, ['getWascId'], '', '');
177-
if (wascId.length() > 0 && parseInt(wascId) > 0) {
178-
pw.println('### WASC: ' + wascId);
179-
pw.println('');
180-
}
181-
} catch (e) {
167+
var examples = getPrivateMethod(plugin, ['getExampleAlerts'], '', null);
168+
169+
if (examples == null || examples.length == 0) {
170+
var alert = new Alert(plugin.getPluginId());
171+
alert.setName(plugin.getName());
172+
alert.setRisk(getPrivateMethod(plugin, ['getRisk'], '', -1));
173+
alert.setDescription(getPrivateMethod(plugin, ['getDescription', 'getDesc', 'getDescriptionMessage'], 'desc', '_Unavailable_'));
174+
alert.setSolution(getPrivateMethod(plugin, ['getSolution', 'getSoln', 'getSolutionMessage'], 'soln', '_Unavailable_'));
175+
alert.setReference(getPrivateMethod(plugin, ['getReferences', 'getReference', 'getRefs', 'getReferenceMessage', 'getReferencesMessage'], 'refs', ''));
176+
alert.setCweId(getPrivateMethod(plugin, ['getCweId'], '', 0));
177+
alert.setWascId(getPrivateMethod(plugin, ['getWascId'], '', 0));
178+
179+
examples = new ArrayList();
180+
examples.add(alert);
182181
}
183-
pw.println('### Code');
184-
pw.println('');
185-
var clazz = plugin.getClass().getName();
186-
var pkgs = clazz.split('.');
187-
var pkg = pkgs[pkgs.length - 2];
188-
var url = 'https://github.com/zaproxy/zap-extensions/blob/master/addOns/' + pkg + '/src/main/java/' + pkgs.join('/') + '.java';
189-
pw.println(' * [' + pkgs.join('/') + '.java' + '](' + url + ')');
190-
pw.println('');
191-
pw.println('###### Last updated: ' + date);
192-
pw.close();
182+
183+
printAlerts(examples, plugin.getName(), "Passive Scan Rule", plugin.getStatus(), plugin.getClass().getName());
193184
}

0 commit comments

Comments
 (0)