GithubHelp home page GithubHelp logo

empus / armour Goto Github PK

View Code? Open in Web Editor NEW
12.0 6.0 11.0 1.1 MB

Armour -- an advanced eggdrop channel protection script for IRC

Tcl 94.36% PHP 0.07% Shell 5.57%
dnsbl-lookups armour blacklist whitelist eggdrop-bots undernet floodnet-detection tcl

armour's People

Contributors

empus avatar telac-dk avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

armour's Issues

Add 'text' blacklist type

Allow blacklist entries of 'text' type to be added, for blacklisted word strings.

Possibly add wildcard only (much easier); or even regex entries too.

Support cumulative entries-- thereby also supporting a flexible 'repeat' match mechanism.

Enhance blacklist text entries

  • add the entry ID in warnings
  • allow warning to be sent to ops and reportchan
  • allow warning string to be configurable (with variable substitution for nick and ID)

Installation instructions

Currently, there are no install instructions for first time users. This must be written to INSTALL.md, potentially with a script for some basic setup.

Comments welcome on where people have struggled with initial setup. It will evolve as I receive feedback

Allow channel greets to be channel specific

Questions:

  • Should greets always be channel specific?
  • Should some privileged users be able to set global greetings?
  • Should the use of greetings be a channel specific setting, as well as global for the bot?

install.md not found

"Please refer to the separate file 'INSTALL.md' for instructions on initial setup."

Currently, there is no INSTALL.md at all in the rep, only README.md and UPDATING.md

login

on SSH
sqlite3 armour.db
SQLite version 3.27.2 2019-02-25 16:06:06
Enter ".help" for usage hints.
sqlite> INSERT INTO users (user,xuser,level,pass) VALUES('user1','user1',500,'foo' );
sqlite> .quit

on IRC
[21:17:40] <(s)pop> Rehashing.
[21:17:40] <(s)pop> [21:17:39] Rehashing ... (all went well)
[21:17:44] >pop< login user1 foo
[21:17:44] <(s)pop> [21:17:44] triggering bind userdb:msg:login
[21:17:44] <(s)pop> [21:17:44] userdb:uline:get: userlist get pass where user=user1
[21:17:44] <(s)pop> [21:17:44] userdb:uline:get: userlist get user where user=user1
[21:17:44] <(s)pop> [21:17:44] userdb:msg:login password mismatch for tabb, login failed
[21:17:44] <(s)pop> [21:17:44] triggered bind userdb:msg:login, user 0.342ms sys 3.485ms
[21:17:44] -pop- login failed.

Add channel line handling

Handling to react based on lines of text spoken.

Configuration to support below per client:
- Max lines of N per X seconds
- Action to take (warning via /notice to #channel or @#channel; kickban)
- Possible warning before violation is reached (maybe by %)
- Kick reason where appropriate

Configuration to support below per channel:
- Max lines of N per X seconds
- Modes to lockdown channel
- Period to lockdown channel (seconds)

*** Note, per channel settings may be optimistic and trigger annoying false positives.

cmdlog: general enhancements

  • new config option to prevent cmdlog to debug chan when command is given in that same chan
  • make use of user output conditional on user being logged in

Enhance list entries to support flags

  • noident: only match those with ~ in ident
  • onlykick: only kick matching blacklisted clients (do not place ban)
  • nochans: only match those who are seen in no other channels

Add clone handling

Config to support:
- Max of N per IP in channel
- Max of N IPs joining channel within X seconds
- Action to take (alert #channel or @#channel via /notice; kickban)
- Kick message, where appropriate

regex: allow backreferences in negative lookaheads

Tcl's regex engine is not as feature complete as PCRE and therefore does not support the use of backreferences in negative lookaheads. This means very useful regex patterns cannot be used to combat abuse (in blacklists).

This enhancement will create an abstraction layer for 'regexp' when dealing with whitelist and blacklist entries. Config option will determine method of regexp in use by the bot. This approach will utilise a Python script (using 're' for matching); for bot to pipe commands to.

The script will:

  • compile all existing patterns, for performance
  • allow commands: load; check; add; rem
  • support checks against whitelists and blacklists
  • support error checking and retries
  • be resilient in case malformed regex patterns exist (although this should not occur)
  • ideally support Python 2..7 and 3.x

Performance testing should be done against Tcl's built-in regexp command (iterating over many patterns).

Reduce unnecessary server messages

Restrict unnecessary WHO and WHOIS messages through client joins to multiple channels, by caching data in memory:

  • rname
  • xuser
  • IP
  • signon
  • channels -- should have a lifespan

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.