New Features
User Interface
-
Add a Copy
button to the Processors sub-tab on the Pipeline screen. This will create a duplicate of an existing filter. -
Add a Line Wrapping
toggle button to the Server Tasks screen. This will enable/disable line wrapping on the Name and Info cells. -
Allow pane resizing in dashboards without needing to be in design mode.
-
Add Copy
and Jump to hover buttons to the Stream Browser screen to copy the value of the cell or (if it is a document) jump to that document. -
Tagging of individual explorer nodes was introduced in v7.2. v7.3 however adds support for adding/removing tags to/from multiple explorer tree nodes via the explorer context menu.
Explorer Tree
-
Additional buttons on the top of the explorer tree pane.
-
Add Expand All
and Collapse All buttons to the explorer pane to open or close all items in the tree respectively. -
Add a Locate Current Item
button to the explorer pane to locate the currently open document in the explorer tree.
-
Finding Things
Find
New screen for finding documents by name. Accessed using Shift ⇧ + Alt + f or
Find In Content
Improvements to the Find In Content screen so that it now shows the content of the document and highlights the matched terms. Now accessible using shift,ctrl + f or
Recent Items
New screen for finding recently used documents. Accessed using Ctrl ^ + e or
Editor Snippets
Snippets are a way of quickly adding snippets of pre-defined text into the text editors in Stroom. Snippets have been available in previous versions of Stroom however there have been various additions to the library of snippets available which makes creating/editing content a lot easier.
-
Add snippets for Data Splitter. For the list of available snippets see here.
-
Add snippets for XMLFragmentParser. For the list of available snippets see here.
-
Add new XSLT snippets for
<xsl:element>
and<xsl:message>
. For the list of available snippets see here. -
Add snippets for StroomQL . For the list of available snippets see here.
API Keys
API Keys are a means for client systems to authenticate with Stroom. In v7.2 of Stroom, the ability to use API Keys was removed if you were using an external identity provider as client systems could get tokens from the IDP themselves. In v7.3 the ability to use API Keys with an external IDP has returned as we felt it offered client systems a choice and removed the complexity of dealing with the IDP.
The API Keys screen has undergone various improvements:
- Look/feel brought in line with other screens in Stroom.
- Ability to temporarily enable/disable API Keys. A key that is disabled in Stroom cannot be authenticated against.
- Deletion of an API Key prevents any future authentication against that key.
- Named API Keys to indicate purpose, e.g. naming a key with the client system’s name.
- Comments for keys to add additional context/information for a key.
- API Key prefix to aid with identifying an API Key.
- The full API key string is no longer stored in Stroom and cannot be viewed after creation.
Key Creation
The screens for creating a new API Key are as follows:
Warning
Note that the actual API Key is ONLY visible on the second dialog. Once that dialog is closed Stroom cannot show you the API Key string as it does not store it. This is for security reasons. You must copy the created key and give it to the recipient at this point.Key Format
We have also made changes to the format of the API Key itself. In v7.2, the API Key was an OAuth token so had data baked into it. In v7.3, the API Key is essentially just a dumb random string, like a very long and secure password. The following is an example of a new API Key:
sak_e1e78f6ee0_6CyT2Mpj2seVJzYtAXsqWwKJzyUqkYqTsammVerbJpvimtn4BpE9M5L2Sx6oeG5prhyzcA7U6fyV5EkwTxoXJPfDWLneQAq16i5P75qdQNbqJ99Wi7xzaDhryMdhVZhs
The structure of the key is as follows:
sak
- The key type, Stroom API Key._
- separator- Truncated SHA2-256 hash (truncated to 10 chars) of the whole API Key.
_
- separator- 128 crypto random chars in the Base58 character set.
This character set ensures no awkward characters that might need escaping and removes some ambiguous characters (
0OIl
).
Features of the new format are:
- Fixed length of 143 chars with fixed prefix (
sak_
) that make it easier to search for API Keys in config, e.g. to stop API Keys being leaked into online public repositories and the like. - Unique prefix (e.g.
sak_e1e78f6ee0_
) to help link an API being used by a client with the API Key record stored in Stroom. This part of the key is stored and displayed in Stroom. - The hash part acts as a checksum for the key to ensure it is correct. The following CyberChef recipe shows how you can validate the hash part of a key.
Analytics
-
Add distributed processing for streaming analytics. This means streaming analytics can now run on all nodes in the cluster rather than just one.
-
Add multiple recipients to rule notification emails. Previously only one recipient could be added.
Search
-
Add support for Lucene 9.8.0 and supporting multiple version of Lucene. Stroom now stores the Lucene version used to create an index shard against the shard so that the correct Lucene version is used when reading/writing from that shard. This will allow Stroom to harness new Lucene features in future while maintaining backwards compatibility with older versions.
-
Add support for
field in
andfield in dictionary
to StroomQL .
Processing
-
Improve the display of processor filter state. The columns
Tracker Ms
andTracker %
have been removed and theStatus
column has been improved better reflect the state of the filter tracker. -
Stroom now supports the XSLT standard element
<xsl:message>
. This element will be handled as follows:<!-- Log `some message` at severity `FATAL` and terminate processing of that stream part immediately. Note that `terminate="yes"` will trump any severity that is also set. --> <xsl:message terminate="yes">some message</xsl:message> <!-- Log `some message` at severity `ERROR`. --> <xsl:message>some message</xsl:message> <!-- Log `some message` at severity `FATAL`. --> <xsl:message><fatal>some message</fatal></xsl:message> <!-- Log `some message` at severity `ERROR`. --> <xsl:message><error>some message</error></xsl:message> <!-- Log `some message` at severity `WARNING`. --> <xsl:message><warn>some message</warn></xsl:message> <!-- Log `some message` at severity `INFO`. --> <xsl:message><info>some message</info></xsl:message> <!-- Log $msg at severity `ERROR`. --> <xsl:message><xsl:value-of select="$msg"></xsl:message>
The namespace of the severity element (e.g.
<info>
is ignored. -
Add the following pipeline element properties to allow control of logged warnings for removal/replacement respectively.
- Add property
warnOnRemoval
to InvalidCharFilterReader . - Add property
warnOnReplacement
to InvalidXMLCharFilterReader .
- Add property
XSLT Functions
- Add XSLT function
stroom:hex-to-string(hex, charsetName)
. - Add XSLT function
stroom:cidr-to-numeric-ip-range
XSLT function. - Add XSLT function
stroom:ip-in-cidr
for testing whether an IP address is within the specified CIDR range.
For details of the new functions, see XSLT Functions.
API
- Add the un-authenticated API method
/api/authproxy/v1/noauth/fetchClientCredsToken
to effectively proxy for the IDP's token endpoint to obtain an access token using the client credentials flow. The request contains the client credentials and looks like{ "clientId": "a-client", "clientSecret": "BR9m.....KNQO" }
. The response media type istext/plain
and contains the access token.