Skip to content

Latest commit

 

History

History
128 lines (86 loc) · 4.59 KB

README.md

File metadata and controls

128 lines (86 loc) · 4.59 KB

mumble-pluginbot-plusplus

Build Status Coverty Scan Status

Introduction

mumble-pluginbot-plusplus is an extensible Mumble bot which can play audio, can be fed by different sources, and much more.

It is a C++ rewrite of several libraries and the original mumble-ruby-pluginbot written in Ruby:

Thanks to all the original authors! See the source code for copyright information.

Status

The rewrite is not complete yet.

What works:

  • Command line parsing (Pass "--help" to the executable to see the syntax)
  • Creating a RSA private + public key pair (PEM format)
  • Creating a X.509 certificate (PEM format)
  • Connection to a Mumble server
  • Auto moving to a channel after connect
  • Some simple chat commands such as ".help"
  • FIFO reading / OPUS encoding / Streaming
  • MPD plugin
  • Version plugin
  • Messages plugin
  • YouTube plugin

What doesn't work:

  • Some chat commands don't work
  • Soundcloud plugin
  • Bandcamp plugin
  • Ektoplazm plugin
  • Radiostream plugin
  • CELT support
  • Portaudio support
  • WAV reading / writing
  • Automatic MPD startup
  • Probably more ;)

Dependencies

The code is using modern C++ language features only present in C++14.

  • GCC 4.9+ or Clang 3.6+
  • autoconf
  • automake
  • libtool
  • OpenSSL (libcrypto + libssl)
  • libopus 1.1
  • libprotobuf
  • protobuf (for the protoc compiler)
  • libmpdclient
  • libuv (will most likely be an optional dependency in the future)
  • uvw (is automatically pulled in via a Git submodule)

On Debian you can get the dependencies using Apt:

sudo apt-get install build-essential automake libtool pkg-config libopus-dev libssl-dev libprotobuf-dev libmpdclient-dev protobuf-compiler

On Ubuntu 14.04 (Trusty Thar) (GCC) you have to also add the ubuntu-toolchain-r/test PPA:

sudo apt-add-repository "ppa:ubuntu-toolchain-r/test"
sudo apt-get install build-essential automake libtool g++-4.9 libopus-dev libssl-dev libprotobuf-dev libmpdclient-dev protobuf-compiler

Building + Installing

The repository is autotools-based, you have to regenerate the configure script:

./autogen.sh

Then the usual autotools process applies:

./configure
make
sudo make install

There is experimental support for Debian Jessie and Ubuntu Trusty, invoke configure like this:

CXX='g++ -std=c++1y' ./configure --without-libuv

It also works without installing. libtool provides a wrapper script for this:

./mumble-pluginbot-plusplus --help

A running mpd is currently necessary or the bot will crash, there is a script included to start mpd:

tools/start-mpd.sh

However the script expects a working mpd.conf in ~/.config/mumble-pluginbot-plusplus/mpd.conf. You can start with the example script from the mumble-ruby-pluginbot repository:

https://github.com/MusicGenerator/mumble-ruby-pluginbot/blob/master/templates/mpd.conf

Debugging

When using gdb either install first and invoke gdb as usual or use libtools execute mode to debug without installing:

libtool --mode=execute gdb --args ./mumble-pluginbot-plusplus -h mumble.example.org ...

For the best debugging experience compile with debugging symbols and without optimizations:

CXX='clang++ -std=c++14' CXXFLAGS='-O0 -ggdb' ./configure

License

mumble-pluginbot-plusplus is licensed under the AGPLv3+ license. The original code is licensed under the MIT license.

Code structure

The code consists of several libtool libraries and a binary:

  • libaither - Contains a Log class with severity levels
  • libmumble-pluginbot-plusplus-io - Basic File I/O
  • libmumble-pluginbot-plusplus-network - TCP network socket
  • libmumble-pluginbot-plusplus-openssl - Wrapper for OpenSSL (certificate + SSL/TLS)
  • libmumble-pluginbot-plusplus-opus - libopus C++ wrapper
  • libmumble-pluginbot-plusplus-mumble - Utility classes to talk to a Mumble server
  • libmumble-pluginbot-plusplus-mpd - Utility classes to talk to a MPD server
  • mumble-pluginbot-plusplus - The main binary containing the core Bot and the enabled plugins