3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-12-25 12:12:34 +01:00
Commit Graph

231 Commits

Author SHA1 Message Date
Pragmatic Software
63f1f973b0 Add missing return 0 to event handler 2016-12-16 19:22:42 -08:00
Pragmatic Software
c2a2debf3e Nick-floods are now once again detected 2016-12-04 22:00:50 -08:00
Pragmatic Software
d47edc100b Improve robustness of message history tracking 2016-12-01 04:57:25 -08:00
Pragmatic Software
ff51114a4f Missed a couple of account/ancestor replacements for nick-changes 2016-11-30 20:57:26 -08:00
Pragmatic Software
3091516cc6 Reduce scope of $ancestor to nick-changes only
Move message account debug log messages behind a debug toggle
2016-11-30 09:28:19 -08:00
Pragmatic Software
8ba4ffffe4 More robust coverage of aliases when managing message history accounts
When adding a new unknown hostmask to the message history accounts, we now
take significant advantage of the aliases table to find an existing account
id for the hostmask before assigning it a new account id.

Likewise, we now take significant advantage of the aliases table when looking
for a nick-change match.

Fix misc channel case-sensitivity issues, add missing last-seen hostmask
updates, reduce message account linking log verbosity level.
2016-11-29 01:50:49 -08:00
Pragmatic Software
3fd2519a87 Minor text change; don't aggressively pursue ping-timeouts 2016-09-23 18:32:00 -07:00
Pragmatic Software
87d02af264 check_bans now can do a dry-run 2016-09-02 02:12:20 -07:00
Pragmatic Software
d07458425f No need to WHOIS on joins if extended-join is available 2016-08-29 20:47:46 -07:00
Pragmatic Software
1442485d0b Support account-notify and extended-join capabilities 2016-08-28 03:49:27 -07:00
Pragmatic Software
ba6fb2c2d7 Improve linking of accounts 2016-08-25 01:41:32 -07:00
Pragmatic Software
857d1aa0d3 Refactor message account linking
Linking of message accounts is now significantly less likely to produce
false-positives.

Previously, any hostmasks with matching nick!*@* would be strongly linked
together.  This led to falsely-linking accounts, either inadvertently or
intentionally.

For example, Bob might also be known as Bob_ and Bobby,
but primarily uses Bob as his main nick.  Somebody else might join with
Bobby and end up being linked to Bob.  Now both Bob and the new Bobby are
linked together as the same person, but likely with different *!user@host.

Now if the new Bobby ever gets banned, then Bob will also end up being
banned for evading Bobby's ban.

This was a sore spot in the previous linking implementation.

This new implementation has several adjustments to more intelligently link
accounts only when they're proven beyond a reasonable doubt to be the same
person (e.g. by matching nickserv accounts, etc).

Consequently, rather than aggressively linking accounts and catching more
ban-evaders at the risk of potentially falsely-linking accounts and falsely
detecting innocent people as ban-evaders, this new implementation will instead
link accounts more reliably at the risk of potential ban-evaders not yet being
linked together and thus being able to evade a ban.

This is a more preferable and reasonable risk.  Active channel ops should be
able to catch any obnoxious ban-evaders that slip through this net.
2016-08-17 20:34:45 -07:00
Pragmatic Software
674a96431b Improve nick-change evasion detection logic 2016-07-15 14:09:29 -07:00
Pragmatic Software
ff7141a3d6 Minor improvements 2016-07-01 12:55:52 -07:00
Pragmatic Software
b87db378cf Do not trigger ban evasion if mask matches banmask; use *!*@host instead of *!user@ip-mask for evasions 2016-02-25 00:51:52 -08:00
Pragmatic Software
7bb18e00a7 Use binary attribute for CSV 2016-02-10 10:14:12 -08:00
Pragmatic Software
110c9cc548 Use CSV for GECOS field 2016-02-10 07:10:37 -08:00
Pragmatic Software
ddeef3cc62 Add support for GECOS 2016-02-10 03:42:42 -08:00
Pragmatic Software
0b5435bc7d Refactor whitelist 2016-01-26 19:23:03 -08:00
Pragmatic Software
4a3ec27d78 Improve whitelist functionality 2016-01-26 09:04:03 -08:00
Pragmatic Software
8ac4a5999d Add whitelist to blacklist check 2016-01-24 03:02:14 -08:00
Pragmatic Software
745686eb75 Update ban-whitelist to support user-whitelist 2016-01-23 06:03:47 -08:00
Pragmatic Software
4ef978963c Improve unbanme behavior 2016-01-16 16:55:48 -08:00
Pragmatic Software
4cd1211684 Improve unbanme handling
Sometimes people might join the channel uncloaked and get join-flood banned
with their uncloaked hostmask, and then later attempt to join the channel while
cloaked but the network will prevent them from joining since it checks their IP
address against the banlist in addition to their cloak.

Attempts to use unbanme while cloaked will look for a ban matching the cloak
instead of the IP address and will not find their uncloaked join-flood ban.

To fix this, we now traverse all known aliases/hostmasks for an individual
requesting a join-flood unban and remove any and all bans matching any of the
hostmasks linked to this individual.
2015-11-20 21:08:30 -08:00
Pragmatic Software
ebc7cb9579 Move enter-abuse logic to after chat flood logic to prevent enter-abuse warning and chat flood ban happening at the same time 2015-09-14 09:06:43 -07:00
Pragmatic Software
260b1405a7 Enforce nick-change flood on Guest nicks 2015-08-08 12:40:06 -07:00
Pragmatic Software
025a8bfc38 Set ##stop_join_flood bans in $channel-floodbans to reduce channel noise 2015-07-28 17:50:06 -07:00
Pragmatic Software
8cdad15207 Show enter-abuse warning message just before it would temp-ban
Fix address_to_mask regex
2015-07-21 13:44:42 -07:00
Pragmatic Software
850c8a0525 Add weak/strong also-known-as linking
PBot will now use weak links if the ip address portion of a hostmask
hasn't been seen in the last 48 hours in order to prevent false-positive
linking of dynamic ip addresses.

Weak links are excluded from ban-evasion logic.

Weak links can be manually upgraded to strong links with the `akalink`
command if a human confirms they are the same person through the `aka -w`
command.

Individuals with matching nicks or matching nickserv accounts, etc, will
automatically be strongly linked, as usual.
2015-07-15 00:18:57 -07:00
Pragmatic Software
6a6eff1150 Support nat cloaks for banmasks 2015-07-14 07:29:27 -07:00
Pragmatic Software
d302587829 Enter-abuse anti-flood settings can now be overridden per-channel 2015-07-09 07:15:32 -07:00
Pragmatic Software
8ed333ba96 Fix typo "has_unban_timeout" -> "has_ban_timeout" 2015-06-25 22:55:06 -07:00
Pragmatic Software
09c7437246 Use can_gain_ops/has_un[ban,mute]_timeout subroutines 2015-06-25 20:55:42 -07:00
Pragmatic Software
6b544e9bf4 Stop processing ban evasions immediately after first ban is detected 2015-06-20 17:48:42 -07:00
Pragmatic Software
b4539447a3 Improve check-ban logic 2015-06-20 00:20:23 -07:00
Pragmatic Software
8033213a7f Add options to disable anti-flood per-channel, and to disable enforcement for logged-in admins 2015-06-13 16:08:06 -07:00
Pragmatic Software
bf45c6cdde Improve ban evasion; show evaded ban in kick message 2015-06-05 22:26:55 -07:00
Pragmatic Software
4510d83153 unbanme now only works for the first offense
However, the 2nd offense now only earns a 1 hour ban to make up for this.
2015-05-15 17:51:50 -07:00
Pragmatic Software
9031d97910 Remove left-over debug messages 2015-05-12 12:59:22 -07:00
Pragmatic Software
fa6dad12cd Add Aliases table to MessageHistory
Improve linking of known aliases for users by using an aliases table
to track the linkages.

Improve check-bans implementation to use new aliases table for
significant performance gains and reduced resource usage.
2015-05-11 21:27:22 -07:00
Pragmatic Software
3776bef88a Reduce WHOIS queries when target joins multiple channels at once 2015-05-10 12:36:47 -07:00
Pragmatic Software
3be6755a61 Do not ignore last-spoken nick if nick is logged in bot admin
Add debug_enter_abuse registry entry
2015-05-06 21:10:55 -07:00
Pragmatic Software
7f87730de8 Improve handling of Nickserv accounts in check-bans and unbanme 2015-03-27 04:08:47 -07:00
Pragmatic Software
2e9f15b7e2 Support IPv6 banmasks 2015-03-23 04:18:33 -07:00
Pragmatic Software
9a52fffcdd Rename ShitList to BlackList; minor refactor of IgnoreList 2015-03-16 21:08:25 -07:00
Pragmatic Software
e604767517 Add support for shitlisting hostmasks 2015-03-15 13:52:30 -07:00
Pragmatic Software
7970018777 Improve handling of nick-change flood 2015-03-11 02:00:10 -07:00
Pragmatic Software
9f265a0f0e Do not enforce anti-flood on logged in bot admins 2015-02-15 20:16:37 -08:00
Pragmatic Software
800b097a34 Use NickList instead of MessageHistory for target channels 2015-02-14 04:03:18 -08:00
Pragmatic Software
e5909965f7 Move anti-away stuff to its own AntiAway.pm module; add /me actions to anti-away detection 2014-12-27 04:53:42 +00:00
Pragmatic Software
d1e7abc175 Add event dispatcher module to allow modules to dispatch events and
to register handlers to listen for events.

Update IRCHandlers module to use new event dispatcher to dispatch
irc.events.  Update several modules to register with dispatcher
to listen for irc.events.

Improve handling of reconnection upon unexpected disconnection.

Todo: update more things to use new event dispatcher logic.
2014-11-01 00:15:21 +00:00
Pragmatic Software
5a63fbd705 Auto-kick people who change nicks to a nick matching $bad_away_nicks 2014-10-28 20:35:33 +00:00
Pragmatic Software
a679b0ff15 Improve handling of KICK events wrt to message history 2014-10-14 02:32:22 +00:00
Pragmatic Software
83af062376 Fix case-sensitivity to show QUIT messages properly 2014-09-09 07:19:10 +00:00
Pragmatic Software
34d9a2a6d9 Appropriately wildcard /gateway/ hostmask bans 2014-08-18 14:57:12 +00:00
Pragmatic Software
654cce66a5 Improve check for ban-evasion when nick-change is detected 2014-08-12 05:51:21 +00:00
Pragmatic Software
23b725eeb8 Prevent warning about given/when; incorporate general offense counter in enter abuse offenses; decrement enter abuses once every 24 hours instead of once per hour 2014-07-11 12:54:56 +00:00
Pragmatic Software
35e150d2b6 Optimize ban-evasion logic to significantly reduce number of SQLite queries; add registry entry for debugging ban-evasion 2014-05-21 04:52:17 +00:00
Pragmatic Software
5ba8ab0a4b Do not ban nick-flood on non-channels 2014-05-20 22:24:58 +00:00
Pragmatic Software
39c0cd3fb5 Add registry entry to enable/disable antiflood enforcement 2014-05-20 10:14:09 +00:00
Pragmatic Software
710bbb76cc Add registry get_array_value() subroutine 2014-05-19 09:55:47 +00:00
Pragmatic Software
349afd4ae0 Correct enter_abuse_punishment default value 2014-05-19 04:30:36 +00:00
Pragmatic Software
937282a114 Add more values to registry for antiflood and lagchecker 2014-05-19 02:42:18 +00:00
Pragmatic Software
30e3c5ce35 Remove PBot getter/setters; move anti-flood registry defaults to AntiFlood.pm 2014-05-18 20:09:05 +00:00
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