Released Neubot 0.4.5
Version 0.4.5 is the latest generally-available stable release of Neubot, distributed for Ubuntu >= 10.04, MacOSX >= 10.6, Windows >= XP SP3 and FreeBSD as well as in source format (.tar.gz and .zip). The release contains 94 patches. The diffstat says: 148 files changed, with 5706 lines inserted and 4591 lines deleted.
Here are the most relevant changes:
UNIX: specify clearly what Neubot under UNIX should be.
Under UNIX Neubot is made of three components: the daemon, the viewer and the notifier. The daemon runs in background, runs tests, exports its state and recent results on 127.0.0.1 (and depends on Python). The viewer is a WebKit- and Gtk-based Python component that connects to the daemon and shows the web user interface. The notifier is a PyNotify-based Python component that periodically checks the daemon state and, eventually, notifies the user (for example when the privacy is not OK but of course we plan to do more with it).
This bundle of features is, in my opinion, the Neubot experience and this is what should be installed when a users installs "neubot". That said, of course there are special cases, such when one does not have X on her UNIX machine. In such cases, it obviously would be crazy to pull all those dependencies and a "-nox" flavor of the package should be available. If the viewer (or notifier) component of the "-nox" package flavor is invoked, it should just print an error message and exit. Of course, in the "-nox" case one can still point its browser to http://127.0.0.1:9774/ and control Neubot.
To communicate that "neubot" is actually the feature bundle, I have replaced the neubot_gui and neubot_notify external commands with two internal commands, `neubot viewer` and `neubot notifier`. Here the model is `vim`, which is always one command but behaves differently depending on packaging. Rather than, say, `git` and `gitk`, which are two distinct packages.
Pursuing this vision, I have simplified a lot the Makefile, made sure that all functionalities are available on all UNIX platforms (for example in previous release neubot_gui and neubot_notify were available only for Debian) and added hooks to simplify the work of packagers. You just need to specify the proper BINDIR, MANDIR etc. when invoking make(1) to customize the place where you install stuff.
The only thing I've not added is a hook to specify the location of the database. Neubot was written with the BSD hier(7) in mind, and /var/neubot is OK under this convention. In the GNU/Linux world, the proper location would be /var/lib/neubot. I will do that in the 0.4.6 release cycle.
Debian: specify all deps and fork out a -nox package flavor.
Coherently with the clear specification of Neubot under UNIX I've added all the needed dependencies (python-webkit, pynotify) to the Debian package control file. And I have created a "-nox" flavor of the package, which basically just does not list such dependencies.
If you have already installed Neubot on a Debian without X or without Gnome, you upgrade and you find that you need to install a lot of unwanted deps then I suggest to uninstall Neubot and then download and install the `neubot-nox` package. This can be automated, for example, as follows::
sudo dpkg -r neubot && \ wget http://releases.neubot.org/_packages/neubot-nox-0.4.5-1_all.deb && \ sudo dpkg -i neubot-nox-0.4.5-1_all.deb
From that point on, neubot-nox should stay uptodate.
negotiate: rewrite server-side negotiation.
The negotiator is the server-side Neubot component that enqueues clients that want to perform a test, negotiates parameters, provides test code with the list of authorized clients and collects the results.
BitTorrent and speedtest had two different negotiation mechanisms and speedtest one was not always reliable. During last month I have modified heavily BitTorrent negotiation, I migrated speedtest to use it and got rid of the old negotiator code.
MacOS: do not show Neubot pseudo-user in login screen.
As reported by many, when you install Neubot on MacOSX the Neubot user appears in the login screen. Starting from this release, this will be no longer the case, both for new users and for users that have already installed Neubot. In the latter case, Neubot will automatically update and fix the problem during the update process.
UNIX: remove start-neubot-daemon command.
Advising installing-from-sources folks to use Python's full path in their
/etc/rc.localis much better than rolling out one command to do that. Especially given that the way to go is, of course, to provide more packages and/or be added to distributions repositories.
www: allow to force web user interface language.
Now there is one more configuration variable in settings.html, named `www.lang`. The default value of this variable is (unsurprisingly) 'default' and means "use whathever language is configured by the browser". You can set it to 'it' and 'en' to enforce Italian and English language respectively. Setting it to a language for which a translation does not exist causes the web interface to show messages in English.
I've added this new setting because from the viewer you have otherwise no way to set the default language, given that it is a very simple Python application, which basically just embeds WebKit into a Gtk window.
Thanks to Alessio Palmero Aprosio, who done part of the work.
privacy: don't fail on UNIX when /var/neubot does not exist.
The privacy command was assuming /var/neubot existed, which is not true in one case. Namely, when the MacOS installer is setting up the environment before starting Neubot for the first time.
Thanks to Francesco Corazza for pointing this out.
The fix is to use neubot.database DATABASE interface to create the database. Some more work should be done, because, as of now, the code assumes /var/neubot/database.sqlite3 is either opened by root or by the _neubot user. So, there may be surprises if you employ this command to print privacy settings as a normal user.
server: add looking glass to inspect internals.
While testing the new negotiate code, I wrote a lot of instrumentation to inspect Neubot server internals. This has not a tangible effect for users, still I would like to mention it because this piece of code is something that allows more control of the server. Which, in turn, allows me to have more insight and provide a better service. For example, using this code I noticed that there was a certain amount of queueing and decided to bump the parallelism from 3 to 7.
- simplejson: update to version 2.2.0.
- code rationalizations, cleanups and regression tests.
Packages and source archives available here:
Commit history here: