--- date: 2023-09-21 title: "Ouroboros 0.20" linkTitle: "Ouroboros 0.20" description: "Major additions and changes in 0.20.0" author: Dimitri Staessens --- 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: ```bash 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): ```bash 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 ```bash git clone https://github.com/cktan/tomlc99 cd tomlc99 make sudo make install ``` and then reconfigure cmake and build Ouroboros as usual.