Documentation for the self hosted Minerva spam protection bot
This bot is currently under development and only available by request.

Overview

Minerva is an anti-spam and abuse bot which is built to work with InspIRCd+Atheme networks. ## Setup Guide ### Cloning the repo Goto the directory where you would like to install minerva and run git clone https://www.github.com/BuddyIM/Minerva.git. This will clone the bot into a directory called Minerva. Enter that directory before you continue.

Installing node modules

Before you can run the bot, you will need to install the required modules. This can be done by running npm install from within the Minerva source directory.

Configuration

Here is an example configuration for an InspIRCd network running Atheme services.

{
    "irc":{
        "server":"irc.example.com",
        "port":6697,
        "secure":true,
        "channels":[
            "#minerva-logs",
            "#minerva-requests",
            "#services",
            "#lobby"
        ],
        "log_chan":"#minerva-logs",
        "debug_chan":"#services",
        "chanserv":"ChanServ",
        "nickserv":"NickServ",
        "operserv":"OperServ"
    },
    "identity":{
        "nickname":"Minerva",
        "username":"minerva",
        "realname":"Spam & Abuse Protection Bot",
        "oper_user":"minerva",
        "oper_pass":"password",
        "ns_user":"Minerva",
        "ns_pass":"password"
    },
    "requests":{
        "registered":true,
        "minUsers":5,
        "timeLimit":30
    },
    "rcon":{
        "port":2222,
        "bind_address":"127.0.0.1"
    },
    "spamProtection":{
        "capsPercent":60,
        "hlPercent":50,
        "kickScore":200,
        "dropRate":20,
        "similarity":{
            "ratio":0.6,
            "score":120
        },
        "gline_spam":true,
        "gline_mh":true,
        "gline_caps":false
    },
    "watchdog":{
        "oper":{
            "attempts":5,
            "timelimit":60,
            "action":"notice"
        },
        "nickserv":{
            "identify":{
                "attempts":10,
                "timelimit":60,
                "action":"gline"
            }
        },
        "chanserv":{
            "unban":{
                "attempts":10,
                "timelimit":60,
                "action":"notice"
            },
            "why":{
                "attempts":10,
                "timelimit":60,
                "action":"notice"
            }
        }
    },
    "exempt":{
        "nicknames":[
            "NickServ",
            "ChanServ",
            "OperServ",
            "MemoServ"
        ],
        "ip_addr":[
            "0.0.0.0",
            "127.0.0.1",
            "49.56.142.157",
            "149.56.142.163",
            "::1",
            "2607:5300:201:3100::13dd",
            "2607:5300:201:3100::299d"
        ]
    },
    "strings":{
        "kick_spam":"AKICK %c ADD *!*@%h !T 1h Automatic 1 hour ban: Spamming is not permitted in this channel.",
        "kick_mh":"AKICK %c ADD *!*@%h !T 1h Automatic 1 hour ban: Mass hilighting is not permitted in this channel.",
        "kick_caps":"KICK %c %n Automatic Kick: Excessive caps are not allowed in this channel.",
        "akill_spam":"AKILL ADD %n !T 1h Automatic G:Line, 1 hour: Spam is not permitted on this network.",
        "akill_mh":"AKILL ADD %n !T 1h Automatic G:Line, 1 hour: Spam is not permitted on this network.",
        "akill_caps":"AKILL ADD %n !T 10 Automatic G:Line, 10 minutes: Excessive caps are not permitted on this network.",
        "akill_bf_oper":"AKILL ADD %n !T 1d Automatic G:Line, 1 day: Excessive oper login attempts.",
        "akill_bf_ns_identify":"AKILL ADD %n !T 1h Automatic G:Line, 1 hour: Excessive NickServ login attempts.",
        "akill_bf_cs_why":"AKILL ADD %n !T 1h Automatic G:Line, 1 hour: Excessive usage of the ChanServ WHY command.",
        "akill_bf_cs_unban":"AKILL ADD %n !T 1h Automatic G:Line, 1 hour: Excessive usage of the ChanServ UNBAN command."
    }
}

Commands

Console commands

General commands

  • uptime: Displays the uptime of the server and the bot.
  • echo: Echos back the given text in the console.
  • whoami: Shows which user account you are currently logged in as.
  • exit: Exit’s the SSH session.

Channel commands

  • join: Joins the given channel.
  • part: Parts the given channel.
  • say: Sends a channel a given message.

IRC Commands

  • !request: Request the bot to join the given channel.
Tags: