Ouroboros 0.20

Major additions and changes in 0.20.0

Version 0.20 brings some code refactoring and a slow of bugfixes to the prototype to improve stability, but the main quality-of-life addition is config file support in TOML format. This removes the need for bash scripts to configure the prototype on reboots/restarts; a very basic feature that was long overdue.

As an example, before v0.20, this server had Ouroboros running as a systemd service, and it was configured using the following irm commands:

irm i b t udp n udp l udp ip 51.38.114.133
irm n r ouroboros.rocks.oping l udp
irm b prog oping n ouroboros.rocks.oping auto -- -l

These bootstrap a UDP layer to the server’s public IP address, register the name “ouroboros.rocks.oping” with that layer and bind the program binary /usr/bin/oping to that name, telling the irmd to start that server automatically if it wasn’t running before.

While pretty simple to perform, if the service was restarted or the server was rebooted, we needed to re-run these commands (we could have added them to some system startup script, of course).

Now the IRMd will load the config file specified in /etc/ouroboros/irmd.conf. The IRMd configuration to achieve the above (I renamed the UDP layer to “Internet”, but that name doesn’t really matter if there is only one ipcpd-udp in the system):

root@vps646159:~# cat /etc/ouroboros/irmd.conf
### Ouroboros configuration file
[name."ouroboros.rocks.oping"]
prog=["/usr/bin/oping"]
args=["-l"]

[udp.internet]
bootstrap="Internet"
ip="51.38.114.133"
reg=["ouroboros.rocks.oping"]

To enable config file support, tomlc99 is needed. Install via

git clone https://github.com/cktan/tomlc99
cd tomlc99
make
sudo make install

and then reconfigure cmake and build Ouroboros as usual.

More information on how to use config files is in the example configuration file, installed in /etc/ouroboros/irmd.conf.example, or you can have a quick look in the repository.

The full git changelog can be browsed in cgit.

Last modified September 21, 2023