diff options
Diffstat (limited to 'docs/module-doc/modules_8cpp-source.html')
-rw-r--r-- | docs/module-doc/modules_8cpp-source.html | 1408 |
1 files changed, 728 insertions, 680 deletions
diff --git a/docs/module-doc/modules_8cpp-source.html b/docs/module-doc/modules_8cpp-source.html index 430e95164..fcf95d119 100644 --- a/docs/module-doc/modules_8cpp-source.html +++ b/docs/module-doc/modules_8cpp-source.html @@ -1,216 +1,215 @@ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <html><head><meta http-equiv="Content-Type" content="text/html;charset=iso-8859-1"> -<title>modules.cpp Source File</title> +<title>InspIRCd: modules.cpp Source File</title> <link href="inspircd.css" rel="stylesheet" type="text/css"> </head><body> -<!-- Generated by Doxygen 1.3-rc3 --> -<center> -<a class="qindex" href="main.html">Main Page</a> <a class="qindex" href="namespaces.html">Namespace List</a> <a class="qindex" href="hierarchy.html">Class Hierarchy</a> <a class="qindex" href="classes.html">Alphabetical List</a> <a class="qindex" href="annotated.html">Compound List</a> <a class="qindex" href="files.html">File List</a> <a class="qindex" href="functions.html">Compound Members</a> <a class="qindex" href="globals.html">File Members</a> </center> -<hr><h1>modules.cpp</h1><a href="modules_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="preprocessor">#include "inspircd.h"</span> -00002 <span class="preprocessor">#include "inspircd_io.h"</span> -00003 <span class="preprocessor">#include "inspircd_util.h"</span> -00004 <span class="preprocessor">#include "inspircd_config.h"</span> -00005 <span class="preprocessor">#include <unistd.h></span> -00006 <span class="preprocessor">#include <fcntl.h></span> -00007 <span class="preprocessor">#include <sys/errno.h></span> -00008 <span class="preprocessor">#include <sys/ioctl.h></span> -00009 <span class="preprocessor">#include <sys/utsname.h></span> -00010 <span class="preprocessor">#include <cstdio></span> -00011 <span class="preprocessor">#include <time.h></span> -00012 <span class="preprocessor">#include <string></span> -00013 <span class="preprocessor">#ifdef GCC3</span> -00014 <span class="preprocessor"></span><span class="preprocessor">#include <ext/hash_map></span> -00015 <span class="preprocessor">#else</span> -00016 <span class="preprocessor"></span><span class="preprocessor">#include <hash_map></span> -00017 <span class="preprocessor">#endif</span> -00018 <span class="preprocessor"></span><span class="preprocessor">#include <map></span> -00019 <span class="preprocessor">#include <sstream></span> -00020 <span class="preprocessor">#include <vector></span> -00021 <span class="preprocessor">#include <errno.h></span> -00022 <span class="preprocessor">#include <deque></span> -00023 <span class="preprocessor">#include <errno.h></span> -00024 <span class="preprocessor">#include <unistd.h></span> -00025 <span class="preprocessor">#include <sched.h></span> -00026 <span class="preprocessor">#include "<a class="code" href="connection_8h.html">connection.h</a>"</span> -00027 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span> -00028 <span class="preprocessor">#include "<a class="code" href="servers_8h.html">servers.h</a>"</span> -00029 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span> -00030 <span class="preprocessor">#include "globals.h"</span> -00031 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span> -00032 <span class="preprocessor">#include "dynamic.h"</span> -00033 <span class="preprocessor">#include "wildcard.h"</span> -00034 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span> -00035 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span> -00036 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span> -00037 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span> -00038 -00039 <span class="preprocessor">#ifdef GCC3</span> -00040 <span class="preprocessor"></span><span class="preprocessor">#define nspace __gnu_cxx</span> -00041 <span class="preprocessor"></span><span class="preprocessor">#else</span> -<a name="l00042"></a><a class="code" href="modules_8cpp.html#a0">00042</a> <span class="preprocessor"></span><span class="preprocessor">#define nspace std</span> -00043 <span class="preprocessor"></span><span class="preprocessor">#endif</span> -00044 <span class="preprocessor"></span> -00045 <span class="keyword">using</span> <span class="keyword">namespace </span>std; -00046 -00047 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>; -<a name="l00048"></a><a class="code" href="modules_8cpp.html#a2">00048</a> <span class="keyword">extern</span> vector<Module*> <a class="code" href="channels_8cpp.html#a2">modules</a>; -<a name="l00049"></a><a class="code" href="modules_8cpp.html#a3">00049</a> <span class="keyword">extern</span> vector<ircd_module*> <a class="code" href="channels_8cpp.html#a3">factory</a>; -00050 -<a name="l00051"></a><a class="code" href="modules_8cpp.html#a4">00051</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a4">LogLevel</a>; -<a name="l00052"></a><a class="code" href="modules_8cpp.html#a5">00052</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a5">ServerName</a>[MAXBUF]; -<a name="l00053"></a><a class="code" href="modules_8cpp.html#a6">00053</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a6">Network</a>[MAXBUF]; -<a name="l00054"></a><a class="code" href="modules_8cpp.html#a7">00054</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a7">ServerDesc</a>[MAXBUF]; -<a name="l00055"></a><a class="code" href="modules_8cpp.html#a8">00055</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a8">AdminName</a>[MAXBUF]; -<a name="l00056"></a><a class="code" href="modules_8cpp.html#a9">00056</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a9">AdminEmail</a>[MAXBUF]; -<a name="l00057"></a><a class="code" href="modules_8cpp.html#a10">00057</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a10">AdminNick</a>[MAXBUF]; -<a name="l00058"></a><a class="code" href="modules_8cpp.html#a11">00058</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a11">diepass</a>[MAXBUF]; -<a name="l00059"></a><a class="code" href="modules_8cpp.html#a12">00059</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a12">restartpass</a>[MAXBUF]; -<a name="l00060"></a><a class="code" href="modules_8cpp.html#a13">00060</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a13">motd</a>[MAXBUF]; -<a name="l00061"></a><a class="code" href="modules_8cpp.html#a14">00061</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a14">rules</a>[MAXBUF]; -<a name="l00062"></a><a class="code" href="modules_8cpp.html#a15">00062</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a15">list</a>[MAXBUF]; -<a name="l00063"></a><a class="code" href="modules_8cpp.html#a16">00063</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a16">PrefixQuit</a>[MAXBUF]; -<a name="l00064"></a><a class="code" href="modules_8cpp.html#a17">00064</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a17">DieValue</a>[MAXBUF]; -00065 -<a name="l00066"></a><a class="code" href="modules_8cpp.html#a18">00066</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a18">debugging</a>; -<a name="l00067"></a><a class="code" href="modules_8cpp.html#a19">00067</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a19">WHOWAS_STALE</a>; -<a name="l00068"></a><a class="code" href="modules_8cpp.html#a20">00068</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a20">WHOWAS_MAX</a>; -<a name="l00069"></a><a class="code" href="modules_8cpp.html#a21">00069</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a21">DieDelay</a>; -<a name="l00070"></a><a class="code" href="modules_8cpp.html#a22">00070</a> <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#a22">startup_time</a>; -<a name="l00071"></a><a class="code" href="modules_8cpp.html#a23">00071</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a23">NetBufferSize</a>; -<a name="l00072"></a><a class="code" href="modules_8cpp.html#a24">00072</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a24">MaxWhoResults</a>; -<a name="l00073"></a><a class="code" href="modules_8cpp.html#a25">00073</a> <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#a25">nb_start</a>; -00074 -<a name="l00075"></a><a class="code" href="modules_8cpp.html#a26">00075</a> <span class="keyword">extern</span> std::vector<int> <a class="code" href="channels_8cpp.html#a26">fd_reap</a>; -<a name="l00076"></a><a class="code" href="modules_8cpp.html#a27">00076</a> <span class="keyword">extern</span> std::vector<std::string> <a class="code" href="channels_8cpp.html#a27">module_names</a>; -00077 -<a name="l00078"></a><a class="code" href="modules_8cpp.html#a28">00078</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a28">bannerBuffer</a>[MAXBUF]; -<a name="l00079"></a><a class="code" href="modules_8cpp.html#a29">00079</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a29">boundPortCount</a>; -<a name="l00080"></a><a class="code" href="modules_8cpp.html#a30">00080</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a30">portCount</a>; -<a name="l00081"></a><a class="code" href="modules_8cpp.html#a31">00081</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a31">UDPportCount</a>; -<a name="l00082"></a><a class="code" href="modules_8cpp.html#a32">00082</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a32">ports</a>[MAXSOCKS]; -<a name="l00083"></a><a class="code" href="modules_8cpp.html#a33">00083</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a33">defaultRoute</a>; -00084 -<a name="l00085"></a><a class="code" href="modules_8cpp.html#a34">00085</a> <span class="keyword">extern</span> std::vector<long> <a class="code" href="channels_8cpp.html#a34">auth_cookies</a>; -<a name="l00086"></a><a class="code" href="modules_8cpp.html#a35">00086</a> <span class="keyword">extern</span> std::stringstream <a class="code" href="channels_8cpp.html#a35">config_f</a>; -00087 -<a name="l00088"></a><a class="code" href="modules_8cpp.html#a36">00088</a> <span class="keyword">extern</span> <a class="code" href="classserverrec.html">serverrec</a>* <a class="code" href="channels_8cpp.html#a36">me</a>[32]; -00089 -<a name="l00090"></a><a class="code" href="modules_8cpp.html#a37">00090</a> <span class="keyword">extern</span> FILE *<a class="code" href="channels_8cpp.html#a37">log_file</a>; -00091 -00092 -<a name="l00093"></a><a class="code" href="namespacenspace.html">00093</a> <span class="keyword">namespace </span><a class="code" href="channels_8cpp.html#a0">nspace</a> -00094 { -<a name="l00095"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01in__addr_01_4.html">00095</a> <span class="keyword">template</span><> <span class="keyword">struct </span><a class="code" href="channels_8cpp.html#a0">nspace</a>::hash<in_addr> -00096 { -<a name="l00097"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01in__addr_01_4.html#a0">00097</a> size_t operator()(<span class="keyword">const</span> <span class="keyword">struct</span> in_addr &a)<span class="keyword"> const</span> -00098 <span class="keyword"> </span>{ -00099 size_t q; -00100 memcpy(&q,&a,<span class="keyword">sizeof</span>(size_t)); -00101 <span class="keywordflow">return</span> q; -00102 } -00103 }; +<!-- Generated by Doxygen 1.3.3 --> +<div class="qindex"><a class="qindex" href="main.html">Main Page</a> | <a class="qindex" href="namespaces.html">Namespace List</a> | <a class="qindex" href="hierarchy.html">Class Hierarchy</a> | <a class="qindex" href="classes.html">Alphabetical List</a> | <a class="qindex" href="annotated.html">Compound List</a> | <a class="qindex" href="files.html">File List</a> | <a class="qindex" href="functions.html">Compound Members</a> | <a class="qindex" href="globals.html">File Members</a></div> +<h1>modules.cpp</h1><a href="modules_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><pre>00001 <span class="comment">/* +------------------------------------+</span> +00002 <span class="comment"> * | Inspire Internet Relay Chat Daemon |</span> +00003 <span class="comment"> * +------------------------------------+</span> +00004 <span class="comment"> *</span> +00005 <span class="comment"> * Inspire is copyright (C) 2002-2004 ChatSpike-Dev.</span> +00006 <span class="comment"> * E-mail:</span> +00007 <span class="comment"> * <brain@chatspike.net></span> +00008 <span class="comment"> * <Craig@chatspike.net></span> +00009 <span class="comment"> * </span> +00010 <span class="comment"> * Written by Craig Edwards, Craig McLure, and others.</span> +00011 <span class="comment"> * This program is free but copyrighted software; see</span> +00012 <span class="comment"> * the file COPYING for details.</span> +00013 <span class="comment"> *</span> +00014 <span class="comment"> * ---------------------------------------------------</span> +00015 <span class="comment"> */</span> +00016 +00017 <span class="preprocessor">#include "inspircd.h"</span> +00018 <span class="preprocessor">#include "inspircd_io.h"</span> +00019 <span class="preprocessor">#include "inspircd_util.h"</span> +00020 <span class="preprocessor">#include "inspircd_config.h"</span> +00021 <span class="preprocessor">#include <unistd.h></span> +00022 <span class="preprocessor">#include <fcntl.h></span> +00023 <span class="preprocessor">#include <sys/errno.h></span> +00024 <span class="preprocessor">#include <sys/ioctl.h></span> +00025 <span class="preprocessor">#include <sys/utsname.h></span> +00026 <span class="preprocessor">#include <cstdio></span> +00027 <span class="preprocessor">#include <time.h></span> +00028 <span class="preprocessor">#include <string></span> +00029 <span class="preprocessor">#ifdef GCC3</span> +00030 <span class="preprocessor"></span><span class="preprocessor">#include <ext/hash_map></span> +00031 <span class="preprocessor">#else</span> +00032 <span class="preprocessor"></span><span class="preprocessor">#include <hash_map></span> +00033 <span class="preprocessor">#endif</span> +00034 <span class="preprocessor"></span><span class="preprocessor">#include <map></span> +00035 <span class="preprocessor">#include <sstream></span> +00036 <span class="preprocessor">#include <vector></span> +00037 <span class="preprocessor">#include <errno.h></span> +00038 <span class="preprocessor">#include <deque></span> +00039 <span class="preprocessor">#include <errno.h></span> +00040 <span class="preprocessor">#include <unistd.h></span> +00041 <span class="preprocessor">#include <sched.h></span> +00042 <span class="preprocessor">#include "<a class="code" href="connection_8h.html">connection.h</a>"</span> +00043 <span class="preprocessor">#include "<a class="code" href="users_8h.html">users.h</a>"</span> +00044 <span class="preprocessor">#include "<a class="code" href="servers_8h.html">servers.h</a>"</span> +00045 <span class="preprocessor">#include "<a class="code" href="ctables_8h.html">ctables.h</a>"</span> +00046 <span class="preprocessor">#include "globals.h"</span> +00047 <span class="preprocessor">#include "<a class="code" href="modules_8h.html">modules.h</a>"</span> +00048 <span class="preprocessor">#include "dynamic.h"</span> +00049 <span class="preprocessor">#include "wildcard.h"</span> +00050 <span class="preprocessor">#include "<a class="code" href="message_8h.html">message.h</a>"</span> +00051 <span class="preprocessor">#include "<a class="code" href="mode_8h.html">mode.h</a>"</span> +00052 <span class="preprocessor">#include "<a class="code" href="xline_8h.html">xline.h</a>"</span> +00053 <span class="preprocessor">#include "<a class="code" href="commands_8h.html">commands.h</a>"</span> +00054 +00055 <span class="preprocessor">#ifdef GCC3</span> +00056 <span class="preprocessor"></span><span class="preprocessor">#define nspace __gnu_cxx</span> +00057 <span class="preprocessor"></span><span class="preprocessor">#else</span> +<a name="l00058"></a><a class="code" href="modules_8cpp.html#a0">00058</a> <span class="preprocessor"></span><span class="preprocessor">#define nspace std</span> +00059 <span class="preprocessor"></span><span class="preprocessor">#endif</span> +00060 <span class="preprocessor"></span> +00061 <span class="keyword">using</span> <span class="keyword">namespace </span>std; +00062 +00063 <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a>; +<a name="l00064"></a><a class="code" href="modules_8cpp.html#a2">00064</a> <span class="keyword">extern</span> vector<Module*> <a class="code" href="channels_8cpp.html#a2">modules</a>; +<a name="l00065"></a><a class="code" href="modules_8cpp.html#a3">00065</a> <span class="keyword">extern</span> vector<ircd_module*> <a class="code" href="channels_8cpp.html#a3">factory</a>; +00066 +<a name="l00067"></a><a class="code" href="modules_8cpp.html#a4">00067</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a4">LogLevel</a>; +<a name="l00068"></a><a class="code" href="modules_8cpp.html#a5">00068</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a5">ServerName</a>[MAXBUF]; +<a name="l00069"></a><a class="code" href="modules_8cpp.html#a6">00069</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a6">Network</a>[MAXBUF]; +<a name="l00070"></a><a class="code" href="modules_8cpp.html#a7">00070</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a7">ServerDesc</a>[MAXBUF]; +<a name="l00071"></a><a class="code" href="modules_8cpp.html#a8">00071</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a8">AdminName</a>[MAXBUF]; +<a name="l00072"></a><a class="code" href="modules_8cpp.html#a9">00072</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a9">AdminEmail</a>[MAXBUF]; +<a name="l00073"></a><a class="code" href="modules_8cpp.html#a10">00073</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a10">AdminNick</a>[MAXBUF]; +<a name="l00074"></a><a class="code" href="modules_8cpp.html#a11">00074</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a11">diepass</a>[MAXBUF]; +<a name="l00075"></a><a class="code" href="modules_8cpp.html#a12">00075</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a12">restartpass</a>[MAXBUF]; +<a name="l00076"></a><a class="code" href="modules_8cpp.html#a13">00076</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a13">motd</a>[MAXBUF]; +<a name="l00077"></a><a class="code" href="modules_8cpp.html#a14">00077</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a14">rules</a>[MAXBUF]; +<a name="l00078"></a><a class="code" href="modules_8cpp.html#a15">00078</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a15">list</a>[MAXBUF]; +<a name="l00079"></a><a class="code" href="modules_8cpp.html#a16">00079</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a16">PrefixQuit</a>[MAXBUF]; +<a name="l00080"></a><a class="code" href="modules_8cpp.html#a17">00080</a> <span class="keyword">extern</span> <span class="keywordtype">char</span> <a class="code" href="channels_8cpp.html#a17">DieValue</a>[MAXBUF]; +00081 +<a name="l00082"></a><a class="code" href="modules_8cpp.html#a18">00082</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a18">debugging</a>; +<a name="l00083"></a><a class="code" href="modules_8cpp.html#a19">00083</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a19">WHOWAS_STALE</a>; +<a name="l00084"></a><a class="code" href="modules_8cpp.html#a20">00084</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a20">WHOWAS_MAX</a>; +<a name="l00085"></a><a class="code" href="modules_8cpp.html#a21">00085</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a21">DieDelay</a>; +<a name="l00086"></a><a class="code" href="modules_8cpp.html#a22">00086</a> <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#a22">startup_time</a>; +<a name="l00087"></a><a class="code" href="modules_8cpp.html#a23">00087</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a23">NetBufferSize</a>; +<a name="l00088"></a><a class="code" href="modules_8cpp.html#a24">00088</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a24">MaxWhoResults</a>; +<a name="l00089"></a><a class="code" href="modules_8cpp.html#a25">00089</a> <span class="keyword">extern</span> time_t <a class="code" href="channels_8cpp.html#a25">nb_start</a>; +00090 +<a name="l00091"></a><a class="code" href="modules_8cpp.html#a26">00091</a> <span class="keyword">extern</span> std::vector<int> <a class="code" href="channels_8cpp.html#a26">fd_reap</a>; +<a name="l00092"></a><a class="code" href="modules_8cpp.html#a27">00092</a> <span class="keyword">extern</span> std::vector<std::string> <a class="code" href="channels_8cpp.html#a27">module_names</a>; +00093 +<a name="l00094"></a><a class="code" href="modules_8cpp.html#a28">00094</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a28">boundPortCount</a>; +<a name="l00095"></a><a class="code" href="modules_8cpp.html#a29">00095</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a29">portCount</a>; +<a name="l00096"></a><a class="code" href="modules_8cpp.html#a30">00096</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a30">UDPportCount</a>; +<a name="l00097"></a><a class="code" href="modules_8cpp.html#a31">00097</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a31">ports</a>[MAXSOCKS]; +<a name="l00098"></a><a class="code" href="modules_8cpp.html#a32">00098</a> <span class="keyword">extern</span> <span class="keywordtype">int</span> <a class="code" href="channels_8cpp.html#a32">defaultRoute</a>; +00099 +<a name="l00100"></a><a class="code" href="modules_8cpp.html#a33">00100</a> <span class="keyword">extern</span> std::vector<long> <a class="code" href="channels_8cpp.html#a33">auth_cookies</a>; +<a name="l00101"></a><a class="code" href="modules_8cpp.html#a34">00101</a> <span class="keyword">extern</span> std::stringstream <a class="code" href="channels_8cpp.html#a34">config_f</a>; +00102 +<a name="l00103"></a><a class="code" href="modules_8cpp.html#a35">00103</a> <span class="keyword">extern</span> <a class="code" href="classserverrec.html">serverrec</a>* <a class="code" href="channels_8cpp.html#a35">me</a>[32]; 00104 -<a name="l00105"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01string_01_4.html">00105</a> <span class="keyword">template</span><> <span class="keyword">struct </span><a class="code" href="channels_8cpp.html#a0">nspace</a>::hash<string> -00106 { -<a name="l00107"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01string_01_4.html#a0">00107</a> size_t operator()(<span class="keyword">const</span> string &s)<span class="keyword"> const</span> -00108 <span class="keyword"> </span>{ -00109 <span class="keywordtype">char</span> a[MAXBUF]; -00110 <span class="keyword">static</span> <span class="keyword">struct </span>hash<const char *> strhash; -00111 strcpy(a,s.c_str()); -00112 strlower(a); -00113 <span class="keywordflow">return</span> strhash(a); -00114 } -00115 }; -00116 } -00117 -00118 -<a name="l00119"></a><a class="code" href="structStrHashComp.html">00119</a> <span class="keyword">struct </span><a class="code" href="structStrHashComp.html">StrHashComp</a> -00120 { -00121 -<a name="l00122"></a><a class="code" href="structStrHashComp.html#a0">00122</a> <span class="keywordtype">bool</span> <a class="code" href="structStrHashComp.html#a0">operator()</a>(<span class="keyword">const</span> string& s1, <span class="keyword">const</span> string& s2)<span class="keyword"> const</span> -00123 <span class="keyword"> </span>{ -00124 <span class="keywordtype">char</span> a[MAXBUF],b[MAXBUF]; -00125 strcpy(a,s1.c_str()); -00126 strcpy(b,s2.c_str()); -00127 <span class="keywordflow">return</span> (strcasecmp(a,b) == 0); -00128 } -00129 -00130 }; -00131 -<a name="l00132"></a><a class="code" href="structInAddr__HashComp.html">00132</a> <span class="keyword">struct </span><a class="code" href="structInAddr__HashComp.html">InAddr_HashComp</a> -00133 { -00134 -<a name="l00135"></a><a class="code" href="structInAddr__HashComp.html#a0">00135</a> <span class="keywordtype">bool</span> <a class="code" href="structInAddr__HashComp.html#a0">operator()</a>(<span class="keyword">const</span> in_addr &s1, <span class="keyword">const</span> in_addr &s2)<span class="keyword"> const</span> -00136 <span class="keyword"> </span>{ -00137 size_t q; -00138 size_t p; -00139 -00140 memcpy(&q,&s1,<span class="keyword">sizeof</span>(size_t)); -00141 memcpy(&p,&s2,<span class="keyword">sizeof</span>(size_t)); -00142 -00143 <span class="keywordflow">return</span> (q == p); -00144 } -00145 -00146 }; -00147 -00148 -<a name="l00149"></a><a class="code" href="modules_8cpp.html#a38">00149</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#a38">user_hash</a>; -<a name="l00150"></a><a class="code" href="modules_8cpp.html#a39">00150</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#a39">chan_hash</a>; -<a name="l00151"></a><a class="code" href="modules_8cpp.html#a40">00151</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#a40">address_cache</a>; -<a name="l00152"></a><a class="code" href="modules_8cpp.html#a41">00152</a> <span class="keyword">typedef</span> std::deque<command_t> <a class="code" href="modules_8cpp.html#a41">command_table</a>; -00153 -00154 -<a name="l00155"></a><a class="code" href="modules_8cpp.html#a42">00155</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a38">user_hash</a> <a class="code" href="modules_8cpp.html#a42">clientlist</a>; -<a name="l00156"></a><a class="code" href="modules_8cpp.html#a43">00156</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a39">chan_hash</a> <a class="code" href="modules_8cpp.html#a43">chanlist</a>; -<a name="l00157"></a><a class="code" href="modules_8cpp.html#a44">00157</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a38">user_hash</a> <a class="code" href="modules_8cpp.html#a44">whowas</a>; -<a name="l00158"></a><a class="code" href="modules_8cpp.html#a45">00158</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a41">command_table</a> <a class="code" href="modules_8cpp.html#a45">cmdlist</a>; -<a name="l00159"></a><a class="code" href="modules_8cpp.html#a46">00159</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a26">file_cache</a> <a class="code" href="modules_8cpp.html#a46">MOTD</a>; -<a name="l00160"></a><a class="code" href="modules_8cpp.html#a47">00160</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a26">file_cache</a> <a class="code" href="modules_8cpp.html#a47">RULES</a>; -<a name="l00161"></a><a class="code" href="modules_8cpp.html#a48">00161</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a40">address_cache</a> <a class="code" href="modules_8cpp.html#a48">IP</a>; +<a name="l00105"></a><a class="code" href="modules_8cpp.html#a36">00105</a> <span class="keyword">extern</span> FILE *<a class="code" href="channels_8cpp.html#a36">log_file</a>; +00106 +00107 +<a name="l00108"></a><a class="code" href="namespacenspace.html">00108</a> <span class="keyword">namespace </span><a class="code" href="channels_8cpp.html#a0">nspace</a> +00109 { +<a name="l00110"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01in__addr_01_4.html">00110</a> <span class="keyword">template</span><> <span class="keyword">struct </span>nspace::hash<in_addr> +00111 { +<a name="l00112"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01in__addr_01_4.html#a0">00112</a> size_t operator()(<span class="keyword">const</span> <span class="keyword">struct</span> in_addr &a)<span class="keyword"> const</span> +00113 <span class="keyword"> </span>{ +00114 size_t q; +00115 memcpy(&q,&a,<span class="keyword">sizeof</span>(size_t)); +00116 <span class="keywordflow">return</span> q; +00117 } +00118 }; +00119 +<a name="l00120"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01string_01_4.html">00120</a> <span class="keyword">template</span><> <span class="keyword">struct </span>nspace::hash<string> +00121 { +<a name="l00122"></a><a class="code" href="structnspace_1_1nspace_1_1hash_3_01string_01_4.html#a0">00122</a> size_t operator()(<span class="keyword">const</span> string &s)<span class="keyword"> const</span> +00123 <span class="keyword"> </span>{ +00124 <span class="keywordtype">char</span> a[MAXBUF]; +00125 <span class="keyword">static</span> <span class="keyword">struct </span>hash<const char *> strhash; +00126 strlcpy(a,s.c_str(),MAXBUF); +00127 strlower(a); +00128 <span class="keywordflow">return</span> strhash(a); +00129 } +00130 }; +00131 } +00132 +00133 +<a name="l00134"></a><a class="code" href="structStrHashComp.html">00134</a> <span class="keyword">struct </span><a class="code" href="structStrHashComp.html">StrHashComp</a> +00135 { +00136 +<a name="l00137"></a><a class="code" href="structStrHashComp.html#a0">00137</a> <span class="keywordtype">bool</span> operator()(<span class="keyword">const</span> string& s1, <span class="keyword">const</span> string& s2)<span class="keyword"> const</span> +00138 <span class="keyword"> </span>{ +00139 <span class="keywordtype">char</span> a[MAXBUF],b[MAXBUF]; +00140 strlcpy(a,s1.c_str(),MAXBUF); +00141 strlcpy(b,s2.c_str(),MAXBUF); +00142 <span class="keywordflow">return</span> (strcasecmp(a,b) == 0); +00143 } +00144 +00145 }; +00146 +<a name="l00147"></a><a class="code" href="structInAddr__HashComp.html">00147</a> <span class="keyword">struct </span><a class="code" href="structInAddr__HashComp.html">InAddr_HashComp</a> +00148 { +00149 +<a name="l00150"></a><a class="code" href="structInAddr__HashComp.html#a0">00150</a> <span class="keywordtype">bool</span> operator()(<span class="keyword">const</span> in_addr &s1, <span class="keyword">const</span> in_addr &s2)<span class="keyword"> const</span> +00151 <span class="keyword"> </span>{ +00152 size_t q; +00153 size_t p; +00154 +00155 memcpy(&q,&s1,<span class="keyword">sizeof</span>(size_t)); +00156 memcpy(&p,&s2,<span class="keyword">sizeof</span>(size_t)); +00157 +00158 <span class="keywordflow">return</span> (q == p); +00159 } +00160 +00161 }; 00162 00163 -00164 <span class="comment">// class type for holding an extended mode character - internal to core</span> -00165 -<a name="l00166"></a><a class="code" href="classExtMode.html">00166</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> -00167 { -00168 <span class="keyword">public</span>: -<a name="l00169"></a><a class="code" href="classExtMode.html#m0">00169</a> <span class="keywordtype">char</span> <a class="code" href="classExtMode.html#m0">modechar</a>; -<a name="l00170"></a><a class="code" href="classExtMode.html#m1">00170</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#m1">type</a>; -<a name="l00171"></a><a class="code" href="classExtMode.html#m2">00171</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#m2">params_when_on</a>; -<a name="l00172"></a><a class="code" href="classExtMode.html#m3">00172</a> <span class="keywordtype">int</span> <a class="code" href="classExtMode.html#m3">params_when_off</a>; -<a name="l00173"></a><a class="code" href="classExtMode.html#m4">00173</a> <span class="keywordtype">bool</span> <a class="code" href="classExtMode.html#m4">needsoper</a>; -<a name="l00174"></a><a class="code" href="classExtMode.html#m5">00174</a> <span class="keywordtype">bool</span> <a class="code" href="channels_8cpp.html#a15">list</a>; -<a name="l00175"></a><a class="code" href="classExtMode.html#a0">00175</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) : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { }; -00176 }; +<a name="l00164"></a><a class="code" href="modules_8cpp.html#a37">00164</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#a37">user_hash</a>; +<a name="l00165"></a><a class="code" href="modules_8cpp.html#a38">00165</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#a38">chan_hash</a>; +<a name="l00166"></a><a class="code" href="modules_8cpp.html#a39">00166</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#a39">address_cache</a>; +<a name="l00167"></a><a class="code" href="modules_8cpp.html#a40">00167</a> <span class="keyword">typedef</span> std::deque<command_t> <a class="code" href="modules_8cpp.html#a40">command_table</a>; +00168 +00169 +<a name="l00170"></a><a class="code" href="modules_8cpp.html#a41">00170</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a37">user_hash</a> <a class="code" href="modules_8cpp.html#a41">clientlist</a>; +<a name="l00171"></a><a class="code" href="modules_8cpp.html#a42">00171</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a38">chan_hash</a> <a class="code" href="modules_8cpp.html#a42">chanlist</a>; +<a name="l00172"></a><a class="code" href="modules_8cpp.html#a43">00172</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a37">user_hash</a> <a class="code" href="modules_8cpp.html#a43">whowas</a>; +<a name="l00173"></a><a class="code" href="modules_8cpp.html#a44">00173</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a40">command_table</a> <a class="code" href="modules_8cpp.html#a44">cmdlist</a>; +<a name="l00174"></a><a class="code" href="modules_8cpp.html#a45">00174</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a26">file_cache</a> <a class="code" href="modules_8cpp.html#a45">MOTD</a>; +<a name="l00175"></a><a class="code" href="modules_8cpp.html#a46">00175</a> <span class="keyword">extern</span> <a class="code" href="modules_8h.html#a26">file_cache</a> <a class="code" href="modules_8cpp.html#a46">RULES</a>; +<a name="l00176"></a><a class="code" href="modules_8cpp.html#a47">00176</a> <span class="keyword">extern</span> <a class="code" href="modules_8cpp.html#a39">address_cache</a> <a class="code" href="modules_8cpp.html#a47">IP</a>; 00177 -<a name="l00178"></a><a class="code" href="modules_8cpp.html#a49">00178</a> <span class="keyword">typedef</span> std::vector<ExtMode> <a class="code" href="modules_8cpp.html#a49">ExtModeList</a>; -<a name="l00179"></a><a class="code" href="modules_8cpp.html#a50">00179</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#a50">ExtModeListIter</a>; +00178 +00179 <span class="comment">// class type for holding an extended mode character - internal to core</span> 00180 -00181 -<a name="l00182"></a><a class="code" href="modules_8cpp.html#a51">00182</a> <a class="code" href="modules_8cpp.html#a49">ExtModeList</a> <a class="code" href="modules_8cpp.html#a51">EMode</a>; -00183 -00184 <span class="comment">// returns true if an extended mode character is in use</span> -<a name="l00185"></a><a class="code" href="modules_8cpp.html#a52">00185</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a52">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) -00186 { -00187 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a51">EMode</a>.size()); -00188 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a50">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a51">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a51">EMode</a>.end(); i++) -00189 { -00190 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type); -00191 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) -00192 { -00193 <span class="keywordflow">return</span> <span class="keyword">true</span>; -00194 } -00195 } -00196 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00197 } +<a name="l00181"></a><a class="code" href="classExtMode.html">00181</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> +00182 { +00183 <span class="keyword">public</span>: +<a name="l00184"></a><a class="code" href="classExtMode.html#o0">00184</a> <span class="keywordtype">char</span> modechar; +<a name="l00185"></a><a class="code" href="classExtMode.html#o1">00185</a> <span class="keywordtype">int</span> type; +<a name="l00186"></a><a class="code" href="classExtMode.html#o2">00186</a> <span class="keywordtype">int</span> params_when_on; +<a name="l00187"></a><a class="code" href="classExtMode.html#o3">00187</a> <span class="keywordtype">int</span> params_when_off; +<a name="l00188"></a><a class="code" href="classExtMode.html#o4">00188</a> <span class="keywordtype">bool</span> needsoper; +<a name="l00189"></a><a class="code" href="classExtMode.html#o5">00189</a> <span class="keywordtype">bool</span> <a class="code" href="channels_8cpp.html#a15">list</a>; +<a name="l00190"></a><a class="code" href="classExtMode.html#a0">00190</a> <a class="code" href="classExtMode.html">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) : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { }; +00191 }; +00192 +<a name="l00193"></a><a class="code" href="modules_8cpp.html#a48">00193</a> <span class="keyword">typedef</span> std::vector<ExtMode> <a class="code" href="modules_8cpp.html#a48">ExtModeList</a>; +<a name="l00194"></a><a class="code" href="modules_8cpp.html#a49">00194</a> <span class="keyword">typedef</span> ExtModeList::iterator <a class="code" href="modules_8cpp.html#a49">ExtModeListIter</a>; +00195 +00196 +<a name="l00197"></a><a class="code" href="modules_8cpp.html#a50">00197</a> <a class="code" href="modules_8cpp.html#a48">ExtModeList</a> <a class="code" href="modules_8cpp.html#a50">EMode</a>; 00198 -<a name="l00199"></a><a class="code" href="modules_8cpp.html#a53">00199</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a53">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) -00200 { -00201 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a51">EMode</a>.size()); -00202 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a50">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a51">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a51">EMode</a>.end(); i++) -00203 { -00204 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type); -00205 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->list == <span class="keyword">true</span>)) +00199 <span class="comment">// returns true if an extended mode character is in use</span> +<a name="l00200"></a><a class="code" href="modules_8cpp.html#a51">00200</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a51">ModeDefined</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) +00201 { +00202 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a50">EMode</a>.size()); +00203 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a49">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a50">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a50">EMode</a>.end(); i++) +00204 { +00205 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) 00206 { 00207 <span class="keywordflow">return</span> <span class="keyword">true</span>; 00208 } @@ -218,513 +217,562 @@ 00210 <span class="keywordflow">return</span> <span class="keyword">false</span>; 00211 } 00212 -<a name="l00213"></a><a class="code" href="modules_8cpp.html#a54">00213</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a54">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) +<a name="l00213"></a><a class="code" href="modules_8cpp.html#a52">00213</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a52">ModeIsListMode</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) 00214 { -00215 log(DEBUG,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a51">EMode</a>.size()); -00216 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a50">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a51">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a51">EMode</a>.end(); i++) +00215 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a50">EMode</a>.size()); +00216 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a49">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a50">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a50">EMode</a>.end(); i++) 00217 { -00218 log(DEBUG,<span class="stringliteral">"i->modechar==%c, modechar=%c, i->type=%d, type=%d"</span>,i->modechar,modechar,i->type,type); -00219 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>)) -00220 { -00221 <span class="keywordflow">return</span> <span class="keyword">true</span>; -00222 } -00223 } -00224 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00225 } -00226 -00227 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span> -<a name="l00228"></a><a class="code" href="modules_8cpp.html#a55">00228</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a55">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) -00229 { -00230 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a50">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a51">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a51">EMode</a>.end(); i++) -00231 { -00232 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) -00233 { -00234 <span class="keywordflow">return</span> i->params_when_on; -00235 } -00236 } -00237 <span class="keywordflow">return</span> 0; -00238 } -00239 -00240 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span> -<a name="l00241"></a><a class="code" href="modules_8cpp.html#a56">00241</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a56">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) -00242 { -00243 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a50">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a51">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a51">EMode</a>.end(); i++) -00244 { -00245 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) -00246 { -00247 <span class="keywordflow">return</span> i->params_when_off; -00248 } -00249 } -00250 <span class="keywordflow">return</span> 0; -00251 } -00252 -00253 <span class="comment">// returns true if an extended mode character is in use</span> -<a name="l00254"></a><a class="code" href="modules_8cpp.html#a57">00254</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a57">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) -00255 { -00256 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a52">ModeDefined</a>(modechar,type)) { -00257 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00258 } -00259 <a class="code" href="modules_8cpp.html#a51">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off)); -00260 <span class="keywordflow">return</span> <span class="keyword">true</span>; -00261 } -00262 -00263 <span class="comment">// turns a mode into a listmode</span> -<a name="l00264"></a><a class="code" href="modules_8cpp.html#a58">00264</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#a58">ModeMakeList</a>(<span class="keywordtype">char</span> modechar) -00265 { -00266 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a50">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a51">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a51">EMode</a>.end(); i++) -00267 { -00268 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>)) -00269 { -00270 i->list = <span class="keyword">true</span>; -00271 <span class="keywordflow">return</span>; -00272 } -00273 } -00274 <span class="keywordflow">return</span>; -00275 } -00276 -00277 <span class="comment">// version is a simple class for holding a modules version number</span> -00278 -<a name="l00279"></a><a class="code" href="classVersion.html#a0">00279</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) : Major(major), Minor(minor), Revision(revision), Build(build) { }; -00280 -00281 <span class="comment">// admin is a simple class for holding a server's administrative info</span> -00282 -<a name="l00283"></a><a class="code" href="classAdmin.html#a0">00283</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) { }; -00284 -<a name="l00285"></a><a class="code" href="classModule.html#a0">00285</a> <a class="code" href="classModule.html#a0">Module::Module</a>() { } -<a name="l00286"></a><a class="code" href="classModule.html#a1">00286</a> <a class="code" href="classModule.html#a1">Module::~Module</a>() { } -<a name="l00287"></a><a class="code" href="classModule.html#a3">00287</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="l00288"></a><a class="code" href="classModule.html#a4">00288</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="l00289"></a><a class="code" href="classModule.html#a5">00289</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { } -<a name="l00290"></a><a class="code" href="classModule.html#a6">00290</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { } -<a name="l00291"></a><a class="code" href="classModule.html#a7">00291</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">Module::OnPacketTransmit</a>(<span class="keywordtype">char</span> *p) { } -<a name="l00292"></a><a class="code" href="classModule.html#a8">00292</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">Module::OnPacketReceive</a>(<span class="keywordtype">char</span> *p) { } -<a name="l00293"></a><a class="code" href="classModule.html#a9">00293</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">Module::OnRehash</a>() { } -<a name="l00294"></a><a class="code" href="classModule.html#a10">00294</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">Module::OnServerRaw</a>(std::string &raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { } -<a name="l00295"></a><a class="code" href="classModule.html#a12">00295</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">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="l00296"></a><a class="code" href="classModule.html#a11">00296</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a11">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="l00297"></a><a class="code" href="classModule.html#a2">00297</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 name="l00298"></a><a class="code" href="classModule.html#a13">00298</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a13">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; -<a name="l00299"></a><a class="code" href="classModule.html#a14">00299</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a14">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; -<a name="l00300"></a><a class="code" href="classModule.html#a15">00300</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { }; -<a name="l00301"></a><a class="code" href="classModule.html#a16">00301</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a16">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="l00302"></a><a class="code" href="classModule.html#a17">00302</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a17">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="l00303"></a><a class="code" href="classModule.html#a18">00303</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a18">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick) { <span class="keywordflow">return</span> 0; }; -<a name="l00304"></a><a class="code" href="classModule.html#a19">00304</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a19">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="l00305"></a><a class="code" href="classModule.html#a20">00305</a> <a class="code" href="modules_8h.html#a27">string_list</a> <a class="code" href="classModule.html#a20">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#a27">string_list</a> empty; <span class="keywordflow">return</span> empty; } -<a name="l00306"></a><a class="code" href="classModule.html#a21">00306</a> <a class="code" href="modules_8h.html#a27">string_list</a> <a class="code" href="classModule.html#a21">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#a27">string_list</a> empty; <span class="keywordflow">return</span> empty; } -00307 -00308 -00309 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span> -00310 <span class="comment">// exports in the core</span> -00311 <span class="comment">//</span> -00312 -<a name="l00313"></a><a class="code" href="classServer.html#a0">00313</a> <a class="code" href="classServer.html#a0">Server::Server</a>() -00314 { -00315 } -00316 -<a name="l00317"></a><a class="code" href="classServer.html#a1">00317</a> <a class="code" href="classServer.html#a1">Server::~Server</a>() -00318 { -00319 } +00218 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->list == <span class="keyword">true</span>)) +00219 { +00220 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00221 } +00222 } +00223 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00224 } +00225 +<a name="l00226"></a><a class="code" href="modules_8cpp.html#a53">00226</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a53">ModeDefinedOper</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) +00227 { +00228 log(<a class="code" href="modules_8h.html#a0">DEBUG</a>,<span class="stringliteral">"Size of extmodes vector is %d"</span>,<a class="code" href="modules_8cpp.html#a50">EMode</a>.size()); +00229 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a49">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a50">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a50">EMode</a>.end(); i++) +00230 { +00231 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type) && (i->needsoper == <span class="keyword">true</span>)) +00232 { +00233 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00234 } +00235 } +00236 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00237 } +00238 +00239 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span> +<a name="l00240"></a><a class="code" href="modules_8cpp.html#a54">00240</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a54">ModeDefinedOn</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) +00241 { +00242 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a49">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a50">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a50">EMode</a>.end(); i++) +00243 { +00244 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) +00245 { +00246 <span class="keywordflow">return</span> i->params_when_on; +00247 } +00248 } +00249 <span class="keywordflow">return</span> 0; +00250 } +00251 +00252 <span class="comment">// returns number of parameters for a custom mode when it is switched on</span> +<a name="l00253"></a><a class="code" href="modules_8cpp.html#a55">00253</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a55">ModeDefinedOff</a>(<span class="keywordtype">char</span> modechar, <span class="keywordtype">int</span> type) +00254 { +00255 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a49">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a50">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a50">EMode</a>.end(); i++) +00256 { +00257 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == type)) +00258 { +00259 <span class="keywordflow">return</span> i->params_when_off; +00260 } +00261 } +00262 <span class="keywordflow">return</span> 0; +00263 } +00264 +00265 <span class="comment">// returns true if an extended mode character is in use</span> +<a name="l00266"></a><a class="code" href="modules_8cpp.html#a56">00266</a> <span class="keywordtype">bool</span> <a class="code" href="modules_8cpp.html#a56">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) +00267 { +00268 <span class="keywordflow">if</span> (<a class="code" href="modules_8cpp.html#a51">ModeDefined</a>(modechar,type)) { +00269 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00270 } +00271 <a class="code" href="modules_8cpp.html#a50">EMode</a>.push_back(<a class="code" href="classExtMode.html">ExtMode</a>(modechar,type,requires_oper,params_on,params_off)); +00272 <span class="keywordflow">return</span> <span class="keyword">true</span>; +00273 } +00274 +00275 <span class="comment">// turns a mode into a listmode</span> +<a name="l00276"></a><a class="code" href="modules_8cpp.html#a57">00276</a> <span class="keywordtype">void</span> <a class="code" href="modules_8cpp.html#a57">ModeMakeList</a>(<span class="keywordtype">char</span> modechar) +00277 { +00278 <span class="keywordflow">for</span> (<a class="code" href="modules_8cpp.html#a49">ExtModeListIter</a> i = <a class="code" href="modules_8cpp.html#a50">EMode</a>.begin(); i < <a class="code" href="modules_8cpp.html#a50">EMode</a>.end(); i++) +00279 { +00280 <span class="keywordflow">if</span> ((i->modechar == modechar) && (i->type == <a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>)) +00281 { +00282 i->list = <span class="keyword">true</span>; +00283 <span class="keywordflow">return</span>; +00284 } +00285 } +00286 <span class="keywordflow">return</span>; +00287 } +00288 +00289 <span class="comment">// version is a simple class for holding a modules version number</span> +00290 +<a name="l00291"></a><a class="code" href="classVersion.html#a0">00291</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) : Major(major), Minor(minor), Revision(revision), Build(build) { }; +00292 +00293 <span class="comment">// admin is a simple class for holding a server's administrative info</span> +00294 +<a name="l00295"></a><a class="code" href="classAdmin.html#a0">00295</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) { }; +00296 +<a name="l00297"></a><a class="code" href="classModule.html#a0">00297</a> <a class="code" href="classModule.html#a0">Module::Module</a>() { } +<a name="l00298"></a><a class="code" href="classModule.html#a1">00298</a> <a class="code" href="classModule.html#a1">Module::~Module</a>() { } +<a name="l00299"></a><a class="code" href="classModule.html#a3">00299</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="l00300"></a><a class="code" href="classModule.html#a4">00300</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="l00301"></a><a class="code" href="classModule.html#a5">00301</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a5">Module::OnUserJoin</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { } +<a name="l00302"></a><a class="code" href="classModule.html#a6">00302</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a6">Module::OnUserPart</a>(<a class="code" href="classuserrec.html">userrec</a>* user, <a class="code" href="classchanrec.html">chanrec</a>* channel) { } +<a name="l00303"></a><a class="code" href="classModule.html#a7">00303</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a7">Module::OnPacketTransmit</a>(<span class="keywordtype">char</span> *p) { } +<a name="l00304"></a><a class="code" href="classModule.html#a8">00304</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a8">Module::OnPacketReceive</a>(<span class="keywordtype">char</span> *p) { } +<a name="l00305"></a><a class="code" href="classModule.html#a9">00305</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a9">Module::OnRehash</a>() { } +<a name="l00306"></a><a class="code" href="classModule.html#a10">00306</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a10">Module::OnServerRaw</a>(std::string &raw, <span class="keywordtype">bool</span> inbound, <a class="code" href="classuserrec.html">userrec</a>* user) { } +<a name="l00307"></a><a class="code" href="classModule.html#a12">00307</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a12">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="l00308"></a><a class="code" href="classModule.html#a11">00308</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a11">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="l00309"></a><a class="code" href="classModule.html#a2">00309</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 name="l00310"></a><a class="code" href="classModule.html#a13">00310</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a13">Module::OnOper</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; +<a name="l00311"></a><a class="code" href="classModule.html#a14">00311</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a14">Module::OnInfo</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { }; +<a name="l00312"></a><a class="code" href="classModule.html#a15">00312</a> <span class="keywordtype">void</span> <a class="code" href="classModule.html#a15">Module::OnWhois</a>(<a class="code" href="classuserrec.html">userrec</a>* source, <a class="code" href="classuserrec.html">userrec</a>* dest) { }; +<a name="l00313"></a><a class="code" href="classModule.html#a16">00313</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a16">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="l00314"></a><a class="code" href="classModule.html#a17">00314</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a17">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="l00315"></a><a class="code" href="classModule.html#a18">00315</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a18">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="l00316"></a><a class="code" href="classModule.html#a19">00316</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a19">Module::OnUserPreNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string newnick) { <span class="keywordflow">return</span> 0; }; +<a name="l00317"></a><a class="code" href="classModule.html#a20">00317</a> <span class="keywordtype">int</span> <a class="code" href="classModule.html#a20">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="l00318"></a><a class="code" href="classModule.html#a21">00318</a> <a class="code" href="modules_8h.html#a27">string_list</a> <a class="code" href="classModule.html#a21">Module::OnUserSync</a>(<a class="code" href="classuserrec.html">userrec</a>* user) { <a class="code" href="modules_8h.html#a27">string_list</a> empty; <span class="keywordflow">return</span> empty; } +<a name="l00319"></a><a class="code" href="classModule.html#a22">00319</a> <a class="code" href="modules_8h.html#a27">string_list</a> <a class="code" href="classModule.html#a22">Module::OnChannelSync</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) { <a class="code" href="modules_8h.html#a27">string_list</a> empty; <span class="keywordflow">return</span> empty; } 00320 -<a name="l00321"></a><a class="code" href="classServer.html#a2">00321</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s) -00322 { -00323 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str()); -00324 } +00321 +00322 <span class="comment">// server is a wrapper class that provides methods to all of the C-style</span> +00323 <span class="comment">// exports in the core</span> +00324 <span class="comment">//</span> 00325 -<a name="l00326"></a><a class="code" href="classServer.html#a30">00326</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a30">Server::MatchText</a>(std::string sliteral, std::string spattern) +<a name="l00326"></a><a class="code" href="classServer.html#a0">00326</a> <a class="code" href="classServer.html#a0">Server::Server</a>() 00327 { -00328 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF]; -00329 strncpy(literal,sliteral.c_str(),MAXBUF); -00330 strncpy(pattern,spattern.c_str(),MAXBUF); -00331 <span class="keywordflow">return</span> match(literal,pattern); +00328 } +00329 +<a name="l00330"></a><a class="code" href="classServer.html#a1">00330</a> <a class="code" href="classServer.html#a1">Server::~Server</a>() +00331 { 00332 } 00333 -<a name="l00334"></a><a class="code" href="classServer.html#a25">00334</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text) +<a name="l00334"></a><a class="code" href="classServer.html#a2">00334</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a2">Server::SendOpers</a>(std::string s) 00335 { -00336 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str()); +00336 WriteOpers(<span class="stringliteral">"%s"</span>,s.c_str()); 00337 } 00338 -<a name="l00339"></a><a class="code" href="classServer.html#a26">00339</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a26">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key) +<a name="l00339"></a><a class="code" href="classServer.html#a30">00339</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a30">Server::MatchText</a>(std::string sliteral, std::string spattern) 00340 { -00341 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">true</span>); -00342 } -00343 -<a name="l00344"></a><a class="code" href="classServer.html#a27">00344</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a27">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason) -00345 { -00346 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>); -00347 } -00348 -<a name="l00349"></a><a class="code" href="classServer.html#a35">00349</a> <a class="code" href="modules_8h.html#a28">chanuserlist</a> <a class="code" href="classServer.html#a35">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) -00350 { -00351 <a class="code" href="modules_8h.html#a28">chanuserlist</a> userl; -00352 userl.clear(); -00353 <span class="keywordflow">for</span> (user_hash::const_iterator i = <a class="code" href="modules_8cpp.html#a42">clientlist</a>.begin(); i != <a class="code" href="modules_8cpp.html#a42">clientlist</a>.end(); i++) -00354 { -00355 <span class="keywordflow">if</span> (i->second) -00356 { -00357 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#a16">has_channel</a>(i->second,chan)) -00358 { -00359 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#a13">isnick</a>(i->second->nick)) -00360 { -00361 userl.push_back(i->second); -00362 } -00363 } -00364 } -00365 } -00366 <span class="keywordflow">return</span> userl; -00367 } -<a name="l00368"></a><a class="code" href="classServer.html#a28">00368</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a28">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname) -00369 { -00370 force_nickchange(user,nickname.c_str()); -00371 } -00372 -<a name="l00373"></a><a class="code" href="classServer.html#a29">00373</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a29">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason) -00374 { -00375 <a class="code" href="message_8h.html#a19">send_network_quit</a>(user-><a class="code" href="classuserrec.html#m0">nick</a>,reason.c_str()); -00376 kill_link(user,reason.c_str()); -00377 } -00378 -<a name="l00379"></a><a class="code" href="classServer.html#a34">00379</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a34">Server::IsUlined</a>(std::string server) -00380 { -00381 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a71">is_uline</a>(server.c_str()); -00382 } -00383 -<a name="l00384"></a><a class="code" href="classServer.html#a31">00384</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">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) -00385 { -00386 call_handler(commandname.c_str(),parameters,pcnt,user); -00387 } -00388 -<a name="l00389"></a><a class="code" href="classServer.html#a3">00389</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) -00390 { -00391 log(level,<span class="stringliteral">"%s"</span>,s.c_str()); -00392 } -00393 -<a name="l00394"></a><a class="code" href="classServer.html#a23">00394</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a23">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams) -00395 { -00396 <a class="code" href="modules_8h.html#a30">createcommand</a>(cmd,f,flags,minparams); -00397 } -00398 -<a name="l00399"></a><a class="code" href="classServer.html#a24">00399</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a24">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) -00400 { -00401 <a class="code" href="modules_8h.html#a31">server_mode</a>(parameters,pcnt,user); -00402 } -00403 -<a name="l00404"></a><a class="code" href="classServer.html#a4">00404</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) -00405 { -00406 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); -00407 } -00408 -<a name="l00409"></a><a class="code" href="classServer.html#a5">00409</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) -00410 { -00411 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); -00412 } -00413 -<a name="l00414"></a><a class="code" href="classServer.html#a6">00414</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s) -00415 { -00416 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str()); -00417 } -00418 -<a name="l00419"></a><a class="code" href="classServer.html#a7">00419</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s) -00420 { -00421 <span class="keywordflow">if</span> (!Source) -00422 { -00423 <span class="comment">// if source is NULL, then the message originates from the local server</span> -00424 Write(Dest-><a class="code" href="classconnection.html#m0">fd</a>,<span class="stringliteral">":%s %s"</span>,this->GetServerName().c_str(),s.c_str()); -00425 } -00426 <span class="keywordflow">else</span> -00427 { -00428 <span class="comment">// otherwise it comes from the user specified</span> -00429 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str()); -00430 } -00431 } -00432 -<a name="l00433"></a><a class="code" href="classServer.html#a8">00433</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">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) -00434 { -00435 <span class="keywordflow">if</span> (IncludeSender) -00436 { -00437 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); +00341 <span class="keywordtype">char</span> literal[MAXBUF],pattern[MAXBUF]; +00342 strlcpy(literal,sliteral.c_str(),MAXBUF); +00343 strlcpy(pattern,spattern.c_str(),MAXBUF); +00344 <span class="keywordflow">return</span> match(literal,pattern); +00345 } +00346 +<a name="l00347"></a><a class="code" href="classServer.html#a25">00347</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a25">Server::SendToModeMask</a>(std::string modes, <span class="keywordtype">int</span> flags, std::string text) +00348 { +00349 WriteMode(modes.c_str(),flags,<span class="stringliteral">"%s"</span>,text.c_str()); +00350 } +00351 +<a name="l00352"></a><a class="code" href="classServer.html#a26">00352</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a26">Server::JoinUserToChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string key) +00353 { +00354 <span class="keywordflow">return</span> add_channel(user,cname.c_str(),key.c_str(),<span class="keyword">true</span>); +00355 } +00356 +<a name="l00357"></a><a class="code" href="classServer.html#a27">00357</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a27">Server::PartUserFromChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string cname, std::string reason) +00358 { +00359 <span class="keywordflow">return</span> del_channel(user,cname.c_str(),reason.c_str(),<span class="keyword">false</span>); +00360 } +00361 +<a name="l00362"></a><a class="code" href="classServer.html#a35">00362</a> <a class="code" href="modules_8h.html#a28">chanuserlist</a> <a class="code" href="classServer.html#a35">Server::GetUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* chan) +00363 { +00364 <a class="code" href="modules_8h.html#a28">chanuserlist</a> userl; +00365 userl.clear(); +00366 <span class="keywordflow">for</span> (user_hash::const_iterator i = <a class="code" href="modules_8cpp.html#a41">clientlist</a>.begin(); i != <a class="code" href="modules_8cpp.html#a41">clientlist</a>.end(); i++) +00367 { +00368 <span class="keywordflow">if</span> (i->second) +00369 { +00370 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#a16">has_channel</a>(i->second,chan)) +00371 { +00372 <span class="keywordflow">if</span> (<a class="code" href="message_8h.html#a13">isnick</a>(i->second->nick)) +00373 { +00374 userl.push_back(i->second); +00375 } +00376 } +00377 } +00378 } +00379 <span class="keywordflow">return</span> userl; +00380 } +<a name="l00381"></a><a class="code" href="classServer.html#a28">00381</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a28">Server::ChangeUserNick</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string nickname) +00382 { +00383 force_nickchange(user,nickname.c_str()); +00384 } +00385 +<a name="l00386"></a><a class="code" href="classServer.html#a29">00386</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a29">Server::QuitUser</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string reason) +00387 { +00388 <a class="code" href="message_8h.html#a19">send_network_quit</a>(user-><a class="code" href="classuserrec.html#o0">nick</a>,reason.c_str()); +00389 kill_link(user,reason.c_str()); +00390 } +00391 +<a name="l00392"></a><a class="code" href="classServer.html#a34">00392</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a34">Server::IsUlined</a>(std::string server) +00393 { +00394 <span class="keywordflow">return</span> <a class="code" href="commands_8h.html#a71">is_uline</a>(server.c_str()); +00395 } +00396 +<a name="l00397"></a><a class="code" href="classServer.html#a31">00397</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a31">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) +00398 { +00399 call_handler(commandname.c_str(),parameters,pcnt,user); +00400 } +00401 +<a name="l00402"></a><a class="code" href="classServer.html#a3">00402</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) +00403 { +00404 log(level,<span class="stringliteral">"%s"</span>,s.c_str()); +00405 } +00406 +<a name="l00407"></a><a class="code" href="classServer.html#a23">00407</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a23">Server::AddCommand</a>(<span class="keywordtype">char</span>* cmd, handlerfunc f, <span class="keywordtype">char</span> flags, <span class="keywordtype">int</span> minparams) +00408 { +00409 <a class="code" href="modules_8h.html#a30">createcommand</a>(cmd,f,flags,minparams); +00410 } +00411 +<a name="l00412"></a><a class="code" href="classServer.html#a24">00412</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a24">Server::SendMode</a>(<span class="keywordtype">char</span> **parameters, <span class="keywordtype">int</span> pcnt, <a class="code" href="classuserrec.html">userrec</a> *user) +00413 { +00414 <a class="code" href="modules_8h.html#a31">server_mode</a>(parameters,pcnt,user); +00415 } +00416 +<a name="l00417"></a><a class="code" href="classServer.html#a4">00417</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) +00418 { +00419 Write(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); +00420 } +00421 +<a name="l00422"></a><a class="code" href="classServer.html#a5">00422</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) +00423 { +00424 WriteServ(Socket,<span class="stringliteral">"%s"</span>,s.c_str()); +00425 } +00426 +<a name="l00427"></a><a class="code" href="classServer.html#a6">00427</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a6">Server::SendFrom</a>(<span class="keywordtype">int</span> Socket, <a class="code" href="classuserrec.html">userrec</a>* User, std::string s) +00428 { +00429 WriteFrom(Socket,User,<span class="stringliteral">"%s"</span>,s.c_str()); +00430 } +00431 +<a name="l00432"></a><a class="code" href="classServer.html#a7">00432</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a7">Server::SendTo</a>(<a class="code" href="classuserrec.html">userrec</a>* Source, <a class="code" href="classuserrec.html">userrec</a>* Dest, std::string s) +00433 { +00434 <span class="keywordflow">if</span> (!Source) +00435 { +00436 <span class="comment">// if source is NULL, then the message originates from the local server</span> +00437 Write(Dest-><a class="code" href="classconnection.html#o0">fd</a>,<span class="stringliteral">":%s %s"</span>,this->GetServerName().c_str(),s.c_str()); 00438 } 00439 <span class="keywordflow">else</span> 00440 { -00441 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); -00442 } -00443 } -00444 -<a name="l00445"></a><a class="code" href="classServer.html#a9">00445</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a9">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2) -00446 { -00447 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a0">common_channels</a>(u1,u2) != 0); -00448 } -00449 -<a name="l00450"></a><a class="code" href="classServer.html#a10">00450</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a10">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender) -00451 { -00452 <span class="keywordflow">if</span> (IncludeSender) +00441 <span class="comment">// otherwise it comes from the user specified</span> +00442 WriteTo(Source,Dest,<span class="stringliteral">"%s"</span>,s.c_str()); +00443 } +00444 } +00445 +<a name="l00446"></a><a class="code" href="classServer.html#a8">00446</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a8">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) +00447 { +00448 <span class="keywordflow">if</span> (IncludeSender) +00449 { +00450 WriteChannel(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); +00451 } +00452 <span class="keywordflow">else</span> 00453 { -00454 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str()); +00454 ChanExceptSender(Channel,User,<span class="stringliteral">"%s"</span>,s.c_str()); 00455 } -00456 <span class="keywordflow">else</span> -00457 { -00458 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str()); -00459 } -00460 } -00461 -<a name="l00462"></a><a class="code" href="classServer.html#a11">00462</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text) -00463 { -00464 WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str()); -00465 } -00466 -<a name="l00467"></a><a class="code" href="classServer.html#a32">00467</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a32">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host) -00468 { -00469 <a class="code" href="message_8h.html#a11">ChangeDisplayedHost</a>(user,host.c_str()); -00470 } -00471 -<a name="l00472"></a><a class="code" href="classServer.html#a33">00472</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a33">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos) -00473 { -00474 <a class="code" href="message_8h.html#a10">ChangeName</a>(user,gecos.c_str()); -00475 } -00476 -<a name="l00477"></a><a class="code" href="classServer.html#a12">00477</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">Server::IsNick</a>(std::string nick) -00478 { -00479 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a13">isnick</a>(nick.c_str()) != 0); -00480 } -00481 -<a name="l00482"></a><a class="code" href="classServer.html#a14">00482</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a14">Server::FindNick</a>(std::string nick) -00483 { -00484 <span class="keywordflow">return</span> Find(nick); -00485 } -00486 -<a name="l00487"></a><a class="code" href="classServer.html#a15">00487</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a15">Server::FindChannel</a>(std::string channel) -00488 { -00489 <span class="keywordflow">return</span> FindChan(channel.c_str()); -00490 } -00491 -<a name="l00492"></a><a class="code" href="classServer.html#a16">00492</a> std::string <a class="code" href="classServer.html#a16">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan) -00493 { -00494 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a14">cmode</a>(User,Chan); -00495 } -00496 -<a name="l00497"></a><a class="code" href="classServer.html#a17">00497</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a17">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan) -00498 { -00499 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a16">has_channel</a>(User,Chan); -00500 } -00501 -<a name="l00502"></a><a class="code" href="classServer.html#a18">00502</a> std::string <a class="code" href="classServer.html#a18">Server::GetServerName</a>() -00503 { -00504 <span class="keywordflow">return</span> getservername(); -00505 } -00506 -<a name="l00507"></a><a class="code" href="classServer.html#a19">00507</a> std::string <a class="code" href="classServer.html#a19">Server::GetNetworkName</a>() -00508 { -00509 <span class="keywordflow">return</span> getnetworkname(); -00510 } -00511 -<a name="l00512"></a><a class="code" href="classServer.html#a20">00512</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a20">Server::GetAdmin</a>() -00513 { -00514 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick()); -00515 } -00516 -00517 -00518 -<a name="l00519"></a><a class="code" href="classServer.html#a21">00519</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a21">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) -00520 { -00521 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>) -00522 { -00523 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"</span>); -00524 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00525 } -00526 <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>)) -00527 { -00528 log(DEBUG,<span class="stringliteral">"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"</span>); -00529 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00530 } -00531 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1)) -00532 { -00533 log(DEBUG,<span class="stringliteral">"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"</span>); -00534 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00535 } -00536 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a57">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off); -00537 } -00538 -<a name="l00539"></a><a class="code" href="classServer.html#a22">00539</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a22">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar) -00540 { -00541 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#a57">DoAddExtendedMode</a>(modechar,MT_CHANNEL,<span class="keyword">false</span>,1,1); -00542 <span class="keywordflow">if</span> (res) -00543 <a class="code" href="modules_8cpp.html#a58">ModeMakeList</a>(modechar); -00544 <span class="keywordflow">return</span> res; -00545 } -00546 -<a name="l00547"></a><a class="code" href="classServer.html#a13">00547</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a13">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c) -00548 { -00549 <span class="keywordflow">return</span> usercount(c); +00456 } +00457 +<a name="l00458"></a><a class="code" href="classServer.html#a9">00458</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a9">Server::CommonChannels</a>(<a class="code" href="classuserrec.html">userrec</a>* u1, <a class="code" href="classuserrec.html">userrec</a>* u2) +00459 { +00460 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a0">common_channels</a>(u1,u2) != 0); +00461 } +00462 +<a name="l00463"></a><a class="code" href="classServer.html#a10">00463</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a10">Server::SendCommon</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text,<span class="keywordtype">bool</span> IncludeSender) +00464 { +00465 <span class="keywordflow">if</span> (IncludeSender) +00466 { +00467 WriteCommon(User,<span class="stringliteral">"%s"</span>,text.c_str()); +00468 } +00469 <span class="keywordflow">else</span> +00470 { +00471 WriteCommonExcept(User,<span class="stringliteral">"%s"</span>,text.c_str()); +00472 } +00473 } +00474 +<a name="l00475"></a><a class="code" href="classServer.html#a11">00475</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a11">Server::SendWallops</a>(<a class="code" href="classuserrec.html">userrec</a>* User, std::string text) +00476 { +00477 WriteWallOps(User,<span class="keyword">false</span>,<span class="stringliteral">"%s"</span>,text.c_str()); +00478 } +00479 +<a name="l00480"></a><a class="code" href="classServer.html#a32">00480</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a32">Server::ChangeHost</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string host) +00481 { +00482 <a class="code" href="message_8h.html#a11">ChangeDisplayedHost</a>(user,host.c_str()); +00483 } +00484 +<a name="l00485"></a><a class="code" href="classServer.html#a33">00485</a> <span class="keywordtype">void</span> <a class="code" href="classServer.html#a33">Server::ChangeGECOS</a>(<a class="code" href="classuserrec.html">userrec</a>* user, std::string gecos) +00486 { +00487 <a class="code" href="message_8h.html#a10">ChangeName</a>(user,gecos.c_str()); +00488 } +00489 +<a name="l00490"></a><a class="code" href="classServer.html#a12">00490</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a12">Server::IsNick</a>(std::string nick) +00491 { +00492 <span class="keywordflow">return</span> (<a class="code" href="message_8h.html#a13">isnick</a>(nick.c_str()) != 0); +00493 } +00494 +<a name="l00495"></a><a class="code" href="classServer.html#a14">00495</a> <a class="code" href="classuserrec.html">userrec</a>* <a class="code" href="classServer.html#a14">Server::FindNick</a>(std::string nick) +00496 { +00497 <span class="keywordflow">return</span> Find(nick); +00498 } +00499 +<a name="l00500"></a><a class="code" href="classServer.html#a15">00500</a> <a class="code" href="classchanrec.html">chanrec</a>* <a class="code" href="classServer.html#a15">Server::FindChannel</a>(std::string channel) +00501 { +00502 <span class="keywordflow">return</span> FindChan(channel.c_str()); +00503 } +00504 +<a name="l00505"></a><a class="code" href="classServer.html#a16">00505</a> std::string <a class="code" href="classServer.html#a16">Server::ChanMode</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan) +00506 { +00507 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a14">cmode</a>(User,Chan); +00508 } +00509 +<a name="l00510"></a><a class="code" href="classServer.html#a17">00510</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a17">Server::IsOnChannel</a>(<a class="code" href="classuserrec.html">userrec</a>* User, <a class="code" href="classchanrec.html">chanrec</a>* Chan) +00511 { +00512 <span class="keywordflow">return</span> <a class="code" href="message_8h.html#a16">has_channel</a>(User,Chan); +00513 } +00514 +<a name="l00515"></a><a class="code" href="classServer.html#a18">00515</a> std::string <a class="code" href="classServer.html#a18">Server::GetServerName</a>() +00516 { +00517 <span class="keywordflow">return</span> getservername(); +00518 } +00519 +<a name="l00520"></a><a class="code" href="classServer.html#a19">00520</a> std::string <a class="code" href="classServer.html#a19">Server::GetNetworkName</a>() +00521 { +00522 <span class="keywordflow">return</span> getnetworkname(); +00523 } +00524 +<a name="l00525"></a><a class="code" href="classServer.html#a20">00525</a> <a class="code" href="classAdmin.html">Admin</a> <a class="code" href="classServer.html#a20">Server::GetAdmin</a>() +00526 { +00527 <span class="keywordflow">return</span> <a class="code" href="classAdmin.html">Admin</a>(getadminname(),getadminemail(),getadminnick()); +00528 } +00529 +00530 +00531 +<a name="l00532"></a><a class="code" href="classServer.html#a21">00532</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a21">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) +00533 { +00534 <span class="keywordflow">if</span> (type == <a class="code" href="modules_8h.html#a7">MT_SERVER</a>) +00535 { +00536 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>); +00537 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00538 } +00539 <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>)) +00540 { +00541 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>); +00542 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00543 } +00544 <span class="keywordflow">if</span> ((params_when_on>1) || (params_when_off>1)) +00545 { +00546 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>); +00547 <span class="keywordflow">return</span> <span class="keyword">false</span>; +00548 } +00549 <span class="keywordflow">return</span> <a class="code" href="modules_8cpp.html#a56">DoAddExtendedMode</a>(modechar,type,requires_oper,params_when_on,params_when_off); 00550 } 00551 -00552 -<a name="l00553"></a><a class="code" href="classConfigReader.html#a0">00553</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>() -00554 { -00555 this-><a class="code" href="classConfigReader.html#n0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); -00556 this-><a class="code" href="classConfigReader.html#n1">readerror</a> = LoadConf(CONFIG_FILE,this->cache); -00557 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#n1">readerror</a>) -00558 this-><a class="code" href="classConfigReader.html#n2">error</a> = <a class="code" href="modules_8h.html#a25">CONF_FILE_NOT_FOUND</a>; -00559 } -00560 -00561 -<a name="l00562"></a><a class="code" href="classConfigReader.html#a2">00562</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>() -00563 { -00564 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#n0">cache</a>) -00565 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#n0">cache</a>; -00566 } -00567 -00568 -<a name="l00569"></a><a class="code" href="classConfigReader.html#a1">00569</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename) -00570 { -00571 this-><a class="code" href="classConfigReader.html#n0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); -00572 this-><a class="code" href="classConfigReader.html#n1">readerror</a> = LoadConf(filename.c_str(),this-><a class="code" href="classConfigReader.html#n0">cache</a>); -00573 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#n1">readerror</a>) -00574 this-><a class="code" href="classConfigReader.html#n2">error</a> = <a class="code" href="modules_8h.html#a25">CONF_FILE_NOT_FOUND</a>; -00575 }; -00576 -<a name="l00577"></a><a class="code" href="classConfigReader.html#a3">00577</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) -00578 { -00579 <span class="keywordtype">char</span> val[MAXBUF]; -00580 <span class="keywordtype">char</span> t[MAXBUF]; -00581 <span class="keywordtype">char</span> n[MAXBUF]; -00582 strncpy(t,tag.c_str(),MAXBUF); -00583 strncpy(n,name.c_str(),MAXBUF); -00584 <span class="keywordtype">int</span> res = ReadConf(cache,t,n,index,val); -00585 <span class="keywordflow">if</span> (!res) -00586 { -00587 this-><a class="code" href="classConfigReader.html#n2">error</a> = <a class="code" href="modules_8h.html#a24">CONF_VALUE_NOT_FOUND</a>; -00588 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; -00589 } -00590 <span class="keywordflow">return</span> std::string(val); -00591 } -00592 -<a name="l00593"></a><a class="code" href="classConfigReader.html#a4">00593</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) -00594 { -00595 <span class="keywordtype">char</span> val[MAXBUF]; -00596 <span class="keywordtype">char</span> t[MAXBUF]; -00597 <span class="keywordtype">char</span> n[MAXBUF]; -00598 strncpy(t,tag.c_str(),MAXBUF); -00599 strncpy(n,name.c_str(),MAXBUF); -00600 <span class="keywordtype">int</span> res = ReadConf(cache,t,n,index,val); -00601 <span class="keywordflow">if</span> (!res) -00602 { -00603 this-><a class="code" href="classConfigReader.html#n2">error</a> = <a class="code" href="modules_8h.html#a24">CONF_VALUE_NOT_FOUND</a>; -00604 <span class="keywordflow">return</span> <span class="keyword">false</span>; -00605 } -00606 std::string s = val; -00607 <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>)); +<a name="l00552"></a><a class="code" href="classServer.html#a22">00552</a> <span class="keywordtype">bool</span> <a class="code" href="classServer.html#a22">Server::AddExtendedListMode</a>(<span class="keywordtype">char</span> modechar) +00553 { +00554 <span class="keywordtype">bool</span> res = <a class="code" href="modules_8cpp.html#a56">DoAddExtendedMode</a>(modechar,<a class="code" href="modules_8h.html#a5">MT_CHANNEL</a>,<span class="keyword">false</span>,1,1); +00555 <span class="keywordflow">if</span> (res) +00556 <a class="code" href="modules_8cpp.html#a57">ModeMakeList</a>(modechar); +00557 <span class="keywordflow">return</span> res; +00558 } +00559 +<a name="l00560"></a><a class="code" href="classServer.html#a13">00560</a> <span class="keywordtype">int</span> <a class="code" href="classServer.html#a13">Server::CountUsers</a>(<a class="code" href="classchanrec.html">chanrec</a>* c) +00561 { +00562 <span class="keywordflow">return</span> usercount(c); +00563 } +00564 +00565 +<a name="l00566"></a><a class="code" href="classConfigReader.html#a0">00566</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>() +00567 { +00568 this-><a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00569 this-><a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00570 this-><a class="code" href="classConfigReader.html#p2">readerror</a> = LoadConf(CONFIG_FILE,this->cache,this->errorlog); +00571 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#p2">readerror</a>) +00572 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a25">CONF_FILE_NOT_FOUND</a>; +00573 } +00574 +00575 +<a name="l00576"></a><a class="code" href="classConfigReader.html#a2">00576</a> <a class="code" href="classConfigReader.html#a2">ConfigReader::~ConfigReader</a>() +00577 { +00578 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#p0">cache</a>) +00579 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#p0">cache</a>; +00580 <span class="keywordflow">if</span> (this-><a class="code" href="classConfigReader.html#p1">errorlog</a>) +00581 <span class="keyword">delete</span> this-><a class="code" href="classConfigReader.html#p1">errorlog</a>; +00582 } +00583 +00584 +<a name="l00585"></a><a class="code" href="classConfigReader.html#a1">00585</a> <a class="code" href="classConfigReader.html#a0">ConfigReader::ConfigReader</a>(std::string filename) +00586 { +00587 this-><a class="code" href="classConfigReader.html#p0">cache</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00588 this-><a class="code" href="classConfigReader.html#p1">errorlog</a> = <span class="keyword">new</span> std::stringstream(std::stringstream::in | std::stringstream::out); +00589 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>); +00590 <span class="keywordflow">if</span> (!this-><a class="code" href="classConfigReader.html#p2">readerror</a>) +00591 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a25">CONF_FILE_NOT_FOUND</a>; +00592 }; +00593 +<a name="l00594"></a><a class="code" href="classConfigReader.html#a3">00594</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) +00595 { +00596 <span class="keywordtype">char</span> val[MAXBUF]; +00597 <span class="keywordtype">char</span> t[MAXBUF]; +00598 <span class="keywordtype">char</span> n[MAXBUF]; +00599 strlcpy(t,tag.c_str(),MAXBUF); +00600 strlcpy(n,name.c_str(),MAXBUF); +00601 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val); +00602 <span class="keywordflow">if</span> (!res) +00603 { +00604 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a24">CONF_VALUE_NOT_FOUND</a>; +00605 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; +00606 } +00607 <span class="keywordflow">return</span> std::string(val); 00608 } 00609 -<a name="l00610"></a><a class="code" href="classConfigReader.html#a5">00610</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) +<a name="l00610"></a><a class="code" href="classConfigReader.html#a4">00610</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) 00611 { 00612 <span class="keywordtype">char</span> val[MAXBUF]; 00613 <span class="keywordtype">char</span> t[MAXBUF]; 00614 <span class="keywordtype">char</span> n[MAXBUF]; -00615 strncpy(t,tag.c_str(),MAXBUF); -00616 strncpy(n,name.c_str(),MAXBUF); -00617 <span class="keywordtype">int</span> res = ReadConf(cache,t,n,index,val); +00615 strlcpy(t,tag.c_str(),MAXBUF); +00616 strlcpy(n,name.c_str(),MAXBUF); +00617 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val); 00618 <span class="keywordflow">if</span> (!res) 00619 { -00620 this-><a class="code" href="classConfigReader.html#n2">error</a> = <a class="code" href="modules_8h.html#a24">CONF_VALUE_NOT_FOUND</a>; -00621 <span class="keywordflow">return</span> 0; +00620 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a24">CONF_VALUE_NOT_FOUND</a>; +00621 <span class="keywordflow">return</span> <span class="keyword">false</span>; 00622 } -00623 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(val); i++) -00624 { -00625 <span class="keywordflow">if</span> (!isdigit(val[i])) -00626 { -00627 this-><a class="code" href="classConfigReader.html#n2">error</a> = <a class="code" href="modules_8h.html#a22">CONF_NOT_A_NUMBER</a>; -00628 <span class="keywordflow">return</span> 0; -00629 } -00630 } -00631 <span class="keywordflow">if</span> ((needs_unsigned) && (atoi(val)<0)) -00632 { -00633 this-><a class="code" href="classConfigReader.html#n2">error</a> = <a class="code" href="modules_8h.html#a23">CONF_NOT_UNSIGNED</a>; -00634 <span class="keywordflow">return</span> 0; -00635 } -00636 <span class="keywordflow">return</span> atoi(val); -00637 } -00638 -<a name="l00639"></a><a class="code" href="classConfigReader.html#a6">00639</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">ConfigReader::GetError</a>() -00640 { -00641 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#n2">error</a>; -00642 this->error = 0; -00643 <span class="keywordflow">return</span> olderr; -00644 } -00645 -00646 -<a name="l00647"></a><a class="code" href="classConfigReader.html#a7">00647</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">ConfigReader::Enumerate</a>(std::string tag) -00648 { -00649 <span class="keywordflow">return</span> EnumConf(cache,tag.c_str()); -00650 } -00651 -<a name="l00652"></a><a class="code" href="classConfigReader.html#a9">00652</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a9">ConfigReader::EnumerateValues</a>(std::string tag, <span class="keywordtype">int</span> index) -00653 { -00654 <span class="keywordflow">return</span> EnumValues(cache, tag.c_str(), index); -00655 } -00656 -<a name="l00657"></a><a class="code" href="classConfigReader.html#a8">00657</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">ConfigReader::Verify</a>() -00658 { -00659 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#n1">readerror</a>; -00660 } -00661 +00623 std::string s = val; +00624 <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>)); +00625 } +00626 +<a name="l00627"></a><a class="code" href="classConfigReader.html#a5">00627</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) +00628 { +00629 <span class="keywordtype">char</span> val[MAXBUF]; +00630 <span class="keywordtype">char</span> t[MAXBUF]; +00631 <span class="keywordtype">char</span> n[MAXBUF]; +00632 strlcpy(t,tag.c_str(),MAXBUF); +00633 strlcpy(n,name.c_str(),MAXBUF); +00634 <span class="keywordtype">int</span> res = ReadConf(<a class="code" href="classConfigReader.html#p0">cache</a>,t,n,index,val); +00635 <span class="keywordflow">if</span> (!res) +00636 { +00637 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a24">CONF_VALUE_NOT_FOUND</a>; +00638 <span class="keywordflow">return</span> 0; +00639 } +00640 <span class="keywordflow">for</span> (<span class="keywordtype">int</span> i = 0; i < strlen(val); i++) +00641 { +00642 <span class="keywordflow">if</span> (!isdigit(val[i])) +00643 { +00644 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a22">CONF_NOT_A_NUMBER</a>; +00645 <span class="keywordflow">return</span> 0; +00646 } +00647 } +00648 <span class="keywordflow">if</span> ((needs_unsigned) && (atoi(val)<0)) +00649 { +00650 this-><a class="code" href="classConfigReader.html#p3">error</a> = <a class="code" href="modules_8h.html#a23">CONF_NOT_UNSIGNED</a>; +00651 <span class="keywordflow">return</span> 0; +00652 } +00653 <span class="keywordflow">return</span> atoi(val); +00654 } +00655 +<a name="l00656"></a><a class="code" href="classConfigReader.html#a6">00656</a> <span class="keywordtype">long</span> <a class="code" href="classConfigReader.html#a6">ConfigReader::GetError</a>() +00657 { +00658 <span class="keywordtype">long</span> olderr = this-><a class="code" href="classConfigReader.html#p3">error</a>; +00659 this->error = 0; +00660 <span class="keywordflow">return</span> olderr; +00661 } 00662 -<a name="l00663"></a><a class="code" href="classFileReader.html#a1">00663</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename) +<a name="l00663"></a><a class="code" href="classConfigReader.html#a9">00663</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) 00664 { -00665 <a class="code" href="modules_8h.html#a26">file_cache</a> c; -00666 readfile(c,filename.c_str()); -00667 this-><a class="code" href="classFileReader.html#o0">fc</a> = c; -00668 } -00669 -<a name="l00670"></a><a class="code" href="classFileReader.html#a0">00670</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>() -00671 { -00672 } -00673 -<a name="l00674"></a><a class="code" href="classFileReader.html#a3">00674</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename) -00675 { -00676 <a class="code" href="modules_8h.html#a26">file_cache</a> c; -00677 readfile(c,filename.c_str()); -00678 this-><a class="code" href="classFileReader.html#o0">fc</a> = c; -00679 } -00680 -00681 -<a name="l00682"></a><a class="code" href="classFileReader.html#a2">00682</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>() -00683 { -00684 } -00685 -<a name="l00686"></a><a class="code" href="classFileReader.html#a4">00686</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>() -00687 { -00688 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#o0">fc</a>.size() == 0) -00689 { -00690 <span class="keywordflow">return</span>(false); -00691 } -00692 <span class="keywordflow">else</span> -00693 { -00694 <span class="keywordflow">return</span>(true); -00695 } -00696 } -00697 -<a name="l00698"></a><a class="code" href="classFileReader.html#a5">00698</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x) -00699 { -00700 <span class="keywordflow">if</span> ((x<0) || (x><a class="code" href="classFileReader.html#o0">fc</a>.size())) -00701 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; -00702 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>[x]; -00703 } -00704 -<a name="l00705"></a><a class="code" href="classFileReader.html#a6">00705</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>() -00706 { -00707 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#o0">fc</a>.size(); -00708 } -00709 +00665 <span class="keywordflow">if</span> (bail) +00666 { +00667 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()); +00668 exit(0); +00669 } +00670 <span class="keywordflow">else</span> +00671 { +00672 <span class="keywordtype">char</span> dataline[1024]; +00673 <span class="keywordflow">if</span> (user) +00674 { +00675 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>); +00676 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>->eof()) +00677 { +00678 <a class="code" href="classConfigReader.html#p1">errorlog</a>->getline(dataline,1024); +00679 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); +00680 } +00681 } +00682 <span class="keywordflow">else</span> +00683 { +00684 WriteOpers(<span class="stringliteral">"There were errors in the configuration file:"</span>,user-><a class="code" href="classuserrec.html#o0">nick</a>); +00685 <span class="keywordflow">while</span> (!<a class="code" href="classConfigReader.html#p1">errorlog</a>->eof()) +00686 { +00687 <a class="code" href="classConfigReader.html#p1">errorlog</a>->getline(dataline,1024); +00688 WriteOpers(dataline); +00689 } +00690 } +00691 <span class="keywordflow">return</span>; +00692 } +00693 } +00694 +00695 +<a name="l00696"></a><a class="code" href="classConfigReader.html#a7">00696</a> <span class="keywordtype">int</span> <a class="code" href="classConfigReader.html#a7">ConfigReader::Enumerate</a>(std::string tag) +00697 { +00698 <span class="keywordflow">return</span> EnumConf(<a class="code" href="classConfigReader.html#p0">cache</a>,tag.c_str()); +00699 } +00700 +<a name="l00701"></a><a class="code" href="classConfigReader.html#a10">00701</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) +00702 { +00703 <span class="keywordflow">return</span> EnumValues(<a class="code" href="classConfigReader.html#p0">cache</a>, tag.c_str(), index); +00704 } +00705 +<a name="l00706"></a><a class="code" href="classConfigReader.html#a8">00706</a> <span class="keywordtype">bool</span> <a class="code" href="classConfigReader.html#a8">ConfigReader::Verify</a>() +00707 { +00708 <span class="keywordflow">return</span> this-><a class="code" href="classConfigReader.html#p2">readerror</a>; +00709 } 00710 -00711 std::vector<Module*> <a class="code" href="modules_8cpp.html#a59">modules</a>(255); -00712 std::vector<ircd_module*> <a class="code" href="modules_8cpp.html#a60">factory</a>(255); -00713 -<a name="l00714"></a><a class="code" href="modules_8cpp.html#a1">00714</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a> = -1; -00715 -00716 -</pre></div><hr><address style="align: right;"><small>Generated on Sun May 2 00:09:18 2004 for InspIRCd by +00711 +<a name="l00712"></a><a class="code" href="classFileReader.html#a1">00712</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>(std::string filename) +00713 { +00714 <a class="code" href="modules_8h.html#a26">file_cache</a> c; +00715 readfile(c,filename.c_str()); +00716 this-><a class="code" href="classFileReader.html#r0">fc</a> = c; +00717 } +00718 +<a name="l00719"></a><a class="code" href="classFileReader.html#a0">00719</a> <a class="code" href="classFileReader.html#a0">FileReader::FileReader</a>() +00720 { +00721 } +00722 +<a name="l00723"></a><a class="code" href="classFileReader.html#a3">00723</a> <span class="keywordtype">void</span> <a class="code" href="classFileReader.html#a3">FileReader::LoadFile</a>(std::string filename) +00724 { +00725 <a class="code" href="modules_8h.html#a26">file_cache</a> c; +00726 readfile(c,filename.c_str()); +00727 this-><a class="code" href="classFileReader.html#r0">fc</a> = c; +00728 } +00729 +00730 +<a name="l00731"></a><a class="code" href="classFileReader.html#a2">00731</a> <a class="code" href="classFileReader.html#a2">FileReader::~FileReader</a>() +00732 { +00733 } +00734 +<a name="l00735"></a><a class="code" href="classFileReader.html#a4">00735</a> <span class="keywordtype">bool</span> <a class="code" href="classFileReader.html#a4">FileReader::Exists</a>() +00736 { +00737 <span class="keywordflow">if</span> (<a class="code" href="classFileReader.html#r0">fc</a>.size() == 0) +00738 { +00739 <span class="keywordflow">return</span>(<span class="keyword">false</span>); +00740 } +00741 <span class="keywordflow">else</span> +00742 { +00743 <span class="keywordflow">return</span>(<span class="keyword">true</span>); +00744 } +00745 } +00746 +<a name="l00747"></a><a class="code" href="classFileReader.html#a5">00747</a> std::string <a class="code" href="classFileReader.html#a5">FileReader::GetLine</a>(<span class="keywordtype">int</span> x) +00748 { +00749 <span class="keywordflow">if</span> ((x<0) || (x><a class="code" href="classFileReader.html#r0">fc</a>.size())) +00750 <span class="keywordflow">return</span> <span class="stringliteral">""</span>; +00751 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>[x]; +00752 } +00753 +<a name="l00754"></a><a class="code" href="classFileReader.html#a6">00754</a> <span class="keywordtype">int</span> <a class="code" href="classFileReader.html#a6">FileReader::FileSize</a>() +00755 { +00756 <span class="keywordflow">return</span> <a class="code" href="classFileReader.html#r0">fc</a>.size(); +00757 } +00758 +00759 +00760 std::vector<Module*> <a class="code" href="modules_8cpp.html#a58">modules</a>(255); +00761 std::vector<ircd_module*> <a class="code" href="modules_8cpp.html#a59">factory</a>(255); +00762 +<a name="l00763"></a><a class="code" href="modules_8cpp.html#a1">00763</a> <span class="keywordtype">int</span> <a class="code" href="modules_8cpp.html#a1">MODCOUNT</a> = -1; +00764 +00765 +</pre></div><hr size="1"><address style="align: right;"><small>Generated on Fri Mar 25 03:49:28 2005 for InspIRCd by <a href="http://www.doxygen.org/index.html"> -<img src="doxygen.png" alt="doxygen" align="middle" border=0 -width=110 height=53></a>1.3-rc3 </small></address> +<img src="doxygen.png" alt="doxygen" align="middle" border=0 > +</a>1.3.3 </small></address> </body> </html> |