00001
00002
00003
00004
00005
00006
00007
00008 #include <typeinfo>
00009 #include <iostream>
00010 #include "globals.h"
00011 #include "modules.h"
00012 #include "ctables.h"
00013 #include "inspircd_io.h"
00014
00015
00016
00017 class ExtMode
00018 {
00019 public:
00020 char modechar;
00021 int type;
00022 bool default_on;
00023 int params_when_on;
00024 int params_when_off;
00025 ExtMode(char mc, int ty, bool d_on, int p_on, int p_off) : modechar(mc), type(ty), default_on(d_on), params_when_on(p_on), params_when_off(p_off) { };
00026 };
00027
00028 typedef std::vector<ExtMode> ExtModeList;
00029 typedef ExtModeList::iterator ExtModeListIter;
00030
00031 ExtModeList EMode;
00032
00033
00034 bool ModeDefined(char modechar, int type)
00035 {
00036 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
00037 {
00038 if ((i->modechar == modechar) && (i->type == type))
00039 {
00040 return true;
00041 }
00042 }
00043 return false;
00044 }
00045
00046
00047 bool ModeDefinedOn(char modechar, int type)
00048 {
00049 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
00050 {
00051 if ((i->modechar == modechar) && (i->type == type))
00052 {
00053 return i->params_when_on;
00054 }
00055 }
00056 return 0;
00057 }
00058
00059
00060 bool ModeDefinedOff(char modechar, int type)
00061 {
00062 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
00063 {
00064 if ((i->modechar == modechar) && (i->type == type))
00065 {
00066 return i->params_when_off;
00067 }
00068 }
00069 return 0;
00070 }
00071
00072
00073 bool AddExtendedMode(char modechar, int type, bool default_on, int params_on, int params_off)
00074 {
00075 EMode.push_back( ExtMode (modechar,type,default_on,params_on,params_off));
00076 return true;
00077 }
00078
00079
00080
00081
00082 Version::Version(int major, int minor, int revision, int build) : Major(major), Minor(minor), Revision(revision), Build(build) { };
00083
00084
00085
00086 Admin::Admin(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { };
00087
00088 Module::Module() { }
00089 Module::~Module() { }
00090 void Module::OnUserConnect(userrec* user) { }
00091 void Module::OnUserQuit(userrec* user) { }
00092 void Module::OnUserJoin(userrec* user, chanrec* channel) { }
00093 void Module::OnUserPart(userrec* user, chanrec* channel) { }
00094 void Module::OnPacketTransmit(char *p) { }
00095 void Module::OnPacketReceive(char *p) { }
00096 void Module::OnRehash() { }
00097 void Module::OnServerRaw(std::string &raw, bool inbound) { }
00098 bool Module::OnExtendedMode(userrec* user, chanrec* chan, char modechar, int type, bool mode_on, string_list ¶ms) { }
00099 Version Module::GetVersion() { return Version(1,0,0,0); }
00100
00101
00102
00103
00104
00105 Server::Server()
00106 {
00107 }
00108
00109 Server::~Server()
00110 {
00111 }
00112
00113 void Server::SendOpers(std::string s)
00114 {
00115 WriteOpers("%s",s.c_str());
00116 }
00117
00118 void Server::Log(int level, std::string s)
00119 {
00120 log(level,"%s",s.c_str());
00121 }
00122
00123 void Server::AddCommand(char* cmd, handlerfunc f, char flags, int minparams)
00124 {
00125 createcommand(cmd,f,flags,minparams);
00126 }
00127
00128 void Server::SendMode(char **parameters, int pcnt, userrec *user)
00129 {
00130 server_mode(parameters,pcnt,user);
00131 }
00132
00133 void Server::Send(int Socket, std::string s)
00134 {
00135 Write(Socket,"%s",s.c_str());
00136 }
00137
00138 void Server::SendServ(int Socket, std::string s)
00139 {
00140 WriteServ(Socket,"%s",s.c_str());
00141 }
00142
00143 void Server::SendFrom(int Socket, userrec* User, std::string s)
00144 {
00145 WriteFrom(Socket,User,"%s",s.c_str());
00146 }
00147
00148 void Server::SendTo(userrec* Source, userrec* Dest, std::string s)
00149 {
00150 WriteTo(Source,Dest,"%s",s.c_str());
00151 }
00152
00153 void Server::SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender)
00154 {
00155 if (IncludeSender)
00156 {
00157 WriteChannel(Channel,User,"%s",s.c_str());
00158 }
00159 else
00160 {
00161 ChanExceptSender(Channel,User,"%s",s.c_str());
00162 }
00163 }
00164
00165 bool Server::CommonChannels(userrec* u1, userrec* u2)
00166 {
00167 return (common_channels(u1,u2) != 0);
00168 }
00169
00170 void Server::SendCommon(userrec* User, std::string text,bool IncludeSender)
00171 {
00172 if (IncludeSender)
00173 {
00174 WriteCommon(User,"%s",text.c_str());
00175 }
00176 else
00177 {
00178 WriteCommonExcept(User,"%s",text.c_str());
00179 }
00180 }
00181
00182 void Server::SendWallops(userrec* User, std::string text)
00183 {
00184 WriteWallOps(User,"%s",text.c_str());
00185 }
00186
00187 bool Server::IsNick(std::string nick)
00188 {
00189 return (isnick(nick.c_str()) != 0);
00190 }
00191
00192 userrec* Server::FindNick(std::string nick)
00193 {
00194 return Find(nick);
00195 }
00196
00197 chanrec* Server::FindChannel(std::string channel)
00198 {
00199 return FindChan(channel.c_str());
00200 }
00201
00202 std::string Server::ChanMode(userrec* User, chanrec* Chan)
00203 {
00204 return cmode(User,Chan);
00205 }
00206
00207 std::string Server::GetServerName()
00208 {
00209 return getservername();
00210 }
00211
00212 std::string Server::GetNetworkName()
00213 {
00214 return getnetworkname();
00215 }
00216
00217 Admin Server::GetAdmin()
00218 {
00219 return Admin(getadminname(),getadminemail(),getadminnick());
00220 }
00221
00222
00223
00224 bool Server::AddExtendedMode(char modechar, int type, bool default_on, int params_when_on, int params_when_off)
00225 {
00226 }
00227
00228
00229 ConfigReader::ConfigReader()
00230 {
00231 fname = CONFIG_FILE;
00232 }
00233
00234
00235 ConfigReader::~ConfigReader()
00236 {
00237 }
00238
00239
00240 ConfigReader::ConfigReader(std::string filename) : fname(filename) { };
00241
00242 std::string ConfigReader::ReadValue(std::string tag, std::string name, int index)
00243 {
00244 char val[MAXBUF];
00245 ReadConf(fname.c_str(),tag.c_str(),name.c_str(),index,val);
00246 return val;
00247 }
00248
00249
00250 int ConfigReader::Enumerate(std::string tag)
00251 {
00252 return EnumConf(fname.c_str(),tag.c_str());
00253 }
00254
00255
00256 bool ConfigReader::Verify()
00257 {
00258 return true;
00259 }
00260
00261
00262 FileReader::FileReader(std::string filename)
00263 {
00264 file_cache c;
00265 readfile(c,filename.c_str());
00266 this->fc = c;
00267 }
00268
00269 FileReader::FileReader()
00270 {
00271 }
00272
00273 void FileReader::LoadFile(std::string filename)
00274 {
00275 file_cache c;
00276 readfile(c,filename.c_str());
00277 this->fc = c;
00278 }
00279
00280
00281 FileReader::~FileReader()
00282 {
00283 }
00284
00285 bool FileReader::Exists()
00286 {
00287 if (fc.size() == 0)
00288 {
00289 return(false);
00290 }
00291 else
00292 {
00293 return(true);
00294 }
00295 }
00296
00297 std::string FileReader::GetLine(int x)
00298 {
00299 if ((x<0) || (x>fc.size()))
00300 return "";
00301 return fc[x];
00302 }
00303
00304 int FileReader::FileSize()
00305 {
00306 return fc.size();
00307 }
00308
00309
00310 std::vector<Module*> modules(255);
00311 std::vector<ircd_module*> factory(255);
00312
00313 int MODCOUNT = -1;
00314
00315