Botman

Botman is a project that aims to ease management of multiple servers.
Focus is put around a few concepts :
  • Modularity : Everything is a module. This force clean isolation of functions, making the addition of functionnalities a lot easier.
  • Spam : We focus on making it easy to send commands to servers using patterns, allowing to query every server at once or only a subset of them.
You can access source code here.

How it works

This project create 2 apps :
  • Botman : Simple bot installed on servers to manage.
  • Alfred : Bot assistant installed on an external machine.
Botman & Alfred will talk through an XMPP server.
We chose XMPP over other networks because its open, standardized, extendable, and have multiple servers and clients available (as well as libraries).
The way Botman & Alfred talk depends heavily on how modules are written (as each of them is somewhat independant), but everything tends to work around commands.
The best practice seems to only talk to Alfred, and have it dispatch your commands to botmans.
Talking with Alfred can be done through the XMPP network, or through the HTTPd module.

Security

XMPP Server

You should limit access to your XMPP server :
  • Turn off account registration : Only admins can create new accounts.
  • Restrict IP access to your XMPP server if your servers and users only connects from known locations.

Alfred/Botman friendlist

You can set JID patterns in both alfred.conf and botman.conf, to filter contacts allowed to add them as friends and talk to them.

Access module

It is possible to give access levels to both commands and users, to restrict certains user to only a subset of available ones.

HTTPd module

This module does not support any kind of authentification mechanism, and offer a direct gateway to Alfred's internals.
So you might either filter access to port 5128 or completely deny it, and proxify it through nginx/apache, adding http auth in the middle.

Modules