6
6
// Change the DIR below to match the local directory containing the alert files
7
7
var DIR = "/zap/wrk/zaproxy-website/site/content/docs/alerts/" ;
8
8
var Alert = Java . type ( 'org.parosproxy.paros.core.scanner.Alert' ) ;
9
+ var ArrayList = Java . type ( 'java.util.ArrayList' ) ;
9
10
var Constant = Java . type ( 'org.parosproxy.paros.Constant' ) ;
10
11
var PluginPassiveScanner = Java . type ( 'org.zaproxy.zap.extension.pscan.PluginPassiveScanner' ) ;
11
12
var FileWriter = Java . type ( 'java.io.FileWriter' ) ;
@@ -43,65 +44,97 @@ for (var i = 0; i < plugins.length; i++) {
43
44
44
45
print ( "Date: " + date ) ;
45
46
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' ) ;
48
51
return ;
49
52
}
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" ) ;
52
55
var pw = new PrintWriter ( fw ) ;
53
56
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 ) ;
58
62
pw . println ( 'type: alert' ) ;
59
63
pw . println ( 'date: ' + date ) ;
60
64
pw . println ( 'lastmod: ' + date ) ;
61
65
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 ( ) ) ;
77
69
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 ( ) ] ) ;
81
76
}
82
77
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' ) ;
87
79
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 ( ) ) ;
92
85
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
+ }
93
106
}
94
-
107
+
95
108
pw . println ( '### Code' ) ;
96
109
pw . println ( '' ) ;
97
- var clazz = plugin . getClass ( ) . getName ( ) ;
98
110
var pkgs = clazz . split ( '.' ) ;
99
111
var pkg = pkgs [ pkgs . length - 2 ] ;
100
112
var url = 'https://github.com/zaproxy/zap-extensions/blob/master/addOns/' + pkg + '/src/main/java/' + pkgs . join ( '/' ) + '.java' ;
101
113
pw . println ( ' * [' + pkgs . join ( '/' ) + '.java' + '](' + url + ')' ) ;
102
114
pw . println ( '' ) ;
115
+
103
116
pw . println ( '###### Last updated: ' + date ) ;
104
117
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 ( ) ) ;
105
138
}
106
139
107
140
function getPrivateMethod ( obj , methods , key , defaultVal ) {
@@ -125,69 +158,27 @@ function getPrivateMethod(obj, methods, key, defaultVal) {
125
158
} catch ( e ) {
126
159
}
127
160
}
128
- //print ('Failed on ' + obj.getName() + ' ' + methods);
161
+ // Helps to show whats left to do :)
162
+ print ( ' Failed on ' + obj . getName ( ) + ' ' + methods ) ;
129
163
return defaultVal ;
130
164
}
131
165
132
166
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 ) ;
182
181
}
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 ( ) ) ;
193
184
}
0 commit comments