1 2005-01-12 Clinton Ebadi <clinton@unknownlamer.org>
3 * source/BotConfig.C (read_config): Made to use set_option_value
4 instead of manipulating options_db directly
6 * source/BotConfig.H (class BotConfig): Add set_option_value that
7 takes a t_value instead of t_value_list (most uss of
8 set_option_value will be to add a single value so this is very useful)
10 * source/BotConfig.C (set_option_value): Implemented
12 * source/UserList.C: Made to work with new Utils/StringTokenizer names
14 * source/UserCommands.C: Made to work with new
15 Utils/StringTokenizer names
17 * source/ShitList.C: Uses Utils.H now (Utils::trim_str & friends)
19 2005-01-11 Clinton Ebadi <clinton@unknownlamer.org>
21 * source/ShitList.C: Made to work with new StringTokenizer names
23 * source/ServerQueueItem.C: Made to work with new StringTokenizer names
25 * source/ServerQueue.C: Made to work with new Utils names
27 * source/ScriptCommands.C: Made work with new Utils names
29 * source/Person.C (getNick): Made work with new Utils names
31 * source/String.H: Added substr prototypes
33 * source/String.C (substr): Added substr as an alias of subString
34 (for compat with std::string before the transition)
36 * source/Parser.C: Made to work with new Utils/StringTokenizer names
38 * source/DCCParser.C: Made to work with new Utils names
40 * source/DCCChatConnection.C: Made to work new Utils names
42 * source/Commands.C: Made to work with new Utils names
44 * source/Channel.C: Made to work with new Utils names
46 * source/BotInterp.C: Made to work with new Utils
48 * source/Bot.C: Made to work with new Utils/StringTokenizer names
50 * source/String.C (operator=): Unremoved operator=(std::string)
52 * source/String.H: Unremoved operator=(std::string)
54 * source/BotConfig.C (read_config): Use Utils::trim_str
56 * source/String.C (trim): Fixed bug (p->s[i] == '\r', s/i/j/)
58 * source/Utils.C (trim_str): Implemented
60 * source/Utils.H: Added tim_str (replaces String::trim)
62 * source/BotConfig.C: Made everything work with new
63 StringTokenizer and Utils names
65 * source/Utils.H: Added to_lower
68 * source/StringTokenizer.C (rest): uses std::isspace instead of
69 checking st[pos] against ' ' and '\t'
71 * source/StringTokenizer.H: Removed CamelCasing
72 Renamed hasMoreTokens to more_tokens_p
74 * source/StringTokenizer.C: Converted to use std::string
76 * source/StringTokenizer.H: Converted to use std::string
78 * source/String.C: Removed operator=(std::string)
80 * source/String.H: Removed operator=(std::string)
82 * source/Utils.C: Added copyright
83 Reformatted to match GNU coding standard more closely
84 Converted everything to use std::string
85 (get_nick): Renamed from getNick
86 (get_userhost): Renamed from getUserHost
87 (get_key): Renamed from getKey
88 (IP_p): Renamed from isIP
89 (make_wildcard): Renamed from makeWildcard
90 (channel_p): Renamed from isChannel
91 (wildcard_p): Renamed from isWildcard
92 (valid_channel_name_p): Renamed from isValidChannelName
93 (valid_nickname_p): Renamed from isValidNickName
94 (get_level): Renamed from getLevel
95 (str2time): Renamed from strToTime
96 (str2time): Fixed potential buffer overflow (num[512] => std::string)
97 (level2str): Renamed from levelToStr
98 (prot2str): Renamed from protToStr
99 (bool2str): Renamed from boolToStr
100 (long2str): Implemented
101 (scm2str): Renamed from scm2String
102 (str2scm): Renamed from string2SCM
104 * source/BotConfig.C: Reformatted to fit GNU coding style more closely
106 * source/Utils.H: Added long2str (long int -> std::string)
108 * source/String.H: Added 2003 copyright (the year I last modified
111 * source/String.C: Added 2002 copyright (the year I last modified
114 * source/Utils.H: Updated Copyright
115 s/String/std::string/g
116 Removed camel casing and is* = *_p
119 * source/BotConfig.C: Updated Copyright
121 * source/BotConfig.H: Updated copyright
123 2005-01-08 Clinton Ebadi <clinton@unknownlamer.org>
125 * source/BotConfig.C (set_option_value): Take care of the case
126 where key is not already in the db
127 (add_watcher): Implemented
128 (read_config): Removed ',' token parsing (not needed)
130 * configure.ac: Add AC_LANG([C++]) so we can check for C++ libs
131 AC_CHECK_LIB ccgnu2 (CommonC++2)
133 * README: Updated README (reformatted, adding info, etc.)
135 2005-01-07 Clinton Ebadi <clinton@unknownlamer.org>
137 * source/BotConfig.C (set_option_value): call watcher list
138 (run_fun_): Added to support watcher list calling
140 2005-01-06 Clinton Ebadi <clinton@unknownlamer.org>
142 * source/BotConfig.C (set_option_value): Fuck you STL
143 (push_back_): Reimplemented so that it doesn't need std::bind1st
144 because the STL is being stupid
146 2004-12-26 Clinton Ebadi <clinton@unknownlamer.org>
148 * source/BotConfig.C (read_config): Implemented properly
149 (get_option_values): Implemented properly
150 (set_config_file): Fixed
152 2004-07-10 Clinton Ebadi <clinton@unknownlamer.org>
154 * bobot++.texinfo (Built-In Commands): Added empty stubs to the
157 2004-06-22 Clinton Ebadi <clinton@unknownlamer.org>
159 * source/BotConfig.C: New file (implementation of configuration database)
161 * source/BotConfig.H: New File (semi-generic configuration database)
163 2004-06-17 Clinton Ebadi <clinton@unknownlamer.org>
165 * bobot++.texinfo (Starting the Bot): New section
167 2004-06-14 Clinton Ebadi <clinton@unknownlamer.org>
169 * bobot++.texinfo (Protection): Added Section
170 (User Levels): Rewrote section to be useful
171 (bot.users): Added section
173 2004-06-12 Clinton Ebadi <clinton@unknownlamer.org>
175 * source/DCCChatConnection.C (connect): Checks to make sure the
176 person initiating a DCC CHAT with the bot is at least a FRIEND of
179 * README: Fixed a typo
181 * scripts/bobot-utils.scm (ctcp-quote): Implemented ctcp-quote
182 (bot:ctcp-quote): Renamed ctcp-quote to bot:ctcp-quite (whoops)
184 2004-05-28 Clinton Ebadi <clinton@unknownlamer.org>
186 * bobot++.texinfo (bot.conf): Finished section
187 (server syntax): New section, documents the bot.conf SERVER syntax
188 (channel syntax): New section, documentes the bot.conf CHANNEL syntax
190 2004-05-13 Clinton Ebadi <clinton@unknownlamer.org>
192 * source/Main.C (real_main): std::exit instead of exit
194 2004-05-12 Clinton Ebadi <clinton@unknownlamer.org>
196 * source/DCCConnection.C (DCCConnection): Intialized `nuh' in the
197 constructor with `n' This should fix the segfaulting.
199 2004-01-28 Clinton Ebadi <clinton@unknownlamer.org>
201 * ChangeLog: Updated copyright notice
203 2004-01-09 Clinton Ebadi <clinton@unknownlamer.org>
205 * source/Interp.C (interp_init_helper): Register
206 bot:change-command-level
208 * source/ScriptCommands.C (ChangeCommandLevel): Added
209 ChangeCommandLevel to change the level a user needs to be to run a
212 * source/ScriptCommands.H: Added ChangeCommandLevel
214 2003-10-12 Clinton Ebadi <clinton@unknownlamer.org>
216 * source/String.H: Changed #define STRING_H to BSTRING_H
218 2003-08-04 Clinton Ebadi <clinton@unknownlamer.org>
220 * scripts/bobot-utils.scm (bot:sent-to-me?): New procedure, used
221 to see if a message was sent to the bot (this is better than
222 bot:match-to-me because the hook isn't invalidated when the bot's
225 * source/DCCConnection.H: Added `nuh' back and added an
227 Added setter `set_autoRemove(bool)'
229 * source/DCCConnection.H: Removed all friends
230 Added accessors (get_bot, get_lastSpoken, get_autoRemove; get_bot
231 reveals the pointer to the bot [PRIVATE POINTER] which probably
232 isn't so nice, but there isn't much to be done about it with the
233 current design of the bot)
235 * source/DCCChatConnection.H: Removed all friends
237 * source/DCCConnection.H: DCCConnection is now a pure virtual
238 class with the subclass DCCChatConnection
240 2003-07-29 Clinton Ebadi <clinton@unknownlamer.org>
242 * source/Socket.C (connect): log errors to the bot log instead of
245 2003-07-23 Clinton Ebadi <clinton@unknownlamer.org>
247 * source/Parser.C (parseMessage): use the find method of std::map
248 to find the command to call instead of [] and then extract the
249 pointer to the userFunction from that if it exists. This appears
250 to fix the crash when one uses an undefined command followed by
253 2003-04-09 Clinton Ebadi <clinton@unknownlamer.org>
255 * source/Interp.C (interp_init_helper): Bind bot:setfloodrate to
256 ScriptCommands::SetFloodRate
258 * source/ScriptCommands.C (SetFloodRate): New Method: SetFloodRate
260 * source/Bot.C (init_user_functions): Make SETFLOODRATE available
263 * source/Bot.H: Made MAX_MESSAGES writeable
265 * source/UserCommands.H: New method: SetFloodRate
267 * source/Commands.H: New method: SetFloodRate
269 2003-04-03 Clinton Ebadi <clinton@unknownlamer.org>
271 * configure.ac: Merged all AC_OUTPUTs at the end
273 2003-04-02 Clinton Ebadi <clinton@unknownlamer.org>
275 * scripts/bobot-utils.scm: Make exported symbols from
276 the-bot-module available in the guile-user module so that scripts
277 loaded with Interp::Load function.
279 2003-03-30 Clinton Ebadi <clinton@unknownlamer.org>
281 * scripts/bobot-utils.scm (bot:load-module): Loads a file from the
282 %bot:loadpath into its own module and returns that (unnamed) module
283 (bot:use-module): Calls bot:load-module and then adds the newly
284 loaded module to the (current-module)'s use-list
286 * source/Interp.C (interp_init_helper): New procedure to initialize
287 the-bot-module (this is the old Interp::Startup verbatim)
288 (interp_post_startup_helper): New procedure to export
289 the-bot-module from bot_module
290 (Startup): Now calls interp_init_helper and
291 interp_post_startup_helper to initalize the bot module system
293 * source/Interp.H: Added private variable bot_module to Interp
295 2002-11-04 Clinton Ebadi <clinton@unknownlamer.org>
297 * scripts/bobot-utils.scm: Added bot: to regex functions (yes,
298 this breaks existing scripts, this is the unstable tree after all)
300 2002-11-03 Clinton Ebadi <clinton@unknownlamer.org>
302 * source/Mask.C (match): Made Mask::match case insensitive
304 2002-09-23 Clinton Ebadi <clinton@unknownlamer.org>
306 * source/Interp.C (scm_apply_wrapper): turned off locking of
307 Interp::mutex to see if this makes the bot work again...and it
310 2002-09-07 Clinton Ebadi <clinton@unknownlamer.org>
312 * configure.ac: Removed arguments to AM_INIT_AUTOMAKE and updated
313 everything to use aclocal/automake 1.6
315 2002-08-27 Clinton Ebadi <clinton@unknownlamer.org>
317 * source/DCCPerson.H (class DCCPerson): Added
318 UserCommands::DCCList as a friend (friends are better than the old
319 DCC() function at least).
321 * source/DCCManager.H (class DCCManager): Added
322 UserCommands::DCCList as a friend
324 * source/Interp.H (class Interp): Made function scm_apply_wrapper
325 a friend so it can lock Interp::mutex
327 * source/Interp.C (scm_apply_wrapper): Lock Interp::mutex if
328 MULTITHREAD is defined (it is always defined when scripting is
329 enabled) so that Sockets can be made multithreaded using
332 * source/DCCPerson.H: Removed DCC method and made Bot a friend
333 Made DCCManager a friend
335 * source/DCCManager.H (class DCCManager): Removed MAP() method
336 and made Bot a friend of DCCManager
338 2002-08-18 Clinton Ebadi <clinton@unknownlamer.org>
340 * source/Interp.C (Startup): Renamed bot:DCC-chat-send to
343 * bobot++.texinfo (Hook Types): Fixed a typo (I wrote
344 user!nick@host instead of the correct nick!user@host).
346 * source/Interp.C (Startup): Register bot:DCC-chat-send
348 * source/ScriptCommands.C (sendDCCChatMessage): Added method again
350 2002-08-08 Clinton Ebadi <clinton@unknownlamer.org>
352 * source/String.C (String): The std::string copy constructor now
353 extracts the c_str of the std::string and then takes the strlen of
354 that before copying it. This fixes a bug with DCC where if you did
355 e.g. "!help" the bot would reply with "No TOPIC PRIVMSG FOUND" or
356 something like that, depending on what the last message was
357 because Socket will insert a \0 into its semi-static buffer, so
358 the len of the String will not equal the strlen of its char*.
360 2002-08-07 Clinton Ebadi <clinton@unknownlamer.org>
362 * source/DCCPerson.H: Removed destructor (I = idiot)
364 * source/DCCConnection.H: DCCManager is now a friend of
365 DCCConnection (ugh, the bot has way too many friends).
367 * source/DCCPerson.H: Added DCC member that returns a const
368 DCCConnection* (the dcc connection). This isn't saved anywhere
369 because when a DCCPerson is destroyed, its connection is also
372 * source/Bot.H: dccConnections is now a DCCManager
374 * source/DCCPerson.H: Added destructor
375 Added handleInput method
377 * source/DCCManager.C: New file
378 (addConnection): Wrote method, add a DCCConection to the manager
380 * source/DCCManager.H: New file
382 * source/Interp.C (Startup): Register bot:DCC-chat-send
383 (Startup): Removed sendDCCChatMessage stuff
385 * source/ScriptCommands.C (sendDCCChatMessage): New method:
386 sendDCCChatMessage (to, message) sends message to to.
388 * source/DCCConnection.C (connect): Run DCC_CHAT_BEGIN hook with
389 one arg: from (user!nick@host).
391 * source/DCCParser.C (parseLine): Runs DCC_CHAT_MESSAGE hook with
392 two args: from (user!nick@host) and line
394 2002-08-06 Clinton Ebadi <clinton@unknownlamer.org>
396 * source/Interp.C (Startup): Two new Scheme values:
397 hooks/dcc/chat-begin and hooks/dcc/chat-message for the
398 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE hooks.
400 * source/BotInterp.H: Added two new enum values to Hook:
401 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE for the DCC chat start and DCC
404 2002-08-05 Clinton Ebadi <clinton@unknownlamer.org>
406 * source/Parser.C (parseCTCP): Removed call to htonl and fixed
407 DCC! Ack, sockets take their arguments in network byte order so
408 there is no need to convert to host...now DCC _sort of_ works.
410 2002-08-04 Clinton Ebadi <clinton@unknownlamer.org>
412 * source/UserList.C (save): Increment iterator twice to get around
415 * source/ServerQueue.C: Now sends SEND_* hooks instead of
416 triggered general hooks.
418 * source/Interp.C (Startup): New scheme side defines: hooks/send/*
419 (* = the new SEND_ hooks, but lowercase).
421 * source/BotInterp.H: New hook types (SEND_..., ... = ACTION,
422 CTCP, PUBLIC, MESSAGE). These are triggered on send messages.
424 2002-08-01 Clinton Ebadi <clinton@unknownlamer.org>
426 * source/Bot.C (set_log_file): Oops! Fixed logging. Now the bot
429 * source/Socket.C (readLine): Now uses a static std::string that
430 starts out with 512 chars. This will never need to be resized for
431 usualy IRC messages, but might be for DCC messages
433 2002-07-31 Clinton Ebadi <clinton@unknownlamer.org>
435 * scripts/bobot-utils.scm (not-from-me): New syntax.
437 * source/ScriptCommands.C (AddHook): Now takes another optional
438 arg--name that will name the hook (see the hooks section in the
439 manual for what this does).
441 * source/BotInterp.H: Added name field to Hook
443 2002-07-29 Clinton Ebadi <clinton@unknownlamer.org>
445 * source/ServerQueue.C (sendPrivmsg): Now calls hooks on own
446 PRIVMSGes because the IRC server doesn't echo them back to the
447 bot. This could be useful for something (e.g. log script).
449 2002-07-27 Clinton Ebadi <clinton@unknownlamer.org>
451 * source/Interp.C (Shutdown): Runs bot:exit-hook hooks
452 (Startup): New var for Scheme: bot:exit-hook. Calls the thunks
453 associated with the hook when Interp::Shutdown is called (bot exit).
455 2002-07-23 Clinton Ebadi <clinton@unknownlamer.org>
457 * source/BotInterp.H (Hook<): Changed behavior of Hook's <. If a
458 hook is greater than or less than the other hook, only the
459 priority is considered. However, if both hooks have the same
460 priority, then the fallthru-ness is considered, with fallthru
461 hooks being greater than non-fallthru hooks.
463 * source/BotInterp.C (hptr_lt): Added this static function to be
464 used to sort the hooks list (now hooks should be sorted using
465 Hook's operator < instead of using pointer comparision, meaning
466 the new hook system will work correctly)
468 * scripts/bobot-utils.scm: Make bot:log use for-each instead of
469 map because we don't need the result of the displays (this would
470 just be a list of #<undefined> values and is a waste of memory).
472 2002-07-13 Clinton Ebadi <clinton@unknownlamer.org>
474 * source/Bot.C (Bot): userFunctions is now a map for efficiency
475 (worst case search is now NlogN instead of N). This improvement is
476 not as drastic as the one gained by making the Parser functions
477 list a map (because we don't scan this map for every message), but
478 it helps to clean up the code
480 2002-07-12 Clinton Ebadi <clinton@unknownlamer.org>
482 * source/Parser.H: Removed userFunctionsStruct
484 * source/Interp.C (Startup): ScriptCommands::sendCTCP registered
485 as bot:send-CTCP for Scheme
487 * source/ScriptCommands.C (sendCTCP): Wrote sendCTCP
489 2002-07-11 Clinton Ebadi <clinton@unknownlamer.org>
491 * source/ServerQueue.C (sendUser): Changed . . in USER command to
492 0 * (which is the Right Way to because <mode> must be a number...)
494 * source/Parser.C (init): New method of Parse. This initalizes the
495 functions map. functions replaces the old functions array, and
496 should yield better performance (since the functions array had to
497 be scanned for every incoming message)
499 * source/Parser.H: New member, functions (private)
501 2002-07-10 Clinton Ebadi <clinton@unknownlamer.org>
503 * source/Interp.C (Startup): New symbols: bot:user-*
504 [none|user|trusted|friend|master] are defined in Scheme as the
505 different levels of the users.
506 (Startup): All bot-* variables are now bot:*
508 2002-07-09 Clinton Ebadi <clinton@unknownlamer.org>
510 * source/Bot.H: Made some variables private because they shouldn't
511 be changed at runtime
513 * source/Parser.C (parseCTCP): Reneabled DCC CHAT (I want to test
514 this out to see if it works and make it work)
516 * source/Bot.C (Bot::Bot): New var: logs_dir. Set to the log file
519 * scripts/bobot-utils.scm: Fixed a typo (I forgot the / after
520 scripts in the user scripts dir) that made bobot++ not able to
521 load scripts from the user scripts dir
523 2002-07-08 Clinton Ebadi <clinton@unknownlamer.org>
525 * source/BotInterp.C (RunHooks): Changed iterators to
526 reverse_iterators because the hooks list is sorted in ascending
527 order--higher priority and fallthrough hooks appear _after_ the
528 lower priority and non-fallthrough hooks.
530 * source/Main.C (print_long_help): Added function
531 (print_short_help): Renamed from printUsage
532 (namespace): Most stuff in here is now defined in an anonymouse
533 namespace so it doesn't have external linkage
534 (real_main): Uses getopt_long instead of getopt. Added several
535 command line arguments (bobotpp --help for a full list).
537 * scripts/bobot-utils.scm (bot-load): Function moved from
540 * source/Interp.C (Startup): Autoloads
541 PREFIX/bobotpp/scripts/bobot-utils.scm now
542 (Startup): New Scheme variable: bot-sys-scripts-dir (system
545 * source/bobot-scheme.scm.in: Removed
547 * source/Makefile.am: Removed bobot-scheme.scm compiliation
549 * configure.ac (PREFIX): configure.ac defined prefix now
551 * source/Main.C (real_main): Default configuration is now read
552 from /etc/bobotpp/default
553 * source/bobot-scheme.scm.in: Added file. This defines the
554 'bot-load' procedure which will load a file from
555 $HOME/.bobotpp/scripts/ or @datadir@/bobotpp/scripts/ if the
556 script doesn't exist in the user script dir.
558 2002-07-01 Clinton Ebadi <clinton@unknownlamer.org>
560 * bobot++.texinfo: Started docs (just a skeleton right now)
562 * source/ScriptCommands.C (AddHook): Now takes pri and fall opt
563 args to set a hooks priority and whether or not it will
564 fallthrough. These args are optional.
566 * source/Interp.C (Startup): addhook now takes 3 req and 2 opt args
568 * source/BotInterp.C (AddHook): Now uses priority and fallthrough
569 (RunHooks): exec fallthrough hooks first.
571 * source/BotInterp.H: Changed Hooks to have priority
572 Added fhooksMap to BotInterp (fallthrough)
574 * source/UserCommands.C (AddShit): Converted to use Commands
576 2002-06-21 Clinton Ebadi <clinton@unknownlamer.org>
578 * source/Commands.C (AddUser): Fixed a one-off (function call was
579 before a brace instead of after one) that caused a segfault when
580 the user mask was a wildcard
582 2002-06-20 Clinton Ebadi <clinton@unknownlamer.org>
584 * all files: Updated address of the FSF
586 * source/UserCommands.C (AddUser): Uses Commands now instead of
587 manipulating the bot directly
589 2002-06-18 Clinton Ebadi <clinton@unknownlamer.org>
591 * source/ScriptCommands.C (AddShit): Filled in function.
593 * source/Interp.C (Startup): Bind bot-adduser to
594 ScriptCommands::AddUser instead of Action
595 (Startup): Bind bot-addshit to ScriptCommands::AddShit
597 * source/ScriptCommands.C (AddUser): Filled in function
599 * source/ServerList.C (delServer): Changed (n - 1) to n...n-1
600 would have caused problems if you used more than one server
602 * source/Parser.H: Changed const char* to String in userFunctionStruct
604 * source/String.H: Added std::string compatibility members
606 * configure.ac: You can now disable Crypt and scripting
608 * source/*: Added #include "config.h" where needed
610 * configure.ac: Added AM_CONFIG_HEADER
612 * config.h.in: added file
614 * source/Queue.C: Didn't notice iostream.h here! Fixed
617 Copyright 2002,2003,2004 Clinton Ebadi
618 Copying and distribution of this file, with or without modification, are
619 permitted provided the copyright notice and this notice are preserved.