Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
711:scripting_advanced [2024/11/22 10:31] – [Advanced Scripting] Weinlein, Thomas | 711:scripting_advanced [2025/04/04 11:58] (current) – [Advanced Scripting] Weinlein, Thomas | ||
---|---|---|---|
Line 3: | Line 3: | ||
====== Advanced Scripting ====== | ====== Advanced Scripting ====== | ||
- | Some advanced reports might need to use additional Java library API to provide the requested functionality. | + | Some advanced reports |
- | As this might pose security risks, explicit whitelisting of such API is necessary. This can be done by providing a comma separated list of class names in the following configuration properties depending on the use case: | + | |
- | Admin Jobs: adminjob.script.class.whitelist | + | Admin Jobs: '' |
- | Reports: metrics.script.class.whitelist | + | |
+ | Reports: | ||
e.g. | e.g. | ||
- | |||
+ | <code xml config.xml> | ||
+ | < | ||
+ | </ | ||
+ | Stages will prevent access to all other Java API and will log an error message indicating the unavailable class that needs whitelisting. | ||
+ | File system access also needs explicit permission via configuration. | ||
+ | Files to be accessible to Admin Jobs need to be stored in directories within '' | ||
+ | This base directory can be configured via an absolute path with configuration property '' | ||
+ | |||
+ | Files to be accessible to Reports need to be stored in directories within '' | ||
+ | |||
+ | e.g. | ||
+ | |||
+ | <code xml config.xml> | ||
+ | < | ||
+ | </ | ||
+ | |||
+ | File read and/or write permissions are configured by the following configuration property. Please note that the file paths need to be specified **relative** to the **base directory** as shown above. | ||
+ | |||
+ | Admin Jobs: | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | Reports: | ||
+ | |||
+ | '' | ||
+ | |||
+ | '' | ||
+ | |||
+ | For file access the script needs to use the following API: | ||
+ | |||
+ | <code javascript> | ||
+ | files.newInputStream(relativeFileName); | ||
+ | files.newOutputStream(relativeFileName); | ||
+ | </ | ||
+ | |||
+ | Please ensure the returned streams are **closed after usage**. | ||
+ | |||
+ | e.g. | ||
- | Necessary steps to enable usage of libraries and file access. | + | <code javascript> |
+ | var reader = new java.io.BufferedReader(new java.io.InputStreamReader(Files.newInputStream(" | ||
+ | try { | ||
+ | while ((rline = reader.readLine()) != null) { | ||
+ | log.info(rline); | ||
+ | } | ||
+ | } finally { | ||
+ | reader.close(); | ||
+ | } | ||
+ | </ | ||