diff options
author | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2005-05-12 23:06:51 +0000 |
---|---|---|
committer | brain <brain@e03df62e-2008-0410-955e-edbf42e46eb7> | 2005-05-12 23:06:51 +0000 |
commit | 88dd74fc84b574f17673338c6d42123570f464da (patch) | |
tree | c8d310f7e39c6f5fa69d62d8363d9e410c7d95b9 /docs/module-doc/modules_8cpp-source.html | |
parent | 9c70fbb7c7c532baf0e02e144e93d259b13913dd (diff) |
Added docs for new smaller memory footprint classes
git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@1371 e03df62e-2008-0410-955e-edbf42e46eb7
Diffstat (limited to 'docs/module-doc/modules_8cpp-source.html')
-rw-r--r-- | docs/module-doc/modules_8cpp-source.html | 1737 |
1 files changed, 869 insertions, 868 deletions
diff --git a/docs/module-doc/modules_8cpp-source.html b/docs/module-doc/modules_8cpp-source.html index 9807b4f97..0dd52681c 100644 --- a/docs/module-doc/modules_8cpp-source.html +++ b/docs/module-doc/modules_8cpp-source.html @@ -192,888 +192,889 @@ <a name="l00185"></a><a class="code" href="modules_8cpp.html#a39">00185</a> <span class="keyword">typedef</span> nspace::hash_map<std::string, userrec*, nspace::hash<string>, <a class="code" href="structStrHashComp.html">StrHashComp</a>> <a class="code" href="modules_8cpp.html#a39">user_hash</a>; <a name="l00186"></a><a class="code" href="modules_8cpp.html#a40">00186</a> <span class="keyword">typedef</span> nspace::hash_map<std::string, chanrec*, nspace::hash<string>, <a class="code" href="structStrHashComp.html">StrHashComp</a>> <a class="code" href="modules_8cpp.html#a40">chan_hash</a>; <a name="l00187"></a><a class="code" href="modules_8cpp.html#a41">00187</a> <span class="keyword">typedef</span> nspace::hash_map<in_addr,string*, nspace::hash<in_addr>, <a class="code" href="structInAddr__HashComp.html">InAddr_HashComp</a>> <a class="code" href="modules_8cpp.html#a41">address_cache</a>; -<a name="l00188"></a><a class="code" href="modules_8cpp.html#a42">00188</a> <span class="keyword">typedef</span> std::deque<command_t> <a class="code" href="modules_8cpp.html#a42">command_table</a>; -00189 +<a name="l00188"></a><a class="code" href="modules_8cpp.html#a42">00188</a> <span class="keyword">typedef</span> nspace::hash_map<std::string, WhoWasUser*, nspace::hash<string>, <a class="code" href="structStrHashComp.html">StrHashComp</a>> <a class="code" href="modules_8cpp.html#a42">whowas_hash</a>; +<a name="l00189"></a><a class="code" href="modules_8cpp.html#a43">00189</a> <span class="keyword">typedef</span> std::deque<command_t> <a class="code" href="modules_8cpp.html#a43">command_table</a>; 00190 -<a name="l00191"></a><a class="code" href="modules_8cpp.html#a43">00191</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a39">user_hash</a> <a class="code" href="modules_8cpp.html#a43">clientlist</a>; -<a name="l00192"></a><a class="code" href="modules_8cpp.html#a44">00192</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a40">chan_hash</a> <a class="code" href="modules_8cpp.html#a44">chanlist</a>; -<a name="l00193"></a><a class="code" href="modules_8cpp.html#a45">00193</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a39">user_hash</a> <a class="code" href="modules_8cpp.html#a45">whowas</a>; -<a name="l00194"></a><a class="code" href="modules_8cpp.html#a46">00194</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a42">command_table</a> <a class="code" href="modules_8cpp.html#a46">cmdlist</a>; -<a name="l00195"></a><a class="code" href="modules_8cpp.html#a47">00195</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a47">MOTD</a>; -<a name="l00196"></a><a class="code" href="modules_8cpp.html#a48">00196</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a48">RULES</a>; -<a name="l00197"></a><a class="code" href="modules_8cpp.html#a49">00197</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a41">address_cache</a> <a class="code" href="modules_8cpp.html#a49">IP</a>; -00198 +00191 +<a name="l00192"></a><a class="code" href="modules_8cpp.html#a44">00192</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a39">user_hash</a> <a class="code" href="modules_8cpp.html#a44">clientlist</a>; +<a name="l00193"></a><a class="code" href="modules_8cpp.html#a45">00193</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a40">chan_hash</a> <a class="code" href="modules_8cpp.html#a45">chanlist</a>; +<a name="l00194"></a><a class="code" href="modules_8cpp.html#a46">00194</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a42">whowas_hash</a> <a class="code" href="modules_8cpp.html#a46">whowas</a>; +<a name="l00195"></a><a class="code" href="modules_8cpp.html#a47">00195</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a43">command_table</a> <a class="code" href="modules_8cpp.html#a47">cmdlist</a>; +<a name="l00196"></a><a class="code" href="modules_8cpp.html#a48">00196</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a48">MOTD</a>; +<a name="l00197"></a><a class="code" href="modules_8cpp.html#a49">00197</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a31">file_cache</a> <a class="code" href="modules_8cpp.html#a49">RULES</a>; +<a name="l00198"></a><a class="code" href="modules_8cpp.html#a50">00198</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a41">address_cache</a> <a class="code" href="modules_8cpp.html#a50">IP</a>; 00199 -00200 <span class="comment">// class type for holding an extended mode character - internal to core</span> -00201 -<a name="l00202"></a><a class="code" href="classExtMode.html">00202</a> <span class="keyword">class </span><a class="code" href="classExtMode.html">ExtMode</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a> -00203 { -00204 <span class="keyword">public</span>: -<a name="l00205"></a><a class="code" href="classExtMode.html#o0">00205</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#o0">modechar</a>; -<a name="l00206"></a><a class="code" href="classExtMode.html#o1">00206</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o1">type</a>; -<a name="l00207"></a><a class="code" href="classExtMode.html#o2">00207</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o2">params_when_on</a>; -<a name="l00208"></a><a class="code" href="classExtMode.html#o3">00208</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o3">params_when_off</a>; -<a name="l00209"></a><a class="code" href="classExtMode.html#o4">00209</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#o4">needsoper</a>; -<a name="l00210"></a><a class="code" href="classExtMode.html#o5">00210</a> <span class="keywordtype">bool</span> <a class="code" href="channels_8cpp.html#a15">list</a>; -<a name="l00211"></a><a class="code" href="classExtMode.html#a0">00211</a> <a class="code" href="classExtMode.html#a0">ExtMode</a>(<span class="keywordtype">char</span> mc, <span class="keywordtype">int</span> ty, <span class="keywordtype">bool</span> oper, <span class="keywordtype">int</span> p_on, <span class="keywordtype">int</span> p_off) : <a class="code" href="classExtMode.html#o0">modechar</a>(mc), <a class="code" href="classExtMode.html#o1">type</a>(ty), <a class="code" href="classExtMode.html#o4">needsoper</a>(oper), <a class="code" href="classExtMode.html#o2">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#o3">params_when_off</a>(p_off) { }; -00212 }; -00213 -<a name="l00214"></a><a class="code" href="modules_8cpp.html#a50">00214</a> <span class="keyword">typedef</span> std::vector<ExtMode> <a class="code" href="modules_8cpp.html#a50">ExtModeList</a>; -<a name="l00215"></a><a class="code" href="modules_8cpp.html#a51">00215</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a>; -00216 +00200 +00201 <span class="comment">// class type for holding an extended mode character - internal to core</span> +00202 +<a name="l00203"></a><a class="code" href="classExtMode.html">00203</a> <span class="keyword">class </span><a class="code" href="classExtMode.html">ExtMode</a> : <span class="keyword">public</span> <a class="code" href="classclassbase.html">classbase</a> +00204 { +00205 <span class="keyword">public</span>: +<a name="l00206"></a><a class="code" href="classExtMode.html#o0">00206</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#o0">modechar</a>; +<a name="l00207"></a><a class="code" href="classExtMode.html#o1">00207</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o1">type</a>; +<a name="l00208"></a><a class="code" href="classExtMode.html#o2">00208</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o2">params_when_on</a>; +<a name="l00209"></a><a class="code" href="classExtMode.html#o3">00209</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#o3">params_when_off</a>; +<a name="l00210"></a><a class="code" href="classExtMode.html#o4">00210</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#o4">needsoper</a>; +<a name="l00211"></a><a class="code" href="classExtMode.html#o5">00211</a> <span class="keywordtype">bool</span> <a class="code" href="channels_8cpp.html#a15">list</a>; +<a name="l00212"></a><a class="code" href="classExtMode.html#a0">00212</a> <a class="code" href="classExtMode.html#a0">ExtMode</a>(<span class="keywordtype">char</span> mc, <span class="keywordtype">int</span> ty, <span class="keywordtype">bool</span> oper, <span class="keywordtype">int</span> p_on, <span class="keywordtype">int</span> p_off) : <a class="code" href="classExtMode.html#o0">modechar</a>(mc), <a class="code" href="classExtMode.html#o1">type</a>(ty), <a class="code" href="classExtMode.html#o4">needsoper</a>(oper), <a class="code" href="classExtMode.html#o2">params_when_on</a>(p_on), <a class="code" href="classExtMode.html#o3">params_when_off</a>(p_off) { }; +00213 }; +00214 +<a name="l00215"></a><a class="code" href="modules_8cpp.html#a51">00215</a> <span class="keyword">typedef</span> std::vector<ExtMode> <a class="code" href="modules_8cpp.html#a51">ExtModeList</a>; +<a name="l00216"></a><a class="code" href="modules_8cpp.html#a52">00216</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a>; 00217 -<a name="l00218"></a><a class="code" href="modules_8cpp.html#a52">00218</a> <a class="code" href="modules_8cpp.html#a50">ExtModeList</a> <a class="code" href="modules_8cpp.html#a52">EMode</a>; -00219 -00220 <span class="comment">// returns true if an extended mode character is in use</span> -<a name="l00221"></a><a class="code" href="modules_8cpp.html#a53">00221</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a53">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) -00222 { -00223 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) -00224 { -00225 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) -00226 { -00227 <span class="keywordflow">return</span> <span class="keyword">true</span>; -00228 } -00229 } -00230 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00231 } -00232 -<a name="l00233"></a><a class="code" href="modules_8cpp.html#a54">00233</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a54">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) -00234 { -00235 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) -00236 { -00237 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->list == <span class="keyword">true</span>)) -00238 { -00239 <span class="keywordflow">return</span> <span class="keyword">true</span>; -00240 } -00241 } -00242 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00243 } -00244 -<a name="l00245"></a><a class="code" href="modules_8cpp.html#a55">00245</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a55">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) -00246 { -00247 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) -00248 { -00249 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>)) -00250 { -00251 <span class="keywordflow">return</span> <span class="keyword">true</span>; -00252 } -00253 } -00254 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00255 } -00256 -00257 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span> -<a name="l00258"></a><a class="code" href="modules_8cpp.html#a56">00258</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a56">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) -00259 { -00260 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) -00261 { -00262 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) -00263 { -00264 <span class="keywordflow">return</span> i->params_when_on; -00265 } -00266 } -00267 <span class="keywordflow">return</span> 0; -00268 } -00269 -00270 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span> -<a name="l00271"></a><a class="code" href="modules_8cpp.html#a57">00271</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a57">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) -00272 { -00273 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) -00274 { -00275 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) -00276 { -00277 <span class="keywordflow">return</span> i->params_when_off; -00278 } -00279 } -00280 <span class="keywordflow">return</span> 0; -00281 } -00282 -00283 <span class="comment">// returns true if an extended mode character is in use</span> -<a name="l00284"></a><a class="code" href="modules_8cpp.html#a58">00284</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a58">DoAddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_on, <span class="keywordtype">int</span> params_off) -00285 { -00286 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a53">ModeDefined</a>(modechar,type)) { -00287 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00288 } -00289 <a class="code" href="modules_8cpp.html#a52">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off)); -00290 <span class="keywordflow">return</span> <span class="keyword">true</span>; -00291 } -00292 -00293 <span class="comment">// turns a mode into a listmode</span> -<a name="l00294"></a><a class="code" href="modules_8cpp.html#a59">00294</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#a59">ModeMakeList</a>(<span class="keywordtype">char</span> modechar) -00295 { -00296 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a51">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a52">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a52">EMode</a>.end(); i++) -00297 { -00298 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>)) -00299 { -00300 i->list = <span class="keyword">true</span>; -00301 <span class="keywordflow">return</span>; -00302 } -00303 } -00304 <span class="keywordflow">return</span>; -00305 } -00306 -00307 <span class="comment">// version is a simple class for holding a modules version number</span> -00308 -<a name="l00309"></a><a class="code" href="classVersion.html#a0">00309</a> <a class="code" href="classVersion.html#a0">Version::Version</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> revision, <span class="keywordtype">int</span> build, <span class="keywordtype">int</span> flags) : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { }; -00310 -00311 <span class="comment">// admin is a simple class for holding a server's administrative info</span> -00312 -<a name="l00313"></a><a class="code" href="classAdmin.html#a0">00313</a> <a class="code" href="classAdmin.html#a0">Admin::Admin</a>(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { }; -00314 -<a name="l00315"></a><a class="code" href="classRequest.html#a0">00315</a> <a class="code" href="classRequest.html#a0">Request::Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst) : data(anydata), source(src), dest(dst) { }; -00316 -<a name="l00317"></a><a class="code" href="classRequest.html#a1">00317</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a1">Request::GetData</a>() -00318 { -00319 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#p0">data</a>; -00320 } -00321 -<a name="l00322"></a><a class="code" href="classRequest.html#a2">00322</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a2">Request::GetSource</a>() -00323 { -00324 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#p1">source</a>; -00325 } -00326 -<a name="l00327"></a><a class="code" href="classRequest.html#a3">00327</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a3">Request::GetDest</a>() -00328 { -00329 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#p2">dest</a>; -00330 } -00331 -<a name="l00332"></a><a class="code" href="classRequest.html#a4">00332</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a4">Request::Send</a>() -00333 { -00334 <span class="keywordflow">if</span> (this-><a class="code" href="classRequest.html#p2">dest</a>) -00335 { -00336 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#p2">dest</a>-><a class="code" href="classModule.html#a46">OnRequest</a>(<span class="keyword">this</span>); -00337 } -00338 <span class="keywordflow">else</span> -00339 { -00340 <span class="keywordflow">return</span> NULL; -00341 } -00342 } -00343 -<a name="l00344"></a><a class="code" href="classEvent.html#a0">00344</a> <a class="code" href="classEvent.html#a0">Event::Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, std::string eventid) : data(anydata), source(src), id(eventid) { }; -00345 -<a name="l00346"></a><a class="code" href="classEvent.html#a1">00346</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a1">Event::GetData</a>() -00347 { -00348 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#p0">data</a>; -00349 } -00350 -<a name="l00351"></a><a class="code" href="classEvent.html#a2">00351</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#a2">Event::GetSource</a>() -00352 { -00353 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#p1">source</a>; -00354 } -00355 -<a name="l00356"></a><a class="code" href="classEvent.html#a4">00356</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a4">Event::Send</a>() -00357 { -00358 <a class="code" href="modules_8h.html#a24">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>); -00359 <span class="keywordflow">return</span> NULL; -00360 } -00361 -<a name="l00362"></a><a class="code" href="classEvent.html#a3">00362</a> std::string <a class="code" href="classEvent.html#a3">Event::GetEventID</a>() -00363 { -00364 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#p2">id</a>; -00365 } -00366 +00218 +<a name="l00219"></a><a class="code" href="modules_8cpp.html#a53">00219</a> <a class="code" href="modules_8cpp.html#a51">ExtModeList</a> <a class="code" href="modules_8cpp.html#a53">EMode</a>; +00220 +00221 <span class="comment">// returns true if an extended mode character is in use</span> +<a name="l00222"></a><a class="code" href="modules_8cpp.html#a54">00222</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a54">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) +00223 { +00224 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) +00225 { +00226 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) +00227 { +00228 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00229 } +00230 } +00231 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00232 } +00233 +<a name="l00234"></a><a class="code" href="modules_8cpp.html#a55">00234</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a55">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) +00235 { +00236 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) +00237 { +00238 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->list == <span class="keyword">true</span>)) +00239 { +00240 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00241 } +00242 } +00243 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00244 } +00245 +<a name="l00246"></a><a class="code" href="modules_8cpp.html#a56">00246</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a56">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) +00247 { +00248 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) +00249 { +00250 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>)) +00251 { +00252 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00253 } +00254 } +00255 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00256 } +00257 +00258 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span> +<a name="l00259"></a><a class="code" href="modules_8cpp.html#a57">00259</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a57">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) +00260 { +00261 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) +00262 { +00263 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) +00264 { +00265 <span class="keywordflow">return</span> i->params_when_on; +00266 } +00267 } +00268 <span class="keywordflow">return</span> 0; +00269 } +00270 +00271 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span> +<a name="l00272"></a><a class="code" href="modules_8cpp.html#a58">00272</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a58">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) +00273 { +00274 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) +00275 { +00276 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) +00277 { +00278 <span class="keywordflow">return</span> i->params_when_off; +00279 } +00280 } +00281 <span class="keywordflow">return</span> 0; +00282 } +00283 +00284 <span class="comment">// returns true if an extended mode character is in use</span> +<a name="l00285"></a><a class="code" href="modules_8cpp.html#a59">00285</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a59">DoAddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_on, <span class="keywordtype">int</span> params_off) +00286 { +00287 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a54">ModeDefined</a>(modechar,type)) { +00288 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00289 } +00290 <a class="code" href="modules_8cpp.html#a53">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off)); +00291 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00292 } +00293 +00294 <span class="comment">// turns a mode into a listmode</span> +<a name="l00295"></a><a class="code" href="modules_8cpp.html#a60">00295</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#a60">ModeMakeList</a>(<span class="keywordtype">char</span> modechar) +00296 { +00297 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a52">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a53">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a53">EMode</a>.end(); i++) +00298 { +00299 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>)) +00300 { +00301 i->list = <span class="keyword">true</span>; +00302 <span class="keywordflow">return</span>; +00303 } +00304 } +00305 <span class="keywordflow">return</span>; +00306 } +00307 +00308 <span class="comment">// version is a simple class for holding a modules version number</span> +00309 +<a name="l00310"></a><a class="code" href="classVersion.html#a0">00310</a> <a class="code" href="classVersion.html#a0">Version::Version</a>(<span class="keywordtype">int</span> major, <span class="keywordtype">int</span> minor, <span class="keywordtype">int</span> revision, <span class="keywordtype">int</span> build, <span class="keywordtype">int</span> flags) : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { }; +00311 +00312 <span class="comment">// admin is a simple class for holding a server's administrative info</span> +00313 +<a name="l00314"></a><a class="code" href="classAdmin.html#a0">00314</a> <a class="code" href="classAdmin.html#a0">Admin::Admin</a>(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { }; +00315 +<a name="l00316"></a><a class="code" href="classRequest.html#a0">00316</a> <a class="code" href="classRequest.html#a0">Request::Request</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, <a class="code" href="classModule.html">Module</a>* dst) : data(anydata), source(src), dest(dst) { }; +00317 +<a name="l00318"></a><a class="code" href="classRequest.html#a1">00318</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a1">Request::GetData</a>() +00319 { +00320 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#p0">data</a>; +00321 } +00322 +<a name="l00323"></a><a class="code" href="classRequest.html#a2">00323</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a2">Request::GetSource</a>() +00324 { +00325 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#p1">source</a>; +00326 } +00327 +<a name="l00328"></a><a class="code" href="classRequest.html#a3">00328</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classRequest.html#a3">Request::GetDest</a>() +00329 { +00330 <span class="keywordflow">return</span> this-><a class="code" href="classRequest.html#p2">dest</a>; +00331 } +00332 +<a name="l00333"></a><a class="code" href="classRequest.html#a4">00333</a> <span class="keywordtype">char</span>* <a class="code" href="classRequest.html#a4">Request::Send</a>() +00334 { +00335 <span class="keywordflow">if</span> (this-><a class="code" href="classRequest.html#p2">dest</a>) +00336 { +00337 <span class="keywordflow">return</span> <a class="code" href="classRequest.html#p2">dest</a>-><a class="code" href="classModule.html#a46">OnRequest</a>(<span class="keyword">this</span>); +00338 } +00339 <span class="keywordflow">else</span> +00340 { +00341 <span class="keywordflow">return</span> NULL; +00342 } +00343 } +00344 +<a name="l00345"></a><a class="code" href="classEvent.html#a0">00345</a> <a class="code" href="classEvent.html#a0">Event::Event</a>(<span class="keywordtype">char</span>* anydata, <a class="code" href="classModule.html">Module</a>* src, std::string eventid) : data(anydata), source(src), id(eventid) { }; +00346 +<a name="l00347"></a><a class="code" href="classEvent.html#a1">00347</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a1">Event::GetData</a>() +00348 { +00349 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#p0">data</a>; +00350 } +00351 +<a name="l00352"></a><a class="code" href="classEvent.html#a2">00352</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classEvent.html#a2">Event::GetSource</a>() +00353 { +00354 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#p1">source</a>; +00355 } +00356 +<a name="l00357"></a><a class="code" href="classEvent.html#a4">00357</a> <span class="keywordtype">char</span>* <a class="code" href="classEvent.html#a4">Event::Send</a>() +00358 { +00359 <a class="code" href="modules_8h.html#a24">FOREACH_MOD</a> OnEvent(<span class="keyword">this</span>); +00360 <span class="keywordflow">return</span> NULL; +00361 } +00362 +<a name="l00363"></a><a class="code" href="classEvent.html#a3">00363</a> std::string <a class="code" href="classEvent.html#a3">Event::GetEventID</a>() +00364 { +00365 <span class="keywordflow">return</span> this-><a class="code" href="classEvent.html#p2">id</a>; +00366 } 00367 -00368 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span> -<a name="l00369"></a><a class="code" href="classModule.html#a0">00369</a> <a class="code" href="classModule.html#a0">Module::Module</a>() { } -<a name="l00370"></a><a class="code" href="classModule.html#a1">00370</a> <a class="code" href="classModule.html#a1">Module::~Module</a>() { } -<a name="l00371"></a><a class="code" href="classModule.html#a3">00371</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a3">Module::OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { } -<a name="l00372"></a><a class="code" href="classModule.html#a4">00372</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a4">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { } -<a name="l00373"></a><a class="code" href="classModule.html#a5">00373</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">Module::OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { } -<a name="l00374"></a><a class="code" href="classModule.html#a6">00374</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { } -<a name="l00375"></a><a class="code" href="classModule.html#a7">00375</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { } -<a name="l00376"></a><a class="code" href="classModule.html#a8">00376</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">Module::OnPacketTransmit</a>(std::string &data, std::string serv) { } -<a name="l00377"></a><a class="code" href="classModule.html#a9">00377</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">Module::OnPacketReceive</a>(std::string &data, std::string serv) { } -<a name="l00378"></a><a class="code" href="classModule.html#a10">00378</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">Module::OnRehash</a>() { } -<a name="l00379"></a><a class="code" href="classModule.html#a11">00379</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a11">Module::OnServerRaw</a>(std::string &raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { } -<a name="l00380"></a><a class="code" href="classModule.html#a13">00380</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a13">Module::OnUserPreJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keyword">const</span> <span class="keywordtype">char</span>* cname) { <span class="keywordflow">return</span> 0; } -<a name="l00381"></a><a class="code" href="classModule.html#a12">00381</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">Module::OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, string_list &params) { <span class="keywordflow">return</span> <span class="keyword">false</span>; } -<a name="l00382"></a><a class="code" href="classModule.html#a2">00382</a> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#a2">Module::GetVersion</a>() { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#a21">VF_VENDOR</a>); } -<a name="l00383"></a><a class="code" href="classModule.html#a16">00383</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a16">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; -<a name="l00384"></a><a class="code" href="classModule.html#a17">00384</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a17">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; -<a name="l00385"></a><a class="code" href="classModule.html#a18">00385</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a18">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { }; -<a name="l00386"></a><a class="code" href="classModule.html#a19">00386</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a19">Module::OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { <span class="keywordflow">return</span> 0; }; -<a name="l00387"></a><a class="code" href="classModule.html#a20">00387</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a20">Module::OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &text) { <span class="keywordflow">return</span> 0; }; -<a name="l00388"></a><a class="code" href="classModule.html#a21">00388</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a21">Module::OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &text) { <span class="keywordflow">return</span> 0; }; -<a name="l00389"></a><a class="code" href="classModule.html#a22">00389</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a22">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick) { <span class="keywordflow">return</span> 0; }; -<a name="l00390"></a><a class="code" href="classModule.html#a23">00390</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a23">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string oldnick) { }; -<a name="l00391"></a><a class="code" href="classModule.html#a24">00391</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a24">Module::OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type) { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#a8">ACR_DEFAULT</a>; }; -<a name="l00392"></a><a class="code" href="classModule.html#a25">00392</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a25">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; } -<a name="l00393"></a><a class="code" href="classModule.html#a26">00393</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a26">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; } -<a name="l00394"></a><a class="code" href="classModule.html#a27">00394</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a27">Module::On005Numeric</a>(std::string &output) { }; -<a name="l00395"></a><a class="code" href="classModule.html#a28">00395</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a28">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, std::string reason) { <span class="keywordflow">return</span> 0; }; -<a name="l00396"></a><a class="code" href="classModule.html#a29">00396</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a29">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,std::string name) { }; -<a name="l00397"></a><a class="code" href="classModule.html#a30">00397</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a30">Module::OnBackgroundTimer</a>(time_t curtime) { }; -<a name="l00398"></a><a class="code" href="classModule.html#a31">00398</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a31">Module::OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode) { }; -<a name="l00399"></a><a class="code" href="classModule.html#a32">00399</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a32">Module::OnPreCommand</a>(std::string command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) { <span class="keywordflow">return</span> 0; }; -<a name="l00400"></a><a class="code" href="classModule.html#a33">00400</a> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a33">Module::OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }; -<a name="l00401"></a><a class="code" href="classModule.html#a34">00401</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a34">Module::OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; -<a name="l00402"></a><a class="code" href="classModule.html#a14">00402</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a14">Module::OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { <span class="keywordflow">return</span> 0; }; -<a name="l00403"></a><a class="code" href="classModule.html#a15">00403</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">Module::OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { }; -<a name="l00404"></a><a class="code" href="classModule.html#a35">00404</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a35">Module::OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, std::string param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt) { <span class="keywordflow">return</span> 0; }; -<a name="l00405"></a><a class="code" href="classModule.html#a36">00405</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a36">Module::OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; }; -<a name="l00406"></a><a class="code" href="classModule.html#a37">00406</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a37">Module::OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string keygiven) { <span class="keywordflow">return</span> 0; }; -<a name="l00407"></a><a class="code" href="classModule.html#a38">00407</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a38">Module::OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; }; -<a name="l00408"></a><a class="code" href="classModule.html#a39">00408</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a39">Module::OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; }; -<a name="l00409"></a><a class="code" href="classModule.html#a40">00409</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a40">Module::OnStats</a>(<span class="keywordtype">char</span> symbol) { }; -<a name="l00410"></a><a class="code" href="classModule.html#a41">00410</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a41">Module::OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; }; -<a name="l00411"></a><a class="code" href="classModule.html#a42">00411</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a42">Module::OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; }; -<a name="l00412"></a><a class="code" href="classModule.html#a43">00412</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a43">Module::OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string topic) { <span class="keywordflow">return</span> 0; }; -<a name="l00413"></a><a class="code" href="classModule.html#a44">00413</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a44">Module::OnMeshToken</a>(<span class="keywordtype">char</span> token,string_list params,<a class="code" href="classserverrec.html">serverrec</a>* source,<a class="code" href="classserverrec.html">serverrec</a>* reply, std::string tcp_host,std::string ipaddr,<span class="keywordtype">int</span> port) { <span class="keywordflow">return</span> 0; }; -<a name="l00414"></a><a class="code" href="classModule.html#a45">00414</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a45">Module::OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event) { <span class="keywordflow">return</span>; }; -<a name="l00415"></a><a class="code" href="classModule.html#a46">00415</a> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#a46">Module::OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request) { <span class="keywordflow">return</span> NULL; }; -<a name="l00416"></a><a class="code" href="classModule.html#a47">00416</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a47">Module::OnOperCompare</a>(std::string password, std::string input) { <span class="keywordflow">return</span> 0; }; -<a name="l00417"></a><a class="code" href="classModule.html#a48">00417</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a48">Module::OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; -<a name="l00418"></a><a class="code" href="classModule.html#a49">00418</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a49">Module::OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; -<a name="l00419"></a><a class="code" href="classModule.html#a50">00419</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a50">Module::OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; }; -<a name="l00420"></a><a class="code" href="classModule.html#a51">00420</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a51">Module::OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; }; -<a name="l00421"></a><a class="code" href="classModule.html#a52">00421</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a52">Module::OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, std::string ip, <span class="keywordtype">int</span> localport) { }; -<a name="l00422"></a><a class="code" href="classModule.html#a53">00422</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a53">Module::OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count) { <span class="keywordflow">return</span> 0; }; -<a name="l00423"></a><a class="code" href="classModule.html#a54">00423</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a54">Module::OnRawSocketClose</a>(<span class="keywordtype">int</span> fd) { }; -<a name="l00424"></a><a class="code" href="classModule.html#a55">00424</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a55">Module::OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &readresult) { <span class="keywordflow">return</span> 0; }; -00425 -00426 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span> -00427 <span class="comment">// exports in the core</span> -00428 <span class="comment">//</span> -00429 -<a name="l00430"></a><a class="code" href="classServer.html#a0">00430</a> <a class="code" href="classServer.html#a0">Server::Server</a>() -00431 { -00432 } -00433 -<a name="l00434"></a><a class="code" href="classServer.html#a1">00434</a> <a class="code" href="classServer.html#a1">Server::~Server</a>() -00435 { -00436 } -00437 -<a name="l00438"></a><a class="code" href="classServer.html#a2">00438</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s) -00439 { -00440 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str()); -00441 } -00442 -<a name="l00443"></a><a class="code" href="classServer.html#a32">00443</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a32">Server::MatchText</a>(std::string sliteral, std::string spattern) -00444 { -00445 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF]; -00446 strlcpy(literal,sliteral.c_str(),MAXBUF); -00447 strlcpy(pattern,spattern.c_str(),MAXBUF); -00448 <span class="keywordflow">return</span> match(literal,pattern); -00449 } -00450 -<a name="l00451"></a><a class="code" href="classServer.html#a27">00451</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a27">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text) -00452 { -00453 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str()); -00454 } -00455 -<a name="l00456"></a><a class="code" href="classServer.html#a28">00456</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a28">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key) -00457 { -00458 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>); -00459 } -00460 -<a name="l00461"></a><a class="code" href="classServer.html#a29">00461</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a29">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason) -00462 { -00463 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>); -00464 } -00465 -<a name="l00466"></a><a class="code" href="classServer.html#a37">00466</a> <a class="code" href="modules_8h.html#a33">chanuserlist</a> <a class="code" href="classServer.html#a37">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) -00467 { -00468 <a class="code" href="modules_8h.html#a33">chanuserlist</a> userl; -00469 userl.clear(); -00470 std::vector<char*> *<a class="code" href="channels_8cpp.html#a15">list</a> = chan-><a class="code" href="classchanrec.html#a9">GetUsers</a>(); -00471 <span class="keywordflow">for</span> (std::vector<char*>::iterator i = <a class="code" href="channels_8cpp.html#a15">list</a>->begin(); i != <a class="code" href="channels_8cpp.html#a15">list</a>->end(); i++) -00472 { -00473 <span class="keywordtype">char</span>* o = *i; -00474 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o); -00475 } -00476 <span class="keywordflow">return</span> userl; -00477 } -<a name="l00478"></a><a class="code" href="classServer.html#a30">00478</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a30">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname) -00479 { -00480 force_nickchange(user,nickname.c_str()); -00481 } -00482 -<a name="l00483"></a><a class="code" href="classServer.html#a31">00483</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason) -00484 { -00485 kill_link(user,reason.c_str()); -00486 } -00487 -<a name="l00488"></a><a class="code" href="classServer.html#a36">00488</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a36">Server::IsUlined</a>(std::string server) -00489 { -00490 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a74">is_uline</a>(server.c_str()); -00491 } -00492 -<a name="l00493"></a><a class="code" href="classServer.html#a33">00493</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a33">Server::CallCommandHandler</a>(std::string commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user) -00494 { -00495 call_handler(commandname.c_str(),parameters,pcnt,user); -00496 } -00497 -<a name="l00498"></a><a class="code" href="classServer.html#a3">00498</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a3">Server::Log</a>(<span class="keywordtype">int</span> level, std::string s) -00499 { -00500 log(level,<span class="stringliteral">"%s"</span>,s.c_str()); -00501 } -00502 -<a name="l00503"></a><a class="code" href="classServer.html#a25">00503</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source) -00504 { -00505 <a class="code" href="modules_8h.html#a35">createcommand</a>(cmd,f,flags,minparams,source); -00506 } -00507 -<a name="l00508"></a><a class="code" href="classServer.html#a26">00508</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) -00509 { -00510 <a class="code" href="modules_8h.html#a36">server_mode</a>(parameters,pcnt,user); -00511 } -00512 -<a name="l00513"></a><a class="code" href="classServer.html#a4">00513</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a4">Server::Send</a>(<span class="keywordtype">int</span> Socket, std::string s) -00514 { -00515 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); -00516 } -00517 -<a name="l00518"></a><a class="code" href="classServer.html#a5">00518</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a5">Server::SendServ</a>(<span class="keywordtype">int</span> Socket, std::string s) -00519 { -00520 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); -00521 } -00522 -<a name="l00523"></a><a class="code" href="classServer.html#a7">00523</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s) -00524 { -00525 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str()); -00526 } -00527 -<a name="l00528"></a><a class="code" href="classServer.html#a8">00528</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s) -00529 { -00530 <span class="keywordflow">if</span> (!Source) -00531 { -00532 <span class="comment">// if source is NULL, then the message originates from the local server</span> -00533 Write(Dest-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this->GetServerName().c_str(),s.c_str()); -00534 } -00535 <span class="keywordflow">else</span> -00536 { -00537 <span class="comment">// otherwise it comes from the user specified</span> -00538 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str()); -00539 } -00540 } -00541 -<a name="l00542"></a><a class="code" href="classServer.html#a6">00542</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendChannelServerNotice</a>(std::string ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string text) -00543 { -00544 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str()); -00545 } -00546 -<a name="l00547"></a><a class="code" href="classServer.html#a9">00547</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a9">Server::SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string s,<span class="keywordtype">bool</span> IncludeSender) -00548 { -00549 <span class="keywordflow">if</span> (IncludeSender) -00550 { -00551 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); -00552 } -00553 <span class="keywordflow">else</span> -00554 { -00555 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); -00556 } -00557 } -00558 -<a name="l00559"></a><a class="code" href="classServer.html#a10">00559</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a10">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2) -00560 { -00561 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a0">common_channels</a>(u1,u2) != 0); -00562 } -00563 -<a name="l00564"></a><a class="code" href="classServer.html#a11">00564</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender) -00565 { -00566 <span class="keywordflow">if</span> (IncludeSender) -00567 { -00568 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str()); -00569 } -00570 <span class="keywordflow">else</span> -00571 { -00572 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str()); -00573 } -00574 } -00575 -<a name="l00576"></a><a class="code" href="classServer.html#a12">00576</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a12">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text) -00577 { -00578 WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str()); -00579 } -00580 -<a name="l00581"></a><a class="code" href="classServer.html#a34">00581</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a34">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host) -00582 { -00583 <a class="code" href="message_8h.html#a11">ChangeDisplayedHost</a>(user,host.c_str()); -00584 } -00585 -<a name="l00586"></a><a class="code" href="classServer.html#a35">00586</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a35">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos) -00587 { -00588 <a class="code" href="message_8h.html#a10">ChangeName</a>(user,gecos.c_str()); -00589 } -00590 -<a name="l00591"></a><a class="code" href="classServer.html#a13">00591</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a13">Server::IsNick</a>(std::string nick) -00592 { -00593 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a13">isnick</a>(nick.c_str()) != 0); -00594 } -00595 -<a name="l00596"></a><a class="code" href="classServer.html#a15">00596</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a15">Server::FindNick</a>(std::string nick) -00597 { -00598 <span class="keywordflow">return</span> Find(nick); -00599 } -00600 -<a name="l00601"></a><a class="code" href="classServer.html#a16">00601</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a16">Server::FindDescriptor</a>(<span class="keywordtype">int</span> socket) -00602 { -00603 <span class="keywordflow">return</span> (socket < 65536 ? <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[socket] : NULL); -00604 } -00605 -<a name="l00606"></a><a class="code" href="classServer.html#a17">00606</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a17">Server::FindChannel</a>(std::string channel) -00607 { -00608 <span class="keywordflow">return</span> FindChan(channel.c_str()); -00609 } -00610 -<a name="l00611"></a><a class="code" href="classServer.html#a18">00611</a> std::string <a class="code" href="classServer.html#a18">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan) -00612 { -00613 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a14">cmode</a>(User,Chan); -00614 } -00615 -<a name="l00616"></a><a class="code" href="classServer.html#a19">00616</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan) -00617 { -00618 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a16">has_channel</a>(User,Chan); -00619 } -00620 -<a name="l00621"></a><a class="code" href="classServer.html#a20">00621</a> std::string <a class="code" href="classServer.html#a20">Server::GetServerName</a>() -00622 { -00623 <span class="keywordflow">return</span> getservername(); -00624 } -00625 -<a name="l00626"></a><a class="code" href="classServer.html#a21">00626</a> std::string <a class="code" href="classServer.html#a21">Server::GetNetworkName</a>() -00627 { -00628 <span class="keywordflow">return</span> getnetworkname(); -00629 } -00630 -<a name="l00631"></a><a class="code" href="classServer.html#a22">00631</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a22">Server::GetAdmin</a>() -00632 { -00633 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick()); -00634 } -00635 +00368 +00369 <span class="comment">// These declarations define the behavours of the base class Module (which does nothing at all)</span> +<a name="l00370"></a><a class="code" href="classModule.html#a0">00370</a> <a class="code" href="classModule.html#a0">Module::Module</a>() { } +<a name="l00371"></a><a class="code" href="classModule.html#a1">00371</a> <a class="code" href="classModule.html#a1">Module::~Module</a>() { } +<a name="l00372"></a><a class="code" href="classModule.html#a3">00372</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a3">Module::OnUserConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { } +<a name="l00373"></a><a class="code" href="classModule.html#a4">00373</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a4">Module::OnUserQuit</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { } +<a name="l00374"></a><a class="code" href="classModule.html#a5">00374</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">Module::OnUserDisconnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { } +<a name="l00375"></a><a class="code" href="classModule.html#a6">00375</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { } +<a name="l00376"></a><a class="code" href="classModule.html#a7">00376</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { } +<a name="l00377"></a><a class="code" href="classModule.html#a8">00377</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">Module::OnPacketTransmit</a>(std::string &data, std::string serv) { } +<a name="l00378"></a><a class="code" href="classModule.html#a9">00378</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">Module::OnPacketReceive</a>(std::string &data, std::string serv) { } +<a name="l00379"></a><a class="code" href="classModule.html#a10">00379</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">Module::OnRehash</a>() { } +<a name="l00380"></a><a class="code" href="classModule.html#a11">00380</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a11">Module::OnServerRaw</a>(std::string &raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { } +<a name="l00381"></a><a class="code" href="classModule.html#a13">00381</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a13">Module::OnUserPreJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keyword">const</span> <span class="keywordtype">char</span>* cname) { <span class="keywordflow">return</span> 0; } +<a name="l00382"></a><a class="code" href="classModule.html#a12">00382</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">Module::OnExtendedMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <span class="keywordtype">void</span>* target, <span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> mode_on, string_list &params) { <span class="keywordflow">return</span> <span class="keyword">false</span>; } +<a name="l00383"></a><a class="code" href="classModule.html#a2">00383</a> <a class="code" href="classVersion.html">Version</a> <a class="code" href="classModule.html#a2">Module::GetVersion</a>() { <span class="keywordflow">return</span> <a class="code" href="classVersion.html">Version</a>(1,0,0,0,<a class="code" href="modules_8h.html#a21">VF_VENDOR</a>); } +<a name="l00384"></a><a class="code" href="classModule.html#a16">00384</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a16">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; +<a name="l00385"></a><a class="code" href="classModule.html#a17">00385</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a17">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; +<a name="l00386"></a><a class="code" href="classModule.html#a18">00386</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a18">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { }; +<a name="l00387"></a><a class="code" href="classModule.html#a19">00387</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a19">Module::OnUserPreInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel) { <span class="keywordflow">return</span> 0; }; +<a name="l00388"></a><a class="code" href="classModule.html#a20">00388</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a20">Module::OnUserPreMessage</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &text) { <span class="keywordflow">return</span> 0; }; +<a name="l00389"></a><a class="code" href="classModule.html#a21">00389</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a21">Module::OnUserPreNotice</a>(<a class="code" href="classuserrec.html">userrec</a>* user,<span class="keywordtype">void</span>* dest,<span class="keywordtype">int</span> target_type, std::string &text) { <span class="keywordflow">return</span> 0; }; +<a name="l00390"></a><a class="code" href="classModule.html#a22">00390</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a22">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick) { <span class="keywordflow">return</span> 0; }; +<a name="l00391"></a><a class="code" href="classModule.html#a23">00391</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a23">Module::OnUserPostNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string oldnick) { }; +<a name="l00392"></a><a class="code" href="classModule.html#a24">00392</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a24">Module::OnAccessCheck</a>(<a class="code" href="classuserrec.html">userrec</a>* source,<a class="code" href="classuserrec.html">userrec</a>* dest,<a class="code" href="classchanrec.html">chanrec</a>* channel,<span class="keywordtype">int</span> access_type) { <span class="keywordflow">return</span> <a class="code" href="modules_8h.html#a8">ACR_DEFAULT</a>; }; +<a name="l00393"></a><a class="code" href="classModule.html#a25">00393</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a25">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; } +<a name="l00394"></a><a class="code" href="classModule.html#a26">00394</a> <a class="code" href="modules_8h.html#a32">string_list</a> <a class="code" href="classModule.html#a26">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#a32">string_list</a> empty; <span class="keywordflow">return</span> empty; } +<a name="l00395"></a><a class="code" href="classModule.html#a27">00395</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a27">Module::On005Numeric</a>(std::string &output) { }; +<a name="l00396"></a><a class="code" href="classModule.html#a28">00396</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a28">Module::OnKill</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest, std::string reason) { <span class="keywordflow">return</span> 0; }; +<a name="l00397"></a><a class="code" href="classModule.html#a29">00397</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a29">Module::OnLoadModule</a>(<a class="code" href="classModule.html">Module</a>* mod,std::string name) { }; +<a name="l00398"></a><a class="code" href="classModule.html#a30">00398</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a30">Module::OnBackgroundTimer</a>(time_t curtime) { }; +<a name="l00399"></a><a class="code" href="classModule.html#a31">00399</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a31">Module::OnSendList</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel, <span class="keywordtype">char</span> mode) { }; +<a name="l00400"></a><a class="code" href="classModule.html#a32">00400</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a32">Module::OnPreCommand</a>(std::string command, <span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) { <span class="keywordflow">return</span> 0; }; +<a name="l00401"></a><a class="code" href="classModule.html#a33">00401</a> <span class="keywordtype">bool</span> <a class="code" href="classModule.html#a33">Module::OnCheckReady</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <span class="keywordflow">return</span> <span class="keyword">true</span>; }; +<a name="l00402"></a><a class="code" href="classModule.html#a34">00402</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a34">Module::OnUserRegister</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; +<a name="l00403"></a><a class="code" href="classModule.html#a14">00403</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a14">Module::OnUserPreKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { <span class="keywordflow">return</span> 0; }; +<a name="l00404"></a><a class="code" href="classModule.html#a15">00404</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">Module::OnUserKick</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string reason) { }; +<a name="l00405"></a><a class="code" href="classModule.html#a35">00405</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a35">Module::OnRawMode</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, <span class="keywordtype">char</span> mode, std::string param, <span class="keywordtype">bool</span> adding, <span class="keywordtype">int</span> pcnt) { <span class="keywordflow">return</span> 0; }; +<a name="l00406"></a><a class="code" href="classModule.html#a36">00406</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a36">Module::OnCheckInvite</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; }; +<a name="l00407"></a><a class="code" href="classModule.html#a37">00407</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a37">Module::OnCheckKey</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string keygiven) { <span class="keywordflow">return</span> 0; }; +<a name="l00408"></a><a class="code" href="classModule.html#a38">00408</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a38">Module::OnCheckLimit</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; }; +<a name="l00409"></a><a class="code" href="classModule.html#a39">00409</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a39">Module::OnCheckBan</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan) { <span class="keywordflow">return</span> 0; }; +<a name="l00410"></a><a class="code" href="classModule.html#a40">00410</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a40">Module::OnStats</a>(<span class="keywordtype">char</span> symbol) { }; +<a name="l00411"></a><a class="code" href="classModule.html#a41">00411</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a41">Module::OnChangeLocalUserHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; }; +<a name="l00412"></a><a class="code" href="classModule.html#a42">00412</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a42">Module::OnChangeLocalUserGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newhost) { <span class="keywordflow">return</span> 0; }; +<a name="l00413"></a><a class="code" href="classModule.html#a43">00413</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a43">Module::OnLocalTopicChange</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* chan, std::string topic) { <span class="keywordflow">return</span> 0; }; +<a name="l00414"></a><a class="code" href="classModule.html#a44">00414</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a44">Module::OnMeshToken</a>(<span class="keywordtype">char</span> token,string_list params,<a class="code" href="classserverrec.html">serverrec</a>* source,<a class="code" href="classserverrec.html">serverrec</a>* reply, std::string tcp_host,std::string ipaddr,<span class="keywordtype">int</span> port) { <span class="keywordflow">return</span> 0; }; +<a name="l00415"></a><a class="code" href="classModule.html#a45">00415</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a45">Module::OnEvent</a>(<a class="code" href="classEvent.html">Event</a>* event) { <span class="keywordflow">return</span>; }; +<a name="l00416"></a><a class="code" href="classModule.html#a46">00416</a> <span class="keywordtype">char</span>* <a class="code" href="classModule.html#a46">Module::OnRequest</a>(<a class="code" href="classRequest.html">Request</a>* request) { <span class="keywordflow">return</span> NULL; }; +<a name="l00417"></a><a class="code" href="classModule.html#a47">00417</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a47">Module::OnOperCompare</a>(std::string password, std::string input) { <span class="keywordflow">return</span> 0; }; +<a name="l00418"></a><a class="code" href="classModule.html#a48">00418</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a48">Module::OnGlobalOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; +<a name="l00419"></a><a class="code" href="classModule.html#a49">00419</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a49">Module::OnGlobalConnect</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; +<a name="l00420"></a><a class="code" href="classModule.html#a50">00420</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a50">Module::OnAddBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; }; +<a name="l00421"></a><a class="code" href="classModule.html#a51">00421</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a51">Module::OnDelBan</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classchanrec.html">chanrec</a>* channel,std::string banmask) { <span class="keywordflow">return</span> 0; }; +<a name="l00422"></a><a class="code" href="classModule.html#a52">00422</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a52">Module::OnRawSocketAccept</a>(<span class="keywordtype">int</span> fd, std::string ip, <span class="keywordtype">int</span> localport) { }; +<a name="l00423"></a><a class="code" href="classModule.html#a53">00423</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a53">Module::OnRawSocketWrite</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">int</span> count) { <span class="keywordflow">return</span> 0; }; +<a name="l00424"></a><a class="code" href="classModule.html#a54">00424</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a54">Module::OnRawSocketClose</a>(<span class="keywordtype">int</span> fd) { }; +<a name="l00425"></a><a class="code" href="classModule.html#a55">00425</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a55">Module::OnRawSocketRead</a>(<span class="keywordtype">int</span> fd, <span class="keywordtype">char</span>* buffer, <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> count, <span class="keywordtype">int</span> &readresult) { <span class="keywordflow">return</span> 0; }; +00426 +00427 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span> +00428 <span class="comment">// exports in the core</span> +00429 <span class="comment">//</span> +00430 +<a name="l00431"></a><a class="code" href="classServer.html#a0">00431</a> <a class="code" href="classServer.html#a0">Server::Server</a>() +00432 { +00433 } +00434 +<a name="l00435"></a><a class="code" href="classServer.html#a1">00435</a> <a class="code" href="classServer.html#a1">Server::~Server</a>() +00436 { +00437 } +00438 +<a name="l00439"></a><a class="code" href="classServer.html#a2">00439</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s) +00440 { +00441 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str()); +00442 } +00443 +<a name="l00444"></a><a class="code" href="classServer.html#a32">00444</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a32">Server::MatchText</a>(std::string sliteral, std::string spattern) +00445 { +00446 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF]; +00447 strlcpy(literal,sliteral.c_str(),MAXBUF); +00448 strlcpy(pattern,spattern.c_str(),MAXBUF); +00449 <span class="keywordflow">return</span> match(literal,pattern); +00450 } +00451 +<a name="l00452"></a><a class="code" href="classServer.html#a27">00452</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a27">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text) +00453 { +00454 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str()); +00455 } +00456 +<a name="l00457"></a><a class="code" href="classServer.html#a28">00457</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a28">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key) +00458 { +00459 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">false</span>); +00460 } +00461 +<a name="l00462"></a><a class="code" href="classServer.html#a29">00462</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a29">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason) +00463 { +00464 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>); +00465 } +00466 +<a name="l00467"></a><a class="code" href="classServer.html#a37">00467</a> <a class="code" href="modules_8h.html#a33">chanuserlist</a> <a class="code" href="classServer.html#a37">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) +00468 { +00469 <a class="code" href="modules_8h.html#a33">chanuserlist</a> userl; +00470 userl.clear(); +00471 std::vector<char*> *<a class="code" href="channels_8cpp.html#a15">list</a> = chan-><a class="code" href="classchanrec.html#a7">GetUsers</a>(); +00472 <span class="keywordflow">for</span> (std::vector<char*>::iterator i = <a class="code" href="channels_8cpp.html#a15">list</a>->begin(); i != <a class="code" href="channels_8cpp.html#a15">list</a>->end(); i++) +00473 { +00474 <span class="keywordtype">char</span>* o = *i; +00475 userl.push_back((<a class="code" href="classuserrec.html">userrec</a>*)o); +00476 } +00477 <span class="keywordflow">return</span> userl; +00478 } +<a name="l00479"></a><a class="code" href="classServer.html#a30">00479</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a30">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname) +00480 { +00481 force_nickchange(user,nickname.c_str()); +00482 } +00483 +<a name="l00484"></a><a class="code" href="classServer.html#a31">00484</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason) +00485 { +00486 kill_link(user,reason.c_str()); +00487 } +00488 +<a name="l00489"></a><a class="code" href="classServer.html#a36">00489</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a36">Server::IsUlined</a>(std::string server) +00490 { +00491 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a74">is_uline</a>(server.c_str()); +00492 } +00493 +<a name="l00494"></a><a class="code" href="classServer.html#a33">00494</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a33">Server::CallCommandHandler</a>(std::string commandname, <span class="keywordtype">char</span>** parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a>* user) +00495 { +00496 call_handler(commandname.c_str(),parameters,pcnt,user); +00497 } +00498 +<a name="l00499"></a><a class="code" href="classServer.html#a3">00499</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a3">Server::Log</a>(<span class="keywordtype">int</span> level, std::string s) +00500 { +00501 log(level,<span class="stringliteral">"%s"</span>,s.c_str()); +00502 } +00503 +<a name="l00504"></a><a class="code" href="classServer.html#a25">00504</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams, <span class="keywordtype">char</span>* source) +00505 { +00506 <a class="code" href="modules_8h.html#a35">createcommand</a>(cmd,f,flags,minparams,source); +00507 } +00508 +<a name="l00509"></a><a class="code" href="classServer.html#a26">00509</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a26">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) +00510 { +00511 <a class="code" href="modules_8h.html#a36">server_mode</a>(parameters,pcnt,user); +00512 } +00513 +<a name="l00514"></a><a class="code" href="classServer.html#a4">00514</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a4">Server::Send</a>(<span class="keywordtype">int</span> Socket, std::string s) +00515 { +00516 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); +00517 } +00518 +<a name="l00519"></a><a class="code" href="classServer.html#a5">00519</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a5">Server::SendServ</a>(<span class="keywordtype">int</span> Socket, std::string s) +00520 { +00521 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); +00522 } +00523 +<a name="l00524"></a><a class="code" href="classServer.html#a7">00524</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s) +00525 { +00526 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str()); +00527 } +00528 +<a name="l00529"></a><a class="code" href="classServer.html#a8">00529</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s) +00530 { +00531 <span class="keywordflow">if</span> (!Source) +00532 { +00533 <span class="comment">// if source is NULL, then the message originates from the local server</span> +00534 Write(Dest-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this->GetServerName().c_str(),s.c_str()); +00535 } +00536 <span class="keywordflow">else</span> +00537 { +00538 <span class="comment">// otherwise it comes from the user specified</span> +00539 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str()); +00540 } +00541 } +00542 +<a name="l00543"></a><a class="code" href="classServer.html#a6">00543</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendChannelServerNotice</a>(std::string ServName, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string text) +00544 { +00545 WriteChannelWithServ((<span class="keywordtype">char</span>*)ServName.c_str(), Channel, <span class="stringliteral">"%s"</span>, text.c_str()); +00546 } +00547 +<a name="l00548"></a><a class="code" href="classServer.html#a9">00548</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a9">Server::SendChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Channel, std::string s,<span class="keywordtype">bool</span> IncludeSender) +00549 { +00550 <span class="keywordflow">if</span> (IncludeSender) +00551 { +00552 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); +00553 } +00554 <span class="keywordflow">else</span> +00555 { +00556 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); +00557 } +00558 } +00559 +<a name="l00560"></a><a class="code" href="classServer.html#a10">00560</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a10">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2) +00561 { +00562 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a0">common_channels</a>(u1,u2) != 0); +00563 } +00564 +<a name="l00565"></a><a class="code" href="classServer.html#a11">00565</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender) +00566 { +00567 <span class="keywordflow">if</span> (IncludeSender) +00568 { +00569 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str()); +00570 } +00571 <span class="keywordflow">else</span> +00572 { +00573 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str()); +00574 } +00575 } +00576 +<a name="l00577"></a><a class="code" href="classServer.html#a12">00577</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a12">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text) +00578 { +00579 WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str()); +00580 } +00581 +<a name="l00582"></a><a class="code" href="classServer.html#a34">00582</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a34">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host) +00583 { +00584 <a class="code" href="message_8h.html#a11">ChangeDisplayedHost</a>(user,host.c_str()); +00585 } +00586 +<a name="l00587"></a><a class="code" href="classServer.html#a35">00587</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a35">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos) +00588 { +00589 <a class="code" href="message_8h.html#a10">ChangeName</a>(user,gecos.c_str()); +00590 } +00591 +<a name="l00592"></a><a class="code" href="classServer.html#a13">00592</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a13">Server::IsNick</a>(std::string nick) +00593 { +00594 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a13">isnick</a>(nick.c_str()) != 0); +00595 } +00596 +<a name="l00597"></a><a class="code" href="classServer.html#a15">00597</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a15">Server::FindNick</a>(std::string nick) +00598 { +00599 <span class="keywordflow">return</span> Find(nick); +00600 } +00601 +<a name="l00602"></a><a class="code" href="classServer.html#a16">00602</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a16">Server::FindDescriptor</a>(<span class="keywordtype">int</span> socket) +00603 { +00604 <span class="keywordflow">return</span> (socket < 65536 ? <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[socket] : NULL); +00605 } +00606 +<a name="l00607"></a><a class="code" href="classServer.html#a17">00607</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a17">Server::FindChannel</a>(std::string channel) +00608 { +00609 <span class="keywordflow">return</span> FindChan(channel.c_str()); +00610 } +00611 +<a name="l00612"></a><a class="code" href="classServer.html#a18">00612</a> std::string <a class="code" href="classServer.html#a18">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan) +00613 { +00614 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a14">cmode</a>(User,Chan); +00615 } +00616 +<a name="l00617"></a><a class="code" href="classServer.html#a19">00617</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a19">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan) +00618 { +00619 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a16">has_channel</a>(User,Chan); +00620 } +00621 +<a name="l00622"></a><a class="code" href="classServer.html#a20">00622</a> std::string <a class="code" href="classServer.html#a20">Server::GetServerName</a>() +00623 { +00624 <span class="keywordflow">return</span> getservername(); +00625 } +00626 +<a name="l00627"></a><a class="code" href="classServer.html#a21">00627</a> std::string <a class="code" href="classServer.html#a21">Server::GetNetworkName</a>() +00628 { +00629 <span class="keywordflow">return</span> getnetworkname(); +00630 } +00631 +<a name="l00632"></a><a class="code" href="classServer.html#a22">00632</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a22">Server::GetAdmin</a>() +00633 { +00634 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick()); +00635 } 00636 00637 -<a name="l00638"></a><a class="code" href="classServer.html#a23">00638</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a23">Server::AddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_when_on, <span class="keywordtype">int</span> params_when_off) -00639 { -00640 <span class="keywordflow">if</span> (((modechar >= <span class="charliteral">'A'</span>) && (modechar <= 'Z')) || ((modechar >= <span class="charliteral">'a'</span>) && (modechar <= <span class="charliteral">'z'</span>))) -00641 { -00642 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>) -00643 { -00644 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>); -00645 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00646 } -00647 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>)) -00648 { -00649 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>); -00650 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00651 } -00652 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1)) -00653 { -00654 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>); -00655 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00656 } -00657 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a58">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off); -00658 } -00659 <span class="keywordflow">else</span> -00660 { -00661 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>); -00662 } -00663 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00664 } -00665 -<a name="l00666"></a><a class="code" href="classServer.html#a24">00666</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a24">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar) -00667 { -00668 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#a58">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1); -00669 <span class="keywordflow">if</span> (res) -00670 <a class="code" href="modules_8cpp.html#a59">ModeMakeList</a>(modechar); -00671 <span class="keywordflow">return</span> res; -00672 } -00673 -<a name="l00674"></a><a class="code" href="classServer.html#a14">00674</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a14">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c) -00675 { -00676 <span class="keywordflow">return</span> usercount(c); -00677 } -00678 +00638 +<a name="l00639"></a><a class="code" href="classServer.html#a23">00639</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a23">Server::AddExtendedMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type, <span class="keywordtype">bool</span> requires_oper, <span class="keywordtype">int</span> params_when_on, <span class="keywordtype">int</span> params_when_off) +00640 { +00641 <span class="keywordflow">if</span> (((modechar >= <span class="charliteral">'A'</span>) && (modechar <= 'Z')) || ((modechar >= <span class="charliteral">'a'</span>) && (modechar <= <span class="charliteral">'z'</span>))) +00642 { +00643 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>) +00644 { +00645 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>); +00646 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00647 } +00648 <span class="keywordflow">if</span> (((params_when_on>0) || (params_when_off>0)) && (type == <a class="code" href="modules_8h.html#a6">MT_CLIENT</a>)) +00649 { +00650 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>); +00651 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00652 } +00653 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1)) +00654 { +00655 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>); +00656 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00657 } +00658 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a59">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off); +00659 } +00660 <span class="keywordflow">else</span> +00661 { +00662 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"*** API ERROR *** Muppet modechar detected."</span>); +00663 } +00664 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00665 } +00666 +<a name="l00667"></a><a class="code" href="classServer.html#a24">00667</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a24">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar) +00668 { +00669 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#a59">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1); +00670 <span class="keywordflow">if</span> (res) +00671 <a class="code" href="modules_8cpp.html#a60">ModeMakeList</a>(modechar); +00672 <span class="keywordflow">return</span> res; +00673 } +00674 +<a name="l00675"></a><a class="code" href="classServer.html#a14">00675</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a14">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c) +00676 { +00677 <span class="keywordflow">return</span> usercount(c); +00678 } 00679 -<a name="l00680"></a><a class="code" href="classServer.html#a38">00680</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a38">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,std::string message) -00681 { -00682 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-><a class="code" href="classconnection.html#o0">fd</a>; -00683 user-><a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>; -00684 user-><a class="code" href="classuserrec.html#a10">ClearBuffer</a>(); -00685 Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#o1">ident</a>,user-><a class="code" href="classconnection.html#o1">host</a>,message.c_str()); -00686 <span class="preprocessor">#ifdef USE_KQUEUE</span> -00687 <span class="preprocessor"></span> <span class="keyword">struct </span>kevent ke; -00688 EV_SET(&ke, old_fd, EVFILT_READ, EV_DELETE, 0, 0, NULL); -00689 <span class="keywordtype">int</span> i = kevent(kq, &ke, 1, 0, 0, NULL); -00690 <span class="keywordflow">if</span> (i == -1) -00691 { -00692 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"kqueue: Failed to remove user from queue!"</span>); -00693 } -00694 <span class="preprocessor">#endif</span> -00695 <span class="preprocessor"></span> shutdown(old_fd,2); -00696 close(old_fd); -00697 } -00698 -<a name="l00699"></a><a class="code" href="classServer.html#a39">00699</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a39">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,std::string message) -00700 { -00701 zombie-><a class="code" href="classconnection.html#o0">fd</a> = alive-><a class="code" href="classconnection.html#o0">fd</a>; -00702 alive-><a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>; -00703 alive-><a class="code" href="classuserrec.html#a10">ClearBuffer</a>(); -00704 Write(zombie-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-><a class="code" href="classuserrec.html#o0">nick</a>,alive-><a class="code" href="classuserrec.html#o1">ident</a>,alive-><a class="code" href="classconnection.html#o1">host</a>,zombie-><a class="code" href="classuserrec.html#o0">nick</a>); -00705 kill_link(alive,message.c_str()); -00706 <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[zombie-><a class="code" href="classconnection.html#o0">fd</a>] = zombie; -00707 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i != MAXCHANS; i++) -00708 { -00709 <span class="keywordflow">if</span> (zombie->chans[i].channel != NULL) -00710 { -00711 <span class="keywordflow">if</span> (zombie->chans[i].channel->name) -00712 { -00713 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-><a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>; -00714 WriteFrom(zombie->fd,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-><a class="code" href="classchanrec.html#o0">name</a>); -00715 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#o6">topicset</a>) -00716 { -00717 WriteServ(zombie->fd,<span class="stringliteral">"332 %s %s :%s"</span>, zombie->nick, Ptr-><a class="code" href="classchanrec.html#o0">name</a>, Ptr-><a class="code" href="classchanrec.html#o4">topic</a>); -00718 WriteServ(zombie->fd,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie->nick, Ptr-><a class="code" href="classchanrec.html#o0">name</a>, Ptr-><a class="code" href="classchanrec.html#o7">setby</a>, Ptr-><a class="code" href="classchanrec.html#o6">topicset</a>); -00719 } -00720 userlist(zombie,Ptr); -00721 WriteServ(zombie->fd,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie->nick, Ptr-><a class="code" href="classchanrec.html#o0">name</a>); -00722 -00723 } -00724 } -00725 } -00726 -00727 } -00728 -<a name="l00729"></a><a class="code" href="classServer.html#a40">00729</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a40">Server::AddGLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask) -00730 { -00731 <a class="code" href="xline_8h.html#a1">add_gline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str()); -00732 } -00733 -<a name="l00734"></a><a class="code" href="classServer.html#a41">00734</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a41">Server::AddQLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string nickname) -00735 { -00736 <a class="code" href="xline_8h.html#a2">add_qline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), nickname.c_str()); -00737 } -00738 -<a name="l00739"></a><a class="code" href="classServer.html#a42">00739</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a42">Server::AddZLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string ipaddr) -00740 { -00741 <a class="code" href="xline_8h.html#a3">add_zline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str()); -00742 } -00743 -<a name="l00744"></a><a class="code" href="classServer.html#a43">00744</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a43">Server::AddKLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask) -00745 { -00746 <a class="code" href="xline_8h.html#a4">add_kline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str()); -00747 } -00748 -<a name="l00749"></a><a class="code" href="classServer.html#a44">00749</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a44">Server::AddELine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask) -00750 { -00751 <a class="code" href="xline_8h.html#a5">add_eline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str()); -00752 } -00753 -<a name="l00754"></a><a class="code" href="classServer.html#a45">00754</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a45">Server::DelGLine</a>(std::string hostmask) -00755 { -00756 <a class="code" href="xline_8h.html#a6">del_gline</a>(hostmask.c_str()); -00757 } -00758 -<a name="l00759"></a><a class="code" href="classServer.html#a46">00759</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a46">Server::DelQLine</a>(std::string nickname) -00760 { -00761 <a class="code" href="xline_8h.html#a7">del_qline</a>(nickname.c_str()); -00762 } -00763 -<a name="l00764"></a><a class="code" href="classServer.html#a47">00764</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a47">Server::DelZLine</a>(std::string ipaddr) -00765 { -00766 <a class="code" href="xline_8h.html#a8">del_zline</a>(ipaddr.c_str()); -00767 } -00768 -<a name="l00769"></a><a class="code" href="classServer.html#a48">00769</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a48">Server::DelKLine</a>(std::string hostmask) -00770 { -00771 <a class="code" href="xline_8h.html#a9">del_kline</a>(hostmask.c_str()); -00772 } -00773 -<a name="l00774"></a><a class="code" href="classServer.html#a49">00774</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a49">Server::DelELine</a>(std::string hostmask) -00775 { -00776 <a class="code" href="xline_8h.html#a10">del_eline</a>(hostmask.c_str()); -00777 } -00778 -<a name="l00779"></a><a class="code" href="classServer.html#a50">00779</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#a50">Server::CalcDuration</a>(std::string delta) -00780 { -00781 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a75">duration</a>(delta.c_str()); -00782 } -00783 -<a name="l00784"></a><a class="code" href="classServer.html#a51">00784</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a51">Server::IsValidMask</a>(std::string mask) -00785 { -00786 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str(); -00787 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0) -00788 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00789 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0) -00790 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00791 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) -00792 <span class="keywordflow">if</span> (dest[i] < 32) -00793 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00794 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) -00795 <span class="keywordflow">if</span> (dest[i] > 126) -00796 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00797 <span class="keywordtype">int</span> c = 0; -00798 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) -00799 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>) -00800 c++; -00801 <span class="keywordflow">if</span> (c>1) -00802 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00803 c = 0; -00804 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) -00805 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>) -00806 c++; -00807 <span class="keywordflow">if</span> (c>1) -00808 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00809 -00810 <span class="keywordflow">return</span> <span class="keyword">true</span>; -00811 } -00812 -<a name="l00813"></a><a class="code" href="classServer.html#a52">00813</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a52">Server::MeshSendAll</a>(std::string text) -00814 { -00815 NetSendToAll((<span class="keywordtype">char</span>*)text.c_str()); -00816 } -00817 -<a name="l00818"></a><a class="code" href="classServer.html#a53">00818</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a53">Server::MeshSendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string text) -00819 { -00820 <span class="keywordflow">if</span> (user) -00821 NetSendToCommon(user,(<span class="keywordtype">char</span>*)text.c_str()); -00822 } -00823 -<a name="l00824"></a><a class="code" href="classServer.html#a54">00824</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a54">Server::MeshSendAllAlive</a>(std::string text) -00825 { -00826 NetSendToAllAlive((<span class="keywordtype">char</span>*)text.c_str()); -00827 } -00828 -<a name="l00829"></a><a class="code" href="classServer.html#a55">00829</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a55">Server::MeshSendUnicast</a>(std::string destination, std::string text) -00830 { -00831 NetSendToOne((<span class="keywordtype">char</span>*)destination.c_str(),(<span class="keywordtype">char</span>*)text.c_str()); -00832 } -00833 -<a name="l00834"></a><a class="code" href="classServer.html#a56">00834</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a56">Server::MeshSendAllExcept</a>(std::string target, std::string text) -00835 { -00836 NetSendToAllExcept(target.c_str(),(<span class="keywordtype">char</span>*)text.c_str()); -00837 } -00838 -<a name="l00839"></a><a class="code" href="classServer.html#a57">00839</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a57">Server::MeshCheckChan</a>(<a class="code" href="classchanrec.html">chanrec</a> *c,std::string servername) -00840 { -00841 <span class="keywordflow">if</span> (c) -00842 { -00843 <span class="keywordflow">return</span> ChanAnyOnThisServer(c,(<span class="keywordtype">char</span>*)servername.c_str()); -00844 } -00845 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>; -00846 } -00847 -<a name="l00848"></a><a class="code" href="classServer.html#a58">00848</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a58">Server::MeshCheckCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* u,std::string servername) -00849 { -00850 <span class="keywordflow">if</span> (u) -00851 { -00852 <span class="keywordflow">return</span> CommonOnThisServer(u,(<span class="keywordtype">char</span>*)servername.c_str()); -00853 } -00854 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>; -00855 } -00856 -<a name="l00857"></a><a class="code" href="classServer.html#a59">00857</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#a59">Server::FindModule</a>(std::string name) -00858 { -00859 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i <= <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>; i++) -00860 { -00861 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#a27">module_names</a>[i] == name) -00862 { -00863 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#a2">modules</a>[i]; -00864 } -00865 } -00866 <span class="keywordflow">return</span> NULL; -00867 } -00868 -<a name="l00869"></a><a class="code" href="classConfigReader.html#a0">00869</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>() -00870 { -00871 this-><a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); -00872 this-><a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); -00873 this-><a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this->cache,this->errorlog); -00874 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#p2">readerror</a>) -00875 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>; -00876 } -00877 +00680 +<a name="l00681"></a><a class="code" href="classServer.html#a38">00681</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a38">Server::UserToPseudo</a>(<a class="code" href="classuserrec.html">userrec</a>* user,std::string message) +00682 { +00683 <span class="keywordtype">unsigned</span> <span class="keywordtype">int</span> old_fd = user-><a class="code" href="classconnection.html#o0">fd</a>; +00684 user-><a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>; +00685 user-><a class="code" href="classuserrec.html#a10">ClearBuffer</a>(); +00686 Write(old_fd,<span class="stringliteral">"ERROR :Closing link (%s@%s) [%s]"</span>,user-><a class="code" href="classuserrec.html#o1">ident</a>,user-><a class="code" href="classconnection.html#o1">host</a>,message.c_str()); +00687 <span class="preprocessor">#ifdef USE_KQUEUE</span> +00688 <span class="preprocessor"></span> <span class="keyword">struct </span>kevent ke; +00689 EV_SET(&ke, old_fd, EVFILT_READ, EV_DELETE, 0, 0, NULL); +00690 <span class="keywordtype">int</span> i = kevent(kq, &ke, 1, 0, 0, NULL); +00691 <span class="keywordflow">if</span> (i == -1) +00692 { +00693 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"kqueue: Failed to remove user from queue!"</span>); +00694 } +00695 <span class="preprocessor">#endif</span> +00696 <span class="preprocessor"></span> shutdown(old_fd,2); +00697 close(old_fd); +00698 } +00699 +<a name="l00700"></a><a class="code" href="classServer.html#a39">00700</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a39">Server::PseudoToUser</a>(<a class="code" href="classuserrec.html">userrec</a>* alive,<a class="code" href="classuserrec.html">userrec</a>* zombie,std::string message) +00701 { +00702 zombie-><a class="code" href="classconnection.html#o0">fd</a> = alive-><a class="code" href="classconnection.html#o0">fd</a>; +00703 alive-><a class="code" href="classconnection.html#o0">fd</a> = <a class="code" href="modules_8h.html#a26">FD_MAGIC_NUMBER</a>; +00704 alive-><a class="code" href="classuserrec.html#a10">ClearBuffer</a>(); +00705 Write(zombie-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s!%s@%s NICK %s"</span>,alive-><a class="code" href="classuserrec.html#o0">nick</a>,alive-><a class="code" href="classuserrec.html#o1">ident</a>,alive-><a class="code" href="classconnection.html#o1">host</a>,zombie-><a class="code" href="classuserrec.html#o0">nick</a>); +00706 kill_link(alive,message.c_str()); +00707 <a class="code" href="modules_8cpp.html#a38">fd_ref_table</a>[zombie-><a class="code" href="classconnection.html#o0">fd</a>] = zombie; +00708 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i != MAXCHANS; i++) +00709 { +00710 <span class="keywordflow">if</span> (zombie->chans[i].channel != NULL) +00711 { +00712 <span class="keywordflow">if</span> (zombie->chans[i].channel->name) +00713 { +00714 <a class="code" href="classchanrec.html">chanrec</a>* Ptr = zombie-><a class="code" href="classuserrec.html#o5">chans</a>[i].<a class="code" href="classucrec.html#o1">channel</a>; +00715 WriteFrom(zombie->fd,zombie,<span class="stringliteral">"JOIN %s"</span>,Ptr-><a class="code" href="classchanrec.html#o0">name</a>); +00716 <span class="keywordflow">if</span> (Ptr-><a class="code" href="classchanrec.html#o5">topicset</a>) +00717 { +00718 WriteServ(zombie->fd,<span class="stringliteral">"332 %s %s :%s"</span>, zombie->nick, Ptr-><a class="code" href="classchanrec.html#o0">name</a>, Ptr-><a class="code" href="classchanrec.html#o3">topic</a>); +00719 WriteServ(zombie->fd,<span class="stringliteral">"333 %s %s %s %d"</span>, zombie->nick, Ptr-><a class="code" href="classchanrec.html#o0">name</a>, Ptr-><a class="code" href="classchanrec.html#o6">setby</a>, Ptr-><a class="code" href="classchanrec.html#o5">topicset</a>); +00720 } +00721 userlist(zombie,Ptr); +00722 WriteServ(zombie->fd,<span class="stringliteral">"366 %s %s :End of /NAMES list."</span>, zombie->nick, Ptr-><a class="code" href="classchanrec.html#o0">name</a>); +00723 +00724 } +00725 } +00726 } +00727 +00728 } +00729 +<a name="l00730"></a><a class="code" href="classServer.html#a40">00730</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a40">Server::AddGLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask) +00731 { +00732 <a class="code" href="xline_8h.html#a1">add_gline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str()); +00733 } +00734 +<a name="l00735"></a><a class="code" href="classServer.html#a41">00735</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a41">Server::AddQLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string nickname) +00736 { +00737 <a class="code" href="xline_8h.html#a2">add_qline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), nickname.c_str()); +00738 } +00739 +<a name="l00740"></a><a class="code" href="classServer.html#a42">00740</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a42">Server::AddZLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string ipaddr) +00741 { +00742 <a class="code" href="xline_8h.html#a3">add_zline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), ipaddr.c_str()); +00743 } +00744 +<a name="l00745"></a><a class="code" href="classServer.html#a43">00745</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a43">Server::AddKLine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask) +00746 { +00747 <a class="code" href="xline_8h.html#a4">add_kline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str()); +00748 } +00749 +<a name="l00750"></a><a class="code" href="classServer.html#a44">00750</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a44">Server::AddELine</a>(<span class="keywordtype">long</span> duration, std::string source, std::string reason, std::string hostmask) +00751 { +00752 <a class="code" href="xline_8h.html#a5">add_eline</a>(<a class="code" href="commands_8h.html#a75">duration</a>, source.c_str(), reason.c_str(), hostmask.c_str()); +00753 } +00754 +<a name="l00755"></a><a class="code" href="classServer.html#a45">00755</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a45">Server::DelGLine</a>(std::string hostmask) +00756 { +00757 <a class="code" href="xline_8h.html#a6">del_gline</a>(hostmask.c_str()); +00758 } +00759 +<a name="l00760"></a><a class="code" href="classServer.html#a46">00760</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a46">Server::DelQLine</a>(std::string nickname) +00761 { +00762 <a class="code" href="xline_8h.html#a7">del_qline</a>(nickname.c_str()); +00763 } +00764 +<a name="l00765"></a><a class="code" href="classServer.html#a47">00765</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a47">Server::DelZLine</a>(std::string ipaddr) +00766 { +00767 <a class="code" href="xline_8h.html#a8">del_zline</a>(ipaddr.c_str()); +00768 } +00769 +<a name="l00770"></a><a class="code" href="classServer.html#a48">00770</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a48">Server::DelKLine</a>(std::string hostmask) +00771 { +00772 <a class="code" href="xline_8h.html#a9">del_kline</a>(hostmask.c_str()); +00773 } +00774 +<a name="l00775"></a><a class="code" href="classServer.html#a49">00775</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a49">Server::DelELine</a>(std::string hostmask) +00776 { +00777 <a class="code" href="xline_8h.html#a10">del_eline</a>(hostmask.c_str()); +00778 } +00779 +<a name="l00780"></a><a class="code" href="classServer.html#a50">00780</a> <span class="keywordtype">long</span> <a class="code" href="classServer.html#a50">Server::CalcDuration</a>(std::string delta) +00781 { +00782 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a75">duration</a>(delta.c_str()); +00783 } +00784 +<a name="l00785"></a><a class="code" href="classServer.html#a51">00785</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a51">Server::IsValidMask</a>(std::string mask) +00786 { +00787 <span class="keyword">const</span> <span class="keywordtype">char</span>* dest = mask.c_str(); +00788 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'!'</span>)==0) +00789 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00790 <span class="keywordflow">if</span> (strchr(dest,<span class="charliteral">'@'</span>)==0) +00791 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00792 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) +00793 <span class="keywordflow">if</span> (dest[i] < 32) +00794 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00795 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) +00796 <span class="keywordflow">if</span> (dest[i] > 126) +00797 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00798 <span class="keywordtype">int</span> c = 0; +00799 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) +00800 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'!'</span>) +00801 c++; +00802 <span class="keywordflow">if</span> (c>1) +00803 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00804 c = 0; +00805 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(dest); i++) +00806 <span class="keywordflow">if</span> (dest[i] == <span class="charliteral">'@'</span>) +00807 c++; +00808 <span class="keywordflow">if</span> (c>1) +00809 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00810 +00811 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00812 } +00813 +<a name="l00814"></a><a class="code" href="classServer.html#a52">00814</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a52">Server::MeshSendAll</a>(std::string text) +00815 { +00816 NetSendToAll((<span class="keywordtype">char</span>*)text.c_str()); +00817 } +00818 +<a name="l00819"></a><a class="code" href="classServer.html#a53">00819</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a53">Server::MeshSendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string text) +00820 { +00821 <span class="keywordflow">if</span> (user) +00822 NetSendToCommon(user,(<span class="keywordtype">char</span>*)text.c_str()); +00823 } +00824 +<a name="l00825"></a><a class="code" href="classServer.html#a54">00825</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a54">Server::MeshSendAllAlive</a>(std::string text) +00826 { +00827 NetSendToAllAlive((<span class="keywordtype">char</span>*)text.c_str()); +00828 } +00829 +<a name="l00830"></a><a class="code" href="classServer.html#a55">00830</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a55">Server::MeshSendUnicast</a>(std::string destination, std::string text) +00831 { +00832 NetSendToOne((<span class="keywordtype">char</span>*)destination.c_str(),(<span class="keywordtype">char</span>*)text.c_str()); +00833 } +00834 +<a name="l00835"></a><a class="code" href="classServer.html#a56">00835</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a56">Server::MeshSendAllExcept</a>(std::string target, std::string text) +00836 { +00837 NetSendToAllExcept(target.c_str(),(<span class="keywordtype">char</span>*)text.c_str()); +00838 } +00839 +<a name="l00840"></a><a class="code" href="classServer.html#a57">00840</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a57">Server::MeshCheckChan</a>(<a class="code" href="classchanrec.html">chanrec</a> *c,std::string servername) +00841 { +00842 <span class="keywordflow">if</span> (c) +00843 { +00844 <span class="keywordflow">return</span> ChanAnyOnThisServer(c,(<span class="keywordtype">char</span>*)servername.c_str()); +00845 } +00846 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>; +00847 } +00848 +<a name="l00849"></a><a class="code" href="classServer.html#a58">00849</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a58">Server::MeshCheckCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* u,std::string servername) +00850 { +00851 <span class="keywordflow">if</span> (u) +00852 { +00853 <span class="keywordflow">return</span> CommonOnThisServer(u,(<span class="keywordtype">char</span>*)servername.c_str()); +00854 } +00855 <span class="keywordflow">else</span> <span class="keywordflow">return</span> <span class="keyword">false</span>; +00856 } +00857 +<a name="l00858"></a><a class="code" href="classServer.html#a59">00858</a> <a class="code" href="classModule.html">Module</a>* <a class="code" href="classServer.html#a59">Server::FindModule</a>(std::string name) +00859 { +00860 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i <= <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>; i++) +00861 { +00862 <span class="keywordflow">if</span> (<a class="code" href="channels_8cpp.html#a27">module_names</a>[i] == name) +00863 { +00864 <span class="keywordflow">return</span> <a class="code" href="channels_8cpp.html#a2">modules</a>[i]; +00865 } +00866 } +00867 <span class="keywordflow">return</span> NULL; +00868 } +00869 +<a name="l00870"></a><a class="code" href="classConfigReader.html#a0">00870</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>() +00871 { +00872 this-><a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00873 this-><a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00874 this-><a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this->cache,this->errorlog); +00875 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#p2">readerror</a>) +00876 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>; +00877 } 00878 -<a name="l00879"></a><a class="code" href="classConfigReader.html#a2">00879</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>() -00880 { -00881 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#p0">cache</a>) -00882 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#p0">cache</a>; -00883 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#p1">errorlog</a>) -00884 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#p1">errorlog</a>; -00885 } -00886 +00879 +<a name="l00880"></a><a class="code" href="classConfigReader.html#a2">00880</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>() +00881 { +00882 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#p0">cache</a>) +00883 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#p0">cache</a>; +00884 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#p1">errorlog</a>) +00885 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#p1">errorlog</a>; +00886 } 00887 -<a name="l00888"></a><a class="code" href="classConfigReader.html#a1">00888</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename) -00889 { -00890 this-><a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); -00891 this-><a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); -00892 this-><a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(filename.c_str(),this-><a class="code" href="classConfigReader.html#p0">cache</a>,this-><a class="code" href="classConfigReader.html#p1">errorlog</a>); -00893 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#p2">readerror</a>) -00894 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>; -00895 }; -00896 -<a name="l00897"></a><a class="code" href="classConfigReader.html#a3">00897</a> std::string <a class="code" href="classConfigReader.html#a3">ConfigReader::ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index) -00898 { -00899 <span class="keywordtype">char</span> val[MAXBUF]; -00900 <span class="keywordtype">char</span> t[MAXBUF]; -00901 <span class="keywordtype">char</span> n[MAXBUF]; -00902 strlcpy(t,tag.c_str(),MAXBUF); -00903 strlcpy(n,name.c_str(),MAXBUF); -00904 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val); -00905 <span class="keywordflow">if</span> (!res) -00906 { -00907 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>; -00908 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; -00909 } -00910 <span class="keywordflow">return</span> val; -00911 } -00912 -<a name="l00913"></a><a class="code" href="classConfigReader.html#a4">00913</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::ReadFlag</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index) -00914 { -00915 <span class="keywordtype">char</span> val[MAXBUF]; -00916 <span class="keywordtype">char</span> t[MAXBUF]; -00917 <span class="keywordtype">char</span> n[MAXBUF]; -00918 strlcpy(t,tag.c_str(),MAXBUF); -00919 strlcpy(n,name.c_str(),MAXBUF); -00920 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val); -00921 <span class="keywordflow">if</span> (!res) -00922 { -00923 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>; -00924 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00925 } -00926 std::string s = val; -00927 <span class="keywordflow">return</span> ((s == <span class="stringliteral">"yes"</span>) || (s == <span class="stringliteral">"YES"</span>) || (s == <span class="stringliteral">"true"</span>) || (s == <span class="stringliteral">"TRUE"</span>) || (s == <span class="stringliteral">"1"</span>)); -00928 } -00929 -<a name="l00930"></a><a class="code" href="classConfigReader.html#a5">00930</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::ReadInteger</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned) -00931 { -00932 <span class="keywordtype">char</span> val[MAXBUF]; -00933 <span class="keywordtype">char</span> t[MAXBUF]; -00934 <span class="keywordtype">char</span> n[MAXBUF]; -00935 strlcpy(t,tag.c_str(),MAXBUF); -00936 strlcpy(n,name.c_str(),MAXBUF); -00937 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val); -00938 <span class="keywordflow">if</span> (!res) -00939 { -00940 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>; -00941 <span class="keywordflow">return</span> 0; -00942 } -00943 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(val); i++) -00944 { -00945 <span class="keywordflow">if</span> (!isdigit(val[i])) -00946 { -00947 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a27">CONF_NOT_A_NUMBER</a>; -00948 <span class="keywordflow">return</span> 0; -00949 } -00950 } -00951 <span class="keywordflow">if</span> ((needs_unsigned) && (atoi(val)<0)) -00952 { -00953 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a28">CONF_NOT_UNSIGNED</a>; -00954 <span class="keywordflow">return</span> 0; -00955 } -00956 <span class="keywordflow">return</span> atoi(val); -00957 } -00958 -<a name="l00959"></a><a class="code" href="classConfigReader.html#a6">00959</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">ConfigReader::GetError</a>() -00960 { -00961 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#p3">error</a>; -00962 this->error = 0; -00963 <span class="keywordflow">return</span> olderr; -00964 } -00965 -<a name="l00966"></a><a class="code" href="classConfigReader.html#a9">00966</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#a9">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user) -00967 { -00968 <span class="keywordflow">if</span> (bail) -00969 { -00970 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#p1">errorlog</a>->str().c_str()); -00971 exit(0); -00972 } -00973 <span class="keywordflow">else</span> -00974 { -00975 <span class="keywordtype">char</span> dataline[1024]; -00976 <span class="keywordflow">if</span> (user) -00977 { -00978 WriteServ(user-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#o0">nick</a>); -00979 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>->eof()) -00980 { -00981 <a class="code" href="classConfigReader.html#p1">errorlog</a>->getline(dataline,1024); -00982 WriteServ(user-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-><a class="code" href="classuserrec.html#o0">nick</a>,dataline); -00983 } -00984 } -00985 <span class="keywordflow">else</span> -00986 { -00987 WriteOpers(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#o0">nick</a>); -00988 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>->eof()) -00989 { -00990 <a class="code" href="classConfigReader.html#p1">errorlog</a>->getline(dataline,1024); -00991 WriteOpers(dataline); -00992 } -00993 } -00994 <span class="keywordflow">return</span>; -00995 } -00996 } -00997 +00888 +<a name="l00889"></a><a class="code" href="classConfigReader.html#a1">00889</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename) +00890 { +00891 this-><a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00892 this-><a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00893 this-><a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(filename.c_str(),this-><a class="code" href="classConfigReader.html#p0">cache</a>,this-><a class="code" href="classConfigReader.html#p1">errorlog</a>); +00894 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#p2">readerror</a>) +00895 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a30">CONF_FILE_NOT_FOUND</a>; +00896 }; +00897 +<a name="l00898"></a><a class="code" href="classConfigReader.html#a3">00898</a> std::string <a class="code" href="classConfigReader.html#a3">ConfigReader::ReadValue</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index) +00899 { +00900 <span class="keywordtype">char</span> val[MAXBUF]; +00901 <span class="keywordtype">char</span> t[MAXBUF]; +00902 <span class="keywordtype">char</span> n[MAXBUF]; +00903 strlcpy(t,tag.c_str(),MAXBUF); +00904 strlcpy(n,name.c_str(),MAXBUF); +00905 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val); +00906 <span class="keywordflow">if</span> (!res) +00907 { +00908 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>; +00909 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; +00910 } +00911 <span class="keywordflow">return</span> val; +00912 } +00913 +<a name="l00914"></a><a class="code" href="classConfigReader.html#a4">00914</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a4">ConfigReader::ReadFlag</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index) +00915 { +00916 <span class="keywordtype">char</span> val[MAXBUF]; +00917 <span class="keywordtype">char</span> t[MAXBUF]; +00918 <span class="keywordtype">char</span> n[MAXBUF]; +00919 strlcpy(t,tag.c_str(),MAXBUF); +00920 strlcpy(n,name.c_str(),MAXBUF); +00921 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val); +00922 <span class="keywordflow">if</span> (!res) +00923 { +00924 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>; +00925 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00926 } +00927 std::string s = val; +00928 <span class="keywordflow">return</span> ((s == <span class="stringliteral">"yes"</span>) || (s == <span class="stringliteral">"YES"</span>) || (s == <span class="stringliteral">"true"</span>) || (s == <span class="stringliteral">"TRUE"</span>) || (s == <span class="stringliteral">"1"</span>)); +00929 } +00930 +<a name="l00931"></a><a class="code" href="classConfigReader.html#a5">00931</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a5">ConfigReader::ReadInteger</a>(std::string tag, std::string name, <span class="keywordtype">int</span> index, <span class="keywordtype">bool</span> needs_unsigned) +00932 { +00933 <span class="keywordtype">char</span> val[MAXBUF]; +00934 <span class="keywordtype">char</span> t[MAXBUF]; +00935 <span class="keywordtype">char</span> n[MAXBUF]; +00936 strlcpy(t,tag.c_str(),MAXBUF); +00937 strlcpy(n,name.c_str(),MAXBUF); +00938 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val); +00939 <span class="keywordflow">if</span> (!res) +00940 { +00941 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a29">CONF_VALUE_NOT_FOUND</a>; +00942 <span class="keywordflow">return</span> 0; +00943 } +00944 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(val); i++) +00945 { +00946 <span class="keywordflow">if</span> (!isdigit(val[i])) +00947 { +00948 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a27">CONF_NOT_A_NUMBER</a>; +00949 <span class="keywordflow">return</span> 0; +00950 } +00951 } +00952 <span class="keywordflow">if</span> ((needs_unsigned) && (atoi(val)<0)) +00953 { +00954 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a28">CONF_NOT_UNSIGNED</a>; +00955 <span class="keywordflow">return</span> 0; +00956 } +00957 <span class="keywordflow">return</span> atoi(val); +00958 } +00959 +<a name="l00960"></a><a class="code" href="classConfigReader.html#a6">00960</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">ConfigReader::GetError</a>() +00961 { +00962 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#p3">error</a>; +00963 this->error = 0; +00964 <span class="keywordflow">return</span> olderr; +00965 } +00966 +<a name="l00967"></a><a class="code" href="classConfigReader.html#a9">00967</a> <span class="keywordtype">void</span> <a class="code" href="classConfigReader.html#a9">ConfigReader::DumpErrors</a>(<span class="keywordtype">bool</span> bail, <a class="code" href="classuserrec.html">userrec</a>* user) +00968 { +00969 <span class="keywordflow">if</span> (bail) +00970 { +00971 printf(<span class="stringliteral">"There were errors in your configuration:\n%s"</span>,<a class="code" href="classConfigReader.html#p1">errorlog</a>->str().c_str()); +00972 exit(0); +00973 } +00974 <span class="keywordflow">else</span> +00975 { +00976 <span class="keywordtype">char</span> dataline[1024]; +00977 <span class="keywordflow">if</span> (user) +00978 { +00979 WriteServ(user-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#o0">nick</a>); +00980 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>->eof()) +00981 { +00982 <a class="code" href="classConfigReader.html#p1">errorlog</a>->getline(dataline,1024); +00983 WriteServ(user-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">"NOTICE %s :%s"</span>,user-><a class="code" href="classuserrec.html#o0">nick</a>,dataline); +00984 } +00985 } +00986 <span class="keywordflow">else</span> +00987 { +00988 WriteOpers(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#o0">nick</a>); +00989 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>->eof()) +00990 { +00991 <a class="code" href="classConfigReader.html#p1">errorlog</a>->getline(dataline,1024); +00992 WriteOpers(dataline); +00993 } +00994 } +00995 <span class="keywordflow">return</span>; +00996 } +00997 } 00998 -<a name="l00999"></a><a class="code" href="classConfigReader.html#a7">00999</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">ConfigReader::Enumerate</a>(std::string tag) -01000 { -01001 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#p0">cache</a>,tag.c_str()); -01002 } -01003 -<a name="l01004"></a><a class="code" href="classConfigReader.html#a10">01004</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a10">ConfigReader::EnumerateValues</a>(std::string tag, <span class="keywordtype">int</span> index) -01005 { -01006 <span class="keywordflow">return</span> EnumValues(<a class="code" href="classConfigReader.html#p0">cache</a>, tag.c_str(), index); -01007 } -01008 -<a name="l01009"></a><a class="code" href="classConfigReader.html#a8">01009</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">ConfigReader::Verify</a>() -01010 { -01011 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#p2">readerror</a>; -01012 } -01013 +00999 +<a name="l01000"></a><a class="code" href="classConfigReader.html#a7">01000</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">ConfigReader::Enumerate</a>(std::string tag) +01001 { +01002 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#p0">cache</a>,tag.c_str()); +01003 } +01004 +<a name="l01005"></a><a class="code" href="classConfigReader.html#a10">01005</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a10">ConfigReader::EnumerateValues</a>(std::string tag, <span class="keywordtype">int</span> index) +01006 { +01007 <span class="keywordflow">return</span> EnumValues(<a class="code" href="classConfigReader.html#p0">cache</a>, tag.c_str(), index); +01008 } +01009 +<a name="l01010"></a><a class="code" href="classConfigReader.html#a8">01010</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">ConfigReader::Verify</a>() +01011 { +01012 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#p2">readerror</a>; +01013 } 01014 -<a name="l01015"></a><a class="code" href="classFileReader.html#a1">01015</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename) -01016 { -01017 <a class="code" href="modules_8h.html#a31">file_cache</a> c; -01018 readfile(c,filename.c_str()); -01019 this-><a class="code" href="classFileReader.html#r0">fc</a> = c; -01020 } -01021 -<a name="l01022"></a><a class="code" href="classFileReader.html#a0">01022</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>() -01023 { -01024 } -01025 -<a name="l01026"></a><a class="code" href="classFileReader.html#a3">01026</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename) -01027 { -01028 <a class="code" href="modules_8h.html#a31">file_cache</a> c; -01029 readfile(c,filename.c_str()); -01030 this-><a class="code" href="classFileReader.html#r0">fc</a> = c; -01031 } -01032 +01015 +<a name="l01016"></a><a class="code" href="classFileReader.html#a1">01016</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename) +01017 { +01018 <a class="code" href="modules_8h.html#a31">file_cache</a> c; +01019 readfile(c,filename.c_str()); +01020 this-><a class="code" href="classFileReader.html#r0">fc</a> = c; +01021 } +01022 +<a name="l01023"></a><a class="code" href="classFileReader.html#a0">01023</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>() +01024 { +01025 } +01026 +<a name="l01027"></a><a class="code" href="classFileReader.html#a3">01027</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename) +01028 { +01029 <a class="code" href="modules_8h.html#a31">file_cache</a> c; +01030 readfile(c,filename.c_str()); +01031 this-><a class="code" href="classFileReader.html#r0">fc</a> = c; +01032 } 01033 -<a name="l01034"></a><a class="code" href="classFileReader.html#a2">01034</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>() -01035 { -01036 } -01037 -<a name="l01038"></a><a class="code" href="classFileReader.html#a4">01038</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>() -01039 { -01040 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#r0">fc</a>.size() == 0) -01041 { -01042 <span class="keywordflow">return</span>(<span class="keyword">false</span>); -01043 } -01044 <span class="keywordflow">else</span> -01045 { -01046 <span class="keywordflow">return</span>(<span class="keyword">true</span>); -01047 } -01048 } -01049 -<a name="l01050"></a><a class="code" href="classFileReader.html#a5">01050</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x) -01051 { -01052 <span class="keywordflow">if</span> ((x<0) || (x><a class="code" href="classFileReader.html#r0">fc</a>.size())) -01053 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; -01054 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>[x]; -01055 } -01056 -<a name="l01057"></a><a class="code" href="classFileReader.html#a6">01057</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>() -01058 { -01059 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>.size(); -01060 } -01061 +01034 +<a name="l01035"></a><a class="code" href="classFileReader.html#a2">01035</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>() +01036 { +01037 } +01038 +<a name="l01039"></a><a class="code" href="classFileReader.html#a4">01039</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>() +01040 { +01041 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#r0">fc</a>.size() == 0) +01042 { +01043 <span class="keywordflow">return</span>(<span class="keyword">false</span>); +01044 } +01045 <span class="keywordflow">else</span> +01046 { +01047 <span class="keywordflow">return</span>(<span class="keyword">true</span>); +01048 } +01049 } +01050 +<a name="l01051"></a><a class="code" href="classFileReader.html#a5">01051</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x) +01052 { +01053 <span class="keywordflow">if</span> ((x<0) || (x><a class="code" href="classFileReader.html#r0">fc</a>.size())) +01054 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; +01055 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>[x]; +01056 } +01057 +<a name="l01058"></a><a class="code" href="classFileReader.html#a6">01058</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>() +01059 { +01060 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>.size(); +01061 } 01062 -01063 std::vector<Module*> <a class="code" href="modules_8cpp.html#a60">modules</a>(255); -01064 std::vector<ircd_module*> <a class="code" href="modules_8cpp.html#a61">factory</a>(255); -01065 -<a name="l01066"></a><a class="code" href="modules_8cpp.html#a1">01066</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a> = -1; -01067 +01063 +01064 std::vector<Module*> <a class="code" href="modules_8cpp.html#a61">modules</a>(255); +01065 std::vector<ircd_module*> <a class="code" href="modules_8cpp.html#a62">factory</a>(255); +01066 +<a name="l01067"></a><a class="code" href="modules_8cpp.html#a1">01067</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a> = -1; 01068 -</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu May 12 02:25:12 2005 for InspIRCd by +01069 +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Thu May 12 22:58:58 2005 for InspIRCd by <a href="http://www.doxygen.org/index.html"> <img src="doxygen.png" alt="doxygen" align="middle" border=0 > </a>1.3.3 </small></address> |