1 2005-01-12 Clinton Ebadi <clinton@unknownlamer.org>
3 * source/UserList.C: Made to work with new Utils/StringTokenizer names
5 * source/UserCommands.C: Made to work with new
6 Utils/StringTokenizer names
8 * source/ShitList.C: Uses Utils.H now (Utils::trim_str & friends)
10 2005-01-11 Clinton Ebadi <clinton@unknownlamer.org>
12 * source/ShitList.C: Made to work with new StringTokenizer names
14 * source/ServerQueueItem.C: Made to work with new StringTokenizer names
16 * source/ServerQueue.C: Made to work with new Utils names
18 * source/ScriptCommands.C: Made work with new Utils names
20 * source/Person.C (getNick): Made work with new Utils names
22 * source/String.H: Added substr prototypes
24 * source/String.C (substr): Added substr as an alias of subString
25 (for compat with std::string before the transition)
27 * source/Parser.C: Made to work with new Utils/StringTokenizer names
29 * source/DCCParser.C: Made to work with new Utils names
31 * source/DCCChatConnection.C: Made to work new Utils names
33 * source/Commands.C: Made to work with new Utils names
35 * source/Channel.C: Made to work with new Utils names
37 * source/BotInterp.C: Made to work with new Utils
39 * source/Bot.C: Made to work with new Utils/StringTokenizer names
41 * source/String.C (operator=): Unremoved operator=(std::string)
43 * source/String.H: Unremoved operator=(std::string)
45 * source/BotConfig.C (read_config): Use Utils::trim_str
47 * source/String.C (trim): Fixed bug (p->s[i] == '\r', s/i/j/)
49 * source/Utils.C (trim_str): Implemented
51 * source/Utils.H: Added tim_str (replaces String::trim)
53 * source/BotConfig.C: Made everything work with new
54 StringTokenizer and Utils names
56 * source/Utils.H: Added to_lower
59 * source/StringTokenizer.C (rest): uses std::isspace instead of
60 checking st[pos] against ' ' and '\t'
62 * source/StringTokenizer.H: Removed CamelCasing
63 Renamed hasMoreTokens to more_tokens_p
65 * source/StringTokenizer.C: Converted to use std::string
67 * source/StringTokenizer.H: Converted to use std::string
69 * source/String.C: Removed operator=(std::string)
71 * source/String.H: Removed operator=(std::string)
73 * source/Utils.C: Added copyright
74 Reformatted to match GNU coding standard more closely
75 Converted everything to use std::string
76 (get_nick): Renamed from getNick
77 (get_userhost): Renamed from getUserHost
78 (get_key): Renamed from getKey
79 (IP_p): Renamed from isIP
80 (make_wildcard): Renamed from makeWildcard
81 (channel_p): Renamed from isChannel
82 (wildcard_p): Renamed from isWildcard
83 (valid_channel_name_p): Renamed from isValidChannelName
84 (valid_nickname_p): Renamed from isValidNickName
85 (get_level): Renamed from getLevel
86 (str2time): Renamed from strToTime
87 (str2time): Fixed potential buffer overflow (num[512] => std::string)
88 (level2str): Renamed from levelToStr
89 (prot2str): Renamed from protToStr
90 (bool2str): Renamed from boolToStr
91 (long2str): Implemented
92 (scm2str): Renamed from scm2String
93 (str2scm): Renamed from string2SCM
95 * source/BotConfig.C: Reformatted to fit GNU coding style more closely
97 * source/Utils.H: Added long2str (long int -> std::string)
99 * source/String.H: Added 2003 copyright (the year I last modified
102 * source/String.C: Added 2002 copyright (the year I last modified
105 * source/Utils.H: Updated Copyright
106 s/String/std::string/g
107 Removed camel casing and is* = *_p
110 * source/BotConfig.C: Updated Copyright
112 * source/BotConfig.H: Updated copyright
114 2005-01-08 Clinton Ebadi <clinton@unknownlamer.org>
116 * source/BotConfig.C (set_option_value): Take care of the case
117 where key is not already in the db
118 (add_watcher): Implemented
119 (read_config): Removed ',' token parsing (not needed)
121 * configure.ac: Add AC_LANG([C++]) so we can check for C++ libs
122 AC_CHECK_LIB ccgnu2 (CommonC++2)
124 * README: Updated README (reformatted, adding info, etc.)
126 2005-01-07 Clinton Ebadi <clinton@unknownlamer.org>
128 * source/BotConfig.C (set_option_value): call watcher list
129 (run_fun_): Added to support watcher list calling
131 2005-01-06 Clinton Ebadi <clinton@unknownlamer.org>
133 * source/BotConfig.C (set_option_value): Fuck you STL
134 (push_back_): Reimplemented so that it doesn't need std::bind1st
135 because the STL is being stupid
137 2004-12-26 Clinton Ebadi <clinton@unknownlamer.org>
139 * source/BotConfig.C (read_config): Implemented properly
140 (get_option_values): Implemented properly
141 (set_config_file): Fixed
143 2004-07-10 Clinton Ebadi <clinton@unknownlamer.org>
145 * bobot++.texinfo (Built-In Commands): Added empty stubs to the
148 2004-06-22 Clinton Ebadi <clinton@unknownlamer.org>
150 * source/BotConfig.C: New file (implementation of configuration database)
152 * source/BotConfig.H: New File (semi-generic configuration database)
154 2004-06-17 Clinton Ebadi <clinton@unknownlamer.org>
156 * bobot++.texinfo (Starting the Bot): New section
158 2004-06-14 Clinton Ebadi <clinton@unknownlamer.org>
160 * bobot++.texinfo (Protection): Added Section
161 (User Levels): Rewrote section to be useful
162 (bot.users): Added section
164 2004-06-12 Clinton Ebadi <clinton@unknownlamer.org>
166 * source/DCCChatConnection.C (connect): Checks to make sure the
167 person initiating a DCC CHAT with the bot is at least a FRIEND of
170 * README: Fixed a typo
172 * scripts/bobot-utils.scm (ctcp-quote): Implemented ctcp-quote
173 (bot:ctcp-quote): Renamed ctcp-quote to bot:ctcp-quite (whoops)
175 2004-05-28 Clinton Ebadi <clinton@unknownlamer.org>
177 * bobot++.texinfo (bot.conf): Finished section
178 (server syntax): New section, documents the bot.conf SERVER syntax
179 (channel syntax): New section, documentes the bot.conf CHANNEL syntax
181 2004-05-13 Clinton Ebadi <clinton@unknownlamer.org>
183 * source/Main.C (real_main): std::exit instead of exit
185 2004-05-12 Clinton Ebadi <clinton@unknownlamer.org>
187 * source/DCCConnection.C (DCCConnection): Intialized `nuh' in the
188 constructor with `n' This should fix the segfaulting.
190 2004-01-28 Clinton Ebadi <clinton@unknownlamer.org>
192 * ChangeLog: Updated copyright notice
194 2004-01-09 Clinton Ebadi <clinton@unknownlamer.org>
196 * source/Interp.C (interp_init_helper): Register
197 bot:change-command-level
199 * source/ScriptCommands.C (ChangeCommandLevel): Added
200 ChangeCommandLevel to change the level a user needs to be to run a
203 * source/ScriptCommands.H: Added ChangeCommandLevel
205 2003-10-12 Clinton Ebadi <clinton@unknownlamer.org>
207 * source/String.H: Changed #define STRING_H to BSTRING_H
209 2003-08-04 Clinton Ebadi <clinton@unknownlamer.org>
211 * scripts/bobot-utils.scm (bot:sent-to-me?): New procedure, used
212 to see if a message was sent to the bot (this is better than
213 bot:match-to-me because the hook isn't invalidated when the bot's
216 * source/DCCConnection.H: Added `nuh' back and added an
218 Added setter `set_autoRemove(bool)'
220 * source/DCCConnection.H: Removed all friends
221 Added accessors (get_bot, get_lastSpoken, get_autoRemove; get_bot
222 reveals the pointer to the bot [PRIVATE POINTER] which probably
223 isn't so nice, but there isn't much to be done about it with the
224 current design of the bot)
226 * source/DCCChatConnection.H: Removed all friends
228 * source/DCCConnection.H: DCCConnection is now a pure virtual
229 class with the subclass DCCChatConnection
231 2003-07-29 Clinton Ebadi <clinton@unknownlamer.org>
233 * source/Socket.C (connect): log errors to the bot log instead of
236 2003-07-23 Clinton Ebadi <clinton@unknownlamer.org>
238 * source/Parser.C (parseMessage): use the find method of std::map
239 to find the command to call instead of [] and then extract the
240 pointer to the userFunction from that if it exists. This appears
241 to fix the crash when one uses an undefined command followed by
244 2003-04-09 Clinton Ebadi <clinton@unknownlamer.org>
246 * source/Interp.C (interp_init_helper): Bind bot:setfloodrate to
247 ScriptCommands::SetFloodRate
249 * source/ScriptCommands.C (SetFloodRate): New Method: SetFloodRate
251 * source/Bot.C (init_user_functions): Make SETFLOODRATE available
254 * source/Bot.H: Made MAX_MESSAGES writeable
256 * source/UserCommands.H: New method: SetFloodRate
258 * source/Commands.H: New method: SetFloodRate
260 2003-04-03 Clinton Ebadi <clinton@unknownlamer.org>
262 * configure.ac: Merged all AC_OUTPUTs at the end
264 2003-04-02 Clinton Ebadi <clinton@unknownlamer.org>
266 * scripts/bobot-utils.scm: Make exported symbols from
267 the-bot-module available in the guile-user module so that scripts
268 loaded with Interp::Load function.
270 2003-03-30 Clinton Ebadi <clinton@unknownlamer.org>
272 * scripts/bobot-utils.scm (bot:load-module): Loads a file from the
273 %bot:loadpath into its own module and returns that (unnamed) module
274 (bot:use-module): Calls bot:load-module and then adds the newly
275 loaded module to the (current-module)'s use-list
277 * source/Interp.C (interp_init_helper): New procedure to initialize
278 the-bot-module (this is the old Interp::Startup verbatim)
279 (interp_post_startup_helper): New procedure to export
280 the-bot-module from bot_module
281 (Startup): Now calls interp_init_helper and
282 interp_post_startup_helper to initalize the bot module system
284 * source/Interp.H: Added private variable bot_module to Interp
286 2002-11-04 Clinton Ebadi <clinton@unknownlamer.org>
288 * scripts/bobot-utils.scm: Added bot: to regex functions (yes,
289 this breaks existing scripts, this is the unstable tree after all)
291 2002-11-03 Clinton Ebadi <clinton@unknownlamer.org>
293 * source/Mask.C (match): Made Mask::match case insensitive
295 2002-09-23 Clinton Ebadi <clinton@unknownlamer.org>
297 * source/Interp.C (scm_apply_wrapper): turned off locking of
298 Interp::mutex to see if this makes the bot work again...and it
301 2002-09-07 Clinton Ebadi <clinton@unknownlamer.org>
303 * configure.ac: Removed arguments to AM_INIT_AUTOMAKE and updated
304 everything to use aclocal/automake 1.6
306 2002-08-27 Clinton Ebadi <clinton@unknownlamer.org>
308 * source/DCCPerson.H (class DCCPerson): Added
309 UserCommands::DCCList as a friend (friends are better than the old
310 DCC() function at least).
312 * source/DCCManager.H (class DCCManager): Added
313 UserCommands::DCCList as a friend
315 * source/Interp.H (class Interp): Made function scm_apply_wrapper
316 a friend so it can lock Interp::mutex
318 * source/Interp.C (scm_apply_wrapper): Lock Interp::mutex if
319 MULTITHREAD is defined (it is always defined when scripting is
320 enabled) so that Sockets can be made multithreaded using
323 * source/DCCPerson.H: Removed DCC method and made Bot a friend
324 Made DCCManager a friend
326 * source/DCCManager.H (class DCCManager): Removed MAP() method
327 and made Bot a friend of DCCManager
329 2002-08-18 Clinton Ebadi <clinton@unknownlamer.org>
331 * source/Interp.C (Startup): Renamed bot:DCC-chat-send to
334 * bobot++.texinfo (Hook Types): Fixed a typo (I wrote
335 user!nick@host instead of the correct nick!user@host).
337 * source/Interp.C (Startup): Register bot:DCC-chat-send
339 * source/ScriptCommands.C (sendDCCChatMessage): Added method again
341 2002-08-08 Clinton Ebadi <clinton@unknownlamer.org>
343 * source/String.C (String): The std::string copy constructor now
344 extracts the c_str of the std::string and then takes the strlen of
345 that before copying it. This fixes a bug with DCC where if you did
346 e.g. "!help" the bot would reply with "No TOPIC PRIVMSG FOUND" or
347 something like that, depending on what the last message was
348 because Socket will insert a \0 into its semi-static buffer, so
349 the len of the String will not equal the strlen of its char*.
351 2002-08-07 Clinton Ebadi <clinton@unknownlamer.org>
353 * source/DCCPerson.H: Removed destructor (I = idiot)
355 * source/DCCConnection.H: DCCManager is now a friend of
356 DCCConnection (ugh, the bot has way too many friends).
358 * source/DCCPerson.H: Added DCC member that returns a const
359 DCCConnection* (the dcc connection). This isn't saved anywhere
360 because when a DCCPerson is destroyed, its connection is also
363 * source/Bot.H: dccConnections is now a DCCManager
365 * source/DCCPerson.H: Added destructor
366 Added handleInput method
368 * source/DCCManager.C: New file
369 (addConnection): Wrote method, add a DCCConection to the manager
371 * source/DCCManager.H: New file
373 * source/Interp.C (Startup): Register bot:DCC-chat-send
374 (Startup): Removed sendDCCChatMessage stuff
376 * source/ScriptCommands.C (sendDCCChatMessage): New method:
377 sendDCCChatMessage (to, message) sends message to to.
379 * source/DCCConnection.C (connect): Run DCC_CHAT_BEGIN hook with
380 one arg: from (user!nick@host).
382 * source/DCCParser.C (parseLine): Runs DCC_CHAT_MESSAGE hook with
383 two args: from (user!nick@host) and line
385 2002-08-06 Clinton Ebadi <clinton@unknownlamer.org>
387 * source/Interp.C (Startup): Two new Scheme values:
388 hooks/dcc/chat-begin and hooks/dcc/chat-message for the
389 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE hooks.
391 * source/BotInterp.H: Added two new enum values to Hook:
392 DCC_CHAT_BEGIN and DCC_CHAT_MESSAGE for the DCC chat start and DCC
395 2002-08-05 Clinton Ebadi <clinton@unknownlamer.org>
397 * source/Parser.C (parseCTCP): Removed call to htonl and fixed
398 DCC! Ack, sockets take their arguments in network byte order so
399 there is no need to convert to host...now DCC _sort of_ works.
401 2002-08-04 Clinton Ebadi <clinton@unknownlamer.org>
403 * source/UserList.C (save): Increment iterator twice to get around
406 * source/ServerQueue.C: Now sends SEND_* hooks instead of
407 triggered general hooks.
409 * source/Interp.C (Startup): New scheme side defines: hooks/send/*
410 (* = the new SEND_ hooks, but lowercase).
412 * source/BotInterp.H: New hook types (SEND_..., ... = ACTION,
413 CTCP, PUBLIC, MESSAGE). These are triggered on send messages.
415 2002-08-01 Clinton Ebadi <clinton@unknownlamer.org>
417 * source/Bot.C (set_log_file): Oops! Fixed logging. Now the bot
420 * source/Socket.C (readLine): Now uses a static std::string that
421 starts out with 512 chars. This will never need to be resized for
422 usualy IRC messages, but might be for DCC messages
424 2002-07-31 Clinton Ebadi <clinton@unknownlamer.org>
426 * scripts/bobot-utils.scm (not-from-me): New syntax.
428 * source/ScriptCommands.C (AddHook): Now takes another optional
429 arg--name that will name the hook (see the hooks section in the
430 manual for what this does).
432 * source/BotInterp.H: Added name field to Hook
434 2002-07-29 Clinton Ebadi <clinton@unknownlamer.org>
436 * source/ServerQueue.C (sendPrivmsg): Now calls hooks on own
437 PRIVMSGes because the IRC server doesn't echo them back to the
438 bot. This could be useful for something (e.g. log script).
440 2002-07-27 Clinton Ebadi <clinton@unknownlamer.org>
442 * source/Interp.C (Shutdown): Runs bot:exit-hook hooks
443 (Startup): New var for Scheme: bot:exit-hook. Calls the thunks
444 associated with the hook when Interp::Shutdown is called (bot exit).
446 2002-07-23 Clinton Ebadi <clinton@unknownlamer.org>
448 * source/BotInterp.H (Hook<): Changed behavior of Hook's <. If a
449 hook is greater than or less than the other hook, only the
450 priority is considered. However, if both hooks have the same
451 priority, then the fallthru-ness is considered, with fallthru
452 hooks being greater than non-fallthru hooks.
454 * source/BotInterp.C (hptr_lt): Added this static function to be
455 used to sort the hooks list (now hooks should be sorted using
456 Hook's operator < instead of using pointer comparision, meaning
457 the new hook system will work correctly)
459 * scripts/bobot-utils.scm: Make bot:log use for-each instead of
460 map because we don't need the result of the displays (this would
461 just be a list of #<undefined> values and is a waste of memory).
463 2002-07-13 Clinton Ebadi <clinton@unknownlamer.org>
465 * source/Bot.C (Bot): userFunctions is now a map for efficiency
466 (worst case search is now NlogN instead of N). This improvement is
467 not as drastic as the one gained by making the Parser functions
468 list a map (because we don't scan this map for every message), but
469 it helps to clean up the code
471 2002-07-12 Clinton Ebadi <clinton@unknownlamer.org>
473 * source/Parser.H: Removed userFunctionsStruct
475 * source/Interp.C (Startup): ScriptCommands::sendCTCP registered
476 as bot:send-CTCP for Scheme
478 * source/ScriptCommands.C (sendCTCP): Wrote sendCTCP
480 2002-07-11 Clinton Ebadi <clinton@unknownlamer.org>
482 * source/ServerQueue.C (sendUser): Changed . . in USER command to
483 0 * (which is the Right Way to because <mode> must be a number...)
485 * source/Parser.C (init): New method of Parse. This initalizes the
486 functions map. functions replaces the old functions array, and
487 should yield better performance (since the functions array had to
488 be scanned for every incoming message)
490 * source/Parser.H: New member, functions (private)
492 2002-07-10 Clinton Ebadi <clinton@unknownlamer.org>
494 * source/Interp.C (Startup): New symbols: bot:user-*
495 [none|user|trusted|friend|master] are defined in Scheme as the
496 different levels of the users.
497 (Startup): All bot-* variables are now bot:*
499 2002-07-09 Clinton Ebadi <clinton@unknownlamer.org>
501 * source/Bot.H: Made some variables private because they shouldn't
502 be changed at runtime
504 * source/Parser.C (parseCTCP): Reneabled DCC CHAT (I want to test
505 this out to see if it works and make it work)
507 * source/Bot.C (Bot::Bot): New var: logs_dir. Set to the log file
510 * scripts/bobot-utils.scm: Fixed a typo (I forgot the / after
511 scripts in the user scripts dir) that made bobot++ not able to
512 load scripts from the user scripts dir
514 2002-07-08 Clinton Ebadi <clinton@unknownlamer.org>
516 * source/BotInterp.C (RunHooks): Changed iterators to
517 reverse_iterators because the hooks list is sorted in ascending
518 order--higher priority and fallthrough hooks appear _after_ the
519 lower priority and non-fallthrough hooks.
521 * source/Main.C (print_long_help): Added function
522 (print_short_help): Renamed from printUsage
523 (namespace): Most stuff in here is now defined in an anonymouse
524 namespace so it doesn't have external linkage
525 (real_main): Uses getopt_long instead of getopt. Added several
526 command line arguments (bobotpp --help for a full list).
528 * scripts/bobot-utils.scm (bot-load): Function moved from
531 * source/Interp.C (Startup): Autoloads
532 PREFIX/bobotpp/scripts/bobot-utils.scm now
533 (Startup): New Scheme variable: bot-sys-scripts-dir (system
536 * source/bobot-scheme.scm.in: Removed
538 * source/Makefile.am: Removed bobot-scheme.scm compiliation
540 * configure.ac (PREFIX): configure.ac defined prefix now
542 * source/Main.C (real_main): Default configuration is now read
543 from /etc/bobotpp/default
544 * source/bobot-scheme.scm.in: Added file. This defines the
545 'bot-load' procedure which will load a file from
546 $HOME/.bobotpp/scripts/ or @datadir@/bobotpp/scripts/ if the
547 script doesn't exist in the user script dir.
549 2002-07-01 Clinton Ebadi <clinton@unknownlamer.org>
551 * bobot++.texinfo: Started docs (just a skeleton right now)
553 * source/ScriptCommands.C (AddHook): Now takes pri and fall opt
554 args to set a hooks priority and whether or not it will
555 fallthrough. These args are optional.
557 * source/Interp.C (Startup): addhook now takes 3 req and 2 opt args
559 * source/BotInterp.C (AddHook): Now uses priority and fallthrough
560 (RunHooks): exec fallthrough hooks first.
562 * source/BotInterp.H: Changed Hooks to have priority
563 Added fhooksMap to BotInterp (fallthrough)
565 * source/UserCommands.C (AddShit): Converted to use Commands
567 2002-06-21 Clinton Ebadi <clinton@unknownlamer.org>
569 * source/Commands.C (AddUser): Fixed a one-off (function call was
570 before a brace instead of after one) that caused a segfault when
571 the user mask was a wildcard
573 2002-06-20 Clinton Ebadi <clinton@unknownlamer.org>
575 * all files: Updated address of the FSF
577 * source/UserCommands.C (AddUser): Uses Commands now instead of
578 manipulating the bot directly
580 2002-06-18 Clinton Ebadi <clinton@unknownlamer.org>
582 * source/ScriptCommands.C (AddShit): Filled in function.
584 * source/Interp.C (Startup): Bind bot-adduser to
585 ScriptCommands::AddUser instead of Action
586 (Startup): Bind bot-addshit to ScriptCommands::AddShit
588 * source/ScriptCommands.C (AddUser): Filled in function
590 * source/ServerList.C (delServer): Changed (n - 1) to n...n-1
591 would have caused problems if you used more than one server
593 * source/Parser.H: Changed const char* to String in userFunctionStruct
595 * source/String.H: Added std::string compatibility members
597 * configure.ac: You can now disable Crypt and scripting
599 * source/*: Added #include "config.h" where needed
601 * configure.ac: Added AM_CONFIG_HEADER
603 * config.h.in: added file
605 * source/Queue.C: Didn't notice iostream.h here! Fixed
608 Copyright 2002,2003,2004 Clinton Ebadi
609 Copying and distribution of this file, with or without modification, are
610 permitted provided the copyright notice and this notice are preserved.