Neubot 0.4.14 released

Neubot icon

Version 0.4.14 is the latest generally-available stable release of Neubot, distributed for Ubuntu >= 10.04, MacOSX >= 10.6, Windows >= XP SP3, FreeBSD and ArchLinux, as well as in source format.

Here's what changed in less than 140 characters: digitally-signed enabled-by-default Win32 auto-updates, better results page, removed buggy user-wide database, and more. Install, upgrade instructions at <>. Read on for more details.

This release contains 324 commits by 3 authors. The diffstat says: 143 changed files with 13,868 additions and 2,564 deletions.

Here is the list of what changed and why:

  • Digitally signed Win32 auto-updates.

    Now Win32 auto-updates are signed with an RSA key, and signature is verified before installing them. The verification is performed using OpenSSL for Windows, which is now compiled and distributed along with Neubot for Windows.

  • Win32 auto-updates now enabled by default.

    The availability of digital signature removes concerns over man in the middle attacks while downloading the auto-update. So, I have enabled auto-updates by default, similarly to what Neubot does on MacOSX.

  • New results.html page to show results.

    Alessio Palmero Aprosio and I have scrapped bittorrent.html and speedtest.html (along with related javascripts), and we have replaced them with a new results.html page, which is basically the fusion of the two pages, plus tweaks. The enhancement in the new page is that it allows you to choose what test results you want to see, consolidating results navigation in a single tab of the web user interface.

    Note that this change also affects Neubot API. The /api/results API (which returned raw data) has been renamed /api/data, while the new /api/results is an API that tells results.html the number and type of plots and tables to show, as well as the parameters to pass to /api/data in order to retrieve the raw data.

  • Removed support for $HOME/.neubot/database.sqlite3 database.

    $HOME/.neubot/database.sqlite3, also know as the user-wide database, was the database used by Neubot on UNIX when invoked by a non-privileged user. The problem with this database was that it was not in sync with the system-wide one, leading to a very confusing behavior. E.g., you run Neubot with your user's permissions and it asks you to provide privacy permissions, even though you already provided them (to the copy that runs as a daemon).

    Now, instead, the system-wide database is always used, even when Neubot is run by a non-privileged user. Note that, in such case, Neubot will print a warning when it tries to write results to the database, since the database is read only. (However, this should happen very rarely, since the common case is that the command launched as an ordinary user asks the daemon -which can write on the database- to run the test on its behalf.)

  • New main() for MacOSX.

    The new main() for MacOSX allows to start and stop the Neubot daemon from the command line. It internally invokes launchctl(1) to tell launchd(8) to start or stop the Neubot child.

  • Use /var/lib/neubot (instead of /var/neubot) under Linux.

    Linux file-system standard (FHS) requires program data to live in /var/lib/program. Instead, Neubot was adopting the BSD convention to use /var/program. Starting from this release, /var/lib/neubot is used on Linux systems, while /var/neubot is used otherwise.

    This allows to produce a Debian package that passes all the checks of lintian(1), minus a warning.

  • Changed port used for test negotiation (9773 -> 8080).

    Start migrating Neubot services on port 8080, since 9773 has been reported to be filtered in certain cases.

  • Automatic install of M-Lab nodes.

    Added support for automatic install of Neubot when a new M-Lab node is installed (reinstalled). This dramatically reduces the amount of time an M-Lab node is unused and waiting for operator intervention. Prodded by and with feedback and input from Stephen Soltesz (M-Lab).

  • New site.

    Neubot data has been re-organized and made available at For now this is just a directory where to put data, and more work is needed to make the site more aesthetically pleasing.

  • Second round of cleanups.

    This release contains the second run of cleanups contributed this summer by Marco Scopesi, thanks!

  • Allow to force auto-update check on MacOSX.

    You can now force Neubot on MacOSX to check for updates by sending the USR1 signal to the parent process (the one that is running as root, monitors the unprivileged child, and takes care of automatic updates).

  • Upgraded to simplejson 2.6.0.

  • More bug fixes, enhancements and cleanups.

Full change log available here:

Diff since previous version here:

Commit history here:

SHA256sums here:

Errata here:

Data here:

Short-term roadmap here:

Long-term roadmap here: