]> git.netwichtig.de Git - user/henk/code/inspircd.git/blob - src/modules/m_randquote.cpp
887045a12c8f98291191b153c1fbc0fc2efcfac8
[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
31                 q_file = conf->ReadValue("randquote","file",0);
32                 prefix = conf->ReadValue("randquote","prefix",0);
33                 suffix = conf->ReadValue("randquote","suffix",0);
34
35                 if (q_file == "") {
36                         printf("m_randquote: Quotefile not specified.. Please check your config.");
37                         exit(0);
38                 }
39
40
41                 quotes = new FileReader(q_file);
42         }
43         
44         virtual ~ModuleRandQuote()
45         {
46                 delete Srv;
47                 delete conf;
48                 delete quotes;
49         }
50         
51         virtual Version GetVersion()
52         {
53                 return Version(1,0,0,0);
54         }
55         
56         virtual void OnUserConnect(userrec* user)
57         {
58                 std::string str;
59                 int fsize;
60                 char buf[MAXBUF];
61
62                 fsize = quotes->FileSize();
63                 srand(time(NULL));
64                 str = quotes->GetLine(rand() % fsize);
65                         
66                 sprintf(buf,"NOTICE %s :%s%s%s",user->nick,prefix.c_str(),str.c_str(),suffix.c_str());
67                 Srv->SendServ(user->fd, buf);
68                 return;
69         }
70 };
71
72
73 class ModuleRandQuoteFactory : public ModuleFactory
74 {
75  public:
76         ModuleRandQuoteFactory()
77         {
78         }
79         
80         ~ModuleRandQuoteFactory()
81         {
82         }
83         
84         virtual Module * CreateModule()
85         {
86                 return new ModuleRandQuote;
87         }
88         
89 };
90
91
92 extern "C" void * init_module( void )
93 {
94         return new ModuleRandQuoteFactory;
95 }
96