]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_randquote.cpp
5be40bc6c5508d86050f6e4ce60838a2b2521815
[user/henk/code/inspircd.git] / src / modules / m_randquote.cpp
1 #include <stdio.h>
2 #include <stdlib.h>
3 #include <fstream>
4
5 #include "users.h"
6 #include "channels.h"
7 #include "modules.h"
8
9
10 /* $ModDesc: Provides random Quotes on Connect. */
11
12 class ModuleRandQuote : public Module
13 {
14  private:
15
16          Server *Srv;
17          ConfigReader *conf;
18          FileReader *quotes;
19
20          std::string q_file;
21          std::string prefix;
22          std::string suffix;
23          
24  public:
25         ModuleRandQuote()
26         {
27                 Srv = new Server;
28                 conf = new ConfigReader;
29
30                 q_file = conf->ReadValue("randquote","file",0);
31                 prefix = conf->ReadValue("randquote","prefix",0);
32                 suffix = conf->ReadValue("randquote","suffix",0);
33
34                 quotes = new FileReader(q_file);
35         }
36         
37         virtual ~ModuleRandQuote()
38         {
39                 delete Srv;
40                 delete conf;
41                 delete quotes;
42         }
43         
44         virtual Version GetVersion()
45         {
46                 return Version(1,0,0,0);
47         }
48         
49         virtual void OnUserConnect(userrec* user)
50         {
51                 std::string str;
52                 int fsize;
53                 char buf[MAXBUF];
54
55                 fsize = quotes->FileSize();
56                 srand(time(NULL));
57                 str = quotes->GetLine(rand() % fsize);
58                         
59                 sprintf(buf,"NOTICE %s :%s%s%s",user->nick,prefix.c_str(),str.c_str(),suffix.c_str());
60                 Srv->SendServ(user->fd, buf);
61                 return;
62         }
63 };
64
65
66 class ModuleRandQuoteFactory : public ModuleFactory
67 {
68  public:
69         ModuleRandQuoteFactory()
70         {
71         }
72         
73         ~ModuleRandQuoteFactory()
74         {
75         }
76         
77         virtual Module * CreateModule()
78         {
79                 return new ModuleRandQuote;
80         }
81         
82 };
83
84
85 extern "C" void * init_module( void )
86 {
87         return new ModuleRandQuoteFactory;
88 }
89