Commit Graph

217 Commits

Author SHA1 Message Date
Pragmatic Software e07df35cbf Move command modules out of PBot.pm and into their respective modules
E.g., FactoidCommands.pm is now loaded inside Factoids.pm, etc.

Misc reformatting/refactoring of PBot.pm
2014-05-18 00:27:57 +00:00
Pragmatic Software d955bfa06c Add centralized configuration registry module
Allows changing of bot configuration values without needing to restart
bot instance or needing to edit pbot.pl script.

Registry will initially be populated with default values from pbot.pl,
but if a registry file exists then the registry values will take
precedence over the pbot.pl values. For instance, if you regset the
bot trigger to '%' then the trigger will be '%' even if pbot.pl has '!'
or something else explicitly set.

Some registry items can have trigger hooks associated with them.  For
instance, the irc->botnick registry entry has a change_botnick_trigger
associated with it which changes the IRC nick on the server when a new
value is set via regset/regadd.

Tons of other fixes and improvements throughout.
2014-05-17 20:08:19 +00:00
Pragmatic Software 2e2188532c Correct logic for Guest nick-change allowance 2014-05-16 05:58:21 +00:00
Pragmatic Software a7681c36cb Don't enforce nick anti-flood for services-mandated changes to Guest nick 2014-05-16 05:53:39 +00:00
Pragmatic Software cd54dcb573 Track and handle nick-change events; add anti-nick-flood detection 2014-05-16 00:48:46 +00:00
Pragmatic Software 1f242aeec4 Detect and handle KICK events 2014-05-15 15:49:56 +00:00
Pragmatic Software f8fc04f6e5 Distinct JOIN and DEPARTURE events to improve join-flood detection, etc 2014-05-15 01:39:33 +00:00
Pragmatic Software 11efde4d0d Comment out some verbose debugging log statements 2014-05-13 15:09:29 +00:00
Pragmatic Software 54ac8ec0ef Convert message history to use SQLite database instead of Perl hashtable
Added MessageHistory.pm and MessageHistory_SQLite.pm.  May eventually port
and add MessageHistory_Hashtable.pm as was done with Quotegrabs, but this is
not particularly high on the todo list.

Antiflood.pm has been updated to use the new MessageHistory API.

The `recall` command has been moved from Quotegrabs into MessageHistory.  It
also now has the ability to ignore messages containing the recall command
itself, for improved usability.

Likewise, the `grab` command will now ignore previous `grab` commands when
grabbing by regex in order to prevent accidentally grabbing previous grab
attempts.

The `join` and `part` commands have been improved to accept multiple channels,
and `part` will use the current channel if none is provided.
2014-05-13 10:15:52 +00:00
Pragmatic Software 2c2b2c2e4b Truncate all messages beyond MAX_NICK_MESSAGES 2014-05-05 05:18:59 +00:00
Pragmatic Software 6dabff19bb Fix ban evasion kicking 2014-04-21 07:26:06 +00:00
Pragmatic Software 8cd59b25da Fix chanop command execution, kick ban evaders 2014-04-19 10:38:16 +00:00
Pragmatic Software 1831d0775d anti-flood: Enter abuse now requires 10 seconds or less between messages 2014-03-13 12:00:28 +00:00
Pragmatic Software 087c819069 anti-flood: Add enter-key abuse tracking; use duration() for displaying ban-lengths; save message history after prune 2014-03-12 22:13:05 +00:00
Pragmatic Software fe020443bb anti-flood: Set hostmask to last known nickserv account when checking accounts until nick without account is found 2014-03-10 08:15:33 +00:00
Pragmatic Software bd3fa4dee3 anti-flood: Improve linking of accounts 2014-03-10 06:28:56 +00:00
Pragmatic Software e808286f24 anti-flood: Now tracks if a user uses different NickServ accounts, and remembers each one for ban-evasion detection 2014-03-10 03:50:02 +00:00
Pragmatic Software e6e02259e4 anti-flood: execute whois command more smartly 2014-03-09 07:15:50 +00:00
Pragmatic Software 3bd73c4866 Improvements to anti-flood message history storage and maintenance 2014-03-09 06:56:48 +00:00
Pragmatic Software 4bcd485c2e Anti-flood: remove some log messages to reduce noise; fix +q $a:account detection 2014-03-07 16:48:56 +00:00
Pragmatic Software e1c4c30743 Slight rewording of join-flood notification message to improve awareness of automatic unbanning 2014-03-05 14:32:24 +00:00
Pragmatic Software 2a4c1bafd1 Don't ban if $a:account matches account 2014-03-04 10:50:12 +00:00
Pragmatic Software 5a61f57f3c Use Storable to save/load message history hash
Reuse config_dir/data_dir variable in pbot.pl
2014-02-05 01:10:56 +00:00
Pragmatic Software ece84c23f8 Remove left-over nick/host lower-casing code 2013-11-17 17:05:20 +00:00
Pragmatic Software f618b29282 Do not lowercase hostmask/nicks in message history (quotegrab now preserves nick case) 2013-11-14 06:35:40 +00:00
Pragmatic Software 274193bed7 Allow quote grabbers to delete their own grabs 2013-10-26 02:39:54 +00:00
Pragmatic Software 1155205f0e Bot now keeps message history for itself -- can now be grabbed for quotegrabs 2013-10-22 18:57:08 +00:00
Pragmatic Software a4def7d653 Fix potential race-condition check-ban issue where a server could send a message immediately after someone is banned, causing them to be falsely detected as evading a ban 2013-10-14 11:53:34 +00:00
Pragmatic Software 7decfdf28a Correct devalidation and QUIT event issues 2013-09-14 01:56:00 +00:00
Pragmatic Software 23d2e57527 Added ability to lock factoids to prevent editing; improved detection of ban-evasion by devalidating accounts on part/quit and devalidating existing accounts that match a banmask when a ban occurs 2013-09-13 21:48:19 +00:00
Pragmatic Software a6f608cda5 Don't remove ban_timeout on -q (only +b/-b are tracked); use wildcard host when banning for evasion instead of specific host 2013-08-06 19:56:28 +00:00
Pragmatic Software 2a332d6415 Improve ban-evasion detection 2013-08-03 17:26:49 +00:00
Pragmatic Software 2509bcec64 Fix splitting of IPv6 masks in modes in IRC/Connection.pm
Include channel in "Unbanning ..." message in unban_user
Set target_nickserv_account if accounts match in check_bans
2013-07-30 09:50:59 +00:00
Pragmatic Software 7f2cefea7a Don't check for ban evasion on PARTs 2013-07-28 14:12:57 +00:00
Pragmatic Software d170f75924 Improve ban evasion detection 2013-07-28 10:31:12 +00:00
Pragmatic Software 416115f12f Ban timeouts hash converted to DualIndexHashObject to properly group masks by channels 2013-07-24 12:35:40 +00:00
Pragmatic Software dc52430044 Add SSL support, and other misc updates 2013-02-25 02:27:24 +00:00
Pragmatic Software 208f89837f Improve handling of auto-op and op-commands on per-channel basis
Restore functionality to log out admins when they part/quit
Improve display of quit messages in log
2012-10-27 21:03:10 +00:00
Pragmatic Software f61bb61aeb Channels: Properly check for arguments to chanadd/chanrem
HashObject: Fix potential divide by zero
compiler_vm: Limit cpu usage and kill processes using excess cpu
             Unbuffer stdout
2012-10-05 01:59:04 +00:00
Pragmatic Software 2b5ff48a4c Interpreter: tell <nick> about <command> now case-insensitive
AntiFlood: Correct use of ignore list
IgnoreList: Ignoring user without args now permanent instead of 5 mins
            Save time when ignore expires instead of seconds remaining
            Improve output of `ignore list` command for readability
2012-09-06 10:09:44 +00:00
Pragmatic Software 6b35dc210c Skip message containing grab command when grabbing own nick; match brackets for compiler-block; etc 2012-08-12 16:41:38 +00:00
Pragmatic Software 876d9fb5c6 Improved grab command to accept regex for history 2012-08-01 09:57:43 +00:00
Pragmatic Software 8a70c06096 Misc bug fixes and tweaks 2012-07-22 19:22:30 +00:00
Pragmatic Software dd7f84ceff bantracker: track +q and +b separately to prevent loss of information
bantracker: do not ban someone if their hostmask matches their +q mask
bantracker: remove ban timeouts on -q/-b
antiflood: unbanme will not work if manual ban/quiet set in place
2011-12-17 11:43:21 +00:00
Pragmatic Software d7dc16346c ban-tracker: track whether ban is +q or +b; do not ban evaders of generic +b bans ending with !*@*
anti-flood: improved logic of catching ban evaders
2011-12-15 06:18:10 +00:00
Pragmatic Software 036ae7cdfb antiflood: do not check accounts if no account 2011-12-12 23:33:39 +00:00
Pragmatic Software fa01bdde6f antiflood: fixed code indentation 2011-12-12 19:40:54 +00:00
Pragmatic Software 2fb0598a0e ban evasion: fixed whitelist logic 2011-12-12 16:40:22 +00:00
Pragmatic Software acbed6810f 2011-12-12 05:39:38 +00:00
Pragmatic Software 3b0b04f6e1 Corrected inverted ternary herp 2011-12-12 04:21:59 +00:00
Pragmatic Software 6dee494ffd bantracker: fixed derp 2011-12-12 04:17:03 +00:00
Pragmatic Software 44bef4bdb3 anti-flood: check for ban evasion on nick changes 2011-12-12 00:19:34 +00:00
Pragmatic Software 44ba3001cb Updated mode +q list tracking to updated freenode syntax; added ban whitelist (for evasion allowing) 2011-12-11 22:56:57 +00:00
Pragmatic Software 314eabaf3e Quotegrabs: added more information to getq (grab owner and timestamp)
Interpreter: remove leading and trailing whitespace from text to improve parsing
AntiFlood: Remove some log output, improve some other log output
2011-12-04 01:13:21 +00:00
Pragmatic Software 438b62552f anti-flood bantracker now more properly handles detection of proxying in multiple channels 2011-02-14 06:23:22 +00:00
Pragmatic Software cb20ac607e anti-flood bantracker now more properly handles detection of proxying in multiple channels 2011-02-13 23:44:05 +00:00
Pragmatic Software ea198bcab1 irchandlers: now handles multiple modes; e.g. -bbb-o
chanops: moved flushqueues to inside loop
anti-flood/bantracker: now tracks quiets as well as bans
anti-flood: should now ban proxied hosts using a banned nickserv account -- untested
2011-02-13 09:05:48 +00:00
Pragmatic Software b16b5f6275 anti-flood: nick changes now linked to same account via reference 2011-02-13 08:02:27 +00:00
Pragmatic Software b07306f530 IRC: wait for NickServ NOTICE before identifying 2011-02-12 05:30:44 +00:00
Pragmatic Software 9c17b4bc5a anti-flood: made some log messages more terse and readable 2011-02-11 06:52:43 +00:00
Pragmatic Software c4ed12b0cb anti-flood, IRC, etc: added support for tracking NickServ accounts; refactored flood message history to be keyed on hostmask instead of nick; placed message history channels into its own sub-key 2011-02-11 02:46:35 +00:00
Pragmatic Software 8d524089db anti-flood: added last offense timestamp; decrease offense counter once every 24 hours without offense 2011-01-27 06:17:39 +00:00
Pragmatic Software 45a2a66d0f Moved lag-checking code to LagChecker.pm; improved output of !lagcheck command 2011-01-24 23:56:55 +00:00
Pragmatic Software ed797ca5cf antiflood: change banfoward timeout first offense to start from 8 hours instead of 32 hours 2011-01-24 22:21:29 +00:00
Pragmatic Software c29a694359 antiflood: do not check flood if lag is uninitialized or is significant 2011-01-22 09:45:16 +00:00
Pragmatic Software 1f45da7615 antiflood: do not do anti-flood if lag is two seconds or greater 2011-01-22 09:39:39 +00:00
Pragmatic Software b11b660929 antiflood/pbot: added basic support for lag detection 2011-01-22 09:26:04 +00:00
Pragmatic Software d5ba966c53 antiflood: corrected check against double-banning chat floods 2011-01-22 04:42:38 +00:00
Pragmatic Software d2640f8bcb antiflood: remove generate_random_number; ping timeouts/excess floods no longer treated aggressively, now treated same as other quit/parts 2011-01-22 04:17:35 +00:00
Pragmatic Software 58f19984bf Display join flood history only if joinwatch >= max joins, to reduce log spam 2010-06-29 00:59:47 +00:00
Pragmatic Software fe6d08178b Anti-join flood bans for 2^5 hours for first offense instead of 2^7 hours (now uses 2^(4+number_of_offenses) hours as timeout) 2010-06-27 11:13:30 +00:00
Pragmatic Software 2d11d66b67 Replaced ago_exact with duration_exact in time comparison 2010-06-27 05:39:44 +00:00
Pragmatic Software 999d8ae4a8 Added Time::Duration to anti-flood join history 2010-06-27 05:36:58 +00:00
Pragmatic Software 521ae5c704 Anti-join flood bans for 2^5 hours for first offense instead of 2^7 hours (now uses 2^(4+number_of_offenses) hours as timeout) 2010-06-27 03:22:29 +00:00
Pragmatic Software a13d028e3e Lower-case hostmask and arguments to !unbanme 2010-06-22 03:01:02 +00:00
Pragmatic Software 38e7de9f41 Correct bug from refactoring AntiFlood.pm previously; no longer crashes on pruning message history 2010-06-21 11:04:07 +00:00
Pragmatic Software 52a6c7d125 Slightly refactored anti-join flood logic, handles QUITs better now 2010-06-21 03:18:39 +00:00
Pragmatic Software f1e227b64d Forward to ##stop_join_flood instead, since it has a candide-specific on-join msg and topic 2010-06-19 21:38:50 +00:00
Pragmatic Software 547087b81d Corrected join flood to get correct time distance between join messages 2010-06-19 19:19:56 +00:00
Pragmatic Software 41bb89eba2 Remove captcha from unbanme command 2010-06-18 11:12:55 +00:00
Pragmatic Software fe96faded8 unban_timeouts is now a HashObject -- consequently, unban timeouts now save to and load from data file 2010-06-18 10:46:23 +00:00
Pragmatic Software e32850aae2 Remove old ChanServ ban method and rename all quiet-related terms to ban-related terms since quiet now does +b instead of +q 2010-06-18 07:03:16 +00:00
Pragmatic Software 7c1bdecfcb Added missing use feature switch pragma 2010-06-18 04:17:30 +00:00
Pragmatic Software 24ef3b90e9 Use wildcard banmasks instead of original hostmasks 2010-06-18 04:15:28 +00:00
Pragmatic Software f29202c99c Converted Channels.pm (and all modules using channels object) to use HashObject -- can now add/remove channels and set/unset channel meta-data as user commands 2010-06-18 03:21:36 +00:00
Pragmatic Software be6e2ae8ab Significantly increase join flood ban timeout in order to reduce channel spam (made more feasible by !unbanme) 2010-06-18 00:49:50 +00:00
Pragmatic Software af7d55da0d Ban-forward join floods to ##fix_your_connection 2010-06-16 02:21:44 +00:00
Pragmatic Software 16b9bba71c Added captcha and !unbanme command to allow unbanning from join flood 2010-06-16 01:55:29 +00:00
Pragmatic Software 811e2e71d2 Ping timeout QUITs now properly added to each channel's message history 2010-06-12 07:48:01 +00:00
Pragmatic Software f14924a619 Add missing message to message history for QUITs; skip joinwatch on non-channels; add max_messages and max_timeout to QUIT/PART in IRCHandlers 2010-06-12 05:50:38 +00:00
Pragmatic Software 6eeb2277f2 Remove useless if(x < 0) check when incrementing x 2010-06-12 04:44:49 +00:00
Pragmatic Software 40ed750a1f Ping timeout quits now handled 2010-06-12 04:38:38 +00:00
Pragmatic Software ef3d9770ca Refactored AntiFlood account code -- much improved 2010-06-12 04:27:58 +00:00
Pragmatic Software 347bb86bac Correct variable $ch to $channel 2010-06-12 01:52:11 +00:00
Pragmatic Software a70d8a1fd5 Antiflood: deal with ping timeout quits aggressively 2010-06-12 01:49:49 +00:00
Pragmatic Software 4242eecf43 Correct joinwatch behavior for netsplits; remove joinwatch behavior for "Changing host" 2010-06-11 08:01:32 +00:00
Pragmatic Software 0ce7f52725 Correct joinwatch for new entries to message history 2010-06-11 04:26:20 +00:00
Pragmatic Software da7eb0b111 Make join flood more robust 2010-06-11 04:03:36 +00:00
Pragmatic Software b7cd3cfbfc Improving handling of join flooding -- decrement join count for netsplits and host changes; increase ban duration based on offense count; etc 2010-06-10 20:26:09 +00:00
Pragmatic Software 363dd1fc29 Show anti-flood timestamp comparisons for join floods only (to reduce log traffic) 2010-06-10 19:20:12 +00:00
Pragmatic Software 49bbf5c73e Temporary hack to skip hostmask entry when iterating channels in message history, will fix soon 2010-06-06 07:22:23 +00:00
Pragmatic Software 8a5c7a99c2 Remove debugging print statements from AntiFlood.pm 2010-06-06 05:22:07 +00:00
Pragmatic Software 96be537c39 AntiFlood now detects based on *!user@host instead of nick 2010-06-06 05:19:31 +00:00
Pragmatic Software 71847ddc63 Make anti-flood logs less spammy 2010-06-06 00:35:24 +00:00
Pragmatic Software 7bcfa52b25 Increase join flood detection to 4 joins within 30 minutes without a message; set join_watch -= 2 on join ban to allow two join attempts afterwards in order to give them a chance to rejoin 2010-06-05 17:45:41 +00:00
Pragmatic Software 4b342be290 Add join flood protection 2010-06-05 06:07:15 +00:00
Pragmatic Software 7399f4ff91 Replaced mode +q with mode +b for quieting; replaced nick!*@* with *!*@host in anti-flood; quiet commands take mask instead of nick 2010-05-30 02:02:29 +00:00
Pragmatic Software 1131ab32df Truncate long output to codepad.org 2010-04-13 04:17:54 +00:00
Pragmatic Software 654291e8a5 Commented out "Checking ..." in check message history 2010-04-09 22:53:17 +00:00
Pragmatic Software 0c54d9c93e Send message on private ignore; parse adlib variables better 2010-04-02 18:23:31 +00:00
Pragmatic Software f5bfe2dfda prune_message_history used old flood_watch instead of message_history -- fixed 2010-03-29 08:39:48 +00:00
Pragmatic Software a743261059 See Changes file 2010-03-26 05:14:03 +00:00
Pragmatic Software d299a8fb0f 90% done in object-oriented conversion -- IgnoreList doesnt save/load/use regex yet. 2010-03-24 06:47:40 +00:00
Pragmatic Software fa50724b58 Progressing on object-oriented conversion. Some functionality may be missing. 2010-03-23 18:24:02 +00:00
Pragmatic Software 313da0b587 Progressing on converting things to objects 2010-03-23 03:09:03 +00:00
Pragmatic Software bd46c11120 Half-way through converting everything to objects. Committing mostly working copy as preview. 2010-03-22 07:33:44 +00:00
Pragmatic Software f725743ccb == MAJOR NEW BETA RELEASE ==
Converted single large "amalgamate" monolithic pbot2.pl script into multiple Perl packages/modules.

Tons of refactoring and clean-ups.

Consider this version to be beta.  Use at your own risk.
2010-03-17 06:36:54 +00:00