X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fmodules%2Fm_randquote.cpp;h=5cd8a8572f6f82ac6d72d316f08320175773e4ca;hb=eb4229deed0281ae566ef7e55a144e5d3183a4b2;hp=5db1c66acd59ce7ce28050f9e34ad3ca61de410f;hpb=df5761fd2f370bf2bc7d2174a45e26fde0e66e56;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/modules/m_randquote.cpp b/src/modules/m_randquote.cpp index 5db1c66ac..5cd8a8572 100644 --- a/src/modules/m_randquote.cpp +++ b/src/modules/m_randquote.cpp @@ -1,44 +1,84 @@ +/* +------------------------------------+ + * | Inspire Internet Relay Chat Daemon | + * +------------------------------------+ + * + * Inspire is copyright (C) 2002-2004 ChatSpike-Dev. + * E-mail: + * + * + * + * Written by Craig Edwards, Craig McLure, and others. + * This program is free but copyrighted software; see + * the file COPYING for details. + * + * --------------------------------------------------- + */ + #include #include #include - #include "users.h" #include "channels.h" #include "modules.h" +#include "helperfuncs.h" +Server *Srv = NULL; +FileReader *quotes = NULL; + +std::string q_file = ""; +std::string prefix = ""; +std::string suffix = ""; /* $ModDesc: Provides random Quotes on Connect. */ +void handle_randquote(char** parameters, int pcntl, userrec *user) +{ + std::string str; + int fsize; + char buf[MAXBUF]; + if (quotes) + { + fsize = quotes->FileSize(); + str = quotes->GetLine(rand() % fsize); + sprintf(buf,"NOTICE %s :%s%s%s",user->nick,prefix.c_str(),str.c_str(),suffix.c_str()); + Srv->SendServ(user->fd, buf); + } + return; +} + + + + class ModuleRandQuote : public Module { private: - Server *Srv; - ConfigReader *conf; - FileReader *quotes; - - std::string q_file; - std::string prefix; - std::string suffix; - + ConfigReader *conf; public: ModuleRandQuote() { Srv = new Server; conf = new ConfigReader; - + // Sort the Randomizer thingie.. + srand(time(NULL)); q_file = conf->ReadValue("randquote","file",0); prefix = conf->ReadValue("randquote","prefix",0); suffix = conf->ReadValue("randquote","suffix",0); if (q_file == "") { - printf("m_randquote: Quotefile not specified.. Please check your config.\n\n"); - exit(0); + log(DEFAULT,"m_randquote: Quotefile not specified - Please check your config."); + return; } - quotes = new FileReader(q_file); + if(!quotes->Exists()) + { + log(DEFAULT,"m_randquote: QuoteFile not Found!! Please check your config - module will not function."); + return; + } + /* Hidden Command -- Mode clients assume /quote sends raw data to an IRCd >:D */ + else Srv->AddCommand("QUOTE",handle_randquote,0,0,"m_randquote.so"); } virtual ~ModuleRandQuote() @@ -50,22 +90,15 @@ class ModuleRandQuote : public Module virtual Version GetVersion() { - return Version(1,0,0,0); + return Version(1,0,0,1,VF_VENDOR); } virtual void OnUserConnect(userrec* user) { - std::string str; - int fsize; - char buf[MAXBUF]; - - fsize = quotes->FileSize(); - srand(time(NULL)); - str = quotes->GetLine(rand() % fsize); - - sprintf(buf,"NOTICE %s :%s%s%s",user->nick,prefix.c_str(),str.c_str(),suffix.c_str()); - Srv->SendServ(user->fd, buf); - return; + // Make a fake pointer to be passed to handle_randquote() + // Dont try this at home kiddies :D + char *rar = "RAR"; + handle_randquote(&rar, 0, user); } }; @@ -93,4 +126,3 @@ extern "C" void * init_module( void ) { return new ModuleRandQuoteFactory; } -