Configuration Nodes and Keys

A list on a table, van Gogh

All public keys for nyssr.net are listed here. Since the Java Preferences are hierarchically ordered, the paths of the nodes to which the keys belong are also shown.

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 "sillysky.net", or your company.
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.sillysky.nyssr.log.CDefaultMessageFormatter 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.sillysky.nyssr.log.CDefaultConsoleLogWriter for console, or de.sillysky.nyssr.log.CSyncFileLogWriter for files 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 LOG Monitor to gain insight into the startup period.