Configuration Nodes and Keys
All public keys for
All paths are relative to the base path "/sillysky/nodes/CONFIG_NAME/"
in the USER tree of Java
Preferences.
The configuration name CONFIG_NAME is mostly the Node-ID.
Since node IDs of client nodes can also have a random node ID, the configuration name can be different.
Path: / (Root of node)
Key | Type | Default Value | Description |
---|---|---|---|
preferences.imported | LocalDateTime | is stored by the kernel | Subtrees of the Java Preferences can be exported and imported. The kernel exports the subtree of the current node to the storage directory at startup. When starting up a new node, a subtree can also be imported. The time of the import is saved here. |
Path: kernel.configuration
Key | Type | Default Value | Description |
---|---|---|---|
node.id | String | mandatory | The node ID. |
segment.id | String | mandatory | The segment ID. |
config.name | String | The node ID if empty | The name of the configuration. The name can be different from the node ID. For client nodes, the node ID can have a wildcard, e.g. "MyClient-*". The asterisk is changed by the system to a random string. To avoid that now always new configuration entries must be stored under this configuration name, you can specify a different configuration name, e.g. "MyClient". All client nodes will then access the same configuration. |
node.description | String | empty | A brief description of the node, its tasks, location, etc. |
storage.dir | String (A directory path) | empty | In this directory plugins store their data. The kernel will usually only store an XML file that contains the configuration of the node. This file can be modified and used as a configuration file for new nodes. |
type.of.node | String (see ETypeOfNode) | mandatory | The type of node. Server nodes require a different license than client nodes. Tools do not require a node ID because they do not network. |
vendor | String | empty |
" |
license | String (UUID) | mandatory for SERVER and CLIENT | You will get a license from us. See here. |
base.dir | String (Path) | optional, if empty then current directory | A base directory is used to create non-configured other directories relative to it, e.g. "log", "storage" and "config" directory. |
log.dir | String (Path) | optional, if empty "log" relative to base directory | The directory where the log files are created, if not configured otherwise. |
plugin.dir | String (Path) | empty (default: plugins) | The directory where the plugin JARS are located. |
dump.properties | Boolean | false |
True : The system properties (System.getProperties() ) are printed at start-up.
|
preference.import | String (path of file) | no default | Subtrees of the Java Preferences can be exported and imported. The kernel exports the subtree of the current node to the storage directory at startup. When starting up a new node, a subtree can also be imported. The path of the file is saved here. |
preference.tcp | String (IP:port) | empty | If a TCP address with port is entered here, the configuration can be loaded from a central server. On the server node the plugin NY_ConfigurationProvider is executed, which offers the configuration file via a TCP server. The key for the correct file is of course the configuration name. |
Path: network/configuration.provider
Key | Type | Default Value | Description |
---|---|---|---|
server.port | int (port) | empty (default: 28346) | The port of a TCP server for distributing configuration files. See NY_ConfigurationProvider. |
connection.input.buffer.size | int | empty (default: 2100) | The size of the input buffer. See NY_ConfigurationProvider. |
Path: tcp/server/YOUR_SERVER_NAME
The server names can be any.
Key | Type | Default Value | Description |
---|---|---|---|
id | UUID | any | Any UUID. |
port | int | any | The server port. |
input.buffer.size | int | 270000 |
Optional: The size of the input buffer. |
tls.enabled | boolean | false |
Optional: True: TSL is enabled. A keystore and a truststore must be specified via command line. See: How nodes are connected to each other See: NY_TcpPlugIn |
tls.protocols | String | TLSv1.3 |
Optional: A list of TLS protocols, comma separated. |
tls.cipher.suites | String | TLS_AES_128_GCM_SHA256 |
Optional: A list of TLS cipher suites, comma separated. |
Path: tcp/server/YOUR_CLIENT_NAME
The client names can be any.
Key | Type | Default Value | Description |
---|---|---|---|
id | UUID | any | Any UUID. |
input.buffer.size | int | 270000 |
Optional: The size of the input buffer. |
tls.enabled | boolean | false |
Optional: True: TSL is enabled. A keystore and a truststore must be specified via command line. See: How nodes are connected to each other See: NY_TcpPlugIn |
tls.protocols | String | TLSv1.3 |
Optional: A list of TLS protocols, comma separated. |
tls.cipher.suites | String | TLS_AES_128_GCM_SHA256 |
Optional: A list of TLS cipher suites, comma separated. |
host | int/String | any | The server host address. |
port | int | any | The server port to connect. |
retry.timeout | int | 0 |
Optional: The time in milliseconds after the client retries to connect the server. The value 0 means that no further attempt will be made. |
Path: logging/writer
Key | Type | Default Value | Description |
---|---|---|---|
Sub-nodes, The name doesn't matter | Sub-nodes that configure individual LOG writers can be stored in this node. The name of the sub-nodes does not matter, e.g. "file" or "console". |
Path: logging/writer/NAME_OF_YOUR_WRITER
Key | Type | Default Value | Description |
---|---|---|---|
formatter.class.name | String (class name) | de. |
A formatter for the output of the LOG messages by this writer. |
level | String (log level) | INFO | The root log level. |
writer.class.name | String (A log writer) | de. |
A writer that outputs messages to the console, writes them to a file, transports them over the network, or passes them to another LOG framework. |
file.path | String (path) | log/MyNode.log | The path of a log file. |
Path: logging/writer/NAME_OF_YOUR_WRITER/levels
Here the logger levels are configured.
Key | Type | Default Value | Description |
---|---|---|---|
A_LOGGER_NAME_OR_PACKAGE | String (log level) | e.g. network.costs | Any logger configuration for this writer. |
Path: network
Key | Type | Default Value | Description |
---|---|---|---|
message.protocol | String (MESSAGE or JSON) | default: MESSAGE | The message protocol. For MESSAGE streamed data is used, for JSON the JSON format is used. The MESSAGE protocol is smaller and faster than the JSON format. |
packet.builder.sequence | String (M, MZ, MZA, MA) | default: M | The default setting for packing a message (for this node). M stands for the message and is always in the first place. Z stands for ZIP: The message is compressed. A stands for AES: the message is encrypted. |
Path: session
Key | Type | Default Value | Description |
---|---|---|---|
private.key.algorithm | String | default: RSA | This value is only used by the session plugin. It describes the algorithm of the private key with which session tokens are signed. |
private.key.data | String | default: missing | This value is only used by the session plugin. It contains the serialized data of the private key with which session tokens are signed. |
public.key.algorithm | String | default: RSA | This value is optional and is then used in each node. It describes the public key algorithm used to verify the integrity of the session token signature. If the value is missing, an RSA keypair is generated by the central SessionManager. The public key is then sent to the other nodes by message. |
public.key.data | String | default: missing | This value is optional and is then used in each node. It contains the serialized data used to verify the integrity of the session token signature. If the value is missing, an RSA keypair is generated by the central SessionManager. The public key is then sent to the other nodes by message. |
timeout.in.minutes | String | default: 30 | This timeout refers to the maximum validity of session tokens. |
key.aes.storage | String | default: missing | Optional: If available, the session manager saves the session tokens in a file that is encrypted with this secret key during a reboot. If the value is missing, all sessions become invalid when the node is rebooted. The algorithm used is “AES”. |
Path: network/costs
Normally, the cost of routing a message between two nodes is calculated from the ping times. Here the cost of certain connections can be set directly. This can be used to artificially increase the price of certain routes so that they are only used if no alternative exists for them. The key for the entries is the connection (in the notation NODE1::NODE2). The alphabetically smaller node should be in front (e.g. atlas::zulu instead of zulu::atlas). The value corresponds to the desired ping time (cost).
Key | Type | Default Value | Description |
---|---|---|---|
earth::moon | int (Ping time = cost) | mandatory |
In the following example, each key-value pair is a separate entry: earth::moon = 50 earth::sun = 1 sun::venus = 30 |
Path: plugin.manager/plugins
A list of entries, where each entry is a plugin.
The key is any number you want.
Plugins are not loaded if the number is less than or equal to 0.
The entries are sorted by the keys.
The smallest key greater than 0 is loaded first, the highest key last.
The version number and extension can be omitted.
The highest version is then always loaded.
Key | Type | Default Value | Description |
---|---|---|---|
e.g. 0001 | int (any) | mandatory |
In the following example, each key-value pair is a separate entry: 0001 = NY_NetworkPlugIn 0010 = NY_TcpPlugIn 0020 = NY_MicroServicePlugIn 0030 = NY_MicroServiceRegistryPlugIn |
Path: logCatcher
Key | Type | Default Value | Description |
---|---|---|---|
maximum.number.of.saved.log.entries | int | empty (default: 10000) |
The LOG Catcher is a kernel service which can save log messages even if the LOG framework has not been
started up yet.
This is regularly the case for the startup.
The messages can then be delivered to applications such as |