Commit Graph

51 Commits

Author SHA1 Message Date
Pragmatic Software 50c5c15fbd recall now skips nick-prefix and botnick-postfix messages 2016-12-09 15:31:36 -08:00
Pragmatic Software c2a2debf3e Nick-floods are now once again detected 2016-12-04 22:00:50 -08:00
Pragmatic Software ba7149f518 Add missing parentheses to recently added SQL statements 2016-12-01 05:18:56 -08:00
Pragmatic Software a4d23bc445 Er, use OR instead of AND... 2016-12-01 05:05:07 -08:00
Pragmatic Software d47edc100b Improve robustness of message history tracking 2016-12-01 04:57:25 -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 3fbefa6746 Put some alias linking messages behind a debug toggle 2016-11-16 19:15:45 -08:00
Pragmatic Software 2c554328c9 Whoops, do check-bans on join for unidentified users as well when extended-join capability is active 2016-08-30 02:14:21 -07:00
Pragmatic Software 08a26a70a7 Minor derp with log message 2016-08-26 04:52:38 -07:00
Pragmatic Software 2dea20130f Missed a spot 2016-08-26 04:31:51 -07:00
Pragmatic Software c13f3ae9dc Catch more rare scenarios for strongly linking accounts 2016-08-26 04:02:30 -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 8792633b6a Minor improvement to `aka -w` 2016-02-17 14:56:57 -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 4ef978963c Improve `unbanme` behavior 2016-01-16 16:55:48 -08:00
Pragmatic Software 742eb849e8 Remove duplicate blank line 2015-11-20 21:02:21 -08:00
Pragmatic Software 01f543b3b7 Fix recall from /msg not ignoring the command itself 2015-09-30 09:51:04 -07:00
Pragmatic Software 675760289c Allow wild-card in recall/grab text
Do not iterate through weak links when looking for also-known-as
2015-09-03 20:49:06 -07:00
Pragmatic Software 3fa12c208e Improve handling of word-boundaries in searches 2015-08-16 05:20:57 -07:00
Pragmatic Software 35653cb996 Add word-boundaries around text searches 2015-08-05 12:28:15 -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 2ae493f1c2 Add `count` option to `recall` command 2015-06-15 17:58:25 -07:00
Pragmatic Software 4db125c3c2 Improve account-tracking and ban-evasion for Freenode irccloud.com web gateways 2015-06-13 16:08:57 -07:00
Pragmatic Software 351385cb67 Properly recurse through all linked ids when getting AKAs; optimize Aliases table and AKA function 2015-05-22 04:23:51 -07:00
Pragmatic Software d7d6083a25 Add ability to show alias relationships in `aka` command 2015-05-12 21:46:40 -07:00
Pragmatic Software 20aeeea634 Add `akalink` and `akaunlink` commands 2015-05-12 12:59:45 -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 7f87730de8 Improve handling of Nickserv accounts in check-bans and unbanme 2015-03-27 04:08:47 -07:00
Pragmatic Software b23935b8dc Create SQLite index for Messages table
This significantly speeds up certain SQL actions on
the Messages table that were done for anti-flood detection.

The bot should now be significantly more quicker to catch
floods promptly without delay.

(Also, comment out some logging messages. Perhaps revisit this
and wrap them with a debug registry variable instead.)
2015-02-15 20:30:28 -08:00
Pragmatic Software f8b6b19398 Show only chat messages in `recall` surrounding context (no joins/quits/etc) 2015-01-23 13:50:14 -08:00
Pragmatic Software 5ab76e6e6c Add -x/-context <nick> flag to limit recall -before/-after context to that nick 2015-01-23 11:44:38 -08:00
Pragmatic Software b806a473d2 Add ability to get surrounding message context in recall command
Add the -b/-before and -a/-after flags to the `recall` command to display
that many lines of surrounding context.

For example, `recall -c ##c -b 100` will show the last 100 messages in the ##c
channel.

Another example, `recall pragma- 50 -b 5 -a 5` will show the 5 messages before the 50th
most recent message spoken by pragma- and then show that 50th message and finally show
the 5 messages after it.
2015-01-23 07:36:39 -08:00
Pragmatic Software f70e044a60 Update latest hostmask last_seen timestamp when linking accounts 2014-10-14 02:33:13 +00:00
Pragmatic Software 750b78cb53 quotemeta doesn't escape underscores, whoops -- manually escape underscores for Message History SQL statements 2014-10-01 21:18:54 +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 46b5b95d54 Escape undesired SQL wildcards in certain statements; add `aka` command to list also-known-as entries 2014-07-11 12:57:18 +00:00
Pragmatic Software b9433127d1 Improve wildcard handling 2014-05-31 01:08:01 +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 5c14727fd1 Add SQLite logger and profiler functionality 2014-05-20 10:17:01 +00:00
Pragmatic Software ac45cf8036 Timer can now update timeout interval by timer id; add timer interval to registry for LagChecker and MessageHistory_SQLite 2014-05-19 10:30:25 +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 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 cd54dcb573 Track and handle nick-change events; add anti-nick-flood detection 2014-05-16 00:48:46 +00:00
Pragmatic Software 92b4ef00cf Improve `recall` command with better capabilities
The nick field is now optional and Getopt::Long is used to accept targeted
options for channel/history, allowing recalls by text/channel for any nick
which is useful when you know what text the message contained but not who
said it.
2014-05-14 21:23:59 +00:00
Pragmatic Software dad69fb0c8 Use AutoInactiveDestroy attribute to fix SQLite I/O error due to DBH handle being destroyed when forked process exits 2014-05-13 20:14:38 +00:00
Pragmatic Software ae6f3a6b3d Don't skip begin_work() if commit() fails 2014-05-13 15:18:33 +00:00
Pragmatic Software 11efde4d0d Comment out some verbose debugging log statements 2014-05-13 15:09:29 +00:00