3
0
mirror of https://github.com/pragma-/pbot.git synced 2024-11-30 07:59:42 +01:00
Commit Graph

511 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
d8d26b1cea Add registerable atexit functionality and trap SIGINT 2014-05-16 22:11:31 +00:00
Pragmatic Software
b1cb9fa200 Reduce nick-flood limit to 3 within 30 minutes instead of within 1 hour 2014-05-16 22:10:55 +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
591dbd70ab Set generic default export websites in pbot.pl 2014-05-16 04:11:25 +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
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
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
ae1842e3db compiler_vm: Improve a couple of output sanitization regexs 2014-05-08 13:07:24 +00:00
Pragmatic Software
62d93c76c3 Remove left-over debugging print statements 2014-05-06 05:17:31 +00:00
Pragmatic Software
239e3de8ea Quotegrabs.pm now uses quotegrabs_db API for interfacing with storage backend
Two quotegrabs_db backends are now availble:

  * Quotegrabs_Hashtable.pm: the original hashtable implementation
  * Quotegrabs_SQLite.pm: the new SQLite implementation

Quotegrabs_SQLite.pm is now the default quotegrabs_db backend.

This was done to reduce the memory footprint of the bot by not needing to
keep the entire quotegrabs table in memory any longer.

A similiar change will be coming soon to the Factoids table as well as the
MessageHistory table.
2014-05-06 05:15:27 +00:00
Pragmatic Software
2c2b2c2e4b Truncate all messages beyond MAX_NICK_MESSAGES 2014-05-05 05:18:59 +00:00
Pragmatic Software
af447c2614 More nickometer tweaks 2014-05-02 03:57:19 +00:00
Pragmatic Software
8e07eb300e compiler_vm: add -Wshadow; support -include 2014-05-02 00:43:42 +00:00
Pragmatic Software
c1fa37f982 Tweaks to nickometer module 2014-05-01 23:20:15 +00:00
Pragmatic Software
a0b0cb8a74 Add nickometer module 2014-05-01 03:40:56 +00:00
Pragmatic Software
6de1023ee8 Use Getopt::Long to parse rq options 2014-04-30 21:37:28 +00:00
Pragmatic Software
cebcafba70 Do not allow RE2 to fallback to PCRE 2014-04-29 17:00:51 +00:00
Pragmatic Software
7fa458ab34 Do not expand me or remove trailing punctuation for factset/factchange 2014-04-29 04:05:20 +00:00
Pragmatic Software
595e6a34d2 Use DFA regex engine on user-supplied regexs to avoid potential denial-of-service attacks 2014-04-28 17:20:01 +00:00
Pragmatic Software
b35382109c Show random quotegrab: if nick_search begins with "#", assume they meant to specify channel_search 2014-04-28 01:52:49 +00:00
Pragmatic Software
96c57d80e5 Minor updates to various modules 2014-04-26 15:22:46 +00:00
Pragmatic Software
db66a47257 Update quotegrabs and factoids data 2014-04-26 15:21:00 +00:00
Pragmatic Software
ba8dc5195a Update PBot.html documentation 2014-04-26 15:20:38 +00:00
Pragmatic Software
f50fec1f90 Fix failed substitution of undefined variables 2014-04-26 15:19:55 +00:00
Pragmatic Software
76cd4965f1 compiler_vm: allow ()'s around function identifiers; e.g. int (main)(void) {} 2014-04-26 15:17:11 +00:00
Pragmatic Software
fc1e372908 Update C-Faq module to use latest questions and links 2014-04-22 15:10:10 +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
b642460d84 Don't allow spaces in factoid keywords 2014-04-19 10:37:03 +00:00
Pragmatic Software
030fed38f2 Allow kicking from private message 2014-04-19 10:35:27 +00:00
Pragmatic Software
b3ab3bae8f Remove extraneous debug logging statements 2014-04-19 10:34:21 +00:00
Pragmatic Software
f003ff1178 Add unquote_spaces factoid module metadata to remove escaped quotes from quotemeta, and allow g modifier to modulelauncher_subpattern 2014-04-19 10:32:49 +00:00
Pragmatic Software
08e300bd54 compiler_vm: bump "Same output" length case to 22 to allow repetitions of "Success (no output)" 2014-04-07 07:24:14 +00:00
Pragmatic Software
f347c6d1e3 Update man.pl to use newer manpage, and minor formatting fixes 2014-04-07 05:12:00 +00:00
Pragmatic Software
7367e4f18c Include action_with_args in factoids export 2014-04-07 04:50:00 +00:00
Pragmatic Software
736056b586 compiler_vm: Don't display "Same output" unless length of output is greater than 10 characters 2014-04-03 07:54:35 +00:00
Pragmatic Software
8a7c539e0f compiler_vm: print "Same output" only if same output is within 10 minutes of last snippet otherwise print actual output again 2014-04-03 07:47:19 +00:00
Pragmatic Software
b2544d9d5a compiler_vm: remember last output per channel and print "Same output." if the current output matches the last output 2014-04-02 23:48:43 +00:00
Pragmatic Software
4e8aa560e8 Use proper letter-casing of nick in recall command results 2014-04-02 01:58:35 +00:00
Pragmatic Software
1ec463f021 compiler_vm: Remember last keyword when chaining together "and" statements in editor
This allows the more natural "replace 'a' with 'b' and 'c' with 'd'" syntax
rather than the previous syntax of "replace 'a' with 'b' and replace 'c' with 'd'"
2014-04-02 00:23:14 +00:00
Pragmatic Software
474f7ed168 Remove compiler_vm ability to execute .gdbinit commands 2014-03-24 15:37:54 +00:00
Pragmatic Software
f13adc1500 Fix derp in math.pl 2014-03-24 03:10:08 +00:00
Pragmatic Software
cb6d811ba2 Minor improvements to math.pl 2014-03-24 03:05:48 +00:00
Pragmatic Software
2a933bff87 Improve math.pl to support specific math functions (e.g., sqrt, etc) 2014-03-24 02:25:37 +00:00
Pragmatic Software
ee3fddf1eb expand_macros.pl doesn't require a nick argument any longer, correct ARGV count 2014-03-22 18:52:54 +00:00
Pragmatic Software
8338b009d4 Properly handle preserve-whitespace; use modulelaucher_subpattern regex to correct whitespace 2014-03-18 14:55:34 +00:00
Pragmatic Software
e728276aca Add remove_reader() to SelectHandler and remove unnecessary foreground check from StdinReader's initialize() 2014-03-16 01:47:16 +00:00
Pragmatic Software
edd507b2e0 Show channel in quotegrabs getq command 2014-03-15 08:12:52 +00:00
Pragmatic Software
2faeeb2de8 Add -nick/-channel/-text options to quotegrabs rq command (also retaining original syntax) 2014-03-15 08:07:05 +00:00
Pragmatic Software
f998f974c0 Truncate module launcher piped result 2014-03-15 01:53:33 +00:00
Pragmatic Software
36b7e1fa6f Improve handling of interpreter result and module execution 2014-03-14 10:05:11 +00:00
Pragmatic Software
4a110848e9 Add SelectHandler class to register callbacks for selecting and reading handles; updating StdinReader to use SelectHandler 2014-03-14 05:51:15 +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
f2c556e5c7 Add utility to view/analyze message_history off-line 2014-03-11 00:05:58 +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
8afb73acc2 Fix "argument isn't numeric" warning 2014-03-10 06:39:30 +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
17ed2fb64a Remove extranous ) typo in "Displaying text" string 2014-03-07 16:51:18 +00:00
Pragmatic Software
80a29256ed Fix undefined variable $from when issuing commands from stdin 2014-03-07 16:50:35 +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
765e907aa7 Remove single-quotes from found-one-factoid keyword/action 2014-03-07 00:57:08 +00:00
Pragmatic Software
bff786666e compiler_vm: Add more standard headers to default set of includes 2014-03-06 21:52:44 +00:00
Pragmatic Software
bc261e0965 compiler_vm: Add ability to show/diff/copy another channel's snippet 2014-03-05 19:58:46 +00:00
Pragmatic Software
8cecad56d2 Minor refactor of HashObject initialize sub 2014-03-05 19:30:37 +00:00
Pragmatic Software
21bec3b1e4 Update quotegrabs data 2014-03-05 14:42:44 +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
d080a6ff89 factshow command now shows module action 2014-03-05 14:30:02 +00:00
Pragmatic Software
42c2554655 Add chanlist command to list channel data 2014-03-05 14:28:58 +00:00
Pragmatic Software
a5ae7478e1 compiler_vm: Add $channel argument to separate snippet history into per-channel/nick files 2014-03-04 21:40:51 +00:00
Pragmatic Software
921c9917a5 Add $channel special variable for factoids/modules that expands to $from parameter 2014-03-04 21:40:13 +00:00
Pragmatic Software
2a4c1bafd1 Don't ban if $a:account matches account 2014-03-04 10:50:12 +00:00
Pragmatic Software
c1f87bf177 Don't show regex escapes in factfind output 2014-03-04 10:48:08 +00:00
Pragmatic Software
ec6f146fa6 Don't show regex escapes in factfind output 2014-03-04 10:47:43 +00:00
Pragmatic Software
62c9477a73 Update factoids (use add_nick for prec/paren, etc) 2014-03-04 10:45:36 +00:00
Pragmatic Software
818ad29914 Remove need to pass nick as command-line parameter to expand/paren modules (use add_nick factoid metadata) 2014-03-04 10:43:28 +00:00
Pragmatic Software
9b2c374bbb Use export_site properly in Quotegrabs.pm 2014-03-03 10:33:34 +00:00
Pragmatic Software
f6c75f2b4f Factoids and Quotegrabs HTML exported tables can now be filtered 2014-03-03 09:24:33 +00:00
Pragmatic Software
f4275a4cc8 compiler_vm: more compiler output beautification 2014-03-01 20:25:42 +00:00
Pragmatic Software
4d0e23243b compiler_vm: minor beautification of compiler diagnostic output 2014-03-01 14:42:08 +00:00
Pragmatic Software
80a7a82221 Remove extranous flushall from compiler watchdog 2014-02-28 07:52:28 +00:00
Pragmatic Software
e72a8c04a2 Remove use of compiler output merger 2014-02-28 07:48:27 +00:00
Pragmatic Software
7a99175bd7 compiler_vm updates
- make compiler_output_merger.pl more resistant to being killed
  - support gcc 4.9.0's -fdiagnostics-show-caret 
    (disable in channel, enable in paste)
  - force a newline to be added to program output to prevent output
    from being buffered by output merger
2014-02-27 16:31:31 +00:00
Pragmatic Software
aa00540c8d compiler_vm: Hack to ensure gdb and prog streams are output in the correct order 2014-02-25 11:49:21 +00:00
Pragmatic Software
d66d3d2a31 compiler_vm: Add constants to easily customize time-out and nographic options in compiler_server.pl 2014-02-25 11:47:57 +00:00
Pragmatic Software
0b2b18d93a compiler_vm: separate program output and gdb output in watchdog to prevent crossing the streams 2014-02-25 05:40:44 +00:00
Pragmatic Software
91a9c69fa5 Interpreter: check for {} code command before regular commands 2014-02-25 03:47:12 +00:00
Pragmatic Software
f6edfce6b4 compiler_vm: Use random fortune instead of Ipsum for default input 2014-02-24 07:25:50 +00:00
Pragmatic Software
6e3dc6dba2 Add add_nick metadata key to tell modules to prepend nick to resulting text; unquote all spaces in module arguments 2014-02-24 00:58:00 +00:00