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:04] – Weinlein, Thomas | 711:scripting_advanced [2025/04/04 11:58] (current) – [Advanced Scripting] Weinlein, Thomas | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | [[: | ||
+ | |||
====== Advanced Scripting ====== | ====== Advanced Scripting ====== | ||
+ | Some advanced reports and admin jobs might need to use additional Java library API to provide the requested functionality. 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: '' | ||
+ | |||
+ | Reports: '' | ||
+ | |||
+ | 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(); | ||
+ | } | ||
+ | </ | ||