How to add a Captcha to the registration form on a Qvitter GNUsocial server

As you might know I’m currently hosting gnusocial.cc, a GNU Social server (you can find a lot of useful information in the link) which instead of the “classic” interface of this social network uses Qvitter, a plugin that makes better the server appearance.

My problem came when I saw that spam bots were creating a lot of new accounts on the server. I tried using the SimpleCaptcha plugin, which is included by default on GNU social, and also FacileCaptcha, which was created by XRevan86 (the admin of LoadAverage.org) but they only work with the classical interface. After searching for a while and talking to some people I was told of a Captcha-plugin for Qvitter: QvitterSimpleSecurity.

Install & Set Up QvitterSimpleSecurity on GNU Social

Go to your plugin directory (local/plugins or plugins) and clone the Git repository of the plugin we are talking about:

$ git clone https://gitgud.io/panjoozek413/qvittersimplesecurity

Rename the plugin directory (GNU social is case sensitive) to QvitterSimpleSecurity:

$ mv qvittersimplesecurity QvitterSimpleSecurity

To enable the plugin just add (using a text editor like e.g. nano) the following line to your config.php (in the root directory of your GNU Social installation):

addPlugin('QvitterSimpleSecurity');

Visit the registration page of Qvitter in order to check that the Captcha is working 🙂

How to mirror a git repository

As I was working on libgnusocial I went into trouble because we have three different git repositories: Gitlab, Github & code.freedombone.net and I wanted to keep them all updated. To do this I just work with one (at Gitlab) and I treat the others as mirrors. First of all, to mirror a git repository we need to clone it using the “mirror” argument:

$ git clone --mirror https://gitlab.com/user/repository

Then move into the cloned repository directory (which git ends in “.git” due to the mirror cloning process):

$ cd repository.git

And finally push into an empty repository or an outdated mirror of our repository:

$ git push --mirror https://gitlab.com/user/another_repository

Set random wallpaper in i3wm

“i3 is a tiling window manager, completely written from scratch. The target platforms are GNU/Linux and BSD operating systems, our code is Free and Open Source Software (FOSS) under the BSD license. i3 is primarily targeted at advanced users and developers.” — i3wm.org

I’ve just moved to Devuan GNU/Linux 1.0.0 “Jessie” and installed i3wm as desktop environment. While I was setting it up I wanted to set a wallpaper (instead of the black background that comes by default) chosen from those stored in a directory. First of all we have to install the tool “feh”. In Debian/Devuan:

# apt-get install feh

Now, we have to add to the end of the i3 config file (located in ~/.i3/config) the following line (which simply calls feh):

exec --no-startup-id feh --randomize --bg-scale /path/to/wallpapers/*

And then restart i3wm (at least in my case it doesn’t work just reload).

Skip SSL validation while cloning a Git repository

While I was trying to clone the libmicrohttpd Git repository I got the following fail:

fatal: unable to access 'https://gnunet.org/git/libmicrohttpd.git/': server certificate verification failed.

 

The easy way to fix it’s disable the SSL verification at the same command line where we clone the repository, by setting the GIT_SSL_NO_VERIFY variable to “true”.

$ GIT_SSL_NO_VERIFY=true git clone --recursive https://gnunet.org/git/libmicrohttpd.git/

 

We’ll get our local copy of the repository. If we’re going to work on it rather than just compiling or installing (that was my case) then we can disable SSL certification checking for that repository:

$ git config http.sslVerify "false"

Compiling GnuSocialShell 1.3.0 on GNU/Linux

Dependencies

First of all you need to install the following build utilities which are part of the GNU project:

  • gcc
  • make
  • autotools
  • autoconf

Also you have to install the packages that are required by GnuSocialShell itself:

  • libcurl
  • libreadline (optional; just if you wish to have TAB-autocompletion)

In Debian GNU/Linux (and derivates such as Ubuntu, Linux Mint, Trisquel GNU, …) you can get them using APT:

# apt-get install gcc make libcurl4-gnutls-dev autotools-dev autoconf libreadline-dev

Get the Source Code

You can get the source code of GnuSocialShell 1.3.0  as a ZIP file from this link. Once you get it, unzip it.

Compile GnuSocialShell

To compile GnuSocialShell just open a shell/terminal emulator in the unzipped directory and type:

$ touch config.rpath && autoreconf -iv && ./configure --prefix=/usr/local && make

If everything is okay (it should be) you will get a binary file called “gnusocialshell” in the compilation directory. You can also install it into your system by typing (as root):

# make install

The installation directory is /usr/local/bin. If you want to install it in /usr/bin just set the prefix of ./configure to /usr in the compilation command. To remove GnuSocialShell from your system, type:

# make uninstall

 

Before you use GnuSocialShell you have to configurate it; Please read “Setting up GnuSocialShell 1.3.0” (not redacted yet)