From: brain Date: Mon, 19 Dec 2005 18:04:22 +0000 (+0000) Subject: git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2578 e03df62e-2008... X-Git-Tag: v2.0.23~9496 X-Git-Url: https://git.netwichtig.de/gitweb/?a=commitdiff_plain;h=71bedf497cde8b0b38afbb366828b3df9c2803d6;p=user%2Fhenk%2Fcode%2Finspircd.git git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2578 e03df62e-2008-0410-955e-edbf42e46eb7 --- diff --git a/docs/man/man3/Admin.3 b/docs/man/man3/Admin.3 index 96c0513ca..b4593f0a1 100644 --- a/docs/man/man3/Admin.3 +++ b/docs/man/man3/Admin.3 @@ -1,4 +1,4 @@ -.TH "Admin" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "Admin" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -38,28 +38,28 @@ Holds /ADMIN data This class contains the admin details of the local server. It is constructed by class \fBServer\fP, and has three read-only values, Name, Email and Nick that contain the specified values for the server where the module is running. .PP -Definition at line 125 of file modules.h. +Definition at line 143 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "Admin::Admin (\fBstd::string\fP name, \fBstd::string\fP email, \fBstd::string\fP nick)" .PP -Definition at line 163 of file modules.cpp. +Definition at line 162 of file modules.cpp. .PP .nf -163 : Name(name), Email(email), Nick(nick) { }; +162 : Name(name), Email(email), Nick(nick) { }; .fi .PP .SH "Member Data Documentation" .PP .SS "const \fBstd::string\fP \fBAdmin::Email\fP" .PP -Definition at line 128 of file modules.h. +Definition at line 146 of file modules.h. .SS "const \fBstd::string\fP \fBAdmin::Name\fP" .PP -Definition at line 128 of file modules.h. +Definition at line 146 of file modules.h. .SS "const \fBstd::string\fP \fBAdmin::Nick\fP" .PP -Definition at line 128 of file modules.h. +Definition at line 146 of file modules.h. .SH "Author" .PP diff --git a/docs/man/man3/BanItem.3 b/docs/man/man3/BanItem.3 index 4893370c0..4d8bcce3e 100644 --- a/docs/man/man3/BanItem.3 +++ b/docs/man/man3/BanItem.3 @@ -1,4 +1,4 @@ -.TH "BanItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "BanItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/BoolSet.3 b/docs/man/man3/BoolSet.3 index c45571390..dbfb454dd 100644 --- a/docs/man/man3/BoolSet.3 +++ b/docs/man/man3/BoolSet.3 @@ -1,4 +1,4 @@ -.TH "BoolSet" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "BoolSet" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/ConfigReader.3 b/docs/man/man3/ConfigReader.3 index 4b3f48a71..f3b765d89 100644 --- a/docs/man/man3/ConfigReader.3 +++ b/docs/man/man3/ConfigReader.3 @@ -1,4 +1,4 @@ -.TH "ConfigReader" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ConfigReader" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -84,7 +84,7 @@ Allows reading of values from configuration files This class allows a module to It may either be instantiated with one parameter or none. Constructing the class using one parameter allows you to specify a path to your own configuration file, otherwise, inspircd.conf is read. .PP -Definition at line 1532 of file modules.h. +Definition at line 1550 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "ConfigReader::ConfigReader ()" @@ -93,19 +93,19 @@ Default constructor. .PP This constructor initialises the ConfigReader class to read the inspircd.conf file as specified when running ./configure. .PP -Definition at line 736 of file modules.cpp. +Definition at line 735 of file modules.cpp. .PP References cache, ServerConfig::ClearStack(), CONF_FILE_NOT_FOUND, error, errorlog, ServerConfig::LoadConf(), and readerror. .PP .nf -737 { -738 Config->ClearStack(); -739 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); -740 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); -741 this->readerror = Config->LoadConf(CONFIG_FILE,this->cache,this->errorlog); -742 if (!this->readerror) -743 this->error = CONF_FILE_NOT_FOUND; -744 } +736 { +737 Config->ClearStack(); +738 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); +739 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); +740 this->readerror = Config->LoadConf(CONFIG_FILE,this->cache,this->errorlog); +741 if (!this->readerror) +742 this->error = CONF_FILE_NOT_FOUND; +743 } .fi .PP .SS "ConfigReader::ConfigReader (\fBstd::string\fP filename)" @@ -114,19 +114,19 @@ Overloaded constructor. .PP This constructor initialises the ConfigReader class to read a user-specified config file .PP -Definition at line 756 of file modules.cpp. +Definition at line 755 of file modules.cpp. .PP References cache, ServerConfig::ClearStack(), CONF_FILE_NOT_FOUND, error, errorlog, ServerConfig::LoadConf(), and readerror. .PP .nf -757 { -758 Config->ClearStack(); -759 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); -760 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); -761 this->readerror = Config->LoadConf(filename.c_str(),this->cache,this->errorlog); -762 if (!this->readerror) -763 this->error = CONF_FILE_NOT_FOUND; -764 }; +756 { +757 Config->ClearStack(); +758 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); +759 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); +760 this->readerror = Config->LoadConf(filename.c_str(),this->cache,this->errorlog); +761 if (!this->readerror) +762 this->error = CONF_FILE_NOT_FOUND; +763 }; .fi .PP .SS "ConfigReader::~ConfigReader ()" @@ -135,17 +135,17 @@ Default destructor. .PP This method destroys the ConfigReader class. .PP -Definition at line 747 of file modules.cpp. +Definition at line 746 of file modules.cpp. .PP References cache, and errorlog. .PP .nf -748 { -749 if (this->cache) -750 delete this->cache; -751 if (this->errorlog) -752 delete this->errorlog; -753 } +747 { +748 if (this->cache) +749 delete this->cache; +750 if (this->errorlog) +751 delete this->errorlog; +752 } .fi .PP .SH "Member Function Documentation" @@ -156,41 +156,41 @@ Dumps the list of errors in a config file to an output location. .PP If bail is true, then the program will abort. If bail is false and user points to a valid user record, the error report will be spooled to the given user by means of NOTICE. if bool is false AND user is false, the error report will be spooled to all opers by means of a NOTICE to all opers. .PP -Definition at line 835 of file modules.cpp. +Definition at line 834 of file modules.cpp. .PP References errorlog, connection::fd, userrec::nick, WriteOpers(), and WriteServ(). .PP .nf -836 { -837 if (bail) -838 { -839 printf('There were errors in your configuration:\n%s',errorlog->str().c_str()); -840 exit(0); -841 } -842 else -843 { -844 char dataline[1024]; -845 if (user) -846 { -847 WriteServ(user->fd,'NOTICE %s :There were errors in the configuration file:',user->nick); -848 while (!errorlog->eof()) -849 { -850 errorlog->getline(dataline,1024); -851 WriteServ(user->fd,'NOTICE %s :%s',user->nick,dataline); -852 } -853 } -854 else -855 { -856 WriteOpers('There were errors in the configuration file:',user->nick); -857 while (!errorlog->eof()) -858 { -859 errorlog->getline(dataline,1024); -860 WriteOpers(dataline); -861 } -862 } -863 return; -864 } -865 } +835 { +836 if (bail) +837 { +838 printf('There were errors in your configuration:\n%s',errorlog->str().c_str()); +839 exit(0); +840 } +841 else +842 { +843 char dataline[1024]; +844 if (user) +845 { +846 WriteServ(user->fd,'NOTICE %s :There were errors in the configuration file:',user->nick); +847 while (!errorlog->eof()) +848 { +849 errorlog->getline(dataline,1024); +850 WriteServ(user->fd,'NOTICE %s :%s',user->nick,dataline); +851 } +852 } +853 else +854 { +855 WriteOpers('There were errors in the configuration file:',user->nick); +856 while (!errorlog->eof()) +857 { +858 errorlog->getline(dataline,1024); +859 WriteOpers(dataline); +860 } +861 } +862 return; +863 } +864 } .fi .PP .SS "int ConfigReader::Enumerate (\fBstd::string\fP tag)" @@ -199,14 +199,14 @@ Counts the number of times a given tag appears in the config file. .PP This method counts the number of times a tag appears in a config file, for use where there are several tags of the same kind, e.g. with opers and connect types. It can be used with the index value of \fBConfigReader::ReadValue\fP to loop through all copies of a multiple instance tag. .PP -Definition at line 868 of file modules.cpp. +Definition at line 867 of file modules.cpp. .PP References cache, and ServerConfig::EnumConf(). .PP .nf -869 { -870 return Config->EnumConf(cache,tag.c_str()); -871 } +868 { +869 return Config->EnumConf(cache,tag.c_str()); +870 } .fi .PP .SS "int ConfigReader::EnumerateValues (\fBstd::string\fP tag, int index)" @@ -215,14 +215,14 @@ Returns the number of items within a tag. .PP For example if the tag was then this function would return 2. Spaces and newlines both qualify as valid seperators between values. .PP -Definition at line 873 of file modules.cpp. +Definition at line 872 of file modules.cpp. .PP References cache, and ServerConfig::EnumValues(). .PP .nf -874 { -875 return Config->EnumValues(cache, tag.c_str(), index); -876 } +873 { +874 return Config->EnumValues(cache, tag.c_str(), index); +875 } .fi .PP .SS "long ConfigReader::GetError ()" @@ -231,16 +231,16 @@ Returns the last error to occur. .PP Valid errors can be found by looking in \fBmodules.h\fP. Any nonzero value indicates an error condition. A call to \fBGetError()\fP resets the error flag back to 0. .PP -Definition at line 828 of file modules.cpp. +Definition at line 827 of file modules.cpp. .PP References error. .PP .nf -829 { -830 long olderr = this->error; -831 this->error = 0; -832 return olderr; -833 } +828 { +829 long olderr = this->error; +830 this->error = 0; +831 return olderr; +832 } .fi .PP .SS "bool ConfigReader::ReadFlag (\fBstd::string\fP tag, \fBstd::string\fP name, int index)" @@ -249,26 +249,26 @@ Retrieves a boolean value from the config file. .PP This method retrieves a boolean value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. The values '1', 'yes' and 'true' in the config file count as true to ReadFlag, and any other value counts as false. .PP -Definition at line 782 of file modules.cpp. +Definition at line 781 of file modules.cpp. .PP References cache, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf(). .PP .nf -783 { -784 char val[MAXBUF]; -785 char t[MAXBUF]; -786 char n[MAXBUF]; -787 strlcpy(t,tag.c_str(),MAXBUF); -788 strlcpy(n,name.c_str(),MAXBUF); -789 int res = Config->ReadConf(cache,t,n,index,val); -790 if (!res) -791 { -792 this->error = CONF_VALUE_NOT_FOUND; -793 return false; -794 } -795 std::string s = val; -796 return ((s == 'yes') || (s == 'YES') || (s == 'true') || (s == 'TRUE') || (s == '1')); -797 } +782 { +783 char val[MAXBUF]; +784 char t[MAXBUF]; +785 char n[MAXBUF]; +786 strlcpy(t,tag.c_str(),MAXBUF); +787 strlcpy(n,name.c_str(),MAXBUF); +788 int res = Config->ReadConf(cache,t,n,index,val); +789 if (!res) +790 { +791 this->error = CONF_VALUE_NOT_FOUND; +792 return false; +793 } +794 std::string s = val; +795 return ((s == 'yes') || (s == 'YES') || (s == 'true') || (s == 'TRUE') || (s == '1')); +796 } .fi .PP .SS "long ConfigReader::ReadInteger (\fBstd::string\fP tag, \fBstd::string\fP name, int index, bool needs_unsigned)" @@ -277,38 +277,38 @@ Retrieves an integer value from the config file. .PP This method retrieves an integer value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. Any invalid integer values in the tag will cause the objects error value to be set, and any call to \fBGetError()\fP will return CONF_INVALID_NUMBER to be returned. needs_unsigned is set if the number must be unsigned. If a signed number is placed into a tag which is specified unsigned, 0 will be returned and \fBGetError()\fP will return CONF_NOT_UNSIGNED .PP -Definition at line 799 of file modules.cpp. +Definition at line 798 of file modules.cpp. .PP References cache, CONF_NOT_A_NUMBER, CONF_NOT_UNSIGNED, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf(). .PP .nf -800 { -801 char val[MAXBUF]; -802 char t[MAXBUF]; -803 char n[MAXBUF]; -804 strlcpy(t,tag.c_str(),MAXBUF); -805 strlcpy(n,name.c_str(),MAXBUF); -806 int res = Config->ReadConf(cache,t,n,index,val); -807 if (!res) -808 { -809 this->error = CONF_VALUE_NOT_FOUND; -810 return 0; -811 } -812 for (unsigned int i = 0; i < strlen(val); i++) -813 { -814 if (!isdigit(val[i])) -815 { -816 this->error = CONF_NOT_A_NUMBER; -817 return 0; -818 } -819 } -820 if ((needs_unsigned) && (atoi(val)<0)) -821 { -822 this->error = CONF_NOT_UNSIGNED; -823 return 0; -824 } -825 return atoi(val); -826 } +799 { +800 char val[MAXBUF]; +801 char t[MAXBUF]; +802 char n[MAXBUF]; +803 strlcpy(t,tag.c_str(),MAXBUF); +804 strlcpy(n,name.c_str(),MAXBUF); +805 int res = Config->ReadConf(cache,t,n,index,val); +806 if (!res) +807 { +808 this->error = CONF_VALUE_NOT_FOUND; +809 return 0; +810 } +811 for (unsigned int i = 0; i < strlen(val); i++) +812 { +813 if (!isdigit(val[i])) +814 { +815 this->error = CONF_NOT_A_NUMBER; +816 return 0; +817 } +818 } +819 if ((needs_unsigned) && (atoi(val)<0)) +820 { +821 this->error = CONF_NOT_UNSIGNED; +822 return 0; +823 } +824 return atoi(val); +825 } .fi .PP .SS "\fBstd::string\fP ConfigReader::ReadValue (\fBstd::string\fP tag, \fBstd::string\fP name, int index)" @@ -317,25 +317,25 @@ Retrieves a value from the config file. .PP This method retrieves a value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. .PP -Definition at line 766 of file modules.cpp. +Definition at line 765 of file modules.cpp. .PP References cache, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf(). .PP .nf -767 { -768 char val[MAXBUF]; -769 char t[MAXBUF]; -770 char n[MAXBUF]; -771 strlcpy(t,tag.c_str(),MAXBUF); -772 strlcpy(n,name.c_str(),MAXBUF); -773 int res = Config->ReadConf(cache,t,n,index,val); -774 if (!res) -775 { -776 this->error = CONF_VALUE_NOT_FOUND; -777 return ''; -778 } -779 return val; -780 } +766 { +767 char val[MAXBUF]; +768 char t[MAXBUF]; +769 char n[MAXBUF]; +770 strlcpy(t,tag.c_str(),MAXBUF); +771 strlcpy(n,name.c_str(),MAXBUF); +772 int res = Config->ReadConf(cache,t,n,index,val); +773 if (!res) +774 { +775 this->error = CONF_VALUE_NOT_FOUND; +776 return ''; +777 } +778 return val; +779 } .fi .PP .SS "bool ConfigReader::Verify ()" @@ -344,14 +344,14 @@ Returns true if a config file is valid. .PP This method is partially implemented and will only return false if the config file does not exist or could not be opened. .PP -Definition at line 878 of file modules.cpp. +Definition at line 877 of file modules.cpp. .PP References readerror. .PP .nf -879 { -880 return this->readerror; -881 } +878 { +879 return this->readerror; +880 } .fi .PP .SH "Member Data Documentation" @@ -362,24 +362,24 @@ The contents of the configuration file This protected member should never be acc .PP It will contain a pointer to the configuration file data with unneeded data (such as comments) stripped from it. .PP -Definition at line 1540 of file modules.h. +Definition at line 1558 of file modules.h. .PP Referenced by ConfigReader(), Enumerate(), EnumerateValues(), ReadFlag(), ReadInteger(), ReadValue(), and ~ConfigReader(). .SS "long \fBConfigReader::error\fP\fC [protected]\fP" .PP -Definition at line 1545 of file modules.h. +Definition at line 1563 of file modules.h. .PP Referenced by ConfigReader(), GetError(), ReadFlag(), ReadInteger(), and ReadValue(). .SS "std::stringstream* \fBConfigReader::errorlog\fP\fC [protected]\fP" .PP -Definition at line 1541 of file modules.h. +Definition at line 1559 of file modules.h. .PP Referenced by ConfigReader(), DumpErrors(), and ~ConfigReader(). .SS "bool \fBConfigReader::readerror\fP\fC [protected]\fP" .PP Used to store errors. .PP -Definition at line 1544 of file modules.h. +Definition at line 1562 of file modules.h. .PP Referenced by ConfigReader(), and Verify(). diff --git a/docs/man/man3/ConnectClass.3 b/docs/man/man3/ConnectClass.3 index 25d462925..fc7128778 100644 --- a/docs/man/man3/ConnectClass.3 +++ b/docs/man/man3/ConnectClass.3 @@ -1,4 +1,4 @@ -.TH "ConnectClass" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ConnectClass" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -63,26 +63,26 @@ Inherits \fBclassbase\fP. .PP Holds information relevent to and tags in the config file. .PP -Definition at line 48 of file users.h. +Definition at line 52 of file users.h. .SH "Constructor & Destructor Documentation" .PP .SS "ConnectClass::ConnectClass ()\fC [inline]\fP" .PP -Definition at line 82 of file users.h. +Definition at line 86 of file users.h. .PP References flood, host, pass, pingtime, recvqmax, registration_timeout, sendqmax, and threshold. .PP .nf -83 { -84 registration_timeout = 0; -85 flood = 0; -86 pingtime = 0; -87 threshold = 0; -88 sendqmax = 0; -89 recvqmax = 0; -90 strlcpy(host,'',MAXBUF); -91 strlcpy(pass,'',MAXBUF); -92 } +87 { +88 registration_timeout = 0; +89 flood = 0; +90 pingtime = 0; +91 threshold = 0; +92 sendqmax = 0; +93 recvqmax = 0; +94 strlcpy(host,'',MAXBUF); +95 strlcpy(pass,'',MAXBUF); +96 } .fi .PP .SH "Member Data Documentation" @@ -91,63 +91,63 @@ References flood, host, pass, pingtime, recvqmax, registration_timeout, sendqmax .PP Number of lines in buffer before excess flood is triggered. .PP -Definition at line 59 of file users.h. +Definition at line 63 of file users.h. .PP Referenced by ConnectClass(). .SS "char \fBConnectClass::host\fP[MAXBUF]" .PP Host mask for this line. .PP -Definition at line 62 of file users.h. +Definition at line 66 of file users.h. .PP Referenced by ConnectClass(). .SS "char \fBConnectClass::pass\fP[MAXBUF]" .PP (Optional) Password for this line .PP -Definition at line 68 of file users.h. +Definition at line 72 of file users.h. .PP Referenced by ConnectClass(). .SS "int \fBConnectClass::pingtime\fP" .PP Number of seconds between pings for this line. .PP -Definition at line 65 of file users.h. +Definition at line 69 of file users.h. .PP Referenced by ConnectClass(). .SS "long \fBConnectClass::recvqmax\fP" .PP Maximum size of recvq for users in this class (bytes). .PP -Definition at line 80 of file users.h. +Definition at line 84 of file users.h. .PP Referenced by ConnectClass(). .SS "int \fBConnectClass::registration_timeout\fP" .PP Max time to register the connection in seconds. .PP -Definition at line 56 of file users.h. +Definition at line 60 of file users.h. .PP Referenced by ConnectClass(). .SS "long \fBConnectClass::sendqmax\fP" .PP Maximum size of sendq for users in this class (bytes). .PP -Definition at line 76 of file users.h. +Definition at line 80 of file users.h. .PP Referenced by ConnectClass(). .SS "int \fBConnectClass::threshold\fP" .PP Threshold value for flood disconnect. .PP -Definition at line 72 of file users.h. +Definition at line 76 of file users.h. .PP Referenced by ConnectClass(). .SS "char \fBConnectClass::type\fP" .PP Type of line, either CC_ALLOW or CC_DENY. .PP -Definition at line 53 of file users.h. +Definition at line 57 of file users.h. .SH "Author" .PP diff --git a/docs/man/man3/CullItem.3 b/docs/man/man3/CullItem.3 index 5a226c4c9..8877d91ac 100644 --- a/docs/man/man3/CullItem.3 +++ b/docs/man/man3/CullItem.3 @@ -1,4 +1,4 @@ -.TH "CullItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "CullItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/CullList.3 b/docs/man/man3/CullList.3 index 0d8444d53..88bba01ab 100644 --- a/docs/man/man3/CullList.3 +++ b/docs/man/man3/CullList.3 @@ -1,4 +1,4 @@ -.TH "CullList" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "CullList" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/DNS.3 b/docs/man/man3/DNS.3 index cd8856bc2..2b5c3617e 100644 --- a/docs/man/man3/DNS.3 +++ b/docs/man/man3/DNS.3 @@ -1,4 +1,4 @@ -.TH "DNS" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "DNS" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/ELine.3 b/docs/man/man3/ELine.3 index f16fee5ec..0453224ce 100644 --- a/docs/man/man3/ELine.3 +++ b/docs/man/man3/ELine.3 @@ -1,4 +1,4 @@ -.TH "ELine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ELine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/Event.3 b/docs/man/man3/Event.3 index 42c9851da..7ce4188e5 100644 --- a/docs/man/man3/Event.3 +++ b/docs/man/man3/Event.3 @@ -1,4 +1,4 @@ -.TH "Event" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "Event" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -58,17 +58,17 @@ The Event class is a unicast message directed at all modules. When the class is properly instantiated it may be sent to all modules using the \fBSend()\fP method, which will trigger the OnEvent method in all modules passing the object as its parameter. .PP -Definition at line 197 of file modules.h. +Definition at line 215 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "Event::Event (char * anydata, \fBModule\fP * src, \fBstd::string\fP eventid)" .PP Create a new Event. .PP -Definition at line 194 of file modules.cpp. +Definition at line 193 of file modules.cpp. .PP .nf -194 : data(anydata), source(src), id(eventid) { }; +193 : data(anydata), source(src), id(eventid) { }; .fi .PP .SH "Member Function Documentation" @@ -77,14 +77,14 @@ Definition at line 194 of file modules.cpp. .PP Get the Event data. .PP -Definition at line 196 of file modules.cpp. +Definition at line 195 of file modules.cpp. .PP References data. .PP .nf -197 { -198 return this->data; -199 } +196 { +197 return this->data; +198 } .fi .PP .SS "\fBstd::string\fP Event::GetEventID ()" @@ -93,28 +93,28 @@ Get the event ID. .PP Use this to determine the event type for safe casting of the data .PP -Definition at line 212 of file modules.cpp. +Definition at line 211 of file modules.cpp. .PP References id. .PP .nf -213 { -214 return this->id; -215 } +212 { +213 return this->id; +214 } .fi .PP .SS "\fBModule\fP * Event::GetSource ()" .PP Get the event Source. .PP -Definition at line 201 of file modules.cpp. +Definition at line 200 of file modules.cpp. .PP References source. .PP .nf -202 { -203 return this->source; -204 } +201 { +202 return this->source; +203 } .fi .PP .SS "char * Event::Send ()\fC [virtual]\fP" @@ -125,15 +125,15 @@ The return result of an \fBEvent::Send()\fP will always be NULL as no replies ar .PP Implements \fBModuleMessage\fP. .PP -Definition at line 206 of file modules.cpp. +Definition at line 205 of file modules.cpp. .PP References FOREACH_MOD. .PP .nf -207 { -208 FOREACH_MOD OnEvent(this); -209 return NULL; -210 } +206 { +207 FOREACH_MOD OnEvent(this); +208 return NULL; +209 } .fi .PP .SH "Member Data Documentation" @@ -142,7 +142,7 @@ References FOREACH_MOD. .PP This member holds a pointer to arbitary data set by the emitter of the message. .PP -Definition at line 202 of file modules.h. +Definition at line 220 of file modules.h. .PP Referenced by GetData(). .SS "\fBstd::string\fP \fBEvent::id\fP\fC [protected]\fP" @@ -151,14 +151,14 @@ The event identifier. .PP This is arbitary text which should be used to distinguish one type of event from another. .PP -Definition at line 211 of file modules.h. +Definition at line 229 of file modules.h. .PP Referenced by GetEventID(). .SS "\fBModule\fP* \fBEvent::source\fP\fC [protected]\fP" .PP This is a pointer to the sender of the message, which can be used to directly trigger events, or to create a reply. .PP -Definition at line 206 of file modules.h. +Definition at line 224 of file modules.h. .PP Referenced by GetSource(). diff --git a/docs/man/man3/ExemptItem.3 b/docs/man/man3/ExemptItem.3 index edf2a56e1..861deec67 100644 --- a/docs/man/man3/ExemptItem.3 +++ b/docs/man/man3/ExemptItem.3 @@ -1,4 +1,4 @@ -.TH "ExemptItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ExemptItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/ExtMode.3 b/docs/man/man3/ExtMode.3 index 688fdef6d..8d172b5da 100644 --- a/docs/man/man3/ExtMode.3 +++ b/docs/man/man3/ExtMode.3 @@ -1,4 +1,4 @@ -.TH "ExtMode" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ExtMode" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -47,37 +47,37 @@ Holds an extended mode's details. Used internally by \fBmodules.cpp\fP .PP -Definition at line 236 of file modules.h. +Definition at line 254 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "ExtMode::ExtMode (char mc, int ty, bool oper, int p_on, int p_off)\fC [inline]\fP" .PP -Definition at line 245 of file modules.h. +Definition at line 263 of file modules.h. .PP .nf -245 : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { }; +263 : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { }; .fi .PP .SH "Member Data Documentation" .PP .SS "bool \fBExtMode::list\fP" .PP -Definition at line 244 of file modules.h. +Definition at line 262 of file modules.h. .SS "char \fBExtMode::modechar\fP" .PP -Definition at line 239 of file modules.h. +Definition at line 257 of file modules.h. .SS "bool \fBExtMode::needsoper\fP" .PP -Definition at line 241 of file modules.h. +Definition at line 259 of file modules.h. .SS "int \fBExtMode::params_when_off\fP" .PP -Definition at line 243 of file modules.h. +Definition at line 261 of file modules.h. .SS "int \fBExtMode::params_when_on\fP" .PP -Definition at line 242 of file modules.h. +Definition at line 260 of file modules.h. .SS "int \fBExtMode::type\fP" .PP -Definition at line 240 of file modules.h. +Definition at line 258 of file modules.h. .SH "Author" .PP diff --git a/docs/man/man3/Extensible.3 b/docs/man/man3/Extensible.3 index ea99cdf6a..25be94035 100644 --- a/docs/man/man3/Extensible.3 +++ b/docs/man/man3/Extensible.3 @@ -1,4 +1,4 @@ -.TH "Extensible" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "Extensible" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -12,7 +12,7 @@ Extensible \- class Extensible is the parent class of many classes such as userr .PP Inherits \fBclassbase\fP. .PP -Inherited by \fBchanrec\fP, \fBcommand_t\fP, and \fBconnection\fP. +Inherited by \fBchanrec\fP, and \fBconnection\fP. .PP .SS "Public Member Functions" diff --git a/docs/man/man3/FileReader.3 b/docs/man/man3/FileReader.3 index 99afbea95..e161908a0 100644 --- a/docs/man/man3/FileReader.3 +++ b/docs/man/man3/FileReader.3 @@ -1,4 +1,4 @@ -.TH "FileReader" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "FileReader" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -57,7 +57,7 @@ Caches a text file into memory and can be used to retrieve lines from it. This class contains methods for read-only manipulation of a text file in memory. Either use the constructor type with one parameter to load a file into memory at construction, or use the LoadFile method to load a file. .PP -Definition at line 1621 of file modules.h. +Definition at line 1639 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "FileReader::FileReader ()" @@ -66,11 +66,11 @@ Default constructor. .PP This method does not load any file into memory, you must use the LoadFile method after constructing the class this way. .PP -Definition at line 891 of file modules.cpp. +Definition at line 890 of file modules.cpp. .PP .nf -892 { -893 } +891 { +892 } .fi .PP .SS "FileReader::FileReader (\fBstd::string\fP filename)" @@ -79,16 +79,16 @@ Secondary constructor. .PP This method initialises the class with a file loaded into it ready for GetLine and and other methods to be called. If the file could not be loaded, \fBFileReader::FileSize\fP returns 0. .PP -Definition at line 884 of file modules.cpp. +Definition at line 883 of file modules.cpp. .PP References fc, and readfile(). .PP .nf -885 { -886 file_cache c; -887 readfile(c,filename.c_str()); -888 this->fc = c; -889 } +884 { +885 file_cache c; +886 readfile(c,filename.c_str()); +887 this->fc = c; +888 } .fi .PP .SS "FileReader::~FileReader ()" @@ -97,11 +97,11 @@ Default destructor. .PP This deletes the memory allocated to the file. .PP -Definition at line 903 of file modules.cpp. +Definition at line 902 of file modules.cpp. .PP .nf -904 { -905 } +903 { +904 } .fi .PP .SH "Member Function Documentation" @@ -110,21 +110,21 @@ Definition at line 903 of file modules.cpp. .PP Returns true if the file exists This function will return false if the file could not be opened. .PP -Definition at line 907 of file modules.cpp. +Definition at line 906 of file modules.cpp. .PP References fc. .PP .nf -908 { -909 if (fc.size() == 0) -910 { -911 return(false); -912 } -913 else -914 { -915 return(true); -916 } -917 } +907 { +908 if (fc.size() == 0) +909 { +910 return(false); +911 } +912 else +913 { +914 return(true); +915 } +916 } .fi .PP .SS "int FileReader::FileSize ()" @@ -133,14 +133,14 @@ Returns the size of the file in lines. .PP This method returns the number of lines in the read file. If it is 0, no lines have been read into memory, either because the file is empty or it does not exist, or cannot be opened due to permission problems. .PP -Definition at line 926 of file modules.cpp. +Definition at line 925 of file modules.cpp. .PP References fc. .PP .nf -927 { -928 return fc.size(); -929 } +926 { +927 return fc.size(); +928 } .fi .PP .SS "\fBstd::string\fP FileReader::GetLine (int x)" @@ -149,16 +149,16 @@ Retrieve one line from the file. .PP This method retrieves one line from the text file. If an empty non-NULL string is returned, the index was out of bounds, or the line had no data on it. .PP -Definition at line 919 of file modules.cpp. +Definition at line 918 of file modules.cpp. .PP References fc. .PP .nf -920 { -921 if ((x<0) || ((unsigned)x>fc.size())) -922 return ''; -923 return fc[x]; -924 } +919 { +920 if ((x<0) || ((unsigned)x>fc.size())) +921 return ''; +922 return fc[x]; +923 } .fi .PP .SS "void FileReader::LoadFile (\fBstd::string\fP filename)" @@ -167,23 +167,23 @@ Used to load a file. .PP This method loads a file into the class ready for GetLine and and other methods to be called. If the file could not be loaded, \fBFileReader::FileSize\fP returns 0. .PP -Definition at line 895 of file modules.cpp. +Definition at line 894 of file modules.cpp. .PP References fc, and readfile(). .PP .nf -896 { -897 file_cache c; -898 readfile(c,filename.c_str()); -899 this->fc = c; -900 } +895 { +896 file_cache c; +897 readfile(c,filename.c_str()); +898 this->fc = c; +899 } .fi .PP .SH "Member Data Documentation" .PP .SS "\fBfile_cache\fP \fBFileReader::fc\fP\fC [private]\fP" .PP -Definition at line 1623 of file modules.h. +Definition at line 1641 of file modules.h. .PP Referenced by Exists(), FileReader(), FileSize(), GetLine(), and LoadFile(). diff --git a/docs/man/man3/GLine.3 b/docs/man/man3/GLine.3 index 6ef1c742e..83c54ae8a 100644 --- a/docs/man/man3/GLine.3 +++ b/docs/man/man3/GLine.3 @@ -1,4 +1,4 @@ -.TH "GLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "GLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/HostItem.3 b/docs/man/man3/HostItem.3 index 79c256f86..48d8f6d15 100644 --- a/docs/man/man3/HostItem.3 +++ b/docs/man/man3/HostItem.3 @@ -1,4 +1,4 @@ -.TH "HostItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "HostItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/InspIRCd.3 b/docs/man/man3/InspIRCd.3 index 219e539b4..be447b95d 100644 --- a/docs/man/man3/InspIRCd.3 +++ b/docs/man/man3/InspIRCd.3 @@ -1,4 +1,4 @@ -.TH "InspIRCd" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "InspIRCd" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -12,6 +12,9 @@ InspIRCd \- .in +1c .ti -1c +.RI "void \fBMakeLowerMap\fP ()" +.br +.ti -1c .RI "\fBstd::string\fP \fBGetRevision\fP ()" .br .ti -1c @@ -39,6 +42,18 @@ InspIRCd \- .ti -1c .RI "time_t \fBstartup_time\fP" .br +.ti -1c +.RI "\fBModeParser\fP * \fBModeGrok\fP" +.br +.ti -1c +.RI "CommandParser * \fBParser\fP" +.br +.ti -1c +.RI "\fBSocketEngine\fP * \fBSE\fP" +.br +.ti -1c +.RI "\fBserverstats\fP * \fBstats\fP" +.br .in -1c .SS "Private Member Functions" @@ -59,7 +74,7 @@ InspIRCd \- .in -1c .SH "Detailed Description" .PP -Definition at line 95 of file inspircd.h. +Definition at line 99 of file inspircd.h. .SH "Constructor & Destructor Documentation" .PP .SS "InspIRCd::InspIRCd (int argc, char ** argv)" @@ -77,6 +92,8 @@ Definition at line 95 of file inspircd.h. Referenced by Server::GetVersion(). .SS "bool InspIRCd::LoadModule (const char * filename)" .PP +.SS "void InspIRCd::MakeLowerMap ()" +.PP .SS "char* InspIRCd::ModuleError ()" .PP .SS "int InspIRCd::Run ()" @@ -85,12 +102,32 @@ Referenced by Server::GetVersion(). .PP .SH "Member Data Documentation" .PP +.SS "\fBModeParser\fP* \fBInspIRCd::ModeGrok\fP" +.PP +Definition at line 109 of file inspircd.h. +.PP +Referenced by Server::SendMode(). .SS "char \fBInspIRCd::MODERR\fP[MAXBUF]\fC [private]\fP" .PP -Definition at line 99 of file inspircd.h. +Definition at line 103 of file inspircd.h. +.SS "CommandParser* \fBInspIRCd::Parser\fP" +.PP +Definition at line 110 of file inspircd.h. +.PP +Referenced by Server::AddCommand(), Server::CallCommandHandler(), force_nickchange(), and Server::IsValidModuleCommand(). +.SS "\fBSocketEngine\fP* \fBInspIRCd::SE\fP" +.PP +Definition at line 111 of file inspircd.h. +.PP +Referenced by AddClient(), InspSocket::InspSocket(), kill_link(), kill_link_silent(), InspSocket::Poll(), and Server::UserToPseudo(). .SS "time_t \fBInspIRCd::startup_time\fP" .PP -Definition at line 104 of file inspircd.h. +Definition at line 108 of file inspircd.h. +.SS "\fBserverstats\fP* \fBInspIRCd::stats\fP" +.PP +Definition at line 112 of file inspircd.h. +.PP +Referenced by force_nickchange(), and FullConnectUser(). .SH "Author" .PP diff --git a/docs/man/man3/InspSocket.3 b/docs/man/man3/InspSocket.3 index d2e99e555..9ba5cbdfd 100644 --- a/docs/man/man3/InspSocket.3 +++ b/docs/man/man3/InspSocket.3 @@ -1,4 +1,4 @@ -.TH "InspSocket" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "InspSocket" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -94,6 +94,14 @@ InspSocket \- InspSocket is an extendable socket class which modules can use for .br .RI "\fIThe destructor may implicitly call \fBOnClose()\fP, and will close() and shutdown() the file descriptor used for this socket. \fP" .in -1c +.SS "Private Member Functions" + +.in +1c +.ti -1c +.RI "void \fBFlushWriteBuffer\fP ()" +.br +.RI "\fIFlushes the write buffer. \fP" +.in -1c .SS "Private Attributes" .in +1c @@ -130,10 +138,14 @@ InspSocket \- InspSocket is an extendable socket class which modules can use for .br .RI "\fIThis value is true if the socket has timed out. \fP" .ti -1c -.RI "char \fBibuf\fP [16384]" +.RI "char \fBibuf\fP [65535]" .br .RI "\fISocket input buffer, used by read(). \fP" .ti -1c +.RI "\fBstd::string\fP \fBBuffer\fP" +.br +.RI "\fIThe output buffer for this socket. \fP" +.ti -1c .RI "\fBstd::string\fP \fBIP\fP" .br .RI "\fIThe IP address being connected to stored in string form for easy retrieval by accessors. \fP" @@ -163,14 +175,14 @@ Definition at line 47 of file socket.h. .PP The default constructor does nothing and should not be used. .PP -Definition at line 48 of file socket.cpp. +Definition at line 45 of file socket.cpp. .PP References I_DISCONNECTED, and state. .PP .nf -49 { -50 this->state = I_DISCONNECTED; -51 } +46 { +47 this->state = I_DISCONNECTED; +48 } .fi .PP .SS "InspSocket::InspSocket (int newfd, char * ip)" @@ -179,18 +191,18 @@ This constructor is used to associate an existing connecting with an InspSocket .PP The given file descriptor must be valid, and when initialized, the InspSocket will be set with the given IP address and placed in CONNECTED state. .PP -Definition at line 53 of file socket.cpp. +Definition at line 50 of file socket.cpp. .PP -References SocketEngine::AddFd(), fd, I_CONNECTED, IP, state, and X_ESTAB_MODULE. +References SocketEngine::AddFd(), fd, I_CONNECTED, IP, InspIRCd::SE, state, and X_ESTAB_MODULE. .PP .nf -54 { -55 this->fd = newfd; -56 this->state = I_CONNECTED; -57 this->IP = ip; -58 SE->AddFd(this->fd,true,X_ESTAB_MODULE); -59 socket_ref[this->fd] = this; -60 } +51 { +52 this->fd = newfd; +53 this->state = I_CONNECTED; +54 this->IP = ip; +55 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE); +56 socket_ref[this->fd] = this; +57 } .fi .PP .SS "InspSocket::InspSocket (\fBstd::string\fP host, int port, bool listening, unsigned long maxtime)" @@ -210,102 +222,102 @@ This constructor is used to create a new socket, either listening for connection .PP .PP -Definition at line 62 of file socket.cpp. +Definition at line 59 of file socket.cpp. .PP -References SocketEngine::AddFd(), addr, addy, BindSocket(), Close(), DEBUG, ERROR, fd, I_CONNECTING, I_ERR_BIND, I_ERR_CONNECT, I_ERR_SOCKET, I_ERROR, I_LISTENING, IP, log(), OnError(), OpenTCPSocket(), state, timeout, timeout_end, and X_ESTAB_MODULE. +References SocketEngine::AddFd(), addr, addy, BindSocket(), Close(), DEBUG, ERROR, fd, I_CONNECTING, I_ERR_BIND, I_ERR_CONNECT, I_ERR_SOCKET, I_ERROR, I_LISTENING, IP, log(), OnError(), OpenTCPSocket(), InspIRCd::SE, state, timeout, timeout_end, and X_ESTAB_MODULE. .PP .nf -63 { -64 if (listening) { -65 if ((this->fd = OpenTCPSocket()) == ERROR) -66 { -67 this->fd = -1; -68 this->state = I_ERROR; -69 this->OnError(I_ERR_SOCKET); -70 log(DEBUG,'OpenTCPSocket() error'); -71 return; -72 } -73 else -74 { -75 if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR) -76 { -77 this->Close(); -78 this->fd = -1; -79 this->state = I_ERROR; -80 this->OnError(I_ERR_BIND); -81 log(DEBUG,'BindSocket() error %s',strerror(errno)); -82 return; -83 } -84 else -85 { -86 this->state = I_LISTENING; -87 SE->AddFd(this->fd,true,X_ESTAB_MODULE); -88 socket_ref[this->fd] = this; -89 log(DEBUG,'New socket now in I_LISTENING state'); -90 return; -91 } -92 } -93 } else { -94 char* ip; -95 this->host = host; -96 hostent* hoste = gethostbyname(host.c_str()); -97 if (!hoste) { -98 ip = (char*)host.c_str(); -99 } else { -100 struct in_addr* ia = (in_addr*)hoste->h_addr; -101 ip = inet_ntoa(*ia); -102 } -103 -104 this->IP = ip; -105 -106 timeout_end = time(NULL)+maxtime; -107 timeout = false; -108 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) -109 { -110 this->state = I_ERROR; -111 this->OnError(I_ERR_SOCKET); -112 return; -113 } -114 this->port = port; -115 inet_aton(ip,&addy); -116 addr.sin_family = AF_INET; -117 addr.sin_addr = addy; -118 addr.sin_port = htons(this->port); -119 -120 int flags; -121 flags = fcntl(this->fd, F_GETFL, 0); -122 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK); -123 -124 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1) -125 { -126 if (errno != EINPROGRESS) -127 { -128 this->Close(); -129 this->OnError(I_ERR_CONNECT); -130 this->state = I_ERROR; -131 return; -132 } -133 } -134 this->state = I_CONNECTING; -135 SE->AddFd(this->fd,false,X_ESTAB_MODULE); -136 socket_ref[this->fd] = this; -137 return; -138 } -139 } +60 { +61 if (listening) { +62 if ((this->fd = OpenTCPSocket()) == ERROR) +63 { +64 this->fd = -1; +65 this->state = I_ERROR; +66 this->OnError(I_ERR_SOCKET); +67 log(DEBUG,'OpenTCPSocket() error'); +68 return; +69 } +70 else +71 { +72 if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR) +73 { +74 this->Close(); +75 this->fd = -1; +76 this->state = I_ERROR; +77 this->OnError(I_ERR_BIND); +78 log(DEBUG,'BindSocket() error %s',strerror(errno)); +79 return; +80 } +81 else +82 { +83 this->state = I_LISTENING; +84 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE); +85 socket_ref[this->fd] = this; +86 log(DEBUG,'New socket now in I_LISTENING state'); +87 return; +88 } +89 } +90 } else { +91 char* ip; +92 this->host = host; +93 hostent* hoste = gethostbyname(host.c_str()); +94 if (!hoste) { +95 ip = (char*)host.c_str(); +96 } else { +97 struct in_addr* ia = (in_addr*)hoste->h_addr; +98 ip = inet_ntoa(*ia); +99 } +100 +101 this->IP = ip; +102 +103 timeout_end = time(NULL)+maxtime; +104 timeout = false; +105 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) +106 { +107 this->state = I_ERROR; +108 this->OnError(I_ERR_SOCKET); +109 return; +110 } +111 this->port = port; +112 inet_aton(ip,&addy); +113 addr.sin_family = AF_INET; +114 addr.sin_addr = addy; +115 addr.sin_port = htons(this->port); +116 +117 int flags; +118 flags = fcntl(this->fd, F_GETFL, 0); +119 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK); +120 +121 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1) +122 { +123 if (errno != EINPROGRESS) +124 { +125 this->Close(); +126 this->OnError(I_ERR_CONNECT); +127 this->state = I_ERROR; +128 return; +129 } +130 } +131 this->state = I_CONNECTING; +132 ServerInstance->SE->AddFd(this->fd,false,X_ESTAB_MODULE); +133 socket_ref[this->fd] = this; +134 return; +135 } +136 } .fi .PP .SS "InspSocket::~InspSocket ()\fC [virtual]\fP" .PP The destructor may implicitly call \fBOnClose()\fP, and will close() and shutdown() the file descriptor used for this socket. .PP -Definition at line 272 of file socket.cpp. +Definition at line 271 of file socket.cpp. .PP References Close(). .PP .nf -273 { -274 this->Close(); -275 } +272 { +273 this->Close(); +274 } .fi .PP .SH "Member Function Documentation" @@ -314,65 +326,92 @@ References Close(). .PP This method causes the socket to close, and may also be triggered by other methods such as OnTimeout and OnError. .PP -Definition at line 141 of file socket.cpp. +Definition at line 138 of file socket.cpp. .PP References fd, and OnClose(). .PP Referenced by InspSocket(), and ~InspSocket(). .PP .nf -142 { -143 if (this->fd != -1) -144 { -145 this->OnClose(); -146 shutdown(this->fd,2); -147 close(this->fd); -148 socket_ref[this->fd] = NULL; -149 this->fd = -1; -150 } -151 } +139 { +140 if (this->fd != -1) +141 { +142 this->OnClose(); +143 shutdown(this->fd,2); +144 close(this->fd); +145 socket_ref[this->fd] = NULL; +146 this->fd = -1; +147 } +148 } +.fi +.PP +.SS "void InspSocket::FlushWriteBuffer ()\fC [private]\fP" +.PP +Flushes the write buffer. +.PP +Definition at line 181 of file socket.cpp. +.PP +References Buffer. +.PP +Referenced by Timeout(), and Write(). +.PP +.nf +182 { +183 int result = 0; +184 if (this->Buffer.length()) +185 { +186 result = send(this->fd,this->Buffer.c_str(),this->Buffer.length(),0); +187 if (result > 0) +188 { +189 /* If we wrote some, advance the buffer forwards */ +190 char* n = (char*)this->Buffer.c_str(); +191 n += result; +192 this->Buffer = n; +193 } +194 } +195 } .fi .PP .SS "int InspSocket::GetFd ()" .PP This method returns the socket's file descriptor as assigned by the operating system, or -1 if no descriptor has been assigned. .PP -Definition at line 259 of file socket.cpp. +Definition at line 258 of file socket.cpp. .PP References fd. .PP .nf -260 { -261 return this->fd; -262 } +259 { +260 return this->fd; +261 } .fi .PP .SS "\fBstd::string\fP InspSocket::GetIP ()" .PP Returns the IP address associated with this connection, or an empty string if no IP address exists. .PP -Definition at line 153 of file socket.cpp. +Definition at line 150 of file socket.cpp. .PP References IP. .PP .nf -154 { -155 return this->IP; -156 } +151 { +152 return this->IP; +153 } .fi .PP .SS "\fBInspSocketState\fP InspSocket::GetState ()" .PP Returns the current socket state. .PP -Definition at line 254 of file socket.cpp. +Definition at line 253 of file socket.cpp. .PP References state. .PP .nf -255 { -256 return this->state; -257 } +254 { +255 return this->state; +256 } .fi .PP .SS "void InspSocket::OnClose ()\fC [virtual]\fP" @@ -381,12 +420,12 @@ Whenever close() is called, \fBOnClose()\fP will be called first. .PP Please note that this means OnClose will be called alongside \fBOnError()\fP, \fBOnTimeout()\fP, and \fBClose()\fP, and also when cancelling a listening socket by calling the destructor indirectly. .PP -Definition at line 270 of file socket.cpp. +Definition at line 269 of file socket.cpp. .PP Referenced by Close(). .PP .nf -270 { return; } +269 { return; } .fi .PP .SS "bool InspSocket::OnConnected ()\fC [virtual]\fP" @@ -400,12 +439,12 @@ false to abort the connection, true to continue .PP .PP -Definition at line 264 of file socket.cpp. +Definition at line 263 of file socket.cpp. .PP Referenced by Poll(). .PP .nf -264 { return true; } +263 { return true; } .fi .PP .SS "bool InspSocket::OnDataReady ()\fC [virtual]\fP" @@ -421,22 +460,22 @@ false to close the socket .PP .PP -Definition at line 268 of file socket.cpp. +Definition at line 267 of file socket.cpp. .PP Referenced by Poll(). .PP .nf -268 { return true; } +267 { return true; } .fi .PP .SS "int InspSocket::OnDisconnect ()\fC [virtual]\fP" .PP When an established connection is terminated, the OnDisconnect method is triggered. .PP -Definition at line 266 of file socket.cpp. +Definition at line 265 of file socket.cpp. .PP .nf -266 { return 0; } +265 { return 0; } .fi .PP .SS "void InspSocket::OnError (\fBInspSocketError\fP e)\fC [virtual]\fP" @@ -452,12 +491,12 @@ A closed socket in itself is not an error, however errors also generate close ev .PP .PP -Definition at line 265 of file socket.cpp. +Definition at line 264 of file socket.cpp. .PP Referenced by InspSocket(), and Timeout(). .PP .nf -265 { return; } +264 { return; } .fi .PP .SS "int InspSocket::OnIncomingConnection (int newfd, char * ip)\fC [virtual]\fP" @@ -470,12 +509,12 @@ MySocket* newsocket = new MySocket(newfd,ip); .PP Once you have done this, you can then associate the new socket with the core using \fBServer::AddSocket()\fP. .PP -Definition at line 267 of file socket.cpp. +Definition at line 266 of file socket.cpp. .PP Referenced by Poll(). .PP .nf -267 { return 0; } +266 { return 0; } .fi .PP .SS "void InspSocket::OnTimeout ()\fC [virtual]\fP" @@ -484,12 +523,12 @@ When an outbound connection fails, and the attempt times out, you will receive t .PP The mthod will trigger once maxtime secons are reached (as given in the constructor) just before the socket's descriptor is closed. .PP -Definition at line 269 of file socket.cpp. +Definition at line 268 of file socket.cpp. .PP Referenced by Timeout(). .PP .nf -269 { return; } +268 { return; } .fi .PP .SS "bool InspSocket::Poll ()" @@ -498,64 +537,64 @@ Only the core should call this function. .PP When called, it is assumed the socket is ready to read data, and the method call routes the event to the various methods of InspSocket for you to handle. This can also cause the socket's state to change. .PP -Definition at line 217 of file socket.cpp. +Definition at line 216 of file socket.cpp. .PP -References SocketEngine::AddFd(), client, SocketEngine::DelFd(), I_CONNECTED, I_CONNECTING, I_LISTENING, length, OnConnected(), OnDataReady(), OnIncomingConnection(), SetState(), and X_ESTAB_MODULE. +References SocketEngine::AddFd(), client, SocketEngine::DelFd(), I_CONNECTED, I_CONNECTING, I_LISTENING, length, OnConnected(), OnDataReady(), OnIncomingConnection(), InspIRCd::SE, SetState(), and X_ESTAB_MODULE. .PP .nf -218 { -219 int incoming = -1; -220 -221 switch (this->state) -222 { -223 case I_CONNECTING: -224 this->SetState(I_CONNECTED); -225 /* Our socket was in write-state, so delete it and re-add it -226 * in read-state. -227 */ -228 SE->DelFd(this->fd); -229 SE->AddFd(this->fd,true,X_ESTAB_MODULE); -230 return this->OnConnected(); -231 break; -232 case I_LISTENING: -233 length = sizeof (client); -234 incoming = accept (this->fd, (sockaddr*)&client,&length); -235 this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr)); -236 return true; -237 break; -238 case I_CONNECTED: -239 return this->OnDataReady(); -240 break; -241 default: -242 break; -243 } -244 -245 return true; -246 } +217 { +218 int incoming = -1; +219 +220 switch (this->state) +221 { +222 case I_CONNECTING: +223 this->SetState(I_CONNECTED); +224 /* Our socket was in write-state, so delete it and re-add it +225 * in read-state. +226 */ +227 ServerInstance->SE->DelFd(this->fd); +228 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE); +229 return this->OnConnected(); +230 break; +231 case I_LISTENING: +232 length = sizeof (client); +233 incoming = accept (this->fd, (sockaddr*)&client,&length); +234 this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr)); +235 return true; +236 break; +237 case I_CONNECTED: +238 return this->OnDataReady(); +239 break; +240 default: +241 break; +242 } +243 +244 return true; +245 } .fi .PP .SS "char * InspSocket::Read ()\fC [virtual]\fP" .PP Reads all pending bytes from the socket into a char* array which can be up to 16 kilobytes in length. .PP -Definition at line 158 of file socket.cpp. +Definition at line 155 of file socket.cpp. .PP References DEBUG, ibuf, and log(). .PP .nf -159 { -160 int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0); -161 if (n > 0) -162 { -163 ibuf[n] = 0; -164 return ibuf; -165 } -166 else -167 { -168 log(DEBUG,'EOF or error on socket'); -169 return NULL; -170 } -171 } +156 { +157 int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0); +158 if (n > 0) +159 { +160 ibuf[n] = 0; +161 return ibuf; +162 } +163 else +164 { +165 log(DEBUG,'EOF or error on socket'); +166 return NULL; +167 } +168 } .fi .PP .SS "void InspSocket::SetState (\fBInspSocketState\fP s)" @@ -564,17 +603,17 @@ Changes the socket's state. .PP The core uses this to change socket states, and you should not call it directly. .PP -Definition at line 248 of file socket.cpp. +Definition at line 247 of file socket.cpp. .PP References DEBUG, log(), and state. .PP Referenced by Poll(). .PP .nf -249 { -250 log(DEBUG,'Socket state change'); -251 this->state = s; -252 } +248 { +249 log(DEBUG,'Socket state change'); +250 this->state = s; +251 } .fi .PP .SS "bool InspSocket::Timeout (time_t current)" @@ -588,26 +627,28 @@ true if timed out, false if not timed out .PP .PP -Definition at line 200 of file socket.cpp. +Definition at line 197 of file socket.cpp. .PP -References I_CONNECTING, I_ERR_TIMEOUT, I_ERROR, OnError(), OnTimeout(), state, timeout, and timeout_end. +References FlushWriteBuffer(), I_CONNECTING, I_ERR_TIMEOUT, I_ERROR, OnError(), OnTimeout(), state, timeout, and timeout_end. .PP .nf -201 { -202 if ((this->state == I_CONNECTING) && (current > timeout_end)) -203 { -204 // for non-listening sockets, the timeout can occur -205 // which causes termination of the connection after -206 // the given number of seconds without a successful -207 // connection. -208 this->OnTimeout(); -209 this->OnError(I_ERR_TIMEOUT); -210 timeout = true; -211 this->state = I_ERROR; -212 return true; -213 } -214 return false; -215 } +198 { +199 if ((this->state == I_CONNECTING) && (current > timeout_end)) +200 { +201 // for non-listening sockets, the timeout can occur +202 // which causes termination of the connection after +203 // the given number of seconds without a successful +204 // connection. +205 this->OnTimeout(); +206 this->OnError(I_ERR_TIMEOUT); +207 timeout = true; +208 this->state = I_ERROR; +209 return true; +210 } +211 if (this->Buffer.length()) +212 this->FlushWriteBuffer(); +213 return false; +214 } .fi .PP .SS "int InspSocket::Write (\fBstd::string\fP data)\fC [virtual]\fP" @@ -623,30 +664,16 @@ No carriage returns or linefeeds are appended to the string. .PP .PP -Definition at line 177 of file socket.cpp. +Definition at line 174 of file socket.cpp. +.PP +References Buffer, and FlushWriteBuffer(). .PP .nf -178 { -179 char* d = (char*)data.c_str(); -180 unsigned int written = 0; -181 int n = 0; -182 int s = data.length(); -183 while ((written < data.length()) && (n >= 0)) -184 { -185 n = send(this->fd,d,s,0); -186 if (n > 0) -187 { -188 // If we didnt write everything, advance -189 // the pointers so that when we retry -190 // the next time around the loop, we try -191 // to write what we failed to write before. -192 written += n; -193 s -= n; -194 d += n; -195 } -196 } -197 return written; -198 } +175 { +176 this->Buffer = this->Buffer + data; +177 this->FlushWriteBuffer(); +178 return data.length(); +179 } .fi .PP .SH "Member Data Documentation" @@ -665,11 +692,18 @@ The host being connected to, in in_addr form. Definition at line 84 of file socket.h. .PP Referenced by InspSocket(). +.SS "\fBstd::string\fP \fBInspSocket::Buffer\fP\fC [private]\fP" +.PP +The output buffer for this socket. +.PP +Definition at line 111 of file socket.h. +.PP +Referenced by FlushWriteBuffer(), and Write(). .SS "sockaddr_in \fBInspSocket::client\fP\fC [private]\fP" .PP Client sockaddr structure used by accept(). .PP -Definition at line 119 of file socket.h. +Definition at line 124 of file socket.h. .PP Referenced by Poll(). .SS "int \fBInspSocket::fd\fP\fC [private]\fP" @@ -684,11 +718,11 @@ Referenced by Close(), GetFd(), and InspSocket(). The hostname connected to. .PP Definition at line 59 of file socket.h. -.SS "char \fBInspSocket::ibuf\fP[16384]\fC [private]\fP" +.SS "char \fBInspSocket::ibuf\fP[65535]\fC [private]\fP" .PP Socket input buffer, used by read(). .PP -The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 16k, this buffer is just designed to be temporary storage. space. +The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 64k, this buffer is just designed to be temporary storage. space. .PP Definition at line 106 of file socket.h. .PP @@ -697,14 +731,14 @@ Referenced by Read(). .PP The IP address being connected to stored in string form for easy retrieval by accessors. .PP -Definition at line 113 of file socket.h. +Definition at line 118 of file socket.h. .PP Referenced by GetIP(), and InspSocket(). .SS "socklen_t \fBInspSocket::length\fP\fC [private]\fP" .PP Used by accept() to indicate the sizes of the sockaddr_in structures. .PP -Definition at line 131 of file socket.h. +Definition at line 136 of file socket.h. .PP Referenced by Poll(). .SS "int \fBInspSocket::port\fP\fC [private]\fP" @@ -716,7 +750,7 @@ Definition at line 65 of file socket.h. .PP \fBServer\fP sockaddr structure used by accept(). .PP -Definition at line 125 of file socket.h. +Definition at line 130 of file socket.h. .SS "\fBInspSocketState\fP \fBInspSocket::state\fP\fC [private]\fP" .PP The state for this socket, either listening, connecting, connected or error. diff --git a/docs/man/man3/InviteItem.3 b/docs/man/man3/InviteItem.3 index 213477029..f3b133566 100644 --- a/docs/man/man3/InviteItem.3 +++ b/docs/man/man3/InviteItem.3 @@ -1,4 +1,4 @@ -.TH "InviteItem" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "InviteItem" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/Invited.3 b/docs/man/man3/Invited.3 index 07e201794..dc4b773fd 100644 --- a/docs/man/man3/Invited.3 +++ b/docs/man/man3/Invited.3 @@ -1,4 +1,4 @@ -.TH "Invited" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "Invited" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -16,19 +16,19 @@ Inherits \fBclassbase\fP. .in +1c .ti -1c -.RI "char \fBchannel\fP [CHANMAX]" +.RI "\fBirc::string\fP \fBchannel\fP" .br .in -1c .SH "Detailed Description" .PP Holds a channel name to which a user has been invited. .PP -Definition at line 39 of file users.h. +Definition at line 43 of file users.h. .SH "Member Data Documentation" .PP -.SS "char \fBInvited::channel\fP[CHANMAX]" +.SS "\fBirc::string\fP \fBInvited::channel\fP" .PP -Definition at line 42 of file users.h. +Definition at line 46 of file users.h. .PP Referenced by userrec::InviteTo(). diff --git a/docs/man/man3/KLine.3 b/docs/man/man3/KLine.3 index 195d3a860..213ee19d4 100644 --- a/docs/man/man3/KLine.3 +++ b/docs/man/man3/KLine.3 @@ -1,4 +1,4 @@ -.TH "KLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "KLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/ModeParameter.3 b/docs/man/man3/ModeParameter.3 index 93b0f4381..a1082ec7d 100644 --- a/docs/man/man3/ModeParameter.3 +++ b/docs/man/man3/ModeParameter.3 @@ -1,4 +1,4 @@ -.TH "ModeParameter" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ModeParameter" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/Module.3 b/docs/man/man3/Module.3 index 3800b0172..6c9e4de9b 100644 --- a/docs/man/man3/Module.3 +++ b/docs/man/man3/Module.3 @@ -1,4 +1,4 @@ -.TH "Module" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "Module" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -340,7 +340,7 @@ Base class for all \fBInspIRCd\fP modules This class is the base class for \fBIn All modules must inherit from this class, its methods will be called when irc server events occur. class inherited from module must be instantiated by the \fBModuleFactory\fP class (see relevent section) for the plugin to be initialised. .PP -Definition at line 254 of file modules.h. +Definition at line 272 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "Module::Module (\fBServer\fP * Me)" @@ -354,20 +354,20 @@ Default constructor Creates a module class. .PP .PP -Definition at line 220 of file modules.cpp. +Definition at line 219 of file modules.cpp. .PP .nf -220 { } +219 { } .fi .PP .SS "Module::~Module ()\fC [virtual]\fP" .PP Default destructor destroys a module class. .PP -Definition at line 221 of file modules.cpp. +Definition at line 220 of file modules.cpp. .PP .nf -221 { } +220 { } .fi .PP .SH "Member Function Documentation" @@ -378,12 +378,12 @@ Returns the version number of a Module. .PP The method should return a \fBVersion\fP object with its version information assigned via \fBVersion::Version\fP .PP -Definition at line 232 of file modules.cpp. +Definition at line 231 of file modules.cpp. .PP References VF_VENDOR. .PP .nf -232 { return Version(1,0,0,0,VF_VENDOR); } +231 { return Version(1,0,0,0,VF_VENDOR); } .fi .PP .SS "void Module::On005Numeric (\fBstd::string\fP & output)\fC [virtual]\fP" @@ -399,10 +399,10 @@ The module should modify the 005 numeric if needed to indicate its features. .PP .PP -Definition at line 242 of file modules.cpp. +Definition at line 241 of file modules.cpp. .PP .nf -242 { }; +241 { }; .fi .PP .SS "int Module::OnAccessCheck (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBchanrec\fP * channel, int access_type)\fC [virtual]\fP" @@ -446,12 +446,12 @@ This function is called before many functions which check a users status on a ch .PP .PP -Definition at line 241 of file modules.cpp. +Definition at line 240 of file modules.cpp. .PP References ACR_DEFAULT. .PP .nf -241 { return ACR_DEFAULT; }; +240 { return ACR_DEFAULT; }; .fi .PP .SS "int Module::OnAddBan (\fBuserrec\fP * source, \fBchanrec\fP * channel, \fBstd::string\fP banmask)\fC [virtual]\fP" @@ -476,10 +476,10 @@ Return a non-zero value to 'eat' the mode change and prevent the ban from being .PP .PP -Definition at line 267 of file modules.cpp. +Definition at line 266 of file modules.cpp. .PP .nf -267 { return 0; }; +266 { return 0; }; .fi .PP .SS "void Module::OnAddELine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP" @@ -501,10 +501,10 @@ This method is triggered after the line is added. .PP .PP -Definition at line 293 of file modules.cpp. +Definition at line 292 of file modules.cpp. .PP .nf -293 { }; +292 { }; .fi .PP .SS "void Module::OnAddGLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP" @@ -526,10 +526,10 @@ This method is triggered after the line is added. .PP .PP -Definition at line 289 of file modules.cpp. +Definition at line 288 of file modules.cpp. .PP .nf -289 { }; +288 { }; .fi .PP .SS "void Module::OnAddKLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP" @@ -551,10 +551,10 @@ This method is triggered after the line is added. .PP .PP -Definition at line 291 of file modules.cpp. +Definition at line 290 of file modules.cpp. .PP .nf -291 { }; +290 { }; .fi .PP .SS "void Module::OnAddQLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP nickmask)\fC [virtual]\fP" @@ -576,10 +576,10 @@ This method is triggered after the line is added. .PP .PP -Definition at line 292 of file modules.cpp. +Definition at line 291 of file modules.cpp. .PP .nf -292 { }; +291 { }; .fi .PP .SS "void Module::OnAddZLine (long duration, \fBuserrec\fP * source, \fBstd::string\fP reason, \fBstd::string\fP ipmask)\fC [virtual]\fP" @@ -601,10 +601,10 @@ This method is triggered after the line is added. .PP .PP -Definition at line 290 of file modules.cpp. +Definition at line 289 of file modules.cpp. .PP .nf -290 { }; +289 { }; .fi .PP .SS "void Module::OnBackgroundTimer (time_t curtime)\fC [virtual]\fP" @@ -620,10 +620,10 @@ This timer can be used to control timed features. Its period is not accurate eno .PP .PP -Definition at line 246 of file modules.cpp. +Definition at line 245 of file modules.cpp. .PP .nf -246 { }; +245 { }; .fi .PP .SS "void Module::OnChangeHost (\fBuserrec\fP * user, \fBstd::string\fP newhost)\fC [virtual]\fP" @@ -641,10 +641,10 @@ This event triggers after the host has been set. .PP .PP -Definition at line 287 of file modules.cpp. +Definition at line 286 of file modules.cpp. .PP .nf -287 { }; +286 { }; .fi .PP .SS "int Module::OnChangeLocalUserGECOS (\fBuserrec\fP * user, \fBstd::string\fP newhost)\fC [virtual]\fP" @@ -667,10 +667,10 @@ return 1 to deny the name change, or 0 to allow it. .PP .PP -Definition at line 260 of file modules.cpp. +Definition at line 259 of file modules.cpp. .PP .nf -260 { return 0; }; +259 { return 0; }; .fi .PP .SS "int Module::OnChangeLocalUserHost (\fBuserrec\fP * user, \fBstd::string\fP newhost)\fC [virtual]\fP" @@ -693,10 +693,10 @@ Return 1 to deny the host change, or 0 to allow it. .PP .PP -Definition at line 259 of file modules.cpp. +Definition at line 258 of file modules.cpp. .PP .nf -259 { return 0; }; +258 { return 0; }; .fi .PP .SS "void Module::OnChangeName (\fBuserrec\fP * user, \fBstd::string\fP gecos)\fC [virtual]\fP" @@ -714,10 +714,10 @@ This event triggers after the name has been set. .PP .PP -Definition at line 288 of file modules.cpp. +Definition at line 287 of file modules.cpp. .PP .nf -288 { }; +287 { }; .fi .PP .SS "int Module::OnCheckBan (\fBuserrec\fP * user, \fBchanrec\fP * chan)\fC [virtual]\fP" @@ -740,10 +740,10 @@ This method will always be called for each join, wether or not the user actually .PP .PP -Definition at line 257 of file modules.cpp. +Definition at line 256 of file modules.cpp. .PP .nf -257 { return 0; }; +256 { return 0; }; .fi .PP .SS "int Module::OnCheckInvite (\fBuserrec\fP * user, \fBchanrec\fP * chan)\fC [virtual]\fP" @@ -766,10 +766,10 @@ This method will always be called for each join, wether or not the channel is ac .PP .PP -Definition at line 254 of file modules.cpp. +Definition at line 253 of file modules.cpp. .PP .nf -254 { return 0; }; +253 { return 0; }; .fi .PP .SS "int Module::OnCheckKey (\fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP keygiven)\fC [virtual]\fP" @@ -792,10 +792,10 @@ This method will always be called for each join, wether or not the channel is ac .PP .PP -Definition at line 255 of file modules.cpp. +Definition at line 254 of file modules.cpp. .PP .nf -255 { return 0; }; +254 { return 0; }; .fi .PP .SS "int Module::OnCheckLimit (\fBuserrec\fP * user, \fBchanrec\fP * chan)\fC [virtual]\fP" @@ -818,10 +818,10 @@ This method will always be called for each join, wether or not the channel is ac .PP .PP -Definition at line 256 of file modules.cpp. +Definition at line 255 of file modules.cpp. .PP .nf -256 { return 0; }; +255 { return 0; }; .fi .PP .SS "bool Module::OnCheckReady (\fBuserrec\fP * user)\fC [virtual]\fP" @@ -842,10 +842,10 @@ true to indicate readiness, false if otherwise .PP .PP -Definition at line 249 of file modules.cpp. +Definition at line 248 of file modules.cpp. .PP .nf -249 { return true; }; +248 { return true; }; .fi .PP .SS "void Module::OnCleanup (int target_type, void * item)\fC [virtual]\fP" @@ -863,10 +863,10 @@ This method is called once for every user and channel on the network, so that wh .PP .PP -Definition at line 299 of file modules.cpp. +Definition at line 298 of file modules.cpp. .PP .nf -299 { }; +298 { }; .fi .PP .SS "void Module::OnDecodeMetaData (int target_type, void * target, \fBstd::string\fP extname, \fBstd::string\fP extdata)\fC [virtual]\fP" @@ -888,10 +888,10 @@ Please see src/modules/m_swhois.cpp for a working example of how to use this met .PP .PP -Definition at line 284 of file modules.cpp. +Definition at line 283 of file modules.cpp. .PP .nf -284 { }; +283 { }; .fi .PP .SS "int Module::OnDelBan (\fBuserrec\fP * source, \fBchanrec\fP * channel, \fBstd::string\fP banmask)\fC [virtual]\fP" @@ -916,10 +916,10 @@ Return a non-zero value to 'eat' the mode change and prevent the ban from being .PP .PP -Definition at line 268 of file modules.cpp. +Definition at line 267 of file modules.cpp. .PP .nf -268 { return 0; }; +267 { return 0; }; .fi .PP .SS "void Module::OnDelELine (\fBuserrec\fP * source, \fBstd::string\fP hostmask)\fC [virtual]\fP" @@ -937,10 +937,10 @@ This method is triggered after the line is deleted. .PP .PP -Definition at line 298 of file modules.cpp. +Definition at line 297 of file modules.cpp. .PP .nf -298 { }; +297 { }; .fi .PP .SS "void Module::OnDelGLine (\fBuserrec\fP * source, \fBstd::string\fP hostmask)\fC [virtual]\fP" @@ -958,10 +958,10 @@ This method is triggered after the line is deleted. .PP .PP -Definition at line 294 of file modules.cpp. +Definition at line 293 of file modules.cpp. .PP .nf -294 { }; +293 { }; .fi .PP .SS "void Module::OnDelKLine (\fBuserrec\fP * source, \fBstd::string\fP hostmask)\fC [virtual]\fP" @@ -979,10 +979,10 @@ This method is triggered after the line is deleted. .PP .PP -Definition at line 296 of file modules.cpp. +Definition at line 295 of file modules.cpp. .PP .nf -296 { }; +295 { }; .fi .PP .SS "void Module::OnDelQLine (\fBuserrec\fP * source, \fBstd::string\fP nickmask)\fC [virtual]\fP" @@ -1000,10 +1000,10 @@ This method is triggered after the line is deleted. .PP .PP -Definition at line 297 of file modules.cpp. +Definition at line 296 of file modules.cpp. .PP .nf -297 { }; +296 { }; .fi .PP .SS "void Module::OnDelZLine (\fBuserrec\fP * source, \fBstd::string\fP ipmask)\fC [virtual]\fP" @@ -1021,10 +1021,10 @@ This method is triggered after the line is deleted. .PP .PP -Definition at line 295 of file modules.cpp. +Definition at line 294 of file modules.cpp. .PP .nf -295 { }; +294 { }; .fi .PP .SS "void Module::OnEvent (\fBEvent\fP * event)\fC [virtual]\fP" @@ -1040,10 +1040,10 @@ Please see the documentation of \fBEvent::Send()\fP for further information. The .PP .PP -Definition at line 262 of file modules.cpp. +Definition at line 261 of file modules.cpp. .PP .nf -262 { return; }; +261 { return; }; .fi .PP .SS "int Module::OnExtendedMode (\fBuserrec\fP * user, void * target, char modechar, int type, bool mode_on, \fBstring_list\fP & params)\fC [virtual]\fP" @@ -1069,10 +1069,10 @@ The type parameter is MT_SERVER, MT_CLIENT or MT_CHANNEL, dependent on where the .PP .PP -Definition at line 230 of file modules.cpp. +Definition at line 229 of file modules.cpp. .PP .nf -230 { return false; } +229 { return false; } .fi .PP .SS "void Module::OnGetServerDescription (\fBstd::string\fP servername, \fBstd::string\fP & description)\fC [virtual]\fP" @@ -1090,10 +1090,10 @@ You may change or define the description given in \fBstd::string\fP &description .PP .PP -Definition at line 278 of file modules.cpp. +Definition at line 277 of file modules.cpp. .PP .nf -278 { }; +277 { }; .fi .PP .SS "void Module::OnGlobalConnect (\fBuserrec\fP * user)\fC [virtual]\fP" @@ -1109,10 +1109,10 @@ This event is informational only. You should not change any user information in .PP .PP -Definition at line 266 of file modules.cpp. +Definition at line 265 of file modules.cpp. .PP .nf -266 { }; +265 { }; .fi .PP .SS "void Module::OnGlobalOper (\fBuserrec\fP * user)\fC [virtual]\fP" @@ -1128,10 +1128,10 @@ You cannot override this and prevent it from happening as it is already happened .PP .PP -Definition at line 265 of file modules.cpp. +Definition at line 264 of file modules.cpp. .PP .nf -265 { }; +264 { }; .fi .PP .SS "void Module::OnInfo (\fBuserrec\fP * user)\fC [virtual]\fP" @@ -1149,10 +1149,10 @@ The userrec will contain the information of the user who typed the command. Modu .PP .PP -Definition at line 234 of file modules.cpp. +Definition at line 233 of file modules.cpp. .PP .nf -234 { }; +233 { }; .fi .PP .SS "int Module::OnKill (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBstd::string\fP reason)\fC [virtual]\fP" @@ -1177,10 +1177,10 @@ If a client is killed by a server, e.g. a nickname collision or protocol error, .PP .PP -Definition at line 243 of file modules.cpp. +Definition at line 242 of file modules.cpp. .PP .nf -243 { return 0; }; +242 { return 0; }; .fi .PP .SS "void Module::OnLoadModule (\fBModule\fP * mod, \fBstd::string\fP name)\fC [virtual]\fP" @@ -1198,10 +1198,10 @@ mod will contain a pointer to the module, and string will contain its name, for .PP .PP -Definition at line 244 of file modules.cpp. +Definition at line 243 of file modules.cpp. .PP .nf -244 { }; +243 { }; .fi .PP .SS "int Module::OnLocalTopicChange (\fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP topic)\fC [virtual]\fP" @@ -1223,10 +1223,10 @@ Return 1 to deny the topic change, or 0 to allow it. .PP .PP -Definition at line 261 of file modules.cpp. +Definition at line 260 of file modules.cpp. .PP .nf -261 { return 0; }; +260 { return 0; }; .fi .PP .SS "void Module::OnMode (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP text)\fC [virtual]\fP" @@ -1248,10 +1248,10 @@ The text variable contains the remainder of the mode string after the target, e. .PP .PP -Definition at line 231 of file modules.cpp. +Definition at line 230 of file modules.cpp. .PP .nf -231 { }; +230 { }; .fi .PP .SS "void Module::OnOper (\fBuserrec\fP * user, \fBstd::string\fP opertype)\fC [virtual]\fP" @@ -1269,10 +1269,10 @@ The userrec will contain the oper mode 'o' as this function is called after any .PP .PP -Definition at line 233 of file modules.cpp. +Definition at line 232 of file modules.cpp. .PP .nf -233 { }; +232 { }; .fi .PP .SS "int Module::OnOperCompare (\fBstd::string\fP password, \fBstd::string\fP input)\fC [virtual]\fP" @@ -1295,10 +1295,10 @@ The password field (from the config file) is in 'password' and is to be compared .PP .PP -Definition at line 264 of file modules.cpp. +Definition at line 263 of file modules.cpp. .PP .nf -264 { return 0; }; +263 { return 0; }; .fi .PP .SS "void Module::OnPostLocalTopicChange (\fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP topic)\fC [virtual]\fP" @@ -1318,10 +1318,10 @@ To block topic changes you must use OnLocalTopicChange instead. .PP .PP -Definition at line 277 of file modules.cpp. +Definition at line 276 of file modules.cpp. .PP .nf -277 { }; +276 { }; .fi .PP .SS "int Module::OnPreCommand (\fBstd::string\fP command, char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP" @@ -1348,10 +1348,10 @@ This event occurs for all registered commands, wether they are registered in the .PP .PP -Definition at line 248 of file modules.cpp. +Definition at line 247 of file modules.cpp. .PP .nf -248 { return 0; }; +247 { return 0; }; .fi .PP .SS "int Module::OnRawMode (\fBuserrec\fP * user, \fBchanrec\fP * chan, char mode, \fBstd::string\fP param, bool adding, int pcnt)\fC [virtual]\fP" @@ -1382,10 +1382,10 @@ Return 1 from this function to block the mode character from being processed ent .PP .PP -Definition at line 253 of file modules.cpp. +Definition at line 252 of file modules.cpp. .PP .nf -253 { return 0; }; +252 { return 0; }; .fi .PP .SS "void Module::OnRawSocketAccept (int fd, \fBstd::string\fP ip, int localport)\fC [virtual]\fP" @@ -1405,10 +1405,10 @@ This is intended for raw socket processing (e.g. modules which wrap the tcp conn .PP .PP -Definition at line 269 of file modules.cpp. +Definition at line 268 of file modules.cpp. .PP .nf -269 { }; +268 { }; .fi .PP .SS "void Module::OnRawSocketClose (int fd)\fC [virtual]\fP" @@ -1424,10 +1424,12 @@ When this event is called, shutdown() has not yet been called on the socket. .PP .PP -Definition at line 271 of file modules.cpp. +Definition at line 270 of file modules.cpp. +.PP +Referenced by kill_link(), and kill_link_silent(). .PP .nf -271 { }; +270 { }; .fi .PP .SS "int Module::OnRawSocketRead (int fd, char * buffer, unsigned int count, int & readresult)\fC [virtual]\fP" @@ -1454,10 +1456,10 @@ nonzero if the event was handled, in which case readresult must be valid on exit .PP .PP -Definition at line 272 of file modules.cpp. +Definition at line 271 of file modules.cpp. .PP .nf -272 { return 0; }; +271 { return 0; }; .fi .PP .SS "int Module::OnRawSocketWrite (int fd, char * buffer, int count)\fC [virtual]\fP" @@ -1482,10 +1484,10 @@ Number of characters actually written or 0 if you didn't handle the operation .PP .PP -Definition at line 270 of file modules.cpp. +Definition at line 269 of file modules.cpp. .PP .nf -270 { return 0; }; +269 { return 0; }; .fi .PP .SS "void Module::OnRehash (\fBstd::string\fP parameter)\fC [virtual]\fP" @@ -1501,10 +1503,10 @@ This method is called prior to a /REHASH or when a SIGHUP is received from the o .PP .PP -Definition at line 227 of file modules.cpp. +Definition at line 226 of file modules.cpp. .PP .nf -227 { } +226 { } .fi .PP .SS "void Module::OnRemoteKill (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBstd::string\fP reason)\fC [virtual]\fP" @@ -1522,10 +1524,10 @@ Called when an oper wants to disconnect a remote user via KILL. .PP .PP -Definition at line 275 of file modules.cpp. +Definition at line 274 of file modules.cpp. .PP .nf -275 { }; +274 { }; .fi .PP .SS "char * Module::OnRequest (\fBRequest\fP * request)\fC [virtual]\fP" @@ -1541,12 +1543,12 @@ Please see the documentation of \fBRequest::Send()\fP for further information. T .PP .PP -Definition at line 263 of file modules.cpp. +Definition at line 262 of file modules.cpp. .PP Referenced by Request::Send(). .PP .nf -263 { return NULL; }; +262 { return NULL; }; .fi .PP .SS "void Module::OnSendList (\fBuserrec\fP * user, \fBchanrec\fP * channel, char mode)\fC [virtual]\fP" @@ -1566,10 +1568,10 @@ For example, when a /MODE channel +b (without any other parameters) is called, i .PP .PP -Definition at line 247 of file modules.cpp. +Definition at line 246 of file modules.cpp. .PP .nf -247 { }; +246 { }; .fi .PP .SS "void Module::OnServerRaw (\fBstd::string\fP & raw, bool inbound, \fBuserrec\fP * user)\fC [virtual]\fP" @@ -1589,10 +1591,10 @@ This method is the lowest level of handler available to a module. It will be cal .PP .PP -Definition at line 228 of file modules.cpp. +Definition at line 227 of file modules.cpp. .PP .nf -228 { } +227 { } .fi .PP .SS "void Module::OnStats (char symbol)\fC [virtual]\fP" @@ -1606,10 +1608,10 @@ Called on all /STATS commands This method is triggered for all /STATS use, inclu .PP .PP -Definition at line 258 of file modules.cpp. +Definition at line 257 of file modules.cpp. .PP .nf -258 { }; +257 { }; .fi .PP .SS "void Module::OnSyncChannel (\fBchanrec\fP * chan, \fBModule\fP * proto, void * opaque)\fC [virtual]\fP" @@ -1631,18 +1633,18 @@ For a good example of how to use this function, please see src/modules/m_chanpro .PP .PP -Definition at line 280 of file modules.cpp. +Definition at line 279 of file modules.cpp. .PP .nf -280 { }; +279 { }; .fi .PP .SS "void Module::OnSyncChannelMetaData (\fBchanrec\fP * chan, \fBModule\fP * proto, void * opaque, \fBstd::string\fP extname)\fC [virtual]\fP" .PP -Definition at line 282 of file modules.cpp. +Definition at line 281 of file modules.cpp. .PP .nf -282 { }; +281 { }; .fi .PP .SS "void Module::OnSyncUser (\fBuserrec\fP * user, \fBModule\fP * proto, void * opaque)\fC [virtual]\fP" @@ -1662,18 +1664,18 @@ When this function is called, it will be called from the module which implements .PP .PP -Definition at line 279 of file modules.cpp. +Definition at line 278 of file modules.cpp. .PP .nf -279 { }; +278 { }; .fi .PP .SS "void Module::OnSyncUserMetaData (\fBuserrec\fP * user, \fBModule\fP * proto, void * opaque, \fBstd::string\fP extname)\fC [virtual]\fP" .PP -Definition at line 283 of file modules.cpp. +Definition at line 282 of file modules.cpp. .PP .nf -283 { }; +282 { }; .fi .PP .SS "void Module::OnUnloadModule (\fBModule\fP * mod, \fBstd::string\fP name)\fC [virtual]\fP" @@ -1691,10 +1693,10 @@ mod will contain a pointer to the module, and string will contain its name, for .PP .PP -Definition at line 245 of file modules.cpp. +Definition at line 244 of file modules.cpp. .PP .nf -245 { }; +244 { }; .fi .PP .SS "void Module::OnUserConnect (\fBuserrec\fP * user)\fC [virtual]\fP" @@ -1710,10 +1712,10 @@ The details of the connecting user are available to you in the parameter userrec .PP .PP -Definition at line 222 of file modules.cpp. +Definition at line 221 of file modules.cpp. .PP .nf -222 { } +221 { } .fi .PP .SS "void Module::OnUserDisconnect (\fBuserrec\fP * user)\fC [virtual]\fP" @@ -1729,10 +1731,10 @@ The details of the exiting user are available to you in the parameter userrec *u .PP .PP -Definition at line 224 of file modules.cpp. +Definition at line 223 of file modules.cpp. .PP .nf -224 { } +223 { } .fi .PP .SS "void Module::OnUserInvite (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBchanrec\fP * channel)\fC [virtual]\fP" @@ -1752,10 +1754,10 @@ You cannot prevent the invite from occuring using this function, to do that, use .PP .PP -Definition at line 276 of file modules.cpp. +Definition at line 275 of file modules.cpp. .PP .nf -276 { }; +275 { }; .fi .PP .SS "void Module::OnUserJoin (\fBuserrec\fP * user, \fBchanrec\fP * channel)\fC [virtual]\fP" @@ -1773,10 +1775,10 @@ The details of the joining user are available to you in the parameter userrec *u .PP .PP -Definition at line 225 of file modules.cpp. +Definition at line 224 of file modules.cpp. .PP .nf -225 { } +224 { } .fi .PP .SS "void Module::OnUserKick (\fBuserrec\fP * source, \fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP reason)\fC [virtual]\fP" @@ -1798,10 +1800,10 @@ If this method is called, the kick is already underway and cannot be prevented, .PP .PP -Definition at line 252 of file modules.cpp. +Definition at line 251 of file modules.cpp. .PP .nf -252 { }; +251 { }; .fi .PP .SS "void Module::OnUserMessage (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP text)\fC [virtual]\fP" @@ -1823,10 +1825,10 @@ The dest variable contains a userrec* if target_type is TYPE_USER and a chanrec* .PP .PP -Definition at line 273 of file modules.cpp. +Definition at line 272 of file modules.cpp. .PP .nf -273 { }; +272 { }; .fi .PP .SS "void Module::OnUserNotice (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP text)\fC [virtual]\fP" @@ -1848,10 +1850,10 @@ The dest variable contains a userrec* if target_type is TYPE_USER and a chanrec* .PP .PP -Definition at line 274 of file modules.cpp. +Definition at line 273 of file modules.cpp. .PP .nf -274 { }; +273 { }; .fi .PP .SS "void Module::OnUserPart (\fBuserrec\fP * user, \fBchanrec\fP * channel)\fC [virtual]\fP" @@ -1869,10 +1871,10 @@ The details of the leaving user are available to you in the parameter userrec *u .PP .PP -Definition at line 226 of file modules.cpp. +Definition at line 225 of file modules.cpp. .PP .nf -226 { } +225 { } .fi .PP .SS "void Module::OnUserPostNick (\fBuserrec\fP * user, \fBstd::string\fP oldnick)\fC [virtual]\fP" @@ -1890,10 +1892,10 @@ This can be used to track users after nickchanges have been applied. Please note .PP .PP -Definition at line 240 of file modules.cpp. +Definition at line 239 of file modules.cpp. .PP .nf -240 { }; +239 { }; .fi .PP .SS "int Module::OnUserPreInvite (\fBuserrec\fP * source, \fBuserrec\fP * dest, \fBchanrec\fP * channel)\fC [virtual]\fP" @@ -1918,10 +1920,10 @@ Returning 1 from this function stops the process immediately, causing no output .PP .PP -Definition at line 236 of file modules.cpp. +Definition at line 235 of file modules.cpp. .PP .nf -236 { return 0; }; +235 { return 0; }; .fi .PP .SS "int Module::OnUserPreJoin (\fBuserrec\fP * user, \fBchanrec\fP * chan, const char * cname)\fC [virtual]\fP" @@ -1948,10 +1950,10 @@ If the user joins a NEW channel which does not exist yet, OnUserPreJoin will be .PP .PP -Definition at line 229 of file modules.cpp. +Definition at line 228 of file modules.cpp. .PP .nf -229 { return 0; } +228 { return 0; } .fi .PP .SS "int Module::OnUserPreKick (\fBuserrec\fP * source, \fBuserrec\fP * user, \fBchanrec\fP * chan, \fBstd::string\fP reason)\fC [virtual]\fP" @@ -1978,10 +1980,10 @@ Returning a value of 1 from this function stops the process immediately, causing .PP .PP -Definition at line 251 of file modules.cpp. +Definition at line 250 of file modules.cpp. .PP .nf -251 { return 0; }; +250 { return 0; }; .fi .PP .SS "int Module::OnUserPreMessage (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP & text)\fC [virtual]\fP" @@ -2008,10 +2010,10 @@ Returning any nonzero value from this function stops the process immediately, ca .PP .PP -Definition at line 237 of file modules.cpp. +Definition at line 236 of file modules.cpp. .PP .nf -237 { return 0; }; +236 { return 0; }; .fi .PP .SS "int Module::OnUserPreNick (\fBuserrec\fP * user, \fBstd::string\fP newnick)\fC [virtual]\fP" @@ -2034,10 +2036,10 @@ This can be used to implement Q-lines etc. Please note that although you can see .PP .PP -Definition at line 239 of file modules.cpp. +Definition at line 238 of file modules.cpp. .PP .nf -239 { return 0; }; +238 { return 0; }; .fi .PP .SS "int Module::OnUserPreNotice (\fBuserrec\fP * user, void * dest, int target_type, \fBstd::string\fP & text)\fC [virtual]\fP" @@ -2064,10 +2066,10 @@ Returning any nonzero value from this function stops the process immediately, ca .PP .PP -Definition at line 238 of file modules.cpp. +Definition at line 237 of file modules.cpp. .PP .nf -238 { return 0; }; +237 { return 0; }; .fi .PP .SS "void Module::OnUserQuit (\fBuserrec\fP * user, \fBstd::string\fP message)\fC [virtual]\fP" @@ -2085,10 +2087,10 @@ The details of the exiting user are available to you in the parameter userrec *u .PP .PP -Definition at line 223 of file modules.cpp. +Definition at line 222 of file modules.cpp. .PP .nf -223 { } +222 { } .fi .PP .SS "void Module::OnUserRegister (\fBuserrec\fP * user)\fC [virtual]\fP" @@ -2104,10 +2106,10 @@ before the user is sent the MOTD etc). Modules can use this method if they are p .PP .PP -Definition at line 250 of file modules.cpp. +Definition at line 249 of file modules.cpp. .PP .nf -250 { }; +249 { }; .fi .PP .SS "void Module::OnWallops (\fBuserrec\fP * user, \fBstd::string\fP text)\fC [virtual]\fP" @@ -2123,10 +2125,10 @@ Called after every WALLOPS command. .PP .PP -Definition at line 286 of file modules.cpp. +Definition at line 285 of file modules.cpp. .PP .nf -286 { }; +285 { }; .fi .PP .SS "void Module::OnWhois (\fBuserrec\fP * source, \fBuserrec\fP * dest)\fC [virtual]\fP" @@ -2144,10 +2146,10 @@ The source parameter contains the details of the user who issued the WHOIS comma .PP .PP -Definition at line 235 of file modules.cpp. +Definition at line 234 of file modules.cpp. .PP .nf -235 { }; +234 { }; .fi .PP .SS "void Module::ProtoSendMetaData (void * opaque, int target_type, void * target, \fBstd::string\fP extname, \fBstd::string\fP extdata)\fC [virtual]\fP" @@ -2173,10 +2175,10 @@ More documentation to follow soon. Please see src/modules/m_swhois.cpp for examp .PP .PP -Definition at line 285 of file modules.cpp. +Definition at line 284 of file modules.cpp. .PP .nf -285 { }; +284 { }; .fi .PP .SS "void Module::ProtoSendMode (void * opaque, int target_type, void * target, \fBstd::string\fP modeline)\fC [virtual]\fP" @@ -2200,10 +2202,10 @@ More documentation to follow soon. Please see src/modules/m_chanprotect.cpp for .PP .PP -Definition at line 281 of file modules.cpp. +Definition at line 280 of file modules.cpp. .PP .nf -281 { }; +280 { }; .fi .PP diff --git a/docs/man/man3/ModuleFactory.3 b/docs/man/man3/ModuleFactory.3 index 290073277..5ace1c193 100644 --- a/docs/man/man3/ModuleFactory.3 +++ b/docs/man/man3/ModuleFactory.3 @@ -1,4 +1,4 @@ -.TH "ModuleFactory" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ModuleFactory" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -32,23 +32,23 @@ Instantiates classes inherited from \fBModule\fP This class creates a class inhe This is to allow for modules to create many different variants of \fBModule\fP, dependent on architecture, configuration, etc. In most cases, the simple class shown in the example module m_foobar.so will suffice for most modules. .PP -Definition at line 1676 of file modules.h. +Definition at line 1694 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "ModuleFactory::ModuleFactory ()\fC [inline]\fP" .PP -Definition at line 1679 of file modules.h. +Definition at line 1697 of file modules.h. .PP .nf -1679 { } +1697 { } .fi .PP .SS "virtual ModuleFactory::~ModuleFactory ()\fC [inline, virtual]\fP" .PP -Definition at line 1680 of file modules.h. +Definition at line 1698 of file modules.h. .PP .nf -1680 { } +1698 { } .fi .PP .SH "Member Function Documentation" diff --git a/docs/man/man3/ModuleMessage.3 b/docs/man/man3/ModuleMessage.3 index ceb20c96d..9f0eeecfd 100644 --- a/docs/man/man3/ModuleMessage.3 +++ b/docs/man/man3/ModuleMessage.3 @@ -1,4 +1,4 @@ -.TH "ModuleMessage" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ModuleMessage" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -29,15 +29,15 @@ Inherited by \fBEvent\fP, and \fBRequest\fP. .PP The ModuleMessage class is the base class of \fBRequest\fP and \fBEvent\fP This class is used to represent a basic data structure which is passed between modules for safe inter-module communications. .PP -Definition at line 143 of file modules.h. +Definition at line 161 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "virtual ModuleMessage::~ModuleMessage ()\fC [inline, virtual]\fP" .PP -Definition at line 149 of file modules.h. +Definition at line 167 of file modules.h. .PP .nf -149 {}; +167 {}; .fi .PP .SH "Member Function Documentation" diff --git a/docs/man/man3/QLine.3 b/docs/man/man3/QLine.3 index a5fad88b9..61bd947ae 100644 --- a/docs/man/man3/QLine.3 +++ b/docs/man/man3/QLine.3 @@ -1,4 +1,4 @@ -.TH "QLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "QLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/Request.3 b/docs/man/man3/Request.3 index d910f5ab3..b504563a7 100644 --- a/docs/man/man3/Request.3 +++ b/docs/man/man3/Request.3 @@ -1,4 +1,4 @@ -.TH "Request" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "Request" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -58,17 +58,17 @@ The Request class is a unicast message directed at a given module. When this class is properly instantiated it may be sent to a module using the \fBSend()\fP method, which will call the given module's OnRequest method with this class as its parameter. .PP -Definition at line 157 of file modules.h. +Definition at line 175 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "Request::Request (char * anydata, \fBModule\fP * src, \fBModule\fP * dst)" .PP Create a new Request. .PP -Definition at line 165 of file modules.cpp. +Definition at line 164 of file modules.cpp. .PP .nf -165 : data(anydata), source(src), dest(dst) { }; +164 : data(anydata), source(src), dest(dst) { }; .fi .PP .SH "Member Function Documentation" @@ -77,42 +77,42 @@ Definition at line 165 of file modules.cpp. .PP Fetch the Request data. .PP -Definition at line 167 of file modules.cpp. +Definition at line 166 of file modules.cpp. .PP References data. .PP .nf -168 { -169 return this->data; -170 } +167 { +168 return this->data; +169 } .fi .PP .SS "\fBModule\fP * Request::GetDest ()" .PP Fetch the request destination (should be 'this' in the receiving module). .PP -Definition at line 177 of file modules.cpp. +Definition at line 176 of file modules.cpp. .PP References dest. .PP .nf -178 { -179 return this->dest; -180 } +177 { +178 return this->dest; +179 } .fi .PP .SS "\fBModule\fP * Request::GetSource ()" .PP Fetch the request source. .PP -Definition at line 172 of file modules.cpp. +Definition at line 171 of file modules.cpp. .PP References source. .PP .nf -173 { -174 return this->source; -175 } +172 { +173 return this->source; +174 } .fi .PP .SS "char * Request::Send ()\fC [virtual]\fP" @@ -123,21 +123,21 @@ Upon returning the result will be arbitary data returned by the module you sent .PP Implements \fBModuleMessage\fP. .PP -Definition at line 182 of file modules.cpp. +Definition at line 181 of file modules.cpp. .PP References dest, and Module::OnRequest(). .PP .nf -183 { -184 if (this->dest) -185 { -186 return dest->OnRequest(this); -187 } -188 else -189 { -190 return NULL; -191 } -192 } +182 { +183 if (this->dest) +184 { +185 return dest->OnRequest(this); +186 } +187 else +188 { +189 return NULL; +190 } +191 } .fi .PP .SH "Member Data Documentation" @@ -146,21 +146,21 @@ References dest, and Module::OnRequest(). .PP This member holds a pointer to arbitary data set by the emitter of the message. .PP -Definition at line 162 of file modules.h. +Definition at line 180 of file modules.h. .PP Referenced by GetData(). .SS "\fBModule\fP* \fBRequest::dest\fP\fC [protected]\fP" .PP The single destination of the Request. .PP -Definition at line 169 of file modules.h. +Definition at line 187 of file modules.h. .PP Referenced by GetDest(), and Send(). .SS "\fBModule\fP* \fBRequest::source\fP\fC [protected]\fP" .PP This is a pointer to the sender of the message, which can be used to directly trigger events, or to create a reply. .PP -Definition at line 166 of file modules.h. +Definition at line 184 of file modules.h. .PP Referenced by GetSource(). diff --git a/docs/man/man3/Server.3 b/docs/man/man3/Server.3 index 95aa8cd87..bc6962cac 100644 --- a/docs/man/man3/Server.3 +++ b/docs/man/man3/Server.3 @@ -1,4 +1,4 @@ -.TH "Server" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "Server" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -128,7 +128,7 @@ Inherits \fBclassbase\fP. .br .RI "\fIAdds an extended mode letter which is parsed by a module and handled in a list fashion. \fP" .ti -1c -.RI "virtual void \fBAddCommand\fP (char *cmd, \fBhandlerfunc\fP f, char flags, int minparams, char *source)" +.RI "virtual void \fBAddCommand\fP (\fBcommand_t\fP *f)" .br .RI "\fIAdds a command to the command table. \fP" .ti -1c @@ -260,7 +260,7 @@ Allows server output and query functions This class contains methods which allow All modules should instantiate at least one copy of this class, and use its member functions to perform their tasks. .PP -Definition at line 1096 of file modules.h. +Definition at line 1114 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "Server::Server ()" @@ -269,11 +269,11 @@ Default constructor. .PP Creates a Server object. .PP -Definition at line 305 of file modules.cpp. +Definition at line 304 of file modules.cpp. .PP .nf -306 { -307 } +305 { +306 } .fi .PP .SS "Server::~Server ()\fC [virtual]\fP" @@ -282,33 +282,33 @@ Default destructor. .PP Destroys a Server object. .PP -Definition at line 309 of file modules.cpp. +Definition at line 308 of file modules.cpp. .PP .nf -310 { -311 } +309 { +310 } .fi .PP .SH "Member Function Documentation" .PP -.SS "void Server::AddCommand (char * cmd, \fBhandlerfunc\fP f, char flags, int minparams, char * source)\fC [virtual]\fP" +.SS "void Server::AddCommand (\fBcommand_t\fP * f)\fC [virtual]\fP" .PP Adds a command to the command table. .PP This allows modules to add extra commands into the command table. You must place a function within your module which is is of type handlerfunc: .PP -typedef void (handlerfunc) (char**, int, userrec*); ... void \fBhandle_kill(char **parameters, int pcnt, userrec *user)\fP +typedef void (handlerfunc) (char**, int, userrec*); ... void handle_kill(char **parameters, int pcnt, userrec *user) .PP When the command is typed, the parameters will be placed into the parameters array (similar to argv) and the parameter count will be placed into pcnt (similar to argv). There will never be any less parameters than the 'minparams' value you specified when creating the command. The *user parameter is the class of the user which caused the command to trigger, who will always have the flag you specified in 'flags' when creating the initial command. For example to create an oper only command create the commands with flags='o'. The source parameter is used for resource tracking, and should contain the name of your module (with file extension) e.g. 'm_blarp.so'. If you place the wrong identifier here, you can cause crashes if your module is unloaded. .PP -Definition at line 416 of file modules.cpp. +Definition at line 415 of file modules.cpp. .PP -References createcommand(). +References InspIRCd::Parser. .PP .nf -417 { -418 createcommand(cmd,f,flags,minparams,source); -419 } +416 { +417 ServerInstance->Parser->CreateCommand(f); +418 } .fi .PP .SS "void Server::AddELine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP" @@ -317,14 +317,14 @@ Adds a E-line The E-line is enforced as soon as it is added. .PP The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name. .PP -Definition at line 660 of file modules.cpp. +Definition at line 659 of file modules.cpp. .PP References add_eline(). .PP .nf -661 { -662 add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); -663 } +660 { +661 add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); +662 } .fi .PP .SS "bool Server::AddExtendedListMode (char modechar)\fC [virtual]\fP" @@ -343,17 +343,17 @@ This call is used to implement modes like +q and +a. The characteristics of thes .PP It is down to the module handling the mode to maintain state and determine what 'items' (e.g. users, or a banlist) have the mode set on them, and process the modes at the correct times, e.g. during access checks on channels, etc. When the extended mode is triggered the OnExtendedMode method will be triggered as above. Note that the target you are given will be a channel, if for example your mode is set 'on a user' (in for example +a) you must use \fBServer::Find\fP to locate the user the mode is operating on. Your mode handler may return 1 to handle the mode AND tell the core to display the mode change, e.g. '+aaa one two three' in the case of the mode for 'two', or it may return -1 to 'eat' the mode change, so the above example would become '+aa one three' after processing. .PP -Definition at line 584 of file modules.cpp. +Definition at line 583 of file modules.cpp. .PP References DoAddExtendedMode(), ModeMakeList(), and MT_CHANNEL. .PP .nf -585 { -586 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1); -587 if (res) -588 ModeMakeList(modechar); -589 return res; -590 } +584 { +585 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1); +586 if (res) +587 ModeMakeList(modechar); +588 return res; +589 } .fi .PP .SS "bool Server::AddExtendedMode (char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)\fC [virtual]\fP" @@ -362,37 +362,37 @@ Adds an extended mode letter which is parsed by a module. .PP This allows modules to add extra mode letters, e.g. +x for hostcloak. the 'type' parameter is either MT_CHANNEL, MT_CLIENT, or MT_SERVER, to indicate wether the mode is a channel mode, a client mode, or a server mode. requires_oper is used with MT_CLIENT type modes only to indicate the mode can only be set or unset by an oper. If this is used for MT_CHANNEL type modes it is ignored. params_when_on is the number of modes to expect when the mode is turned on (for type MT_CHANNEL only), e.g. with mode +k, this would have a value of 1. the params_when_off value has a similar value to params_when_on, except it indicates the number of parameters to expect when the mode is disabled. Modes which act in a similar way to channel mode +l (e.g. require a parameter to enable, but not to disable) should use this parameter. The function returns false if the mode is unavailable, and will not attempt to allocate another character, as this will confuse users. This also means that as only one module can claim a specific mode character, the core does not need to keep track of which modules own which modes, which speeds up operation of the server. In this version, a mode can have at most one parameter, attempting to use more parameters will have undefined effects. .PP -Definition at line 556 of file modules.cpp. +Definition at line 555 of file modules.cpp. .PP References DEBUG, DoAddExtendedMode(), log(), MT_CLIENT, and MT_SERVER. .PP .nf -557 { -558 if (((modechar >= 'A') && (modechar <= 'Z')) || ((modechar >= 'a') && (modechar <= 'z'))) -559 { -560 if (type == MT_SERVER) -561 { -562 log(DEBUG,'*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion'); -563 return false; -564 } -565 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT)) -566 { -567 log(DEBUG,'*** API ERROR *** Parameters on MT_CLIENT modes are not supported'); -568 return false; -569 } -570 if ((params_when_on>1) || (params_when_off>1)) -571 { -572 log(DEBUG,'*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported'); -573 return false; -574 } -575 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off); -576 } -577 else -578 { -579 log(DEBUG,'*** API ERROR *** Muppet modechar detected.'); -580 } -581 return false; -582 } +556 { +557 if (((modechar >= 'A') && (modechar <= 'Z')) || ((modechar >= 'a') && (modechar <= 'z'))) +558 { +559 if (type == MT_SERVER) +560 { +561 log(DEBUG,'*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion'); +562 return false; +563 } +564 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT)) +565 { +566 log(DEBUG,'*** API ERROR *** Parameters on MT_CLIENT modes are not supported'); +567 return false; +568 } +569 if ((params_when_on>1) || (params_when_off>1)) +570 { +571 log(DEBUG,'*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported'); +572 return false; +573 } +574 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off); +575 } +576 else +577 { +578 log(DEBUG,'*** API ERROR *** Muppet modechar detected.'); +579 } +580 return false; +581 } .fi .PP .SS "void Server::AddGLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP" @@ -401,14 +401,14 @@ Adds a G-line The G-line is propogated to all of the servers in the mesh and enf .PP The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name. .PP -Definition at line 640 of file modules.cpp. +Definition at line 639 of file modules.cpp. .PP References add_gline(). .PP .nf -641 { -642 add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); -643 } +640 { +641 add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); +642 } .fi .PP .SS "void Server::AddKLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP hostmask)\fC [virtual]\fP" @@ -417,14 +417,14 @@ Adds a K-line The K-line is enforced as soon as it is added. .PP The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name. .PP -Definition at line 655 of file modules.cpp. +Definition at line 654 of file modules.cpp. .PP References add_kline(). .PP .nf -656 { -657 add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); -658 } +655 { +656 add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); +657 } .fi .PP .SS "void Server::AddQLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP nickname)\fC [virtual]\fP" @@ -433,28 +433,28 @@ Adds a Q-line The Q-line is propogated to all of the servers in the mesh and enf .PP The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name. .PP -Definition at line 645 of file modules.cpp. +Definition at line 644 of file modules.cpp. .PP References add_qline(). .PP .nf -646 { -647 add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str()); -648 } +645 { +646 add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str()); +647 } .fi .PP .SS "void Server::AddSocket (\fBInspSocket\fP * sock)\fC [virtual]\fP" .PP Adds a class derived from \fBInspSocket\fP to the server's socket engine. .PP -Definition at line 313 of file modules.cpp. +Definition at line 312 of file modules.cpp. .PP References module_sockets. .PP .nf -314 { -315 module_sockets.push_back(sock); -316 } +313 { +314 module_sockets.push_back(sock); +315 } .fi .PP .SS "void Server::AddZLine (long duration, \fBstd::string\fP source, \fBstd::string\fP reason, \fBstd::string\fP ipaddr)\fC [virtual]\fP" @@ -463,14 +463,14 @@ Adds a Z-line The Z-line is propogated to all of the servers in the mesh and enf .PP The duration must be in seconds, however you can use the \fBServer::CalcDuration\fP method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name. .PP -Definition at line 650 of file modules.cpp. +Definition at line 649 of file modules.cpp. .PP References add_zline(). .PP .nf -651 { -652 add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str()); -653 } +650 { +651 add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str()); +652 } .fi .PP .SS "long Server::CalcDuration (\fBstd::string\fP duration)\fC [virtual]\fP" @@ -479,14 +479,14 @@ Calculates a duration This method will take a string containing a formatted dura .PP '1w2d') and return its value as a total number of seconds. This is the same function used internally by /GLINE etc to set the ban times. .PP -Definition at line 690 of file modules.cpp. +Definition at line 689 of file modules.cpp. .PP References duration(). .PP .nf -691 { -692 return duration(delta.c_str()); -693 } +690 { +691 return duration(delta.c_str()); +692 } .fi .PP .SS "void Server::CallCommandHandler (\fBstd::string\fP commandname, char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP" @@ -497,14 +497,14 @@ You can use this function to trigger other commands in the ircd, such as PRIVMSG .br ) you may use them as callback identifiers. The first parameter to this method is the name of the command handler you wish to call, e.g. PRIVMSG. This will be a command handler previously registered by the core or wih \fBAddCommand()\fP. The second parameter is an array of parameters, and the third parameter is a count of parameters in the array. If you do not pass enough parameters to meet the minimum needed by the handler, the functiom will silently ignore it. The final parameter is the user executing the command handler, used for privilage checks, etc. .PP -Definition at line 401 of file modules.cpp. +Definition at line 400 of file modules.cpp. .PP -References call_handler(). +References InspIRCd::Parser. .PP .nf -402 { -403 call_handler(commandname.c_str(),parameters,pcnt,user); -404 } +401 { +402 ServerInstance->Parser->CallHandler(commandname,parameters,pcnt,user); +403 } .fi .PP .SS "void Server::ChangeGECOS (\fBuserrec\fP * user, \fBstd::string\fP gecos)\fC [virtual]\fP" @@ -513,14 +513,14 @@ Change GECOS (fullname) of a user. .PP You should always call this method to change a user's GECOS rather than writing directly to the fullname member of userrec, as any change applied via this method will be propogated to any linked servers. .PP -Definition at line 499 of file modules.cpp. +Definition at line 498 of file modules.cpp. .PP References ChangeName(). .PP .nf -500 { -501 ChangeName(user,gecos.c_str()); -502 } +499 { +500 ChangeName(user,gecos.c_str()); +501 } .fi .PP .SS "void Server::ChangeHost (\fBuserrec\fP * user, \fBstd::string\fP host)\fC [virtual]\fP" @@ -529,14 +529,14 @@ Change displayed hostname of a user. .PP You should always call this method to change a user's host rather than writing directly to the dhost member of userrec, as any change applied via this method will be propogated to any linked servers. .PP -Definition at line 494 of file modules.cpp. +Definition at line 493 of file modules.cpp. .PP References ChangeDisplayedHost(). .PP .nf -495 { -496 ChangeDisplayedHost(user,host.c_str()); -497 } +494 { +495 ChangeDisplayedHost(user,host.c_str()); +496 } .fi .PP .SS "void Server::ChangeUserNick (\fBuserrec\fP * user, \fBstd::string\fP nickname)\fC [virtual]\fP" @@ -545,14 +545,14 @@ Forces a user nickchange. .PP This command works similarly to SVSNICK, and can be used to implement Q-lines etc. If you specify an invalid nickname, the nick change will be dropped and the target user will receive the error numeric for it. .PP -Definition at line 386 of file modules.cpp. +Definition at line 385 of file modules.cpp. .PP References force_nickchange(). .PP .nf -387 { -388 force_nickchange(user,nickname.c_str()); -389 } +386 { +387 force_nickchange(user,nickname.c_str()); +388 } .fi .PP .SS "\fBstd::string\fP Server::ChanMode (\fBuserrec\fP * User, \fBchanrec\fP * Chan)\fC [virtual]\fP" @@ -561,14 +561,14 @@ Attempts to look up a user's privilages on a channel. .PP This function will return a string containing either @, %, +, or an empty string, representing the user's privilages upon the channel you specify. .PP -Definition at line 524 of file modules.cpp. +Definition at line 523 of file modules.cpp. .PP References cmode(). .PP .nf -525 { -526 return cmode(User,Chan); -527 } +524 { +525 return cmode(User,Chan); +526 } .fi .PP .SS "bool Server::CommonChannels (\fBuserrec\fP * u1, \fBuserrec\fP * u2)\fC [virtual]\fP" @@ -577,14 +577,14 @@ Returns true if two users share a common channel. .PP This method is used internally by the NICK and QUIT commands, and the \fBServer::SendCommon\fP method. .PP -Definition at line 472 of file modules.cpp. +Definition at line 471 of file modules.cpp. .PP References common_channels(). .PP .nf -473 { -474 return (common_channels(u1,u2) != 0); -475 } +472 { +473 return (common_channels(u1,u2) != 0); +474 } .fi .PP .SS "int Server::CountUsers (\fBchanrec\fP * c)\fC [virtual]\fP" @@ -593,103 +593,103 @@ Returns a count of the number of users on a channel. .PP This will NEVER be 0, as if the chanrec exists, it will have at least one user in the channel. .PP -Definition at line 592 of file modules.cpp. +Definition at line 591 of file modules.cpp. .PP .nf -593 { -594 return usercount(c); -595 } +592 { +593 return usercount(c); +594 } .fi .PP .SS "bool Server::DelELine (\fBstd::string\fP hostmask)\fC [virtual]\fP" .PP Deletes a local E-Line. .PP -Definition at line 685 of file modules.cpp. +Definition at line 684 of file modules.cpp. .PP References del_eline(). .PP .nf -686 { -687 return del_eline(hostmask.c_str()); -688 } +685 { +686 return del_eline(hostmask.c_str()); +687 } .fi .PP .SS "bool Server::DelGLine (\fBstd::string\fP hostmask)\fC [virtual]\fP" .PP Deletes a G-Line from all servers on the mesh. .PP -Definition at line 665 of file modules.cpp. +Definition at line 664 of file modules.cpp. .PP References del_gline(). .PP .nf -666 { -667 return del_gline(hostmask.c_str()); -668 } +665 { +666 return del_gline(hostmask.c_str()); +667 } .fi .PP .SS "bool Server::DelKLine (\fBstd::string\fP hostmask)\fC [virtual]\fP" .PP Deletes a local K-Line. .PP -Definition at line 680 of file modules.cpp. +Definition at line 679 of file modules.cpp. .PP References del_kline(). .PP .nf -681 { -682 return del_kline(hostmask.c_str()); -683 } +680 { +681 return del_kline(hostmask.c_str()); +682 } .fi .PP .SS "bool Server::DelQLine (\fBstd::string\fP nickname)\fC [virtual]\fP" .PP Deletes a Q-Line from all servers on the mesh. .PP -Definition at line 670 of file modules.cpp. +Definition at line 669 of file modules.cpp. .PP References del_qline(). .PP .nf -671 { -672 return del_qline(nickname.c_str()); -673 } +670 { +671 return del_qline(nickname.c_str()); +672 } .fi .PP .SS "void Server::DelSocket (\fBInspSocket\fP * sock)\fC [virtual]\fP" .PP Deletes a class derived from \fBInspSocket\fP from the server's socket engine. .PP -Definition at line 334 of file modules.cpp. +Definition at line 333 of file modules.cpp. .PP References module_sockets. .PP .nf -335 { -336 for (std::vector::iterator a = module_sockets.begin(); a < module_sockets.end(); a++) -337 { -338 if (*a == sock) -339 { -340 module_sockets.erase(a); -341 return; -342 } -343 } -344 } +334 { +335 for (std::vector::iterator a = module_sockets.begin(); a < module_sockets.end(); a++) +336 { +337 if (*a == sock) +338 { +339 module_sockets.erase(a); +340 return; +341 } +342 } +343 } .fi .PP .SS "bool Server::DelZLine (\fBstd::string\fP ipaddr)\fC [virtual]\fP" .PP Deletes a Z-Line from all servers on the mesh. .PP -Definition at line 675 of file modules.cpp. +Definition at line 674 of file modules.cpp. .PP References del_zline(). .PP .nf -676 { -677 return del_zline(ipaddr.c_str()); -678 } +675 { +676 return del_zline(ipaddr.c_str()); +677 } .fi .PP .SS "\fBchanrec\fP * Server::FindChannel (\fBstd::string\fP channel)\fC [virtual]\fP" @@ -698,14 +698,14 @@ Attempts to look up a channel and return a pointer to it. .PP This function will return NULL if the channel does not exist. .PP -Definition at line 519 of file modules.cpp. +Definition at line 518 of file modules.cpp. .PP References FindChan(). .PP .nf -520 { -521 return FindChan(channel.c_str()); -522 } +519 { +520 return FindChan(channel.c_str()); +521 } .fi .PP .SS "\fBuserrec\fP * Server::FindDescriptor (int socket)\fC [virtual]\fP" @@ -714,12 +714,12 @@ Attempts to look up a nick using the file descriptor associated with that nick. .PP This function will return NULL if the file descriptor is not associated with a valid user. .PP -Definition at line 514 of file modules.cpp. +Definition at line 513 of file modules.cpp. .PP .nf -515 { -516 return (socket < 65536 ? fd_ref_table[socket] : NULL); -517 } +514 { +515 return (socket < 65536 ? fd_ref_table[socket] : NULL); +516 } .fi .PP .SS "\fBModule\fP * Server::FindModule (\fBstd::string\fP name)\fC [virtual]\fP" @@ -728,21 +728,21 @@ This function finds a module by name. .PP You must provide the filename of the module. If the module cannot be found (is not loaded) the function will return NULL. .PP -Definition at line 724 of file modules.cpp. +Definition at line 723 of file modules.cpp. .PP References MODCOUNT, ServerConfig::module_names, and modules. .PP .nf -725 { -726 for (int i = 0; i <= MODCOUNT; i++) -727 { -728 if (Config->module_names[i] == name) -729 { -730 return modules[i]; -731 } -732 } -733 return NULL; -734 } +724 { +725 for (int i = 0; i <= MODCOUNT; i++) +726 { +727 if (Config->module_names[i] == name) +728 { +729 return modules[i]; +730 } +731 } +732 return NULL; +733 } .fi .PP .SS "\fBuserrec\fP * Server::FindNick (\fBstd::string\fP nick)\fC [virtual]\fP" @@ -751,14 +751,14 @@ Attempts to look up a nick and return a pointer to it. .PP This function will return NULL if the nick does not exist. .PP -Definition at line 509 of file modules.cpp. +Definition at line 508 of file modules.cpp. .PP References Find(). .PP .nf -510 { -511 return Find(nick); -512 } +509 { +510 return Find(nick); +511 } .fi .PP .SS "\fBAdmin\fP Server::GetAdmin ()\fC [virtual]\fP" @@ -767,14 +767,14 @@ Returns the information of the server as returned by the /ADMIN command. .PP See the \fBAdmin\fP class for further information of the return value. The members \fBAdmin::Nick\fP, \fBAdmin::Email\fP and \fBAdmin::Name\fP contain the information for the server where the module is loaded. .PP -Definition at line 549 of file modules.cpp. +Definition at line 548 of file modules.cpp. .PP References ServerConfig::AdminEmail, ServerConfig::AdminName, and ServerConfig::AdminNick. .PP .nf -550 { -551 return Admin(Config->AdminName,Config->AdminEmail,Config->AdminNick); -552 } +549 { +550 return Admin(Config->AdminName,Config->AdminEmail,Config->AdminNick); +551 } .fi .PP .SS "\fBServerConfig\fP * Server::GetConfig ()" @@ -783,54 +783,54 @@ Obtains a pointer to the server's \fBServerConfig\fP object. .PP The \fBServerConfig\fP object contains most of the configuration data of the IRC server, as read from the config file by the core. .PP -Definition at line 324 of file modules.cpp. +Definition at line 323 of file modules.cpp. .PP .nf -325 { -326 return Config; -327 } +324 { +325 return Config; +326 } .fi .PP .SS "\fBstd::string\fP Server::GetNetworkName ()\fC [virtual]\fP" .PP Returns the network name, global to all linked servers. .PP -Definition at line 539 of file modules.cpp. +Definition at line 538 of file modules.cpp. .PP References ServerConfig::Network. .PP .nf -540 { -541 return Config->Network; -542 } +539 { +540 return Config->Network; +541 } .fi .PP .SS "\fBstd::string\fP Server::GetServerDescription ()\fC [virtual]\fP" .PP Returns the server description string of the local server. .PP -Definition at line 544 of file modules.cpp. +Definition at line 543 of file modules.cpp. .PP References ServerConfig::ServerDesc. .PP .nf -545 { -546 return Config->ServerDesc; -547 } +544 { +545 return Config->ServerDesc; +546 } .fi .PP .SS "\fBstd::string\fP Server::GetServerName ()\fC [virtual]\fP" .PP Returns the server name of the server where the module is loaded. .PP -Definition at line 534 of file modules.cpp. +Definition at line 533 of file modules.cpp. .PP References ServerConfig::ServerName. .PP .nf -535 { -536 return Config->ServerName; -537 } +534 { +535 return Config->ServerName; +536 } .fi .PP .SS "\fBchanuserlist\fP Server::GetUsers (\fBchanrec\fP * chan)\fC [virtual]\fP" @@ -839,36 +839,36 @@ Fetches the userlist of a channel. .PP This function must be here and not a member of userrec or chanrec due to include constraints. .PP -Definition at line 374 of file modules.cpp. +Definition at line 373 of file modules.cpp. .PP References chanrec::GetUsers(). .PP .nf -375 { -376 chanuserlist userl; -377 userl.clear(); -378 std::vector *list = chan->GetUsers(); -379 for (std::vector::iterator i = list->begin(); i != list->end(); i++) -380 { -381 char* o = *i; -382 userl.push_back((userrec*)o); -383 } -384 return userl; -385 } +374 { +375 chanuserlist userl; +376 userl.clear(); +377 std::vector *list = chan->GetUsers(); +378 for (std::vector::iterator i = list->begin(); i != list->end(); i++) +379 { +380 char* o = *i; +381 userl.push_back((userrec*)o); +382 } +383 return userl; +384 } .fi .PP .SS "\fBstd::string\fP Server::GetVersion ()" .PP Returns the version string of this server. .PP -Definition at line 329 of file modules.cpp. +Definition at line 328 of file modules.cpp. .PP References InspIRCd::GetVersionString(). .PP .nf -330 { -331 return ServerInstance->GetVersionString(); -332 } +329 { +330 return ServerInstance->GetVersionString(); +331 } .fi .PP .SS "bool Server::IsNick (\fBstd::string\fP nick)\fC [virtual]\fP" @@ -877,14 +877,14 @@ Returns true if a nick is valid. .PP Nicks for unregistered connections will return false. .PP -Definition at line 504 of file modules.cpp. +Definition at line 503 of file modules.cpp. .PP References isnick(). .PP .nf -505 { -506 return (isnick(nick.c_str()) != 0); -507 } +504 { +505 return (isnick(nick.c_str()) != 0); +506 } .fi .PP .SS "bool Server::IsOnChannel (\fBuserrec\fP * User, \fBchanrec\fP * Chan)\fC [virtual]\fP" @@ -893,14 +893,14 @@ Checks if a user is on a channel. .PP This function will return true or false to indicate if user 'User' is on channel 'Chan'. .PP -Definition at line 529 of file modules.cpp. +Definition at line 528 of file modules.cpp. .PP References has_channel(). .PP .nf -530 { -531 return has_channel(User,Chan); -532 } +529 { +530 return has_channel(User,Chan); +531 } .fi .PP .SS "bool Server::IsUlined (\fBstd::string\fP server)\fC [virtual]\fP" @@ -909,62 +909,62 @@ Returns true if the servername you give is ulined. .PP ULined servers have extra privilages. They are allowed to change nicknames on remote servers, change modes of clients which are on remote servers and set modes of channels where there are no channel operators for that channel on the ulined server, amongst other things. Ulined server data is also broadcast across the mesh at all times as opposed to selectively messaged in the case of normal servers, as many ulined server types (such as services) do not support meshed links and must operate in this manner. .PP -Definition at line 396 of file modules.cpp. +Definition at line 395 of file modules.cpp. .PP References is_uline(). .PP .nf -397 { -398 return is_uline(server.c_str()); -399 } +396 { +397 return is_uline(server.c_str()); +398 } .fi .PP .SS "bool Server::IsValidMask (\fBstd::string\fP mask)\fC [virtual]\fP" .PP Returns true if a nick!ident string is correctly formatted, false if otherwise. .PP -Definition at line 695 of file modules.cpp. +Definition at line 694 of file modules.cpp. .PP .nf -696 { -697 const char* dest = mask.c_str(); -698 if (strchr(dest,'!')==0) -699 return false; -700 if (strchr(dest,'@')==0) -701 return false; -702 for (unsigned int i = 0; i < strlen(dest); i++) -703 if (dest[i] < 32) -704 return false; -705 for (unsigned int i = 0; i < strlen(dest); i++) -706 if (dest[i] > 126) -707 return false; -708 unsigned int c = 0; -709 for (unsigned int i = 0; i < strlen(dest); i++) -710 if (dest[i] == '!') -711 c++; -712 if (c>1) -713 return false; -714 c = 0; -715 for (unsigned int i = 0; i < strlen(dest); i++) -716 if (dest[i] == '@') -717 c++; -718 if (c>1) -719 return false; -720 -721 return true; -722 } +695 { +696 const char* dest = mask.c_str(); +697 if (strchr(dest,'!')==0) +698 return false; +699 if (strchr(dest,'@')==0) +700 return false; +701 for (unsigned int i = 0; i < strlen(dest); i++) +702 if (dest[i] < 32) +703 return false; +704 for (unsigned int i = 0; i < strlen(dest); i++) +705 if (dest[i] > 126) +706 return false; +707 unsigned int c = 0; +708 for (unsigned int i = 0; i < strlen(dest); i++) +709 if (dest[i] == '!') +710 c++; +711 if (c>1) +712 return false; +713 c = 0; +714 for (unsigned int i = 0; i < strlen(dest); i++) +715 if (dest[i] == '@') +716 c++; +717 if (c>1) +718 return false; +719 +720 return true; +721 } .fi .PP .SS "bool Server::IsValidModuleCommand (\fBstd::string\fP commandname, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP" .PP -Definition at line 406 of file modules.cpp. +Definition at line 405 of file modules.cpp. .PP -References is_valid_cmd(). +References InspIRCd::Parser. .PP .nf -407 { -408 return is_valid_cmd(commandname.c_str(), pcnt, user); -409 } +406 { +407 return ServerInstance->Parser->IsValidCommand(commandname, pcnt, user); +408 } .fi .PP .SS "\fBchanrec\fP * Server::JoinUserToChannel (\fBuserrec\fP * user, \fBstd::string\fP cname, \fBstd::string\fP key)\fC [virtual]\fP" @@ -973,14 +973,14 @@ Forces a user to join a channel. .PP This is similar to svsjoin and can be used to implement redirection, etc. On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to. On failure, the result is NULL. .PP -Definition at line 364 of file modules.cpp. +Definition at line 363 of file modules.cpp. .PP References add_channel(). .PP .nf -365 { -366 return add_channel(user,cname.c_str(),key.c_str(),false); -367 } +364 { +365 return add_channel(user,cname.c_str(),key.c_str(),false); +366 } .fi .PP .SS "void Server::Log (int level, \fBstd::string\fP s)\fC [virtual]\fP" @@ -989,14 +989,14 @@ Writes a log string. .PP This method writes a line of text to the log. If the level given is lower than the level given in the configuration, this command has no effect. .PP -Definition at line 411 of file modules.cpp. +Definition at line 410 of file modules.cpp. .PP References log(). .PP .nf -412 { -413 log(level,'%s',s.c_str()); -414 } +411 { +412 log(level,'%s',s.c_str()); +413 } .fi .PP .SS "bool Server::MatchText (\fBstd::string\fP sliteral, \fBstd::string\fP spattern)\fC [virtual]\fP" @@ -1005,15 +1005,15 @@ Matches text against a glob pattern. .PP Uses the ircd's internal matching function to match string against a globbing pattern, e.g. *!*@*.com Returns true if the literal successfully matches the pattern, false if otherwise. .PP -Definition at line 351 of file modules.cpp. +Definition at line 350 of file modules.cpp. .PP .nf -352 { -353 char literal[MAXBUF],pattern[MAXBUF]; -354 strlcpy(literal,sliteral.c_str(),MAXBUF); -355 strlcpy(pattern,spattern.c_str(),MAXBUF); -356 return match(literal,pattern); -357 } +351 { +352 char literal[MAXBUF],pattern[MAXBUF]; +353 strlcpy(literal,sliteral.c_str(),MAXBUF); +354 strlcpy(pattern,spattern.c_str(),MAXBUF); +355 return match(literal,pattern); +356 } .fi .PP .SS "\fBchanrec\fP * Server::PartUserFromChannel (\fBuserrec\fP * user, \fBstd::string\fP cname, \fBstd::string\fP reason)\fC [virtual]\fP" @@ -1022,14 +1022,14 @@ Forces a user to part a channel. .PP This is similar to svspart and can be used to implement redirection, etc. Although the return value of this function is a pointer to a channel record, the returned data is undefined and should not be read or written to. This behaviour may be changed in a future version. .PP -Definition at line 369 of file modules.cpp. +Definition at line 368 of file modules.cpp. .PP References del_channel(). .PP .nf -370 { -371 return del_channel(user,cname.c_str(),reason.c_str(),false); -372 } +369 { +370 return del_channel(user,cname.c_str(),reason.c_str(),false); +371 } .fi .PP .SS "bool Server::PseudoToUser (\fBuserrec\fP * alive, \fBuserrec\fP * zombie, \fBstd::string\fP message)\fC [virtual]\fP" @@ -1038,39 +1038,39 @@ This user takes one user, and switches their file descriptor with another user, .PP The user in 'alive' is booted off the server with the given message. The user referred to by 'zombie' should have previously been locked with Server::ZombifyUser, otherwise stale sockets and file descriptor leaks can occur. After this call, the pointer to alive will be invalid, and the pointer to zombie will be equivalent in effect to the old pointer to alive. .PP -Definition at line 610 of file modules.cpp. +Definition at line 609 of file modules.cpp. .PP References userrec::chans, userrec::ClearBuffer(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, kill_link(), chanrec::name, userrec::nick, chanrec::setby, chanrec::topic, chanrec::topicset, Write(), WriteFrom(), and WriteServ(). .PP .nf -611 { -612 zombie->fd = alive->fd; -613 alive->fd = FD_MAGIC_NUMBER; -614 alive->ClearBuffer(); -615 Write(zombie->fd,':%s!%s@%s NICK %s',alive->nick,alive->ident,alive->host,zombie->nick); -616 kill_link(alive,message.c_str()); -617 fd_ref_table[zombie->fd] = zombie; -618 for (unsigned int i = 0; i < zombie->chans.size(); i++) -619 { -620 if (zombie->chans[i].channel != NULL) -621 { -622 if (zombie->chans[i].channel->name) -623 { -624 chanrec* Ptr = zombie->chans[i].channel; -625 WriteFrom(zombie->fd,zombie,'JOIN %s',Ptr->name); -626 if (Ptr->topicset) -627 { -628 WriteServ(zombie->fd,'332 %s %s :%s', zombie->nick, Ptr->name, Ptr->topic); -629 WriteServ(zombie->fd,'333 %s %s %s %d', zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset); -630 } -631 userlist(zombie,Ptr); -632 WriteServ(zombie->fd,'366 %s %s :End of /NAMES list.', zombie->nick, Ptr->name); -633 -634 } -635 } -636 } -637 return true; -638 } +610 { +611 zombie->fd = alive->fd; +612 alive->fd = FD_MAGIC_NUMBER; +613 alive->ClearBuffer(); +614 Write(zombie->fd,':%s!%s@%s NICK %s',alive->nick,alive->ident,alive->host,zombie->nick); +615 kill_link(alive,message.c_str()); +616 fd_ref_table[zombie->fd] = zombie; +617 for (unsigned int i = 0; i < zombie->chans.size(); i++) +618 { +619 if (zombie->chans[i].channel != NULL) +620 { +621 if (zombie->chans[i].channel->name) +622 { +623 chanrec* Ptr = zombie->chans[i].channel; +624 WriteFrom(zombie->fd,zombie,'JOIN %s',Ptr->name); +625 if (Ptr->topicset) +626 { +627 WriteServ(zombie->fd,'332 %s %s :%s', zombie->nick, Ptr->name, Ptr->topic); +628 WriteServ(zombie->fd,'333 %s %s %s %d', zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset); +629 } +630 userlist(zombie,Ptr); +631 WriteServ(zombie->fd,'366 %s %s :End of /NAMES list.', zombie->nick, Ptr->name); +632 +633 } +634 } +635 } +636 return true; +637 } .fi .PP .SS "void Server::QuitUser (\fBuserrec\fP * user, \fBstd::string\fP reason)\fC [virtual]\fP" @@ -1083,27 +1083,27 @@ WARNING! .PP Once you call this function, userrec* user will immediately become INVALID. You MUST NOT write to, or read from this pointer after calling the QuitUser method UNDER ANY CIRCUMSTANCES! The best course of action after calling this method is to immediately bail from your handler. .PP -Definition at line 391 of file modules.cpp. +Definition at line 390 of file modules.cpp. .PP References kill_link(). .PP .nf -392 { -393 kill_link(user,reason.c_str()); -394 } +391 { +392 kill_link(user,reason.c_str()); +393 } .fi .PP .SS "void Server::RehashServer ()\fC [virtual]\fP" .PP -Definition at line 318 of file modules.cpp. +Definition at line 317 of file modules.cpp. .PP References ServerConfig::Read(), and WriteOpers(). .PP .nf -319 { -320 WriteOpers('*** Rehashing config file'); -321 Config->Read(false,NULL); -322 } +318 { +319 WriteOpers('*** Rehashing config file'); +320 Config->Read(false,NULL); +321 } .fi .PP .SS "void Server::Send (int Socket, \fBstd::string\fP s)\fC [virtual]\fP" @@ -1112,14 +1112,14 @@ Sends a line of text down a TCP/IP socket. .PP This method writes a line of text to an established socket, cutting it to 510 characters plus a carriage return and linefeed if required. .PP -Definition at line 426 of file modules.cpp. +Definition at line 425 of file modules.cpp. .PP References Write(). .PP .nf -427 { -428 Write(Socket,'%s',s.c_str()); -429 } +426 { +427 Write(Socket,'%s',s.c_str()); +428 } .fi .PP .SS "void Server::SendChannel (\fBuserrec\fP * User, \fBchanrec\fP * Channel, \fBstd::string\fP s, bool IncludeSender)\fC [virtual]\fP" @@ -1128,21 +1128,21 @@ Sends text from a user to a channel (mulicast). .PP This method writes a line of text to a channel, with the given user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in MODE (see RFC 1459). .PP -Definition at line 460 of file modules.cpp. +Definition at line 459 of file modules.cpp. .PP References ChanExceptSender(), and WriteChannel(). .PP .nf -461 { -462 if (IncludeSender) -463 { -464 WriteChannel(Channel,User,'%s',s.c_str()); -465 } -466 else -467 { -468 ChanExceptSender(Channel,User,'%s',s.c_str()); -469 } -470 } +460 { +461 if (IncludeSender) +462 { +463 WriteChannel(Channel,User,'%s',s.c_str()); +464 } +465 else +466 { +467 ChanExceptSender(Channel,User,'%s',s.c_str()); +468 } +469 } .fi .PP .SS "void Server::SendChannelServerNotice (\fBstd::string\fP ServName, \fBchanrec\fP * Channel, \fBstd::string\fP text)\fC [virtual]\fP" @@ -1151,12 +1151,12 @@ Writes text to a channel, but from a server, including all. .PP This can be used to send server notices to a group of users. .PP -Definition at line 455 of file modules.cpp. +Definition at line 454 of file modules.cpp. .PP .nf -456 { -457 WriteChannelWithServ((char*)ServName.c_str(), Channel, '%s', text.c_str()); -458 } +455 { +456 WriteChannelWithServ((char*)ServName.c_str(), Channel, '%s', text.c_str()); +457 } .fi .PP .SS "void Server::SendCommon (\fBuserrec\fP * User, \fBstd::string\fP text, bool IncludeSender)\fC [virtual]\fP" @@ -1165,21 +1165,21 @@ Sends text from a user to one or more channels (mulicast). .PP This method writes a line of text to all users which share a common channel with a given user, with the user's nick/ident/host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in NICK (see RFC 1459). Otherwise, it is only sent to the other recipients, as seen in QUIT. .PP -Definition at line 477 of file modules.cpp. +Definition at line 476 of file modules.cpp. .PP References WriteCommon(), and WriteCommonExcept(). .PP .nf -478 { -479 if (IncludeSender) -480 { -481 WriteCommon(User,'%s',text.c_str()); -482 } -483 else -484 { -485 WriteCommonExcept(User,'%s',text.c_str()); -486 } -487 } +477 { +478 if (IncludeSender) +479 { +480 WriteCommon(User,'%s',text.c_str()); +481 } +482 else +483 { +484 WriteCommonExcept(User,'%s',text.c_str()); +485 } +486 } .fi .PP .SS "void Server::SendFrom (int Socket, \fBuserrec\fP * User, \fBstd::string\fP s)\fC [virtual]\fP" @@ -1188,14 +1188,14 @@ Sends text from a user to a socket. .PP This method writes a line of text to an established socket, with the given user's nick/ident /host combination prepended, as used in PRIVSG etc commands (see RFC 1459) .PP -Definition at line 436 of file modules.cpp. +Definition at line 435 of file modules.cpp. .PP References WriteFrom(). .PP .nf -437 { -438 WriteFrom(Socket,User,'%s',s.c_str()); -439 } +436 { +437 WriteFrom(Socket,User,'%s',s.c_str()); +438 } .fi .PP .SS "void Server::SendMode (char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [virtual]\fP" @@ -1218,14 +1218,14 @@ Srv->SendMode(modes,3,user); .PP The modes will originate from the server where the command was issued, however responses (e.g. numerics) will be sent to the user you provide as the third parameter. You must be sure to get the number of parameters correct in the pcnt parameter otherwise you could leave your server in an unstable state! .PP -Definition at line 421 of file modules.cpp. +Definition at line 420 of file modules.cpp. .PP -References server_mode(). +References InspIRCd::ModeGrok, and ModeParser::ServerMode(). .PP .nf -422 { -423 server_mode(parameters,pcnt,user); -424 } +421 { +422 ServerInstance->ModeGrok->ServerMode(parameters,pcnt,user); +423 } .fi .PP .SS "void Server::SendOpers (\fBstd::string\fP s)\fC [virtual]\fP" @@ -1234,14 +1234,14 @@ Sends text to all opers. .PP This method sends a server notice to all opers with the usermode +s. .PP -Definition at line 346 of file modules.cpp. +Definition at line 345 of file modules.cpp. .PP References WriteOpers(). .PP .nf -347 { -348 WriteOpers('%s',s.c_str()); -349 } +346 { +347 WriteOpers('%s',s.c_str()); +348 } .fi .PP .SS "void Server::SendServ (int Socket, \fBstd::string\fP s)\fC [virtual]\fP" @@ -1250,14 +1250,14 @@ Sends text from the server to a socket. .PP This method writes a line of text to an established socket, with the servername prepended as used by numerics (see RFC 1459) .PP -Definition at line 431 of file modules.cpp. +Definition at line 430 of file modules.cpp. .PP References WriteServ(). .PP .nf -432 { -433 WriteServ(Socket,'%s',s.c_str()); -434 } +431 { +432 WriteServ(Socket,'%s',s.c_str()); +433 } .fi .PP .SS "void Server::SendTo (\fBuserrec\fP * Source, \fBuserrec\fP * Dest, \fBstd::string\fP s)\fC [virtual]\fP" @@ -1274,23 +1274,23 @@ The format will become: .PP Which is useful for numerics and server notices to single users, etc. .PP -Definition at line 441 of file modules.cpp. +Definition at line 440 of file modules.cpp. .PP References connection::fd, Write(), and WriteTo(). .PP .nf -442 { -443 if (!Source) -444 { -445 // if source is NULL, then the message originates from the local server -446 Write(Dest->fd,':%s %s',this->GetServerName().c_str(),s.c_str()); -447 } -448 else -449 { -450 // otherwise it comes from the user specified -451 WriteTo(Source,Dest,'%s',s.c_str()); -452 } -453 } +441 { +442 if (!Source) +443 { +444 // if source is NULL, then the message originates from the local server +445 Write(Dest->fd,':%s %s',this->GetServerName().c_str(),s.c_str()); +446 } +447 else +448 { +449 // otherwise it comes from the user specified +450 WriteTo(Source,Dest,'%s',s.c_str()); +451 } +452 } .fi .PP .SS "void Server::SendToModeMask (\fBstd::string\fP modes, int flags, \fBstd::string\fP text)\fC [virtual]\fP" @@ -1303,12 +1303,12 @@ Serv->SendToModeMask('xi', WM_OR, 'm00'); .PP Then the text 'm00' will be sent to all users with EITHER mode x or i. Conversely if you used WM_AND, the user must have both modes set to receive the message. .PP -Definition at line 359 of file modules.cpp. +Definition at line 358 of file modules.cpp. .PP .nf -360 { -361 WriteMode(modes.c_str(),flags,'%s',text.c_str()); -362 } +359 { +360 WriteMode(modes.c_str(),flags,'%s',text.c_str()); +361 } .fi .PP .SS "void Server::SendWallops (\fBuserrec\fP * User, \fBstd::string\fP text)\fC [virtual]\fP" @@ -1317,14 +1317,14 @@ Sends a WALLOPS message. .PP This method writes a WALLOPS message to all users with the +w flag, originating from the specified user. .PP -Definition at line 489 of file modules.cpp. +Definition at line 488 of file modules.cpp. .PP References WriteWallOps(). .PP .nf -490 { -491 WriteWallOps(User,false,'%s',text.c_str()); -492 } +489 { +490 WriteWallOps(User,false,'%s',text.c_str()); +491 } .fi .PP .SS "bool Server::UserToPseudo (\fBuserrec\fP * user, \fBstd::string\fP message)\fC [virtual]\fP" @@ -1333,21 +1333,21 @@ Remove a user's connection to the irc server, but leave their client in existenc .PP When you call this function, the user's file descriptor will be replaced with the value of FD_MAGIC_NUMBER and their old file descriptor will be closed. This idle client will remain until it is restored with a valid file descriptor, or is removed from IRC by an operator After this call, the pointer to user will be invalid. .PP -Definition at line 598 of file modules.cpp. +Definition at line 597 of file modules.cpp. .PP -References userrec::ClearBuffer(), SocketEngine::DelFd(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, and Write(). +References userrec::ClearBuffer(), SocketEngine::DelFd(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, InspIRCd::SE, and Write(). .PP .nf -599 { -600 unsigned int old_fd = user->fd; -601 user->fd = FD_MAGIC_NUMBER; -602 user->ClearBuffer(); -603 Write(old_fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,message.c_str()); -604 SE->DelFd(old_fd); -605 shutdown(old_fd,2); -606 close(old_fd); -607 return true; -608 } +598 { +599 unsigned int old_fd = user->fd; +600 user->fd = FD_MAGIC_NUMBER; +601 user->ClearBuffer(); +602 Write(old_fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,message.c_str()); +603 ServerInstance->SE->DelFd(old_fd); +604 shutdown(old_fd,2); +605 close(old_fd); +606 return true; +607 } .fi .PP diff --git a/docs/man/man3/ServerConfig.3 b/docs/man/man3/ServerConfig.3 index 445d8b097..e35314eae 100644 --- a/docs/man/man3/ServerConfig.3 +++ b/docs/man/man3/ServerConfig.3 @@ -1,4 +1,4 @@ -.TH "ServerConfig" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ServerConfig" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -44,6 +44,15 @@ Inherits \fBclassbase\fP. .ti -1c .RI "int \fBEnumValues\fP (std::stringstream *config, const char *tag, int index)" .br +.ti -1c +.RI "\fBModule\fP * \fBGetIOHook\fP (int port)" +.br +.ti -1c +.RI "bool \fBAddIOHook\fP (int port, \fBModule\fP *iomod)" +.br +.ti -1c +.RI "bool \fBDelIOHook\fP (int port)" +.br .in -1c .SS "Public Attributes" @@ -191,6 +200,10 @@ Inherits \fBclassbase\fP. .RI "int \fBports\fP [255]" .br .RI "\fIA list of ports which the server is listening on. \fP" +.ti -1c +.RI "std::map< int, \fBModule\fP * > \fBIOHookModule\fP" +.br +.RI "\fIA list of ports claimed by IO Modules. \fP" .in -1c .SS "Private Member Functions" @@ -218,13 +231,15 @@ This class holds the bulk of the runtime configuration for the ircd. It allows for reading new config values, accessing configuration files, and storage of the configuration data needed to run the ircd, such as the servername, connect classes, /ADMIN data, MOTDs and filenames etc. .PP -Definition at line 39 of file inspircd_io.h. +Definition at line 40 of file inspircd_io.h. .SH "Constructor & Destructor Documentation" .PP .SS "ServerConfig::ServerConfig ()" .PP .SH "Member Function Documentation" .PP +.SS "bool ServerConfig::AddIOHook (int port, \fBModule\fP * iomod)" +.PP .SS "void ServerConfig::ClearStack ()" .PP Clears the include stack in preperation for a \fBRead()\fP call. @@ -239,6 +254,8 @@ This private method processes one line of configutation, appending errors to err Referenced by userrec::HasPermission(). .SS "int ServerConfig::ConfValueEnum (char * tag, std::stringstream * config)" .PP +.SS "bool ServerConfig::DelIOHook (int port)" +.PP .SS "int ServerConfig::EnumConf (std::stringstream * config_f, const char * tag)" .PP Referenced by ConfigReader::Enumerate(). @@ -250,6 +267,9 @@ Referenced by ConfigReader::EnumerateValues(). Used by the config file subsystem to safely read a C-style string without dependency upon any certain style of linefeed, e.g. .PP it can read both windows and UNIX style linefeeds transparently. +.SS "\fBModule\fP* ServerConfig::GetIOHook (int port)" +.PP +Referenced by kill_link(), and kill_link_silent(). .SS "bool ServerConfig::LoadConf (const char * filename, std::stringstream * target, std::stringstream * errorstream)" .PP Referenced by ConfigReader::ConfigReader(). @@ -269,213 +289,224 @@ Referenced by ConfigReader::ReadFlag(), ConfigReader::ReadInteger(), and ConfigR .PP A list of IP addresses the server is listening on. .PP -Definition at line 216 of file inspircd_io.h. +Definition at line 217 of file inspircd_io.h. .SS "char \fBServerConfig::AdminEmail\fP[MAXBUF]" .PP Holds the email address of the admin, for output in the /ADMIN command. .PP -Definition at line 89 of file inspircd_io.h. +Definition at line 90 of file inspircd_io.h. .PP Referenced by Server::GetAdmin(). .SS "char \fBServerConfig::AdminName\fP[MAXBUF]" .PP Holds the admin's name, for output in the /ADMIN command. .PP -Definition at line 84 of file inspircd_io.h. +Definition at line 85 of file inspircd_io.h. .PP Referenced by Server::GetAdmin(). .SS "char \fBServerConfig::AdminNick\fP[MAXBUF]" .PP Holds the admin's nickname, for output in the /ADMIN command. .PP -Definition at line 94 of file inspircd_io.h. +Definition at line 95 of file inspircd_io.h. .PP Referenced by Server::GetAdmin(). .SS "bool \fBServerConfig::AllowHalfop\fP" .PP If this value is true, halfops have been enabled in the configuration file. .PP -Definition at line 171 of file inspircd_io.h. +Definition at line 172 of file inspircd_io.h. .SS "\fBClassVector\fP \fBServerConfig::Classes\fP" .PP The connect classes in use by the IRC server. .PP -Definition at line 242 of file inspircd_io.h. +Definition at line 243 of file inspircd_io.h. +.PP +Referenced by AddClient(). .SS "std::stringstream \fBServerConfig::config_f\fP" .PP The parsed configuration file as a stringstream. .PP You should pass this to any configuration methods of this class, and not access it directly. It is recommended that modules use \fBConfigReader\fP instead which provides a simpler abstraction of configuration files. .PP -Definition at line 238 of file inspircd_io.h. +Definition at line 239 of file inspircd_io.h. .PP Referenced by userrec::HasPermission(). .SS "int \fBServerConfig::debugging\fP" .PP True if the DEBUG loglevel is selected. .PP -Definition at line 202 of file inspircd_io.h. +Definition at line 203 of file inspircd_io.h. .SS "int \fBServerConfig::DieDelay\fP" .PP How many seconds to wait before exiting the program when /DIE is correctly issued. .PP -Definition at line 211 of file inspircd_io.h. +Definition at line 212 of file inspircd_io.h. .SS "char \fBServerConfig::diepass\fP[MAXBUF]" .PP The admin-configured /DIE password. .PP -Definition at line 98 of file inspircd_io.h. +Definition at line 99 of file inspircd_io.h. .SS "char \fBServerConfig::DieValue\fP[MAXBUF]" .PP The last string found within a tag, or an empty string. .PP -Definition at line 121 of file inspircd_io.h. +Definition at line 122 of file inspircd_io.h. .SS "char \fBServerConfig::DisabledCommands\fP[MAXBUF]" .PP This variable contains a space-seperated list of commands which are disabled by the administrator of the server for non-opers. .PP -Definition at line 131 of file inspircd_io.h. +Definition at line 132 of file inspircd_io.h. .SS "int \fBServerConfig::dns_timeout\fP" .PP The number of seconds the \fBDNS\fP subsystem will wait before timing out any request. .PP -Definition at line 176 of file inspircd_io.h. +Definition at line 177 of file inspircd_io.h. +.PP +Referenced by AddClient(). .SS "char \fBServerConfig::DNSServer\fP[MAXBUF]" .PP The \fBDNS\fP server to use for \fBDNS\fP queries. .PP -Definition at line 125 of file inspircd_io.h. +Definition at line 126 of file inspircd_io.h. .SS "std::vector<\fBstd::string\fP> \fBServerConfig::include_stack\fP\fC [private]\fP" .PP This variable holds the names of all files included from the main one. .PP This is used to make sure that no files are recursively included. .PP -Definition at line 47 of file inspircd_io.h. +Definition at line 48 of file inspircd_io.h. +.SS "std::map \fBServerConfig::IOHookModule\fP" +.PP +A list of ports claimed by IO Modules. +.PP +Definition at line 256 of file inspircd_io.h. .SS "FILE* \fBServerConfig::log_file\fP" .PP The file handle of the logfile. .PP If this value is NULL, the log file is not open, probably due to a permissions error on startup (this should not happen in normal operation!). .PP -Definition at line 151 of file inspircd_io.h. +Definition at line 152 of file inspircd_io.h. .SS "int \fBServerConfig::LogLevel\fP" .PP The loglevel in use by the IRC server. .PP -Definition at line 206 of file inspircd_io.h. +Definition at line 207 of file inspircd_io.h. .SS "int \fBServerConfig::MaxConn\fP" .PP The value to be used for listen() backlogs as default. .PP -Definition at line 187 of file inspircd_io.h. +Definition at line 188 of file inspircd_io.h. .SS "int \fBServerConfig::MaxWhoResults\fP" .PP The maximum number of /WHO results allowed in any single /WHO command. .PP -Definition at line 198 of file inspircd_io.h. +Definition at line 199 of file inspircd_io.h. .SS "char \fBServerConfig::ModPath\fP[1024]" .PP The full path to the modules directory. .PP This is either set at compile time, or overridden in the configuration file via the tag. .PP -Definition at line 138 of file inspircd_io.h. +Definition at line 139 of file inspircd_io.h. .SS "std::vector<\fBstd::string\fP> \fBServerConfig::module_names\fP" .PP A list of module names (names only, no paths) which are currently loaded by the server. .PP -Definition at line 247 of file inspircd_io.h. +Definition at line 248 of file inspircd_io.h. .PP Referenced by Server::FindModule(). .SS "\fBfile_cache\fP \fBServerConfig::MOTD\fP" .PP The MOTD file, cached in a file_cache type. .PP -Definition at line 220 of file inspircd_io.h. +Definition at line 221 of file inspircd_io.h. .SS "char \fBServerConfig::motd\fP[MAXBUF]" .PP The pathname and filename of the message of the day file, as defined by the administrator. .PP -Definition at line 107 of file inspircd_io.h. +Definition at line 108 of file inspircd_io.h. .SS "char \fBServerConfig::MyExecutable\fP[1024]" .PP The full pathname to the executable, as given in argv[0] when the program starts. .PP -Definition at line 143 of file inspircd_io.h. +Definition at line 144 of file inspircd_io.h. .SS "int \fBServerConfig::NetBufferSize\fP" .PP The size of the read() buffer in the user handling code, used to read data into a user's recvQ. .PP -Definition at line 182 of file inspircd_io.h. +Definition at line 183 of file inspircd_io.h. .SS "char \fBServerConfig::Network\fP[MAXBUF]" .PP -Definition at line 74 of file inspircd_io.h. +Definition at line 75 of file inspircd_io.h. .PP -Referenced by Server::GetNetworkName(). +Referenced by FullConnectUser(), and Server::GetNetworkName(). .SS "bool \fBServerConfig::nofork\fP" .PP If this value is true, the owner of the server specified -nofork on the command line, causing the daemon to stay in the foreground. .PP -Definition at line 158 of file inspircd_io.h. +Definition at line 159 of file inspircd_io.h. .SS "char \fBServerConfig::PID\fP[1024]" .PP The full pathname and filename of the PID file as defined in the configuration. .PP -Definition at line 229 of file inspircd_io.h. +Definition at line 230 of file inspircd_io.h. .SS "int \fBServerConfig::ports\fP[255]" .PP A list of ports which the server is listening on. .PP -Definition at line 251 of file inspircd_io.h. +Definition at line 252 of file inspircd_io.h. .SS "char \fBServerConfig::PrefixQuit\fP[MAXBUF]" .PP The quit prefix in use, or an empty string. .PP -Definition at line 116 of file inspircd_io.h. +Definition at line 117 of file inspircd_io.h. .SS "char \fBServerConfig::restartpass\fP[MAXBUF]" .PP The admin-configured /RESTART password. .PP -Definition at line 102 of file inspircd_io.h. +Definition at line 103 of file inspircd_io.h. .SS "\fBfile_cache\fP \fBServerConfig::RULES\fP" .PP The RULES file, cached in a file_cache type. .PP -Definition at line 224 of file inspircd_io.h. +Definition at line 225 of file inspircd_io.h. .SS "char \fBServerConfig::rules\fP[MAXBUF]" .PP The pathname and filename of the rules file, as defined by the administrator. .PP -Definition at line 112 of file inspircd_io.h. +Definition at line 113 of file inspircd_io.h. .SS "char \fBServerConfig::ServerDesc\fP[MAXBUF]" .PP Holds the description of the local server as defined by the administrator. .PP -Definition at line 79 of file inspircd_io.h. +Definition at line 80 of file inspircd_io.h. .PP Referenced by Server::GetServerDescription(). .SS "char \fBServerConfig::ServerName\fP[MAXBUF]" .PP Holds the server name of the local server as defined by the administrator. .PP -Definition at line 68 of file inspircd_io.h. +Definition at line 69 of file inspircd_io.h. .PP -Referenced by Server::GetServerName(), and userrec::userrec(). +Referenced by AddClient(), FullConnectUser(), Server::GetServerName(), and userrec::userrec(). .SS "unsigned int \fBServerConfig::SoftLimit\fP" .PP The soft limit value assigned to the irc server. .PP The IRC server will not allow more than this number of local users. .PP -Definition at line 193 of file inspircd_io.h. +Definition at line 194 of file inspircd_io.h. +.PP +Referenced by AddClient(). .SS "bool \fBServerConfig::unlimitcore\fP" .PP If this value is true, the owner of the server has chosen to unlimit the coredump size to as large a value as his account settings will allow. .PP This is often used when debugging. .PP -Definition at line 166 of file inspircd_io.h. +Definition at line 167 of file inspircd_io.h. .SH "Author" .PP diff --git a/docs/man/man3/SocketEngine.3 b/docs/man/man3/SocketEngine.3 index e61149335..46b4f51ff 100644 --- a/docs/man/man3/SocketEngine.3 +++ b/docs/man/man3/SocketEngine.3 @@ -1,4 +1,4 @@ -.TH "SocketEngine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "SocketEngine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -121,7 +121,7 @@ Definition at line 65 of file socketengine.cpp. .PP References DEBUG, EngineHandle, fds, log(), ref, and X_READBIT. .PP -Referenced by InspSocket::InspSocket(), and InspSocket::Poll(). +Referenced by AddClient(), InspSocket::InspSocket(), and InspSocket::Poll(). .PP .nf 66 { @@ -170,7 +170,7 @@ Definition at line 103 of file socketengine.cpp. .PP References DEBUG, EngineHandle, fds, log(), ref, and X_READBIT. .PP -Referenced by InspSocket::Poll(), and Server::UserToPseudo(). +Referenced by kill_link(), kill_link_silent(), InspSocket::Poll(), and Server::UserToPseudo(). .PP .nf 104 { diff --git a/docs/man/man3/Version.3 b/docs/man/man3/Version.3 index 003e3723c..a20d493b0 100644 --- a/docs/man/man3/Version.3 +++ b/docs/man/man3/Version.3 @@ -1,4 +1,4 @@ -.TH "Version" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "Version" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -44,34 +44,34 @@ Holds a module's Version information The four members (set by the constructor on A class of type Version is returned by the GetVersion method of the \fBModule\fP class. .PP -Definition at line 113 of file modules.h. +Definition at line 131 of file modules.h. .SH "Constructor & Destructor Documentation" .PP .SS "Version::Version (int major, int minor, int revision, int build, int flags)" .PP -Definition at line 159 of file modules.cpp. +Definition at line 158 of file modules.cpp. .PP .nf -159 : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { }; +158 : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { }; .fi .PP .SH "Member Data Documentation" .PP .SS "const int \fBVersion::Build\fP" .PP -Definition at line 116 of file modules.h. +Definition at line 134 of file modules.h. .SS "const int \fBVersion::Flags\fP" .PP -Definition at line 116 of file modules.h. +Definition at line 134 of file modules.h. .SS "const int \fBVersion::Major\fP" .PP -Definition at line 116 of file modules.h. +Definition at line 134 of file modules.h. .SS "const int \fBVersion::Minor\fP" .PP -Definition at line 116 of file modules.h. +Definition at line 134 of file modules.h. .SS "const int \fBVersion::Revision\fP" .PP -Definition at line 116 of file modules.h. +Definition at line 134 of file modules.h. .SH "Author" .PP diff --git a/docs/man/man3/WhoWasUser.3 b/docs/man/man3/WhoWasUser.3 index 094ed41ae..fb447c6eb 100644 --- a/docs/man/man3/WhoWasUser.3 +++ b/docs/man/man3/WhoWasUser.3 @@ -1,4 +1,4 @@ -.TH "WhoWasUser" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "WhoWasUser" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -39,30 +39,44 @@ WhoWasUser \- A lightweight userrec used by WHOWAS. .PP A lightweight userrec used by WHOWAS. .PP -Definition at line 332 of file users.h. +Definition at line 336 of file users.h. .SH "Member Data Documentation" .PP .SS "char \fBWhoWasUser::dhost\fP[160]" .PP -Definition at line 337 of file users.h. +Definition at line 341 of file users.h. +.PP +Referenced by AddWhoWas(). .SS "char \fBWhoWasUser::fullname\fP[MAXGECOS+1]" .PP -Definition at line 339 of file users.h. +Definition at line 343 of file users.h. +.PP +Referenced by AddWhoWas(). .SS "char \fBWhoWasUser::host\fP[160]" .PP -Definition at line 338 of file users.h. +Definition at line 342 of file users.h. +.PP +Referenced by AddWhoWas(). .SS "char \fBWhoWasUser::ident\fP[IDENTMAX+1]" .PP -Definition at line 336 of file users.h. +Definition at line 340 of file users.h. +.PP +Referenced by AddWhoWas(). .SS "char \fBWhoWasUser::nick\fP[NICKMAX]" .PP -Definition at line 335 of file users.h. +Definition at line 339 of file users.h. +.PP +Referenced by AddWhoWas(). .SS "char \fBWhoWasUser::server\fP[256]" .PP -Definition at line 340 of file users.h. +Definition at line 344 of file users.h. +.PP +Referenced by AddWhoWas(). .SS "time_t \fBWhoWasUser::signon\fP" .PP -Definition at line 341 of file users.h. +Definition at line 345 of file users.h. +.PP +Referenced by AddWhoWas(). .SH "Author" .PP diff --git a/docs/man/man3/XLine.3 b/docs/man/man3/XLine.3 index 216576090..9141d13fd 100644 --- a/docs/man/man3/XLine.3 +++ b/docs/man/man3/XLine.3 @@ -1,4 +1,4 @@ -.TH "XLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "XLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/ZLine.3 b/docs/man/man3/ZLine.3 index 06d8663f6..a8435b5d7 100644 --- a/docs/man/man3/ZLine.3 +++ b/docs/man/man3/ZLine.3 @@ -1,4 +1,4 @@ -.TH "ZLine" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ZLine" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/_home_.3 b/docs/man/man3/_home_.3 index 49efbaddf..4fc80ad81 100644 --- a/docs/man/man3/_home_.3 +++ b/docs/man/man3/_home_.3 @@ -1,4 +1,4 @@ -.TH "/home/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "/home/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/_home_brain_.3 b/docs/man/man3/_home_brain_.3 index babca30f7..29118884a 100644 --- a/docs/man/man3/_home_brain_.3 +++ b/docs/man/man3/_home_brain_.3 @@ -1,4 +1,4 @@ -.TH "/home/brain/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "/home/brain/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/_home_brain_inspircd-cvs_.3 b/docs/man/man3/_home_brain_inspircd-cvs_.3 index 1479abc84..1ee75654f 100644 --- a/docs/man/man3/_home_brain_inspircd-cvs_.3 +++ b/docs/man/man3/_home_brain_inspircd-cvs_.3 @@ -1,4 +1,4 @@ -.TH "/home/brain/inspircd-cvs/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "/home/brain/inspircd-cvs/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3 b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3 index 0284e0651..43c5f6676 100644 --- a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3 +++ b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_.3 @@ -1,4 +1,4 @@ -.TH "/home/brain/inspircd-cvs/inspircd/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "/home/brain/inspircd-cvs/inspircd/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3 b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3 index e10e04e57..b9dcc0d80 100644 --- a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3 +++ b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_include_.3 @@ -1,4 +1,4 @@ -.TH "/home/brain/inspircd-cvs/inspircd/include/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "/home/brain/inspircd-cvs/inspircd/include/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -7,6 +7,9 @@ .in +1c .ti -1c +.RI "file \fBaes.h\fP" +.br +.ti -1c .RI "file \fBbase.h\fP" .br .ti -1c diff --git a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3 b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3 index 9071df9e9..d3d18d775 100644 --- a/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3 +++ b/docs/man/man3/_home_brain_inspircd-cvs_inspircd_src_.3 @@ -1,4 +1,4 @@ -.TH "/home/brain/inspircd-cvs/inspircd/src/ Directory Reference" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "/home/brain/inspircd-cvs/inspircd/src/ Directory Reference" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/aes.h.3 b/docs/man/man3/aes.h.3 new file mode 100644 index 000000000..9d0352f33 --- /dev/null +++ b/docs/man/man3/aes.h.3 @@ -0,0 +1,60 @@ +.TH "aes.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.ad l +.nh +.SH NAME +aes.h \- +.SH SYNOPSIS +.br +.PP +\fC#include \fP +.br + +.SS "Classes" + +.in +1c +.ti -1c +.RI "class \fBAES\fP" +.br +.RI "\fIThe AES class is a utility class for use in modules and the core for encryption of data. \fP" +.in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "void \fBto64frombits\fP (unsigned char *out, const unsigned char *in, int inlen)" +.br +.RI "\fIConvert from binary to base64. \fP" +.ti -1c +.RI "int \fBfrom64tobits\fP (char *out, const char *in, int maxlen)" +.br +.RI "\fIConvert from base64 to binary Output Input Size of output buffer. \fP" +.in -1c +.SH "Function Documentation" +.PP +.SS "int from64tobits (char * out, const char * in, int maxlen)" +.PP +Convert from base64 to binary Output Input Size of output buffer. +.PP +\fBReturns:\fP +.RS 4 +Number of bytes actually converted +.RE +.PP + +.SS "void to64frombits (unsigned char * out, const unsigned char * in, int inlen)" +.PP +Convert from binary to base64. +.PP +\fBParameters:\fP +.RS 4 +\fIout\fP Output +.br +\fIin\fP Input +.br +\fIinlen\fP Number of bytes in input buffer +.RE +.PP + +.SH "Author" +.PP +Generated automatically by Doxygen for InspIRCd from the source code. diff --git a/docs/man/man3/base.h.3 b/docs/man/man3/base.h.3 index 31b4deb84..e8445793c 100644 --- a/docs/man/man3/base.h.3 +++ b/docs/man/man3/base.h.3 @@ -1,4 +1,4 @@ -.TH "base.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "base.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/channels.cpp.3 b/docs/man/man3/channels.cpp.3 index 443276105..d9d19e355 100644 --- a/docs/man/man3/channels.cpp.3 +++ b/docs/man/man3/channels.cpp.3 @@ -1,4 +1,4 @@ -.TH "channels.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "channels.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -12,8 +12,6 @@ channels.cpp \- .br \fC#include 'inspircd_io.h'\fP .br -\fC#include 'inspircd_util.h'\fP -.br \fC#include \fP .br \fC#include \fP @@ -128,107 +126,108 @@ channels.cpp \- .PP .SS "#define nspace std" .PP -Definition at line 55 of file channels.cpp. +Definition at line 54 of file channels.cpp. .SH "Function Documentation" .PP .SS "\fBchanrec\fP* add_channel (\fBuserrec\fP * user, const char * cn, const char * key, bool override)" .PP -Definition at line 195 of file channels.cpp. +Definition at line 194 of file channels.cpp. .PP References chanrec::bans, chanrec::binarymodes, chanlist, userrec::chans, CM_INVITEONLY, CM_NOEXTERNAL, CM_TOPICLOCK, DEBUG, DEFAULT, connection::fd, FindChan(), ForceChan(), FOREACH_RESULT, userrec::GetFullHost(), has_channel(), userrec::IsInvited(), chanrec::key, chanrec::limit, log(), userrec::modes, chanrec::name, userrec::nick, userrec::RemoveInvite(), TIME, and WriteServ(). .PP Referenced by Server::JoinUserToChannel(). .PP .nf -196 { -197 if ((!user) || (!cn)) -198 { -199 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter'); -200 return 0; -201 } -202 -203 int created = 0; -204 char cname[MAXBUF]; -205 int MOD_RESULT = 0; -206 strncpy(cname,cn,CHANMAX); -207 -208 log(DEBUG,'add_channel: %s %s',user->nick,cname); -209 -210 chanrec* Ptr = FindChan(cname); -211 -212 if (!Ptr) -213 { -214 if (user->fd > -1) -215 { -216 MOD_RESULT = 0; -217 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname)); -218 if (MOD_RESULT == 1) -219 return NULL; -220 } -221 /* create a new one */ -222 chanlist[cname] = new chanrec(); -223 strlcpy(chanlist[cname]->name, cname,CHANMAX); -224 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL; -225 chanlist[cname]->created = TIME; -226 strcpy(chanlist[cname]->topic, ''); -227 strncpy(chanlist[cname]->setby, user->nick,NICKMAX); -228 chanlist[cname]->topicset = 0; -229 Ptr = chanlist[cname]; -230 log(DEBUG,'add_channel: created: %s',cname); -231 /* set created to 2 to indicate user -232 * is the first in the channel -233 * and should be given ops */ -234 created = 2; -235 } -236 else -237 { -238 /* Already on the channel */ -239 if (has_channel(user,Ptr)) -240 return NULL; -241 -242 // remote users are allowed us to bypass channel modes -243 // and bans (used by servers) -244 if (user->fd > -1) -245 { -246 MOD_RESULT = 0; -247 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname)); -248 if (MOD_RESULT == 1) -249 { -250 return NULL; -251 } -252 else -253 { -254 if (*Ptr->key) -255 { -256 MOD_RESULT = 0; -257 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : '')); -258 if (!MOD_RESULT) -259 { -260 if (!key) -261 { -262 log(DEBUG,'add_channel: no key given in JOIN'); -263 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name); -264 return NULL; -265 } -266 else -267 { -268 if (strcasecmp(key,Ptr->key)) -269 { -270 log(DEBUG,'add_channel: bad key given in JOIN'); -271 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name); -272 return NULL; -273 } -274 } -275 } -276 } -277 if (Ptr->binarymodes & CM_INVITEONLY) -278 { -279 MOD_RESULT = 0; +195 { +196 if ((!user) || (!cn)) +197 { +198 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter'); +199 return 0; +200 } +201 +202 int created = 0; +203 char cname[MAXBUF]; +204 int MOD_RESULT = 0; +205 strncpy(cname,cn,CHANMAX); +206 +207 log(DEBUG,'add_channel: %s %s',user->nick,cname); +208 +209 chanrec* Ptr = FindChan(cname); +210 +211 if (!Ptr) +212 { +213 if (user->fd > -1) +214 { +215 MOD_RESULT = 0; +216 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname)); +217 if (MOD_RESULT == 1) +218 return NULL; +219 } +220 /* create a new one */ +221 chanlist[cname] = new chanrec(); +222 strlcpy(chanlist[cname]->name, cname,CHANMAX); +223 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL; +224 chanlist[cname]->created = TIME; +225 strcpy(chanlist[cname]->topic, ''); +226 strncpy(chanlist[cname]->setby, user->nick,NICKMAX); +227 chanlist[cname]->topicset = 0; +228 Ptr = chanlist[cname]; +229 log(DEBUG,'add_channel: created: %s',cname); +230 /* set created to 2 to indicate user +231 * is the first in the channel +232 * and should be given ops */ +233 created = 2; +234 } +235 else +236 { +237 /* Already on the channel */ +238 if (has_channel(user,Ptr)) +239 return NULL; +240 +241 // remote users are allowed us to bypass channel modes +242 // and bans (used by servers) +243 if (user->fd > -1) +244 { +245 MOD_RESULT = 0; +246 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname)); +247 if (MOD_RESULT == 1) +248 { +249 return NULL; +250 } +251 else +252 { +253 if (*Ptr->key) +254 { +255 MOD_RESULT = 0; +256 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : '')); +257 if (!MOD_RESULT) +258 { +259 if (!key) +260 { +261 log(DEBUG,'add_channel: no key given in JOIN'); +262 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name); +263 return NULL; +264 } +265 else +266 { +267 if (strcasecmp(key,Ptr->key)) +268 { +269 log(DEBUG,'add_channel: bad key given in JOIN'); +270 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name); +271 return NULL; +272 } +273 } +274 } +275 } +276 if (Ptr->binarymodes & CM_INVITEONLY) +277 { +278 MOD_RESULT = 0; +279 irc::string xname(Ptr->name); 280 FOREACH_RESULT(OnCheckInvite(user, Ptr)); 281 if (!MOD_RESULT) 282 { 283 log(DEBUG,'add_channel: channel is +i'); -284 if (user->IsInvited(Ptr->name)) +284 if (user->IsInvited(xname)) 285 { 286 /* user was invited to channel */ 287 /* there may be an optional channel NOTICE here */ @@ -239,7 +238,7 @@ Referenced by Server::JoinUserToChannel(). 292 return NULL; 293 } 294 } -295 user->RemoveInvite(Ptr->name); +295 user->RemoveInvite(xname); 296 } 297 if (Ptr->limit) 298 { @@ -520,14 +519,14 @@ Referenced by add_channel(), del_channel(), and kick_channel(). .PP .SS "std::vector<\fBModeParameter\fP> \fBcustom_mode_params\fP" .PP -Definition at line 70 of file channels.cpp. +Definition at line 69 of file channels.cpp. .PP Referenced by chanrec::GetModeParameter(), and chanrec::SetCustomModeParam(). .SS "std::vector<\fBircd_module\fP*> factory" .PP .SS "int \fBMODCOUNT\fP = -1" .PP -Definition at line 935 of file modules.cpp. +Definition at line 934 of file modules.cpp. .PP Referenced by Server::FindModule(). .SS "std::vector<\fBModule\fP*> modules" @@ -535,11 +534,13 @@ Referenced by Server::FindModule(). Referenced by Server::FindModule(). .SS "time_t \fBTIME\fP" .PP -Referenced by add_channel(), and userrec::userrec(). +Referenced by add_channel(), AddClient(), AddWhoWas(), FullConnectUser(), and userrec::userrec(). .SS "int \fBWHOWAS_MAX\fP" .PP +Referenced by AddWhoWas(). .SS "int \fBWHOWAS_STALE\fP" .PP +Referenced by AddWhoWas(). .SH "Author" .PP Generated automatically by Doxygen for InspIRCd from the source code. diff --git a/docs/man/man3/channels.h.3 b/docs/man/man3/channels.h.3 index f8f81e705..1686d1a89 100644 --- a/docs/man/man3/channels.h.3 +++ b/docs/man/man3/channels.h.3 @@ -1,4 +1,4 @@ -.TH "channels.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "channels.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -179,102 +179,103 @@ Definition at line 97 of file channels.h. .PP .SS "\fBchanrec\fP* add_channel (\fBuserrec\fP * user, const char * cn, const char * key, bool override)" .PP -Definition at line 195 of file channels.cpp. +Definition at line 194 of file channels.cpp. .PP References chanrec::bans, chanrec::binarymodes, chanlist, userrec::chans, CM_INVITEONLY, CM_NOEXTERNAL, CM_TOPICLOCK, DEBUG, DEFAULT, connection::fd, FindChan(), ForceChan(), FOREACH_RESULT, userrec::GetFullHost(), has_channel(), userrec::IsInvited(), chanrec::key, chanrec::limit, log(), userrec::modes, chanrec::name, userrec::nick, userrec::RemoveInvite(), TIME, and WriteServ(). .PP Referenced by Server::JoinUserToChannel(). .PP .nf -196 { -197 if ((!user) || (!cn)) -198 { -199 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter'); -200 return 0; -201 } -202 -203 int created = 0; -204 char cname[MAXBUF]; -205 int MOD_RESULT = 0; -206 strncpy(cname,cn,CHANMAX); -207 -208 log(DEBUG,'add_channel: %s %s',user->nick,cname); -209 -210 chanrec* Ptr = FindChan(cname); -211 -212 if (!Ptr) -213 { -214 if (user->fd > -1) -215 { -216 MOD_RESULT = 0; -217 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname)); -218 if (MOD_RESULT == 1) -219 return NULL; -220 } -221 /* create a new one */ -222 chanlist[cname] = new chanrec(); -223 strlcpy(chanlist[cname]->name, cname,CHANMAX); -224 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL; -225 chanlist[cname]->created = TIME; -226 strcpy(chanlist[cname]->topic, ''); -227 strncpy(chanlist[cname]->setby, user->nick,NICKMAX); -228 chanlist[cname]->topicset = 0; -229 Ptr = chanlist[cname]; -230 log(DEBUG,'add_channel: created: %s',cname); -231 /* set created to 2 to indicate user -232 * is the first in the channel -233 * and should be given ops */ -234 created = 2; -235 } -236 else -237 { -238 /* Already on the channel */ -239 if (has_channel(user,Ptr)) -240 return NULL; -241 -242 // remote users are allowed us to bypass channel modes -243 // and bans (used by servers) -244 if (user->fd > -1) -245 { -246 MOD_RESULT = 0; -247 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname)); -248 if (MOD_RESULT == 1) -249 { -250 return NULL; -251 } -252 else -253 { -254 if (*Ptr->key) -255 { -256 MOD_RESULT = 0; -257 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : '')); -258 if (!MOD_RESULT) -259 { -260 if (!key) -261 { -262 log(DEBUG,'add_channel: no key given in JOIN'); -263 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name); -264 return NULL; -265 } -266 else -267 { -268 if (strcasecmp(key,Ptr->key)) -269 { -270 log(DEBUG,'add_channel: bad key given in JOIN'); -271 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name); -272 return NULL; -273 } -274 } -275 } -276 } -277 if (Ptr->binarymodes & CM_INVITEONLY) -278 { -279 MOD_RESULT = 0; +195 { +196 if ((!user) || (!cn)) +197 { +198 log(DEFAULT,'*** BUG *** add_channel was given an invalid parameter'); +199 return 0; +200 } +201 +202 int created = 0; +203 char cname[MAXBUF]; +204 int MOD_RESULT = 0; +205 strncpy(cname,cn,CHANMAX); +206 +207 log(DEBUG,'add_channel: %s %s',user->nick,cname); +208 +209 chanrec* Ptr = FindChan(cname); +210 +211 if (!Ptr) +212 { +213 if (user->fd > -1) +214 { +215 MOD_RESULT = 0; +216 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname)); +217 if (MOD_RESULT == 1) +218 return NULL; +219 } +220 /* create a new one */ +221 chanlist[cname] = new chanrec(); +222 strlcpy(chanlist[cname]->name, cname,CHANMAX); +223 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL; +224 chanlist[cname]->created = TIME; +225 strcpy(chanlist[cname]->topic, ''); +226 strncpy(chanlist[cname]->setby, user->nick,NICKMAX); +227 chanlist[cname]->topicset = 0; +228 Ptr = chanlist[cname]; +229 log(DEBUG,'add_channel: created: %s',cname); +230 /* set created to 2 to indicate user +231 * is the first in the channel +232 * and should be given ops */ +233 created = 2; +234 } +235 else +236 { +237 /* Already on the channel */ +238 if (has_channel(user,Ptr)) +239 return NULL; +240 +241 // remote users are allowed us to bypass channel modes +242 // and bans (used by servers) +243 if (user->fd > -1) +244 { +245 MOD_RESULT = 0; +246 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname)); +247 if (MOD_RESULT == 1) +248 { +249 return NULL; +250 } +251 else +252 { +253 if (*Ptr->key) +254 { +255 MOD_RESULT = 0; +256 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : '')); +257 if (!MOD_RESULT) +258 { +259 if (!key) +260 { +261 log(DEBUG,'add_channel: no key given in JOIN'); +262 WriteServ(user->fd,'475 %s %s :Cannot join channel (Requires key)',user->nick, Ptr->name); +263 return NULL; +264 } +265 else +266 { +267 if (strcasecmp(key,Ptr->key)) +268 { +269 log(DEBUG,'add_channel: bad key given in JOIN'); +270 WriteServ(user->fd,'475 %s %s :Cannot join channel (Incorrect key)',user->nick, Ptr->name); +271 return NULL; +272 } +273 } +274 } +275 } +276 if (Ptr->binarymodes & CM_INVITEONLY) +277 { +278 MOD_RESULT = 0; +279 irc::string xname(Ptr->name); 280 FOREACH_RESULT(OnCheckInvite(user, Ptr)); 281 if (!MOD_RESULT) 282 { 283 log(DEBUG,'add_channel: channel is +i'); -284 if (user->IsInvited(Ptr->name)) +284 if (user->IsInvited(xname)) 285 { 286 /* user was invited to channel */ 287 /* there may be an optional channel NOTICE here */ @@ -285,7 +286,7 @@ Referenced by Server::JoinUserToChannel(). 292 return NULL; 293 } 294 } -295 user->RemoveInvite(Ptr->name); +295 user->RemoveInvite(xname); 296 } 297 if (Ptr->limit) 298 { diff --git a/docs/man/man3/chanrec.3 b/docs/man/man3/chanrec.3 index fbd6260ec..83c154d23 100644 --- a/docs/man/man3/chanrec.3 +++ b/docs/man/man3/chanrec.3 @@ -1,4 +1,4 @@ -.TH "chanrec" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "chanrec" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -116,21 +116,21 @@ Definition at line 103 of file channels.h. .PP Creates a channel record and initialises it with default values. .PP -Definition at line 74 of file channels.cpp. +Definition at line 73 of file channels.cpp. .PP References binarymodes, created, custom_modes, internal_userlist, key, limit, name, setby, topic, and topicset. .PP .nf -75 { -76 strcpy(name,''); -77 strcpy(custom_modes,''); -78 strcpy(topic,''); -79 strcpy(setby,''); -80 strcpy(key,''); -81 created = topicset = limit = 0; -82 binarymodes = 0; -83 internal_userlist.clear(); -84 } +74 { +75 strcpy(name,''); +76 strcpy(custom_modes,''); +77 strcpy(topic,''); +78 strcpy(setby,''); +79 strcpy(key,''); +80 created = topicset = limit = 0; +81 binarymodes = 0; +82 internal_userlist.clear(); +83 } .fi .PP .SS "virtual chanrec::~chanrec ()\fC [inline, virtual]\fP" @@ -154,17 +154,17 @@ Add a user pointer to the internal reference list. .PP The data inserted into the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison. .PP -Definition at line 167 of file channels.cpp. +Definition at line 166 of file channels.cpp. .PP References DEBUG, internal_userlist, and log(). .PP Referenced by ForceChan(). .PP .nf -168 { -169 internal_userlist.push_back(castuser); -170 log(DEBUG,'Added casted user to channel's internal list'); -171 } +167 { +168 internal_userlist.push_back(castuser); +169 log(DEBUG,'Added casted user to channel's internal list'); +170 } .fi .PP .SS "void chanrec::DelUser (char * castuser)" @@ -178,25 +178,25 @@ Delete a user pointer to the internal reference list. .PP The data removed from the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison. .PP -Definition at line 173 of file channels.cpp. +Definition at line 172 of file channels.cpp. .PP References DEBUG, internal_userlist, log(), and name. .PP Referenced by del_channel(), and kick_channel(). .PP .nf -174 { -175 for (std::vector::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++) -176 { -177 if (*a == castuser) -178 { -179 log(DEBUG,'Removed casted user from channel's internal list'); -180 internal_userlist.erase(a); -181 return; -182 } -183 } -184 log(DEBUG,'BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!',name); -185 } +173 { +174 for (std::vector::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++) +175 { +176 if (*a == castuser) +177 { +178 log(DEBUG,'Removed casted user from channel's internal list'); +179 internal_userlist.erase(a); +180 return; +181 } +182 } +183 log(DEBUG,'BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!',name); +184 } .fi .PP .SS "\fBstd::string\fP chanrec::GetModeParameter (char mode)" @@ -217,24 +217,24 @@ The parameter for this mode is returned, or an empty string .PP .PP -Definition at line 147 of file channels.cpp. +Definition at line 146 of file channels.cpp. .PP References custom_mode_params. .PP .nf -148 { -149 if (custom_mode_params.size()) -150 { -151 for (vector::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) -152 { -153 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) -154 { -155 return i->parameter; -156 } -157 } -158 } -159 return ''; -160 } +147 { +148 if (custom_mode_params.size()) +149 { +150 for (vector::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) +151 { +152 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) +153 { +154 return i->parameter; +155 } +156 } +157 } +158 return ''; +159 } .fi .PP .SS "long chanrec::GetUserCounter ()" @@ -248,12 +248,12 @@ The number of users on this channel .PP .PP -Definition at line 162 of file channels.cpp. +Definition at line 161 of file channels.cpp. .PP .nf -163 { -164 return (this->internal_userlist.size()); -165 } +162 { +163 return (this->internal_userlist.size()); +164 } .fi .PP .SS "std::vector< char * > * chanrec::GetUsers ()" @@ -269,16 +269,16 @@ This function returns a vector of userrec pointers, each of which has been caste .PP .PP -Definition at line 187 of file channels.cpp. +Definition at line 186 of file channels.cpp. .PP References internal_userlist. .PP Referenced by Server::GetUsers(). .PP .nf -188 { -189 return &internal_userlist; -190 } +187 { +188 return &internal_userlist; +189 } .fi .PP .SS "bool chanrec::IsCustomModeSet (char mode)" @@ -297,12 +297,12 @@ True if the custom mode is set, false if otherwise .PP .PP -Definition at line 142 of file channels.cpp. +Definition at line 141 of file channels.cpp. .PP .nf -143 { -144 return (strchr(this->custom_modes,mode)); -145 } +142 { +143 return (strchr(this->custom_modes,mode)); +144 } .fi .PP .SS "void chanrec::SetCustomMode (char mode, bool mode_on)" @@ -318,33 +318,33 @@ Sets or unsets a custom mode in the channels info. .PP .PP -Definition at line 86 of file channels.cpp. +Definition at line 85 of file channels.cpp. .PP References custom_modes, DEBUG, log(), and SetCustomModeParam(). .PP .nf -87 { -88 if (mode_on) { -89 static char m[3]; -90 m[0] = mode; -91 m[1] = '\0'; -92 if (!strchr(this->custom_modes,mode)) -93 { -94 strlcat(custom_modes,m,MAXMODES); -95 } -96 log(DEBUG,'Custom mode %c set',mode); -97 } -98 else { -99 -100 std::string a = this->custom_modes; -101 int pos = a.find(mode); -102 a.erase(pos,1); -103 strncpy(this->custom_modes,a.c_str(),MAXMODES); -104 -105 log(DEBUG,'Custom mode %c removed: modelist='%s'',mode,this->custom_modes); -106 this->SetCustomModeParam(mode,'',false); -107 } -108 } +86 { +87 if (mode_on) { +88 static char m[3]; +89 m[0] = mode; +90 m[1] = '\0'; +91 if (!strchr(this->custom_modes,mode)) +92 { +93 strlcat(custom_modes,m,MAXMODES); +94 } +95 log(DEBUG,'Custom mode %c set',mode); +96 } +97 else { +98 +99 std::string a = this->custom_modes; +100 int pos = a.find(mode); +101 a.erase(pos,1); +102 strncpy(this->custom_modes,a.c_str(),MAXMODES); +103 +104 log(DEBUG,'Custom mode %c removed: modelist='%s'',mode,this->custom_modes); +105 this->SetCustomModeParam(mode,'',false); +106 } +107 } .fi .PP .SS "void chanrec::SetCustomModeParam (char mode, char * parameter, bool mode_on)" @@ -362,42 +362,42 @@ Sets or unsets the parameters for a custom mode in a channels info. .PP .PP -Definition at line 111 of file channels.cpp. +Definition at line 110 of file channels.cpp. .PP References ModeParameter::channel, custom_mode_params, DEBUG, log(), ModeParameter::mode, and ModeParameter::parameter. .PP Referenced by SetCustomMode(). .PP .nf -112 { -113 -114 log(DEBUG,'SetCustomModeParam called'); -115 ModeParameter M; -116 M.mode = mode; -117 strlcpy(M.channel,this->name,CHANMAX); -118 strlcpy(M.parameter,parameter,MAXBUF); -119 if (mode_on) -120 { -121 log(DEBUG,'Custom mode parameter %c %s added',mode,parameter); -122 custom_mode_params.push_back(M); -123 } -124 else -125 { -126 if (custom_mode_params.size()) -127 { -128 for (vector::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) -129 { -130 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) -131 { -132 log(DEBUG,'Custom mode parameter %c %s removed',mode,parameter); -133 custom_mode_params.erase(i); -134 return; -135 } -136 } -137 } -138 log(DEBUG,'*** BUG *** Attempt to remove non-existent mode parameter!'); -139 } -140 } +111 { +112 +113 log(DEBUG,'SetCustomModeParam called'); +114 ModeParameter M; +115 M.mode = mode; +116 strlcpy(M.channel,this->name,CHANMAX); +117 strlcpy(M.parameter,parameter,MAXBUF); +118 if (mode_on) +119 { +120 log(DEBUG,'Custom mode parameter %c %s added',mode,parameter); +121 custom_mode_params.push_back(M); +122 } +123 else +124 { +125 if (custom_mode_params.size()) +126 { +127 for (vector::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) +128 { +129 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) +130 { +131 log(DEBUG,'Custom mode parameter %c %s removed',mode,parameter); +132 custom_mode_params.erase(i); +133 return; +134 } +135 } +136 } +137 log(DEBUG,'*** BUG *** Attempt to remove non-existent mode parameter!'); +138 } +139 } .fi .PP .SH "Member Data Documentation" diff --git a/docs/man/man3/classbase.3 b/docs/man/man3/classbase.3 index de085033f..53f4bb176 100644 --- a/docs/man/man3/classbase.3 +++ b/docs/man/man3/classbase.3 @@ -1,4 +1,4 @@ -.TH "classbase" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "classbase" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/command_t.3 b/docs/man/man3/command_t.3 index 1e49a2996..0e69a9a09 100644 --- a/docs/man/man3/command_t.3 +++ b/docs/man/man3/command_t.3 @@ -1,4 +1,4 @@ -.TH "command_t" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "command_t" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -10,19 +10,28 @@ command_t \- A structure that defines a command. .PP \fC#include \fP .PP -Inherits \fBExtensible\fP. +Inherited by \fBcmd_mode\fP. .PP -.SS "Public Attributes" +.SS "Public Member Functions" .in +1c .ti -1c -.RI "char \fBcommand\fP [MAXBUF]" +.RI "\fBcommand_t\fP (\fBstd::string\fP cmd, char flags, int minpara)" .br -.RI "\fICommand name. \fP" .ti -1c -.RI "\fBhandlerfunc\fP * \fBhandler_function\fP" +.RI "virtual void \fBHandle\fP (char **parameters, int pcnt, \fBuserrec\fP *user)=0" +.br +.ti -1c +.RI "virtual \fB~command_t\fP ()" +.br +.in -1c +.SS "Public Attributes" + +.in +1c +.ti -1c +.RI "\fBstd::string\fP \fBcommand\fP" .br -.RI "\fIHandler function as in typedef. \fP" +.RI "\fICommand name. \fP" .ti -1c .RI "char \fBflags_needed\fP" .br @@ -40,7 +49,7 @@ Inherits \fBExtensible\fP. .br .RI "\fIused by /stats m \fP" .ti -1c -.RI "char \fBsource\fP [MAXBUF]" +.RI "\fBstd::string\fP \fBsource\fP" .br .RI "\fIused for resource tracking between modules \fP" .in -1c @@ -48,44 +57,74 @@ Inherits \fBExtensible\fP. .PP A structure that defines a command. .PP -Definition at line 26 of file ctables.h. +Definition at line 29 of file ctables.h. +.SH "Constructor & Destructor Documentation" +.PP +.SS "command_t::command_t (\fBstd::string\fP cmd, char flags, int minpara)\fC [inline]\fP" +.PP +Definition at line 51 of file ctables.h. +.PP +References source, total_bytes, and use_count. +.PP +.nf +51 : command(cmd), flags_needed(flags), min_params(minpara) +52 { +53 use_count = total_bytes = 0; +54 source = ''; +55 } +.fi +.PP +.SS "virtual command_t::~command_t ()\fC [inline, virtual]\fP" +.PP +Definition at line 59 of file ctables.h. +.PP +.nf +59 {} +.fi +.PP +.SH "Member Function Documentation" +.PP +.SS "virtual void command_t::Handle (char ** parameters, int pcnt, \fBuserrec\fP * user)\fC [pure virtual]\fP" +.PP +Implemented in \fBcmd_mode\fP. .SH "Member Data Documentation" .PP -.SS "char \fBcommand_t::command\fP[MAXBUF]" +.SS "\fBstd::string\fP \fBcommand_t::command\fP" .PP Command name. .PP -Definition at line 31 of file ctables.h. +Definition at line 34 of file ctables.h. .SS "char \fBcommand_t::flags_needed\fP" .PP User flags needed to execute the command or 0. .PP Definition at line 37 of file ctables.h. -.SS "\fBhandlerfunc\fP* \fBcommand_t::handler_function\fP" -.PP -Handler function as in typedef. -.PP -Definition at line 34 of file ctables.h. .SS "int \fBcommand_t::min_params\fP" .PP Minimum number of parameters command takes. .PP Definition at line 40 of file ctables.h. -.SS "char \fBcommand_t::source\fP[MAXBUF]" +.SS "\fBstd::string\fP \fBcommand_t::source\fP" .PP used for resource tracking between modules .PP Definition at line 49 of file ctables.h. +.PP +Referenced by command_t(). .SS "long \fBcommand_t::total_bytes\fP" .PP used by /stats m .PP Definition at line 46 of file ctables.h. +.PP +Referenced by command_t(). .SS "long \fBcommand_t::use_count\fP" .PP used by /stats m .PP Definition at line 43 of file ctables.h. +.PP +Referenced by command_t(). .SH "Author" .PP diff --git a/docs/man/man3/commands.h.3 b/docs/man/man3/commands.h.3 index 4d4920f53..de75f72c1 100644 --- a/docs/man/man3/commands.h.3 +++ b/docs/man/man3/commands.h.3 @@ -1,4 +1,4 @@ -.TH "commands.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "commands.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -22,294 +22,159 @@ commands.h \- .br \fC#include 'channels.h'\fP .br - -.SS "Functions" - -.in +1c -.ti -1c -.RI "void \fBhandle_join\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_admin.h'\fP .br -.RI "\fIThese are the handlers for user commands. \fP" -.ti -1c -.RI "void \fBhandle_part\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_away.h'\fP .br -.ti -1c -.RI "void \fBhandle_kick\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_commands.h'\fP .br -.ti -1c -.RI "void \fBhandle_die\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_connect.h'\fP .br -.ti -1c -.RI "void \fBhandle_restart\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_die.h'\fP .br -.ti -1c -.RI "void \fBhandle_kill\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_eline.h'\fP .br -.ti -1c -.RI "void \fBhandle_summon\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_gline.h'\fP .br -.ti -1c -.RI "void \fBhandle_users\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_info.h'\fP .br -.ti -1c -.RI "void \fBhandle_pass\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_invite.h'\fP .br -.ti -1c -.RI "void \fBhandle_invite\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_ison.h'\fP .br -.ti -1c -.RI "void \fBhandle_topic\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_join.h'\fP .br -.ti -1c -.RI "void \fBhandle_names\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_kick.h'\fP .br -.ti -1c -.RI "void \fBhandle_privmsg\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_kill.h'\fP .br -.ti -1c -.RI "void \fBhandle_notice\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_kline.h'\fP .br -.ti -1c -.RI "void \fBhandle_info\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_links.h'\fP .br -.ti -1c -.RI "void \fBhandle_time\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_list.h'\fP .br -.ti -1c -.RI "void \fBhandle_whois\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_loadmodule.h'\fP .br -.ti -1c -.RI "void \fBhandle_quit\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_lusers.h'\fP .br -.ti -1c -.RI "void \fBhandle_who\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_map.h'\fP .br -.ti -1c -.RI "void \fBhandle_wallops\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_modules.h'\fP .br -.ti -1c -.RI "void \fBhandle_list\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_motd.h'\fP .br -.ti -1c -.RI "void \fBhandle_rehash\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_names.h'\fP .br -.ti -1c -.RI "void \fBhandle_lusers\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_nick.h'\fP .br -.ti -1c -.RI "void \fBhandle_admin\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_notice.h'\fP .br -.ti -1c -.RI "void \fBhandle_ping\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_oper.h'\fP .br -.ti -1c -.RI "void \fBhandle_pong\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_part.h'\fP .br -.ti -1c -.RI "void \fBhandle_motd\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_pass.h'\fP .br -.ti -1c -.RI "void \fBhandle_rules\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_ping.h'\fP .br -.ti -1c -.RI "void \fBhandle_user\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_pong.h'\fP .br -.ti -1c -.RI "void \fBhandle_userhost\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_privmsg.h'\fP .br -.ti -1c -.RI "void \fBhandle_ison\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_qline.h'\fP .br -.ti -1c -.RI "void \fBhandle_away\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_quit.h'\fP .br -.ti -1c -.RI "void \fBhandle_whowas\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_rehash.h'\fP .br -.ti -1c -.RI "void \fBhandle_trace\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_restart.h'\fP .br -.ti -1c -.RI "void \fBhandle_modules\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_rules.h'\fP .br -.ti -1c -.RI "void \fBhandle_stats\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_server.h'\fP .br -.ti -1c -.RI "void \fBhandle_connect\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_squit.h'\fP .br -.ti -1c -.RI "void \fBhandle_squit\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_stats.h'\fP .br -.ti -1c -.RI "void \fBhandle_links\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_summon.h'\fP .br -.ti -1c -.RI "void \fBhandle_map\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_time.h'\fP .br -.ti -1c -.RI "void \fBhandle_oper\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_topic.h'\fP .br -.ti -1c -.RI "void \fBhandle_nick\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_trace.h'\fP .br -.ti -1c -.RI "void \fBhandle_kline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_unloadmodule.h'\fP .br -.ti -1c -.RI "void \fBhandle_gline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_user.h'\fP .br -.ti -1c -.RI "void \fBhandle_zline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_userhost.h'\fP .br -.ti -1c -.RI "void \fBhandle_qline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +\fC#include 'cmd_users.h'\fP +.br +\fC#include 'cmd_version.h'\fP +.br +\fC#include 'cmd_wallops.h'\fP +.br +\fC#include 'cmd_who.h'\fP +.br +\fC#include 'cmd_whois.h'\fP .br +\fC#include 'cmd_whowas.h'\fP +.br +\fC#include 'cmd_zline.h'\fP +.br + +.SS "Functions" + +.in +1c .ti -1c -.RI "void \fBhandle_eline\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +.RI "char * \fBCleanFilename\fP (char *name)" .br .ti -1c -.RI "void \fBhandle_server\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +.RI "bool \fBis_uline\fP (const char *server)" .br .ti -1c -.RI "void \fBhandle_loadmodule\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +.RI "long \fBduration\fP (const char *str)" .br .ti -1c -.RI "void \fBhandle_unloadmodule\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +.RI "void \fBdo_whois\fP (\fBuserrec\fP *user, \fBuserrec\fP *dest, unsigned long signon, unsigned long idle, char *nick)" .br .ti -1c -.RI "void \fBhandle_commands\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +.RI "bool \fBhost_matches_everyone\fP (\fBstd::string\fP mask, \fBuserrec\fP *user)" .br .ti -1c -.RI "bool \fBis_uline\fP (const char *server)" +.RI "bool \fBip_matches_everyone\fP (\fBstd::string\fP ip, \fBuserrec\fP *user)" .br -.RI "\fIFunctions for u:lined servers. \fP" .ti -1c -.RI "long \fBduration\fP (const char *str)" +.RI "bool \fBnick_matches_everyone\fP (\fBstd::string\fP nick, \fBuserrec\fP *user)" .br -.RI "\fIOther useful functions. \fP" .ti -1c -.RI "void \fBdo_whois\fP (\fBuserrec\fP *user, \fBuserrec\fP *dest, unsigned long signon, unsigned long idle, char *nick)" +.RI "int \fBoperstrcmp\fP (char *data, char *input)" .br .in -1c .SH "Function Documentation" .PP +.SS "char* CleanFilename (char * name)" +.PP .SS "void do_whois (\fBuserrec\fP * user, \fBuserrec\fP * dest, unsigned long signon, unsigned long idle, char * nick)" .PP .SS "long duration (const char * str)" .PP -Other useful functions. -.PP Referenced by Server::CalcDuration(). -.SS "void handle_admin (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_away (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_commands (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_connect (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_die (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_eline (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_gline (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_info (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_invite (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_ison (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_join (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -These are the handlers for user commands. -.PP -.SS "void handle_kick (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_kill (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_kline (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_links (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_list (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_loadmodule (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_lusers (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_map (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_modules (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_motd (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_names (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_nick (char ** parameters, int pcnt, \fBuserrec\fP * user)" +.SS "bool host_matches_everyone (\fBstd::string\fP mask, \fBuserrec\fP * user)" .PP -.SS "void handle_notice (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_oper (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_part (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_pass (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_ping (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_pong (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_privmsg (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_qline (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_quit (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_rehash (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_restart (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_rules (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_server (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_squit (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_stats (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_summon (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_time (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_topic (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_trace (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_unloadmodule (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_user (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_userhost (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_users (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_wallops (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_who (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_whois (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_whowas (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void handle_zline (char ** parameters, int pcnt, \fBuserrec\fP * user)" +.SS "bool ip_matches_everyone (\fBstd::string\fP ip, \fBuserrec\fP * user)" .PP .SS "bool is_uline (const char * server)" .PP -Functions for u:lined servers. -.PP Referenced by userrec::HasPermission(), Server::IsUlined(), and kick_channel(). +.SS "bool nick_matches_everyone (\fBstd::string\fP nick, \fBuserrec\fP * user)" +.PP +.SS "int operstrcmp (char * data, char * input)" +.PP .SH "Author" .PP Generated automatically by Doxygen for InspIRCd from the source code. diff --git a/docs/man/man3/connection.3 b/docs/man/man3/connection.3 index 841c792f1..a133ab846 100644 --- a/docs/man/man3/connection.3 +++ b/docs/man/man3/connection.3 @@ -1,4 +1,4 @@ -.TH "connection" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "connection" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -139,14 +139,14 @@ File descriptor of the connection. .PP Definition at line 42 of file connection.h. .PP -Referenced by add_channel(), connection(), ConfigReader::DumpErrors(), kick_channel(), Server::PseudoToUser(), Server::SendTo(), userrec::userrec(), and Server::UserToPseudo(). +Referenced by add_channel(), connection(), ConfigReader::DumpErrors(), FullConnectUser(), kick_channel(), kill_link(), kill_link_silent(), Server::PseudoToUser(), Server::SendTo(), userrec::userrec(), and Server::UserToPseudo(). .SS "bool \fBconnection::haspassed\fP" .PP True if server/user has authenticated, false if otherwise. .PP Definition at line 70 of file connection.h. .PP -Referenced by userrec::userrec(). +Referenced by FullConnectUser(), and userrec::userrec(). .SS "char \fBconnection::host\fP[160]" .PP Hostname of connection. @@ -155,21 +155,21 @@ Not used if this is a serverrec .PP Definition at line 46 of file connection.h. .PP -Referenced by userrec::GetFullRealHost(), Server::PseudoToUser(), userrec::userrec(), and Server::UserToPseudo(). +Referenced by AddWhoWas(), FullConnectUser(), userrec::GetFullRealHost(), kill_link(), kill_link_silent(), Server::PseudoToUser(), userrec::userrec(), and Server::UserToPseudo(). .SS "time_t \fBconnection::idle_lastmsg\fP" .PP Time that the connection last sent data, used to calculate idle time. .PP Definition at line 92 of file connection.h. .PP -Referenced by userrec::userrec(). +Referenced by FullConnectUser(), and userrec::userrec(). .SS "char \fBconnection::ip\fP[16]" .PP IP of connection. .PP Definition at line 50 of file connection.h. .PP -Referenced by userrec::userrec(). +Referenced by FullConnectUser(), and userrec::userrec(). .SS "time_t \fBconnection::lastping\fP" .PP Time the connection was last pinged. @@ -192,21 +192,21 @@ For a serverrec this is the current listening port of the serverrec object. .PP Definition at line 76 of file connection.h. .PP -Referenced by userrec::userrec(). +Referenced by FullConnectUser(), kill_link(), kill_link_silent(), and userrec::userrec(). .SS "char \fBconnection::registered\fP" .PP Used by userrec to indicate the registration status of the connection. .PP Definition at line 80 of file connection.h. .PP -Referenced by userrec::userrec(). +Referenced by ConnectUser(), force_nickchange(), FullConnectUser(), kill_link(), kill_link_silent(), and userrec::userrec(). .SS "time_t \fBconnection::signon\fP" .PP Time the connection was created, set in the constructor. .PP Definition at line 88 of file connection.h. .PP -Referenced by userrec::userrec(). +Referenced by AddWhoWas(), and userrec::userrec(). .SH "Author" .PP diff --git a/docs/man/man3/connection.h.3 b/docs/man/man3/connection.h.3 index 7e78e8aab..cbbe6fa27 100644 --- a/docs/man/man3/connection.h.3 +++ b/docs/man/man3/connection.h.3 @@ -1,4 +1,4 @@ -.TH "connection.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "connection.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/ctables.h.3 b/docs/man/man3/ctables.h.3 index 72fbad97b..740c740c0 100644 --- a/docs/man/man3/ctables.h.3 +++ b/docs/man/man3/ctables.h.3 @@ -1,4 +1,4 @@ -.TH "ctables.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ctables.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -8,9 +8,7 @@ ctables.h \- .PP \fC#include 'inspircd_config.h'\fP .br -\fC#include 'inspircd.h'\fP -.br -\fC#include 'base.h'\fP +\fC#include \fP .br .SS "Classes" @@ -21,6 +19,18 @@ ctables.h \- .br .RI "\fIA structure that defines a command. \fP" .in -1c +.SS "Typedefs" + +.in +1c +.ti -1c +.RI "typedef std::deque< \fBcommand_t\fP * > \fBcommand_table\fP" +.br +.in -1c +.SH "Typedef Documentation" +.PP +.SS "typedef std::deque<\fBcommand_t\fP*> \fBcommand_table\fP" +.PP +Definition at line 62 of file ctables.h. .SH "Author" .PP Generated automatically by Doxygen for InspIRCd from the source code. diff --git a/docs/man/man3/cull_list.h.3 b/docs/man/man3/cull_list.h.3 index b6ded78a3..78b9f49a9 100644 --- a/docs/man/man3/cull_list.h.3 +++ b/docs/man/man3/cull_list.h.3 @@ -1,4 +1,4 @@ -.TH "cull_list.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "cull_list.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/dns.h.3 b/docs/man/man3/dns.h.3 index 03f36a822..df94d7ad2 100644 --- a/docs/man/man3/dns.h.3 +++ b/docs/man/man3/dns.h.3 @@ -1,4 +1,4 @@ -.TH "dns.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "dns.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -26,6 +26,21 @@ dns.h \- .br .RI "\fIThe DNS class allows fast nonblocking resolution of hostnames and ip addresses. \fP" .in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "void * \fBdns_task\fP (void *arg)" +.br +.RI "\fIThis is the handler function for multi-threaded \fBDNS\fP. \fP" +.in -1c +.SH "Function Documentation" +.PP +.SS "void* dns_task (void * arg)" +.PP +This is the handler function for multi-threaded \fBDNS\fP. +.PP +It cannot be a class member as pthread will not let us create a thread whos handler function is a member of a class (ugh). .SH "Author" .PP Generated automatically by Doxygen for InspIRCd from the source code. diff --git a/docs/man/man3/dns_ip4list.3 b/docs/man/man3/dns_ip4list.3 index 9a31009aa..ddd834dd4 100644 --- a/docs/man/man3/dns_ip4list.3 +++ b/docs/man/man3/dns_ip4list.3 @@ -1,4 +1,4 @@ -.TH "dns_ip4list" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "dns_ip4list" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/globals.h.3 b/docs/man/man3/globals.h.3 index f60a9448d..6625e0c1a 100644 --- a/docs/man/man3/globals.h.3 +++ b/docs/man/man3/globals.h.3 @@ -1,4 +1,4 @@ -.TH "globals.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "globals.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -136,7 +136,7 @@ Referenced by add_channel(), del_channel(), and Server::FindChannel(). Referenced by Server::IsNick(). .SS "void log (int level, char * text, ...)" .PP -Referenced by add_channel(), Server::AddExtendedMode(), SocketEngine::AddFd(), chanrec::AddUser(), del_channel(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), InspSocket::InspSocket(), kick_channel(), Server::Log(), InspSocket::Read(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine(). +Referenced by add_channel(), AddClient(), Server::AddExtendedMode(), SocketEngine::AddFd(), AddOper(), chanrec::AddUser(), AddWhoWas(), del_channel(), DeleteOper(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), FullConnectUser(), InspSocket::InspSocket(), kick_channel(), kill_link(), kill_link_silent(), Server::Log(), InspSocket::Read(), ReHashNick(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine(). .SS "int ModeDefiend (char c, int i)" .PP .SS "void readfile (\fBfile_cache\fP & F, const char * fname)" @@ -144,7 +144,7 @@ Referenced by add_channel(), Server::AddExtendedMode(), SocketEngine::AddFd(), c Referenced by FileReader::FileReader(), and FileReader::LoadFile(). .SS "void Write (int sock, char * text, ...)" .PP -Referenced by Server::PseudoToUser(), Server::Send(), Server::SendTo(), and Server::UserToPseudo(). +Referenced by kill_link(), kill_link_silent(), Server::PseudoToUser(), Server::Send(), Server::SendTo(), and Server::UserToPseudo(). .SS "void WriteChannel (\fBchanrec\fP * Ptr, \fBuserrec\fP * user, char * text, ...)" .PP Referenced by del_channel(), ForceChan(), kick_channel(), and Server::SendChannel(). @@ -153,16 +153,16 @@ Referenced by del_channel(), ForceChan(), kick_channel(), and Server::SendChanne Referenced by Server::SendCommon(). .SS "void WriteCommonExcept (\fBuserrec\fP * u, char * text, ...)" .PP -Referenced by Server::SendCommon(). +Referenced by kill_link(), kill_link_silent(), and Server::SendCommon(). .SS "void WriteFrom (int sock, \fBuserrec\fP * user, char * text, ...)" .PP Referenced by Server::PseudoToUser(), and Server::SendFrom(). .SS "void WriteOpers (char * text, ...)" .PP -Referenced by userrec::AddBuffer(), userrec::AddWriteBuf(), ConfigReader::DumpErrors(), Server::RehashServer(), and Server::SendOpers(). +Referenced by userrec::AddBuffer(), userrec::AddWriteBuf(), ConfigReader::DumpErrors(), FullConnectUser(), kill_link(), Server::RehashServer(), and Server::SendOpers(). .SS "void WriteServ (int sock, char * text, ...)" .PP -Referenced by add_channel(), ConfigReader::DumpErrors(), ForceChan(), kick_channel(), Server::PseudoToUser(), and Server::SendServ(). +Referenced by add_channel(), ConfigReader::DumpErrors(), ForceChan(), FullConnectUser(), kick_channel(), Server::PseudoToUser(), and Server::SendServ(). .SS "void WriteTo (\fBuserrec\fP * source, \fBuserrec\fP * dest, char * data, ...)" .PP Referenced by Server::SendTo(). diff --git a/docs/man/man3/hashcomp.h.3 b/docs/man/man3/hashcomp.h.3 index 21ba40560..cd2cfe35e 100644 --- a/docs/man/man3/hashcomp.h.3 +++ b/docs/man/man3/hashcomp.h.3 @@ -1,4 +1,4 @@ -.TH "hashcomp.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "hashcomp.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/inspircd.h.3 b/docs/man/man3/inspircd.h.3 index 32e2fdb01..545c22f41 100644 --- a/docs/man/man3/inspircd.h.3 +++ b/docs/man/man3/inspircd.h.3 @@ -1,4 +1,4 @@ -.TH "inspircd.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "inspircd.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -38,14 +38,18 @@ inspircd.h \- .br \fC#include 'inspircd_io.h'\fP .br -\fC#include 'inspircd_util.h'\fP -.br \fC#include 'users.h'\fP .br \fC#include 'channels.h'\fP .br \fC#include 'socket.h'\fP .br +\fC#include 'mode.h'\fP +.br +\fC#include 'socketengine.h'\fP +.br +\fC#include 'command_parse.h'\fP +.br .SS "Classes" @@ -75,182 +79,43 @@ inspircd.h \- .ti -1c .RI "#define \fBMAXCOMMAND\fP 32" .br -.ti -1c -.RI "#define \fBWM_AND\fP 1" -.br -.ti -1c -.RI "#define \fBWM_OR\fP 2" -.br -.ti -1c -.RI "#define \fBTYPE_USER\fP 1" -.br -.ti -1c -.RI "#define \fBTYPE_CHANNEL\fP 2" -.br -.ti -1c -.RI "#define \fBTYPE_SERVER\fP 3" -.br -.ti -1c -.RI "#define \fBIS_LOCAL\fP(x) (x->fd > -1)" -.br -.ti -1c -.RI "#define \fBIS_REMOTE\fP(x) (x->fd < 0)" -.br -.ti -1c -.RI "#define \fBIS_MODULE_CREATED\fP(x) (x->fd == FD_MAGIC_NUMBER)" -.br -.in -1c -.SS "Typedefs" - -.in +1c -.ti -1c -.RI "typedef void( \fBhandlerfunc\fP )(char **, int, \fBuserrec\fP *)" -.br .in -1c .SS "Functions" .in +1c .ti -1c -.RI "void \fBforce_nickchange\fP (\fBuserrec\fP *user, const char *newnick)" -.br -.ti -1c -.RI "void \fBkill_link\fP (\fBuserrec\fP *user, const char *r)" -.br -.ti -1c -.RI "void \fBkill_link_silent\fP (\fBuserrec\fP *user, const char *r)" -.br -.ti -1c -.RI "void \fBcall_handler\fP (const char *commandname, char **parameters, int pcnt, \fBuserrec\fP *user)" -.br -.ti -1c -.RI "bool \fBis_valid_cmd\fP (const char *commandname, int pcnt, \fBuserrec\fP *user)" -.br -.ti -1c -.RI "int \fBloop_call\fP (\fBhandlerfunc\fP fn, char **parameters, int pcnt, \fBuserrec\fP *u, int start, int end, int joins)" -.br -.ti -1c -.RI "void \fBAddWhoWas\fP (\fBuserrec\fP *u)" -.br -.ti -1c -.RI "void \fBConnectUser\fP (\fBuserrec\fP *user)" -.br -.ti -1c -.RI "\fBuserrec\fP * \fBReHashNick\fP (char *Old, char *New)" -.br -.ti -1c -.RI "void \fBAddOper\fP (\fBuserrec\fP *user)" -.br -.ti -1c -.RI "void \fBDeleteOper\fP (\fBuserrec\fP *user)" -.br -.ti -1c -.RI "void \fBhandle_version\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" -.br -.ti -1c .RI "void \fBAddServerName\fP (\fBstd::string\fP servername)" .br .ti -1c .RI "const char * \fBFindServerNamePtr\fP (\fBstd::string\fP servername)" .br -.ti -1c -.RI "void * \fBdns_task\fP (void *arg)" -.br -.ti -1c -.RI "void \fBprocess_buffer\fP (const char *cmdbuf, \fBuserrec\fP *user)" -.br -.ti -1c -.RI "void \fBFullConnectUser\fP (\fBuserrec\fP *user)" -.br .in -1c .SH "Define Documentation" .PP .SS "#define ERROR -1" .PP -Definition at line 49 of file inspircd.h. +Definition at line 51 of file inspircd.h. .PP Referenced by InspSocket::InspSocket(). .SS "#define FALSE 0" .PP -Definition at line 51 of file inspircd.h. -.SS "#define IS_LOCAL(x) (x->fd > -1)" -.PP -Definition at line 66 of file inspircd.h. -.SS "#define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER)" -.PP -Definition at line 68 of file inspircd.h. -.SS "#define IS_REMOTE(x) (x->fd < 0)" -.PP -Definition at line 67 of file inspircd.h. +Definition at line 53 of file inspircd.h. .SS "#define MAXCOMMAND 32" .PP -Definition at line 53 of file inspircd.h. +Definition at line 55 of file inspircd.h. .SS "#define MAXSOCKS 64" .PP -Definition at line 52 of file inspircd.h. +Definition at line 54 of file inspircd.h. .SS "#define TRUE 1" .PP -Definition at line 50 of file inspircd.h. -.SS "#define TYPE_CHANNEL 2" -.PP -Definition at line 63 of file inspircd.h. -.SS "#define TYPE_SERVER 3" -.PP -Definition at line 64 of file inspircd.h. -.SS "#define TYPE_USER 1" -.PP -Definition at line 62 of file inspircd.h. -.SS "#define WM_AND 1" -.PP -Definition at line 57 of file inspircd.h. -.SS "#define WM_OR 2" -.PP -Definition at line 58 of file inspircd.h. -.SH "Typedef Documentation" -.PP -.SS "typedef void( \fBhandlerfunc\fP)(char **, int, \fBuserrec\fP *)" -.PP -Definition at line 70 of file inspircd.h. +Definition at line 52 of file inspircd.h. .SH "Function Documentation" .PP -.SS "void AddOper (\fBuserrec\fP * user)" -.PP .SS "void AddServerName (\fBstd::string\fP servername)" .PP -.SS "void AddWhoWas (\fBuserrec\fP * u)" -.PP -.SS "void call_handler (const char * commandname, char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -Referenced by Server::CallCommandHandler(). -.SS "void ConnectUser (\fBuserrec\fP * user)" -.PP -.SS "void DeleteOper (\fBuserrec\fP * user)" -.PP -.SS "void* dns_task (void * arg)" -.PP .SS "const char* FindServerNamePtr (\fBstd::string\fP servername)" .PP -Referenced by userrec::userrec(). -.SS "void force_nickchange (\fBuserrec\fP * user, const char * newnick)" -.PP -Referenced by Server::ChangeUserNick(). -.SS "void FullConnectUser (\fBuserrec\fP * user)" -.PP -.SS "void handle_version (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "bool is_valid_cmd (const char * commandname, int pcnt, \fBuserrec\fP * user)" -.PP -Referenced by Server::IsValidModuleCommand(). -.SS "void kill_link (\fBuserrec\fP * user, const char * r)" -.PP -Referenced by Server::PseudoToUser(), and Server::QuitUser(). -.SS "void kill_link_silent (\fBuserrec\fP * user, const char * r)" -.PP -.SS "int loop_call (\fBhandlerfunc\fP fn, char ** parameters, int pcnt, \fBuserrec\fP * u, int start, int end, int joins)" -.PP -.SS "void process_buffer (const char * cmdbuf, \fBuserrec\fP * user)" -.PP -.SS "\fBuserrec\fP* ReHashNick (char * Old, char * New)" -.PP +Referenced by AddClient(), and userrec::userrec(). .SH "Author" .PP Generated automatically by Doxygen for InspIRCd from the source code. diff --git a/docs/man/man3/inspircd_io.h.3 b/docs/man/man3/inspircd_io.h.3 index 9ed14e7be..006d467e0 100644 --- a/docs/man/man3/inspircd_io.h.3 +++ b/docs/man/man3/inspircd_io.h.3 @@ -1,4 +1,4 @@ -.TH "inspircd_io.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "inspircd_io.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -16,6 +16,8 @@ inspircd_io.h \- .br \fC#include 'globals.h'\fP .br +\fC#include 'modules.h'\fP +.br .SS "Classes" @@ -79,23 +81,23 @@ inspircd_io.h \- .PP Flags for use with \fBlog()\fP. .PP -Definition at line 28 of file inspircd_io.h. +Definition at line 29 of file inspircd_io.h. .PP -Referenced by add_channel(), Server::AddExtendedMode(), SocketEngine::AddFd(), chanrec::AddUser(), del_channel(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), InspSocket::InspSocket(), kick_channel(), InspSocket::Read(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine(). +Referenced by add_channel(), AddClient(), Server::AddExtendedMode(), SocketEngine::AddFd(), AddOper(), chanrec::AddUser(), AddWhoWas(), del_channel(), DeleteOper(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), FullConnectUser(), InspSocket::InspSocket(), kick_channel(), kill_link(), kill_link_silent(), InspSocket::Read(), ReHashNick(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine(). .SS "#define DEFAULT 30" .PP -Definition at line 30 of file inspircd_io.h. +Definition at line 31 of file inspircd_io.h. .PP Referenced by add_channel(), del_channel(), and kick_channel(). .SS "#define NONE 50" .PP -Definition at line 32 of file inspircd_io.h. +Definition at line 33 of file inspircd_io.h. .SS "#define SPARSE 40" .PP -Definition at line 31 of file inspircd_io.h. +Definition at line 32 of file inspircd_io.h. .SS "#define VERBOSE 20" .PP -Definition at line 29 of file inspircd_io.h. +Definition at line 30 of file inspircd_io.h. .SH "Function Documentation" .PP .SS "int BindPorts ()" diff --git a/docs/man/man3/irc.3 b/docs/man/man3/irc.3 index 357498a3b..b7f85d31a 100644 --- a/docs/man/man3/irc.3 +++ b/docs/man/man3/irc.3 @@ -1,4 +1,4 @@ -.TH "irc" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "irc" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/irc_InAddr_HashComp.3 b/docs/man/man3/irc_InAddr_HashComp.3 index 2530f430d..ce9006fe9 100644 --- a/docs/man/man3/irc_InAddr_HashComp.3 +++ b/docs/man/man3/irc_InAddr_HashComp.3 @@ -1,4 +1,4 @@ -.TH "irc::InAddr_HashComp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "irc::InAddr_HashComp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/irc_StrHashComp.3 b/docs/man/man3/irc_StrHashComp.3 index c27aab162..765c1fd52 100644 --- a/docs/man/man3/irc_StrHashComp.3 +++ b/docs/man/man3/irc_StrHashComp.3 @@ -1,4 +1,4 @@ -.TH "irc::StrHashComp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "irc::StrHashComp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/irc_irc_char_traits.3 b/docs/man/man3/irc_irc_char_traits.3 index 4b94560db..bb9f4f6fd 100644 --- a/docs/man/man3/irc_irc_char_traits.3 +++ b/docs/man/man3/irc_irc_char_traits.3 @@ -1,4 +1,4 @@ -.TH "irc::irc_char_traits" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "irc::irc_char_traits" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/message.h.3 b/docs/man/man3/message.h.3 index ab4a63db8..a6f935c18 100644 --- a/docs/man/man3/message.h.3 +++ b/docs/man/man3/message.h.3 @@ -1,4 +1,4 @@ -.TH "message.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "message.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/mode.h.3 b/docs/man/man3/mode.h.3 index c00c3947e..e42b845a3 100644 --- a/docs/man/man3/mode.h.3 +++ b/docs/man/man3/mode.h.3 @@ -1,4 +1,4 @@ -.TH "mode.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "mode.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -22,89 +22,19 @@ mode.h \- .br \fC#include 'channels.h'\fP .br +\fC#include 'ctables.h'\fP +.br -.SS "Functions" +.SS "Classes" .in +1c .ti -1c -.RI "char * \fBgive_ops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)" -.br -.ti -1c -.RI "char * \fBgive_hops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)" -.br -.ti -1c -.RI "char * \fBgive_voice\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)" -.br -.ti -1c -.RI "char * \fBtake_ops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)" -.br -.ti -1c -.RI "char * \fBtake_hops\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)" -.br -.ti -1c -.RI "char * \fBtake_voice\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)" +.RI "class \fBModeParser\fP" .br .ti -1c -.RI "char * \fBadd_ban\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)" -.br -.ti -1c -.RI "char * \fBtake_ban\fP (\fBuserrec\fP *user, char *dest, \fBchanrec\fP *chan, int status)" -.br -.ti -1c -.RI "void \fBprocess_modes\fP (char **parameters, \fBuserrec\fP *user, \fBchanrec\fP *chan, int status, int pcnt, bool servermode, bool silent, bool local)" -.br -.ti -1c -.RI "bool \fBallowed_umode\fP (char umode, char *sourcemodes, bool adding)" -.br -.ti -1c -.RI "bool \fBprocess_module_umode\fP (char umode, \fBuserrec\fP *source, void *dest, bool adding)" -.br -.ti -1c -.RI "void \fBhandle_mode\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" -.br -.ti -1c -.RI "void \fBserver_mode\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" -.br -.ti -1c -.RI "void \fBmerge_mode\fP (char **parameters, int pcnt)" -.br -.ti -1c -.RI "void \fBmerge_mode2\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" +.RI "class \fBcmd_mode\fP" .br .in -1c -.SH "Function Documentation" -.PP -.SS "char* add_ban (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)" -.PP -.SS "bool allowed_umode (char umode, char * sourcemodes, bool adding)" -.PP -.SS "char* give_hops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)" -.PP -.SS "char* give_ops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)" -.PP -.SS "char* give_voice (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)" -.PP -.SS "void handle_mode (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void merge_mode (char ** parameters, int pcnt)" -.PP -.SS "void merge_mode2 (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -.SS "void process_modes (char ** parameters, \fBuserrec\fP * user, \fBchanrec\fP * chan, int status, int pcnt, bool servermode, bool silent, bool local)" -.PP -.SS "bool process_module_umode (char umode, \fBuserrec\fP * source, void * dest, bool adding)" -.PP -.SS "void server_mode (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP -Referenced by Server::SendMode(). -.SS "char* take_ban (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)" -.PP -.SS "char* take_hops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)" -.PP -.SS "char* take_ops (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)" -.PP -.SS "char* take_voice (\fBuserrec\fP * user, char * dest, \fBchanrec\fP * chan, int status)" -.PP .SH "Author" .PP Generated automatically by Doxygen for InspIRCd from the source code. diff --git a/docs/man/man3/modules.cpp.3 b/docs/man/man3/modules.cpp.3 index 6a58ebacd..8ec07b6cd 100644 --- a/docs/man/man3/modules.cpp.3 +++ b/docs/man/man3/modules.cpp.3 @@ -1,4 +1,4 @@ -.TH "modules.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "modules.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -12,8 +12,6 @@ modules.cpp \- .br \fC#include 'inspircd_io.h'\fP .br -\fC#include 'inspircd_util.h'\fP -.br \fC#include \fP .br \fC#include \fP @@ -64,6 +62,8 @@ modules.cpp \- .br \fC#include 'typedefs.h'\fP .br +\fC#include 'command_parse.h'\fP +.br .SS "Functions" @@ -100,9 +100,6 @@ modules.cpp \- .in +1c .ti -1c -.RI "\fBSocketEngine\fP * \fBSE\fP" -.br -.ti -1c .RI "\fBServerConfig\fP * \fBConfig\fP" .br .ti -1c @@ -143,141 +140,141 @@ modules.cpp \- .PP .SS "bool DoAddExtendedMode (char modechar, int type, bool requires_oper, int params_on, int params_off)" .PP -Definition at line 134 of file modules.cpp. +Definition at line 133 of file modules.cpp. .PP References EMode, and ModeDefined(). .PP Referenced by Server::AddExtendedListMode(), and Server::AddExtendedMode(). .PP .nf -135 { -136 if (ModeDefined(modechar,type)) { -137 return false; -138 } -139 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off)); -140 return true; -141 } +134 { +135 if (ModeDefined(modechar,type)) { +136 return false; +137 } +138 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off)); +139 return true; +140 } .fi .PP .SS "std::vector<\fBircd_module\fP*> factory (255)" .PP .SS "bool ModeDefined (char modechar, int type)" .PP -Definition at line 71 of file modules.cpp. +Definition at line 70 of file modules.cpp. .PP References EMode. .PP Referenced by DoAddExtendedMode(). .PP .nf -72 { -73 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -74 { -75 if ((i->modechar == modechar) && (i->type == type)) -76 { -77 return true; -78 } -79 } -80 return false; -81 } +71 { +72 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +73 { +74 if ((i->modechar == modechar) && (i->type == type)) +75 { +76 return true; +77 } +78 } +79 return false; +80 } .fi .PP .SS "int ModeDefinedOff (char modechar, int type)" .PP -Definition at line 121 of file modules.cpp. +Definition at line 120 of file modules.cpp. .PP References EMode. .PP .nf -122 { -123 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -124 { -125 if ((i->modechar == modechar) && (i->type == type)) -126 { -127 return i->params_when_off; -128 } -129 } -130 return 0; -131 } +121 { +122 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +123 { +124 if ((i->modechar == modechar) && (i->type == type)) +125 { +126 return i->params_when_off; +127 } +128 } +129 return 0; +130 } .fi .PP .SS "int ModeDefinedOn (char modechar, int type)" .PP -Definition at line 108 of file modules.cpp. +Definition at line 107 of file modules.cpp. .PP References EMode. .PP .nf -109 { -110 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -111 { -112 if ((i->modechar == modechar) && (i->type == type)) -113 { -114 return i->params_when_on; -115 } -116 } -117 return 0; -118 } +108 { +109 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +110 { +111 if ((i->modechar == modechar) && (i->type == type)) +112 { +113 return i->params_when_on; +114 } +115 } +116 return 0; +117 } .fi .PP .SS "bool ModeDefinedOper (char modechar, int type)" .PP -Definition at line 95 of file modules.cpp. +Definition at line 94 of file modules.cpp. .PP References EMode. .PP .nf -96 { -97 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -98 { -99 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true)) -100 { -101 return true; -102 } -103 } -104 return false; -105 } +95 { +96 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +97 { +98 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true)) +99 { +100 return true; +101 } +102 } +103 return false; +104 } .fi .PP .SS "bool ModeIsListMode (char modechar, int type)" .PP -Definition at line 83 of file modules.cpp. +Definition at line 82 of file modules.cpp. .PP References EMode. .PP .nf -84 { -85 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -86 { -87 if ((i->modechar == modechar) && (i->type == type) && (i->list == true)) -88 { -89 return true; -90 } -91 } -92 return false; -93 } +83 { +84 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +85 { +86 if ((i->modechar == modechar) && (i->type == type) && (i->list == true)) +87 { +88 return true; +89 } +90 } +91 return false; +92 } .fi .PP .SS "void ModeMakeList (char modechar)" .PP -Definition at line 144 of file modules.cpp. +Definition at line 143 of file modules.cpp. .PP References EMode, and MT_CHANNEL. .PP Referenced by Server::AddExtendedListMode(). .PP .nf -145 { -146 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -147 { -148 if ((i->modechar == modechar) && (i->type == MT_CHANNEL)) -149 { -150 i->list = true; -151 return; -152 } -153 } -154 return; -155 } +144 { +145 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +146 { +147 if ((i->modechar == modechar) && (i->type == MT_CHANNEL)) +148 { +149 i->list = true; +150 return; +151 } +152 } +153 return; +154 } .fi .PP .SS "std::vector<\fBModule\fP*> modules (255)" @@ -288,13 +285,14 @@ Referenced by Server::AddExtendedListMode(). .PP .SS "\fBuser_hash\fP \fBclientlist\fP" .PP +Referenced by AddClient(), kill_link(), kill_link_silent(), and ReHashNick(). .SS "\fBcommand_table\fP \fBcmdlist\fP" .PP .SS "\fBServerConfig\fP* \fBConfig\fP" .PP .SS "\fBExtModeList\fP \fBEMode\fP" .PP -Definition at line 68 of file modules.cpp. +Definition at line 67 of file modules.cpp. .PP Referenced by DoAddExtendedMode(), ModeDefined(), ModeDefinedOff(), ModeDefinedOn(), ModeDefinedOper(), ModeIsListMode(), and ModeMakeList(). .SS "std::vector<\fBircd_module\fP*> factory" @@ -303,14 +301,12 @@ Referenced by DoAddExtendedMode(), ModeDefined(), ModeDefinedOff(), ModeDefinedO .PP .SS "int \fBMODCOUNT\fP = -1" .PP -Definition at line 935 of file modules.cpp. +Definition at line 934 of file modules.cpp. .SS "std::vector<\fBInspSocket\fP*> \fBmodule_sockets\fP" .PP Referenced by Server::AddSocket(), and Server::DelSocket(). .SS "std::vector<\fBModule\fP*> modules" .PP -.SS "\fBSocketEngine\fP* \fBSE\fP" -.PP .SS "\fBInspIRCd\fP* \fBServerInstance\fP" .PP .SS "time_t \fBTIME\fP" diff --git a/docs/man/man3/modules.h.3 b/docs/man/man3/modules.h.3 index 481aeaa57..e326f26c4 100644 --- a/docs/man/man3/modules.h.3 +++ b/docs/man/man3/modules.h.3 @@ -1,4 +1,4 @@ -.TH "modules.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "modules.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -158,6 +158,30 @@ modules.h \- .RI "#define \fBFD_MAGIC_NUMBER\fP -42" .br .ti -1c +.RI "#define \fBIS_LOCAL\fP(x) (x->fd > -1)" +.br +.ti -1c +.RI "#define \fBIS_REMOTE\fP(x) (x->fd < 0)" +.br +.ti -1c +.RI "#define \fBIS_MODULE_CREATED\fP(x) (x->fd == FD_MAGIC_NUMBER)" +.br +.ti -1c +.RI "#define \fBWM_AND\fP 1" +.br +.ti -1c +.RI "#define \fBWM_OR\fP 2" +.br +.ti -1c +.RI "#define \fBTYPE_USER\fP 1" +.br +.ti -1c +.RI "#define \fBTYPE_CHANNEL\fP 2" +.br +.ti -1c +.RI "#define \fBTYPE_SERVER\fP 3" +.br +.ti -1c .RI "#define \fBCONF_NOT_A_NUMBER\fP 0x000010" .br .ti -1c @@ -192,12 +216,6 @@ modules.h \- .in +1c .ti -1c -.RI "void \fBcreatecommand\fP (char *cmd, \fBhandlerfunc\fP f, char flags, int minparams, char *source)" -.br -.ti -1c -.RI "void \fBserver_mode\fP (char **parameters, int pcnt, \fBuserrec\fP *user)" -.br -.ti -1c .RI "bool \fBModeDefined\fP (char c, int i)" .br .ti -1c @@ -264,22 +282,22 @@ Definition at line 38 of file modules.h. Referenced by kick_channel(). .SS "#define CONF_FILE_NOT_FOUND 0x000200" .PP -Definition at line 1523 of file modules.h. +Definition at line 1541 of file modules.h. .PP Referenced by ConfigReader::ConfigReader(). .SS "#define CONF_NOT_A_NUMBER 0x000010" .PP -Definition at line 1520 of file modules.h. +Definition at line 1538 of file modules.h. .PP Referenced by ConfigReader::ReadInteger(). .SS "#define CONF_NOT_UNSIGNED 0x000080" .PP -Definition at line 1521 of file modules.h. +Definition at line 1539 of file modules.h. .PP Referenced by ConfigReader::ReadInteger(). .SS "#define CONF_VALUE_NOT_FOUND 0x000100" .PP -Definition at line 1522 of file modules.h. +Definition at line 1540 of file modules.h. .PP Referenced by ConfigReader::ReadFlag(), ConfigReader::ReadInteger(), and ConfigReader::ReadValue(). .SS "#define DEBUG 10" @@ -292,14 +310,14 @@ Definition at line 23 of file modules.h. Definition at line 25 of file modules.h. .SS "#define FD_MAGIC_NUMBER -42" .PP -Definition at line 101 of file modules.h. +Definition at line 102 of file modules.h. .PP Referenced by Server::PseudoToUser(), and Server::UserToPseudo(). .SS "#define FOREACH_MOD for (int _i = 0; _i <= \fBMODCOUNT\fP; _i++) modules[_i]->" .PP -Definition at line 81 of file modules.h. +Definition at line 82 of file modules.h. .PP -Referenced by del_channel(), ForceChan(), kick_channel(), and Event::Send(). +Referenced by del_channel(), ForceChan(), FullConnectUser(), kick_channel(), kill_link(), kill_link_silent(), and Event::Send(). .SS "#define FOREACH_RESULT(x)" .PP \fBValue:\fP @@ -316,9 +334,18 @@ Referenced by del_channel(), ForceChan(), kick_channel(), and Event::Send(). } .fi .PP -Definition at line 89 of file modules.h. +Definition at line 90 of file modules.h. +.PP +Referenced by add_channel(), force_nickchange(), and kick_channel(). +.SS "#define IS_LOCAL(x) (x->fd > -1)" +.PP +Definition at line 106 of file modules.h. +.SS "#define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER)" +.PP +Definition at line 108 of file modules.h. +.SS "#define IS_REMOTE(x) (x->fd < 0)" .PP -Referenced by add_channel(), and kick_channel(). +Definition at line 107 of file modules.h. .SS "#define MT_CHANNEL 1" .PP Used with OnExtendedMode() method of modules. @@ -342,6 +369,15 @@ Definition at line 27 of file modules.h. .SS "#define SPARSE 40" .PP Definition at line 26 of file modules.h. +.SS "#define TYPE_CHANNEL 2" +.PP +Definition at line 118 of file modules.h. +.SS "#define TYPE_SERVER 3" +.PP +Definition at line 119 of file modules.h. +.SS "#define TYPE_USER 1" +.PP +Definition at line 117 of file modules.h. .SS "#define VERBOSE 20" .PP Definition at line 24 of file modules.h. @@ -361,150 +397,151 @@ Definition at line 52 of file modules.h. Definition at line 53 of file modules.h. .PP Referenced by Module::GetVersion(). +.SS "#define WM_AND 1" +.PP +Definition at line 112 of file modules.h. +.SS "#define WM_OR 2" +.PP +Definition at line 113 of file modules.h. .SH "Typedef Documentation" .PP .SS "typedef std::deque<\fBuserrec\fP*> \fBchanuserlist\fP" .PP Holds a list of users in a channel. .PP -Definition at line 74 of file modules.h. +Definition at line 75 of file modules.h. .SS "typedef std::deque<\fBstd::string\fP> \fBfile_cache\fP" .PP Low level definition of a \fBFileReader\fP classes file cache area. .PP -Definition at line 65 of file modules.h. +Definition at line 66 of file modules.h. .SS "typedef DLLFactory<\fBModuleFactory\fP> \fBircd_module\fP" .PP -Definition at line 1689 of file modules.h. +Definition at line 1707 of file modules.h. .SS "typedef \fBfile_cache\fP \fBstring_list\fP" .PP -Definition at line 70 of file modules.h. +Definition at line 71 of file modules.h. .SH "Function Documentation" .PP -.SS "void createcommand (char * cmd, \fBhandlerfunc\fP f, char flags, int minparams, char * source)" -.PP -Referenced by Server::AddCommand(). .SS "bool ModeDefined (char c, int i)" .PP -Definition at line 71 of file modules.cpp. +Definition at line 70 of file modules.cpp. .PP References EMode. .PP Referenced by DoAddExtendedMode(). .PP .nf -72 { -73 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -74 { -75 if ((i->modechar == modechar) && (i->type == type)) -76 { -77 return true; -78 } -79 } -80 return false; -81 } +71 { +72 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +73 { +74 if ((i->modechar == modechar) && (i->type == type)) +75 { +76 return true; +77 } +78 } +79 return false; +80 } .fi .PP .SS "int ModeDefinedOff (char c, int i)" .PP -Definition at line 121 of file modules.cpp. +Definition at line 120 of file modules.cpp. .PP References EMode. .PP .nf -122 { -123 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -124 { -125 if ((i->modechar == modechar) && (i->type == type)) -126 { -127 return i->params_when_off; -128 } -129 } -130 return 0; -131 } +121 { +122 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +123 { +124 if ((i->modechar == modechar) && (i->type == type)) +125 { +126 return i->params_when_off; +127 } +128 } +129 return 0; +130 } .fi .PP .SS "int ModeDefinedOn (char c, int i)" .PP -Definition at line 108 of file modules.cpp. +Definition at line 107 of file modules.cpp. .PP References EMode. .PP .nf -109 { -110 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -111 { -112 if ((i->modechar == modechar) && (i->type == type)) -113 { -114 return i->params_when_on; -115 } -116 } -117 return 0; -118 } +108 { +109 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +110 { +111 if ((i->modechar == modechar) && (i->type == type)) +112 { +113 return i->params_when_on; +114 } +115 } +116 return 0; +117 } .fi .PP .SS "bool ModeDefinedOper (char c, int i)" .PP -Definition at line 95 of file modules.cpp. +Definition at line 94 of file modules.cpp. .PP References EMode. .PP .nf -96 { -97 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -98 { -99 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true)) -100 { -101 return true; -102 } -103 } -104 return false; -105 } +95 { +96 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +97 { +98 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true)) +99 { +100 return true; +101 } +102 } +103 return false; +104 } .fi .PP .SS "bool ModeIsListMode (char modechar, int type)" .PP -Definition at line 83 of file modules.cpp. +Definition at line 82 of file modules.cpp. .PP References EMode. .PP .nf -84 { -85 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -86 { -87 if ((i->modechar == modechar) && (i->type == type) && (i->list == true)) -88 { -89 return true; -90 } -91 } -92 return false; -93 } +83 { +84 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +85 { +86 if ((i->modechar == modechar) && (i->type == type) && (i->list == true)) +87 { +88 return true; +89 } +90 } +91 return false; +92 } .fi .PP .SS "void ModeMakeList (char modechar)" .PP -Definition at line 144 of file modules.cpp. +Definition at line 143 of file modules.cpp. .PP References EMode, and MT_CHANNEL. .PP Referenced by Server::AddExtendedListMode(). .PP .nf -145 { -146 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -147 { -148 if ((i->modechar == modechar) && (i->type == MT_CHANNEL)) -149 { -150 i->list = true; -151 return; -152 } -153 } -154 return; -155 } +144 { +145 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +146 { +147 if ((i->modechar == modechar) && (i->type == MT_CHANNEL)) +148 { +149 i->list = true; +150 return; +151 } +152 } +153 return; +154 } .fi .PP -.SS "void server_mode (char ** parameters, int pcnt, \fBuserrec\fP * user)" -.PP .SH "Author" .PP Generated automatically by Doxygen for InspIRCd from the source code. diff --git a/docs/man/man3/nspace.3 b/docs/man/man3/nspace.3 index 710faf6e3..6f94db022 100644 --- a/docs/man/man3/nspace.3 +++ b/docs/man/man3/nspace.3 @@ -1,4 +1,4 @@ -.TH "nspace" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "nspace" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/nspace_hash_ in_addr _.3 b/docs/man/man3/nspace_hash_ in_addr _.3 index 1957a8802..71b1b92a8 100644 --- a/docs/man/man3/nspace_hash_ in_addr _.3 +++ b/docs/man/man3/nspace_hash_ in_addr _.3 @@ -1,4 +1,4 @@ -.TH "nspace::hash< in_addr >" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "nspace::hash< in_addr >" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/nspace_hash_ string _.3 b/docs/man/man3/nspace_hash_ string _.3 index aba6882af..ea101e76b 100644 --- a/docs/man/man3/nspace_hash_ string _.3 +++ b/docs/man/man3/nspace_hash_ string _.3 @@ -1,4 +1,4 @@ -.TH "nspace::hash< string >" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "nspace::hash< string >" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/serverstats.3 b/docs/man/man3/serverstats.3 index c3448337f..9a3d5480c 100644 --- a/docs/man/man3/serverstats.3 +++ b/docs/man/man3/serverstats.3 @@ -1,4 +1,4 @@ -.TH "serverstats" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "serverstats" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -48,76 +48,85 @@ serverstats \- .ti -1c .RI "int \fBstatsRecv\fP" .br +.ti -1c +.RI "int \fBBoundPortCount\fP" +.br .in -1c .SH "Detailed Description" .PP -Definition at line 72 of file inspircd.h. +Definition at line 74 of file inspircd.h. .SH "Constructor & Destructor Documentation" .PP .SS "serverstats::serverstats ()\fC [inline]\fP" .PP -Definition at line 86 of file inspircd.h. +Definition at line 89 of file inspircd.h. .PP -References statsAccept, statsCollisions, statsConnects, statsDns, statsDnsBad, statsDnsGood, statsRecv, statsRefused, statsSent, and statsUnknown. +References BoundPortCount, statsAccept, statsCollisions, statsConnects, statsDns, statsDnsBad, statsDnsGood, statsRecv, statsRefused, statsSent, and statsUnknown. .PP .nf -87 { -88 statsAccept = statsRefused = statsUnknown = 0; -89 statsCollisions = statsDns = statsDnsGood = 0; -90 statsDnsBad = statsConnects = statsSent = statsRecv = 0; -91 } +90 { +91 statsAccept = statsRefused = statsUnknown = 0; +92 statsCollisions = statsDns = statsDnsGood = 0; +93 statsDnsBad = statsConnects = statsSent = statsRecv = 0; +94 BoundPortCount = 0; +95 } .fi .PP .SH "Member Data Documentation" .PP +.SS "int \fBserverstats::BoundPortCount\fP" +.PP +Definition at line 87 of file inspircd.h. +.PP +Referenced by serverstats(). .SS "int \fBserverstats::statsAccept\fP" .PP -Definition at line 75 of file inspircd.h. +Definition at line 77 of file inspircd.h. .PP Referenced by serverstats(). .SS "int \fBserverstats::statsCollisions\fP" .PP -Definition at line 78 of file inspircd.h. +Definition at line 80 of file inspircd.h. .PP -Referenced by serverstats(). +Referenced by force_nickchange(), and serverstats(). .SS "int \fBserverstats::statsConnects\fP" .PP -Definition at line 82 of file inspircd.h. +Definition at line 84 of file inspircd.h. .PP -Referenced by serverstats(). +Referenced by FullConnectUser(), and serverstats(). .SS "int \fBserverstats::statsDns\fP" .PP -Definition at line 79 of file inspircd.h. +Definition at line 81 of file inspircd.h. .PP Referenced by serverstats(). .SS "int \fBserverstats::statsDnsBad\fP" .PP -Definition at line 81 of file inspircd.h. +Definition at line 83 of file inspircd.h. .PP Referenced by serverstats(). .SS "int \fBserverstats::statsDnsGood\fP" .PP -Definition at line 80 of file inspircd.h. +Definition at line 82 of file inspircd.h. .PP Referenced by serverstats(). .SS "int \fBserverstats::statsRecv\fP" .PP -Definition at line 84 of file inspircd.h. +Definition at line 86 of file inspircd.h. .PP Referenced by serverstats(). .SS "int \fBserverstats::statsRefused\fP" .PP -Definition at line 76 of file inspircd.h. +Definition at line 78 of file inspircd.h. .PP Referenced by serverstats(). .SS "int \fBserverstats::statsSent\fP" .PP -Definition at line 83 of file inspircd.h. +Definition at line 85 of file inspircd.h. .PP Referenced by serverstats(). .SS "int \fBserverstats::statsUnknown\fP" .PP -Definition at line 77 of file inspircd.h. +Definition at line 79 of file inspircd.h. .PP Referenced by serverstats(). diff --git a/docs/man/man3/socket.cpp.3 b/docs/man/man3/socket.cpp.3 index 4960cafd7..9a9ca61d2 100644 --- a/docs/man/man3/socket.cpp.3 +++ b/docs/man/man3/socket.cpp.3 @@ -1,4 +1,4 @@ -.TH "socket.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "socket.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -38,8 +38,6 @@ socket.cpp \- .br \fC#include 'inspircd_io.h'\fP .br -\fC#include 'inspircd_util.h'\fP -.br \fC#include 'inspstring.h'\fP .br \fC#include 'helperfuncs.h'\fP @@ -51,13 +49,7 @@ socket.cpp \- .in +1c .ti -1c -.RI "\fBSocketEngine\fP * \fBSE\fP" -.br -.ti -1c -.RI "int \fBboundPortCount\fP" -.br -.ti -1c -.RI "int \fBopenSockfd\fP [MAXSOCKS]" +.RI "\fBInspIRCd\fP * \fBServerInstance\fP" .br .ti -1c .RI "time_t \fBTIME\fP" @@ -68,15 +60,11 @@ socket.cpp \- .in -1c .SH "Variable Documentation" .PP -.SS "int \fBboundPortCount\fP" -.PP -.SS "int \fBopenSockfd\fP[MAXSOCKS]" -.PP -.SS "\fBSocketEngine\fP* \fBSE\fP" +.SS "\fBInspIRCd\fP* \fBServerInstance\fP" .PP .SS "\fBInspSocket\fP* \fBsocket_ref\fP[65535]" .PP -Definition at line 46 of file socket.cpp. +Definition at line 43 of file socket.cpp. .SS "time_t \fBTIME\fP" .PP .SH "Author" diff --git a/docs/man/man3/socket.h.3 b/docs/man/man3/socket.h.3 index 788e52df6..9e9c0dbf7 100644 --- a/docs/man/man3/socket.h.3 +++ b/docs/man/man3/socket.h.3 @@ -1,4 +1,4 @@ -.TH "socket.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "socket.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/socketengine.cpp.3 b/docs/man/man3/socketengine.cpp.3 index 9be381503..38cc4d5ea 100644 --- a/docs/man/man3/socketengine.cpp.3 +++ b/docs/man/man3/socketengine.cpp.3 @@ -1,4 +1,4 @@ -.TH "socketengine.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "socketengine.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/socketengine.h.3 b/docs/man/man3/socketengine.h.3 index 35bf728c1..835dcc8f3 100644 --- a/docs/man/man3/socketengine.h.3 +++ b/docs/man/man3/socketengine.h.3 @@ -1,4 +1,4 @@ -.TH "socketengine.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "socketengine.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -67,6 +67,8 @@ Referenced by SocketEngine::GetType(). .SS "const char \fBX_ESTAB_CLIENT\fP = 2" .PP Definition at line 43 of file socketengine.h. +.PP +Referenced by AddClient(). .SS "const char \fBX_ESTAB_DNS\fP = 4" .PP Definition at line 45 of file socketengine.h. diff --git a/docs/man/man3/std.3 b/docs/man/man3/std.3 index a420bba50..55b862598 100644 --- a/docs/man/man3/std.3 +++ b/docs/man/man3/std.3 @@ -1,4 +1,4 @@ -.TH "std" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "std" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/std_char_traits.3 b/docs/man/man3/std_char_traits.3 index 599987085..42e503317 100644 --- a/docs/man/man3/std_char_traits.3 +++ b/docs/man/man3/std_char_traits.3 @@ -1,4 +1,4 @@ -.TH "std::char_traits" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "std::char_traits" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME diff --git a/docs/man/man3/typedefs.h.3 b/docs/man/man3/typedefs.h.3 index f2a9a31ea..859161214 100644 --- a/docs/man/man3/typedefs.h.3 +++ b/docs/man/man3/typedefs.h.3 @@ -1,4 +1,4 @@ -.TH "typedefs.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "typedefs.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -45,9 +45,6 @@ typedefs.h \- .RI "typedef nspace::hash_map< \fBstd::string\fP, \fBWhoWasUser\fP *, nspace::hash< \fBstring\fP >, \fBirc::StrHashComp\fP > \fBwhowas_hash\fP" .br .ti -1c -.RI "typedef std::deque< \fBcommand_t\fP > \fBcommand_table\fP" -.br -.ti -1c .RI "typedef std::vector< \fBstd::string\fP > \fBservernamelist\fP" .br .ti -1c @@ -68,21 +65,18 @@ Definition at line 22 of file typedefs.h. .SS "typedef nspace::hash_map<\fBstd::string\fP, \fBchanrec\fP*, nspace::hash<\fBstring\fP>, \fBirc::StrHashComp\fP> \fBchan_hash\fP" .PP Definition at line 21 of file typedefs.h. -.SS "typedef std::deque<\fBcommand_t\fP> \fBcommand_table\fP" -.PP -Definition at line 24 of file typedefs.h. .SS "typedef std::vector<\fBExtMode\fP> \fBExtModeList\fP" .PP -Definition at line 26 of file typedefs.h. +Definition at line 25 of file typedefs.h. .SS "typedef ExtModeList::iterator \fBExtModeListIter\fP" .PP -Definition at line 27 of file typedefs.h. +Definition at line 26 of file typedefs.h. .SS "typedef std::deque<\fBstd::string\fP> \fBfile_cache\fP" .PP -Definition at line 28 of file typedefs.h. +Definition at line 27 of file typedefs.h. .SS "typedef std::vector<\fBstd::string\fP> \fBservernamelist\fP" .PP -Definition at line 25 of file typedefs.h. +Definition at line 24 of file typedefs.h. .SS "typedef nspace::hash_map<\fBstd::string\fP, \fBuserrec\fP*, nspace::hash<\fBstring\fP>, \fBirc::StrHashComp\fP> \fBuser_hash\fP" .PP Definition at line 20 of file typedefs.h. diff --git a/docs/man/man3/ucrec.3 b/docs/man/man3/ucrec.3 index ba427060b..3f0226786 100644 --- a/docs/man/man3/ucrec.3 +++ b/docs/man/man3/ucrec.3 @@ -1,4 +1,4 @@ -.TH "ucrec" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "ucrec" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -69,7 +69,7 @@ If the record is not in use, this value will be NULL. .PP Definition at line 254 of file channels.h. .PP -Referenced by ForceChan(). +Referenced by AddClient(), and ForceChan(). .SS "char \fBucrec::uc_modes\fP" .PP Contains a bitmask of the UCMODE_OP . @@ -78,7 +78,7 @@ Contains a bitmask of the UCMODE_OP . .PP Definition at line 249 of file channels.h. .PP -Referenced by ForceChan(). +Referenced by AddClient(), and ForceChan(). .SH "Author" .PP diff --git a/docs/man/man3/userprocess.h.3 b/docs/man/man3/userprocess.h.3 index 70e681727..8a1b46b91 100644 --- a/docs/man/man3/userprocess.h.3 +++ b/docs/man/man3/userprocess.h.3 @@ -1,4 +1,4 @@ -.TH "userprocess.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "userprocess.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -8,6 +8,8 @@ userprocess.h \- .PP \fC#include 'users.h'\fP .br +\fC#include 'inspircd.h'\fP +.br .SS "Functions" @@ -16,7 +18,7 @@ userprocess.h \- .RI "void \fBCheckDie\fP ()" .br .ti -1c -.RI "void \fBLoadAllModules\fP ()" +.RI "void \fBLoadAllModules\fP (\fBInspIRCd\fP *\fBServerInstance\fP)" .br .ti -1c .RI "void \fBCheckRoot\fP ()" @@ -39,7 +41,7 @@ userprocess.h \- .PP .SS "bool DoBackgroundUserStuff (time_t TIME)" .PP -.SS "void LoadAllModules ()" +.SS "void LoadAllModules (\fBInspIRCd\fP * ServerInstance)" .PP .SS "void OpenLog (char ** argv, int argc)" .PP diff --git a/docs/man/man3/userrec.3 b/docs/man/man3/userrec.3 index 9c34db700..e0c938e5e 100644 --- a/docs/man/man3/userrec.3 +++ b/docs/man/man3/userrec.3 @@ -1,4 +1,4 @@ -.TH "userrec" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "userrec" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -27,19 +27,19 @@ Inherits \fBconnection\fP. .br .RI "\fIReturns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. \fP" .ti -1c -.RI "virtual bool \fBIsInvited\fP (char *channel)" +.RI "virtual bool \fBIsInvited\fP (\fBirc::string\fP &channel)" .br .RI "\fIReturns true if a user is invited to a channel. \fP" .ti -1c -.RI "virtual void \fBInviteTo\fP (char *channel)" +.RI "virtual void \fBInviteTo\fP (\fBirc::string\fP &channel)" .br .RI "\fIAdds a channel to a users invite list (invites them to a channel). \fP" .ti -1c -.RI "virtual void \fBRemoveInvite\fP (char *channel)" +.RI "virtual void \fBRemoveInvite\fP (\fBirc::string\fP &channel)" .br .RI "\fIRemoves a channel from a users invite list. \fP" .ti -1c -.RI "bool \fBHasPermission\fP (char *command)" +.RI "bool \fBHasPermission\fP (\fBstd::string\fP &command)" .br .RI "\fIReturns true or false for if a user can execute a privilaged oper command. \fP" .ti -1c @@ -192,49 +192,49 @@ Holds all information about a user This class stores all information about a use Everything about a connection is stored here primarily, from the user's socket ID (file descriptor) through to the user's nickname and hostname. Use the Find method of the server class to locate a specific user by nickname. .PP -Definition at line 111 of file users.h. +Definition at line 115 of file users.h. .SH "Constructor & Destructor Documentation" .PP .SS "userrec::userrec ()" .PP -Definition at line 36 of file users.cpp. +Definition at line 63 of file users.cpp. .PP References awaymsg, connection::bytes_in, connection::bytes_out, chans, connection::cmds_in, connection::cmds_out, dhost, dns_done, connection::fd, FindServerNamePtr(), flood, fullname, connection::haspassed, connection::host, ident, connection::idle_lastmsg, invites, connection::ip, connection::lastping, lines_in, modes, nick, connection::nping, oper, connection::port, recvq, connection::registered, reset_due, sendq, server, ServerConfig::ServerName, connection::signon, TIME, and timeout. .PP .nf -37 { -38 // the PROPER way to do it, AVOID bzero at *ALL* costs -39 strcpy(nick,''); -40 strcpy(ip,'127.0.0.1'); -41 timeout = 0; -42 strcpy(ident,''); -43 strcpy(host,''); -44 strcpy(dhost,''); -45 strcpy(fullname,''); -46 strcpy(modes,''); -47 server = (char*)FindServerNamePtr(Config->ServerName); -48 strcpy(awaymsg,''); -49 strcpy(oper,''); -50 reset_due = TIME; -51 lines_in = 0; -52 fd = lastping = signon = idle_lastmsg = nping = registered = 0; -53 flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0; -54 haspassed = false; -55 dns_done = false; -56 recvq = ''; -57 sendq = ''; -58 chans.clear(); -59 invites.clear(); -60 } +64 { +65 // the PROPER way to do it, AVOID bzero at *ALL* costs +66 strcpy(nick,''); +67 strcpy(ip,'127.0.0.1'); +68 timeout = 0; +69 strcpy(ident,''); +70 strcpy(host,''); +71 strcpy(dhost,''); +72 strcpy(fullname,''); +73 strcpy(modes,''); +74 server = (char*)FindServerNamePtr(Config->ServerName); +75 strcpy(awaymsg,''); +76 strcpy(oper,''); +77 reset_due = TIME; +78 lines_in = 0; +79 fd = lastping = signon = idle_lastmsg = nping = registered = 0; +80 flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0; +81 haspassed = false; +82 dns_done = false; +83 recvq = ''; +84 sendq = ''; +85 chans.clear(); +86 invites.clear(); +87 } .fi .PP .SS "userrec::~userrec ()\fC [virtual]\fP" .PP -Definition at line 62 of file users.cpp. +Definition at line 89 of file users.cpp. .PP .nf -63 { -64 } +90 { +91 } .fi .PP .SH "Member Function Documentation" @@ -245,35 +245,35 @@ This method adds data to the buffer of the user. .PP The buffer can grow to any size within limits of the available memory, managed by the size of a \fBstd::string\fP, however if any individual line in the buffer grows over 600 bytes in length (which is 88 chars over the RFC-specified limit per line) then the method will return false and the text will not be inserted. .PP -Definition at line 198 of file users.cpp. +Definition at line 219 of file users.cpp. .PP References recvq, recvqmax, SetWriteError(), and WriteOpers(). .PP .nf -199 { -200 std::string b = ''; -201 for (unsigned int i = 0; i < a.length(); i++) -202 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7)) -203 b = b + a[i]; -204 std::stringstream stream(recvq); -205 stream << b; -206 recvq = stream.str(); -207 unsigned int i = 0; -208 // count the size of the first line in the buffer. -209 while (i < recvq.length()) -210 { -211 if (recvq[i++] == '\n') -212 break; -213 } -214 if (recvq.length() > (unsigned)this->recvqmax) -215 { -216 this->SetWriteError('RecvQ exceeded'); -217 WriteOpers('*** User %s RecvQ of %d exceeds connect class maximum of %d',this->nick,recvq.length(),this->recvqmax); -218 } -219 // return false if we've had more than 600 characters WITHOUT -220 // a carriage return (this is BAD, drop the socket) -221 return (i < 600); -222 } +220 { +221 std::string b = ''; +222 for (unsigned int i = 0; i < a.length(); i++) +223 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7)) +224 b = b + a[i]; +225 std::stringstream stream(recvq); +226 stream << b; +227 recvq = stream.str(); +228 unsigned int i = 0; +229 // count the size of the first line in the buffer. +230 while (i < recvq.length()) +231 { +232 if (recvq[i++] == '\n') +233 break; +234 } +235 if (recvq.length() > (unsigned)this->recvqmax) +236 { +237 this->SetWriteError('RecvQ exceeded'); +238 WriteOpers('*** User %s RecvQ of %d exceeds connect class maximum of %d',this->nick,recvq.length(),this->recvqmax); +239 } +240 // return false if we've had more than 600 characters WITHOUT +241 // a carriage return (this is BAD, drop the socket) +242 return (i < 600); +243 } .fi .PP .SS "void userrec::AddWriteBuf (\fBstd::string\fP data)" @@ -282,24 +282,28 @@ Adds to the user's write buffer. .PP You may add any amount of text up to this users sendq value, if you exceed the sendq value, \fBSetWriteError()\fP will be called to set the users error string to 'SendQ exceeded', and further buffer adds will be dropped. .PP -Definition at line 254 of file users.cpp. +Definition at line 275 of file users.cpp. .PP References sendq, sendqmax, SetWriteError(), and WriteOpers(). .PP .nf -255 { -256 if (this->GetWriteError() != '') -257 return; -258 if (sendq.length() + data.length() > (unsigned)this->sendqmax) -259 { -260 WriteOpers('*** User %s SendQ of %d exceeds connect class maximum of %d',this->nick,sendq.length() + data.length(),this->sendqmax); -261 this->SetWriteError('SendQ exceeded'); -262 return; -263 } -264 std::stringstream stream; -265 stream << sendq << data; -266 sendq = stream.str(); -267 } +276 { +277 if (this->GetWriteError() != '') +278 return; +279 if (sendq.length() + data.length() > (unsigned)this->sendqmax) +280 { +281 /* Fix by brain - Set the error text BEFORE calling writeopers, because +282 * if we dont it'll recursively call here over and over again trying +283 * to repeatedly add the text to the sendq! +284 */ +285 this->SetWriteError('SendQ exceeded'); +286 WriteOpers('*** User %s SendQ of %d exceeds connect class maximum of %d',this->nick,sendq.length() + data.length(),this->sendqmax); +287 return; +288 } +289 std::stringstream stream; +290 stream << sendq << data; +291 sendq = stream.str(); +292 } .fi .PP .SS "bool userrec::BufferIsReady ()" @@ -308,46 +312,48 @@ This method returns true if the buffer contains at least one carriage return cha .PP one complete line may be read) .PP -Definition at line 224 of file users.cpp. +Definition at line 245 of file users.cpp. .PP References recvq. .PP .nf -225 { -226 for (unsigned int i = 0; i < recvq.length(); i++) -227 if (recvq[i] == '\n') -228 return true; -229 return false; -230 } +246 { +247 for (unsigned int i = 0; i < recvq.length(); i++) +248 if (recvq[i] == '\n') +249 return true; +250 return false; +251 } .fi .PP .SS "void userrec::ClearBuffer ()" .PP This function clears the entire buffer by setting it to an empty string. .PP -Definition at line 232 of file users.cpp. +Definition at line 253 of file users.cpp. .PP References recvq. .PP Referenced by Server::PseudoToUser(), and Server::UserToPseudo(). .PP .nf -233 { -234 recvq = ''; -235 } +254 { +255 recvq = ''; +256 } .fi .PP .SS "void userrec::CloseSocket ()" .PP Shuts down and closes the user's socket. .PP -Definition at line 66 of file users.cpp. +Definition at line 93 of file users.cpp. +.PP +Referenced by kill_link(), and kill_link_silent(). .PP .nf -67 { -68 shutdown(this->fd,2); -69 close(this->fd); -70 } +94 { +95 shutdown(this->fd,2); +96 close(this->fd); +97 } .fi .PP .SS "void userrec::FlushWriteBuf ()" @@ -356,31 +362,33 @@ Flushes as much of the user's buffer to the file descriptor as possible. .PP This function may not always flush the entire buffer, rather instead as much of it as it possibly can. If the send() call fails to send the entire buffer, the buffer position is advanced forwards and the rest of the data sent at the next call to this method. .PP -Definition at line 270 of file users.cpp. +Definition at line 295 of file users.cpp. .PP References connection::bytes_out, connection::cmds_out, sendq, and SetWriteError(). .PP +Referenced by kill_link(), and kill_link_silent(). +.PP .nf -271 { -272 if (sendq.length()) -273 { -274 char* tb = (char*)this->sendq.c_str(); -275 int n_sent = write(this->fd,tb,this->sendq.length()); -276 if (n_sent == -1) -277 { -278 this->SetWriteError(strerror(errno)); -279 } -280 else -281 { -282 // advance the queue -283 tb += n_sent; -284 this->sendq = tb; -285 // update the user's stats counters -286 this->bytes_out += n_sent; -287 this->cmds_out++; -288 } -289 } -290 } +296 { +297 if (sendq.length()) +298 { +299 char* tb = (char*)this->sendq.c_str(); +300 int n_sent = write(this->fd,tb,this->sendq.length()); +301 if (n_sent == -1) +302 { +303 this->SetWriteError(strerror(errno)); +304 } +305 else +306 { +307 // advance the queue +308 tb += n_sent; +309 this->sendq = tb; +310 // update the user's stats counters +311 this->bytes_out += n_sent; +312 this->cmds_out++; +313 } +314 } +315 } .fi .PP .SS "\fBstd::string\fP userrec::GetBuffer ()" @@ -389,44 +397,44 @@ This method returns the first available string at the tail end of the buffer and .PP This means it is a one way operation in a similar way to strtok(), and multiple calls return multiple lines if they are available. The results of this function if there are no lines to be read are unknown, always use \fBBufferIsReady()\fP to check if it is ok to read the buffer before calling \fBGetBuffer()\fP. .PP -Definition at line 237 of file users.cpp. +Definition at line 258 of file users.cpp. .PP References recvq. .PP .nf -238 { -239 if (recvq == '') -240 return ''; -241 char* line = (char*)recvq.c_str(); -242 std::string ret = ''; -243 while ((*line != '\n') && (strlen(line))) -244 { -245 ret = ret + *line; -246 line++; -247 } -248 if ((*line == '\n') || (*line == '\r')) -249 line++; -250 recvq = line; -251 return ret; -252 } +259 { +260 if (recvq == '') +261 return ''; +262 char* line = (char*)recvq.c_str(); +263 std::string ret = ''; +264 while ((*line != '\n') && (strlen(line))) +265 { +266 ret = ret + *line; +267 line++; +268 } +269 if ((*line == '\n') || (*line == '\r')) +270 line++; +271 recvq = line; +272 return ret; +273 } .fi .PP .SS "char * userrec::GetFullHost ()\fC [virtual]\fP" .PP Returns the full displayed host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form. .PP -Definition at line 72 of file users.cpp. +Definition at line 99 of file users.cpp. .PP References dhost, ident, and nick. .PP Referenced by add_channel(). .PP .nf -73 { -74 static char result[MAXBUF]; -75 snprintf(result,MAXBUF,'%s!%s@%s',nick,ident,dhost); -76 return result; -77 } +100 { +101 static char result[MAXBUF]; +102 snprintf(result,MAXBUF,'%s!%s@%s',nick,ident,dhost); +103 return result; +104 } .fi .PP .SS "char * userrec::GetFullRealHost ()\fC [virtual]\fP" @@ -435,200 +443,194 @@ Returns the full real host of the user This member function returns the hostname .PP If any form of hostname cloaking is in operation, e.g. through a module, then this method will ignore it and return the true hostname. .PP -Definition at line 89 of file users.cpp. +Definition at line 116 of file users.cpp. .PP References connection::host, ident, and nick. .PP .nf -90 { -91 static char fresult[MAXBUF]; -92 snprintf(fresult,MAXBUF,'%s!%s@%s',nick,ident,host); -93 return fresult; -94 } +117 { +118 static char fresult[MAXBUF]; +119 snprintf(fresult,MAXBUF,'%s!%s@%s',nick,ident,host); +120 return fresult; +121 } .fi .PP .SS "\fBInvitedList\fP * userrec::GetInviteList ()" .PP Returns the list of channels this user has been invited to but has not yet joined. .PP -Definition at line 110 of file users.cpp. +Definition at line 136 of file users.cpp. .PP References invites. .PP .nf -111 { -112 return &invites; -113 } +137 { +138 return &invites; +139 } .fi .PP .SS "\fBstd::string\fP userrec::GetWriteError ()" .PP Returns the write error which last occured on this connection or an empty string if none occured. .PP -Definition at line 300 of file users.cpp. +Definition at line 325 of file users.cpp. .PP References WriteError. .PP .nf -301 { -302 return this->WriteError; -303 } +326 { +327 return this->WriteError; +328 } .fi .PP -.SS "bool userrec::HasPermission (char * command)" +.SS "bool userrec::HasPermission (\fBstd::string\fP & command)" .PP Returns true or false for if a user can execute a privilaged oper command. .PP This is done by looking up their oper type from \fBuserrec::oper\fP, then referencing this to their oper classes and checking the commands they can execute. .PP -Definition at line 144 of file users.cpp. +Definition at line 165 of file users.cpp. .PP References ServerConfig::config_f, ServerConfig::ConfValue(), and is_uline(). .PP .nf -145 { -146 char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF]; -147 char* mycmd; -148 char* savept; -149 char* savept2; -150 -151 // users on u-lined servers can completely bypass -152 // all permissions based checks. -153 // -154 // of course, if this is sent to a remote server and this -155 // server is not ulined there, then that other server -156 // silently drops the command. -157 if (is_uline(this->server)) -158 return true; -159 -160 // are they even an oper at all? -161 if (strchr(this->modes,'o')) -162 { -163 for (int j =0; j < Config->ConfValueEnum('type',&Config->config_f); j++) -164 { -165 Config->ConfValue('type','name',j,TypeName,&Config->config_f); -166 if (!strcmp(TypeName,this->oper)) -167 { -168 Config->ConfValue('type','classes',j,Classes,&Config->config_f); -169 char* myclass = strtok_r(Classes,' ',&savept); -170 while (myclass) -171 { -172 for (int k =0; k < Config->ConfValueEnum('class',&Config->config_f); k++) -173 { -174 Config->ConfValue('class','name',k,ClassName,&Config->config_f); -175 if (!strcmp(ClassName,myclass)) -176 { -177 Config->ConfValue('class','commands',k,CommandList,&Config->config_f); -178 mycmd = strtok_r(CommandList,' ',&savept2); -179 while (mycmd) -180 { -181 if ((!strcasecmp(mycmd,command)) || (*mycmd == '*')) -182 { -183 return true; -184 } -185 mycmd = strtok_r(NULL,' ',&savept2); -186 } -187 } -188 } -189 myclass = strtok_r(NULL,' ',&savept); -190 } -191 } -192 } -193 } -194 return false; -195 } +166 { +167 char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF]; +168 char* mycmd; +169 char* savept; +170 char* savept2; +171 +172 // users on u-lined servers can completely bypass +173 // all permissions based checks. +174 // +175 // of course, if this is sent to a remote server and this +176 // server is not ulined there, then that other server +177 // silently drops the command. +178 if (is_uline(this->server)) +179 return true; +180 +181 // are they even an oper at all? +182 if (strchr(this->modes,'o')) +183 { +184 for (int j =0; j < Config->ConfValueEnum('type',&Config->config_f); j++) +185 { +186 Config->ConfValue('type','name',j,TypeName,&Config->config_f); +187 if (!strcmp(TypeName,this->oper)) +188 { +189 Config->ConfValue('type','classes',j,Classes,&Config->config_f); +190 char* myclass = strtok_r(Classes,' ',&savept); +191 while (myclass) +192 { +193 for (int k =0; k < Config->ConfValueEnum('class',&Config->config_f); k++) +194 { +195 Config->ConfValue('class','name',k,ClassName,&Config->config_f); +196 if (!strcmp(ClassName,myclass)) +197 { +198 Config->ConfValue('class','commands',k,CommandList,&Config->config_f); +199 mycmd = strtok_r(CommandList,' ',&savept2); +200 while (mycmd) +201 { +202 if ((!strcasecmp(mycmd,command.c_str())) || (*mycmd == '*')) +203 { +204 return true; +205 } +206 mycmd = strtok_r(NULL,' ',&savept2); +207 } +208 } +209 } +210 myclass = strtok_r(NULL,' ',&savept); +211 } +212 } +213 } +214 } +215 return false; +216 } .fi .PP -.SS "void userrec::InviteTo (char * channel)\fC [virtual]\fP" +.SS "void userrec::InviteTo (\fBirc::string\fP & channel)\fC [virtual]\fP" .PP Adds a channel to a users invite list (invites them to a channel). .PP -Definition at line 115 of file users.cpp. +Definition at line 141 of file users.cpp. .PP References Invited::channel, and invites. .PP .nf -116 { -117 Invited i; -118 strlcpy(i.channel,channel,CHANMAX); -119 invites.push_back(i); -120 } +142 { +143 Invited i; +144 i.channel = channel; +145 invites.push_back(i); +146 } .fi .PP -.SS "bool userrec::IsInvited (char * channel)\fC [virtual]\fP" +.SS "bool userrec::IsInvited (\fBirc::string\fP & channel)\fC [virtual]\fP" .PP Returns true if a user is invited to a channel. .PP -Definition at line 96 of file users.cpp. +Definition at line 123 of file users.cpp. .PP References invites. .PP Referenced by add_channel(). .PP .nf -97 { -98 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) -99 { -100 if (i->channel) { -101 if (!strcasecmp(i->channel,channel)) -102 { -103 return true; -104 } -105 } -106 } -107 return false; -108 } +124 { +125 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) +126 { +127 irc::string compare = i->channel; +128 if (compare == channel) +129 { +130 return true; +131 } +132 } +133 return false; +134 } .fi .PP .SS "int userrec::ReadData (void * buffer, size_t size)" .PP Calls read() to read some data for this user using their fd. .PP -Definition at line 79 of file users.cpp. +Definition at line 106 of file users.cpp. .PP .nf -80 { -81 if (this->fd > -1) -82 { -83 return read(this->fd, buffer, size); -84 } -85 else return 0; -86 } +107 { +108 if (this->fd > -1) +109 { +110 return read(this->fd, buffer, size); +111 } +112 else return 0; +113 } .fi .PP -.SS "void userrec::RemoveInvite (char * channel)\fC [virtual]\fP" +.SS "void userrec::RemoveInvite (\fBirc::string\fP & channel)\fC [virtual]\fP" .PP Removes a channel from a users invite list. .PP This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation. .PP -Definition at line 122 of file users.cpp. +Definition at line 148 of file users.cpp. .PP References DEBUG, invites, and log(). .PP Referenced by add_channel(). .PP .nf -123 { -124 log(DEBUG,'Removing invites'); -125 if (channel) -126 { -127 if (invites.size()) -128 { -129 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) -130 { -131 if (i->channel) -132 { -133 if (!strcasecmp(i->channel,channel)) -134 { -135 invites.erase(i); -136 return; -137 } -138 } -139 } -140 } -141 } -142 } +149 { +150 log(DEBUG,'Removing invites'); +151 if (invites.size()) +152 { +153 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) +154 { +155 irc::string compare = i->channel; +156 if (compare == channel) +157 { +158 invites.erase(i); +159 return; +160 } +161 } +162 } +163 } .fi .PP .SS "void userrec::SetWriteError (\fBstd::string\fP error)" @@ -637,19 +639,19 @@ Sets the write error for a connection. .PP This is done because the actual disconnect of a client may occur at an inopportune time such as half way through /LIST output. The WriteErrors of clients are checked at a more ideal time (in the mainloop) and errored clients purged. .PP -Definition at line 292 of file users.cpp. +Definition at line 317 of file users.cpp. .PP References DEBUG, log(), and WriteError. .PP Referenced by AddBuffer(), AddWriteBuf(), and FlushWriteBuf(). .PP .nf -293 { -294 log(DEBUG,'Setting error string for %s to '%s'',this->nick,error.c_str()); -295 // don't try to set the error twice, its already set take the first string. -296 if (this->WriteError == '') -297 this->WriteError = error; -298 } +318 { +319 log(DEBUG,'Setting error string for %s to '%s'',this->nick,error.c_str()); +320 // don't try to set the error twice, its already set take the first string. +321 if (this->WriteError == '') +322 this->WriteError = error; +323 } .fi .PP .SH "Member Data Documentation" @@ -660,12 +662,12 @@ The user's away message. .PP If this string is empty, the user is not marked as away. .PP -Definition at line 158 of file users.h. +Definition at line 162 of file users.h. .PP Referenced by userrec(). .SS "std::vector<\fBucrec\fP> \fBuserrec::chans\fP" .PP -Definition at line 149 of file users.h. +Definition at line 153 of file users.h. .PP Referenced by add_channel(), del_channel(), kick_channel(), Server::PseudoToUser(), and userrec(). .SS "char \fBuserrec::dhost\fP[160]" @@ -674,51 +676,51 @@ The host displayed to non-opers (used for cloaking etc). .PP This usually matches the value of \fBuserrec::host\fP. .PP -Definition at line 134 of file users.h. +Definition at line 138 of file users.h. .PP -Referenced by GetFullHost(), and userrec(). +Referenced by AddWhoWas(), GetFullHost(), and userrec(). .SS "bool \fBuserrec::dns_done\fP" .PP True when \fBDNS\fP lookups are completed. .PP -Definition at line 181 of file users.h. +Definition at line 185 of file users.h. .PP -Referenced by userrec(). +Referenced by ConnectUser(), and userrec(). .SS "int \fBuserrec::flood\fP" .PP Number of lines the user can place into the buffer (up to the global NetBufferSize bytes) before they are disconnected for excess flood. .PP -Definition at line 164 of file users.h. +Definition at line 168 of file users.h. .PP Referenced by userrec(). .SS "char \fBuserrec::fullname\fP[MAXGECOS+1]" .PP The users full name. .PP -Definition at line 138 of file users.h. +Definition at line 142 of file users.h. .PP -Referenced by userrec(). +Referenced by AddWhoWas(), and userrec(). .SS "char \fBuserrec::ident\fP[IDENTMAX+2]" .PP The users ident reply. .PP Two characters are added to the user-defined limit to compensate for the tilde etc. .PP -Definition at line 129 of file users.h. +Definition at line 133 of file users.h. .PP -Referenced by GetFullHost(), GetFullRealHost(), Server::PseudoToUser(), userrec(), and Server::UserToPseudo(). +Referenced by AddWhoWas(), FullConnectUser(), GetFullHost(), GetFullRealHost(), kill_link(), kill_link_silent(), Server::PseudoToUser(), userrec(), and Server::UserToPseudo(). .SS "\fBInvitedList\fP \fBuserrec::invites\fP\fC [private]\fP" .PP A list of channels the user has a pending invite to. .PP -Definition at line 117 of file users.h. +Definition at line 121 of file users.h. .PP Referenced by GetInviteList(), InviteTo(), IsInvited(), RemoveInvite(), and userrec(). .SS "int \fBuserrec::lines_in\fP" .PP Flood counters. .PP -Definition at line 206 of file users.h. +Definition at line 210 of file users.h. .PP Referenced by userrec(). .SS "char \fBuserrec::modes\fP[54]" @@ -727,7 +729,7 @@ The user's mode string. .PP This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit. it is limited to length 54, as there can only be a maximum of 52 user modes (26 upper, 26 lower case) a null terminating char, and an optional + character. .PP -Definition at line 147 of file users.h. +Definition at line 151 of file users.h. .PP Referenced by add_channel(), and userrec(). .SS "char \fBuserrec::nick\fP[NICKMAX]" @@ -736,16 +738,16 @@ The users nickname. .PP An invalid nickname indicates an unregistered connection prior to the NICK command. .PP -Definition at line 124 of file users.h. +Definition at line 128 of file users.h. .PP -Referenced by add_channel(), del_channel(), ConfigReader::DumpErrors(), GetFullHost(), GetFullRealHost(), kick_channel(), Server::PseudoToUser(), and userrec(). +Referenced by add_channel(), AddWhoWas(), del_channel(), ConfigReader::DumpErrors(), FullConnectUser(), GetFullHost(), GetFullRealHost(), kick_channel(), kill_link(), kill_link_silent(), Server::PseudoToUser(), and userrec(). .SS "char \fBuserrec::oper\fP[NICKMAX]" .PP The oper type they logged in as, if they are an oper. .PP This is used to check permissions in operclasses, so that we can say 'yay' or 'nay' to any commands they issue. The value of this is the value of a valid 'type name=' tag. .PP -Definition at line 177 of file users.h. +Definition at line 181 of file users.h. .PP Referenced by userrec(). .SS "char \fBuserrec::password\fP[MAXBUF]" @@ -754,31 +756,31 @@ Password specified by the user when they registered. .PP This is stored even if the block doesnt need a password, so that modules may check it. .PP -Definition at line 191 of file users.h. +Definition at line 195 of file users.h. .SS "unsigned int \fBuserrec::pingmax\fP" .PP Number of seconds between PINGs for this user (set from tag. .PP -Definition at line 185 of file users.h. +Definition at line 189 of file users.h. .SS "\fBstd::string\fP \fBuserrec::recvq\fP" .PP User's receive queue. .PP Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy. .PP -Definition at line 197 of file users.h. +Definition at line 201 of file users.h. .PP Referenced by AddBuffer(), BufferIsReady(), ClearBuffer(), GetBuffer(), and userrec(). .SS "long \fBuserrec::recvqmax\fP" .PP Maximum size this user's recvq can become. .PP -Definition at line 220 of file users.h. +Definition at line 224 of file users.h. .PP Referenced by AddBuffer(). .SS "time_t \fBuserrec::reset_due\fP" .PP -Definition at line 207 of file users.h. +Definition at line 211 of file users.h. .PP Referenced by userrec(). .SS "\fBstd::string\fP \fBuserrec::sendq\fP" @@ -787,36 +789,36 @@ User's send queue. .PP Lines waiting to be sent are stored here until their buffer is flushed. .PP -Definition at line 202 of file users.h. +Definition at line 206 of file users.h. .PP Referenced by AddWriteBuf(), FlushWriteBuf(), and userrec(). .SS "long \fBuserrec::sendqmax\fP" .PP Maximum size this user's sendq can become. .PP -Definition at line 216 of file users.h. +Definition at line 220 of file users.h. .PP Referenced by AddWriteBuf(). .SS "char* \fBuserrec::server\fP" .PP The server the user is connected to. .PP -Definition at line 153 of file users.h. +Definition at line 157 of file users.h. .PP -Referenced by kick_channel(), and userrec(). +Referenced by AddWhoWas(), kick_channel(), and userrec(). .SS "long \fBuserrec::threshold\fP" .PP -Definition at line 208 of file users.h. +Definition at line 212 of file users.h. .SS "unsigned int \fBuserrec::timeout\fP" .PP Number of seconds this user is given to send USER/NICK If they do not send their details in this time limit they will be disconnected. .PP -Definition at line 170 of file users.h. +Definition at line 174 of file users.h. .PP Referenced by userrec(). .SS "\fBstd::string\fP \fBuserrec::WriteError\fP" .PP -Definition at line 212 of file users.h. +Definition at line 216 of file users.h. .PP Referenced by GetWriteError(), and SetWriteError(). diff --git a/docs/man/man3/users.cpp.3 b/docs/man/man3/users.cpp.3 index 05915282e..af36eb556 100644 --- a/docs/man/man3/users.cpp.3 +++ b/docs/man/man3/users.cpp.3 @@ -1,4 +1,4 @@ -.TH "users.cpp" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "users.cpp" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -24,23 +24,708 @@ users.cpp \- .br \fC#include 'helperfuncs.h'\fP .br +\fC#include 'typedefs.h'\fP +.br +\fC#include 'socketengine.h'\fP +.br +\fC#include 'hashcomp.h'\fP +.br +\fC#include 'message.h'\fP +.br +\fC#include 'wildcard.h'\fP +.br +\fC#include 'xline.h'\fP +.br +.SS "Functions" + +.in +1c +.ti -1c +.RI "template \fBstring\fP \fBConvToStr\fP (const T &in)" +.br +.ti -1c +.RI "void \fBAddOper\fP (\fBuserrec\fP *user)" +.br +.ti -1c +.RI "void \fBDeleteOper\fP (\fBuserrec\fP *user)" +.br +.ti -1c +.RI "void \fBkill_link\fP (\fBuserrec\fP *user, const char *r)" +.br +.ti -1c +.RI "void \fBkill_link_silent\fP (\fBuserrec\fP *user, const char *r)" +.br +.ti -1c +.RI "void \fBAddWhoWas\fP (\fBuserrec\fP *u)" +.br +.ti -1c +.RI "void \fBAddClient\fP (int socket, char *host, int port, bool iscached, char *ip)" +.br +.ti -1c +.RI "void \fBFullConnectUser\fP (\fBuserrec\fP *user)" +.br +.ti -1c +.RI "void \fBConnectUser\fP (\fBuserrec\fP *user)" +.br +.ti -1c +.RI "\fBuserrec\fP * \fBReHashNick\fP (char *Old, char *New)" +.br +.ti -1c +.RI "void \fBforce_nickchange\fP (\fBuserrec\fP *user, const char *newnick)" +.br +.in -1c .SS "Variables" .in +1c .ti -1c -.RI "\fBServerConfig\fP * \fBConfig\fP" +.RI "\fBInspIRCd\fP * \fBServerInstance\fP" +.br +.ti -1c +.RI "int \fBWHOWAS_STALE\fP" +.br +.ti -1c +.RI "int \fBWHOWAS_MAX\fP" +.br +.ti -1c +.RI "std::vector< \fBModule\fP * > \fBmodules\fP" +.br +.ti -1c +.RI "std::vector< \fBircd_module\fP * > \fBfactory\fP" +.br +.ti -1c +.RI "std::vector< \fBInspSocket\fP * > \fBmodule_sockets\fP" +.br +.ti -1c +.RI "int \fBMODCOUNT\fP" +.br +.ti -1c +.RI "\fBInspSocket\fP * \fBsocket_ref\fP [65535]" .br .ti -1c .RI "time_t \fBTIME\fP" .br +.ti -1c +.RI "\fBuserrec\fP * \fBfd_ref_table\fP [65536]" +.br +.ti -1c +.RI "\fBServerConfig\fP * \fBConfig\fP" +.br +.ti -1c +.RI "\fBuser_hash\fP \fBclientlist\fP" +.br +.ti -1c +.RI "\fBwhowas_hash\fP \fBwhowas\fP" +.br +.ti -1c +.RI "std::vector< \fBuserrec\fP * > \fBlocal_users\fP" +.br +.ti -1c +.RI "std::vector< \fBuserrec\fP * > \fBall_opers\fP" +.br .in -1c +.SH "Function Documentation" +.PP +.SS "void AddClient (int socket, char * host, int port, bool iscached, char * ip)" +.PP +Definition at line 524 of file users.cpp. +.PP +References SocketEngine::AddFd(), CC_ALLOW, ucrec::channel, ServerConfig::Classes, clientlist, ConvToStr(), DEBUG, ServerConfig::dns_timeout, FindServerNamePtr(), kill_link(), local_users, log(), matches_exception(), matches_zline(), InspIRCd::SE, ServerConfig::ServerName, ServerConfig::SoftLimit, TIME, ucrec::uc_modes, and X_ESTAB_CLIENT. +.PP +.nf +525 { +526 string tempnick; +527 char tn2[MAXBUF]; +528 user_hash::iterator iter; +529 +530 tempnick = ConvToStr(socket) + '-unknown'; +531 sprintf(tn2,'%lu-unknown',(unsigned long)socket); +532 +533 iter = clientlist.find(tempnick); +534 +535 // fix by brain. +536 // as these nicknames are 'RFC impossible', we can be sure nobody is going to be +537 // using one as a registered connection. As theyre per fd, we can also safely assume +538 // that we wont have collisions. Therefore, if the nick exists in the list, its only +539 // used by a dead socket, erase the iterator so that the new client may reclaim it. +540 // this was probably the cause of 'server ignores me when i hammer it with reconnects' +541 // issue in earlier alphas/betas +542 if (iter != clientlist.end()) +543 { +544 userrec* goner = iter->second; +545 delete goner; +546 clientlist.erase(iter); +547 } +548 +549 /* +550 * It is OK to access the value here this way since we know +551 * it exists, we just created it above. +552 * +553 * At NO other time should you access a value in a map or a +554 * hash_map this way. +555 */ +556 clientlist[tempnick] = new userrec(); +557 +558 log(DEBUG,'AddClient: %lu %s %d %s',(unsigned long)socket,host,port,ip); +559 +560 clientlist[tempnick]->fd = socket; +561 strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX); +562 strlcpy(clientlist[tempnick]->host, host,160); +563 strlcpy(clientlist[tempnick]->dhost, host,160); +564 clientlist[tempnick]->server = (char*)FindServerNamePtr(Config->ServerName); +565 strlcpy(clientlist[tempnick]->ident, 'unknown',IDENTMAX); +566 clientlist[tempnick]->registered = 0; +567 clientlist[tempnick]->signon = TIME + Config->dns_timeout; +568 clientlist[tempnick]->lastping = 1; +569 clientlist[tempnick]->port = port; +570 strlcpy(clientlist[tempnick]->ip,ip,16); +571 +572 // set the registration timeout for this user +573 unsigned long class_regtimeout = 90; +574 int class_flood = 0; +575 long class_threshold = 5; +576 long class_sqmax = 262144; // 256kb +577 long class_rqmax = 4096; // 4k +578 +579 for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++) +580 { +581 if (match(clientlist[tempnick]->host,i->host) && (i->type == CC_ALLOW)) +582 { +583 class_regtimeout = (unsigned long)i->registration_timeout; +584 class_flood = i->flood; +585 clientlist[tempnick]->pingmax = i->pingtime; +586 class_threshold = i->threshold; +587 class_sqmax = i->sendqmax; +588 class_rqmax = i->recvqmax; +589 break; +590 } +591 } +592 +593 clientlist[tempnick]->nping = TIME+clientlist[tempnick]->pingmax + Config->dns_timeout; +594 clientlist[tempnick]->timeout = TIME+class_regtimeout; +595 clientlist[tempnick]->flood = class_flood; +596 clientlist[tempnick]->threshold = class_threshold; +597 clientlist[tempnick]->sendqmax = class_sqmax; +598 clientlist[tempnick]->recvqmax = class_rqmax; +599 +600 ucrec a; +601 a.channel = NULL; +602 a.uc_modes = 0; +603 for (int i = 0; i < MAXCHANS; i++) +604 clientlist[tempnick]->chans.push_back(a); +605 +606 if (clientlist.size() > Config->SoftLimit) +607 { +608 kill_link(clientlist[tempnick],'No more connections allowed'); +609 return; +610 } +611 +612 if (clientlist.size() >= MAXCLIENTS) +613 { +614 kill_link(clientlist[tempnick],'No more connections allowed'); +615 return; +616 } +617 +618 // this is done as a safety check to keep the file descriptors within range of fd_ref_table. +619 // its a pretty big but for the moment valid assumption: +620 // file descriptors are handed out starting at 0, and are recycled as theyre freed. +621 // therefore if there is ever an fd over 65535, 65536 clients must be connected to the +622 // irc server at once (or the irc server otherwise initiating this many connections, files etc) +623 // which for the time being is a physical impossibility (even the largest networks dont have more +624 // than about 10,000 users on ONE server!) +625 if ((unsigned)socket > 65534) +626 { +627 kill_link(clientlist[tempnick],'Server is full'); +628 return; +629 } +630 char* e = matches_exception(ip); +631 if (!e) +632 { +633 char* r = matches_zline(ip); +634 if (r) +635 { +636 char reason[MAXBUF]; +637 snprintf(reason,MAXBUF,'Z-Lined: %s',r); +638 kill_link(clientlist[tempnick],reason); +639 return; +640 } +641 } +642 fd_ref_table[socket] = clientlist[tempnick]; +643 local_users.push_back(clientlist[tempnick]); +644 ServerInstance->SE->AddFd(socket,true,X_ESTAB_CLIENT); +645 } +.fi +.PP +.SS "void AddOper (\fBuserrec\fP * user)" +.PP +Definition at line 330 of file users.cpp. +.PP +References all_opers, DEBUG, and log(). +.PP +.nf +331 { +332 log(DEBUG,'Oper added to optimization list'); +333 all_opers.push_back(user); +334 } +.fi +.PP +.SS "void AddWhoWas (\fBuserrec\fP * u)" +.PP +Definition at line 471 of file users.cpp. +.PP +References DEBUG, WhoWasUser::dhost, userrec::dhost, WhoWasUser::fullname, userrec::fullname, WhoWasUser::host, connection::host, WhoWasUser::ident, userrec::ident, log(), userrec::nick, WhoWasUser::nick, WhoWasUser::server, userrec::server, WhoWasUser::signon, connection::signon, TIME, whowas, WHOWAS_MAX, and WHOWAS_STALE. +.PP +Referenced by kill_link(). +.PP +.nf +472 { +473 whowas_hash::iterator iter = whowas.find(u->nick); +474 WhoWasUser *a = new WhoWasUser(); +475 strlcpy(a->nick,u->nick,NICKMAX); +476 strlcpy(a->ident,u->ident,IDENTMAX); +477 strlcpy(a->dhost,u->dhost,160); +478 strlcpy(a->host,u->host,160); +479 strlcpy(a->fullname,u->fullname,MAXGECOS); +480 strlcpy(a->server,u->server,256); +481 a->signon = u->signon; +482 +483 /* MAX_WHOWAS: max number of /WHOWAS items +484 * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and +485 * can be replaced by a newer one +486 */ +487 +488 if (iter == whowas.end()) +489 { +490 if (whowas.size() >= (unsigned)WHOWAS_MAX) +491 { +492 for (whowas_hash::iterator i = whowas.begin(); i != whowas.end(); i++) +493 { +494 // 3600 seconds in an hour ;) +495 if ((i->second->signon)<(TIME-(WHOWAS_STALE*3600))) +496 { +497 // delete the old one +498 if (i->second) delete i->second; +499 // replace with new one +500 i->second = a; +501 log(DEBUG,'added WHOWAS entry, purged an old record'); +502 return; +503 } +504 } +505 // no space left and user doesnt exist. Don't leave ram in use! +506 log(DEBUG,'Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram'); +507 delete a; +508 } +509 else +510 { +511 log(DEBUG,'added fresh WHOWAS entry'); +512 whowas[a->nick] = a; +513 } +514 } +515 else +516 { +517 log(DEBUG,'updated WHOWAS entry'); +518 if (iter->second) delete iter->second; +519 iter->second = a; +520 } +521 } +.fi +.PP +.SS "void ConnectUser (\fBuserrec\fP * user)" +.PP +Definition at line 731 of file users.cpp. +.PP +References userrec::dns_done, FullConnectUser(), and connection::registered. +.PP +.nf +732 { +733 // dns is already done, things are fast. no need to wait for dns to complete just pass them straight on +734 if ((user->dns_done) && (user->registered >= 3) && (AllModulesReportReady(user))) +735 { +736 FullConnectUser(user); +737 } +738 } +.fi +.PP +.SS "template \fBstring\fP ConvToStr (const T & in)\fC [inline]\fP" +.PP +Definition at line 56 of file users.cpp. +.PP +Referenced by AddClient(). +.PP +.nf +57 { +58 stringstream tmp; +59 if (!(tmp << in)) return string(); +60 return tmp.str(); +61 } +.fi +.PP +.SS "void DeleteOper (\fBuserrec\fP * user)" +.PP +Definition at line 336 of file users.cpp. +.PP +References all_opers, DEBUG, and log(). +.PP +.nf +337 { +338 for (std::vector::iterator a = all_opers.begin(); a < all_opers.end(); a++) +339 { +340 if (*a == user) +341 { +342 log(DEBUG,'Oper removed from optimization list'); +343 all_opers.erase(a); +344 return; +345 } +346 } +347 } +.fi +.PP +.SS "void force_nickchange (\fBuserrec\fP * user, const char * newnick)" +.PP +Definition at line 769 of file users.cpp. +.PP +References FOREACH_RESULT, kill_link(), matches_qline(), InspIRCd::Parser, connection::registered, InspIRCd::stats, and serverstats::statsCollisions. +.PP +Referenced by Server::ChangeUserNick(). +.PP +.nf +770 { +771 char nick[MAXBUF]; +772 int MOD_RESULT = 0; +773 +774 strcpy(nick,''); +775 +776 FOREACH_RESULT(OnUserPreNick(user,newnick)); +777 if (MOD_RESULT) { +778 ServerInstance->stats->statsCollisions++; +779 kill_link(user,'Nickname collision'); +780 return; +781 } +782 if (matches_qline(newnick)) +783 { +784 ServerInstance->stats->statsCollisions++; +785 kill_link(user,'Nickname collision'); +786 return; +787 } +788 +789 if (user) +790 { +791 if (newnick) +792 { +793 strncpy(nick,newnick,MAXBUF); +794 } +795 if (user->registered == 7) +796 { +797 char* pars[1]; +798 pars[0] = nick; +799 std::string cmd = 'NICK'; +800 ServerInstance->Parser->CallHandler(cmd,pars,1,user); +801 } +802 } +803 } +.fi +.PP +.SS "void FullConnectUser (\fBuserrec\fP * user)" +.PP +Definition at line 647 of file users.cpp. +.PP +References DEBUG, connection::fd, FOREACH_MOD, connection::haspassed, connection::host, userrec::ident, connection::idle_lastmsg, connection::ip, kill_link(), kill_link_silent(), log(), matches_exception(), matches_gline(), matches_kline(), ServerConfig::Network, userrec::nick, connection::port, connection::registered, ServerConfig::ServerName, InspIRCd::stats, serverstats::statsConnects, TIME, WriteOpers(), and WriteServ(). +.PP +Referenced by ConnectUser(). +.PP +.nf +648 { +649 ServerInstance->stats->statsConnects++; +650 user->idle_lastmsg = TIME; +651 log(DEBUG,'ConnectUser: %s',user->nick); +652 +653 if ((strcmp(Passwd(user),'')) && (!user->haspassed)) +654 { +655 kill_link(user,'Invalid password'); +656 return; +657 } +658 if (IsDenied(user)) +659 { +660 kill_link(user,'Unauthorised connection'); +661 return; +662 } +663 +664 char match_against[MAXBUF]; +665 snprintf(match_against,MAXBUF,'%s@%s',user->ident,user->host); +666 char* e = matches_exception(match_against); +667 if (!e) +668 { +669 char* r = matches_gline(match_against); +670 if (r) +671 { +672 char reason[MAXBUF]; +673 snprintf(reason,MAXBUF,'G-Lined: %s',r); +674 kill_link_silent(user,reason); +675 return; +676 } +677 r = matches_kline(user->host); +678 if (r) +679 { +680 char reason[MAXBUF]; +681 snprintf(reason,MAXBUF,'K-Lined: %s',r); +682 kill_link_silent(user,reason); +683 return; +684 } +685 } +686 +687 +688 WriteServ(user->fd,'NOTICE Auth :Welcome to \002%s\002!',Config->Network); +689 WriteServ(user->fd,'001 %s :Welcome to the %s IRC Network %s!%s@%s',user->nick,Config->Network,user->nick,user->ident,user->host); +690 WriteServ(user->fd,'002 %s :Your host is %s, running version %s',user->nick,Config->ServerName,VERSION); +691 WriteServ(user->fd,'003 %s :This server was created %s %s',user->nick,__TIME__,__DATE__); +692 WriteServ(user->fd,'004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN',user->nick,Config->ServerName,VERSION); +693 // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it... +694 std::stringstream v; +695 v << 'WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=' << MAXCHANS; +696 v << ' MAXBANS=60 NICKLEN=' << NICKMAX; +697 v << ' TOPICLEN=' << MAXTOPIC << ' KICKLEN=' << MAXKICK << ' MAXTARGETS=20 AWAYLEN=' << MAXAWAY << ' CHANMODES=ohvb,k,l,psmnti NETWORK='; +698 v << Config->Network; +699 std::string data005 = v.str(); +700 FOREACH_MOD On005Numeric(data005); +701 // anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line... +702 // so i'd better split it :) +703 std::stringstream out(data005); +704 std::string token = ''; +705 std::string line5 = ''; +706 int token_counter = 0; +707 while (!out.eof()) +708 { +709 out >> token; +710 line5 = line5 + token + ' '; +711 token_counter++; +712 if ((token_counter >= 13) || (out.eof() == true)) +713 { +714 WriteServ(user->fd,'005 %s %s:are supported by this server',user->nick,line5.c_str()); +715 line5 = ''; +716 token_counter = 0; +717 } +718 } +719 ShowMOTD(user); +720 +721 // fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out +722 // onto the network and produce 'fake direction' +723 FOREACH_MOD OnUserConnect(user); +724 FOREACH_MOD OnGlobalConnect(user); +725 user->registered = 7; +726 WriteOpers('*** Client connecting on port %lu: %s!%s@%s [%s]',(unsigned long)user->port,user->nick,user->ident,user->host,user->ip); +727 } +.fi +.PP +.SS "void kill_link (\fBuserrec\fP * user, const char * r)" +.PP +Definition at line 349 of file users.cpp. +.PP +References AddWhoWas(), clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), WriteCommonExcept(), and WriteOpers(). +.PP +Referenced by AddClient(), force_nickchange(), FullConnectUser(), Server::PseudoToUser(), and Server::QuitUser(). +.PP +.nf +350 { +351 user_hash::iterator iter = clientlist.find(user->nick); +352 +353 char reason[MAXBUF]; +354 +355 strncpy(reason,r,MAXBUF); +356 +357 if (strlen(reason)>MAXQUIT) +358 { +359 reason[MAXQUIT-1] = '\0'; +360 } +361 +362 log(DEBUG,'kill_link: %s '%s'',user->nick,reason); +363 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason); +364 log(DEBUG,'closing fd %lu',(unsigned long)user->fd); +365 +366 if (user->registered == 7) { +367 FOREACH_MOD OnUserQuit(user,reason); +368 WriteCommonExcept(user,'QUIT :%s',reason); +369 } +370 +371 user->FlushWriteBuf(); +372 +373 FOREACH_MOD OnUserDisconnect(user); +374 +375 if (user->fd > -1) +376 { +377 if (Config->GetIOHook(user->port)) +378 { +379 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd); +380 } +381 ServerInstance->SE->DelFd(user->fd); +382 user->CloseSocket(); +383 } +384 +385 // this must come before the WriteOpers so that it doesnt try to fill their buffer with anything +386 // if they were an oper with +s. +387 if (user->registered == 7) { +388 purge_empty_chans(user); +389 // fix by brain: only show local quits because we only show local connects (it just makes SENSE) +390 if (user->fd > -1) +391 WriteOpers('*** Client exiting: %s!%s@%s [%s]',user->nick,user->ident,user->host,reason); +392 AddWhoWas(user); +393 } +394 +395 if (iter != clientlist.end()) +396 { +397 log(DEBUG,'deleting user hash value %lu',(unsigned long)user); +398 if (user->fd > -1) +399 { +400 fd_ref_table[user->fd] = NULL; +401 if (find(local_users.begin(),local_users.end(),user) != local_users.end()) +402 { +403 local_users.erase(find(local_users.begin(),local_users.end(),user)); +404 log(DEBUG,'Delete local user'); +405 } +406 } +407 clientlist.erase(iter); +408 } +409 delete user; +410 } +.fi +.PP +.SS "void kill_link_silent (\fBuserrec\fP * user, const char * r)" +.PP +Definition at line 412 of file users.cpp. +.PP +References clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), and WriteCommonExcept(). +.PP +Referenced by FullConnectUser(). +.PP +.nf +413 { +414 user_hash::iterator iter = clientlist.find(user->nick); +415 +416 char reason[MAXBUF]; +417 +418 strncpy(reason,r,MAXBUF); +419 +420 if (strlen(reason)>MAXQUIT) +421 { +422 reason[MAXQUIT-1] = '\0'; +423 } +424 +425 log(DEBUG,'kill_link: %s '%s'',user->nick,reason); +426 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason); +427 log(DEBUG,'closing fd %lu',(unsigned long)user->fd); +428 +429 user->FlushWriteBuf(); +430 +431 if (user->registered == 7) { +432 FOREACH_MOD OnUserQuit(user,reason); +433 WriteCommonExcept(user,'QUIT :%s',reason); +434 } +435 +436 FOREACH_MOD OnUserDisconnect(user); +437 +438 if (user->fd > -1) +439 { +440 if (Config->GetIOHook(user->port)) +441 { +442 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd); +443 } +444 ServerInstance->SE->DelFd(user->fd); +445 user->CloseSocket(); +446 } +447 +448 if (user->registered == 7) { +449 purge_empty_chans(user); +450 } +451 +452 if (iter != clientlist.end()) +453 { +454 log(DEBUG,'deleting user hash value %lu',(unsigned long)user); +455 if (user->fd > -1) +456 { +457 fd_ref_table[user->fd] = NULL; +458 if (find(local_users.begin(),local_users.end(),user) != local_users.end()) +459 { +460 log(DEBUG,'Delete local user'); +461 local_users.erase(find(local_users.begin(),local_users.end(),user)); +462 } +463 } +464 clientlist.erase(iter); +465 } +466 delete user; +467 } +.fi +.PP +.SS "\fBuserrec\fP* ReHashNick (char * Old, char * New)" +.PP +Definition at line 743 of file users.cpp. +.PP +References clientlist, DEBUG, and log(). +.PP +.nf +744 { +745 //user_hash::iterator newnick; +746 user_hash::iterator oldnick = clientlist.find(Old); +747 +748 log(DEBUG,'ReHashNick: %s %s',Old,New); +749 +750 if (!strcasecmp(Old,New)) +751 { +752 log(DEBUG,'old nick is new nick, skipping'); +753 return oldnick->second; +754 } +755 +756 if (oldnick == clientlist.end()) return NULL; /* doesnt exist */ +757 +758 log(DEBUG,'ReHashNick: Found hashed nick %s',Old); +759 +760 userrec* olduser = oldnick->second; +761 clientlist[New] = olduser; +762 clientlist.erase(oldnick); +763 +764 log(DEBUG,'ReHashNick: Nick rehashed as %s',New); +765 +766 return clientlist[New]; +767 } +.fi +.PP .SH "Variable Documentation" .PP +.SS "std::vector<\fBuserrec\fP*> \fBall_opers\fP" +.PP +Definition at line 54 of file users.cpp. +.PP +Referenced by AddOper(), and DeleteOper(). +.SS "\fBuser_hash\fP \fBclientlist\fP" +.PP .SS "\fBServerConfig\fP* \fBConfig\fP" .PP +.SS "std::vector<\fBircd_module\fP*> factory" +.PP +.SS "\fBuserrec\fP* \fBfd_ref_table\fP[65536]" +.PP +.SS "std::vector<\fBuserrec\fP*> \fBlocal_users\fP" +.PP +Definition at line 52 of file users.cpp. +.PP +Referenced by AddClient(), kill_link(), and kill_link_silent(). +.SS "int \fBMODCOUNT\fP" +.PP +.SS "std::vector<\fBInspSocket\fP*> \fBmodule_sockets\fP" +.PP +.SS "std::vector<\fBModule\fP*> modules" +.PP +.SS "\fBInspIRCd\fP* \fBServerInstance\fP" +.PP +.SS "\fBInspSocket\fP* \fBsocket_ref\fP[65535]" +.PP +Definition at line 43 of file socket.cpp. .SS "time_t \fBTIME\fP" .PP +.SS "\fBwhowas_hash\fP \fBwhowas\fP" +.PP +Referenced by AddWhoWas(). +.SS "int \fBWHOWAS_MAX\fP" +.PP +.SS "int \fBWHOWAS_STALE\fP" +.PP .SH "Author" .PP Generated automatically by Doxygen for InspIRCd from the source code. diff --git a/docs/man/man3/users.h.3 b/docs/man/man3/users.h.3 index 895149d91..a1be9c463 100644 --- a/docs/man/man3/users.h.3 +++ b/docs/man/man3/users.h.3 @@ -1,4 +1,4 @@ -.TH "users.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "users.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -16,6 +16,8 @@ users.h \- .br \fC#include \fP .br +\fC#include 'hashcomp.h'\fP +.br .SS "Classes" @@ -71,40 +73,642 @@ users.h \- .br .RI "\fIHolds a complete list of all allow and deny tags from the configuration file (connection classes). \fP" .in -1c +.SS "Functions" + +.in +1c +.ti -1c +.RI "template \fBstring\fP \fBConvToStr\fP (const T &in)" +.br +.ti -1c +.RI "void \fBAddOper\fP (\fBuserrec\fP *user)" +.br +.ti -1c +.RI "void \fBDeleteOper\fP (\fBuserrec\fP *user)" +.br +.ti -1c +.RI "void \fBkill_link\fP (\fBuserrec\fP *user, const char *r)" +.br +.ti -1c +.RI "void \fBkill_link_silent\fP (\fBuserrec\fP *user, const char *r)" +.br +.ti -1c +.RI "void \fBAddWhoWas\fP (\fBuserrec\fP *u)" +.br +.ti -1c +.RI "void \fBAddClient\fP (int socket, char *host, int port, bool iscached, char *ip)" +.br +.ti -1c +.RI "void \fBFullConnectUser\fP (\fBuserrec\fP *user)" +.br +.ti -1c +.RI "void \fBConnectUser\fP (\fBuserrec\fP *user)" +.br +.ti -1c +.RI "\fBuserrec\fP * \fBReHashNick\fP (char *Old, char *New)" +.br +.ti -1c +.RI "void \fBforce_nickchange\fP (\fBuserrec\fP *user, const char *newnick)" +.br +.in -1c .SH "Define Documentation" .PP .SS "#define CC_ALLOW 0" .PP -Definition at line 34 of file users.h. +Definition at line 36 of file users.h. +.PP +Referenced by AddClient(). .SS "#define CC_DENY 1" .PP -Definition at line 35 of file users.h. +Definition at line 37 of file users.h. .SS "#define STATUS_HOP 2" .PP -Definition at line 30 of file users.h. +Definition at line 32 of file users.h. .PP Referenced by kick_channel(). .SS "#define STATUS_NORMAL 0" .PP -Definition at line 32 of file users.h. +Definition at line 34 of file users.h. .SS "#define STATUS_OP 4" .PP -Definition at line 29 of file users.h. +Definition at line 31 of file users.h. .SS "#define STATUS_VOICE 1" .PP -Definition at line 31 of file users.h. +Definition at line 33 of file users.h. .SH "Typedef Documentation" .PP .SS "typedef std::vector<\fBConnectClass\fP> \fBClassVector\fP" .PP Holds a complete list of all allow and deny tags from the configuration file (connection classes). .PP -Definition at line 103 of file users.h. +Definition at line 107 of file users.h. .SS "typedef std::vector<\fBInvited\fP> \fBInvitedList\fP" .PP Holds a complete list of all channels to which a user has been invited and has not yet joined. .PP -Definition at line 97 of file users.h. +Definition at line 101 of file users.h. +.SH "Function Documentation" +.PP +.SS "void AddClient (int socket, char * host, int port, bool iscached, char * ip)" +.PP +Definition at line 524 of file users.cpp. +.PP +References SocketEngine::AddFd(), CC_ALLOW, ucrec::channel, ServerConfig::Classes, clientlist, ConvToStr(), DEBUG, ServerConfig::dns_timeout, FindServerNamePtr(), kill_link(), local_users, log(), matches_exception(), matches_zline(), InspIRCd::SE, ServerConfig::ServerName, ServerConfig::SoftLimit, TIME, ucrec::uc_modes, and X_ESTAB_CLIENT. +.PP +.nf +525 { +526 string tempnick; +527 char tn2[MAXBUF]; +528 user_hash::iterator iter; +529 +530 tempnick = ConvToStr(socket) + '-unknown'; +531 sprintf(tn2,'%lu-unknown',(unsigned long)socket); +532 +533 iter = clientlist.find(tempnick); +534 +535 // fix by brain. +536 // as these nicknames are 'RFC impossible', we can be sure nobody is going to be +537 // using one as a registered connection. As theyre per fd, we can also safely assume +538 // that we wont have collisions. Therefore, if the nick exists in the list, its only +539 // used by a dead socket, erase the iterator so that the new client may reclaim it. +540 // this was probably the cause of 'server ignores me when i hammer it with reconnects' +541 // issue in earlier alphas/betas +542 if (iter != clientlist.end()) +543 { +544 userrec* goner = iter->second; +545 delete goner; +546 clientlist.erase(iter); +547 } +548 +549 /* +550 * It is OK to access the value here this way since we know +551 * it exists, we just created it above. +552 * +553 * At NO other time should you access a value in a map or a +554 * hash_map this way. +555 */ +556 clientlist[tempnick] = new userrec(); +557 +558 log(DEBUG,'AddClient: %lu %s %d %s',(unsigned long)socket,host,port,ip); +559 +560 clientlist[tempnick]->fd = socket; +561 strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX); +562 strlcpy(clientlist[tempnick]->host, host,160); +563 strlcpy(clientlist[tempnick]->dhost, host,160); +564 clientlist[tempnick]->server = (char*)FindServerNamePtr(Config->ServerName); +565 strlcpy(clientlist[tempnick]->ident, 'unknown',IDENTMAX); +566 clientlist[tempnick]->registered = 0; +567 clientlist[tempnick]->signon = TIME + Config->dns_timeout; +568 clientlist[tempnick]->lastping = 1; +569 clientlist[tempnick]->port = port; +570 strlcpy(clientlist[tempnick]->ip,ip,16); +571 +572 // set the registration timeout for this user +573 unsigned long class_regtimeout = 90; +574 int class_flood = 0; +575 long class_threshold = 5; +576 long class_sqmax = 262144; // 256kb +577 long class_rqmax = 4096; // 4k +578 +579 for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++) +580 { +581 if (match(clientlist[tempnick]->host,i->host) && (i->type == CC_ALLOW)) +582 { +583 class_regtimeout = (unsigned long)i->registration_timeout; +584 class_flood = i->flood; +585 clientlist[tempnick]->pingmax = i->pingtime; +586 class_threshold = i->threshold; +587 class_sqmax = i->sendqmax; +588 class_rqmax = i->recvqmax; +589 break; +590 } +591 } +592 +593 clientlist[tempnick]->nping = TIME+clientlist[tempnick]->pingmax + Config->dns_timeout; +594 clientlist[tempnick]->timeout = TIME+class_regtimeout; +595 clientlist[tempnick]->flood = class_flood; +596 clientlist[tempnick]->threshold = class_threshold; +597 clientlist[tempnick]->sendqmax = class_sqmax; +598 clientlist[tempnick]->recvqmax = class_rqmax; +599 +600 ucrec a; +601 a.channel = NULL; +602 a.uc_modes = 0; +603 for (int i = 0; i < MAXCHANS; i++) +604 clientlist[tempnick]->chans.push_back(a); +605 +606 if (clientlist.size() > Config->SoftLimit) +607 { +608 kill_link(clientlist[tempnick],'No more connections allowed'); +609 return; +610 } +611 +612 if (clientlist.size() >= MAXCLIENTS) +613 { +614 kill_link(clientlist[tempnick],'No more connections allowed'); +615 return; +616 } +617 +618 // this is done as a safety check to keep the file descriptors within range of fd_ref_table. +619 // its a pretty big but for the moment valid assumption: +620 // file descriptors are handed out starting at 0, and are recycled as theyre freed. +621 // therefore if there is ever an fd over 65535, 65536 clients must be connected to the +622 // irc server at once (or the irc server otherwise initiating this many connections, files etc) +623 // which for the time being is a physical impossibility (even the largest networks dont have more +624 // than about 10,000 users on ONE server!) +625 if ((unsigned)socket > 65534) +626 { +627 kill_link(clientlist[tempnick],'Server is full'); +628 return; +629 } +630 char* e = matches_exception(ip); +631 if (!e) +632 { +633 char* r = matches_zline(ip); +634 if (r) +635 { +636 char reason[MAXBUF]; +637 snprintf(reason,MAXBUF,'Z-Lined: %s',r); +638 kill_link(clientlist[tempnick],reason); +639 return; +640 } +641 } +642 fd_ref_table[socket] = clientlist[tempnick]; +643 local_users.push_back(clientlist[tempnick]); +644 ServerInstance->SE->AddFd(socket,true,X_ESTAB_CLIENT); +645 } +.fi +.PP +.SS "void AddOper (\fBuserrec\fP * user)" +.PP +Definition at line 330 of file users.cpp. +.PP +References all_opers, DEBUG, and log(). +.PP +.nf +331 { +332 log(DEBUG,'Oper added to optimization list'); +333 all_opers.push_back(user); +334 } +.fi +.PP +.SS "void AddWhoWas (\fBuserrec\fP * u)" +.PP +Definition at line 471 of file users.cpp. +.PP +References DEBUG, userrec::dhost, WhoWasUser::dhost, userrec::fullname, WhoWasUser::fullname, connection::host, WhoWasUser::host, userrec::ident, WhoWasUser::ident, log(), WhoWasUser::nick, userrec::nick, userrec::server, WhoWasUser::server, connection::signon, WhoWasUser::signon, TIME, whowas, WHOWAS_MAX, and WHOWAS_STALE. +.PP +Referenced by kill_link(). +.PP +.nf +472 { +473 whowas_hash::iterator iter = whowas.find(u->nick); +474 WhoWasUser *a = new WhoWasUser(); +475 strlcpy(a->nick,u->nick,NICKMAX); +476 strlcpy(a->ident,u->ident,IDENTMAX); +477 strlcpy(a->dhost,u->dhost,160); +478 strlcpy(a->host,u->host,160); +479 strlcpy(a->fullname,u->fullname,MAXGECOS); +480 strlcpy(a->server,u->server,256); +481 a->signon = u->signon; +482 +483 /* MAX_WHOWAS: max number of /WHOWAS items +484 * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and +485 * can be replaced by a newer one +486 */ +487 +488 if (iter == whowas.end()) +489 { +490 if (whowas.size() >= (unsigned)WHOWAS_MAX) +491 { +492 for (whowas_hash::iterator i = whowas.begin(); i != whowas.end(); i++) +493 { +494 // 3600 seconds in an hour ;) +495 if ((i->second->signon)<(TIME-(WHOWAS_STALE*3600))) +496 { +497 // delete the old one +498 if (i->second) delete i->second; +499 // replace with new one +500 i->second = a; +501 log(DEBUG,'added WHOWAS entry, purged an old record'); +502 return; +503 } +504 } +505 // no space left and user doesnt exist. Don't leave ram in use! +506 log(DEBUG,'Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram'); +507 delete a; +508 } +509 else +510 { +511 log(DEBUG,'added fresh WHOWAS entry'); +512 whowas[a->nick] = a; +513 } +514 } +515 else +516 { +517 log(DEBUG,'updated WHOWAS entry'); +518 if (iter->second) delete iter->second; +519 iter->second = a; +520 } +521 } +.fi +.PP +.SS "void ConnectUser (\fBuserrec\fP * user)" +.PP +Definition at line 731 of file users.cpp. +.PP +References userrec::dns_done, FullConnectUser(), and connection::registered. +.PP +.nf +732 { +733 // dns is already done, things are fast. no need to wait for dns to complete just pass them straight on +734 if ((user->dns_done) && (user->registered >= 3) && (AllModulesReportReady(user))) +735 { +736 FullConnectUser(user); +737 } +738 } +.fi +.PP +.SS "template \fBstring\fP ConvToStr (const T & in)\fC [inline]\fP" +.PP +Definition at line 56 of file users.cpp. +.PP +Referenced by AddClient(). +.PP +.nf +57 { +58 stringstream tmp; +59 if (!(tmp << in)) return string(); +60 return tmp.str(); +61 } +.fi +.PP +.SS "void DeleteOper (\fBuserrec\fP * user)" +.PP +Definition at line 336 of file users.cpp. +.PP +References all_opers, DEBUG, and log(). +.PP +.nf +337 { +338 for (std::vector::iterator a = all_opers.begin(); a < all_opers.end(); a++) +339 { +340 if (*a == user) +341 { +342 log(DEBUG,'Oper removed from optimization list'); +343 all_opers.erase(a); +344 return; +345 } +346 } +347 } +.fi +.PP +.SS "void force_nickchange (\fBuserrec\fP * user, const char * newnick)" +.PP +Definition at line 769 of file users.cpp. +.PP +References FOREACH_RESULT, kill_link(), matches_qline(), InspIRCd::Parser, connection::registered, InspIRCd::stats, and serverstats::statsCollisions. +.PP +Referenced by Server::ChangeUserNick(). +.PP +.nf +770 { +771 char nick[MAXBUF]; +772 int MOD_RESULT = 0; +773 +774 strcpy(nick,''); +775 +776 FOREACH_RESULT(OnUserPreNick(user,newnick)); +777 if (MOD_RESULT) { +778 ServerInstance->stats->statsCollisions++; +779 kill_link(user,'Nickname collision'); +780 return; +781 } +782 if (matches_qline(newnick)) +783 { +784 ServerInstance->stats->statsCollisions++; +785 kill_link(user,'Nickname collision'); +786 return; +787 } +788 +789 if (user) +790 { +791 if (newnick) +792 { +793 strncpy(nick,newnick,MAXBUF); +794 } +795 if (user->registered == 7) +796 { +797 char* pars[1]; +798 pars[0] = nick; +799 std::string cmd = 'NICK'; +800 ServerInstance->Parser->CallHandler(cmd,pars,1,user); +801 } +802 } +803 } +.fi +.PP +.SS "void FullConnectUser (\fBuserrec\fP * user)" +.PP +Definition at line 647 of file users.cpp. +.PP +References DEBUG, connection::fd, FOREACH_MOD, connection::haspassed, connection::host, userrec::ident, connection::idle_lastmsg, connection::ip, kill_link(), kill_link_silent(), log(), matches_exception(), matches_gline(), matches_kline(), ServerConfig::Network, userrec::nick, connection::port, connection::registered, ServerConfig::ServerName, InspIRCd::stats, serverstats::statsConnects, TIME, WriteOpers(), and WriteServ(). +.PP +Referenced by ConnectUser(). +.PP +.nf +648 { +649 ServerInstance->stats->statsConnects++; +650 user->idle_lastmsg = TIME; +651 log(DEBUG,'ConnectUser: %s',user->nick); +652 +653 if ((strcmp(Passwd(user),'')) && (!user->haspassed)) +654 { +655 kill_link(user,'Invalid password'); +656 return; +657 } +658 if (IsDenied(user)) +659 { +660 kill_link(user,'Unauthorised connection'); +661 return; +662 } +663 +664 char match_against[MAXBUF]; +665 snprintf(match_against,MAXBUF,'%s@%s',user->ident,user->host); +666 char* e = matches_exception(match_against); +667 if (!e) +668 { +669 char* r = matches_gline(match_against); +670 if (r) +671 { +672 char reason[MAXBUF]; +673 snprintf(reason,MAXBUF,'G-Lined: %s',r); +674 kill_link_silent(user,reason); +675 return; +676 } +677 r = matches_kline(user->host); +678 if (r) +679 { +680 char reason[MAXBUF]; +681 snprintf(reason,MAXBUF,'K-Lined: %s',r); +682 kill_link_silent(user,reason); +683 return; +684 } +685 } +686 +687 +688 WriteServ(user->fd,'NOTICE Auth :Welcome to \002%s\002!',Config->Network); +689 WriteServ(user->fd,'001 %s :Welcome to the %s IRC Network %s!%s@%s',user->nick,Config->Network,user->nick,user->ident,user->host); +690 WriteServ(user->fd,'002 %s :Your host is %s, running version %s',user->nick,Config->ServerName,VERSION); +691 WriteServ(user->fd,'003 %s :This server was created %s %s',user->nick,__TIME__,__DATE__); +692 WriteServ(user->fd,'004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN',user->nick,Config->ServerName,VERSION); +693 // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it... +694 std::stringstream v; +695 v << 'WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=' << MAXCHANS; +696 v << ' MAXBANS=60 NICKLEN=' << NICKMAX; +697 v << ' TOPICLEN=' << MAXTOPIC << ' KICKLEN=' << MAXKICK << ' MAXTARGETS=20 AWAYLEN=' << MAXAWAY << ' CHANMODES=ohvb,k,l,psmnti NETWORK='; +698 v << Config->Network; +699 std::string data005 = v.str(); +700 FOREACH_MOD On005Numeric(data005); +701 // anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line... +702 // so i'd better split it :) +703 std::stringstream out(data005); +704 std::string token = ''; +705 std::string line5 = ''; +706 int token_counter = 0; +707 while (!out.eof()) +708 { +709 out >> token; +710 line5 = line5 + token + ' '; +711 token_counter++; +712 if ((token_counter >= 13) || (out.eof() == true)) +713 { +714 WriteServ(user->fd,'005 %s %s:are supported by this server',user->nick,line5.c_str()); +715 line5 = ''; +716 token_counter = 0; +717 } +718 } +719 ShowMOTD(user); +720 +721 // fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out +722 // onto the network and produce 'fake direction' +723 FOREACH_MOD OnUserConnect(user); +724 FOREACH_MOD OnGlobalConnect(user); +725 user->registered = 7; +726 WriteOpers('*** Client connecting on port %lu: %s!%s@%s [%s]',(unsigned long)user->port,user->nick,user->ident,user->host,user->ip); +727 } +.fi +.PP +.SS "void kill_link (\fBuserrec\fP * user, const char * r)" +.PP +Definition at line 349 of file users.cpp. +.PP +References AddWhoWas(), clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), WriteCommonExcept(), and WriteOpers(). +.PP +Referenced by AddClient(), force_nickchange(), FullConnectUser(), Server::PseudoToUser(), and Server::QuitUser(). +.PP +.nf +350 { +351 user_hash::iterator iter = clientlist.find(user->nick); +352 +353 char reason[MAXBUF]; +354 +355 strncpy(reason,r,MAXBUF); +356 +357 if (strlen(reason)>MAXQUIT) +358 { +359 reason[MAXQUIT-1] = '\0'; +360 } +361 +362 log(DEBUG,'kill_link: %s '%s'',user->nick,reason); +363 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason); +364 log(DEBUG,'closing fd %lu',(unsigned long)user->fd); +365 +366 if (user->registered == 7) { +367 FOREACH_MOD OnUserQuit(user,reason); +368 WriteCommonExcept(user,'QUIT :%s',reason); +369 } +370 +371 user->FlushWriteBuf(); +372 +373 FOREACH_MOD OnUserDisconnect(user); +374 +375 if (user->fd > -1) +376 { +377 if (Config->GetIOHook(user->port)) +378 { +379 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd); +380 } +381 ServerInstance->SE->DelFd(user->fd); +382 user->CloseSocket(); +383 } +384 +385 // this must come before the WriteOpers so that it doesnt try to fill their buffer with anything +386 // if they were an oper with +s. +387 if (user->registered == 7) { +388 purge_empty_chans(user); +389 // fix by brain: only show local quits because we only show local connects (it just makes SENSE) +390 if (user->fd > -1) +391 WriteOpers('*** Client exiting: %s!%s@%s [%s]',user->nick,user->ident,user->host,reason); +392 AddWhoWas(user); +393 } +394 +395 if (iter != clientlist.end()) +396 { +397 log(DEBUG,'deleting user hash value %lu',(unsigned long)user); +398 if (user->fd > -1) +399 { +400 fd_ref_table[user->fd] = NULL; +401 if (find(local_users.begin(),local_users.end(),user) != local_users.end()) +402 { +403 local_users.erase(find(local_users.begin(),local_users.end(),user)); +404 log(DEBUG,'Delete local user'); +405 } +406 } +407 clientlist.erase(iter); +408 } +409 delete user; +410 } +.fi +.PP +.SS "void kill_link_silent (\fBuserrec\fP * user, const char * r)" +.PP +Definition at line 412 of file users.cpp. +.PP +References clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), and WriteCommonExcept(). +.PP +Referenced by FullConnectUser(). +.PP +.nf +413 { +414 user_hash::iterator iter = clientlist.find(user->nick); +415 +416 char reason[MAXBUF]; +417 +418 strncpy(reason,r,MAXBUF); +419 +420 if (strlen(reason)>MAXQUIT) +421 { +422 reason[MAXQUIT-1] = '\0'; +423 } +424 +425 log(DEBUG,'kill_link: %s '%s'',user->nick,reason); +426 Write(user->fd,'ERROR :Closing link (%s@%s) [%s]',user->ident,user->host,reason); +427 log(DEBUG,'closing fd %lu',(unsigned long)user->fd); +428 +429 user->FlushWriteBuf(); +430 +431 if (user->registered == 7) { +432 FOREACH_MOD OnUserQuit(user,reason); +433 WriteCommonExcept(user,'QUIT :%s',reason); +434 } +435 +436 FOREACH_MOD OnUserDisconnect(user); +437 +438 if (user->fd > -1) +439 { +440 if (Config->GetIOHook(user->port)) +441 { +442 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd); +443 } +444 ServerInstance->SE->DelFd(user->fd); +445 user->CloseSocket(); +446 } +447 +448 if (user->registered == 7) { +449 purge_empty_chans(user); +450 } +451 +452 if (iter != clientlist.end()) +453 { +454 log(DEBUG,'deleting user hash value %lu',(unsigned long)user); +455 if (user->fd > -1) +456 { +457 fd_ref_table[user->fd] = NULL; +458 if (find(local_users.begin(),local_users.end(),user) != local_users.end()) +459 { +460 log(DEBUG,'Delete local user'); +461 local_users.erase(find(local_users.begin(),local_users.end(),user)); +462 } +463 } +464 clientlist.erase(iter); +465 } +466 delete user; +467 } +.fi +.PP +.SS "\fBuserrec\fP* ReHashNick (char * Old, char * New)" +.PP +Definition at line 743 of file users.cpp. +.PP +References clientlist, DEBUG, and log(). +.PP +.nf +744 { +745 //user_hash::iterator newnick; +746 user_hash::iterator oldnick = clientlist.find(Old); +747 +748 log(DEBUG,'ReHashNick: %s %s',Old,New); +749 +750 if (!strcasecmp(Old,New)) +751 { +752 log(DEBUG,'old nick is new nick, skipping'); +753 return oldnick->second; +754 } +755 +756 if (oldnick == clientlist.end()) return NULL; /* doesnt exist */ +757 +758 log(DEBUG,'ReHashNick: Found hashed nick %s',Old); +759 +760 userrec* olduser = oldnick->second; +761 clientlist[New] = olduser; +762 clientlist.erase(oldnick); +763 +764 log(DEBUG,'ReHashNick: Nick rehashed as %s',New); +765 +766 return clientlist[New]; +767 } +.fi +.PP .SH "Author" .PP Generated automatically by Doxygen for InspIRCd from the source code. diff --git a/docs/man/man3/xline.h.3 b/docs/man/man3/xline.h.3 index bac860eff..feca7ea4a 100644 --- a/docs/man/man3/xline.h.3 +++ b/docs/man/man3/xline.h.3 @@ -1,4 +1,4 @@ -.TH "xline.h" 3 "15 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- +.TH "xline.h" 3 "19 Dec 2005" "Version 1.0Betareleases" "InspIRCd" \" -*- nroff -*- .ad l .nh .SH NAME @@ -202,14 +202,19 @@ Referenced by Server::DelZLine(). .PP .SS "char* matches_exception (const char * host)" .PP +Referenced by AddClient(), and FullConnectUser(). .SS "char* matches_gline (const char * host)" .PP +Referenced by FullConnectUser(). .SS "char* matches_kline (const char * host)" .PP +Referenced by FullConnectUser(). .SS "char* matches_qline (const char * nick)" .PP +Referenced by force_nickchange(). .SS "char* matches_zline (const char * ipaddr)" .PP +Referenced by AddClient(). .SS "bool qline_make_global (const char * nickname)" .PP .SS "void qline_set_creation_time (char * nick, time_t create_time)" diff --git a/docs/module-doc/aes_8h-source.html b/docs/module-doc/aes_8h-source.html new file mode 100644 index 000000000..3abd2301d --- /dev/null +++ b/docs/module-doc/aes_8h-source.html @@ -0,0 +1,142 @@ + + +InspIRCd: aes.h Source File + + + + + +

aes.h

Go to the documentation of this file.
00001 #ifndef __AES_H__
+00002 #define __AES_H__
+00003 
+00004 #include <cstring>
+00005 
+00006 using namespace std;
+00007 
+00010 class AES
+00011 {
+00012 public:
+00013         enum { ECB=0, CBC=1, CFB=2 };
+00014 
+00015 private:
+00016         enum { DEFAULT_BLOCK_SIZE=16 };
+00017         enum { MAX_BLOCK_SIZE=32, MAX_ROUNDS=14, MAX_KC=8, MAX_BC=8 };
+00018 
+00019         static int Mul(int a, int b)
+00020         {
+00021                 return (a != 0 && b != 0) ? sm_alog[(sm_log[a & 0xFF] + sm_log[b & 0xFF]) % 255] : 0;
+00022         }
+00023 
+00026         static int Mul4(int a, char b[])
+00027         {
+00028                 if(a == 0)
+00029                         return 0;
+00030                 a = sm_log[a & 0xFF];
+00031                 int a0 = (b[0] != 0) ? sm_alog[(a + sm_log[b[0] & 0xFF]) % 255] & 0xFF : 0;
+00032                 int a1 = (b[1] != 0) ? sm_alog[(a + sm_log[b[1] & 0xFF]) % 255] & 0xFF : 0;
+00033                 int a2 = (b[2] != 0) ? sm_alog[(a + sm_log[b[2] & 0xFF]) % 255] & 0xFF : 0;
+00034                 int a3 = (b[3] != 0) ? sm_alog[(a + sm_log[b[3] & 0xFF]) % 255] & 0xFF : 0;
+00035                 return a0 << 24 | a1 << 16 | a2 << 8 | a3;
+00036         }
+00037 
+00038 public:
+00039         AES();
+00040 
+00041         virtual ~AES();
+00042 
+00050         void MakeKey(char const* key, char const* chain, int keylength=DEFAULT_BLOCK_SIZE, int blockSize=DEFAULT_BLOCK_SIZE);
+00051 
+00052 private:
+00055         void Xor(char* buff, char const* chain)
+00056         {
+00057                 if(false==m_bKeyInit)
+00058                         return;
+00059                 for(int i=0; i<m_blockSize; i++)
+00060                         *(buff++) ^= *(chain++);        
+00061         }
+00062 
+00067         void DefEncryptBlock(char const* in, char* result);
+00068 
+00073         void DefDecryptBlock(char const* in, char* result);
+00074 
+00075 public:
+00080         void EncryptBlock(char const* in, char* result);
+00081         
+00086         void DecryptBlock(char const* in, char* result);
+00087 
+00094         void Encrypt(char const* in, char* result, size_t n, int iMode=ECB);
+00095         
+00102         void Decrypt(char const* in, char* result, size_t n, int iMode=ECB);
+00103 
+00106         int GetKeyLength()
+00107         {
+00108                 if(false==m_bKeyInit)
+00109                         return 0;
+00110                 return m_keylength;
+00111         }
+00112 
+00115         int GetBlockSize()
+00116         {
+00117                 if(false==m_bKeyInit)
+00118                         return 0;
+00119                 return m_blockSize;
+00120         }
+00121         
+00124         int GetRounds()
+00125         {
+00126                 if(false==m_bKeyInit)
+00127                         return 0;
+00128                 return m_iROUNDS;
+00129         }
+00130 
+00133         void ResetChain()
+00134         {
+00135                 memcpy(m_chain, m_chain0, m_blockSize);
+00136         }
+00137 
+00138 public:
+00141         static char const* sm_chain0;
+00142 
+00143 private:
+00144         static const int sm_alog[256];
+00145         static const int sm_log[256];
+00146         static const char sm_S[256];
+00147         static const char sm_Si[256];
+00148         static const int sm_T1[256];
+00149         static const int sm_T2[256];
+00150         static const int sm_T3[256];
+00151         static const int sm_T4[256];
+00152         static const int sm_T5[256];
+00153         static const int sm_T6[256];
+00154         static const int sm_T7[256];
+00155         static const int sm_T8[256];
+00156         static const int sm_U1[256];
+00157         static const int sm_U2[256];
+00158         static const int sm_U3[256];
+00159         static const int sm_U4[256];
+00160         static const char sm_rcon[30];
+00161         static const int sm_shifts[3][4][2];
+00164         bool m_bKeyInit;
+00167         int m_Ke[MAX_ROUNDS+1][MAX_BC];
+00170         int m_Kd[MAX_ROUNDS+1][MAX_BC];
+00173         int m_keylength;
+00176         int     m_blockSize;
+00179         int m_iROUNDS;
+00182         char m_chain0[MAX_BLOCK_SIZE];
+00183         char m_chain[MAX_BLOCK_SIZE];
+00186         int tk[MAX_KC];
+00187         int a[MAX_BC];
+00188         int t[MAX_BC];
+00189 };
+00190 
+00191 #endif
+00192 
+00199 void to64frombits(unsigned char *out, const unsigned char *in, int inlen);
+00206 int from64tobits(char *out, const char *in, int maxlen);
+00207 
+

Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  + +doxygen 1.4.4-20050815
+ + diff --git a/docs/module-doc/aes_8h.html b/docs/module-doc/aes_8h.html new file mode 100644 index 000000000..bc7ccff4b --- /dev/null +++ b/docs/module-doc/aes_8h.html @@ -0,0 +1,133 @@ + + +InspIRCd: aes.h File Reference + + + + + +

aes.h File Reference

#include <cstring>
+ +

+Include dependency graph for aes.h:

+ +

+Go to the source code of this file. + + + + + + + + + + + + +

Classes

class  AES
 The AES class is a utility class for use in modules and the core for encryption of data. More...

Functions

void to64frombits (unsigned char *out, const unsigned char *in, int inlen)
 Convert from binary to base64.
int from64tobits (char *out, const char *in, int maxlen)
 Convert from base64 to binary Output Input Size of output buffer.
+


Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
int from64tobits char *  out,
const char *  in,
int  maxlen
+
+ + + + + +
+   + + +

+Convert from base64 to binary Output Input Size of output buffer. +

+

Returns:
Number of bytes actually converted
+
+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
void to64frombits unsigned char *  out,
const unsigned char *  in,
int  inlen
+
+ + + + + +
+   + + +

+Convert from binary to base64. +

+

Parameters:
+ + + + +
out Output
in Input
inlen Number of bytes in input buffer
+
+
+


Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  + +doxygen 1.4.4-20050815
+ + diff --git a/docs/module-doc/aes_8h__incl.map b/docs/module-doc/aes_8h__incl.map new file mode 100644 index 000000000..5a14779e7 --- /dev/null +++ b/docs/module-doc/aes_8h__incl.map @@ -0,0 +1 @@ +base referer diff --git a/docs/module-doc/aes_8h__incl.md5 b/docs/module-doc/aes_8h__incl.md5 new file mode 100644 index 000000000..763f9a789 --- /dev/null +++ b/docs/module-doc/aes_8h__incl.md5 @@ -0,0 +1 @@ +757d940097e33843502a3704b6517705 \ No newline at end of file diff --git a/docs/module-doc/annotated.html b/docs/module-doc/annotated.html index d242be3d1..021f871ac 100644 --- a/docs/module-doc/annotated.html +++ b/docs/module-doc/annotated.html @@ -7,11 +7,13 @@

InspIRCd Class List

Here are the classes, structs, unions and interfaces with brief descriptions: + + @@ -38,6 +40,7 @@ + @@ -55,7 +58,7 @@
AdminHolds /ADMIN data This class contains the admin details of the local server
AESUtility class for use in modules and the core for encryption of data
BanItemA subclass of HostItem designed to hold channel bans (+b)
BoolSetBoolSet is a utility class designed to hold eight bools in a bitmask
chanrecHolds all relevent information for a channel
char_traits
classbaseThe base class for all inspircd classes
cmd_mode
command_tA structure that defines a command
ConfigReaderAllows reading of values from configuration files This class allows a module to read from either the main configuration file (inspircd.conf) or from a module-specified configuration file
ConnectClassHolds information relevent to <connect allow> and <connect deny> tags in the config file
irc::irc_char_traitsThe irc_char_traits class is used for RFC-style comparison of strings
KLineKLine class
ModeParameterHolds a custom parameter to a module-defined channel mode e.g
ModeParser
ModuleBase class for all InspIRCd modules This class is the base class for InspIRCd modules
ModuleFactoryInstantiates classes inherited from Module This class creates a class inherited from type Module, using new
ModuleMessageBase class of Request and Event This class is used to represent a basic data structure which is passed between modules for safe inter-module communications
XLineXLine is the base class for ban lines such as G lines and K lines
ZLineZLine class
-
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/base_8h-source.html b/docs/module-doc/base_8h-source.html index dd5093d21..b0ea61862 100644 --- a/docs/module-doc/base_8h-source.html +++ b/docs/module-doc/base_8h-source.html @@ -88,7 +88,7 @@ 00161 00162 #endif 00163 -
Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/base_8h.html b/docs/module-doc/base_8h.html index 21cb374ca..6f4d7700b 100644 --- a/docs/module-doc/base_8h.html +++ b/docs/module-doc/base_8h.html @@ -21,8 +21,7 @@ This graph shows which files directly or indirectly include this file:

- - +

@@ -68,7 +67,7 @@ This graph shows which files directly or indirectly include this file:

26 of file base.h. -
Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/base_8h__dep__incl.map b/docs/module-doc/base_8h__dep__incl.map index c410efa5b..f4ecb8aca 100644 --- a/docs/module-doc/base_8h__dep__incl.map +++ b/docs/module-doc/base_8h__dep__incl.map @@ -1,5 +1,4 @@ base referer rect $channels_8h-source.html 123,7 208,33 rect $connection_8h-source.html 116,57 215,84 -rect $ctables_8h-source.html 128,108 203,135 -rect $modules_8h-source.html 264,133 347,160 +rect $modules_8h-source.html 124,108 207,135 diff --git a/docs/module-doc/base_8h__dep__incl.md5 b/docs/module-doc/base_8h__dep__incl.md5 index 41b455699..ca5585f51 100644 --- a/docs/module-doc/base_8h__dep__incl.md5 +++ b/docs/module-doc/base_8h__dep__incl.md5 @@ -1 +1 @@ -b145898866c61fc2668d99f3afe53948 \ No newline at end of file +ee5adf3802b7f876813a7157861bd8af \ No newline at end of file diff --git a/docs/module-doc/channels_8cpp-source.html b/docs/module-doc/channels_8cpp-source.html index c8421934a..be9c4fc43 100644 --- a/docs/module-doc/channels_8cpp-source.html +++ b/docs/module-doc/channels_8cpp-source.html @@ -28,269 +28,269 @@ 00019 #include "inspircd_config.h" 00020 #include "inspircd.h" 00021 #include "inspircd_io.h" -00022 #include "inspircd_util.h" -00023 #include <unistd.h> -00024 #include <sys/errno.h> -00025 #include <sys/ioctl.h> -00026 #include <sys/utsname.h> -00027 #include <time.h> -00028 #include <string> -00029 #ifdef GCC3 -00030 #include <ext/hash_map> -00031 #else -00032 #include <hash_map> -00033 #endif -00034 #include <map> -00035 #include <sstream> -00036 #include <vector> -00037 #include <deque> -00038 #include "users.h" -00039 #include "ctables.h" -00040 #include "globals.h" -00041 #include "modules.h" -00042 #include "dynamic.h" -00043 #include "commands.h" -00044 #include "wildcard.h" -00045 #include "message.h" -00046 #include "mode.h" -00047 #include "xline.h" -00048 #include "inspstring.h" -00049 #include "helperfuncs.h" -00050 #include "typedefs.h" -00051 -00052 #ifdef GCC3 -00053 #define nspace __gnu_cxx -00054 #else -00055 #define nspace std -00056 #endif -00057 -00058 extern ServerConfig* Config; -00059 -00060 extern int MODCOUNT; -00061 extern std::vector<Module*> modules; -00062 extern std::vector<ircd_module*> factory; -00063 extern int WHOWAS_STALE; -00064 extern int WHOWAS_MAX; -00065 extern time_t TIME; -00066 extern chan_hash chanlist; -00067 -00068 using namespace std; -00069 -00070 std::vector<ModeParameter> custom_mode_params; -00071 -00072 chanrec* ForceChan(chanrec* Ptr,ucrec &a,userrec* user, int created); -00073 -00074 chanrec::chanrec() -00075 { -00076 strcpy(name,""); -00077 strcpy(custom_modes,""); -00078 strcpy(topic,""); -00079 strcpy(setby,""); -00080 strcpy(key,""); -00081 created = topicset = limit = 0; -00082 binarymodes = 0; -00083 internal_userlist.clear(); -00084 } -00085 -00086 void chanrec::SetCustomMode(char mode,bool mode_on) -00087 { -00088 if (mode_on) { -00089 static char m[3]; -00090 m[0] = mode; -00091 m[1] = '\0'; -00092 if (!strchr(this->custom_modes,mode)) -00093 { -00094 strlcat(custom_modes,m,MAXMODES); -00095 } -00096 log(DEBUG,"Custom mode %c set",mode); -00097 } -00098 else { -00099 -00100 std::string a = this->custom_modes; -00101 int pos = a.find(mode); -00102 a.erase(pos,1); -00103 strncpy(this->custom_modes,a.c_str(),MAXMODES); -00104 -00105 log(DEBUG,"Custom mode %c removed: modelist='%s'",mode,this->custom_modes); -00106 this->SetCustomModeParam(mode,"",false); -00107 } -00108 } +00022 #include <unistd.h> +00023 #include <sys/errno.h> +00024 #include <sys/ioctl.h> +00025 #include <sys/utsname.h> +00026 #include <time.h> +00027 #include <string> +00028 #ifdef GCC3 +00029 #include <ext/hash_map> +00030 #else +00031 #include <hash_map> +00032 #endif +00033 #include <map> +00034 #include <sstream> +00035 #include <vector> +00036 #include <deque> +00037 #include "users.h" +00038 #include "ctables.h" +00039 #include "globals.h" +00040 #include "modules.h" +00041 #include "dynamic.h" +00042 #include "commands.h" +00043 #include "wildcard.h" +00044 #include "message.h" +00045 #include "mode.h" +00046 #include "xline.h" +00047 #include "inspstring.h" +00048 #include "helperfuncs.h" +00049 #include "typedefs.h" +00050 +00051 #ifdef GCC3 +00052 #define nspace __gnu_cxx +00053 #else +00054 #define nspace std +00055 #endif +00056 +00057 extern ServerConfig* Config; +00058 +00059 extern int MODCOUNT; +00060 extern std::vector<Module*> modules; +00061 extern std::vector<ircd_module*> factory; +00062 extern int WHOWAS_STALE; +00063 extern int WHOWAS_MAX; +00064 extern time_t TIME; +00065 extern chan_hash chanlist; +00066 +00067 using namespace std; +00068 +00069 std::vector<ModeParameter> custom_mode_params; +00070 +00071 chanrec* ForceChan(chanrec* Ptr,ucrec &a,userrec* user, int created); +00072 +00073 chanrec::chanrec() +00074 { +00075 strcpy(name,""); +00076 strcpy(custom_modes,""); +00077 strcpy(topic,""); +00078 strcpy(setby,""); +00079 strcpy(key,""); +00080 created = topicset = limit = 0; +00081 binarymodes = 0; +00082 internal_userlist.clear(); +00083 } +00084 +00085 void chanrec::SetCustomMode(char mode,bool mode_on) +00086 { +00087 if (mode_on) { +00088 static char m[3]; +00089 m[0] = mode; +00090 m[1] = '\0'; +00091 if (!strchr(this->custom_modes,mode)) +00092 { +00093 strlcat(custom_modes,m,MAXMODES); +00094 } +00095 log(DEBUG,"Custom mode %c set",mode); +00096 } +00097 else { +00098 +00099 std::string a = this->custom_modes; +00100 int pos = a.find(mode); +00101 a.erase(pos,1); +00102 strncpy(this->custom_modes,a.c_str(),MAXMODES); +00103 +00104 log(DEBUG,"Custom mode %c removed: modelist='%s'",mode,this->custom_modes); +00105 this->SetCustomModeParam(mode,"",false); +00106 } +00107 } +00108 00109 -00110 -00111 void chanrec::SetCustomModeParam(char mode,char* parameter,bool mode_on) -00112 { -00113 -00114 log(DEBUG,"SetCustomModeParam called"); -00115 ModeParameter M; -00116 M.mode = mode; -00117 strlcpy(M.channel,this->name,CHANMAX); -00118 strlcpy(M.parameter,parameter,MAXBUF); -00119 if (mode_on) -00120 { -00121 log(DEBUG,"Custom mode parameter %c %s added",mode,parameter); -00122 custom_mode_params.push_back(M); -00123 } -00124 else -00125 { -00126 if (custom_mode_params.size()) -00127 { -00128 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) -00129 { -00130 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) -00131 { -00132 log(DEBUG,"Custom mode parameter %c %s removed",mode,parameter); -00133 custom_mode_params.erase(i); -00134 return; -00135 } -00136 } -00137 } -00138 log(DEBUG,"*** BUG *** Attempt to remove non-existent mode parameter!"); -00139 } -00140 } -00141 -00142 bool chanrec::IsCustomModeSet(char mode) -00143 { -00144 return (strchr(this->custom_modes,mode)); -00145 } -00146 -00147 std::string chanrec::GetModeParameter(char mode) -00148 { -00149 if (custom_mode_params.size()) -00150 { -00151 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) -00152 { -00153 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) -00154 { -00155 return i->parameter; -00156 } -00157 } -00158 } -00159 return ""; -00160 } -00161 -00162 long chanrec::GetUserCounter() -00163 { -00164 return (this->internal_userlist.size()); -00165 } -00166 -00167 void chanrec::AddUser(char* castuser) -00168 { -00169 internal_userlist.push_back(castuser); -00170 log(DEBUG,"Added casted user to channel's internal list"); -00171 } -00172 -00173 void chanrec::DelUser(char* castuser) -00174 { -00175 for (std::vector<char*>::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++) -00176 { -00177 if (*a == castuser) -00178 { -00179 log(DEBUG,"Removed casted user from channel's internal list"); -00180 internal_userlist.erase(a); -00181 return; -00182 } -00183 } -00184 log(DEBUG,"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!",name); -00185 } -00186 -00187 std::vector<char*> *chanrec::GetUsers() -00188 { -00189 return &internal_userlist; -00190 } -00191 -00192 /* add a channel to a user, creating the record for it if needed and linking -00193 * it to the user record */ -00194 -00195 chanrec* add_channel(userrec *user, const char* cn, const char* key, bool override) -00196 { -00197 if ((!user) || (!cn)) -00198 { -00199 log(DEFAULT,"*** BUG *** add_channel was given an invalid parameter"); -00200 return 0; -00201 } -00202 -00203 int created = 0; -00204 char cname[MAXBUF]; -00205 int MOD_RESULT = 0; -00206 strncpy(cname,cn,CHANMAX); -00207 -00208 log(DEBUG,"add_channel: %s %s",user->nick,cname); -00209 -00210 chanrec* Ptr = FindChan(cname); -00211 -00212 if (!Ptr) -00213 { -00214 if (user->fd > -1) -00215 { -00216 MOD_RESULT = 0; -00217 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname)); -00218 if (MOD_RESULT == 1) -00219 return NULL; -00220 } -00221 /* create a new one */ -00222 chanlist[cname] = new chanrec(); -00223 strlcpy(chanlist[cname]->name, cname,CHANMAX); -00224 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL; -00225 chanlist[cname]->created = TIME; -00226 strcpy(chanlist[cname]->topic, ""); -00227 strncpy(chanlist[cname]->setby, user->nick,NICKMAX); -00228 chanlist[cname]->topicset = 0; -00229 Ptr = chanlist[cname]; -00230 log(DEBUG,"add_channel: created: %s",cname); -00231 /* set created to 2 to indicate user -00232 * is the first in the channel -00233 * and should be given ops */ -00234 created = 2; -00235 } -00236 else -00237 { -00238 /* Already on the channel */ -00239 if (has_channel(user,Ptr)) -00240 return NULL; -00241 -00242 // remote users are allowed us to bypass channel modes -00243 // and bans (used by servers) -00244 if (user->fd > -1) -00245 { -00246 MOD_RESULT = 0; -00247 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname)); -00248 if (MOD_RESULT == 1) -00249 { -00250 return NULL; -00251 } -00252 else -00253 { -00254 if (*Ptr->key) -00255 { -00256 MOD_RESULT = 0; -00257 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : "")); -00258 if (!MOD_RESULT) -00259 { -00260 if (!key) -00261 { -00262 log(DEBUG,"add_channel: no key given in JOIN"); -00263 WriteServ(user->fd,"475 %s %s :Cannot join channel (Requires key)",user->nick, Ptr->name); -00264 return NULL; -00265 } -00266 else -00267 { -00268 if (strcasecmp(key,Ptr->key)) -00269 { -00270 log(DEBUG,"add_channel: bad key given in JOIN"); -00271 WriteServ(user->fd,"475 %s %s :Cannot join channel (Incorrect key)",user->nick, Ptr->name); -00272 return NULL; -00273 } -00274 } -00275 } -00276 } -00277 if (Ptr->binarymodes & CM_INVITEONLY) -00278 { -00279 MOD_RESULT = 0; +00110 void chanrec::SetCustomModeParam(char mode,char* parameter,bool mode_on) +00111 { +00112 +00113 log(DEBUG,"SetCustomModeParam called"); +00114 ModeParameter M; +00115 M.mode = mode; +00116 strlcpy(M.channel,this->name,CHANMAX); +00117 strlcpy(M.parameter,parameter,MAXBUF); +00118 if (mode_on) +00119 { +00120 log(DEBUG,"Custom mode parameter %c %s added",mode,parameter); +00121 custom_mode_params.push_back(M); +00122 } +00123 else +00124 { +00125 if (custom_mode_params.size()) +00126 { +00127 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) +00128 { +00129 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) +00130 { +00131 log(DEBUG,"Custom mode parameter %c %s removed",mode,parameter); +00132 custom_mode_params.erase(i); +00133 return; +00134 } +00135 } +00136 } +00137 log(DEBUG,"*** BUG *** Attempt to remove non-existent mode parameter!"); +00138 } +00139 } +00140 +00141 bool chanrec::IsCustomModeSet(char mode) +00142 { +00143 return (strchr(this->custom_modes,mode)); +00144 } +00145 +00146 std::string chanrec::GetModeParameter(char mode) +00147 { +00148 if (custom_mode_params.size()) +00149 { +00150 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++) +00151 { +00152 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel))) +00153 { +00154 return i->parameter; +00155 } +00156 } +00157 } +00158 return ""; +00159 } +00160 +00161 long chanrec::GetUserCounter() +00162 { +00163 return (this->internal_userlist.size()); +00164 } +00165 +00166 void chanrec::AddUser(char* castuser) +00167 { +00168 internal_userlist.push_back(castuser); +00169 log(DEBUG,"Added casted user to channel's internal list"); +00170 } +00171 +00172 void chanrec::DelUser(char* castuser) +00173 { +00174 for (std::vector<char*>::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++) +00175 { +00176 if (*a == castuser) +00177 { +00178 log(DEBUG,"Removed casted user from channel's internal list"); +00179 internal_userlist.erase(a); +00180 return; +00181 } +00182 } +00183 log(DEBUG,"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!",name); +00184 } +00185 +00186 std::vector<char*> *chanrec::GetUsers() +00187 { +00188 return &internal_userlist; +00189 } +00190 +00191 /* add a channel to a user, creating the record for it if needed and linking +00192 * it to the user record */ +00193 +00194 chanrec* add_channel(userrec *user, const char* cn, const char* key, bool override) +00195 { +00196 if ((!user) || (!cn)) +00197 { +00198 log(DEFAULT,"*** BUG *** add_channel was given an invalid parameter"); +00199 return 0; +00200 } +00201 +00202 int created = 0; +00203 char cname[MAXBUF]; +00204 int MOD_RESULT = 0; +00205 strncpy(cname,cn,CHANMAX); +00206 +00207 log(DEBUG,"add_channel: %s %s",user->nick,cname); +00208 +00209 chanrec* Ptr = FindChan(cname); +00210 +00211 if (!Ptr) +00212 { +00213 if (user->fd > -1) +00214 { +00215 MOD_RESULT = 0; +00216 FOREACH_RESULT(OnUserPreJoin(user,NULL,cname)); +00217 if (MOD_RESULT == 1) +00218 return NULL; +00219 } +00220 /* create a new one */ +00221 chanlist[cname] = new chanrec(); +00222 strlcpy(chanlist[cname]->name, cname,CHANMAX); +00223 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL; +00224 chanlist[cname]->created = TIME; +00225 strcpy(chanlist[cname]->topic, ""); +00226 strncpy(chanlist[cname]->setby, user->nick,NICKMAX); +00227 chanlist[cname]->topicset = 0; +00228 Ptr = chanlist[cname]; +00229 log(DEBUG,"add_channel: created: %s",cname); +00230 /* set created to 2 to indicate user +00231 * is the first in the channel +00232 * and should be given ops */ +00233 created = 2; +00234 } +00235 else +00236 { +00237 /* Already on the channel */ +00238 if (has_channel(user,Ptr)) +00239 return NULL; +00240 +00241 // remote users are allowed us to bypass channel modes +00242 // and bans (used by servers) +00243 if (user->fd > -1) +00244 { +00245 MOD_RESULT = 0; +00246 FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname)); +00247 if (MOD_RESULT == 1) +00248 { +00249 return NULL; +00250 } +00251 else +00252 { +00253 if (*Ptr->key) +00254 { +00255 MOD_RESULT = 0; +00256 FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : "")); +00257 if (!MOD_RESULT) +00258 { +00259 if (!key) +00260 { +00261 log(DEBUG,"add_channel: no key given in JOIN"); +00262 WriteServ(user->fd,"475 %s %s :Cannot join channel (Requires key)",user->nick, Ptr->name); +00263 return NULL; +00264 } +00265 else +00266 { +00267 if (strcasecmp(key,Ptr->key)) +00268 { +00269 log(DEBUG,"add_channel: bad key given in JOIN"); +00270 WriteServ(user->fd,"475 %s %s :Cannot join channel (Incorrect key)",user->nick, Ptr->name); +00271 return NULL; +00272 } +00273 } +00274 } +00275 } +00276 if (Ptr->binarymodes & CM_INVITEONLY) +00277 { +00278 MOD_RESULT = 0; +00279 irc::string xname(Ptr->name); 00280 FOREACH_RESULT(OnCheckInvite(user, Ptr)); 00281 if (!MOD_RESULT) 00282 { 00283 log(DEBUG,"add_channel: channel is +i"); -00284 if (user->IsInvited(Ptr->name)) +00284 if (user->IsInvited(xname)) 00285 { 00286 /* user was invited to channel */ 00287 /* there may be an optional channel NOTICE here */ @@ -301,7 +301,7 @@ 00292 return NULL; 00293 } 00294 } -00295 user->RemoveInvite(Ptr->name); +00295 user->RemoveInvite(xname); 00296 } 00297 if (Ptr->limit) 00298 { @@ -552,7 +552,7 @@ 00543 } 00544 00545 -
Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/channels_8cpp.html b/docs/module-doc/channels_8cpp.html index 4bd98b6e2..ef2c18660 100644 --- a/docs/module-doc/channels_8cpp.html +++ b/docs/module-doc/channels_8cpp.html @@ -10,7 +10,6 @@

channels.cpp File Reference

#include "inspircd_config.h"
#include "inspircd.h"
#include "inspircd_io.h"
-#include "inspircd_util.h"
#include <unistd.h>
#include <sys/errno.h>
#include <sys/ioctl.h>
@@ -39,17 +38,17 @@

Include dependency graph for channels.cpp:

- - - - - - - - - - - + + + + + + + + + + +

@@ -113,7 +112,7 @@ Include dependency graph for channels.cpp:

55 of file channels.cpp. +Definition at line 54 of file channels.cpp.

Function Documentation

@@ -165,99 +164,100 @@ Definition at line 55

-Definition at line 195 of file channels.cpp. -

-References chanrec::bans, chanrec::binarymodes, chanlist, userrec::chans, CM_INVITEONLY, CM_NOEXTERNAL, CM_TOPICLOCK, DEBUG, DEFAULT, connection::fd, FindChan(), ForceChan(), FOREACH_RESULT, userrec::GetFullHost(), has_channel(), userrec::IsInvited(), chanrec::key, chanrec::limit, log(), userrec::modes, chanrec::name, userrec::nick, userrec::RemoveInvite(), TIME, and WriteServ(). -

-Referenced by Server::JoinUserToChannel().

00196 {
-00197         if ((!user) || (!cn))
-00198         {
-00199                 log(DEFAULT,"*** BUG *** add_channel was given an invalid parameter");
-00200                 return 0;
-00201         }
-00202 
-00203         int created = 0;
-00204         char cname[MAXBUF];
-00205         int MOD_RESULT = 0;
-00206         strncpy(cname,cn,CHANMAX);
-00207 
-00208         log(DEBUG,"add_channel: %s %s",user->nick,cname);
-00209 
-00210         chanrec* Ptr = FindChan(cname);
-00211 
-00212         if (!Ptr)
-00213         {
-00214                 if (user->fd > -1)
-00215                 {
-00216                         MOD_RESULT = 0;
-00217                         FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
-00218                         if (MOD_RESULT == 1)
-00219                                 return NULL;
-00220                 }
-00221                 /* create a new one */
-00222                 chanlist[cname] = new chanrec();
-00223                 strlcpy(chanlist[cname]->name, cname,CHANMAX);
-00224                 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
-00225                 chanlist[cname]->created = TIME;
-00226                 strcpy(chanlist[cname]->topic, "");
-00227                 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
-00228                 chanlist[cname]->topicset = 0;
-00229                 Ptr = chanlist[cname];
-00230                 log(DEBUG,"add_channel: created: %s",cname);
-00231                 /* set created to 2 to indicate user
-00232                  * is the first in the channel
-00233                  * and should be given ops */
-00234                 created = 2;
-00235         }
-00236         else
-00237         {
-00238                 /* Already on the channel */
-00239                 if (has_channel(user,Ptr))
-00240                         return NULL;
-00241 
-00242                 // remote users are allowed us to bypass channel modes
-00243                 // and bans (used by servers)
-00244                 if (user->fd > -1)
-00245                 {
-00246                         MOD_RESULT = 0;
-00247                         FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
-00248                         if (MOD_RESULT == 1)
-00249                         {
-00250                                 return NULL;
-00251                         }
-00252                         else
-00253                         {
-00254                                 if (*Ptr->key)
-00255                                 {
-00256                                         MOD_RESULT = 0;
-00257                                         FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ""));
-00258                                         if (!MOD_RESULT)
-00259                                         {
-00260                                                 if (!key)
-00261                                                 {
-00262                                                         log(DEBUG,"add_channel: no key given in JOIN");
-00263                                                         WriteServ(user->fd,"475 %s %s :Cannot join channel (Requires key)",user->nick, Ptr->name);
-00264                                                         return NULL;
-00265                                                 }
-00266                                                 else
-00267                                                 {
-00268                                                         if (strcasecmp(key,Ptr->key))
-00269                                                         {
-00270                                                                 log(DEBUG,"add_channel: bad key given in JOIN");
-00271                                                                 WriteServ(user->fd,"475 %s %s :Cannot join channel (Incorrect key)",user->nick, Ptr->name);
-00272                                                                 return NULL;
-00273                                                         }
-00274                                                 }
-00275                                         }
-00276                                 }
-00277                                 if (Ptr->binarymodes & CM_INVITEONLY)
-00278                                 {
-00279                                         MOD_RESULT = 0;
+Definition at line 194 of file channels.cpp.
+

+References chanrec::bans, chanrec::binarymodes, chanlist, userrec::chans, CM_INVITEONLY, CM_NOEXTERNAL, CM_TOPICLOCK, DEBUG, DEFAULT, connection::fd, FindChan(), ForceChan(), FOREACH_RESULT, userrec::GetFullHost(), has_channel(), userrec::IsInvited(), chanrec::key, chanrec::limit, log(), userrec::modes, chanrec::name, userrec::nick, userrec::RemoveInvite(), TIME, and WriteServ(). +

+Referenced by Server::JoinUserToChannel().

00195 {
+00196         if ((!user) || (!cn))
+00197         {
+00198                 log(DEFAULT,"*** BUG *** add_channel was given an invalid parameter");
+00199                 return 0;
+00200         }
+00201 
+00202         int created = 0;
+00203         char cname[MAXBUF];
+00204         int MOD_RESULT = 0;
+00205         strncpy(cname,cn,CHANMAX);
+00206 
+00207         log(DEBUG,"add_channel: %s %s",user->nick,cname);
+00208 
+00209         chanrec* Ptr = FindChan(cname);
+00210 
+00211         if (!Ptr)
+00212         {
+00213                 if (user->fd > -1)
+00214                 {
+00215                         MOD_RESULT = 0;
+00216                         FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
+00217                         if (MOD_RESULT == 1)
+00218                                 return NULL;
+00219                 }
+00220                 /* create a new one */
+00221                 chanlist[cname] = new chanrec();
+00222                 strlcpy(chanlist[cname]->name, cname,CHANMAX);
+00223                 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
+00224                 chanlist[cname]->created = TIME;
+00225                 strcpy(chanlist[cname]->topic, "");
+00226                 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
+00227                 chanlist[cname]->topicset = 0;
+00228                 Ptr = chanlist[cname];
+00229                 log(DEBUG,"add_channel: created: %s",cname);
+00230                 /* set created to 2 to indicate user
+00231                  * is the first in the channel
+00232                  * and should be given ops */
+00233                 created = 2;
+00234         }
+00235         else
+00236         {
+00237                 /* Already on the channel */
+00238                 if (has_channel(user,Ptr))
+00239                         return NULL;
+00240 
+00241                 // remote users are allowed us to bypass channel modes
+00242                 // and bans (used by servers)
+00243                 if (user->fd > -1)
+00244                 {
+00245                         MOD_RESULT = 0;
+00246                         FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
+00247                         if (MOD_RESULT == 1)
+00248                         {
+00249                                 return NULL;
+00250                         }
+00251                         else
+00252                         {
+00253                                 if (*Ptr->key)
+00254                                 {
+00255                                         MOD_RESULT = 0;
+00256                                         FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ""));
+00257                                         if (!MOD_RESULT)
+00258                                         {
+00259                                                 if (!key)
+00260                                                 {
+00261                                                         log(DEBUG,"add_channel: no key given in JOIN");
+00262                                                         WriteServ(user->fd,"475 %s %s :Cannot join channel (Requires key)",user->nick, Ptr->name);
+00263                                                         return NULL;
+00264                                                 }
+00265                                                 else
+00266                                                 {
+00267                                                         if (strcasecmp(key,Ptr->key))
+00268                                                         {
+00269                                                                 log(DEBUG,"add_channel: bad key given in JOIN");
+00270                                                                 WriteServ(user->fd,"475 %s %s :Cannot join channel (Incorrect key)",user->nick, Ptr->name);
+00271                                                                 return NULL;
+00272                                                         }
+00273                                                 }
+00274                                         }
+00275                                 }
+00276                                 if (Ptr->binarymodes & CM_INVITEONLY)
+00277                                 {
+00278                                         MOD_RESULT = 0;
+00279                                         irc::string xname(Ptr->name);
 00280                                         FOREACH_RESULT(OnCheckInvite(user, Ptr));
 00281                                         if (!MOD_RESULT)
 00282                                         {
 00283                                                 log(DEBUG,"add_channel: channel is +i");
-00284                                                 if (user->IsInvited(Ptr->name))
+00284                                                 if (user->IsInvited(xname))
 00285                                                 {
 00286                                                         /* user was invited to channel */
 00287                                                         /* there may be an optional channel NOTICE here */
@@ -268,7 +268,7 @@ Referenced by Server::JoinU
 00292                                                         return NULL;
 00293                                                 }
 00294                                         }
-00295                                         user->RemoveInvite(Ptr->name);
+00295                                         user->RemoveInvite(xname);
 00296                                 }
 00297                                 if (Ptr->limit)
 00298                                 {
@@ -399,9 +399,9 @@ Referenced by Server::JoinU
 

Definition at line 401 of file channels.cpp.

-References chanlist, userrec::chans, DEBUG, DEFAULT, chanrec::DelUser(), FindChan(), FOREACH_MOD, log(), chanrec::name, userrec::nick, and WriteChannel(). +References chanlist, userrec::chans, DEBUG, DEFAULT, chanrec::DelUser(), FindChan(), FOREACH_MOD, log(), chanrec::name, userrec::nick, and WriteChannel().

-Referenced by Server::PartUserFromChannel().

00402 {
+Referenced by Server::PartUserFromChannel().
00402 {
 00403         if ((!user) || (!cname))
 00404         {
 00405                 log(DEFAULT,"*** BUG *** del_channel was given an invalid parameter");
@@ -511,9 +511,9 @@ Referenced by Server::PartU
 

Definition at line 372 of file channels.cpp.

-References chanrec::AddUser(), ucrec::channel, DEBUG, FOREACH_MOD, log(), chanrec::name, chanrec::setby, chanrec::topic, chanrec::topicset, ucrec::uc_modes, UCMODE_OP, WriteChannel(), and WriteServ(). +References chanrec::AddUser(), ucrec::channel, DEBUG, FOREACH_MOD, log(), chanrec::name, chanrec::setby, chanrec::topic, chanrec::topicset, ucrec::uc_modes, UCMODE_OP, WriteChannel(), and WriteServ().

-Referenced by add_channel().

00373 {
+Referenced by add_channel().
00373 {
 00374         if (created == 2)
 00375         {
 00376                 /* first user in is given ops */
@@ -592,7 +592,7 @@ Referenced by add_channel(
 

Definition at line 459 of file channels.cpp.

-References AC_KICK, ACR_DEFAULT, ACR_DENY, chanlist, userrec::chans, cstatus(), DEBUG, DEFAULT, chanrec::DelUser(), connection::fd, FOREACH_MOD, FOREACH_RESULT, has_channel(), is_uline(), log(), chanrec::name, userrec::nick, userrec::server, STATUS_HOP, WriteChannel(), and WriteServ().

00460 {
+References AC_KICK, ACR_DEFAULT, ACR_DENY, chanlist, userrec::chans, cstatus(), DEBUG, DEFAULT, chanrec::DelUser(), connection::fd, FOREACH_MOD, FOREACH_RESULT, has_channel(), is_uline(), log(), chanrec::name, userrec::nick, userrec::server, STATUS_HOP, WriteChannel(), and WriteServ().
00460 {
 00461         if ((!src) || (!user) || (!Ptr) || (!reason))
 00462         {
 00463                 log(DEFAULT,"*** BUG *** kick_channel was given an invalid parameter");
@@ -704,7 +704,7 @@ References AC_KICK, 
 
 

-Referenced by add_channel(), del_channel(), and kick_channel(). +Referenced by add_channel(), del_channel(), and kick_channel().

@@ -752,9 +752,9 @@ Referenced by add_channel(

-Definition at line 70 of file channels.cpp. +Definition at line 69 of file channels.cpp.

-Referenced by chanrec::GetModeParameter(), and chanrec::SetCustomModeParam(). +Referenced by chanrec::GetModeParameter(), and chanrec::SetCustomModeParam().

@@ -786,7 +786,7 @@ Referenced by chanrec::Get - +
int MODCOUNT = -1 int MODCOUNT = -1
@@ -802,9 +802,9 @@ Referenced by
chanrec::Get

-Definition at line 935 of file modules.cpp. +Definition at line 934 of file modules.cpp.

-Referenced by Server::FindModule(). +Referenced by Server::FindModule().

@@ -829,7 +829,7 @@ Referenced by Server::FindM

-Referenced by Server::FindModule(). +Referenced by Server::FindModule().

@@ -854,7 +854,7 @@ Referenced by Server::FindM

-Referenced by add_channel(), and userrec::userrec(). +Referenced by add_channel(), AddClient(), AddWhoWas(), FullConnectUser(), and userrec::userrec().

@@ -863,7 +863,7 @@ Referenced by add_channel( - +
int WHOWAS_MAX int WHOWAS_MAX
@@ -877,7 +877,9 @@ Referenced by
add_channel(

- + +

+Referenced by AddWhoWas().

@@ -886,7 +888,7 @@ Referenced by add_channel( - +
int WHOWAS_STALE int WHOWAS_STALE
@@ -900,10 +902,12 @@ Referenced by
add_channel(

- + +

+Referenced by AddWhoWas(). -


Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/channels_8cpp__incl.map b/docs/module-doc/channels_8cpp__incl.map index f6471abe1..820326c3c 100644 --- a/docs/module-doc/channels_8cpp__incl.map +++ b/docs/module-doc/channels_8cpp__incl.map @@ -1,12 +1,12 @@ base referer -rect $inspircd_8h-source.html 580,665 660,692 -rect $inspircd__io_8h-source.html 712,615 808,641 -rect $globals_8h-source.html 872,767 947,793 -rect $users_8h-source.html 1009,716 1073,743 -rect $ctables_8h-source.html 452,868 527,895 -rect $modules_8h-source.html 315,767 397,793 -rect $commands_8h-source.html 860,361 959,388 -rect $message_8h-source.html 867,412 952,439 -rect $mode_8h-source.html 876,108 943,135 -rect $xline_8h-source.html 879,159 940,185 -rect $typedefs_8h-source.html 168,1020 253,1047 +rect $inspircd_8h-source.html 313,817 393,844 +rect $inspircd__io_8h-source.html 443,919 539,945 +rect $globals_8h-source.html 600,615 675,641 +rect $users_8h-source.html 745,817 809,844 +rect $modules_8h-source.html 596,437 679,464 +rect $ctables_8h-source.html 740,412 815,439 +rect $mode_8h-source.html 604,919 671,945 +rect $commands_8h-source.html 588,1223 687,1249 +rect $message_8h-source.html 595,1273 680,1300 +rect $xline_8h-source.html 607,1172 668,1199 +rect $typedefs_8h-source.html 168,463 253,489 diff --git a/docs/module-doc/channels_8cpp__incl.md5 b/docs/module-doc/channels_8cpp__incl.md5 index 319dd1c05..880c16373 100644 --- a/docs/module-doc/channels_8cpp__incl.md5 +++ b/docs/module-doc/channels_8cpp__incl.md5 @@ -1 +1 @@ -4f90f86ea2d42fe100213ae570a3e482 \ No newline at end of file +693bc7a6b868d635e208e839a3f75bab \ No newline at end of file diff --git a/docs/module-doc/channels_8h-source.html b/docs/module-doc/channels_8h-source.html index c66267f32..71048115e 100644 --- a/docs/module-doc/channels_8h-source.html +++ b/docs/module-doc/channels_8h-source.html @@ -154,7 +154,7 @@ 00263 00264 #endif 00265 -

Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +

Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/channels_8h.html b/docs/module-doc/channels_8h.html index bafe033e1..6104b1de2 100644 --- a/docs/module-doc/channels_8h.html +++ b/docs/module-doc/channels_8h.html @@ -22,16 +22,16 @@ Include dependency graph for channels.h:

- - - + + + + - - - - + + - + +

@@ -125,7 +125,7 @@ This graph shows which files directly or indirectly include this file:

Definition at line 28 of file channels.h.

-Referenced by add_channel(). +Referenced by add_channel().

@@ -177,7 +177,7 @@ Definition at line 29 of

Definition at line 27 of file channels.h.

-Referenced by add_channel(). +Referenced by add_channel().

@@ -254,7 +254,7 @@ Definition at line 30 of

Definition at line 26 of file channels.h.

-Referenced by add_channel(). +Referenced by add_channel().

@@ -515,99 +515,100 @@ Definition at line 97 of

-Definition at line 195 of file channels.cpp. -

-References chanrec::bans, chanrec::binarymodes, chanlist, userrec::chans, CM_INVITEONLY, CM_NOEXTERNAL, CM_TOPICLOCK, DEBUG, DEFAULT, connection::fd, FindChan(), ForceChan(), FOREACH_RESULT, userrec::GetFullHost(), has_channel(), userrec::IsInvited(), chanrec::key, chanrec::limit, log(), userrec::modes, chanrec::name, userrec::nick, userrec::RemoveInvite(), TIME, and WriteServ(). -

-Referenced by Server::JoinUserToChannel().

00196 {
-00197         if ((!user) || (!cn))
-00198         {
-00199                 log(DEFAULT,"*** BUG *** add_channel was given an invalid parameter");
-00200                 return 0;
-00201         }
-00202 
-00203         int created = 0;
-00204         char cname[MAXBUF];
-00205         int MOD_RESULT = 0;
-00206         strncpy(cname,cn,CHANMAX);
-00207 
-00208         log(DEBUG,"add_channel: %s %s",user->nick,cname);
-00209 
-00210         chanrec* Ptr = FindChan(cname);
-00211 
-00212         if (!Ptr)
-00213         {
-00214                 if (user->fd > -1)
-00215                 {
-00216                         MOD_RESULT = 0;
-00217                         FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
-00218                         if (MOD_RESULT == 1)
-00219                                 return NULL;
-00220                 }
-00221                 /* create a new one */
-00222                 chanlist[cname] = new chanrec();
-00223                 strlcpy(chanlist[cname]->name, cname,CHANMAX);
-00224                 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
-00225                 chanlist[cname]->created = TIME;
-00226                 strcpy(chanlist[cname]->topic, "");
-00227                 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
-00228                 chanlist[cname]->topicset = 0;
-00229                 Ptr = chanlist[cname];
-00230                 log(DEBUG,"add_channel: created: %s",cname);
-00231                 /* set created to 2 to indicate user
-00232                  * is the first in the channel
-00233                  * and should be given ops */
-00234                 created = 2;
-00235         }
-00236         else
-00237         {
-00238                 /* Already on the channel */
-00239                 if (has_channel(user,Ptr))
-00240                         return NULL;
-00241 
-00242                 // remote users are allowed us to bypass channel modes
-00243                 // and bans (used by servers)
-00244                 if (user->fd > -1)
-00245                 {
-00246                         MOD_RESULT = 0;
-00247                         FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
-00248                         if (MOD_RESULT == 1)
-00249                         {
-00250                                 return NULL;
-00251                         }
-00252                         else
-00253                         {
-00254                                 if (*Ptr->key)
-00255                                 {
-00256                                         MOD_RESULT = 0;
-00257                                         FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ""));
-00258                                         if (!MOD_RESULT)
-00259                                         {
-00260                                                 if (!key)
-00261                                                 {
-00262                                                         log(DEBUG,"add_channel: no key given in JOIN");
-00263                                                         WriteServ(user->fd,"475 %s %s :Cannot join channel (Requires key)",user->nick, Ptr->name);
-00264                                                         return NULL;
-00265                                                 }
-00266                                                 else
-00267                                                 {
-00268                                                         if (strcasecmp(key,Ptr->key))
-00269                                                         {
-00270                                                                 log(DEBUG,"add_channel: bad key given in JOIN");
-00271                                                                 WriteServ(user->fd,"475 %s %s :Cannot join channel (Incorrect key)",user->nick, Ptr->name);
-00272                                                                 return NULL;
-00273                                                         }
-00274                                                 }
-00275                                         }
-00276                                 }
-00277                                 if (Ptr->binarymodes & CM_INVITEONLY)
-00278                                 {
-00279                                         MOD_RESULT = 0;
+Definition at line 194 of file channels.cpp.
+

+References chanrec::bans, chanrec::binarymodes, chanlist, userrec::chans, CM_INVITEONLY, CM_NOEXTERNAL, CM_TOPICLOCK, DEBUG, DEFAULT, connection::fd, FindChan(), ForceChan(), FOREACH_RESULT, userrec::GetFullHost(), has_channel(), userrec::IsInvited(), chanrec::key, chanrec::limit, log(), userrec::modes, chanrec::name, userrec::nick, userrec::RemoveInvite(), TIME, and WriteServ(). +

+Referenced by Server::JoinUserToChannel().

00195 {
+00196         if ((!user) || (!cn))
+00197         {
+00198                 log(DEFAULT,"*** BUG *** add_channel was given an invalid parameter");
+00199                 return 0;
+00200         }
+00201 
+00202         int created = 0;
+00203         char cname[MAXBUF];
+00204         int MOD_RESULT = 0;
+00205         strncpy(cname,cn,CHANMAX);
+00206 
+00207         log(DEBUG,"add_channel: %s %s",user->nick,cname);
+00208 
+00209         chanrec* Ptr = FindChan(cname);
+00210 
+00211         if (!Ptr)
+00212         {
+00213                 if (user->fd > -1)
+00214                 {
+00215                         MOD_RESULT = 0;
+00216                         FOREACH_RESULT(OnUserPreJoin(user,NULL,cname));
+00217                         if (MOD_RESULT == 1)
+00218                                 return NULL;
+00219                 }
+00220                 /* create a new one */
+00221                 chanlist[cname] = new chanrec();
+00222                 strlcpy(chanlist[cname]->name, cname,CHANMAX);
+00223                 chanlist[cname]->binarymodes = CM_TOPICLOCK | CM_NOEXTERNAL;
+00224                 chanlist[cname]->created = TIME;
+00225                 strcpy(chanlist[cname]->topic, "");
+00226                 strncpy(chanlist[cname]->setby, user->nick,NICKMAX);
+00227                 chanlist[cname]->topicset = 0;
+00228                 Ptr = chanlist[cname];
+00229                 log(DEBUG,"add_channel: created: %s",cname);
+00230                 /* set created to 2 to indicate user
+00231                  * is the first in the channel
+00232                  * and should be given ops */
+00233                 created = 2;
+00234         }
+00235         else
+00236         {
+00237                 /* Already on the channel */
+00238                 if (has_channel(user,Ptr))
+00239                         return NULL;
+00240 
+00241                 // remote users are allowed us to bypass channel modes
+00242                 // and bans (used by servers)
+00243                 if (user->fd > -1)
+00244                 {
+00245                         MOD_RESULT = 0;
+00246                         FOREACH_RESULT(OnUserPreJoin(user,Ptr,cname));
+00247                         if (MOD_RESULT == 1)
+00248                         {
+00249                                 return NULL;
+00250                         }
+00251                         else
+00252                         {
+00253                                 if (*Ptr->key)
+00254                                 {
+00255                                         MOD_RESULT = 0;
+00256                                         FOREACH_RESULT(OnCheckKey(user, Ptr, key ? key : ""));
+00257                                         if (!MOD_RESULT)
+00258                                         {
+00259                                                 if (!key)
+00260                                                 {
+00261                                                         log(DEBUG,"add_channel: no key given in JOIN");
+00262                                                         WriteServ(user->fd,"475 %s %s :Cannot join channel (Requires key)",user->nick, Ptr->name);
+00263                                                         return NULL;
+00264                                                 }
+00265                                                 else
+00266                                                 {
+00267                                                         if (strcasecmp(key,Ptr->key))
+00268                                                         {
+00269                                                                 log(DEBUG,"add_channel: bad key given in JOIN");
+00270                                                                 WriteServ(user->fd,"475 %s %s :Cannot join channel (Incorrect key)",user->nick, Ptr->name);
+00271                                                                 return NULL;
+00272                                                         }
+00273                                                 }
+00274                                         }
+00275                                 }
+00276                                 if (Ptr->binarymodes & CM_INVITEONLY)
+00277                                 {
+00278                                         MOD_RESULT = 0;
+00279                                         irc::string xname(Ptr->name);
 00280                                         FOREACH_RESULT(OnCheckInvite(user, Ptr));
 00281                                         if (!MOD_RESULT)
 00282                                         {
 00283                                                 log(DEBUG,"add_channel: channel is +i");
-00284                                                 if (user->IsInvited(Ptr->name))
+00284                                                 if (user->IsInvited(xname))
 00285                                                 {
 00286                                                         /* user was invited to channel */
 00287                                                         /* there may be an optional channel NOTICE here */
@@ -618,7 +619,7 @@ Referenced by Server::JoinU
 00292                                                         return NULL;
 00293                                                 }
 00294                                         }
-00295                                         user->RemoveInvite(Ptr->name);
+00295                                         user->RemoveInvite(xname);
 00296                                 }
 00297                                 if (Ptr->limit)
 00298                                 {
@@ -749,9 +750,9 @@ Referenced by Server::JoinU
 

Definition at line 401 of file channels.cpp.

-References chanlist, userrec::chans, DEBUG, DEFAULT, chanrec::DelUser(), FindChan(), FOREACH_MOD, log(), chanrec::name, userrec::nick, and WriteChannel(). +References chanlist, userrec::chans, DEBUG, DEFAULT, chanrec::DelUser(), FindChan(), FOREACH_MOD, log(), chanrec::name, userrec::nick, and WriteChannel().

-Referenced by Server::PartUserFromChannel().

00402 {
+Referenced by Server::PartUserFromChannel().
00402 {
 00403         if ((!user) || (!cname))
 00404         {
 00405                 log(DEFAULT,"*** BUG *** del_channel was given an invalid parameter");
@@ -861,7 +862,7 @@ Referenced by Server::PartU
 

Definition at line 459 of file channels.cpp.

-References AC_KICK, ACR_DEFAULT, ACR_DENY, chanlist, userrec::chans, cstatus(), DEBUG, DEFAULT, chanrec::DelUser(), connection::fd, FOREACH_MOD, FOREACH_RESULT, has_channel(), is_uline(), log(), chanrec::name, userrec::nick, userrec::server, STATUS_HOP, WriteChannel(), and WriteServ().

00460 {
+References AC_KICK, ACR_DEFAULT, ACR_DENY, chanlist, userrec::chans, cstatus(), DEBUG, DEFAULT, chanrec::DelUser(), connection::fd, FOREACH_MOD, FOREACH_RESULT, has_channel(), is_uline(), log(), chanrec::name, userrec::nick, userrec::server, STATUS_HOP, WriteChannel(), and WriteServ().
00460 {
 00461         if ((!src) || (!user) || (!Ptr) || (!reason))
 00462         {
 00463                 log(DEFAULT,"*** BUG *** kick_channel was given an invalid parameter");
@@ -950,7 +951,7 @@ References AC_KICK, 
   
 
-
Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/channels_8h__dep__incl.map b/docs/module-doc/channels_8h__dep__incl.map index de7344cbf..4c89fda78 100644 --- a/docs/module-doc/channels_8h__dep__incl.map +++ b/docs/module-doc/channels_8h__dep__incl.map @@ -1,11 +1,11 @@ base referer -rect $users_8cpp-source.html 407,83 487,109 -rect $users_8h-source.html 144,260 208,287 -rect $commands_8h-source.html 257,57 356,84 +rect $users_8cpp-source.html 665,311 745,337 +rect $users_8h-source.html 144,285 208,312 +rect $commands_8h-source.html 257,108 356,135 +rect $cull__list_8h-source.html 268,159 345,185 rect $globals_8h-source.html 269,209 344,236 -rect $typedefs_8h-source.html 404,235 489,261 -rect $inspircd_8h-source.html 267,108 347,135 -rect $cull__list_8h-source.html 268,311 345,337 -rect $message_8h-source.html 264,361 349,388 +rect $typedefs_8h-source.html 532,260 617,287 +rect $inspircd_8h-source.html 404,361 484,388 rect $mode_8h-source.html 273,412 340,439 -rect $xline_8h-source.html 276,463 337,489 +rect $message_8h-source.html 264,463 349,489 +rect $xline_8h-source.html 276,513 337,540 diff --git a/docs/module-doc/channels_8h__dep__incl.md5 b/docs/module-doc/channels_8h__dep__incl.md5 index 2578e8764..d9289d4a0 100644 --- a/docs/module-doc/channels_8h__dep__incl.md5 +++ b/docs/module-doc/channels_8h__dep__incl.md5 @@ -1 +1 @@ -de274c87a015c43131b3ccf72e93a260 \ No newline at end of file +0f9059d2ac5956aa247c0791f634c13e \ No newline at end of file diff --git a/docs/module-doc/classAdmin-members.html b/docs/module-doc/classAdmin-members.html index 3771e8c94..bef9c92e2 100644 --- a/docs/module-doc/classAdmin-members.html +++ b/docs/module-doc/classAdmin-members.html @@ -13,7 +13,7 @@ NameAdmin NickAdmin ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classAdmin.html b/docs/module-doc/classAdmin.html index a6f132e7d..9662e530c 100644 --- a/docs/module-doc/classAdmin.html +++ b/docs/module-doc/classAdmin.html @@ -38,7 +38,7 @@ It is constructed by class Server, and

-Definition at line 125 of file modules.h.


Constructor & Destructor Documentation

+Definition at line 143 of file modules.h.

Constructor & Destructor Documentation

@@ -81,7 +81,7 @@ Definition at line 125 of

-Definition at line 163 of file modules.cpp.

00163 : Name(name), Email(email), Nick(nick) { };
+Definition at line 162 of file modules.cpp.
00162 : Name(name), Email(email), Nick(nick) { };
 

@@ -110,7 +110,7 @@ Definition at line 163

-Definition at line 128 of file modules.h. +Definition at line 146 of file modules.h.

@@ -135,7 +135,7 @@ Definition at line 128 of

-Definition at line 128 of file modules.h. +Definition at line 146 of file modules.h.

@@ -160,12 +160,12 @@ Definition at line 128 of

-Definition at line 128 of file modules.h. +Definition at line 146 of file modules.h.


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classBanItem-members.html b/docs/module-doc/classBanItem-members.html index c7d9059a9..68e1daf96 100644 --- a/docs/module-doc/classBanItem-members.html +++ b/docs/module-doc/classBanItem-members.html @@ -14,7 +14,7 @@ set_timeHostItem ~classbase()classbase [inline] ~HostItem()HostItem [inline, virtual] -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classBanItem.html b/docs/module-doc/classBanItem.html index 06957a4be..0712af481 100644 --- a/docs/module-doc/classBanItem.html +++ b/docs/module-doc/classBanItem.html @@ -30,7 +30,7 @@ A subclass of HostItem designed to h

Definition at line 54 of file channels.h.


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classBoolSet-members.html b/docs/module-doc/classBoolSet-members.html index 66273bbab..a5b2bf973 100644 --- a/docs/module-doc/classBoolSet-members.html +++ b/docs/module-doc/classBoolSet-members.html @@ -17,7 +17,7 @@ operator|(BoolSet other)BoolSet Set(int number)BoolSet Unset(int number)BoolSet -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classBoolSet.html b/docs/module-doc/classBoolSet.html index b88883b5e..a6f782227 100644 --- a/docs/module-doc/classBoolSet.html +++ b/docs/module-doc/classBoolSet.html @@ -405,7 +405,7 @@ Definition at line 106 of fi
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classConfigReader-members.html b/docs/module-doc/classConfigReader-members.html index 2dfac88f7..2704d05d5 100644 --- a/docs/module-doc/classConfigReader-members.html +++ b/docs/module-doc/classConfigReader-members.html @@ -24,7 +24,7 @@ Verify()ConfigReader ~classbase()classbase [inline] ~ConfigReader()ConfigReader -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classConfigReader.html b/docs/module-doc/classConfigReader.html index 88ea934ac..c4d459fb9 100644 --- a/docs/module-doc/classConfigReader.html +++ b/docs/module-doc/classConfigReader.html @@ -73,7 +73,7 @@ It may either be instantiated with one parameter or none. Constructing the class

-Definition at line 1532 of file modules.h.


Constructor & Destructor Documentation

+Definition at line 1550 of file modules.h.

Constructor & Destructor Documentation

@@ -102,16 +102,16 @@ Default constructor.

This constructor initialises the ConfigReader class to read the inspircd.conf file as specified when running ./configure.

-Definition at line 736 of file modules.cpp. +Definition at line 735 of file modules.cpp.

-References cache, ServerConfig::ClearStack(), CONF_FILE_NOT_FOUND, error, errorlog, ServerConfig::LoadConf(), and readerror.

00737 {
-00738         Config->ClearStack();
-00739         this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
-00740         this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
-00741         this->readerror = Config->LoadConf(CONFIG_FILE,this->cache,this->errorlog);
-00742         if (!this->readerror)
-00743                 this->error = CONF_FILE_NOT_FOUND;
-00744 }
+References cache, ServerConfig::ClearStack(), CONF_FILE_NOT_FOUND, error, errorlog, ServerConfig::LoadConf(), and readerror.
00736 {
+00737         Config->ClearStack();
+00738         this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
+00739         this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
+00740         this->readerror = Config->LoadConf(CONFIG_FILE,this->cache,this->errorlog);
+00741         if (!this->readerror)
+00742                 this->error = CONF_FILE_NOT_FOUND;
+00743 }
 

@@ -146,16 +146,16 @@ Overloaded constructor.

This constructor initialises the ConfigReader class to read a user-specified config file

-Definition at line 756 of file modules.cpp. +Definition at line 755 of file modules.cpp.

-References cache, ServerConfig::ClearStack(), CONF_FILE_NOT_FOUND, error, errorlog, ServerConfig::LoadConf(), and readerror.

00757 {
-00758         Config->ClearStack();
-00759         this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
-00760         this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
-00761         this->readerror = Config->LoadConf(filename.c_str(),this->cache,this->errorlog);
-00762         if (!this->readerror)
-00763                 this->error = CONF_FILE_NOT_FOUND;
-00764 };
+References cache, ServerConfig::ClearStack(), CONF_FILE_NOT_FOUND, error, errorlog, ServerConfig::LoadConf(), and readerror.
00756 {
+00757         Config->ClearStack();
+00758         this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out);
+00759         this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out);
+00760         this->readerror = Config->LoadConf(filename.c_str(),this->cache,this->errorlog);
+00761         if (!this->readerror)
+00762                 this->error = CONF_FILE_NOT_FOUND;
+00763 };
 

@@ -189,14 +189,14 @@ Default destructor.

This method destroys the ConfigReader class.

-Definition at line 747 of file modules.cpp. +Definition at line 746 of file modules.cpp.

-References cache, and errorlog.

00748 {
-00749         if (this->cache)
-00750                 delete this->cache;
-00751         if (this->errorlog)
-00752                 delete this->errorlog;
-00753 }
+References cache, and errorlog.
00747 {
+00748         if (this->cache)
+00749                 delete this->cache;
+00750         if (this->errorlog)
+00751                 delete this->errorlog;
+00752 }
 

@@ -241,38 +241,38 @@ Dumps the list of errors in a config file to an output location.

If bail is true, then the program will abort. If bail is false and user points to a valid user record, the error report will be spooled to the given user by means of NOTICE. if bool is false AND user is false, the error report will be spooled to all opers by means of a NOTICE to all opers.

-Definition at line 835 of file modules.cpp. -

-References errorlog, connection::fd, userrec::nick, WriteOpers(), and WriteServ().

00836 {
-00837         if (bail)
-00838         {
-00839                 printf("There were errors in your configuration:\n%s",errorlog->str().c_str());
-00840                 exit(0);
-00841         }
-00842         else
-00843         {
-00844                 char dataline[1024];
-00845                 if (user)
-00846                 {
-00847                         WriteServ(user->fd,"NOTICE %s :There were errors in the configuration file:",user->nick);
-00848                         while (!errorlog->eof())
-00849                         {
-00850                                 errorlog->getline(dataline,1024);
-00851                                 WriteServ(user->fd,"NOTICE %s :%s",user->nick,dataline);
-00852                         }
-00853                 }
-00854                 else
-00855                 {
-00856                         WriteOpers("There were errors in the configuration file:",user->nick);
-00857                         while (!errorlog->eof())
-00858                         {
-00859                                 errorlog->getline(dataline,1024);
-00860                                 WriteOpers(dataline);
-00861                         }
-00862                 }
-00863                 return;
-00864         }
-00865 }
+Definition at line 834 of file modules.cpp.
+

+References errorlog, connection::fd, userrec::nick, WriteOpers(), and WriteServ().

00835 {
+00836         if (bail)
+00837         {
+00838                 printf("There were errors in your configuration:\n%s",errorlog->str().c_str());
+00839                 exit(0);
+00840         }
+00841         else
+00842         {
+00843                 char dataline[1024];
+00844                 if (user)
+00845                 {
+00846                         WriteServ(user->fd,"NOTICE %s :There were errors in the configuration file:",user->nick);
+00847                         while (!errorlog->eof())
+00848                         {
+00849                                 errorlog->getline(dataline,1024);
+00850                                 WriteServ(user->fd,"NOTICE %s :%s",user->nick,dataline);
+00851                         }
+00852                 }
+00853                 else
+00854                 {
+00855                         WriteOpers("There were errors in the configuration file:",user->nick);
+00856                         while (!errorlog->eof())
+00857                         {
+00858                                 errorlog->getline(dataline,1024);
+00859                                 WriteOpers(dataline);
+00860                         }
+00861                 }
+00862                 return;
+00863         }
+00864 }
 

@@ -307,11 +307,11 @@ Counts the number of times a given tag appears in the config file.

This method counts the number of times a tag appears in a config file, for use where there are several tags of the same kind, e.g. with opers and connect types. It can be used with the index value of ConfigReader::ReadValue to loop through all copies of a multiple instance tag.

-Definition at line 868 of file modules.cpp. +Definition at line 867 of file modules.cpp.

-References cache, and ServerConfig::EnumConf().

00869 {
-00870         return Config->EnumConf(cache,tag.c_str());
-00871 }
+References cache, and ServerConfig::EnumConf().
00868 {
+00869         return Config->EnumConf(cache,tag.c_str());
+00870 }
 

@@ -355,11 +355,11 @@ Returns the number of items within a tag.

For example if the tag was <test tag="blah" data="foo"> then this function would return 2. Spaces and newlines both qualify as valid seperators between values.

-Definition at line 873 of file modules.cpp. +Definition at line 872 of file modules.cpp.

-References cache, and ServerConfig::EnumValues().

00874 {
-00875         return Config->EnumValues(cache, tag.c_str(), index);
-00876 }
+References cache, and ServerConfig::EnumValues().
00873 {
+00874         return Config->EnumValues(cache, tag.c_str(), index);
+00875 }
 

@@ -393,13 +393,13 @@ Returns the last error to occur.

Valid errors can be found by looking in modules.h. Any nonzero value indicates an error condition. A call to GetError() resets the error flag back to 0.

-Definition at line 828 of file modules.cpp. +Definition at line 827 of file modules.cpp.

-References error.

00829 {
-00830         long olderr = this->error;
-00831         this->error = 0;
-00832         return olderr;
-00833 }
+References error.
00828 {
+00829         long olderr = this->error;
+00830         this->error = 0;
+00831         return olderr;
+00832 }
 

@@ -449,23 +449,23 @@ Retrieves a boolean value from the config file.

This method retrieves a boolean value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. The values "1", "yes" and "true" in the config file count as true to ReadFlag, and any other value counts as false.

-Definition at line 782 of file modules.cpp. -

-References cache, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().

00783 {
-00784         char val[MAXBUF];
-00785         char t[MAXBUF];
-00786         char n[MAXBUF];
-00787         strlcpy(t,tag.c_str(),MAXBUF);
-00788         strlcpy(n,name.c_str(),MAXBUF);
-00789         int res = Config->ReadConf(cache,t,n,index,val);
-00790         if (!res)
-00791         {
-00792                 this->error = CONF_VALUE_NOT_FOUND;
-00793                 return false;
-00794         }
-00795         std::string s = val;
-00796         return ((s == "yes") || (s == "YES") || (s == "true") || (s == "TRUE") || (s == "1"));
-00797 }
+Definition at line 781 of file modules.cpp.
+

+References cache, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().

00782 {
+00783         char val[MAXBUF];
+00784         char t[MAXBUF];
+00785         char n[MAXBUF];
+00786         strlcpy(t,tag.c_str(),MAXBUF);
+00787         strlcpy(n,name.c_str(),MAXBUF);
+00788         int res = Config->ReadConf(cache,t,n,index,val);
+00789         if (!res)
+00790         {
+00791                 this->error = CONF_VALUE_NOT_FOUND;
+00792                 return false;
+00793         }
+00794         std::string s = val;
+00795         return ((s == "yes") || (s == "YES") || (s == "true") || (s == "TRUE") || (s == "1"));
+00796 }
 

@@ -521,35 +521,35 @@ Retrieves an integer value from the config file.

This method retrieves an integer value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve. Any invalid integer values in the tag will cause the objects error value to be set, and any call to GetError() will return CONF_INVALID_NUMBER to be returned. needs_unsigned is set if the number must be unsigned. If a signed number is placed into a tag which is specified unsigned, 0 will be returned and GetError() will return CONF_NOT_UNSIGNED

-Definition at line 799 of file modules.cpp. -

-References cache, CONF_NOT_A_NUMBER, CONF_NOT_UNSIGNED, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().

00800 {
-00801         char val[MAXBUF];
-00802         char t[MAXBUF];
-00803         char n[MAXBUF];
-00804         strlcpy(t,tag.c_str(),MAXBUF);
-00805         strlcpy(n,name.c_str(),MAXBUF);
-00806         int res = Config->ReadConf(cache,t,n,index,val);
-00807         if (!res)
-00808         {
-00809                 this->error = CONF_VALUE_NOT_FOUND;
-00810                 return 0;
-00811         }
-00812         for (unsigned int i = 0; i < strlen(val); i++)
-00813         {
-00814                 if (!isdigit(val[i]))
-00815                 {
-00816                         this->error = CONF_NOT_A_NUMBER;
-00817                         return 0;
-00818                 }
-00819         }
-00820         if ((needs_unsigned) && (atoi(val)<0))
-00821         {
-00822                 this->error = CONF_NOT_UNSIGNED;
-00823                 return 0;
-00824         }
-00825         return atoi(val);
-00826 }
+Definition at line 798 of file modules.cpp.
+

+References cache, CONF_NOT_A_NUMBER, CONF_NOT_UNSIGNED, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().

00799 {
+00800         char val[MAXBUF];
+00801         char t[MAXBUF];
+00802         char n[MAXBUF];
+00803         strlcpy(t,tag.c_str(),MAXBUF);
+00804         strlcpy(n,name.c_str(),MAXBUF);
+00805         int res = Config->ReadConf(cache,t,n,index,val);
+00806         if (!res)
+00807         {
+00808                 this->error = CONF_VALUE_NOT_FOUND;
+00809                 return 0;
+00810         }
+00811         for (unsigned int i = 0; i < strlen(val); i++)
+00812         {
+00813                 if (!isdigit(val[i]))
+00814                 {
+00815                         this->error = CONF_NOT_A_NUMBER;
+00816                         return 0;
+00817                 }
+00818         }
+00819         if ((needs_unsigned) && (atoi(val)<0))
+00820         {
+00821                 this->error = CONF_NOT_UNSIGNED;
+00822                 return 0;
+00823         }
+00824         return atoi(val);
+00825 }
 

@@ -599,22 +599,22 @@ Retrieves a value from the config file.

This method retrieves a value from the config file. Where multiple copies of the tag exist in the config file, index indicates which of the values to retrieve.

-Definition at line 766 of file modules.cpp. -

-References cache, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().

00767 {
-00768         char val[MAXBUF];
-00769         char t[MAXBUF];
-00770         char n[MAXBUF];
-00771         strlcpy(t,tag.c_str(),MAXBUF);
-00772         strlcpy(n,name.c_str(),MAXBUF);
-00773         int res = Config->ReadConf(cache,t,n,index,val);
-00774         if (!res)
-00775         {
-00776                 this->error = CONF_VALUE_NOT_FOUND;
-00777                 return "";
-00778         }
-00779         return val;
-00780 }
+Definition at line 765 of file modules.cpp.
+

+References cache, CONF_VALUE_NOT_FOUND, error, and ServerConfig::ReadConf().

00766 {
+00767         char val[MAXBUF];
+00768         char t[MAXBUF];
+00769         char n[MAXBUF];
+00770         strlcpy(t,tag.c_str(),MAXBUF);
+00771         strlcpy(n,name.c_str(),MAXBUF);
+00772         int res = Config->ReadConf(cache,t,n,index,val);
+00773         if (!res)
+00774         {
+00775                 this->error = CONF_VALUE_NOT_FOUND;
+00776                 return "";
+00777         }
+00778         return val;
+00779 }
 

@@ -648,11 +648,11 @@ Returns true if a config file is valid.

This method is partially implemented and will only return false if the config file does not exist or could not be opened.

-Definition at line 878 of file modules.cpp. +Definition at line 877 of file modules.cpp.

-References readerror.

00879 {
-00880         return this->readerror;
-00881 }
+References readerror.
00878 {
+00879         return this->readerror;
+00880 }
 

@@ -683,9 +683,9 @@ The contents of the configuration file This protected member should never be acc

It will contain a pointer to the configuration file data with unneeded data (such as comments) stripped from it.

-Definition at line 1540 of file modules.h. +Definition at line 1558 of file modules.h.

-Referenced by ConfigReader(), Enumerate(), EnumerateValues(), ReadFlag(), ReadInteger(), ReadValue(), and ~ConfigReader(). +Referenced by ConfigReader(), Enumerate(), EnumerateValues(), ReadFlag(), ReadInteger(), ReadValue(), and ~ConfigReader().

@@ -710,9 +710,9 @@ Referenced by ConfigReader(

-Definition at line 1545 of file modules.h. +Definition at line 1563 of file modules.h.

-Referenced by ConfigReader(), GetError(), ReadFlag(), ReadInteger(), and ReadValue(). +Referenced by ConfigReader(), GetError(), ReadFlag(), ReadInteger(), and ReadValue().

@@ -737,9 +737,9 @@ Referenced by ConfigReader(

-Definition at line 1541 of file modules.h. +Definition at line 1559 of file modules.h.

-Referenced by ConfigReader(), DumpErrors(), and ~ConfigReader(). +Referenced by ConfigReader(), DumpErrors(), and ~ConfigReader().

@@ -766,14 +766,14 @@ Used to store errors.

-Definition at line 1544 of file modules.h. +Definition at line 1562 of file modules.h.

-Referenced by ConfigReader(), and Verify(). +Referenced by ConfigReader(), and Verify().


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classConnectClass-members.html b/docs/module-doc/classConnectClass-members.html index 611aad790..8c1fc24c2 100644 --- a/docs/module-doc/classConnectClass-members.html +++ b/docs/module-doc/classConnectClass-members.html @@ -19,7 +19,7 @@ thresholdConnectClass typeConnectClass ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classConnectClass.html b/docs/module-doc/classConnectClass.html index 181775c1e..16a2a19a1 100644 --- a/docs/module-doc/classConnectClass.html +++ b/docs/module-doc/classConnectClass.html @@ -57,7 +57,7 @@ Holds information relevent to <connect allow> and <connect deny> tag

-Definition at line 48 of file users.h.


Constructor & Destructor Documentation

+Definition at line 52 of file users.h.

Constructor & Destructor Documentation

@@ -84,18 +84,18 @@ Definition at line 48 of fi

-Definition at line 82 of file users.h. -

-References flood, host, pass, pingtime, recvqmax, registration_timeout, sendqmax, and threshold.

00083         {
-00084                 registration_timeout = 0;
-00085                 flood = 0;
-00086                 pingtime = 0;
-00087                 threshold = 0;
-00088                 sendqmax = 0;
-00089                 recvqmax = 0;
-00090                 strlcpy(host,"",MAXBUF);
-00091                 strlcpy(pass,"",MAXBUF);
-00092         }
+Definition at line 86 of file users.h.
+

+References flood, host, pass, pingtime, recvqmax, registration_timeout, sendqmax, and threshold.

00087         {
+00088                 registration_timeout = 0;
+00089                 flood = 0;
+00090                 pingtime = 0;
+00091                 threshold = 0;
+00092                 sendqmax = 0;
+00093                 recvqmax = 0;
+00094                 strlcpy(host,"",MAXBUF);
+00095                 strlcpy(pass,"",MAXBUF);
+00096         }
 

@@ -126,9 +126,9 @@ Number of lines in buffer before excess flood is triggered.

-Definition at line 59 of file users.h. +Definition at line 63 of file users.h.

-Referenced by ConnectClass(). +Referenced by ConnectClass().

@@ -155,9 +155,9 @@ Host mask for this line.

-Definition at line 62 of file users.h. +Definition at line 66 of file users.h.

-Referenced by ConnectClass(). +Referenced by ConnectClass().

@@ -184,9 +184,9 @@ Referenced by ConnectClass()

-Definition at line 68 of file users.h. +Definition at line 72 of file users.h.

-Referenced by ConnectClass(). +Referenced by ConnectClass().

@@ -213,9 +213,9 @@ Number of seconds between pings for this line.

-Definition at line 65 of file users.h. +Definition at line 69 of file users.h.

-Referenced by ConnectClass(). +Referenced by ConnectClass().

@@ -242,9 +242,9 @@ Maximum size of recvq for users in this class (bytes).

-Definition at line 80 of file users.h. +Definition at line 84 of file users.h.

-Referenced by ConnectClass(). +Referenced by ConnectClass().

@@ -271,9 +271,9 @@ Max time to register the connection in seconds.

-Definition at line 56 of file users.h. +Definition at line 60 of file users.h.

-Referenced by ConnectClass(). +Referenced by ConnectClass().

@@ -300,9 +300,9 @@ Maximum size of sendq for users in this class (bytes).

-Definition at line 76 of file users.h. +Definition at line 80 of file users.h.

-Referenced by ConnectClass(). +Referenced by ConnectClass().

@@ -329,9 +329,9 @@ Threshold value for flood disconnect.

-Definition at line 72 of file users.h. +Definition at line 76 of file users.h.

-Referenced by ConnectClass(). +Referenced by ConnectClass().

@@ -358,12 +358,12 @@ Type of line, either CC_ALLOW or CC_DENY.

-Definition at line 53 of file users.h. +Definition at line 57 of file users.h.


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classCullItem-members.html b/docs/module-doc/classCullItem-members.html index caf670396..60281b373 100644 --- a/docs/module-doc/classCullItem-members.html +++ b/docs/module-doc/classCullItem-members.html @@ -11,7 +11,7 @@ GetUser()CullItem reasonCullItem [private] userCullItem [private] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classCullItem.html b/docs/module-doc/classCullItem.html index 238f45a7a..541769237 100644 --- a/docs/module-doc/classCullItem.html +++ b/docs/module-doc/classCullItem.html @@ -201,7 +201,7 @@ Definition at line 42
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classCullList-members.html b/docs/module-doc/classCullList-members.html index 2fdf261b6..0f08fc877 100644 --- a/docs/module-doc/classCullList-members.html +++ b/docs/module-doc/classCullList-members.html @@ -11,7 +11,7 @@ CullList()CullList exemptCullList [private] listCullList [private] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classCullList.html b/docs/module-doc/classCullList.html index 23176ef93..c06db2050 100644 --- a/docs/module-doc/classCullList.html +++ b/docs/module-doc/classCullList.html @@ -201,7 +201,7 @@ Definition at line 82
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classDNS-members.html b/docs/module-doc/classDNS-members.html index c69edea68..3bc4ec782 100644 --- a/docs/module-doc/classDNS-members.html +++ b/docs/module-doc/classDNS-members.html @@ -36,7 +36,7 @@ SetNS(std::string dnsserver)DNS tDNS [private] ~DNS()DNS -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classDNS.html b/docs/module-doc/classDNS.html index c9ce09783..df244b836 100644 --- a/docs/module-doc/classDNS.html +++ b/docs/module-doc/classDNS.html @@ -961,7 +961,7 @@ Definition at line 41 of file
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classELine-members.html b/docs/module-doc/classELine-members.html index bae6a2915..c5b8dbfb4 100644 --- a/docs/module-doc/classELine-members.html +++ b/docs/module-doc/classELine-members.html @@ -15,7 +15,7 @@ set_timeXLine sourceXLine ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classELine.html b/docs/module-doc/classELine.html index 40d87e692..66aa9f5e0 100644 --- a/docs/module-doc/classELine.html +++ b/docs/module-doc/classELine.html @@ -59,7 +59,7 @@ Definition at line 93 of fi
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classEvent-members.html b/docs/module-doc/classEvent-members.html index c69a63474..1a25d8f6d 100644 --- a/docs/module-doc/classEvent-members.html +++ b/docs/module-doc/classEvent-members.html @@ -18,7 +18,7 @@ sourceEvent [protected] ~classbase()classbase [inline] ~ModuleMessage()ModuleMessage [inline, virtual] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classEvent.html b/docs/module-doc/classEvent.html index 56a41deab..a24c1a04d 100644 --- a/docs/module-doc/classEvent.html +++ b/docs/module-doc/classEvent.html @@ -57,7 +57,7 @@ When the class is properly instantiated it may be sent to all modules using the

-Definition at line 197 of file modules.h.


Constructor & Destructor Documentation

+Definition at line 215 of file modules.h.

Constructor & Destructor Documentation

@@ -102,7 +102,7 @@ Create a new Event.

-Definition at line 194 of file modules.cpp.

00194 : data(anydata), source(src), id(eventid) { };
+Definition at line 193 of file modules.cpp.
00193 : data(anydata), source(src), id(eventid) { };
 

@@ -137,11 +137,11 @@ Get the Event data.

-Definition at line 196 of file modules.cpp. +Definition at line 195 of file modules.cpp.

-References data.

00197 {
-00198         return this->data;
-00199 }
+References data.
00196 {
+00197         return this->data;
+00198 }
 

@@ -175,11 +175,11 @@ Get the event ID.

Use this to determine the event type for safe casting of the data

-Definition at line 212 of file modules.cpp. +Definition at line 211 of file modules.cpp.

-References id.

00213 {
-00214         return this->id;
-00215 }
+References id.
00212 {
+00213         return this->id;
+00214 }
 

@@ -213,11 +213,11 @@ Get the event Source.

-Definition at line 201 of file modules.cpp. +Definition at line 200 of file modules.cpp.

-References source.

00202 {
-00203         return this->source;
-00204 }
+References source.
00201 {
+00202         return this->source;
+00203 }
 

@@ -253,12 +253,12 @@ The return result of an Event::S

Implements ModuleMessage.

-Definition at line 206 of file modules.cpp. +Definition at line 205 of file modules.cpp.

-References FOREACH_MOD.

00207 {
-00208         FOREACH_MOD OnEvent(this);
-00209         return NULL;
-00210 }
+References FOREACH_MOD.
00206 {
+00207         FOREACH_MOD OnEvent(this);
+00208         return NULL;
+00209 }
 

@@ -289,9 +289,9 @@ This member holds a pointer to arbitary data set by the emitter of the message.

-Definition at line 202 of file modules.h. +Definition at line 220 of file modules.h.

-Referenced by GetData(). +Referenced by GetData().

@@ -318,9 +318,9 @@ The event identifier.

This is arbitary text which should be used to distinguish one type of event from another.

-Definition at line 211 of file modules.h. +Definition at line 229 of file modules.h.

-Referenced by GetEventID(). +Referenced by GetEventID().

@@ -347,14 +347,14 @@ This is a pointer to the sender of the message, which can be used to directly tr

-Definition at line 206 of file modules.h. +Definition at line 224 of file modules.h.

-Referenced by GetSource(). +Referenced by GetSource().


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classExemptItem-members.html b/docs/module-doc/classExemptItem-members.html index 53aa957e0..60077cf32 100644 --- a/docs/module-doc/classExemptItem-members.html +++ b/docs/module-doc/classExemptItem-members.html @@ -14,7 +14,7 @@ set_timeHostItem ~classbase()classbase [inline] ~HostItem()HostItem [inline, virtual] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classExemptItem.html b/docs/module-doc/classExemptItem.html index 289ab1249..882fec433 100644 --- a/docs/module-doc/classExemptItem.html +++ b/docs/module-doc/classExemptItem.html @@ -30,7 +30,7 @@ A subclass of HostItem designed to h

Definition at line 62 of file channels.h.


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classExtMode-members.html b/docs/module-doc/classExtMode-members.html index cacf87d7c..b59f12b91 100644 --- a/docs/module-doc/classExtMode-members.html +++ b/docs/module-doc/classExtMode-members.html @@ -16,7 +16,7 @@ params_when_onExtMode typeExtMode ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classExtMode.html b/docs/module-doc/classExtMode.html index 8b50f1182..43f8ce478 100644 --- a/docs/module-doc/classExtMode.html +++ b/docs/module-doc/classExtMode.html @@ -44,7 +44,7 @@ Used internally by modules.cpp

-Definition at line 236 of file modules.h.


Constructor & Destructor Documentation

+Definition at line 254 of file modules.h.

Constructor & Destructor Documentation

@@ -99,7 +99,7 @@ Definition at line 236 of

-Definition at line 245 of file modules.h.

00245 : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { };
+Definition at line 263 of file modules.h.
00263 : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { };
 

@@ -128,7 +128,7 @@ Definition at line 245 of

-Definition at line 244 of file modules.h. +Definition at line 262 of file modules.h.

@@ -153,7 +153,7 @@ Definition at line 244 of

-Definition at line 239 of file modules.h. +Definition at line 257 of file modules.h.

@@ -178,7 +178,7 @@ Definition at line 239 of

-Definition at line 241 of file modules.h. +Definition at line 259 of file modules.h.

@@ -203,7 +203,7 @@ Definition at line 241 of

-Definition at line 243 of file modules.h. +Definition at line 261 of file modules.h.

@@ -228,7 +228,7 @@ Definition at line 243 of

-Definition at line 242 of file modules.h. +Definition at line 260 of file modules.h.

@@ -253,12 +253,12 @@ Definition at line 242 of

-Definition at line 240 of file modules.h. +Definition at line 258 of file modules.h.


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classExtensible-members.html b/docs/module-doc/classExtensible-members.html index b5b8b6f26..1d123e935 100644 --- a/docs/module-doc/classExtensible-members.html +++ b/docs/module-doc/classExtensible-members.html @@ -14,7 +14,7 @@ GetExtList(std::deque< std::string > &list)Extensible Shrink(std::string key)Extensible ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classExtensible.html b/docs/module-doc/classExtensible.html index ada843501..7c0c14d12 100644 --- a/docs/module-doc/classExtensible.html +++ b/docs/module-doc/classExtensible.html @@ -13,10 +13,9 @@ Inheritance diagram for Extensible:

Inheritance graph
- - - - + + +
[legend]
Collaboration diagram for Extensible:

Collaboration graph
@@ -236,7 +235,7 @@ Definition at line 55 of fil
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classExtensible__inherit__graph.map b/docs/module-doc/classExtensible__inherit__graph.map index 2b223b938..739ce8fc6 100644 --- a/docs/module-doc/classExtensible__inherit__graph.map +++ b/docs/module-doc/classExtensible__inherit__graph.map @@ -1,6 +1,5 @@ base referer rect $classchanrec.html 7,156 76,183 -rect $classcommand__t.html 100,156 191,183 -rect $classconnection.html 215,156 300,183 -rect $classclassbase.html 106,7 186,33 -rect $classuserrec.html 224,231 291,257 +rect $classconnection.html 100,156 185,183 +rect $classclassbase.html 52,7 132,33 +rect $classuserrec.html 109,231 176,257 diff --git a/docs/module-doc/classExtensible__inherit__graph.md5 b/docs/module-doc/classExtensible__inherit__graph.md5 index fe7736291..461684372 100644 --- a/docs/module-doc/classExtensible__inherit__graph.md5 +++ b/docs/module-doc/classExtensible__inherit__graph.md5 @@ -1 +1 @@ -09c2299ecc297b4760a076747177ec6d \ No newline at end of file +4a03bd45cd4754f0edff4e8a3bc20f54 \ No newline at end of file diff --git a/docs/module-doc/classFileReader-members.html b/docs/module-doc/classFileReader-members.html index 1ab48f288..fa06188ed 100644 --- a/docs/module-doc/classFileReader-members.html +++ b/docs/module-doc/classFileReader-members.html @@ -17,7 +17,7 @@ LoadFile(std::string filename)FileReader ~classbase()classbase [inline] ~FileReader()FileReader -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classFileReader.html b/docs/module-doc/classFileReader.html index e5a725a26..1a03b0cc1 100644 --- a/docs/module-doc/classFileReader.html +++ b/docs/module-doc/classFileReader.html @@ -53,7 +53,7 @@ This class contains methods for read-only manipulation of a text file in memory.

-Definition at line 1621 of file modules.h.


Constructor & Destructor Documentation

+Definition at line 1639 of file modules.h.

Constructor & Destructor Documentation

@@ -82,8 +82,8 @@ Default constructor.

This method does not load any file into memory, you must use the LoadFile method after constructing the class this way.

-Definition at line 891 of file modules.cpp.

00892 {
-00893 }
+Definition at line 890 of file modules.cpp.
00891 {
+00892 }
 

@@ -118,13 +118,13 @@ Secondary constructor.

This method initialises the class with a file loaded into it ready for GetLine and and other methods to be called. If the file could not be loaded, FileReader::FileSize returns 0.

-Definition at line 884 of file modules.cpp. +Definition at line 883 of file modules.cpp.

-References fc, and readfile().

00885 {
-00886         file_cache c;
-00887         readfile(c,filename.c_str());
-00888         this->fc = c;
-00889 }
+References fc, and readfile().
00884 {
+00885         file_cache c;
+00886         readfile(c,filename.c_str());
+00887         this->fc = c;
+00888 }
 

@@ -158,8 +158,8 @@ Default destructor.

This deletes the memory allocated to the file.

-Definition at line 903 of file modules.cpp.

00904 {
-00905 }
+Definition at line 902 of file modules.cpp.
00903 {
+00904 }
 

@@ -194,18 +194,18 @@ Returns true if the file exists This function will return false if the file coul

-Definition at line 907 of file modules.cpp. -

-References fc.

00908 {
-00909         if (fc.size() == 0)
-00910         {
-00911                 return(false);
-00912         }
-00913         else
-00914         {
-00915                 return(true);
-00916         }
-00917 }
+Definition at line 906 of file modules.cpp.
+

+References fc.

00907 {
+00908         if (fc.size() == 0)
+00909         {
+00910                 return(false);
+00911         }
+00912         else
+00913         {
+00914                 return(true);
+00915         }
+00916 }
 

@@ -239,11 +239,11 @@ Returns the size of the file in lines.

This method returns the number of lines in the read file. If it is 0, no lines have been read into memory, either because the file is empty or it does not exist, or cannot be opened due to permission problems.

-Definition at line 926 of file modules.cpp. +Definition at line 925 of file modules.cpp.

-References fc.

00927 {
-00928         return fc.size();
-00929 }
+References fc.
00926 {
+00927         return fc.size();
+00928 }
 

@@ -278,13 +278,13 @@ Retrieve one line from the file.

This method retrieves one line from the text file. If an empty non-NULL string is returned, the index was out of bounds, or the line had no data on it.

-Definition at line 919 of file modules.cpp. +Definition at line 918 of file modules.cpp.

-References fc.

00920 {
-00921         if ((x<0) || ((unsigned)x>fc.size()))
-00922                 return "";
-00923         return fc[x];
-00924 }
+References fc.
00919 {
+00920         if ((x<0) || ((unsigned)x>fc.size()))
+00921                 return "";
+00922         return fc[x];
+00923 }
 

@@ -319,13 +319,13 @@ Used to load a file.

This method loads a file into the class ready for GetLine and and other methods to be called. If the file could not be loaded, FileReader::FileSize returns 0.

-Definition at line 895 of file modules.cpp. +Definition at line 894 of file modules.cpp.

-References fc, and readfile().

00896 {
-00897         file_cache c;
-00898         readfile(c,filename.c_str());
-00899         this->fc = c;
-00900 }
+References fc, and readfile().
00895 {
+00896         file_cache c;
+00897         readfile(c,filename.c_str());
+00898         this->fc = c;
+00899 }
 

@@ -354,14 +354,14 @@ References fc, and

-Definition at line 1623 of file modules.h. +Definition at line 1641 of file modules.h.

-Referenced by Exists(), FileReader(), FileSize(), GetLine(), and LoadFile(). +Referenced by Exists(), FileReader(), FileSize(), GetLine(), and LoadFile().


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classGLine-members.html b/docs/module-doc/classGLine-members.html index 7c08537db..905169ec6 100644 --- a/docs/module-doc/classGLine-members.html +++ b/docs/module-doc/classGLine-members.html @@ -15,7 +15,7 @@ set_timeXLine sourceXLine ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classGLine.html b/docs/module-doc/classGLine.html index 1741041f4..2b60bc72a 100644 --- a/docs/module-doc/classGLine.html +++ b/docs/module-doc/classGLine.html @@ -62,7 +62,7 @@ Definition at line 84 of fi
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classHostItem-members.html b/docs/module-doc/classHostItem-members.html index 4ece9c4c0..5b1a97eb2 100644 --- a/docs/module-doc/classHostItem-members.html +++ b/docs/module-doc/classHostItem-members.html @@ -14,7 +14,7 @@ set_timeHostItem ~classbase()classbase [inline] ~HostItem()HostItem [inline, virtual] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classHostItem.html b/docs/module-doc/classHostItem.html index f1a09c4ef..e74e080b6 100644 --- a/docs/module-doc/classHostItem.html +++ b/docs/module-doc/classHostItem.html @@ -186,7 +186,7 @@ Definition at line 41 of
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classInspIRCd-members.html b/docs/module-doc/classInspIRCd-members.html index 5966c253a..e09871523 100644 --- a/docs/module-doc/classInspIRCd-members.html +++ b/docs/module-doc/classInspIRCd-members.html @@ -12,12 +12,17 @@ GetVersionString()InspIRCd InspIRCd(int argc, char **argv)InspIRCd LoadModule(const char *filename)InspIRCd + MakeLowerMap()InspIRCd + ModeGrokInspIRCd MODERRInspIRCd [private] ModuleError()InspIRCd + ParserInspIRCd Run()InspIRCd + SEInspIRCd startup_timeInspIRCd + statsInspIRCd UnloadModule(const char *filename)InspIRCd -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classInspIRCd.html b/docs/module-doc/classInspIRCd.html index 26e293181..da2a2b697 100644 --- a/docs/module-doc/classInspIRCd.html +++ b/docs/module-doc/classInspIRCd.html @@ -8,9 +8,16 @@

InspIRCd Class Reference

#include <inspircd.h>

Collaboration diagram for InspIRCd:

Collaboration graph
+ + + + +
[legend]
List of all members. + + @@ -28,6 +35,14 @@ Collaboration diagram for InspIRCd:


Public Attributes

+ + + + + + + + @@ -42,7 +57,7 @@ Collaboration diagram for InspIRCd:

95 of file inspircd.h.

Constructor & Destructor Documentation

+Definition at line 99 of file inspircd.h.

Constructor & Destructor Documentation


Public Member Functions

void MakeLowerMap ()
std::string GetRevision ()
std::string GetVersionString ()
time_t startup_time
ModeParserModeGrok
CommandParser * Parser
SocketEngineSE
serverstatsstats

Private Member Functions

void erase_factory (int j)
@@ -190,7 +205,7 @@ Definition at line 95 of

-Referenced by Server::GetVersion(). +Referenced by Server::GetVersion().

@@ -217,6 +232,33 @@ Referenced by Server::GetVe +

+ + + +

+ + + + +
+ + + + + + + + +
void InspIRCd::MakeLowerMap  ) 
+
+ + + + @@ -304,6 +346,33 @@ Referenced by Server::GetVe
+   + +


Member Data Documentation

+

+ + + + +
+ + + + +
ModeParser* InspIRCd::ModeGrok
+
+ + + + + +
+   + + +

+ +

+Definition at line 109 of file inspircd.h. +

+Referenced by Server::SendMode().

@@ -326,7 +395,61 @@ Referenced by Server::GetVe

-Definition at line 99 of file inspircd.h. +Definition at line 103 of file inspircd.h. +

+
+

+ + + + +
+ + + + +
CommandParser* InspIRCd::Parser
+
+ + + + + +
+   + + +

+ +

+Definition at line 110 of file inspircd.h. +

+Referenced by Server::AddCommand(), Server::CallCommandHandler(), force_nickchange(), and Server::IsValidModuleCommand().

+

+ + + + +
+ + + + +
SocketEngine* InspIRCd::SE
+
+ + + +
+   + + +

+ +

+Definition at line 111 of file inspircd.h. +

+Referenced by AddClient(), InspSocket::InspSocket(), kill_link(), kill_link_silent(), InspSocket::Poll(), and Server::UserToPseudo().

@@ -351,12 +474,39 @@ Definition at line 99 of

-Definition at line 104 of file inspircd.h. +Definition at line 108 of file inspircd.h. + + +

+ + + + +
+ + + + +
serverstats* InspIRCd::stats
+
+ + + +
+   + + +

+ +

+Definition at line 112 of file inspircd.h. +

+Referenced by force_nickchange(), and FullConnectUser().


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classInspIRCd__coll__graph.map b/docs/module-doc/classInspIRCd__coll__graph.map index 5a14779e7..058bc0d1f 100644 --- a/docs/module-doc/classInspIRCd__coll__graph.map +++ b/docs/module-doc/classInspIRCd__coll__graph.map @@ -1 +1,4 @@ base referer +rect $classSocketEngine.html 22,10 126,36 +rect $classserverstats.html 30,212 118,239 +rect $classModeParser.html 27,263 120,290 diff --git a/docs/module-doc/classInspIRCd__coll__graph.md5 b/docs/module-doc/classInspIRCd__coll__graph.md5 index 9b6b4f43b..f17fcfbb3 100644 --- a/docs/module-doc/classInspIRCd__coll__graph.md5 +++ b/docs/module-doc/classInspIRCd__coll__graph.md5 @@ -1 +1 @@ -cf2870df5188e9dd73f618305a399ded \ No newline at end of file +117342ac51fed621fabeb5e75c73aa1b \ No newline at end of file diff --git a/docs/module-doc/classInspSocket-members.html b/docs/module-doc/classInspSocket-members.html index a828ac31e..eb9a03aa7 100644 --- a/docs/module-doc/classInspSocket-members.html +++ b/docs/module-doc/classInspSocket-members.html @@ -8,14 +8,16 @@

InspSocket Member List

This is the complete list of members for InspSocket, including all inherited members.

+ + - + @@ -39,7 +41,7 @@ -
addrInspSocket [private]
addyInspSocket [private]
BufferInspSocket [private]
clientInspSocket [private]
Close()InspSocket [virtual]
fdInspSocket [private]
FlushWriteBuffer()InspSocket [private]
GetFd()InspSocket
GetIP()InspSocket
GetState()InspSocket
hostInspSocket [private]
ibufInspSocket [private]
ibufInspSocket [private]
InspSocket()InspSocket
InspSocket(int newfd, char *ip)InspSocket
InspSocket(std::string host, int port, bool listening, unsigned long maxtime)InspSocket
timeout_endInspSocket [private]
Write(std::string data)InspSocket [virtual]
~InspSocket()InspSocket [virtual]


Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classInspSocket.html b/docs/module-doc/classInspSocket.html index 315270d80..934175061 100644 --- a/docs/module-doc/classInspSocket.html +++ b/docs/module-doc/classInspSocket.html @@ -74,6 +74,10 @@ Collaboration diagram for InspSocket:

virtual ~InspSocket ()  The destructor may implicitly call OnClose(), and will close() and shutdown() the file descriptor used for this socket.
+

Private Member Functions

+void FlushWriteBuffer () + + Flushes the write buffer.

Private Attributes

int fd @@ -99,9 +103,12 @@ Collaboration diagram for InspSocket:

bool timeout  This value is true if the socket has timed out.
-char ibuf [16384] +char ibuf [65535] + + Socket input buffer, used by read().
+std::string Buffer - Socket input buffer, used by read().
+ The output buffer for this socket.
std::string IP  The IP address being connected to stored in string form for easy retrieval by accessors.
@@ -151,11 +158,11 @@ The default constructor does nothing and should not be used.

-Definition at line 48 of file socket.cpp. +Definition at line 45 of file socket.cpp.

-References I_DISCONNECTED, and state.

00049 {
-00050         this->state = I_DISCONNECTED;
-00051 }
+References I_DISCONNECTED, and state.
00046 {
+00047         this->state = I_DISCONNECTED;
+00048 }
 

@@ -199,15 +206,15 @@ This constructor is used to associate an existing connecting with an InspSocket

The given file descriptor must be valid, and when initialized, the InspSocket will be set with the given IP address and placed in CONNECTED state.

-Definition at line 53 of file socket.cpp. +Definition at line 50 of file socket.cpp.

-References SocketEngine::AddFd(), fd, I_CONNECTED, IP, state, and X_ESTAB_MODULE.

00054 {
-00055         this->fd = newfd;
-00056         this->state = I_CONNECTED;
-00057         this->IP = ip;
-00058         SE->AddFd(this->fd,true,X_ESTAB_MODULE);
-00059         socket_ref[this->fd] = this;
-00060 }
+References SocketEngine::AddFd(), fd, I_CONNECTED, IP, InspIRCd::SE, state, and X_ESTAB_MODULE.
00051 {
+00052         this->fd = newfd;
+00053         this->state = I_CONNECTED;
+00054         this->IP = ip;
+00055         ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE);
+00056         socket_ref[this->fd] = this;
+00057 }
 

@@ -271,85 +278,85 @@ This constructor is used to create a new socket, either listening for connection

-Definition at line 62 of file socket.cpp. -

-References SocketEngine::AddFd(), addr, addy, BindSocket(), Close(), DEBUG, ERROR, fd, I_CONNECTING, I_ERR_BIND, I_ERR_CONNECT, I_ERR_SOCKET, I_ERROR, I_LISTENING, IP, log(), OnError(), OpenTCPSocket(), state, timeout, timeout_end, and X_ESTAB_MODULE.

00063 {
-00064         if (listening) {
-00065                 if ((this->fd = OpenTCPSocket()) == ERROR)
-00066                 {
-00067                         this->fd = -1;
-00068                         this->state = I_ERROR;
-00069                         this->OnError(I_ERR_SOCKET);
-00070                         log(DEBUG,"OpenTCPSocket() error");
-00071                         return;
-00072                 }
-00073                 else
-00074                 {
-00075                         if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR)
-00076                         {
-00077                                 this->Close();
-00078                                 this->fd = -1;
-00079                                 this->state = I_ERROR;
-00080                                 this->OnError(I_ERR_BIND);
-00081                                 log(DEBUG,"BindSocket() error %s",strerror(errno));
-00082                                 return;
-00083                         }
-00084                         else
-00085                         {
-00086                                 this->state = I_LISTENING;
-00087                                 SE->AddFd(this->fd,true,X_ESTAB_MODULE);
-00088                                 socket_ref[this->fd] = this;
-00089                                 log(DEBUG,"New socket now in I_LISTENING state");
-00090                                 return;
-00091                         }
-00092                 }                       
-00093         } else {
-00094                 char* ip;
-00095                 this->host = host;
-00096                 hostent* hoste = gethostbyname(host.c_str());
-00097                 if (!hoste) {
-00098                         ip = (char*)host.c_str();
-00099                 } else {
-00100                         struct in_addr* ia = (in_addr*)hoste->h_addr;
-00101                         ip = inet_ntoa(*ia);
-00102                 }
-00103 
-00104                 this->IP = ip;
-00105 
-00106                 timeout_end = time(NULL)+maxtime;
-00107                 timeout = false;
-00108                 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
-00109                 {
-00110                         this->state = I_ERROR;
-00111                         this->OnError(I_ERR_SOCKET);
-00112                         return;
-00113                 }
-00114                 this->port = port;
-00115                 inet_aton(ip,&addy);
-00116                 addr.sin_family = AF_INET;
-00117                 addr.sin_addr = addy;
-00118                 addr.sin_port = htons(this->port);
-00119 
-00120                 int flags;
-00121                 flags = fcntl(this->fd, F_GETFL, 0);
-00122                 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
-00123 
-00124                 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1)
-00125                 {
-00126                         if (errno != EINPROGRESS)
-00127                         {
-00128                                 this->Close();
-00129                                 this->OnError(I_ERR_CONNECT);
-00130                                 this->state = I_ERROR;
-00131                                 return;
-00132                         }
-00133                 }
-00134                 this->state = I_CONNECTING;
-00135                 SE->AddFd(this->fd,false,X_ESTAB_MODULE);
-00136                 socket_ref[this->fd] = this;
-00137                 return;
-00138         }
-00139 }
+Definition at line 59 of file socket.cpp.
+

+References SocketEngine::AddFd(), addr, addy, BindSocket(), Close(), DEBUG, ERROR, fd, I_CONNECTING, I_ERR_BIND, I_ERR_CONNECT, I_ERR_SOCKET, I_ERROR, I_LISTENING, IP, log(), OnError(), OpenTCPSocket(), InspIRCd::SE, state, timeout, timeout_end, and X_ESTAB_MODULE.

00060 {
+00061         if (listening) {
+00062                 if ((this->fd = OpenTCPSocket()) == ERROR)
+00063                 {
+00064                         this->fd = -1;
+00065                         this->state = I_ERROR;
+00066                         this->OnError(I_ERR_SOCKET);
+00067                         log(DEBUG,"OpenTCPSocket() error");
+00068                         return;
+00069                 }
+00070                 else
+00071                 {
+00072                         if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR)
+00073                         {
+00074                                 this->Close();
+00075                                 this->fd = -1;
+00076                                 this->state = I_ERROR;
+00077                                 this->OnError(I_ERR_BIND);
+00078                                 log(DEBUG,"BindSocket() error %s",strerror(errno));
+00079                                 return;
+00080                         }
+00081                         else
+00082                         {
+00083                                 this->state = I_LISTENING;
+00084                                 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE);
+00085                                 socket_ref[this->fd] = this;
+00086                                 log(DEBUG,"New socket now in I_LISTENING state");
+00087                                 return;
+00088                         }
+00089                 }                       
+00090         } else {
+00091                 char* ip;
+00092                 this->host = host;
+00093                 hostent* hoste = gethostbyname(host.c_str());
+00094                 if (!hoste) {
+00095                         ip = (char*)host.c_str();
+00096                 } else {
+00097                         struct in_addr* ia = (in_addr*)hoste->h_addr;
+00098                         ip = inet_ntoa(*ia);
+00099                 }
+00100 
+00101                 this->IP = ip;
+00102 
+00103                 timeout_end = time(NULL)+maxtime;
+00104                 timeout = false;
+00105                 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1)
+00106                 {
+00107                         this->state = I_ERROR;
+00108                         this->OnError(I_ERR_SOCKET);
+00109                         return;
+00110                 }
+00111                 this->port = port;
+00112                 inet_aton(ip,&addy);
+00113                 addr.sin_family = AF_INET;
+00114                 addr.sin_addr = addy;
+00115                 addr.sin_port = htons(this->port);
+00116 
+00117                 int flags;
+00118                 flags = fcntl(this->fd, F_GETFL, 0);
+00119                 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK);
+00120 
+00121                 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1)
+00122                 {
+00123                         if (errno != EINPROGRESS)
+00124                         {
+00125                                 this->Close();
+00126                                 this->OnError(I_ERR_CONNECT);
+00127                                 this->state = I_ERROR;
+00128                                 return;
+00129                         }
+00130                 }
+00131                 this->state = I_CONNECTING;
+00132                 ServerInstance->SE->AddFd(this->fd,false,X_ESTAB_MODULE);
+00133                 socket_ref[this->fd] = this;
+00134                 return;
+00135         }
+00136 }
 

@@ -383,11 +390,11 @@ The destructor may implicitly call 272 of file socket.cpp. +Definition at line 271 of file socket.cpp.

-References Close().

00273 {
-00274         this->Close();
-00275 }
+References Close().
00272 {
+00273         this->Close();
+00274 }
 

@@ -422,20 +429,71 @@ This method causes the socket to close, and may also be triggered by other metho

-Definition at line 141 of file socket.cpp. +Definition at line 138 of file socket.cpp. +

+References fd, and OnClose(). +

+Referenced by InspSocket(), and ~InspSocket().

00139 {
+00140         if (this->fd != -1)
+00141         {
+00142                 this->OnClose();
+00143                 shutdown(this->fd,2);
+00144                 close(this->fd);
+00145                 socket_ref[this->fd] = NULL;
+00146                 this->fd = -1;
+00147         }
+00148 }
+
+

+ + + +

+ + + + +
+ + + + + + + + +
void InspSocket::FlushWriteBuffer  )  [private]
+
+ + + + @@ -469,11 +527,11 @@ This method returns the socket's file descriptor as assigned by the operating sy

-Definition at line 259 of file socket.cpp. +Definition at line 258 of file socket.cpp.

-References fd.

00260 {
-00261         return this->fd;
-00262 }
+References fd.
00259 {
+00260         return this->fd;
+00261 }
 

@@ -507,11 +565,11 @@ Returns the IP address associated with this connection, or an empty string if no

-Definition at line 153 of file socket.cpp. +Definition at line 150 of file socket.cpp.

-References IP.

00154 {
-00155         return this->IP;
-00156 }
+References IP.
00151 {
+00152         return this->IP;
+00153 }
 

@@ -545,11 +603,11 @@ Returns the current socket state.

-Definition at line 254 of file socket.cpp. +Definition at line 253 of file socket.cpp.

-References state.

00255 {
-00256         return this->state;
-00257 }
+References state.
00254 {
+00255         return this->state;
+00256 }
 

@@ -583,9 +641,9 @@ Whenever close() is called, OnError(), OnTimeout(), and Close(), and also when cancelling a listening socket by calling the destructor indirectly.

-Definition at line 270 of file socket.cpp. +Definition at line 269 of file socket.cpp.

-Referenced by Close().

00270 { return; }
+Referenced by Close().
00269 { return; }
 

@@ -620,9 +678,9 @@ This method is called when an outbound connection on your socket is completed.

Returns:
false to abort the connection, true to continue

-Definition at line 264 of file socket.cpp. +Definition at line 263 of file socket.cpp.

-Referenced by Poll().

00264 { return true; }
+Referenced by Poll().
00263 { return true; }
 

@@ -657,9 +715,9 @@ When there is data waiting to be read on a socket, the Read() method to read any pending data. At its lowest level, this event is signalled by the core via the socket engine. If you return false from this function, the core removes your socket from its list and erases it from the socket engine, then calls InspSocket::Close() and deletes it.

Returns:
false to close the socket

-Definition at line 268 of file socket.cpp. +Definition at line 267 of file socket.cpp.

-Referenced by Poll().

00268 { return true; }
+Referenced by Poll().
00267 { return true; }
 

@@ -693,7 +751,7 @@ When an established connection is terminated, the OnDisconnect method is trigger

-Definition at line 266 of file socket.cpp.

00266 { return 0; }
+Definition at line 265 of file socket.cpp.
00265 { return 0; }
 

@@ -733,9 +791,9 @@ A closed socket in itself is not an error, however errors also generate close ev

-Definition at line 265 of file socket.cpp. +Definition at line 264 of file socket.cpp.

-Referenced by InspSocket(), and Timeout().

00265 { return; }
+Referenced by InspSocket(), and Timeout().
00264 { return; }
 

@@ -781,9 +839,9 @@ Given the new file descriptor in the parameters, and the IP, it is recommended y MySocket* newsocket = new MySocket(newfd,ip);

Once you have done this, you can then associate the new socket with the core using Server::AddSocket().

-Definition at line 267 of file socket.cpp. +Definition at line 266 of file socket.cpp.

-Referenced by Poll().

00267 { return 0; }
+Referenced by Poll().
00266 { return 0; }
 

@@ -817,9 +875,9 @@ When an outbound connection fails, and the attempt times out, you will receive t

The mthod will trigger once maxtime secons are reached (as given in the constructor) just before the socket's descriptor is closed.

-Definition at line 269 of file socket.cpp. +Definition at line 268 of file socket.cpp.

-Referenced by Timeout().

00269 { return; }
+Referenced by Timeout().
00268 { return; }
 

@@ -853,37 +911,37 @@ Only the core should call this function.

When called, it is assumed the socket is ready to read data, and the method call routes the event to the various methods of InspSocket for you to handle. This can also cause the socket's state to change.

-Definition at line 217 of file socket.cpp. -

-References SocketEngine::AddFd(), client, SocketEngine::DelFd(), I_CONNECTED, I_CONNECTING, I_LISTENING, length, OnConnected(), OnDataReady(), OnIncomingConnection(), SetState(), and X_ESTAB_MODULE.

00218 {
-00219         int incoming = -1;
-00220         
-00221         switch (this->state)
-00222         {
-00223                 case I_CONNECTING:
-00224                         this->SetState(I_CONNECTED);
-00225                         /* Our socket was in write-state, so delete it and re-add it
-00226                          * in read-state.
-00227                          */
-00228                         SE->DelFd(this->fd);
-00229                         SE->AddFd(this->fd,true,X_ESTAB_MODULE);
-00230                         return this->OnConnected();
-00231                 break;
-00232                 case I_LISTENING:
-00233                         length = sizeof (client);
-00234                         incoming = accept (this->fd, (sockaddr*)&client,&length);
-00235                         this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr));
-00236                         return true;
-00237                 break;
-00238                 case I_CONNECTED:
-00239                         return this->OnDataReady();
-00240                 break;
-00241                 default:
-00242                 break;
-00243         }
-00244 
-00245         return true;
-00246 }
+Definition at line 216 of file socket.cpp.
+

+References SocketEngine::AddFd(), client, SocketEngine::DelFd(), I_CONNECTED, I_CONNECTING, I_LISTENING, length, OnConnected(), OnDataReady(), OnIncomingConnection(), InspIRCd::SE, SetState(), and X_ESTAB_MODULE.

00217 {
+00218         int incoming = -1;
+00219         
+00220         switch (this->state)
+00221         {
+00222                 case I_CONNECTING:
+00223                         this->SetState(I_CONNECTED);
+00224                         /* Our socket was in write-state, so delete it and re-add it
+00225                          * in read-state.
+00226                          */
+00227                         ServerInstance->SE->DelFd(this->fd);
+00228                         ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE);
+00229                         return this->OnConnected();
+00230                 break;
+00231                 case I_LISTENING:
+00232                         length = sizeof (client);
+00233                         incoming = accept (this->fd, (sockaddr*)&client,&length);
+00234                         this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr));
+00235                         return true;
+00236                 break;
+00237                 case I_CONNECTED:
+00238                         return this->OnDataReady();
+00239                 break;
+00240                 default:
+00241                 break;
+00242         }
+00243 
+00244         return true;
+00245 }
 

@@ -917,21 +975,21 @@ Reads all pending bytes from the socket into a char* array which can be up to 16

-Definition at line 158 of file socket.cpp. +Definition at line 155 of file socket.cpp.

-References DEBUG, ibuf, and log().

00159 {
-00160         int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0);
-00161         if (n > 0)
-00162         {
-00163                 ibuf[n] = 0;
-00164                 return ibuf;
-00165         }
-00166         else
-00167         {
-00168                 log(DEBUG,"EOF or error on socket");
-00169                 return NULL;
-00170         }
-00171 }
+References DEBUG, ibuf, and log().
00156 {
+00157         int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0);
+00158         if (n > 0)
+00159         {
+00160                 ibuf[n] = 0;
+00161                 return ibuf;
+00162         }
+00163         else
+00164         {
+00165                 log(DEBUG,"EOF or error on socket");
+00166                 return NULL;
+00167         }
+00168 }
 

@@ -966,14 +1024,14 @@ Changes the socket's state.

The core uses this to change socket states, and you should not call it directly.

-Definition at line 248 of file socket.cpp. +Definition at line 247 of file socket.cpp.

-References DEBUG, log(), and state. +References DEBUG, log(), and state.

-Referenced by Poll().

00249 {
-00250         log(DEBUG,"Socket state change");
-00251         this->state = s;
-00252 }
+Referenced by Poll().
00248 {
+00249         log(DEBUG,"Socket state change");
+00250         this->state = s;
+00251 }
 

@@ -1009,23 +1067,25 @@ This function checks if the socket has timed out yet, given the current time in

Returns:
true if timed out, false if not timed out

-Definition at line 200 of file socket.cpp. -

-References I_CONNECTING, I_ERR_TIMEOUT, I_ERROR, OnError(), OnTimeout(), state, timeout, and timeout_end.

00201 {
-00202         if ((this->state == I_CONNECTING) && (current > timeout_end))
-00203         {
-00204                 // for non-listening sockets, the timeout can occur
-00205                 // which causes termination of the connection after
-00206                 // the given number of seconds without a successful
-00207                 // connection.
-00208                 this->OnTimeout();
-00209                 this->OnError(I_ERR_TIMEOUT);
-00210                 timeout = true;
-00211                 this->state = I_ERROR;
-00212                 return true;
-00213         }
-00214         return false;
-00215 }
+Definition at line 197 of file socket.cpp.
+

+References FlushWriteBuffer(), I_CONNECTING, I_ERR_TIMEOUT, I_ERROR, OnError(), OnTimeout(), state, timeout, and timeout_end.

00198 {
+00199         if ((this->state == I_CONNECTING) && (current > timeout_end))
+00200         {
+00201                 // for non-listening sockets, the timeout can occur
+00202                 // which causes termination of the connection after
+00203                 // the given number of seconds without a successful
+00204                 // connection.
+00205                 this->OnTimeout();
+00206                 this->OnError(I_ERR_TIMEOUT);
+00207                 timeout = true;
+00208                 this->state = I_ERROR;
+00209                 return true;
+00210         }
+00211         if (this->Buffer.length())
+00212                 this->FlushWriteBuffer();
+00213         return false;
+00214 }
 

@@ -1065,27 +1125,13 @@ No carriage returns or linefeeds are appended to the string.

-Definition at line 177 of file socket.cpp.

00178 {
-00179         char* d = (char*)data.c_str();
-00180         unsigned int written = 0;
-00181         int n = 0;
-00182         int s = data.length();
-00183         while ((written < data.length()) && (n >= 0))
-00184         {
-00185                 n = send(this->fd,d,s,0);
-00186                 if (n > 0)
-00187                 {
-00188                         // If we didnt write everything, advance
-00189                         // the pointers so that when we retry
-00190                         // the next time around the loop, we try
-00191                         // to write what we failed to write before.
-00192                         written += n;
-00193                         s -= n;
-00194                         d += n;
-00195                 }
-00196         }
-00197         return written;
-00198 }
+Definition at line 174 of file socket.cpp.
+

+References Buffer, and FlushWriteBuffer().

00175 {
+00176         this->Buffer = this->Buffer + data;
+00177         this->FlushWriteBuffer();
+00178         return data.length();
+00179 }
 

@@ -1118,7 +1164,7 @@ The host being connected to, in sockaddr form.

Definition at line 78 of file socket.h.

-Referenced by InspSocket(). +Referenced by InspSocket().

+   + + +

+Flushes the write buffer. +

+ +

+Definition at line 181 of file socket.cpp.

-References fd, and OnClose(). +References Buffer.

-Referenced by InspSocket(), and ~InspSocket().

00142 {
-00143         if (this->fd != -1)
-00144         {
-00145                 this->OnClose();
-00146                 shutdown(this->fd,2);
-00147                 close(this->fd);
-00148                 socket_ref[this->fd] = NULL;
-00149                 this->fd = -1;
-00150         }
-00151 }
+Referenced by Timeout(), and Write().
00182 {
+00183         int result = 0;
+00184         if (this->Buffer.length())
+00185         {
+00186                 result = send(this->fd,this->Buffer.c_str(),this->Buffer.length(),0);
+00187                 if (result > 0)
+00188                 {
+00189                         /* If we wrote some, advance the buffer forwards */
+00190                         char* n = (char*)this->Buffer.c_str();
+00191                         n += result;
+00192                         this->Buffer = n;
+00193                 }
+00194         }
+00195 }
 

@@ -1147,7 +1193,36 @@ The host being connected to, in in_addr form.

Definition at line 84 of file socket.h.

-Referenced by InspSocket(). +Referenced by InspSocket(). + + +

+ + + + +
+ + + + +
std::string InspSocket::Buffer [private]
+
+ + + +
+   + + +

+The output buffer for this socket. +

+ +

+Definition at line 111 of file socket.h. +

+Referenced by FlushWriteBuffer(), and Write().

@@ -1174,9 +1249,9 @@ Client sockaddr structure used by accept().

-Definition at line 119 of file socket.h. +Definition at line 124 of file socket.h.

-Referenced by Poll(). +Referenced by Poll().

@@ -1205,7 +1280,7 @@ The file descriptor of this socket.

Definition at line 54 of file socket.h.

-Referenced by Close(), GetFd(), and InspSocket(). +Referenced by Close(), GetFd(), and InspSocket().

@@ -1235,13 +1310,13 @@ The hostname connected to. Definition at line 59 of file socket.h. -

+

@@ -1257,11 +1332,11 @@ Definition at line 59 of f

Socket input buffer, used by read().

-The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 16k, this buffer is just designed to be temporary storage. space. +The class which extends InspSocket is expected to implement an extendable buffer which can grow much larger than 64k, this buffer is just designed to be temporary storage. space.

Definition at line 106 of file socket.h.

-Referenced by Read(). +Referenced by Read().

- +
char InspSocket::ibuf[16384] [private] char InspSocket::ibuf[65535] [private]

@@ -1288,9 +1363,9 @@ The IP address being connected to stored in string form for easy retrieval by ac

-Definition at line 113 of file socket.h. +Definition at line 118 of file socket.h.

-Referenced by GetIP(), and InspSocket(). +Referenced by GetIP(), and InspSocket().

@@ -1317,9 +1392,9 @@ Used by accept() to indicate the sizes of the sockaddr_in structures.

-Definition at line 131 of file socket.h. +Definition at line 136 of file socket.h.

-Referenced by Poll(). +Referenced by Poll().

@@ -1373,7 +1448,7 @@ Definition at line 65 of f

-Definition at line 125 of file socket.h. +Definition at line 130 of file socket.h.

@@ -1402,7 +1477,7 @@ The state for this socket, either listening, connecting, connected or error.

Definition at line 72 of file socket.h.

-Referenced by GetState(), InspSocket(), SetState(), and Timeout(). +Referenced by GetState(), InspSocket(), SetState(), and Timeout().

@@ -1431,7 +1506,7 @@ This value is true if the socket has timed out.

Definition at line 97 of file socket.h.

-Referenced by InspSocket(), and Timeout(). +Referenced by InspSocket(), and Timeout().

@@ -1460,12 +1535,12 @@ When this time is reached, the socket times out if it is in the CONNECTING state

Definition at line 91 of file socket.h.

-Referenced by InspSocket(), and Timeout(). +Referenced by InspSocket(), and Timeout().


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classInspSocket__coll__graph.md5 b/docs/module-doc/classInspSocket__coll__graph.md5 index f141be48a..58e1367ba 100644 --- a/docs/module-doc/classInspSocket__coll__graph.md5 +++ b/docs/module-doc/classInspSocket__coll__graph.md5 @@ -1 +1 @@ -7f01698bd61166ed2298c165402581f7 \ No newline at end of file +51939a33bf707f1bcff03f02bd5b43b3 \ No newline at end of file diff --git a/docs/module-doc/classInviteItem-members.html b/docs/module-doc/classInviteItem-members.html index 7ab51ae72..0d41efe4c 100644 --- a/docs/module-doc/classInviteItem-members.html +++ b/docs/module-doc/classInviteItem-members.html @@ -14,7 +14,7 @@ set_timeHostItem ~classbase()classbase [inline] ~HostItem()HostItem [inline, virtual] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classInviteItem.html b/docs/module-doc/classInviteItem.html index 6a6ed71c8..9db6a7e50 100644 --- a/docs/module-doc/classInviteItem.html +++ b/docs/module-doc/classInviteItem.html @@ -30,7 +30,7 @@ A subclass of HostItem designed to h

Definition at line 70 of file channels.h.


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classInvited-members.html b/docs/module-doc/classInvited-members.html index c13a0f6e6..d28f69c90 100644 --- a/docs/module-doc/classInvited-members.html +++ b/docs/module-doc/classInvited-members.html @@ -7,10 +7,10 @@

Invited Member List

This is the complete list of members for Invited, including all inherited members.

- + -
ageclassbase
channelInvited
channelInvited
classbase()classbase [inline]
~classbase()classbase [inline]


Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classInvited.html b/docs/module-doc/classInvited.html index a339904ba..1f5a9f343 100644 --- a/docs/module-doc/classInvited.html +++ b/docs/module-doc/classInvited.html @@ -21,7 +21,7 @@ Inheritance diagram for Invited:

[legend]
List of all members. - +

Public Attributes

char channel [CHANMAX]
irc::string channel

Detailed Description

@@ -29,14 +29,14 @@ Holds a channel name to which a user has been invited.

-Definition at line 39 of file users.h.


Member Data Documentation

-

+Definition at line 43 of file users.h.


Member Data Documentation

+

@@ -52,14 +52,14 @@ Definition at line 39 of fi

-Definition at line 42 of file users.h. +Definition at line 46 of file users.h.

-Referenced by userrec::InviteTo(). +Referenced by userrec::InviteTo().

- +
char Invited::channel[CHANMAX] irc::string Invited::channel


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classInvited__coll__graph.md5 b/docs/module-doc/classInvited__coll__graph.md5 index 1ffe72a60..4e56570e2 100644 --- a/docs/module-doc/classInvited__coll__graph.md5 +++ b/docs/module-doc/classInvited__coll__graph.md5 @@ -1 +1 @@ -7fbf1811875f3b2d0f9e2d08f95517bf \ No newline at end of file +14a980236c753f79990d5ee0b50c1adc \ No newline at end of file diff --git a/docs/module-doc/classKLine-members.html b/docs/module-doc/classKLine-members.html index 455ad453b..ff52faffe 100644 --- a/docs/module-doc/classKLine-members.html +++ b/docs/module-doc/classKLine-members.html @@ -15,7 +15,7 @@ set_timeXLine sourceXLine ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classKLine.html b/docs/module-doc/classKLine.html index d9a258167..681126f38 100644 --- a/docs/module-doc/classKLine.html +++ b/docs/module-doc/classKLine.html @@ -62,7 +62,7 @@ Definition at line 73 of fi
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classModeParameter-members.html b/docs/module-doc/classModeParameter-members.html index 33f7e6248..d0d6788bb 100644 --- a/docs/module-doc/classModeParameter-members.html +++ b/docs/module-doc/classModeParameter-members.html @@ -12,7 +12,7 @@ modeModeParameter parameterModeParameter ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classModeParameter.html b/docs/module-doc/classModeParameter.html index 8e9753f5c..6a430b474 100644 --- a/docs/module-doc/classModeParameter.html +++ b/docs/module-doc/classModeParameter.html @@ -60,7 +60,7 @@ Definition at line 79 of

Definition at line 84 of file channels.h.

-Referenced by chanrec::SetCustomModeParam(). +Referenced by chanrec::SetCustomModeParam().

@@ -87,7 +87,7 @@ Referenced by chanrec::Set

Definition at line 82 of file channels.h.

-Referenced by chanrec::SetCustomModeParam(). +Referenced by chanrec::SetCustomModeParam().

@@ -114,12 +114,12 @@ Referenced by chanrec::Set

Definition at line 83 of file channels.h.

-Referenced by chanrec::SetCustomModeParam(). +Referenced by chanrec::SetCustomModeParam().


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classModule-members.html b/docs/module-doc/classModule-members.html index da275b22c..1014b14ee 100644 --- a/docs/module-doc/classModule-members.html +++ b/docs/module-doc/classModule-members.html @@ -89,7 +89,7 @@ ProtoSendMode(void *opaque, int target_type, void *target, std::string modeline)Module [virtual] ~classbase()classbase [inline] ~Module()Module [virtual] -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classModule.html b/docs/module-doc/classModule.html index abedf601d..2c29a02dc 100644 --- a/docs/module-doc/classModule.html +++ b/docs/module-doc/classModule.html @@ -267,7 +267,7 @@ All modules must inherit from this class, its methods will be called when irc se

-Definition at line 254 of file modules.h.


Constructor & Destructor Documentation

+Definition at line 272 of file modules.h.

Constructor & Destructor Documentation

@@ -302,7 +302,7 @@ Default constructor Creates a module class.

-Definition at line 220 of file modules.cpp.

00220 { }
+Definition at line 219 of file modules.cpp.
00219 { }
 

@@ -336,7 +336,7 @@ Default destructor destroys a module class.

-Definition at line 221 of file modules.cpp.

00221 { }
+Definition at line 220 of file modules.cpp.
00220 { }
 

@@ -371,9 +371,9 @@ Returns the version number of a Module.

The method should return a Version object with its version information assigned via Version::Version

-Definition at line 232 of file modules.cpp. +Definition at line 231 of file modules.cpp.

-References VF_VENDOR.

00232 { return Version(1,0,0,0,VF_VENDOR); }
+References VF_VENDOR.
00231 { return Version(1,0,0,0,VF_VENDOR); }
 

@@ -413,7 +413,7 @@ The module should modify the 005 numeric if needed to indicate its features.

-Definition at line 242 of file modules.cpp.

00242 { };
+Definition at line 241 of file modules.cpp.
00241 { };
 

@@ -488,9 +488,9 @@ This function is called before many functions which check a users status on a ch

-Definition at line 241 of file modules.cpp. +Definition at line 240 of file modules.cpp.

-References ACR_DEFAULT.

00241 { return ACR_DEFAULT; };
+References ACR_DEFAULT.
00240 { return ACR_DEFAULT; };
 

@@ -548,7 +548,7 @@ Return a non-zero value to 'eat' the mode change and prevent the ban from being

Returns:
1 to block the ban, 0 to continue as normal

-Definition at line 267 of file modules.cpp.

00267 { return 0; };
+Definition at line 266 of file modules.cpp.
00266 { return 0; };
 

@@ -612,7 +612,7 @@ This method is triggered after the line is added.

Parameters:

-Definition at line 293 of file modules.cpp.

00293 { };
+Definition at line 292 of file modules.cpp.
00292 { };
 

@@ -676,7 +676,7 @@ This method is triggered after the line is added.

Parameters:

-Definition at line 289 of file modules.cpp.

00289 { };
+Definition at line 288 of file modules.cpp.
00288 { };
 

@@ -740,7 +740,7 @@ This method is triggered after the line is added.

Parameters:

-Definition at line 291 of file modules.cpp.

00291 { };
+Definition at line 290 of file modules.cpp.
00290 { };
 

@@ -804,7 +804,7 @@ This method is triggered after the line is added.

Parameters:

-Definition at line 292 of file modules.cpp.

00292 { };
+Definition at line 291 of file modules.cpp.
00291 { };
 

@@ -868,7 +868,7 @@ This method is triggered after the line is added.

Parameters:

-Definition at line 290 of file modules.cpp.

00290 { };
+Definition at line 289 of file modules.cpp.
00289 { };
 

@@ -908,7 +908,7 @@ This timer can be used to control timed features. Its period is not accurate eno

-Definition at line 246 of file modules.cpp.

00246 { };
+Definition at line 245 of file modules.cpp.
00245 { };
 

@@ -958,7 +958,7 @@ This event triggers after the host has been set.

Parameters:<

-Definition at line 287 of file modules.cpp.

00287 { };
+Definition at line 286 of file modules.cpp.
00286 { };
 

@@ -1009,7 +1009,7 @@ return 1 to deny the name change, or 0 to allow it.

Parameter
Returns:
1 to deny the GECOS change, 0 to allow

-Definition at line 260 of file modules.cpp.

00260 { return 0; };
+Definition at line 259 of file modules.cpp.
00259 { return 0; };
 

@@ -1060,7 +1060,7 @@ Return 1 to deny the host change, or 0 to allow it.

Parameter
Returns:
1 to deny the host change, 0 to allow

-Definition at line 259 of file modules.cpp.

00259 { return 0; };
+Definition at line 258 of file modules.cpp.
00258 { return 0; };
 

@@ -1110,7 +1110,7 @@ This event triggers after the name has been set.

Parameters:<

-Definition at line 288 of file modules.cpp.

00288 { };
+Definition at line 287 of file modules.cpp.
00287 { };
 

@@ -1161,7 +1161,7 @@ This method will always be called for each join, wether or not the user actually

Returns:
1 to explicitly allow the join, 0 to proceed as normal

-Definition at line 257 of file modules.cpp.

00257 { return 0; };
+Definition at line 256 of file modules.cpp.
00256 { return 0; };
 

@@ -1212,7 +1212,7 @@ This method will always be called for each join, wether or not the channel is ac

Returns:
1 to explicitly allow the join, 0 to proceed as normal

-Definition at line 254 of file modules.cpp.

00254 { return 0; };
+Definition at line 253 of file modules.cpp.
00253 { return 0; };
 

@@ -1269,7 +1269,7 @@ This method will always be called for each join, wether or not the channel is ac

Returns:
1 to explicitly allow the join, 0 to proceed as normal

-Definition at line 255 of file modules.cpp.

00255 { return 0; };
+Definition at line 254 of file modules.cpp.
00254 { return 0; };
 

@@ -1320,7 +1320,7 @@ This method will always be called for each join, wether or not the channel is ac

Returns:
1 to explicitly allow the join, 0 to proceed as normal

-Definition at line 256 of file modules.cpp.

00256 { return 0; };
+Definition at line 255 of file modules.cpp.
00255 { return 0; };
 

@@ -1361,7 +1361,7 @@ For example a module which implements ident lookups will continue to return fals

Returns:
true to indicate readiness, false if otherwise

-Definition at line 249 of file modules.cpp.

00249 { return true; };
+Definition at line 248 of file modules.cpp.
00248 { return true; };
 

@@ -1411,7 +1411,7 @@ This method is called once for every user and channel on the network, so that wh

-Definition at line 299 of file modules.cpp.

00299 { };
+Definition at line 298 of file modules.cpp.
00298 { };
 

@@ -1475,7 +1475,7 @@ Please see src/modules/m_swhois.cpp for a working example of how to use this met

-Definition at line 284 of file modules.cpp.

00284 { };
+Definition at line 283 of file modules.cpp.
00283 { };
 

@@ -1533,7 +1533,7 @@ Return a non-zero value to 'eat' the mode change and prevent the ban from being

Returns:
1 to block the unban, 0 to continue as normal

-Definition at line 268 of file modules.cpp.

00268 { return 0; };
+Definition at line 267 of file modules.cpp.
00267 { return 0; };
 

@@ -1583,7 +1583,7 @@ This method is triggered after the line is deleted.

Parameter

-Definition at line 298 of file modules.cpp.

00298 { };
+Definition at line 297 of file modules.cpp.
00297 { };
 

@@ -1633,7 +1633,7 @@ This method is triggered after the line is deleted.

Parameter

-Definition at line 294 of file modules.cpp.

00294 { };
+Definition at line 293 of file modules.cpp.
00293 { };
 

@@ -1683,7 +1683,7 @@ This method is triggered after the line is deleted.

Parameter

-Definition at line 296 of file modules.cpp.

00296 { };
+Definition at line 295 of file modules.cpp.
00295 { };
 

@@ -1733,7 +1733,7 @@ This method is triggered after the line is deleted.

Parameter

-Definition at line 297 of file modules.cpp.

00297 { };
+Definition at line 296 of file modules.cpp.
00296 { };
 

@@ -1783,7 +1783,7 @@ This method is triggered after the line is deleted.

Parameter

-Definition at line 295 of file modules.cpp.

00295 { };
+Definition at line 294 of file modules.cpp.
00294 { };
 

@@ -1823,7 +1823,7 @@ Please see the documentation of

-Definition at line 262 of file modules.cpp.

00262 { return; };
+Definition at line 261 of file modules.cpp.
00261 { return; };
 

@@ -1901,7 +1901,7 @@ The type parameter is MT_SERVER, MT_CLIENT or MT_CHANNEL, dependent on where the

-Definition at line 230 of file modules.cpp.

00230 { return false; }
+Definition at line 229 of file modules.cpp.
00229 { return false; }
 

@@ -1951,7 +1951,7 @@ You may change or define the description given in 278 of file modules.cpp.

00278 { };
+Definition at line 277 of file modules.cpp.
00277 { };
 

@@ -1991,7 +1991,7 @@ This event is informational only. You should not change any user information in

-Definition at line 266 of file modules.cpp.

00266 { };
+Definition at line 265 of file modules.cpp.
00265 { };
 

@@ -2031,7 +2031,7 @@ You cannot override this and prevent it from happening as it is already happened

-Definition at line 265 of file modules.cpp.

00265 { };
+Definition at line 264 of file modules.cpp.
00264 { };
 

@@ -2073,7 +2073,7 @@ The userrec will contain the information of the user who typed the command. Modu

-Definition at line 234 of file modules.cpp.

00234 { };
+Definition at line 233 of file modules.cpp.
00233 { };
 

@@ -2131,7 +2131,7 @@ If a client is killed by a server, e.g. a nickname collision or protocol error,

Returns:
1 to prevent the kill, 0 to allow

-Definition at line 243 of file modules.cpp.

00243 { return 0; };
+Definition at line 242 of file modules.cpp.
00242 { return 0; };
 

@@ -2181,7 +2181,7 @@ mod will contain a pointer to the module, and string will contain its name, for

-Definition at line 244 of file modules.cpp.

00244 { };
+Definition at line 243 of file modules.cpp.
00243 { };
 

@@ -2239,7 +2239,7 @@ Return 1 to deny the topic change, or 0 to allow it.

Paramete

-Definition at line 261 of file modules.cpp.

00261 { return 0; };
+Definition at line 260 of file modules.cpp.
00260 { return 0; };
 

@@ -2303,7 +2303,7 @@ The text variable contains the remainder of the mode string after the target, e.

-Definition at line 231 of file modules.cpp.

00231 { };
+Definition at line 230 of file modules.cpp.
00230 { };
 

@@ -2353,7 +2353,7 @@ The userrec will contain the oper mode 'o' as this function is called after any

-Definition at line 233 of file modules.cpp.

00233 { };
+Definition at line 232 of file modules.cpp.
00232 { };
 

@@ -2404,7 +2404,7 @@ The password field (from the config file) is in 'password' and is to be compared

Returns:
1 to match the passwords, 0 to do nothing

-Definition at line 264 of file modules.cpp.

00264 { return 0; };
+Definition at line 263 of file modules.cpp.
00263 { return 0; };
 

@@ -2461,7 +2461,7 @@ To block topic changes you must use OnLocalTopicChange instead.

-Definition at line 277 of file modules.cpp.

00277 { };
+Definition at line 276 of file modules.cpp.
00276 { };
 

@@ -2526,7 +2526,7 @@ This event occurs for all registered commands, wether they are registered in the

Returns:
1 to block the command, 0 to allow

-Definition at line 248 of file modules.cpp.

00248 { return 0; };
+Definition at line 247 of file modules.cpp.
00247 { return 0; };
 

@@ -2605,7 +2605,7 @@ Return 1 from this function to block the mode character from being processed ent

Returns:
1 to deny the mode, 0 to allow

-Definition at line 253 of file modules.cpp.

00253 { return 0; };
+Definition at line 252 of file modules.cpp.
00252 { return 0; };
 

@@ -2662,7 +2662,7 @@ This is intended for raw socket processing (e.g. modules which wrap the tcp conn

-Definition at line 269 of file modules.cpp.

00269 { };
+Definition at line 268 of file modules.cpp.
00268 { };
 

@@ -2702,7 +2702,9 @@ When this event is called, shutdown() has not yet been called on the socket.

-Definition at line 271 of file modules.cpp.

00271 { };
+Definition at line 270 of file modules.cpp.
+

+Referenced by kill_link(), and kill_link_silent().

00270 { };
 

@@ -2767,7 +2769,7 @@ This occurs AFTER the select() or poll() so there is always data waiting to be r

Returns:
nonzero if the event was handled, in which case readresult must be valid on exit

-Definition at line 272 of file modules.cpp.

00272 { return 0; };
+Definition at line 271 of file modules.cpp.
00271 { return 0; };
 

@@ -2825,7 +2827,7 @@ Because this event is a low level event no user information is associated with i

Returns:
Number of characters actually written or 0 if you didn't handle the operation

-Definition at line 270 of file modules.cpp.

00270 { return 0; };
+Definition at line 269 of file modules.cpp.
00269 { return 0; };
 

@@ -2865,7 +2867,7 @@ This method is called prior to a /REHASH or when a SIGHUP is received from the o

-Definition at line 227 of file modules.cpp.

00227 { }
+Definition at line 226 of file modules.cpp.
00226 { }
 

@@ -2922,7 +2924,7 @@ Called when an oper wants to disconnect a remote user via KILL.

-Definition at line 275 of file modules.cpp.

00275 { };
+Definition at line 274 of file modules.cpp.
00274 { };
 

@@ -2962,9 +2964,9 @@ Please see the documentation of 263 of file modules.cpp. +Definition at line 262 of file modules.cpp.

-Referenced by Request::Send().

00263 { return NULL; };
+Referenced by Request::Send().
00262 { return NULL; };
 

@@ -3021,7 +3023,7 @@ For example, when a /MODE channel +b (without any other parameters) is called, i

-Definition at line 247 of file modules.cpp.

00247 { };
+Definition at line 246 of file modules.cpp.
00246 { };
 

@@ -3078,7 +3080,7 @@ This method is the lowest level of handler available to a module. It will be cal

-Definition at line 228 of file modules.cpp.

00228 { }
+Definition at line 227 of file modules.cpp.
00227 { }
 

@@ -3118,7 +3120,7 @@ Called on all /STATS commands This method is triggered for all /STATS use, inclu

-Definition at line 258 of file modules.cpp.

00258 { };
+Definition at line 257 of file modules.cpp.
00257 { };
 

@@ -3177,7 +3179,7 @@ For a good example of how to use this function, please see src/modules/m_chanpro

-Definition at line 280 of file modules.cpp.

00280 { };
+Definition at line 279 of file modules.cpp.
00279 { };
 

@@ -3231,7 +3233,7 @@ Definition at line 280

-Definition at line 282 of file modules.cpp.

00282 { };
+Definition at line 281 of file modules.cpp.
00281 { };
 

@@ -3288,7 +3290,7 @@ When this function is called, it will be called from the module which implements

-Definition at line 279 of file modules.cpp.

00279 { };
+Definition at line 278 of file modules.cpp.
00278 { };
 

@@ -3342,7 +3344,7 @@ Definition at line 279

-Definition at line 283 of file modules.cpp.

00283 { };
+Definition at line 282 of file modules.cpp.
00282 { };
 

@@ -3392,7 +3394,7 @@ mod will contain a pointer to the module, and string will contain its name, for

-Definition at line 245 of file modules.cpp.

00245 { };
+Definition at line 244 of file modules.cpp.
00244 { };
 

@@ -3432,7 +3434,7 @@ The details of the connecting user are available to you in the parameter userrec

-Definition at line 222 of file modules.cpp.

00222 { }
+Definition at line 221 of file modules.cpp.
00221 { }
 

@@ -3472,7 +3474,7 @@ The details of the exiting user are available to you in the parameter userrec *u

-Definition at line 224 of file modules.cpp.

00224 { }
+Definition at line 223 of file modules.cpp.
00223 { }
 

@@ -3529,7 +3531,7 @@ You cannot prevent the invite from occuring using this function, to do that, use

-Definition at line 276 of file modules.cpp.

00276 { };
+Definition at line 275 of file modules.cpp.
00275 { };
 

@@ -3579,7 +3581,7 @@ The details of the joining user are available to you in the parameter userrec *u

-Definition at line 225 of file modules.cpp.

00225 { }
+Definition at line 224 of file modules.cpp.
00224 { }
 

@@ -3643,7 +3645,7 @@ If this method is called, the kick is already underway and cannot be prevented,

-Definition at line 252 of file modules.cpp.

00252 { };
+Definition at line 251 of file modules.cpp.
00251 { };
 

@@ -3707,7 +3709,7 @@ The dest variable contains a userrec* if target_type is TYPE_USER and a chanrec*

-Definition at line 273 of file modules.cpp.

00273 { };
+Definition at line 272 of file modules.cpp.
00272 { };
 

@@ -3771,7 +3773,7 @@ The dest variable contains a userrec* if target_type is TYPE_USER and a chanrec*

-Definition at line 274 of file modules.cpp.

00274 { };
+Definition at line 273 of file modules.cpp.
00273 { };
 

@@ -3821,7 +3823,7 @@ The details of the leaving user are available to you in the parameter userrec *u

-Definition at line 226 of file modules.cpp.

00226 { }
+Definition at line 225 of file modules.cpp.
00225 { }
 

@@ -3871,7 +3873,7 @@ This can be used to track users after nickchanges have been applied. Please note

-Definition at line 240 of file modules.cpp.

00240 { };
+Definition at line 239 of file modules.cpp.
00239 { };
 

@@ -3929,7 +3931,7 @@ Returning 1 from this function stops the process immediately, causing no output

Returns:
1 to deny the invite, 0 to allow

-Definition at line 236 of file modules.cpp.

00236 { return 0; };
+Definition at line 235 of file modules.cpp.
00235 { return 0; };
 

@@ -3988,7 +3990,7 @@ If the user joins a NEW channel which does not exist yet, OnUserPreJoin will be

Returns:
1 To prevent the join, 0 to allow it.

-Definition at line 229 of file modules.cpp.

00229 { return 0; }
+Definition at line 228 of file modules.cpp.
00228 { return 0; }
 

@@ -4053,7 +4055,7 @@ Returning a value of 1 from this function stops the process immediately, causing

Returns:
1 to prevent the kick, 0 to allow it

-Definition at line 251 of file modules.cpp.

00251 { return 0; };
+Definition at line 250 of file modules.cpp.
00250 { return 0; };
 

@@ -4118,7 +4120,7 @@ Returning any nonzero value from this function stops the process immediately, ca

Returns:
1 to deny the NOTICE, 0 to allow it

-Definition at line 237 of file modules.cpp.

00237 { return 0; };
+Definition at line 236 of file modules.cpp.
00236 { return 0; };
 

@@ -4169,7 +4171,7 @@ This can be used to implement Q-lines etc. Please note that although you can see

Returns:
1 to deny the change, 0 to allow

-Definition at line 239 of file modules.cpp.

00239 { return 0; };
+Definition at line 238 of file modules.cpp.
00238 { return 0; };
 

@@ -4234,7 +4236,7 @@ Returning any nonzero value from this function stops the process immediately, ca

Returns:
1 to deny the NOTICE, 0 to allow it

-Definition at line 238 of file modules.cpp.

00238 { return 0; };
+Definition at line 237 of file modules.cpp.
00237 { return 0; };
 

@@ -4284,7 +4286,7 @@ The details of the exiting user are available to you in the parameter userrec *u

-Definition at line 223 of file modules.cpp.

00223 { }
+Definition at line 222 of file modules.cpp.
00222 { }
 

@@ -4324,7 +4326,7 @@ before the user is sent the MOTD etc). Modules can use this method if they are p

-Definition at line 250 of file modules.cpp.

00250 { };
+Definition at line 249 of file modules.cpp.
00249 { };
 

@@ -4374,7 +4376,7 @@ Called after every WALLOPS command.

-Definition at line 286 of file modules.cpp.

00286 { };
+Definition at line 285 of file modules.cpp.
00285 { };
 

@@ -4424,7 +4426,7 @@ The source parameter contains the details of the user who issued the WHOIS comma

-Definition at line 235 of file modules.cpp.

00235 { };
+Definition at line 234 of file modules.cpp.
00234 { };
 

@@ -4496,7 +4498,7 @@ More documentation to follow soon. Please see src/modules/m_swhois.cpp for examp

-Definition at line 285 of file modules.cpp.

00285 { };
+Definition at line 284 of file modules.cpp.
00284 { };
 

@@ -4562,7 +4564,7 @@ More documentation to follow soon. Please see src/modules/m_chanprotect.cpp for

-Definition at line 281 of file modules.cpp.

00281 { };
+Definition at line 280 of file modules.cpp.
00280 { };
 

@@ -4570,7 +4572,7 @@ Definition at line 281


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classModuleFactory-members.html b/docs/module-doc/classModuleFactory-members.html index 212914370..de3d70a0f 100644 --- a/docs/module-doc/classModuleFactory-members.html +++ b/docs/module-doc/classModuleFactory-members.html @@ -12,7 +12,7 @@ ModuleFactory()ModuleFactory [inline] ~classbase()classbase [inline] ~ModuleFactory()ModuleFactory [inline, virtual] -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classModuleFactory.html b/docs/module-doc/classModuleFactory.html index 096f37551..e21bbca4a 100644 --- a/docs/module-doc/classModuleFactory.html +++ b/docs/module-doc/classModuleFactory.html @@ -36,7 +36,7 @@ This is to allow for modules to create many different variants of

-Definition at line 1676 of file modules.h.


Constructor & Destructor Documentation

+Definition at line 1694 of file modules.h.

Constructor & Destructor Documentation

@@ -63,7 +63,7 @@ Definition at line 1676 o

-Definition at line 1679 of file modules.h.

01679 { }
+Definition at line 1697 of file modules.h.
01697 { }
 

@@ -95,7 +95,7 @@ Definition at line 1679 o

-Definition at line 1680 of file modules.h.

01680 { }
+Definition at line 1698 of file modules.h.
01698 { }
 

@@ -134,7 +134,7 @@ Your inherited class of ModuleFactory must return a pointer to your modules.h -


Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classModuleMessage-members.html b/docs/module-doc/classModuleMessage-members.html index bc697a2ef..dd93fb4b6 100644 --- a/docs/module-doc/classModuleMessage-members.html +++ b/docs/module-doc/classModuleMessage-members.html @@ -11,7 +11,7 @@
-
Send()=0ModuleMessage [pure virtual]
~classbase()classbase [inline]
~ModuleMessage()ModuleMessage [inline, virtual]


Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classModuleMessage.html b/docs/module-doc/classModuleMessage.html index 71f5fd7f2..c5ec9dd98 100644 --- a/docs/module-doc/classModuleMessage.html +++ b/docs/module-doc/classModuleMessage.html @@ -34,7 +34,7 @@ The ModuleMessage class is the base class of 143 of file modules.h.

Constructor & Destructor Documentation

+Definition at line 161 of file modules.h.

Constructor & Destructor Documentation

@@ -61,7 +61,7 @@ Definition at line 143 of

-Definition at line 149 of file modules.h.

00149 {};
+Definition at line 167 of file modules.h.
00167 {};
 

@@ -101,7 +101,7 @@ Implemented in Request, an


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classQLine-members.html b/docs/module-doc/classQLine-members.html index 0d85a935d..c47950a5e 100644 --- a/docs/module-doc/classQLine-members.html +++ b/docs/module-doc/classQLine-members.html @@ -16,7 +16,7 @@ set_timeXLine sourceXLine ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classQLine.html b/docs/module-doc/classQLine.html index 5cd4ea28d..14cb4d805 100644 --- a/docs/module-doc/classQLine.html +++ b/docs/module-doc/classQLine.html @@ -92,7 +92,7 @@ Definition at line 119 of f
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classRequest-members.html b/docs/module-doc/classRequest-members.html index 9f2ed1f7e..89f1a165b 100644 --- a/docs/module-doc/classRequest-members.html +++ b/docs/module-doc/classRequest-members.html @@ -18,7 +18,7 @@ sourceRequest [protected] ~classbase()classbase [inline] ~ModuleMessage()ModuleMessage [inline, virtual] -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classRequest.html b/docs/module-doc/classRequest.html index a42c65b8c..cca86ed51 100644 --- a/docs/module-doc/classRequest.html +++ b/docs/module-doc/classRequest.html @@ -57,7 +57,7 @@ When this class is properly instantiated it may be sent to a module using the

-Definition at line 157 of file modules.h.


Constructor & Destructor Documentation

+Definition at line 175 of file modules.h.

Constructor & Destructor Documentation

@@ -102,7 +102,7 @@ Create a new Request.

-Definition at line 165 of file modules.cpp.

00165 : data(anydata), source(src), dest(dst) { };
+Definition at line 164 of file modules.cpp.
00164 : data(anydata), source(src), dest(dst) { };
 

@@ -137,11 +137,11 @@ Fetch the Request data.

-Definition at line 167 of file modules.cpp. +Definition at line 166 of file modules.cpp.

-References data.

00168 {
-00169         return this->data;
-00170 }
+References data.
00167 {
+00168         return this->data;
+00169 }
 

@@ -175,11 +175,11 @@ Fetch the request destination (should be 'this' in the receiving module).

-Definition at line 177 of file modules.cpp. +Definition at line 176 of file modules.cpp.

-References dest.

00178 {
-00179         return this->dest;
-00180 }
+References dest.
00177 {
+00178         return this->dest;
+00179 }
 

@@ -213,11 +213,11 @@ Fetch the request source.

-Definition at line 172 of file modules.cpp. +Definition at line 171 of file modules.cpp.

-References source.

00173 {
-00174         return this->source;
-00175 }
+References source.
00172 {
+00173         return this->source;
+00174 }
 

@@ -253,18 +253,18 @@ Upon returning the result will be arbitary data returned by the module you sent

Implements ModuleMessage.

-Definition at line 182 of file modules.cpp. -

-References dest, and Module::OnRequest().

00183 {
-00184         if (this->dest)
-00185         {
-00186                 return dest->OnRequest(this);
-00187         }
-00188         else
-00189         {
-00190                 return NULL;
-00191         }
-00192 }
+Definition at line 181 of file modules.cpp.
+

+References dest, and Module::OnRequest().

00182 {
+00183         if (this->dest)
+00184         {
+00185                 return dest->OnRequest(this);
+00186         }
+00187         else
+00188         {
+00189                 return NULL;
+00190         }
+00191 }
 

@@ -295,9 +295,9 @@ This member holds a pointer to arbitary data set by the emitter of the message.

-Definition at line 162 of file modules.h. +Definition at line 180 of file modules.h.

-Referenced by GetData(). +Referenced by GetData().

@@ -324,9 +324,9 @@ The single destination of the Request.

-Definition at line 169 of file modules.h. +Definition at line 187 of file modules.h.

-Referenced by GetDest(), and Send(). +Referenced by GetDest(), and Send().

@@ -353,14 +353,14 @@ This is a pointer to the sender of the message, which can be used to directly tr

-Definition at line 166 of file modules.h. +Definition at line 184 of file modules.h.

-Referenced by GetSource(). +Referenced by GetSource().


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classServer-members.html b/docs/module-doc/classServer-members.html index a268ec1b6..cf95fac5f 100644 --- a/docs/module-doc/classServer-members.html +++ b/docs/module-doc/classServer-members.html @@ -6,7 +6,7 @@

Server Member List

This is the complete list of members for Server, including all inherited members.

- + @@ -69,7 +69,7 @@ -
AddCommand(char *cmd, handlerfunc f, char flags, int minparams, char *source)Server [virtual]
AddCommand(command_t *f)Server [virtual]
AddELine(long duration, std::string source, std::string reason, std::string hostmask)Server [virtual]
AddExtendedListMode(char modechar)Server [virtual]
AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off)Server [virtual]
UserToPseudo(userrec *user, std::string message)Server [virtual]
~classbase()classbase [inline]
~Server()Server [virtual]


Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classServer.html b/docs/module-doc/classServer.html index 21df2ba69..e7ec5d474 100644 --- a/docs/module-doc/classServer.html +++ b/docs/module-doc/classServer.html @@ -105,9 +105,9 @@ Inheritance diagram for Server:

virtual bool AddExtendedListMode (char modechar)  Adds an extended mode letter which is parsed by a module and handled in a list fashion.
-virtual void AddCommand (char *cmd, handlerfunc f, char flags, int minparams, char *source) +virtual void AddCommand (command_t *f) - Adds a command to the command table.
+ Adds a command to the command table.
virtual void SendMode (char **parameters, int pcnt, userrec *user)  Sends a servermode.
@@ -207,7 +207,7 @@ All modules should instantiate at least one copy of this class, and use its memb

-Definition at line 1096 of file modules.h.


Constructor & Destructor Documentation

+Definition at line 1114 of file modules.h.

Constructor & Destructor Documentation

@@ -236,8 +236,8 @@ Default constructor.

Creates a Server object.

-Definition at line 305 of file modules.cpp.

00306 {
-00307 }
+Definition at line 304 of file modules.cpp.
00305 {
+00306 }
 

@@ -271,15 +271,15 @@ Default destructor.

Destroys a Server object.

-Definition at line 309 of file modules.cpp.

00310 {
-00311 }
+Definition at line 308 of file modules.cpp.
00309 {
+00310 }
 


Member Function Documentation

-

+

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + +
@@ -287,37 +287,10 @@ Definition at line 309
void Server::AddCommand char *  cmd,
handlerfunc  f,
char  flags,
int  minparams,
char *  source
[virtual]command_t f  )  [virtual]
@@ -334,14 +307,14 @@ Definition at line 309 Adds a command to the command table.

This allows modules to add extra commands into the command table. You must place a function within your module which is is of type handlerfunc:

-typedef void (handlerfunc) (char**, int, userrec*); ... void handle_kill(char **parameters, int pcnt, userrec *user)

+typedef void (handlerfunc) (char**, int, userrec*); ... void handle_kill(char **parameters, int pcnt, userrec *user)

When the command is typed, the parameters will be placed into the parameters array (similar to argv) and the parameter count will be placed into pcnt (similar to argv). There will never be any less parameters than the 'minparams' value you specified when creating the command. The *user parameter is the class of the user which caused the command to trigger, who will always have the flag you specified in 'flags' when creating the initial command. For example to create an oper only command create the commands with flags='o'. The source parameter is used for resource tracking, and should contain the name of your module (with file extension) e.g. "m_blarp.so". If you place the wrong identifier here, you can cause crashes if your module is unloaded.

-Definition at line 416 of file modules.cpp. +Definition at line 415 of file modules.cpp.

-References createcommand().

00417 {
-00418         createcommand(cmd,f,flags,minparams,source);
-00419 }
+References InspIRCd::Parser.
00416 {
+00417         ServerInstance->Parser->CreateCommand(f);
+00418 }
 

@@ -397,11 +370,11 @@ Adds a E-line The E-line is enforced as soon as it is added.

The duration must be in seconds, however you can use the Server::CalcDuration method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.

-Definition at line 660 of file modules.cpp. +Definition at line 659 of file modules.cpp.

-References add_eline().

00661 {
-00662         add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-00663 }
+References add_eline().
00660 {
+00661         add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+00662 }
 

@@ -441,14 +414,14 @@ This call is used to implement modes like +q and +a. The characteristics of thes (4) The mode and its parameter are NOT stored in the channels modes structure

It is down to the module handling the mode to maintain state and determine what 'items' (e.g. users, or a banlist) have the mode set on them, and process the modes at the correct times, e.g. during access checks on channels, etc. When the extended mode is triggered the OnExtendedMode method will be triggered as above. Note that the target you are given will be a channel, if for example your mode is set 'on a user' (in for example +a) you must use Server::Find to locate the user the mode is operating on. Your mode handler may return 1 to handle the mode AND tell the core to display the mode change, e.g. '+aaa one two three' in the case of the mode for 'two', or it may return -1 to 'eat' the mode change, so the above example would become '+aa one three' after processing.

-Definition at line 584 of file modules.cpp. +Definition at line 583 of file modules.cpp.

-References DoAddExtendedMode(), ModeMakeList(), and MT_CHANNEL.

00585 {
-00586         bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1);
-00587         if (res)
-00588                 ModeMakeList(modechar);
-00589         return res;
-00590 }
+References DoAddExtendedMode(), ModeMakeList(), and MT_CHANNEL.
00584 {
+00585         bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1);
+00586         if (res)
+00587                 ModeMakeList(modechar);
+00588         return res;
+00589 }
 

@@ -510,34 +483,34 @@ Adds an extended mode letter which is parsed by a module.

This allows modules to add extra mode letters, e.g. +x for hostcloak. the "type" parameter is either MT_CHANNEL, MT_CLIENT, or MT_SERVER, to indicate wether the mode is a channel mode, a client mode, or a server mode. requires_oper is used with MT_CLIENT type modes only to indicate the mode can only be set or unset by an oper. If this is used for MT_CHANNEL type modes it is ignored. params_when_on is the number of modes to expect when the mode is turned on (for type MT_CHANNEL only), e.g. with mode +k, this would have a value of 1. the params_when_off value has a similar value to params_when_on, except it indicates the number of parameters to expect when the mode is disabled. Modes which act in a similar way to channel mode +l (e.g. require a parameter to enable, but not to disable) should use this parameter. The function returns false if the mode is unavailable, and will not attempt to allocate another character, as this will confuse users. This also means that as only one module can claim a specific mode character, the core does not need to keep track of which modules own which modes, which speeds up operation of the server. In this version, a mode can have at most one parameter, attempting to use more parameters will have undefined effects.

-Definition at line 556 of file modules.cpp. -

-References DEBUG, DoAddExtendedMode(), log(), MT_CLIENT, and MT_SERVER.

00557 {
-00558         if (((modechar >= 'A') && (modechar <= 'Z')) || ((modechar >= 'a') && (modechar <= 'z')))
-00559         {
-00560                 if (type == MT_SERVER)
-00561                 {
-00562                         log(DEBUG,"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion");
-00563                         return false;
-00564                 }
-00565                 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT))
-00566                 {
-00567                         log(DEBUG,"*** API ERROR *** Parameters on MT_CLIENT modes are not supported");
-00568                         return false;
-00569                 }
-00570                 if ((params_when_on>1) || (params_when_off>1))
-00571                 {
-00572                         log(DEBUG,"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported");
-00573                         return false;
-00574                 }
-00575                 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off);
-00576         }
-00577         else
-00578         {
-00579                 log(DEBUG,"*** API ERROR *** Muppet modechar detected.");
-00580         }
-00581         return false;
-00582 }
+Definition at line 555 of file modules.cpp.
+

+References DEBUG, DoAddExtendedMode(), log(), MT_CLIENT, and MT_SERVER.

00556 {
+00557         if (((modechar >= 'A') && (modechar <= 'Z')) || ((modechar >= 'a') && (modechar <= 'z')))
+00558         {
+00559                 if (type == MT_SERVER)
+00560                 {
+00561                         log(DEBUG,"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion");
+00562                         return false;
+00563                 }
+00564                 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT))
+00565                 {
+00566                         log(DEBUG,"*** API ERROR *** Parameters on MT_CLIENT modes are not supported");
+00567                         return false;
+00568                 }
+00569                 if ((params_when_on>1) || (params_when_off>1))
+00570                 {
+00571                         log(DEBUG,"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported");
+00572                         return false;
+00573                 }
+00574                 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off);
+00575         }
+00576         else
+00577         {
+00578                 log(DEBUG,"*** API ERROR *** Muppet modechar detected.");
+00579         }
+00580         return false;
+00581 }
 

@@ -593,11 +566,11 @@ Adds a G-line The G-line is propogated to all of the servers in the mesh and enf

The duration must be in seconds, however you can use the Server::CalcDuration method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.

-Definition at line 640 of file modules.cpp. +Definition at line 639 of file modules.cpp.

-References add_gline().

00641 {
-00642         add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-00643 }
+References add_gline().
00640 {
+00641         add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+00642 }
 

@@ -653,11 +626,11 @@ Adds a K-line The K-line is enforced as soon as it is added.

The duration must be in seconds, however you can use the Server::CalcDuration method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.

-Definition at line 655 of file modules.cpp. +Definition at line 654 of file modules.cpp.

-References add_kline().

00656 {
-00657         add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
-00658 }
+References add_kline().
00655 {
+00656         add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str());
+00657 }
 

@@ -713,11 +686,11 @@ Adds a Q-line The Q-line is propogated to all of the servers in the mesh and enf

The duration must be in seconds, however you can use the Server::CalcDuration method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.

-Definition at line 645 of file modules.cpp. +Definition at line 644 of file modules.cpp.

-References add_qline().

00646 {
-00647         add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str());
-00648 }
+References add_qline().
00645 {
+00646         add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str());
+00647 }
 

@@ -752,11 +725,11 @@ Adds a class derived from InspSocket

-Definition at line 313 of file modules.cpp. +Definition at line 312 of file modules.cpp.

-References module_sockets.

00314 {
-00315         module_sockets.push_back(sock);
-00316 }
+References module_sockets.
00313 {
+00314         module_sockets.push_back(sock);
+00315 }
 

@@ -812,11 +785,11 @@ Adds a Z-line The Z-line is propogated to all of the servers in the mesh and enf

The duration must be in seconds, however you can use the Server::CalcDuration method to convert durations into the 1w2d3h3m6s format used by /GLINE etc. The source is an arbitary string used to indicate who or what sent the data, usually this is the nickname of a person, or a server name.

-Definition at line 650 of file modules.cpp. +Definition at line 649 of file modules.cpp.

-References add_zline().

00651 {
-00652         add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str());
-00653 }
+References add_zline().
00650 {
+00651         add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str());
+00652 }
 

@@ -851,11 +824,11 @@ Calculates a duration This method will take a string containing a formatted dura

"1w2d") and return its value as a total number of seconds. This is the same function used internally by /GLINE etc to set the ban times.

-Definition at line 690 of file modules.cpp. +Definition at line 689 of file modules.cpp.

-References duration().

00691 {
-00692         return duration(delta.c_str());
-00693 }
+References duration().
00690 {
+00691         return duration(delta.c_str());
+00692 }
 

@@ -910,13 +883,13 @@ References AddCommand(). The second parameter is an array of parameters, and the third parameter is a count of parameters in the array. If you do not pass enough parameters to meet the minimum needed by the handler, the functiom will silently ignore it. The final parameter is the user executing the command handler, used for privilage checks, etc. +) you may use them as callback identifiers. The first parameter to this method is the name of the command handler you wish to call, e.g. PRIVMSG. This will be a command handler previously registered by the core or wih AddCommand(). The second parameter is an array of parameters, and the third parameter is a count of parameters in the array. If you do not pass enough parameters to meet the minimum needed by the handler, the functiom will silently ignore it. The final parameter is the user executing the command handler, used for privilage checks, etc.

-Definition at line 401 of file modules.cpp. +Definition at line 400 of file modules.cpp.

-References call_handler().

00402 {
-00403         call_handler(commandname.c_str(),parameters,pcnt,user);
-00404 }
+References InspIRCd::Parser.
00401 {
+00402         ServerInstance->Parser->CallHandler(commandname,parameters,pcnt,user);
+00403 }
 

@@ -960,11 +933,11 @@ Change GECOS (fullname) of a user.

You should always call this method to change a user's GECOS rather than writing directly to the fullname member of userrec, as any change applied via this method will be propogated to any linked servers.

-Definition at line 499 of file modules.cpp. +Definition at line 498 of file modules.cpp.

-References ChangeName().

00500 {
-00501         ChangeName(user,gecos.c_str());
-00502 }
+References ChangeName().
00499 {
+00500         ChangeName(user,gecos.c_str());
+00501 }
 

@@ -1008,11 +981,11 @@ Change displayed hostname of a user.

You should always call this method to change a user's host rather than writing directly to the dhost member of userrec, as any change applied via this method will be propogated to any linked servers.

-Definition at line 494 of file modules.cpp. +Definition at line 493 of file modules.cpp.

-References ChangeDisplayedHost().

00495 {
-00496         ChangeDisplayedHost(user,host.c_str());
-00497 }
+References ChangeDisplayedHost().
00494 {
+00495         ChangeDisplayedHost(user,host.c_str());
+00496 }
 

@@ -1056,11 +1029,11 @@ Forces a user nickchange.

This command works similarly to SVSNICK, and can be used to implement Q-lines etc. If you specify an invalid nickname, the nick change will be dropped and the target user will receive the error numeric for it.

-Definition at line 386 of file modules.cpp. +Definition at line 385 of file modules.cpp.

-References force_nickchange().

00387 {
-00388         force_nickchange(user,nickname.c_str());
-00389 }
+References force_nickchange().
00386 {
+00387         force_nickchange(user,nickname.c_str());
+00388 }
 

@@ -1104,11 +1077,11 @@ Attempts to look up a user's privilages on a channel.

This function will return a string containing either @, %, +, or an empty string, representing the user's privilages upon the channel you specify.

-Definition at line 524 of file modules.cpp. +Definition at line 523 of file modules.cpp.

-References cmode().

00525 {
-00526         return cmode(User,Chan);
-00527 }
+References cmode().
00524 {
+00525         return cmode(User,Chan);
+00526 }
 

@@ -1152,11 +1125,11 @@ Returns true if two users share a common channel.

This method is used internally by the NICK and QUIT commands, and the Server::SendCommon method.

-Definition at line 472 of file modules.cpp. +Definition at line 471 of file modules.cpp.

-References common_channels().

00473 {
-00474         return (common_channels(u1,u2) != 0);
-00475 }
+References common_channels().
00472 {
+00473         return (common_channels(u1,u2) != 0);
+00474 }
 

@@ -1191,9 +1164,9 @@ Returns a count of the number of users on a channel.

This will NEVER be 0, as if the chanrec exists, it will have at least one user in the channel.

-Definition at line 592 of file modules.cpp.

00593 {
-00594         return usercount(c);
-00595 }
+Definition at line 591 of file modules.cpp.
00592 {
+00593         return usercount(c);
+00594 }
 

@@ -1228,11 +1201,11 @@ Deletes a local E-Line.

-Definition at line 685 of file modules.cpp. +Definition at line 684 of file modules.cpp.

-References del_eline().

00686 {
-00687         return del_eline(hostmask.c_str());
-00688 }
+References del_eline().
00685 {
+00686         return del_eline(hostmask.c_str());
+00687 }
 

@@ -1267,11 +1240,11 @@ Deletes a G-Line from all servers on the mesh.

-Definition at line 665 of file modules.cpp. +Definition at line 664 of file modules.cpp.

-References del_gline().

00666 {
-00667         return del_gline(hostmask.c_str());
-00668 }
+References del_gline().
00665 {
+00666         return del_gline(hostmask.c_str());
+00667 }
 

@@ -1306,11 +1279,11 @@ Deletes a local K-Line.

-Definition at line 680 of file modules.cpp. +Definition at line 679 of file modules.cpp.

-References del_kline().

00681 {
-00682         return del_kline(hostmask.c_str());
-00683 }
+References del_kline().
00680 {
+00681         return del_kline(hostmask.c_str());
+00682 }
 

@@ -1345,11 +1318,11 @@ Deletes a Q-Line from all servers on the mesh.

-Definition at line 670 of file modules.cpp. +Definition at line 669 of file modules.cpp.

-References del_qline().

00671 {
-00672         return del_qline(nickname.c_str());
-00673 }
+References del_qline().
00670 {
+00671         return del_qline(nickname.c_str());
+00672 }
 

@@ -1384,18 +1357,18 @@ Deletes a class derived from InspSocke

-Definition at line 334 of file modules.cpp. +Definition at line 333 of file modules.cpp.

-References module_sockets.

00335 {
-00336         for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++)
-00337         {
-00338                 if (*a == sock)
-00339                 {
-00340                         module_sockets.erase(a);
-00341                         return;
-00342                 }
-00343         }
-00344 }
+References module_sockets.
00334 {
+00335         for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++)
+00336         {
+00337                 if (*a == sock)
+00338                 {
+00339                         module_sockets.erase(a);
+00340                         return;
+00341                 }
+00342         }
+00343 }
 

@@ -1430,11 +1403,11 @@ Deletes a Z-Line from all servers on the mesh.

-Definition at line 675 of file modules.cpp. +Definition at line 674 of file modules.cpp.

-References del_zline().

00676 {
-00677         return del_zline(ipaddr.c_str());
-00678 }
+References del_zline().
00675 {
+00676         return del_zline(ipaddr.c_str());
+00677 }
 

@@ -1469,11 +1442,11 @@ Attempts to look up a channel and return a pointer to it.

This function will return NULL if the channel does not exist.

-Definition at line 519 of file modules.cpp. +Definition at line 518 of file modules.cpp.

-References FindChan().

00520 {
-00521         return FindChan(channel.c_str());
-00522 }
+References FindChan().
00519 {
+00520         return FindChan(channel.c_str());
+00521 }
 

@@ -1508,9 +1481,9 @@ Attempts to look up a nick using the file descriptor associated with that nick.

This function will return NULL if the file descriptor is not associated with a valid user.

-Definition at line 514 of file modules.cpp.

00515 {
-00516         return (socket < 65536 ? fd_ref_table[socket] : NULL);
-00517 }
+Definition at line 513 of file modules.cpp.
00514 {
+00515         return (socket < 65536 ? fd_ref_table[socket] : NULL);
+00516 }
 

@@ -1545,18 +1518,18 @@ This function finds a module by name.

You must provide the filename of the module. If the module cannot be found (is not loaded) the function will return NULL.

-Definition at line 724 of file modules.cpp. -

-References MODCOUNT, ServerConfig::module_names, and modules.

00725 {
-00726         for (int i = 0; i <= MODCOUNT; i++)
-00727         {
-00728                 if (Config->module_names[i] == name)
-00729                 {
-00730                         return modules[i];
-00731                 }
-00732         }
-00733         return NULL;
-00734 }
+Definition at line 723 of file modules.cpp.
+

+References MODCOUNT, ServerConfig::module_names, and modules.

00724 {
+00725         for (int i = 0; i <= MODCOUNT; i++)
+00726         {
+00727                 if (Config->module_names[i] == name)
+00728                 {
+00729                         return modules[i];
+00730                 }
+00731         }
+00732         return NULL;
+00733 }
 

@@ -1591,11 +1564,11 @@ Attempts to look up a nick and return a pointer to it.

This function will return NULL if the nick does not exist.

-Definition at line 509 of file modules.cpp. +Definition at line 508 of file modules.cpp.

-References Find().

00510 {
-00511         return Find(nick);
-00512 }
+References Find().
00509 {
+00510         return Find(nick);
+00511 }
 

@@ -1629,11 +1602,11 @@ Returns the information of the server as returned by the /ADMIN command.

See the Admin class for further information of the return value. The members Admin::Nick, Admin::Email and Admin::Name contain the information for the server where the module is loaded.

-Definition at line 549 of file modules.cpp. +Definition at line 548 of file modules.cpp.

-References ServerConfig::AdminEmail, ServerConfig::AdminName, and ServerConfig::AdminNick.

00550 {
-00551         return Admin(Config->AdminName,Config->AdminEmail,Config->AdminNick);
-00552 }
+References ServerConfig::AdminEmail, ServerConfig::AdminName, and ServerConfig::AdminNick.
00549 {
+00550         return Admin(Config->AdminName,Config->AdminEmail,Config->AdminNick);
+00551 }
 

@@ -1667,9 +1640,9 @@ Obtains a pointer to the server's Se

The ServerConfig object contains most of the configuration data of the IRC server, as read from the config file by the core.

-Definition at line 324 of file modules.cpp.

00325 {
-00326         return Config;
-00327 }
+Definition at line 323 of file modules.cpp.
00324 {
+00325         return Config;
+00326 }
 

@@ -1703,11 +1676,11 @@ Returns the network name, global to all linked servers.

-Definition at line 539 of file modules.cpp. +Definition at line 538 of file modules.cpp.

-References ServerConfig::Network.

00540 {
-00541         return Config->Network;
-00542 }
+References ServerConfig::Network.
00539 {
+00540         return Config->Network;
+00541 }
 

@@ -1741,11 +1714,11 @@ Returns the server description string of the local server.

-Definition at line 544 of file modules.cpp. +Definition at line 543 of file modules.cpp.

-References ServerConfig::ServerDesc.

00545 {
-00546         return Config->ServerDesc;
-00547 }
+References ServerConfig::ServerDesc.
00544 {
+00545         return Config->ServerDesc;
+00546 }
 

@@ -1779,11 +1752,11 @@ Returns the server name of the server where the module is loaded.

-Definition at line 534 of file modules.cpp. +Definition at line 533 of file modules.cpp.

-References ServerConfig::ServerName.

00535 {
-00536         return Config->ServerName;
-00537 }
+References ServerConfig::ServerName.
00534 {
+00535         return Config->ServerName;
+00536 }
 

@@ -1818,19 +1791,19 @@ Fetches the userlist of a channel.

This function must be here and not a member of userrec or chanrec due to include constraints.

-Definition at line 374 of file modules.cpp. -

-References chanrec::GetUsers().

00375 {
-00376         chanuserlist userl;
-00377         userl.clear();
-00378         std::vector<char*> *list = chan->GetUsers();
-00379         for (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++)
-00380         {
-00381                 char* o = *i;
-00382                 userl.push_back((userrec*)o);
-00383         }
-00384         return userl;
-00385 }
+Definition at line 373 of file modules.cpp.
+

+References chanrec::GetUsers().

00374 {
+00375         chanuserlist userl;
+00376         userl.clear();
+00377         std::vector<char*> *list = chan->GetUsers();
+00378         for (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++)
+00379         {
+00380                 char* o = *i;
+00381                 userl.push_back((userrec*)o);
+00382         }
+00383         return userl;
+00384 }
 

@@ -1864,11 +1837,11 @@ Returns the version string of this server.

-Definition at line 329 of file modules.cpp. +Definition at line 328 of file modules.cpp.

-References InspIRCd::GetVersionString().

00330 {
-00331         return ServerInstance->GetVersionString();
-00332 }
+References InspIRCd::GetVersionString().
00329 {
+00330         return ServerInstance->GetVersionString();
+00331 }
 

@@ -1903,11 +1876,11 @@ Returns true if a nick is valid.

Nicks for unregistered connections will return false.

-Definition at line 504 of file modules.cpp. +Definition at line 503 of file modules.cpp.

-References isnick().

00505 {
-00506         return (isnick(nick.c_str()) != 0);
-00507 }
+References isnick().
00504 {
+00505         return (isnick(nick.c_str()) != 0);
+00506 }
 

@@ -1951,11 +1924,11 @@ Checks if a user is on a channel.

This function will return true or false to indicate if user 'User' is on channel 'Chan'.

-Definition at line 529 of file modules.cpp. +Definition at line 528 of file modules.cpp.

-References has_channel().

00530 {
-00531         return has_channel(User,Chan);
-00532 }
+References has_channel().
00529 {
+00530         return has_channel(User,Chan);
+00531 }
 

@@ -1990,11 +1963,11 @@ Returns true if the servername you give is ulined.

ULined servers have extra privilages. They are allowed to change nicknames on remote servers, change modes of clients which are on remote servers and set modes of channels where there are no channel operators for that channel on the ulined server, amongst other things. Ulined server data is also broadcast across the mesh at all times as opposed to selectively messaged in the case of normal servers, as many ulined server types (such as services) do not support meshed links and must operate in this manner.

-Definition at line 396 of file modules.cpp. +Definition at line 395 of file modules.cpp.

-References is_uline().

00397 {
-00398         return is_uline(server.c_str());
-00399 }
+References is_uline().
00396 {
+00397         return is_uline(server.c_str());
+00398 }
 

@@ -2029,33 +2002,33 @@ Returns true if a nick!ident string is correctly formatted, false if otherwise.

-Definition at line 695 of file modules.cpp.

00696 {
-00697         const char* dest = mask.c_str();
-00698         if (strchr(dest,'!')==0)
-00699                 return false;
-00700         if (strchr(dest,'@')==0)
-00701                 return false;
-00702         for (unsigned int i = 0; i < strlen(dest); i++)
-00703                 if (dest[i] < 32)
-00704                         return false;
-00705         for (unsigned int i = 0; i < strlen(dest); i++)
-00706                 if (dest[i] > 126)
-00707                         return false;
-00708         unsigned int c = 0;
-00709         for (unsigned int i = 0; i < strlen(dest); i++)
-00710                 if (dest[i] == '!')
-00711                         c++;
-00712         if (c>1)
-00713                 return false;
-00714         c = 0;
-00715         for (unsigned int i = 0; i < strlen(dest); i++)
-00716                 if (dest[i] == '@')
-00717                         c++;
-00718         if (c>1)
-00719                 return false;
-00720 
-00721         return true;
-00722 }
+Definition at line 694 of file modules.cpp.
00695 {
+00696         const char* dest = mask.c_str();
+00697         if (strchr(dest,'!')==0)
+00698                 return false;
+00699         if (strchr(dest,'@')==0)
+00700                 return false;
+00701         for (unsigned int i = 0; i < strlen(dest); i++)
+00702                 if (dest[i] < 32)
+00703                         return false;
+00704         for (unsigned int i = 0; i < strlen(dest); i++)
+00705                 if (dest[i] > 126)
+00706                         return false;
+00707         unsigned int c = 0;
+00708         for (unsigned int i = 0; i < strlen(dest); i++)
+00709                 if (dest[i] == '!')
+00710                         c++;
+00711         if (c>1)
+00712                 return false;
+00713         c = 0;
+00714         for (unsigned int i = 0; i < strlen(dest); i++)
+00715                 if (dest[i] == '@')
+00716                         c++;
+00717         if (c>1)
+00718                 return false;
+00719 
+00720         return true;
+00721 }
 

@@ -2103,11 +2076,11 @@ Definition at line 695

-Definition at line 406 of file modules.cpp. +Definition at line 405 of file modules.cpp.

-References is_valid_cmd().

00407 {
-00408         return is_valid_cmd(commandname.c_str(), pcnt, user);
-00409 }
+References InspIRCd::Parser.
00406 {
+00407         return ServerInstance->Parser->IsValidCommand(commandname, pcnt, user);
+00408 }
 

@@ -2157,11 +2130,11 @@ Forces a user to join a channel.

This is similar to svsjoin and can be used to implement redirection, etc. On success, the return value is a valid pointer to a chanrec* of the channel the user was joined to. On failure, the result is NULL.

-Definition at line 364 of file modules.cpp. +Definition at line 363 of file modules.cpp.

-References add_channel().

00365 {
-00366         return add_channel(user,cname.c_str(),key.c_str(),false);
-00367 }
+References add_channel().
00364 {
+00365         return add_channel(user,cname.c_str(),key.c_str(),false);
+00366 }
 

@@ -2205,11 +2178,11 @@ Writes a log string.

This method writes a line of text to the log. If the level given is lower than the level given in the configuration, this command has no effect.

-Definition at line 411 of file modules.cpp. +Definition at line 410 of file modules.cpp.

-References log().

00412 {
-00413         log(level,"%s",s.c_str());
-00414 }
+References log().
00411 {
+00412         log(level,"%s",s.c_str());
+00413 }
 

@@ -2253,12 +2226,12 @@ Matches text against a glob pattern.

Uses the ircd's internal matching function to match string against a globbing pattern, e.g. *!*@*.com Returns true if the literal successfully matches the pattern, false if otherwise.

-Definition at line 351 of file modules.cpp.

00352 {
-00353         char literal[MAXBUF],pattern[MAXBUF];
-00354         strlcpy(literal,sliteral.c_str(),MAXBUF);
-00355         strlcpy(pattern,spattern.c_str(),MAXBUF);
-00356         return match(literal,pattern);
-00357 }
+Definition at line 350 of file modules.cpp.
00351 {
+00352         char literal[MAXBUF],pattern[MAXBUF];
+00353         strlcpy(literal,sliteral.c_str(),MAXBUF);
+00354         strlcpy(pattern,spattern.c_str(),MAXBUF);
+00355         return match(literal,pattern);
+00356 }
 

@@ -2308,11 +2281,11 @@ Forces a user to part a channel.

This is similar to svspart and can be used to implement redirection, etc. Although the return value of this function is a pointer to a channel record, the returned data is undefined and should not be read or written to. This behaviour may be changed in a future version.

-Definition at line 369 of file modules.cpp. +Definition at line 368 of file modules.cpp.

-References del_channel().

00370 {
-00371         return del_channel(user,cname.c_str(),reason.c_str(),false);
-00372 }
+References del_channel().
00369 {
+00370         return del_channel(user,cname.c_str(),reason.c_str(),false);
+00371 }
 

@@ -2362,36 +2335,36 @@ This user takes one user, and switches their file descriptor with another user,

The user in 'alive' is booted off the server with the given message. The user referred to by 'zombie' should have previously been locked with Server::ZombifyUser, otherwise stale sockets and file descriptor leaks can occur. After this call, the pointer to alive will be invalid, and the pointer to zombie will be equivalent in effect to the old pointer to alive.

-Definition at line 610 of file modules.cpp. -

-References userrec::chans, userrec::ClearBuffer(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, kill_link(), chanrec::name, userrec::nick, chanrec::setby, chanrec::topic, chanrec::topicset, Write(), WriteFrom(), and WriteServ().

00611 {
-00612         zombie->fd = alive->fd;
-00613         alive->fd = FD_MAGIC_NUMBER;
-00614         alive->ClearBuffer();
-00615         Write(zombie->fd,":%s!%s@%s NICK %s",alive->nick,alive->ident,alive->host,zombie->nick);
-00616         kill_link(alive,message.c_str());
-00617         fd_ref_table[zombie->fd] = zombie;
-00618         for (unsigned int i = 0; i < zombie->chans.size(); i++)
-00619         {
-00620                 if (zombie->chans[i].channel != NULL)
-00621                 {
-00622                         if (zombie->chans[i].channel->name)
-00623                         {
-00624                                 chanrec* Ptr = zombie->chans[i].channel;
-00625                                 WriteFrom(zombie->fd,zombie,"JOIN %s",Ptr->name);
-00626                                 if (Ptr->topicset)
-00627                                 {
-00628                                         WriteServ(zombie->fd,"332 %s %s :%s", zombie->nick, Ptr->name, Ptr->topic);
-00629                                         WriteServ(zombie->fd,"333 %s %s %s %d", zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset);
-00630                                 }
-00631                                 userlist(zombie,Ptr);
-00632                                 WriteServ(zombie->fd,"366 %s %s :End of /NAMES list.", zombie->nick, Ptr->name);
-00633 
-00634                         }
-00635                 }
-00636         }
-00637         return true;
-00638 }
+Definition at line 609 of file modules.cpp.
+

+References userrec::chans, userrec::ClearBuffer(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, kill_link(), chanrec::name, userrec::nick, chanrec::setby, chanrec::topic, chanrec::topicset, Write(), WriteFrom(), and WriteServ().

00610 {
+00611         zombie->fd = alive->fd;
+00612         alive->fd = FD_MAGIC_NUMBER;
+00613         alive->ClearBuffer();
+00614         Write(zombie->fd,":%s!%s@%s NICK %s",alive->nick,alive->ident,alive->host,zombie->nick);
+00615         kill_link(alive,message.c_str());
+00616         fd_ref_table[zombie->fd] = zombie;
+00617         for (unsigned int i = 0; i < zombie->chans.size(); i++)
+00618         {
+00619                 if (zombie->chans[i].channel != NULL)
+00620                 {
+00621                         if (zombie->chans[i].channel->name)
+00622                         {
+00623                                 chanrec* Ptr = zombie->chans[i].channel;
+00624                                 WriteFrom(zombie->fd,zombie,"JOIN %s",Ptr->name);
+00625                                 if (Ptr->topicset)
+00626                                 {
+00627                                         WriteServ(zombie->fd,"332 %s %s :%s", zombie->nick, Ptr->name, Ptr->topic);
+00628                                         WriteServ(zombie->fd,"333 %s %s %s %d", zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset);
+00629                                 }
+00630                                 userlist(zombie,Ptr);
+00631                                 WriteServ(zombie->fd,"366 %s %s :End of /NAMES list.", zombie->nick, Ptr->name);
+00632 
+00633                         }
+00634                 }
+00635         }
+00636         return true;
+00637 }
 

@@ -2437,11 +2410,11 @@ To the user, it will appear as if they typed /QUIT themselves, except for the fa WARNING!

Once you call this function, userrec* user will immediately become INVALID. You MUST NOT write to, or read from this pointer after calling the QuitUser method UNDER ANY CIRCUMSTANCES! The best course of action after calling this method is to immediately bail from your handler.

-Definition at line 391 of file modules.cpp. +Definition at line 390 of file modules.cpp.

-References kill_link().

00392 {
-00393         kill_link(user,reason.c_str());
-00394 }
+References kill_link().
00391 {
+00392         kill_link(user,reason.c_str());
+00393 }
 

@@ -2473,12 +2446,12 @@ References 318 of file modules.cpp. +Definition at line 317 of file modules.cpp.

-References ServerConfig::Read(), and WriteOpers().

00319 {
-00320         WriteOpers("*** Rehashing config file");
-00321         Config->Read(false,NULL);
-00322 }
+References ServerConfig::Read(), and WriteOpers().
00318 {
+00319         WriteOpers("*** Rehashing config file");
+00320         Config->Read(false,NULL);
+00321 }
 

@@ -2522,11 +2495,11 @@ Sends a line of text down a TCP/IP socket.

This method writes a line of text to an established socket, cutting it to 510 characters plus a carriage return and linefeed if required.

-Definition at line 426 of file modules.cpp. +Definition at line 425 of file modules.cpp.

-References Write().

00427 {
-00428         Write(Socket,"%s",s.c_str());
-00429 }
+References Write().
00426 {
+00427         Write(Socket,"%s",s.c_str());
+00428 }
 

@@ -2582,18 +2555,18 @@ Sends text from a user to a channel (mulicast).

This method writes a line of text to a channel, with the given user's nick/ident /host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in MODE (see RFC 1459).

-Definition at line 460 of file modules.cpp. -

-References ChanExceptSender(), and WriteChannel().

00461 {
-00462         if (IncludeSender)
-00463         {
-00464                 WriteChannel(Channel,User,"%s",s.c_str());
-00465         }
-00466         else
-00467         {
-00468                 ChanExceptSender(Channel,User,"%s",s.c_str());
-00469         }
-00470 }
+Definition at line 459 of file modules.cpp.
+

+References ChanExceptSender(), and WriteChannel().

00460 {
+00461         if (IncludeSender)
+00462         {
+00463                 WriteChannel(Channel,User,"%s",s.c_str());
+00464         }
+00465         else
+00466         {
+00467                 ChanExceptSender(Channel,User,"%s",s.c_str());
+00468         }
+00469 }
 

@@ -2643,9 +2616,9 @@ Writes text to a channel, but from a server, including all.

This can be used to send server notices to a group of users.

-Definition at line 455 of file modules.cpp.

00456 {
-00457         WriteChannelWithServ((char*)ServName.c_str(), Channel, "%s", text.c_str());
-00458 }
+Definition at line 454 of file modules.cpp.
00455 {
+00456         WriteChannelWithServ((char*)ServName.c_str(), Channel, "%s", text.c_str());
+00457 }
 

@@ -2695,18 +2668,18 @@ Sends text from a user to one or more channels (mulicast).

This method writes a line of text to all users which share a common channel with a given user, with the user's nick/ident/host combination prepended, as used in PRIVMSG etc commands (see RFC 1459). If the IncludeSender flag is set, then the text is also sent back to the user from which it originated, as seen in NICK (see RFC 1459). Otherwise, it is only sent to the other recipients, as seen in QUIT.

-Definition at line 477 of file modules.cpp. -

-References WriteCommon(), and WriteCommonExcept().

00478 {
-00479         if (IncludeSender)
-00480         {
-00481                 WriteCommon(User,"%s",text.c_str());
-00482         }
-00483         else
-00484         {
-00485                 WriteCommonExcept(User,"%s",text.c_str());
-00486         }
-00487 }
+Definition at line 476 of file modules.cpp.
+

+References WriteCommon(), and WriteCommonExcept().

00477 {
+00478         if (IncludeSender)
+00479         {
+00480                 WriteCommon(User,"%s",text.c_str());
+00481         }
+00482         else
+00483         {
+00484                 WriteCommonExcept(User,"%s",text.c_str());
+00485         }
+00486 }
 

@@ -2756,11 +2729,11 @@ Sends text from a user to a socket.

This method writes a line of text to an established socket, with the given user's nick/ident /host combination prepended, as used in PRIVSG etc commands (see RFC 1459)

-Definition at line 436 of file modules.cpp. +Definition at line 435 of file modules.cpp.

-References WriteFrom().

00437 {
-00438         WriteFrom(Socket,User,"%s",s.c_str());
-00439 }
+References WriteFrom().
00436 {
+00437         WriteFrom(Socket,User,"%s",s.c_str());
+00438 }
 

@@ -2817,11 +2790,11 @@ modes[2] = user->nick;

Srv->SendMode(modes,3,user);

The modes will originate from the server where the command was issued, however responses (e.g. numerics) will be sent to the user you provide as the third parameter. You must be sure to get the number of parameters correct in the pcnt parameter otherwise you could leave your server in an unstable state!

-Definition at line 421 of file modules.cpp. +Definition at line 420 of file modules.cpp.

-References server_mode().

00422 {
-00423         server_mode(parameters,pcnt,user);
-00424 }
+References InspIRCd::ModeGrok, and ModeParser::ServerMode().
00421 {
+00422         ServerInstance->ModeGrok->ServerMode(parameters,pcnt,user);
+00423 }
 

@@ -2856,11 +2829,11 @@ Sends text to all opers.

This method sends a server notice to all opers with the usermode +s.

-Definition at line 346 of file modules.cpp. +Definition at line 345 of file modules.cpp.

-References WriteOpers().

00347 {
-00348         WriteOpers("%s",s.c_str());
-00349 }
+References WriteOpers().
00346 {
+00347         WriteOpers("%s",s.c_str());
+00348 }
 

@@ -2904,11 +2877,11 @@ Sends text from the server to a socket.

This method writes a line of text to an established socket, with the servername prepended as used by numerics (see RFC 1459)

-Definition at line 431 of file modules.cpp. +Definition at line 430 of file modules.cpp.

-References WriteServ().

00432 {
-00433         WriteServ(Socket,"%s",s.c_str());
-00434 }
+References WriteServ().
00431 {
+00432         WriteServ(Socket,"%s",s.c_str());
+00433 }
 

@@ -2962,20 +2935,20 @@ The format will become:

:localserver TEXT

Which is useful for numerics and server notices to single users, etc.

-Definition at line 441 of file modules.cpp. -

-References connection::fd, Write(), and WriteTo().

00442 {
-00443         if (!Source)
-00444         {
-00445                 // if source is NULL, then the message originates from the local server
-00446                 Write(Dest->fd,":%s %s",this->GetServerName().c_str(),s.c_str());
-00447         }
-00448         else
-00449         {
-00450                 // otherwise it comes from the user specified
-00451                 WriteTo(Source,Dest,"%s",s.c_str());
-00452         }
-00453 }
+Definition at line 440 of file modules.cpp.
+

+References connection::fd, Write(), and WriteTo().

00441 {
+00442         if (!Source)
+00443         {
+00444                 // if source is NULL, then the message originates from the local server
+00445                 Write(Dest->fd,":%s %s",this->GetServerName().c_str(),s.c_str());
+00446         }
+00447         else
+00448         {
+00449                 // otherwise it comes from the user specified
+00450                 WriteTo(Source,Dest,"%s",s.c_str());
+00451         }
+00452 }
 

@@ -3027,9 +3000,9 @@ These can be RFC specified modes such as +i, or module provided modes, including Serv->SendToModeMask("xi", WM_OR, "m00");

Then the text 'm00' will be sent to all users with EITHER mode x or i. Conversely if you used WM_AND, the user must have both modes set to receive the message.

-Definition at line 359 of file modules.cpp.

00360 {
-00361         WriteMode(modes.c_str(),flags,"%s",text.c_str());
-00362 }
+Definition at line 358 of file modules.cpp.
00359 {
+00360         WriteMode(modes.c_str(),flags,"%s",text.c_str());
+00361 }
 

@@ -3073,11 +3046,11 @@ Sends a WALLOPS message.

This method writes a WALLOPS message to all users with the +w flag, originating from the specified user.

-Definition at line 489 of file modules.cpp. +Definition at line 488 of file modules.cpp.

-References WriteWallOps().

00490 {
-00491         WriteWallOps(User,false,"%s",text.c_str());
-00492 }
+References WriteWallOps().
00489 {
+00490         WriteWallOps(User,false,"%s",text.c_str());
+00491 }
 

@@ -3121,18 +3094,18 @@ Remove a user's connection to the irc server, but leave their client in existenc

When you call this function, the user's file descriptor will be replaced with the value of FD_MAGIC_NUMBER and their old file descriptor will be closed. This idle client will remain until it is restored with a valid file descriptor, or is removed from IRC by an operator After this call, the pointer to user will be invalid.

-Definition at line 598 of file modules.cpp. -

-References userrec::ClearBuffer(), SocketEngine::DelFd(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, and Write().

00599 {
-00600         unsigned int old_fd = user->fd;
-00601         user->fd = FD_MAGIC_NUMBER;
-00602         user->ClearBuffer();
-00603         Write(old_fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,message.c_str());
-00604         SE->DelFd(old_fd);
-00605         shutdown(old_fd,2);
-00606         close(old_fd);
-00607         return true;
-00608 }
+Definition at line 597 of file modules.cpp.
+

+References userrec::ClearBuffer(), SocketEngine::DelFd(), connection::fd, FD_MAGIC_NUMBER, connection::host, userrec::ident, InspIRCd::SE, and Write().

00598 {
+00599         unsigned int old_fd = user->fd;
+00600         user->fd = FD_MAGIC_NUMBER;
+00601         user->ClearBuffer();
+00602         Write(old_fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,message.c_str());
+00603         ServerInstance->SE->DelFd(old_fd);
+00604         shutdown(old_fd,2);
+00605         close(old_fd);
+00606         return true;
+00607 }
 

@@ -3140,7 +3113,7 @@ References userrec::ClearBuff


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classServerConfig-members.html b/docs/module-doc/classServerConfig-members.html index 6093b0551..0913e0c3e 100644 --- a/docs/module-doc/classServerConfig-members.html +++ b/docs/module-doc/classServerConfig-members.html @@ -6,6 +6,7 @@

ServerConfig Member List

This is the complete list of members for ServerConfig, including all inherited members.

+ @@ -20,6 +21,7 @@ + @@ -29,7 +31,9 @@ + + @@ -49,15 +53,15 @@ - + -
AddIOHook(int port, Module *iomod)ServerConfig
addrsServerConfig
AdminEmailServerConfig
AdminNameServerConfig
ConfValue(char *tag, char *var, int index, char *result, std::stringstream *config)ServerConfig
ConfValueEnum(char *tag, std::stringstream *config)ServerConfig
debuggingServerConfig
DelIOHook(int port)ServerConfig
DieDelayServerConfig
diepassServerConfig
DieValueServerConfig
EnumConf(std::stringstream *config_f, const char *tag)ServerConfig
EnumValues(std::stringstream *config, const char *tag, int index)ServerConfig
fgets_safe(char *buffer, size_t maxsize, FILE *&file)ServerConfig [private]
GetIOHook(int port)ServerConfig
include_stackServerConfig [private]
IOHookModuleServerConfig
LoadConf(const char *filename, std::stringstream *target, std::stringstream *errorstream)ServerConfig
log_fileServerConfig
LogLevelServerConfig
Read(bool bail, userrec *user)ServerConfig
ReadConf(std::stringstream *config_f, const char *tag, const char *var, int index, char *result)ServerConfig
restartpassServerConfig
rulesServerConfig
RULESServerConfig
rulesServerConfig
ServerConfig()ServerConfig
ServerDescServerConfig
ServerNameServerConfig
SoftLimitServerConfig
unlimitcoreServerConfig
~classbase()classbase [inline]


Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classServerConfig.html b/docs/module-doc/classServerConfig.html index 990abb166..28c2a00f4 100644 --- a/docs/module-doc/classServerConfig.html +++ b/docs/module-doc/classServerConfig.html @@ -16,7 +16,7 @@ Inheritance diagram for ServerConfig:

[legend]
Collaboration diagram for ServerConfig:

Collaboration graph
- +
[legend]
List of all members. @@ -41,6 +41,12 @@ Inheritance diagram for ServerConfig:

int 
+ + + + + + @@ -149,6 +155,9 @@ Inheritance diagram for ServerConfig:

int 
+ + + @@ -168,7 +177,7 @@ It allows for reading new config values, accessing configuration files, and stor

-Definition at line 39 of file inspircd_io.h.


Constructor & Destructor Documentation

+Definition at line 40 of file inspircd_io.h.

Constructor & Destructor Documentation

EnumValues (std::stringstream *config, const char *tag, int index)
ModuleGetIOHook (int port)
bool AddIOHook (int port, Module *iomod)
bool DelIOHook (int port)

Public Attributes

char ServerName [MAXBUF]
ports [255]
 A list of ports which the server is listening on.
std::map< int, Module * > IOHookModule
 A list of ports claimed by IO Modules.

Private Member Functions

int fgets_safe (char *buffer, size_t maxsize, FILE *&file)
@@ -197,6 +206,43 @@ Definition at line 39

Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + +
bool ServerConfig::AddIOHook int  port,
Module iomod
+
+ + + + + +
+   + + +

+

@@ -225,7 +271,7 @@ Clears the include stack in preperation for a ConfigReader::ConfigReader(). +Referenced by ConfigReader::ConfigReader().

@@ -339,7 +385,7 @@ This private method processes one line of configutation, appending errors to err

-Referenced by userrec::HasPermission(). +Referenced by userrec::HasPermission().

@@ -375,6 +421,34 @@ Referenced by userrec::HasPer +

+ + + +

+ + + + +
+ + + + + + + + + +
bool ServerConfig::DelIOHook int  port  ) 
+
+ + + + @@ -415,7 +489,7 @@ Referenced by userrec::HasPer

-Referenced by ConfigReader::Enumerate(). +Referenced by ConfigReader::Enumerate().

+   + +

@@ -460,7 +534,7 @@ Referenced by ConfigReader:

-Referenced by ConfigReader::EnumerateValues(). +Referenced by ConfigReader::EnumerateValues().

@@ -508,6 +582,36 @@ Used by the config file subsystem to safely read a C-style string without depend it can read both windows and UNIX style linefeeds transparently. +

+ + + + +
+ + + + + + + + + +
Module* ServerConfig::GetIOHook int  port  ) 
+
+ + + + + +
+   + + +

+ +

+Referenced by kill_link(), and kill_link_silent().

@@ -550,7 +654,7 @@ it can read both windows and UNIX style linefeeds transparently.

-Referenced by ConfigReader::ConfigReader(). +Referenced by ConfigReader::ConfigReader().

@@ -591,7 +695,7 @@ Read the entire configuration into memory and initialize this class.

All other methods should be used only by the core.

-Referenced by Server::RehashServer(). +Referenced by Server::RehashServer().

@@ -648,7 +752,7 @@ Referenced by Server::Rehas

-Referenced by ConfigReader::ReadFlag(), ConfigReader::ReadInteger(), and ConfigReader::ReadValue(). +Referenced by ConfigReader::ReadFlag(), ConfigReader::ReadInteger(), and ConfigReader::ReadValue().


Member Data Documentation

@@ -676,7 +780,7 @@ A list of IP addresses the server is listening on.

-Definition at line 216 of file inspircd_io.h. +Definition at line 217 of file inspircd_io.h.

@@ -703,9 +807,9 @@ Holds the email address of the admin, for output in the /ADMIN command.

-Definition at line 89 of file inspircd_io.h. +Definition at line 90 of file inspircd_io.h.

-Referenced by Server::GetAdmin(). +Referenced by Server::GetAdmin().

@@ -732,9 +836,9 @@ Holds the admin's name, for output in the /ADMIN command.

-Definition at line 84 of file inspircd_io.h. +Definition at line 85 of file inspircd_io.h.

-Referenced by Server::GetAdmin(). +Referenced by Server::GetAdmin().

@@ -761,9 +865,9 @@ Holds the admin's nickname, for output in the /ADMIN command.

-Definition at line 94 of file inspircd_io.h. +Definition at line 95 of file inspircd_io.h.

-Referenced by Server::GetAdmin(). +Referenced by Server::GetAdmin().

@@ -790,7 +894,7 @@ If this value is true, halfops have been enabled in the configuration file.

-Definition at line 171 of file inspircd_io.h. +Definition at line 172 of file inspircd_io.h.

@@ -817,7 +921,9 @@ The connect classes in use by the IRC server.

-Definition at line 242 of file inspircd_io.h. +Definition at line 243 of file inspircd_io.h. +

+Referenced by AddClient().

@@ -844,9 +950,9 @@ The parsed configuration file as a stringstream.

You should pass this to any configuration methods of this class, and not access it directly. It is recommended that modules use ConfigReader instead which provides a simpler abstraction of configuration files.

-Definition at line 238 of file inspircd_io.h. +Definition at line 239 of file inspircd_io.h.

-Referenced by userrec::HasPermission(). +Referenced by userrec::HasPermission().

@@ -873,7 +979,7 @@ True if the DEBUG loglevel is selected.

-Definition at line 202 of file inspircd_io.h. +Definition at line 203 of file inspircd_io.h.

@@ -900,7 +1006,7 @@ How many seconds to wait before exiting the program when /DIE is correctly issue

-Definition at line 211 of file inspircd_io.h. +Definition at line 212 of file inspircd_io.h.

@@ -927,7 +1033,7 @@ The admin-configured /DIE password.

-Definition at line 98 of file inspircd_io.h. +Definition at line 99 of file inspircd_io.h.

@@ -954,7 +1060,7 @@ The last string found within a <die> tag, or an empty string.

-Definition at line 121 of file inspircd_io.h. +Definition at line 122 of file inspircd_io.h.

@@ -981,7 +1087,7 @@ This variable contains a space-seperated list of commands which are disabled by

-Definition at line 131 of file inspircd_io.h. +Definition at line 132 of file inspircd_io.h.

@@ -1008,7 +1114,9 @@ The number of seconds the DNS subsystem w

-Definition at line 176 of file inspircd_io.h. +Definition at line 177 of file inspircd_io.h. +

+Referenced by AddClient().

@@ -1035,7 +1143,7 @@ The DNS server to use for

-Definition at line 125 of file inspircd_io.h. +Definition at line 126 of file inspircd_io.h.

@@ -1062,7 +1170,34 @@ This variable holds the names of all files included from the main one.

This is used to make sure that no files are recursively included.

-Definition at line 47 of file inspircd_io.h. +Definition at line 48 of file inspircd_io.h. + + +

+ + + + +
+ + + + +
std::map<int,Module*> ServerConfig::IOHookModule
+
+ + + +
+   + + +

+A list of ports claimed by IO Modules. +

+ +

+Definition at line 256 of file inspircd_io.h.

@@ -1089,7 +1224,7 @@ The file handle of the logfile.

If this value is NULL, the log file is not open, probably due to a permissions error on startup (this should not happen in normal operation!).

-Definition at line 151 of file inspircd_io.h. +Definition at line 152 of file inspircd_io.h.

@@ -1116,7 +1251,7 @@ The loglevel in use by the IRC server.

-Definition at line 206 of file inspircd_io.h. +Definition at line 207 of file inspircd_io.h.

@@ -1143,7 +1278,7 @@ The value to be used for listen() backlogs as default.

-Definition at line 187 of file inspircd_io.h. +Definition at line 188 of file inspircd_io.h.

@@ -1170,7 +1305,7 @@ The maximum number of /WHO results allowed in any single /WHO command.

-Definition at line 198 of file inspircd_io.h. +Definition at line 199 of file inspircd_io.h.

@@ -1197,7 +1332,7 @@ The full path to the modules directory.

This is either set at compile time, or overridden in the configuration file via the <options> tag.

-Definition at line 138 of file inspircd_io.h. +Definition at line 139 of file inspircd_io.h.

@@ -1224,9 +1359,9 @@ A list of module names (names only, no paths) which are currently loaded by the

-Definition at line 247 of file inspircd_io.h. +Definition at line 248 of file inspircd_io.h.

-Referenced by Server::FindModule(). +Referenced by Server::FindModule().

@@ -1253,7 +1388,7 @@ The MOTD file, cached in a file_cache type.

-Definition at line 220 of file inspircd_io.h. +Definition at line 221 of file inspircd_io.h.

@@ -1280,7 +1415,7 @@ The pathname and filename of the message of the day file, as defined by the admi

-Definition at line 107 of file inspircd_io.h. +Definition at line 108 of file inspircd_io.h.

@@ -1307,7 +1442,7 @@ The full pathname to the executable, as given in argv[0] when the program starts

-Definition at line 143 of file inspircd_io.h. +Definition at line 144 of file inspircd_io.h.

@@ -1334,7 +1469,7 @@ The size of the read() buffer in the user handling code, used to read data into

-Definition at line 182 of file inspircd_io.h. +Definition at line 183 of file inspircd_io.h.

@@ -1359,9 +1494,9 @@ Definition at line 182

-Definition at line 74 of file inspircd_io.h. +Definition at line 75 of file inspircd_io.h.

-Referenced by Server::GetNetworkName(). +Referenced by FullConnectUser(), and Server::GetNetworkName().

@@ -1388,7 +1523,7 @@ If this value is true, the owner of the server specified -nofork on the command

-Definition at line 158 of file inspircd_io.h. +Definition at line 159 of file inspircd_io.h.

@@ -1415,7 +1550,7 @@ The full pathname and filename of the PID file as defined in the configuration.

-Definition at line 229 of file inspircd_io.h. +Definition at line 230 of file inspircd_io.h.

@@ -1442,7 +1577,7 @@ A list of ports which the server is listening on.

-Definition at line 251 of file inspircd_io.h. +Definition at line 252 of file inspircd_io.h.

@@ -1469,7 +1604,7 @@ The quit prefix in use, or an empty string.

-Definition at line 116 of file inspircd_io.h. +Definition at line 117 of file inspircd_io.h.

@@ -1496,7 +1631,7 @@ The admin-configured /RESTART password.

-Definition at line 102 of file inspircd_io.h. +Definition at line 103 of file inspircd_io.h.

@@ -1523,7 +1658,7 @@ The RULES file, cached in a file_cache type.

-Definition at line 224 of file inspircd_io.h. +Definition at line 225 of file inspircd_io.h.

@@ -1550,7 +1685,7 @@ The pathname and filename of the rules file, as defined by the administrator.

-Definition at line 112 of file inspircd_io.h. +Definition at line 113 of file inspircd_io.h.

@@ -1577,9 +1712,9 @@ Holds the description of the local server as defined by the administrator.

-Definition at line 79 of file inspircd_io.h. +Definition at line 80 of file inspircd_io.h.

-Referenced by Server::GetServerDescription(). +Referenced by Server::GetServerDescription().

@@ -1606,9 +1741,9 @@ Holds the server name of the local server as defined by the administrator.

-Definition at line 68 of file inspircd_io.h. +Definition at line 69 of file inspircd_io.h.

-Referenced by Server::GetServerName(), and userrec::userrec(). +Referenced by AddClient(), FullConnectUser(), Server::GetServerName(), and userrec::userrec().

@@ -1635,7 +1770,9 @@ The soft limit value assigned to the irc server.

The IRC server will not allow more than this number of local users.

-Definition at line 193 of file inspircd_io.h. +Definition at line 194 of file inspircd_io.h. +

+Referenced by AddClient().

@@ -1662,12 +1799,12 @@ If this value is true, the owner of the server has chosen to unlimit the coredum

This is often used when debugging.

-Definition at line 166 of file inspircd_io.h. +Definition at line 167 of file inspircd_io.h.


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classServerConfig__coll__graph.map b/docs/module-doc/classServerConfig__coll__graph.map index aca75f307..c18c2ef12 100644 --- a/docs/module-doc/classServerConfig__coll__graph.map +++ b/docs/module-doc/classServerConfig__coll__graph.map @@ -1,2 +1,2 @@ base referer -rect $classclassbase.html 38,12 118,39 +rect $classclassbase.html 40,11 120,37 diff --git a/docs/module-doc/classServerConfig__coll__graph.md5 b/docs/module-doc/classServerConfig__coll__graph.md5 index 8b64681f9..19bbc1210 100644 --- a/docs/module-doc/classServerConfig__coll__graph.md5 +++ b/docs/module-doc/classServerConfig__coll__graph.md5 @@ -1 +1 @@ -ccb417531b2d5c8c500f80e926167613 \ No newline at end of file +6622bf16a5d6e3d1fa66d187c3430dae \ No newline at end of file diff --git a/docs/module-doc/classSocketEngine-members.html b/docs/module-doc/classSocketEngine-members.html index 4a2c4f319..2ba70b22c 100644 --- a/docs/module-doc/classSocketEngine-members.html +++ b/docs/module-doc/classSocketEngine-members.html @@ -17,7 +17,7 @@ tsSocketEngine [private] Wait(std::vector< int > &fdlist)SocketEngine ~SocketEngine()SocketEngine -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classSocketEngine.html b/docs/module-doc/classSocketEngine.html index 76c76d918..0dedef254 100644 --- a/docs/module-doc/classSocketEngine.html +++ b/docs/module-doc/classSocketEngine.html @@ -83,7 +83,7 @@ Please note that if there is a catastrophic failure (for example, you try and en

Definition at line 35 of file socketengine.cpp.

-References DEBUG, EngineHandle, and log().

00036 {
+References DEBUG, EngineHandle, and log().
00036 {
 00037         log(DEBUG,"SocketEngine::SocketEngine()");
 00038 #ifdef USE_EPOLL
 00039         EngineHandle = epoll_create(65535);
@@ -127,7 +127,7 @@ Destructor The destructor transparently tidies up any resources used by the sock
 

Definition at line 46 of file socketengine.cpp.

-References DEBUG, EngineHandle, and log().

00047 {
+References DEBUG, EngineHandle, and log().
00047 {
 00048         log(DEBUG,"SocketEngine::~SocketEngine()");
 00049 #ifdef USE_EPOLL
 00050         close(EngineHandle);
@@ -188,9 +188,9 @@ You must provide a type (see the consts in 65 of file socketengine.cpp.
 

-References DEBUG, EngineHandle, fds, log(), ref, and X_READBIT. +References DEBUG, EngineHandle, fds, log(), ref, and X_READBIT.

-Referenced by InspSocket::InspSocket(), and InspSocket::Poll().

00066 {
+Referenced by AddClient(), InspSocket::InspSocket(), and InspSocket::Poll().
00066 {
 00067         if ((fd < 0) || (fd > 65535))
 00068                 return false;
 00069         this->fds.push_back(fd);
@@ -262,9 +262,9 @@ Delete a file descriptor f rom the engine This function call deletes a file desc
 

Definition at line 103 of file socketengine.cpp.

-References DEBUG, EngineHandle, fds, log(), ref, and X_READBIT. +References DEBUG, EngineHandle, fds, log(), ref, and X_READBIT.

-Referenced by InspSocket::Poll(), and Server::UserToPseudo().

00104 {
+Referenced by kill_link(), kill_link_silent(), InspSocket::Poll(), and Server::UserToPseudo().
00104 {
 00105         log(DEBUG,"SocketEngine::DelFd(%d)",fd);
 00106 
 00107         if ((fd < 0) || (fd > 65535))
@@ -589,7 +589,7 @@ Referenced by Wait()
 
The documentation for this class was generated from the following files:
-
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classVersion-members.html b/docs/module-doc/classVersion-members.html index 8463f70f4..d86eb68ce 100644 --- a/docs/module-doc/classVersion-members.html +++ b/docs/module-doc/classVersion-members.html @@ -15,7 +15,7 @@ RevisionVersion Version(int major, int minor, int revision, int build, int flags)Version ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classVersion.html b/docs/module-doc/classVersion.html index d2b5d2220..d9be95e78 100644 --- a/docs/module-doc/classVersion.html +++ b/docs/module-doc/classVersion.html @@ -42,7 +42,7 @@ A class of type Version is returned by the GetVersion method of the 113 of file modules.h.

Constructor & Destructor Documentation

+Definition at line 131 of file modules.h.

Constructor & Destructor Documentation

@@ -97,7 +97,7 @@ Definition at line 113 of

-Definition at line 159 of file modules.cpp.

00159 : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
+Definition at line 158 of file modules.cpp.
00158 : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { };
 

@@ -126,7 +126,7 @@ Definition at line 159

-Definition at line 116 of file modules.h. +Definition at line 134 of file modules.h.

@@ -151,7 +151,7 @@ Definition at line 116 of

-Definition at line 116 of file modules.h. +Definition at line 134 of file modules.h.

@@ -176,7 +176,7 @@ Definition at line 116 of

-Definition at line 116 of file modules.h. +Definition at line 134 of file modules.h.

@@ -201,7 +201,7 @@ Definition at line 116 of

-Definition at line 116 of file modules.h. +Definition at line 134 of file modules.h.

@@ -226,12 +226,12 @@ Definition at line 116 of

-Definition at line 116 of file modules.h. +Definition at line 134 of file modules.h.


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classWhoWasUser-members.html b/docs/module-doc/classWhoWasUser-members.html index 1139e562e..6e562e76f 100644 --- a/docs/module-doc/classWhoWasUser-members.html +++ b/docs/module-doc/classWhoWasUser-members.html @@ -13,7 +13,7 @@ nickWhoWasUser serverWhoWasUser signonWhoWasUser -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classWhoWasUser.html b/docs/module-doc/classWhoWasUser.html index f12e98d57..0a32092aa 100644 --- a/docs/module-doc/classWhoWasUser.html +++ b/docs/module-doc/classWhoWasUser.html @@ -34,7 +34,7 @@ A lightweight userrec used by WHOWAS.

-Definition at line 332 of file users.h.


Member Data Documentation

+Definition at line 336 of file users.h.

Member Data Documentation

@@ -57,7 +57,9 @@ Definition at line 332 of f

-Definition at line 337 of file users.h. +Definition at line 341 of file users.h. +

+Referenced by AddWhoWas().

@@ -82,7 +84,9 @@ Definition at line 337 of f

-Definition at line 339 of file users.h. +Definition at line 343 of file users.h. +

+Referenced by AddWhoWas().

@@ -107,7 +111,9 @@ Definition at line 339 of f

-Definition at line 338 of file users.h. +Definition at line 342 of file users.h. +

+Referenced by AddWhoWas().

@@ -132,7 +138,9 @@ Definition at line 338 of f

-Definition at line 336 of file users.h. +Definition at line 340 of file users.h. +

+Referenced by AddWhoWas().

@@ -157,7 +165,9 @@ Definition at line 336 of f

-Definition at line 335 of file users.h. +Definition at line 339 of file users.h. +

+Referenced by AddWhoWas().

@@ -182,7 +192,9 @@ Definition at line 335 of f

-Definition at line 340 of file users.h. +Definition at line 344 of file users.h. +

+Referenced by AddWhoWas().

@@ -207,12 +219,14 @@ Definition at line 340 of f

-Definition at line 341 of file users.h. +Definition at line 345 of file users.h. +

+Referenced by AddWhoWas().


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classXLine-members.html b/docs/module-doc/classXLine-members.html index f6812f058..d31eb7759 100644 --- a/docs/module-doc/classXLine-members.html +++ b/docs/module-doc/classXLine-members.html @@ -14,7 +14,7 @@ set_timeXLine sourceXLine ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classXLine.html b/docs/module-doc/classXLine.html index e031d7638..385859750 100644 --- a/docs/module-doc/classXLine.html +++ b/docs/module-doc/classXLine.html @@ -185,7 +185,7 @@ Definition at line 53 of fi
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classZLine-members.html b/docs/module-doc/classZLine-members.html index b2c982668..21ad50226 100644 --- a/docs/module-doc/classZLine-members.html +++ b/docs/module-doc/classZLine-members.html @@ -16,7 +16,7 @@ set_timeXLine sourceXLine ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classZLine.html b/docs/module-doc/classZLine.html index 335760d10..caef06faf 100644 --- a/docs/module-doc/classZLine.html +++ b/docs/module-doc/classZLine.html @@ -92,7 +92,7 @@ Definition at line 108 of f
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classchanrec-members.html b/docs/module-doc/classchanrec-members.html index edb7982d7..3512117d8 100644 --- a/docs/module-doc/classchanrec-members.html +++ b/docs/module-doc/classchanrec-members.html @@ -34,7 +34,7 @@ topicsetchanrec ~chanrec()chanrec [inline, virtual] ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classchanrec.html b/docs/module-doc/classchanrec.html index ec4daab2b..228e998ed 100644 --- a/docs/module-doc/classchanrec.html +++ b/docs/module-doc/classchanrec.html @@ -123,18 +123,18 @@ Creates a channel record and initialises it with default values.

-Definition at line 74 of file channels.cpp. -

-References binarymodes, created, custom_modes, internal_userlist, key, limit, name, setby, topic, and topicset.

00075 {
-00076         strcpy(name,"");
-00077         strcpy(custom_modes,"");
-00078         strcpy(topic,"");
-00079         strcpy(setby,"");
-00080         strcpy(key,"");
-00081         created = topicset = limit = 0;
-00082         binarymodes = 0;
-00083         internal_userlist.clear();
-00084 }
+Definition at line 73 of file channels.cpp.
+

+References binarymodes, created, custom_modes, internal_userlist, key, limit, name, setby, topic, and topicset.

00074 {
+00075         strcpy(name,"");
+00076         strcpy(custom_modes,"");
+00077         strcpy(topic,"");
+00078         strcpy(setby,"");
+00079         strcpy(key,"");
+00080         created = topicset = limit = 0;
+00081         binarymodes = 0;
+00082         internal_userlist.clear();
+00083 }
 

@@ -207,14 +207,14 @@ Add a user pointer to the internal reference list. The data inserted into the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.

-Definition at line 167 of file channels.cpp. +Definition at line 166 of file channels.cpp.

-References DEBUG, internal_userlist, and log(). +References DEBUG, internal_userlist, and log().

-Referenced by ForceChan().

00168 {
-00169         internal_userlist.push_back(castuser);
-00170         log(DEBUG,"Added casted user to channel's internal list");
-00171 }
+Referenced by ForceChan().
00167 {
+00168         internal_userlist.push_back(castuser);
+00169         log(DEBUG,"Added casted user to channel's internal list");
+00170 }
 

@@ -254,22 +254,22 @@ Delete a user pointer to the internal reference list. The data removed from the reference list is a table as it is an arbitary pointer compared to other users by its memory address, as this is a very fast 32 or 64 bit integer comparison.

-Definition at line 173 of file channels.cpp. -

-References DEBUG, internal_userlist, log(), and name. -

-Referenced by del_channel(), and kick_channel().

00174 {
-00175         for (std::vector<char*>::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++)
-00176         {
-00177                 if (*a == castuser)
-00178                 {
-00179                         log(DEBUG,"Removed casted user from channel's internal list");
-00180                         internal_userlist.erase(a);
-00181                         return;
-00182                 }
-00183         }
-00184         log(DEBUG,"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!",name);
-00185 }
+Definition at line 172 of file channels.cpp.
+

+References DEBUG, internal_userlist, log(), and name. +

+Referenced by del_channel(), and kick_channel().

00173 {
+00174         for (std::vector<char*>::iterator a = internal_userlist.begin(); a < internal_userlist.end(); a++)
+00175         {
+00176                 if (*a == castuser)
+00177                 {
+00178                         log(DEBUG,"Removed casted user from channel's internal list");
+00179                         internal_userlist.erase(a);
+00180                         return;
+00181                 }
+00182         }
+00183         log(DEBUG,"BUG BUG BUG! Attempt to remove an uncasted user from the internal list of %s!",name);
+00184 }
 

@@ -311,21 +311,21 @@ For example if "+L #foo" is set, and you pass this method 'L', it will return 'f

Returns:
The parameter for this mode is returned, or an empty string

-Definition at line 147 of file channels.cpp. -

-References custom_mode_params.

00148 {
-00149         if (custom_mode_params.size())
-00150         {
-00151                 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
-00152                 {
-00153                         if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
-00154                         {
-00155                                 return i->parameter;
-00156                         }
-00157                 }
-00158         }
-00159         return "";
-00160 }
+Definition at line 146 of file channels.cpp.
+

+References custom_mode_params.

00147 {
+00148         if (custom_mode_params.size())
+00149         {
+00150                 for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
+00151                 {
+00152                         if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
+00153                         {
+00154                                 return i->parameter;
+00155                         }
+00156                 }
+00157         }
+00158         return "";
+00159 }
 

@@ -360,9 +360,9 @@ Obtain the channel "user counter" This returns the channel reference counter, wh

Returns:
The number of users on this channel

-Definition at line 162 of file channels.cpp.

00163 {
-00164         return (this->internal_userlist.size());
-00165 }
+Definition at line 161 of file channels.cpp.
00162 {
+00163         return (this->internal_userlist.size());
+00164 }
 

@@ -398,13 +398,13 @@ These are used for rapid comparison to determine channel membership for PRIVMSG,

Returns:
This function returns a vector of userrec pointers, each of which has been casted to char* to prevent circular references

-Definition at line 187 of file channels.cpp. +Definition at line 186 of file channels.cpp.

References internal_userlist.

-Referenced by Server::GetUsers().

00188 {
-00189         return &internal_userlist;
-00190 }
+Referenced by Server::GetUsers().
00187 {
+00188         return &internal_userlist;
+00189 }
 

@@ -445,9 +445,9 @@ Returns true if a custom mode is set on a channel.

Returns:
True if the custom mode is set, false if otherwise

-Definition at line 142 of file channels.cpp.

00143 {
-00144         return (strchr(this->custom_modes,mode));
-00145 }
+Definition at line 141 of file channels.cpp.
00142 {
+00143         return (strchr(this->custom_modes,mode));
+00144 }
 

@@ -497,30 +497,30 @@ Sets or unsets a custom mode in the channels info.

-Definition at line 86 of file channels.cpp. -

-References custom_modes, DEBUG, log(), and SetCustomModeParam().

00087 {
-00088         if (mode_on) {
-00089                 static char m[3];
-00090                 m[0] = mode;
-00091                 m[1] = '\0';
-00092                 if (!strchr(this->custom_modes,mode))
-00093                 {
-00094                         strlcat(custom_modes,m,MAXMODES);
-00095                 }
-00096                 log(DEBUG,"Custom mode %c set",mode);
-00097         }
-00098         else {
-00099 
-00100                 std::string a = this->custom_modes;
-00101                 int pos = a.find(mode);
-00102                 a.erase(pos,1);
-00103                 strncpy(this->custom_modes,a.c_str(),MAXMODES);
-00104 
-00105                 log(DEBUG,"Custom mode %c removed: modelist='%s'",mode,this->custom_modes);
-00106                 this->SetCustomModeParam(mode,"",false);
-00107         }
-00108 }
+Definition at line 85 of file channels.cpp.
+

+References custom_modes, DEBUG, log(), and SetCustomModeParam().

00086 {
+00087         if (mode_on) {
+00088                 static char m[3];
+00089                 m[0] = mode;
+00090                 m[1] = '\0';
+00091                 if (!strchr(this->custom_modes,mode))
+00092                 {
+00093                         strlcat(custom_modes,m,MAXMODES);
+00094                 }
+00095                 log(DEBUG,"Custom mode %c set",mode);
+00096         }
+00097         else {
+00098 
+00099                 std::string a = this->custom_modes;
+00100                 int pos = a.find(mode);
+00101                 a.erase(pos,1);
+00102                 strncpy(this->custom_modes,a.c_str(),MAXMODES);
+00103 
+00104                 log(DEBUG,"Custom mode %c removed: modelist='%s'",mode,this->custom_modes);
+00105                 this->SetCustomModeParam(mode,"",false);
+00106         }
+00107 }
 

@@ -577,39 +577,39 @@ Sets or unsets the parameters for a custom mode in a channels info.

-Definition at line 111 of file channels.cpp. -

-References ModeParameter::channel, custom_mode_params, DEBUG, log(), ModeParameter::mode, and ModeParameter::parameter. -

-Referenced by SetCustomMode().

00112 {
-00113 
-00114         log(DEBUG,"SetCustomModeParam called");
-00115         ModeParameter M;
-00116         M.mode = mode;
-00117         strlcpy(M.channel,this->name,CHANMAX);
-00118         strlcpy(M.parameter,parameter,MAXBUF);
-00119         if (mode_on)
-00120         {
-00121                 log(DEBUG,"Custom mode parameter %c %s added",mode,parameter);
-00122                 custom_mode_params.push_back(M);
-00123         }
-00124         else
-00125         {
-00126                 if (custom_mode_params.size())
-00127                 {
-00128                         for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
-00129                         {
-00130                                 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
-00131                                 {
-00132                                         log(DEBUG,"Custom mode parameter %c %s removed",mode,parameter);
-00133                                         custom_mode_params.erase(i);
-00134                                         return;
-00135                                 }
-00136                         }
-00137                 }
-00138                 log(DEBUG,"*** BUG *** Attempt to remove non-existent mode parameter!");
-00139         }
-00140 }
+Definition at line 110 of file channels.cpp.
+

+References ModeParameter::channel, custom_mode_params, DEBUG, log(), ModeParameter::mode, and ModeParameter::parameter. +

+Referenced by SetCustomMode().

00111 {
+00112 
+00113         log(DEBUG,"SetCustomModeParam called");
+00114         ModeParameter M;
+00115         M.mode = mode;
+00116         strlcpy(M.channel,this->name,CHANMAX);
+00117         strlcpy(M.parameter,parameter,MAXBUF);
+00118         if (mode_on)
+00119         {
+00120                 log(DEBUG,"Custom mode parameter %c %s added",mode,parameter);
+00121                 custom_mode_params.push_back(M);
+00122         }
+00123         else
+00124         {
+00125                 if (custom_mode_params.size())
+00126                 {
+00127                         for (vector<ModeParameter>::iterator i = custom_mode_params.begin(); i < custom_mode_params.end(); i++)
+00128                         {
+00129                                 if ((i->mode == mode) && (!strcasecmp(this->name,i->channel)))
+00130                                 {
+00131                                         log(DEBUG,"Custom mode parameter %c %s removed",mode,parameter);
+00132                                         custom_mode_params.erase(i);
+00133                                         return;
+00134                                 }
+00135                         }
+00136                 }
+00137                 log(DEBUG,"*** BUG *** Attempt to remove non-existent mode parameter!");
+00138         }
+00139 }
 

@@ -642,7 +642,7 @@ The list of all bans set on the channel.

Definition at line 151 of file channels.h.

-Referenced by add_channel(). +Referenced by add_channel().

@@ -671,7 +671,7 @@ Contains a bitmask of the CM_* builtin (RFC) binary mode symbols.

Definition at line 147 of file channels.h.

-Referenced by add_channel(), and chanrec(). +Referenced by add_channel(), and chanrec().

@@ -700,7 +700,7 @@ Creation time.

Definition at line 125 of file channels.h.

-Referenced by chanrec(). +Referenced by chanrec().

@@ -729,7 +729,7 @@ Plugins may use this field in any way they see fit.

Definition at line 112 of file channels.h.

-Referenced by chanrec(), and SetCustomMode(). +Referenced by chanrec(), and SetCustomMode().

@@ -758,7 +758,7 @@ User list (casted to char*'s to stop forward declaration stuff) (chicken and egg

Definition at line 117 of file channels.h.

-Referenced by AddUser(), chanrec(), DelUser(), and GetUsers(). +Referenced by AddUser(), chanrec(), DelUser(), and GetUsers().

@@ -787,7 +787,7 @@ If this value is an empty string, there is no channel key in place.

Definition at line 143 of file channels.h.

-Referenced by add_channel(), and chanrec(). +Referenced by add_channel(), and chanrec().

@@ -816,7 +816,7 @@ If this value is zero, there is no limit in place.

Definition at line 138 of file channels.h.

-Referenced by add_channel(), and chanrec(). +Referenced by add_channel(), and chanrec().

@@ -845,7 +845,7 @@ The channels name.

Definition at line 108 of file channels.h.

-Referenced by add_channel(), chanrec(), del_channel(), DelUser(), ForceChan(), kick_channel(), and Server::PseudoToUser(). +Referenced by add_channel(), chanrec(), del_channel(), DelUser(), ForceChan(), kick_channel(), and Server::PseudoToUser().

@@ -874,7 +874,7 @@ If this member is an empty string, no topic was ever set.

Definition at line 133 of file channels.h.

-Referenced by chanrec(), ForceChan(), and Server::PseudoToUser(). +Referenced by chanrec(), ForceChan(), and Server::PseudoToUser().

@@ -903,7 +903,7 @@ If this is an empty string, no channel topic is set.

Definition at line 122 of file channels.h.

-Referenced by chanrec(), ForceChan(), and Server::PseudoToUser(). +Referenced by chanrec(), ForceChan(), and Server::PseudoToUser().

@@ -932,12 +932,12 @@ If no topic was ever set, this will be equal to 129 of file channels.h.

-Referenced by chanrec(), ForceChan(), and Server::PseudoToUser(). +Referenced by chanrec(), ForceChan(), and Server::PseudoToUser().


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classclassbase-members.html b/docs/module-doc/classclassbase-members.html index 6ebcc98e8..2b22f303a 100644 --- a/docs/module-doc/classclassbase-members.html +++ b/docs/module-doc/classclassbase-members.html @@ -9,7 +9,7 @@ ageclassbase classbase()classbase [inline] ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classclassbase.html b/docs/module-doc/classclassbase.html index ccef96079..5deada124 100644 --- a/docs/module-doc/classclassbase.html +++ b/docs/module-doc/classclassbase.html @@ -150,7 +150,7 @@ Referenced by classbase().
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classclassbase__inherit__graph.md5 b/docs/module-doc/classclassbase__inherit__graph.md5 index f544ba5d8..90a8c0c47 100644 --- a/docs/module-doc/classclassbase__inherit__graph.md5 +++ b/docs/module-doc/classclassbase__inherit__graph.md5 @@ -1 +1 @@ -2dcead24293b96c88fe586688d98dbf1 \ No newline at end of file +a7cad757539041de468d74629f972ab7 \ No newline at end of file diff --git a/docs/module-doc/classcommand__t-members.html b/docs/module-doc/classcommand__t-members.html index 661039851..ca5522451 100644 --- a/docs/module-doc/classcommand__t-members.html +++ b/docs/module-doc/classcommand__t-members.html @@ -6,21 +6,16 @@

command_t Member List

This is the complete list of members for command_t, including all inherited members.

- - - - + + - - - + - - + - -
ageclassbase
classbase()classbase [inline]
commandcommand_t
Extend(std::string key, char *p)Extensible
commandcommand_t
command_t(std::string cmd, char flags, int minpara)command_t [inline]
flags_neededcommand_t
GetExt(std::string key)Extensible
GetExtList(std::deque< std::string > &list)Extensible
handler_functioncommand_t
Handle(char **parameters, int pcnt, userrec *user)=0command_t [pure virtual]
min_paramscommand_t
Shrink(std::string key)Extensible
sourcecommand_t
sourcecommand_t
total_bytescommand_t
use_countcommand_t
~classbase()classbase [inline]


Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  + ~command_t()command_t [inline, virtual] +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classcommand__t.html b/docs/module-doc/classcommand__t.html index 1b665f081..11c891bda 100644 --- a/docs/module-doc/classcommand__t.html +++ b/docs/module-doc/classcommand__t.html @@ -5,30 +5,29 @@ -

command_t Class Reference

A structure that defines a command. +

command_t Class Reference

A structure that defines a command. More...

#include <ctables.h>

Inheritance diagram for command_t:

Inheritance graph
- - +
[legend]
Collaboration diagram for command_t:

Collaboration graph
- - - -
[legend]
List of all members. - - + + + + - - + + + + - + @@ -41,23 +40,43 @@ Inheritance diagram for command_t:

long 
- + - +

Public Attributes

char command [MAXBUF]

Public Member Functions

 command_t (std::string cmd, char flags, int minpara)
virtual void Handle (char **parameters, int pcnt, userrec *user)=0
 Command name.
handlerfunchandler_function
virtual ~command_t ()

Public Attributes

std::string command
 Handler function as in typedef.
 Command name.
char flags_needed
 User flags needed to execute the command or 0.
total_bytes
 used by /stats m
char source [MAXBUF]
std::string source
 used for resource tracking between modules
 used for resource tracking between modules

Detailed Description

A structure that defines a command.

-Definition at line 26 of file ctables.h.


Member Data Documentation

-

+Definition at line 29 of file ctables.h.


Constructor & Destructor Documentation

+

@@ -71,20 +90,31 @@ Definition at line 26 of +Definition at line 51 of file ctables.h. +

+References source, total_bytes, and use_count.

00051                                                           : command(cmd), flags_needed(flags), min_params(minpara)
+00052         {
+00053                 use_count = total_bytes = 0;
+00054                 source = "<core>";
+00055         }
+
+

+

- + + + + + + + + + + + + + + + + + + + + +
char command_t::command[MAXBUF] command_t::command_t std::string  cmd,
char  flags,
int  minpara
[inline]

-Command name. -

-Definition at line 31 of file ctables.h.

-

+

@@ -98,20 +128,68 @@ Definition at line 31 of + +
- + + + + +
char command_t::flags_needed virtual command_t::~command_t  )  [inline, virtual]

-User flags needed to execute the command or 0. + +

+Definition at line 59 of file ctables.h.

00059 {}
+
+

+

+


Member Function Documentation

+

+ + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
virtual void command_t::Handle char **  parameters,
int  pcnt,
userrec user
[pure virtual]
+
+ + + + +Implemented in cmd_mode.
+   + +

-Definition at line 37 of file ctables.h.

-

+


Member Data Documentation

+

@@ -125,13 +203,40 @@ Definition at line 37 of
- +
handlerfunc* command_t::handler_function std::string command_t::command

-Handler function as in typedef. +Command name.

Definition at line 34 of file ctables.h.

+

+ + + + +
+ + + + +
char command_t::flags_needed
+
+ + + + + +
+   + + +

+User flags needed to execute the command or 0. +

+ +

+Definition at line 37 of file ctables.h.

@@ -159,13 +264,13 @@ Minimum number of parameters command takes. Definition at line 40 of file ctables.h.
-

+

@@ -183,7 +288,9 @@ used for resource tracking between modules

-Definition at line 49 of file ctables.h. +Definition at line 49 of file ctables.h. +

+Referenced by command_t().

- +
char command_t::source[MAXBUF] std::string command_t::source

@@ -210,7 +317,9 @@ used by /stats m

-Definition at line 46 of file ctables.h. +Definition at line 46 of file ctables.h. +

+Referenced by command_t().

@@ -237,12 +346,14 @@ used by /stats m

-Definition at line 43 of file ctables.h. +Definition at line 43 of file ctables.h. +

+Referenced by command_t().


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classcommand__t__coll__graph.map b/docs/module-doc/classcommand__t__coll__graph.map index cc88b53ff..5a14779e7 100644 --- a/docs/module-doc/classcommand__t__coll__graph.map +++ b/docs/module-doc/classcommand__t__coll__graph.map @@ -1,3 +1 @@ base referer -rect $classExtensible.html 80,97 163,124 -rect $classclassbase.html 7,7 87,33 diff --git a/docs/module-doc/classcommand__t__coll__graph.md5 b/docs/module-doc/classcommand__t__coll__graph.md5 index 312c9417b..0ef3d64e9 100644 --- a/docs/module-doc/classcommand__t__coll__graph.md5 +++ b/docs/module-doc/classcommand__t__coll__graph.md5 @@ -1 +1 @@ -c1351289da2fb0e69df5517d601b50d5 \ No newline at end of file +a870a1a889c9b48d45ed8d3fe3dde1c9 \ No newline at end of file diff --git a/docs/module-doc/classcommand__t__inherit__graph.map b/docs/module-doc/classcommand__t__inherit__graph.map index f7ab96c5d..7c32f56f5 100644 --- a/docs/module-doc/classcommand__t__inherit__graph.map +++ b/docs/module-doc/classcommand__t__inherit__graph.map @@ -1,3 +1,2 @@ base referer -rect $classExtensible.html 11,81 93,108 -rect $classclassbase.html 12,7 92,33 +rect $classcmd__mode.html 8,82 96,108 diff --git a/docs/module-doc/classcommand__t__inherit__graph.md5 b/docs/module-doc/classcommand__t__inherit__graph.md5 index 9c538143f..f6a379e71 100644 --- a/docs/module-doc/classcommand__t__inherit__graph.md5 +++ b/docs/module-doc/classcommand__t__inherit__graph.md5 @@ -1 +1 @@ -f184248fba7e0bab49a632a5b1d29a64 \ No newline at end of file +561f8c00e2c3919b70cd1ad50528624f \ No newline at end of file diff --git a/docs/module-doc/classconnection-members.html b/docs/module-doc/classconnection-members.html index 6d4b23eee..6498c8c87 100644 --- a/docs/module-doc/classconnection-members.html +++ b/docs/module-doc/classconnection-members.html @@ -28,7 +28,7 @@ Shrink(std::string key)Extensible signonconnection ~classbase()classbase [inline] -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classconnection.html b/docs/module-doc/classconnection.html index 7fec9c414..b2d31161f 100644 --- a/docs/module-doc/classconnection.html +++ b/docs/module-doc/classconnection.html @@ -142,7 +142,7 @@ Stats counter for bytes inbound.

Definition at line 54 of file connection.h.

-Referenced by userrec::userrec(). +Referenced by userrec::userrec().

@@ -171,7 +171,7 @@ Stats counter for bytes outbound.

Definition at line 58 of file connection.h.

-Referenced by userrec::FlushWriteBuf(), and userrec::userrec(). +Referenced by userrec::FlushWriteBuf(), and userrec::userrec().

@@ -200,7 +200,7 @@ Stats counter for commands inbound.

Definition at line 62 of file connection.h.

-Referenced by userrec::userrec(). +Referenced by userrec::userrec().

@@ -229,7 +229,7 @@ Stats counter for commands outbound.

Definition at line 66 of file connection.h.

-Referenced by userrec::FlushWriteBuf(), and userrec::userrec(). +Referenced by userrec::FlushWriteBuf(), and userrec::userrec().

@@ -258,7 +258,7 @@ File descriptor of the connection.

Definition at line 42 of file connection.h.

-Referenced by add_channel(), connection(), ConfigReader::DumpErrors(), kick_channel(), Server::PseudoToUser(), Server::SendTo(), userrec::userrec(), and Server::UserToPseudo(). +Referenced by add_channel(), connection(), ConfigReader::DumpErrors(), FullConnectUser(), kick_channel(), kill_link(), kill_link_silent(), Server::PseudoToUser(), Server::SendTo(), userrec::userrec(), and Server::UserToPseudo().

@@ -287,7 +287,7 @@ True if server/user has authenticated, false if otherwise.

Definition at line 70 of file connection.h.

-Referenced by userrec::userrec(). +Referenced by FullConnectUser(), and userrec::userrec().

@@ -316,7 +316,7 @@ Not used if this is a serverrec

Definition at line 46 of file connection.h.

-Referenced by userrec::GetFullRealHost(), Server::PseudoToUser(), userrec::userrec(), and Server::UserToPseudo(). +Referenced by AddWhoWas(), FullConnectUser(), userrec::GetFullRealHost(), kill_link(), kill_link_silent(), Server::PseudoToUser(), userrec::userrec(), and Server::UserToPseudo().

@@ -345,7 +345,7 @@ Time that the connection last sent data, used to calculate idle time.

Definition at line 92 of file connection.h.

-Referenced by userrec::userrec(). +Referenced by FullConnectUser(), and userrec::userrec().

@@ -374,7 +374,7 @@ IP of connection.

Definition at line 50 of file connection.h.

-Referenced by userrec::userrec(). +Referenced by FullConnectUser(), and userrec::userrec().

@@ -403,7 +403,7 @@ Time the connection was last pinged.

Definition at line 84 of file connection.h.

-Referenced by userrec::userrec(). +Referenced by userrec::userrec().

@@ -432,7 +432,7 @@ Used by PING checks with clients.

Definition at line 96 of file connection.h.

-Referenced by userrec::userrec(). +Referenced by userrec::userrec().

@@ -461,7 +461,7 @@ For a serverrec this is the current listening port of the serverrec object.

Definition at line 76 of file connection.h.

-Referenced by userrec::userrec(). +Referenced by FullConnectUser(), kill_link(), kill_link_silent(), and userrec::userrec().

@@ -490,7 +490,7 @@ Used by userrec to indicate the registration status of the connection.

Definition at line 80 of file connection.h.

-Referenced by userrec::userrec(). +Referenced by ConnectUser(), force_nickchange(), FullConnectUser(), kill_link(), kill_link_silent(), and userrec::userrec().

@@ -519,12 +519,12 @@ Time the connection was created, set in the constructor.

Definition at line 88 of file connection.h.

-Referenced by userrec::userrec(). +Referenced by AddWhoWas(), and userrec::userrec().


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classes.html b/docs/module-doc/classes.html index bf330f4a0..71b5f16a9 100644 --- a/docs/module-doc/classes.html +++ b/docs/module-doc/classes.html @@ -8,26 +8,26 @@

InspIRCd Class Index

A | B | C | D | E | F | G | H | I | K | M | Q | R | S | U | V | W | X | Z

  A  
-
CullList   
  H  
-
  M  
-
SocketEngine   
Admin   
  D  
-
hash< in_addr > (nspace)   ModeParameter   StrHashComp (irc)   
  B  
-
DNS   hash< string > (nspace)   Module   
  U  
-
BanItem   dns_ip4list   HostItem   ModuleFactory   ucrec   
BoolSet   
  E  
+
connection   
  G  
+
KLine   serverstats   
Admin   CullItem   GLine   
  M  
+
SocketEngine   
AES   CullList   
  H  
+
ModeParameter   StrHashComp (irc)   
  B  
+
  D  
+
hash< in_addr > (nspace)   ModeParser   
  U  
+
BanItem   DNS   hash< string > (nspace)   Module   ucrec   
BoolSet   dns_ip4list   HostItem   ModuleFactory   userrec   
  C  
+
  E  
  I  
-
ModuleMessage   userrec   
  C  
-
ELine   InAddr_HashComp (irc)   
  Q  
-
  V  
-
chanrec   Event   InspIRCd   QLine   Version   
char_traits (std)   ExemptItem   InspSocket   
  R  
-
  W  
-
classbase   Extensible   Invited   Request   WhoWasUser   
command_t   ExtMode   InviteItem   
  S  
-
  X  
-
ConfigReader   
  F  
-
irc_char_traits (irc)   Server   XLine   
ConnectClass   FileReader   
  K  
-
ServerConfig   
  Z  
-
connection   
  G  
-
KLine   serverstats   ZLine   
CullItem   GLine   

A | B | C | D | E | F | G | H | I | K | M | Q | R | S | U | V | W | X | Z

-


Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +ModuleMessage   
  V  
+chanrec   ELine   InAddr_HashComp (irc)   
  Q  
+Version   char_traits (std)   Event   InspIRCd   QLine   
  W  
+classbase   ExemptItem   InspSocket   
  R  
+WhoWasUser   cmd_mode   Extensible   Invited   Request   
  X  
+command_t   ExtMode   InviteItem   
  S  
+XLine   ConfigReader   
  F  
+irc_char_traits (irc)   Server   
  Z  
+ConnectClass   FileReader   
  K  
+ServerConfig   ZLine   

A | B | C | D | E | F | G | H | I | K | M | Q | R | S | U | V | W | X | Z

+


Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classserverstats-members.html b/docs/module-doc/classserverstats-members.html index 09fe9f5f3..fdabefd95 100644 --- a/docs/module-doc/classserverstats-members.html +++ b/docs/module-doc/classserverstats-members.html @@ -6,6 +6,7 @@

serverstats Member List

This is the complete list of members for serverstats, including all inherited members.

+ @@ -17,7 +18,7 @@ -
BoundPortCountserverstats
serverstats()serverstats [inline]
statsAcceptserverstats
statsCollisionsserverstats
statsRefusedserverstats
statsSentserverstats
statsUnknownserverstats


Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classserverstats.html b/docs/module-doc/classserverstats.html index 676683293..eed83c8c8 100644 --- a/docs/module-doc/classserverstats.html +++ b/docs/module-doc/classserverstats.html @@ -34,13 +34,15 @@ Collaboration diagram for serverstats:

int statsRecv +int BoundPortCount +

Detailed Description

-Definition at line 72 of file inspircd.h.


Constructor & Destructor Documentation

+Definition at line 74 of file inspircd.h.

Constructor & Destructor Documentation

@@ -67,19 +69,47 @@ Definition at line 72 of

-Definition at line 86 of file inspircd.h. +Definition at line 89 of file inspircd.h.

-References statsAccept, statsCollisions, statsConnects, statsDns, statsDnsBad, statsDnsGood, statsRecv, statsRefused, statsSent, and statsUnknown.


Member Data Documentation

+

+ + + + +
+ + + + +
int serverstats::BoundPortCount
+
+ + + + + +
+   + + +

+ +

+Definition at line 87 of file inspircd.h. +

+Referenced by serverstats().

@@ -102,9 +132,9 @@ References statsAccept,

-Definition at line 75 of file inspircd.h. +Definition at line 77 of file inspircd.h.

-Referenced by serverstats(). +Referenced by serverstats().

@@ -129,9 +159,9 @@ Referenced by serverstats()<

-Definition at line 78 of file inspircd.h. +Definition at line 80 of file inspircd.h.

-Referenced by serverstats(). +Referenced by force_nickchange(), and serverstats().

@@ -156,9 +186,9 @@ Referenced by serverstats()<

-Definition at line 82 of file inspircd.h. +Definition at line 84 of file inspircd.h.

-Referenced by serverstats(). +Referenced by FullConnectUser(), and serverstats().

@@ -183,9 +213,9 @@ Referenced by serverstats()<

-Definition at line 79 of file inspircd.h. +Definition at line 81 of file inspircd.h.

-Referenced by serverstats(). +Referenced by serverstats().

@@ -210,9 +240,9 @@ Referenced by serverstats()<

-Definition at line 81 of file inspircd.h. +Definition at line 83 of file inspircd.h.

-Referenced by serverstats(). +Referenced by serverstats().

@@ -237,9 +267,9 @@ Referenced by serverstats()<

-Definition at line 80 of file inspircd.h. +Definition at line 82 of file inspircd.h.

-Referenced by serverstats(). +Referenced by serverstats().

@@ -264,9 +294,9 @@ Referenced by serverstats()<

-Definition at line 84 of file inspircd.h. +Definition at line 86 of file inspircd.h.

-Referenced by serverstats(). +Referenced by serverstats().

@@ -291,9 +321,9 @@ Referenced by serverstats()<

-Definition at line 76 of file inspircd.h. +Definition at line 78 of file inspircd.h.

-Referenced by serverstats(). +Referenced by serverstats().

@@ -318,9 +348,9 @@ Referenced by serverstats()<

-Definition at line 83 of file inspircd.h. +Definition at line 85 of file inspircd.h.

-Referenced by serverstats(). +Referenced by serverstats().

@@ -345,14 +375,14 @@ Referenced by serverstats()<

-Definition at line 77 of file inspircd.h. +Definition at line 79 of file inspircd.h.

-Referenced by serverstats(). +Referenced by serverstats().


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classserverstats__coll__graph.md5 b/docs/module-doc/classserverstats__coll__graph.md5 index bebb257cf..bdc97b9ee 100644 --- a/docs/module-doc/classserverstats__coll__graph.md5 +++ b/docs/module-doc/classserverstats__coll__graph.md5 @@ -1 +1 @@ -0d72c6ae7afecc93452896afbba8a691 \ No newline at end of file +fdefe64364c509e2b3a4a66fc7ca77f1 \ No newline at end of file diff --git a/docs/module-doc/classstd_1_1char__traits.html b/docs/module-doc/classstd_1_1char__traits.html index cf38e16f5..f4299f6e8 100644 --- a/docs/module-doc/classstd_1_1char__traits.html +++ b/docs/module-doc/classstd_1_1char__traits.html @@ -14,7 +14,7 @@
The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classucrec-members.html b/docs/module-doc/classucrec-members.html index f1038cef0..09954f765 100644 --- a/docs/module-doc/classucrec-members.html +++ b/docs/module-doc/classucrec-members.html @@ -13,7 +13,7 @@ ucrec()ucrec [inline] ~classbase()classbase [inline] ~ucrec()ucrec [inline, virtual] -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classucrec.html b/docs/module-doc/classucrec.html index cf4852d6d..5710fbb6f 100644 --- a/docs/module-doc/classucrec.html +++ b/docs/module-doc/classucrec.html @@ -133,7 +133,7 @@ If the record is not in use, this value will be NULL.

Definition at line 254 of file channels.h.

-Referenced by ForceChan(). +Referenced by AddClient(), and ForceChan().

@@ -162,12 +162,12 @@ Contains a bitmask of the UCMODE_OP .

Definition at line 249 of file channels.h.

-Referenced by ForceChan(). +Referenced by AddClient(), and ForceChan().


The documentation for this class was generated from the following file: -
Generated on Thu Dec 15 11:14:19 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classuserrec-members.html b/docs/module-doc/classuserrec-members.html index 9dccd1622..45e7fee94 100644 --- a/docs/module-doc/classuserrec-members.html +++ b/docs/module-doc/classuserrec-members.html @@ -35,14 +35,14 @@ GetInviteList()userrec GetWriteError()userrec haspassedconnection - HasPermission(char *command)userrec + HasPermission(std::string &command)userrec hostconnection identuserrec idle_lastmsgconnection invitesuserrec [private] - InviteTo(char *channel)userrec [virtual] + InviteTo(irc::string &channel)userrec [virtual] ipconnection - IsInvited(char *channel)userrec [virtual] + IsInvited(irc::string &channel)userrec [virtual] lastpingconnection lines_inuserrec modesuserrec @@ -56,7 +56,7 @@ recvquserrec recvqmaxuserrec registeredconnection - RemoveInvite(char *channel)userrec [virtual] + RemoveInvite(irc::string &channel)userrec [virtual] reset_dueuserrec sendquserrec sendqmaxuserrec @@ -70,7 +70,7 @@ WriteErroruserrec ~classbase()classbase [inline] ~userrec()userrec [virtual] -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/classuserrec.html b/docs/module-doc/classuserrec.html index bd18e2d55..4313e9ff5 100644 --- a/docs/module-doc/classuserrec.html +++ b/docs/module-doc/classuserrec.html @@ -31,18 +31,18 @@ Inheritance diagram for userrec:

virtual char * GetFullRealHost ()  Returns the full real host of the user This member function returns the hostname of the user as seen by other users on the server, in nick!identhost form.
-virtual bool IsInvited (char *channel) +virtual bool IsInvited (irc::string &channel) - Returns true if a user is invited to a channel.
-virtual void InviteTo (char *channel) + Returns true if a user is invited to a channel.
+virtual void InviteTo (irc::string &channel) - Adds a channel to a users invite list (invites them to a channel).
-virtual void RemoveInvite (char *channel) + Adds a channel to a users invite list (invites them to a channel).
+virtual void RemoveInvite (irc::string &channel) - Removes a channel from a users invite list.
-bool HasPermission (char *command) + Removes a channel from a users invite list.
+bool HasPermission (std::string &command) - Returns true or false for if a user can execute a privilaged oper command.
+ Returns true or false for if a user can execute a privilaged oper command.
int ReadData (void *buffer, size_t size)  Calls read() to read some data for this user using their fd.
@@ -153,7 +153,7 @@ Everything about a connection is stored here primarily, from the user's socket I

-Definition at line 111 of file users.h.


Constructor & Destructor Documentation

+Definition at line 115 of file users.h.

Constructor & Destructor Documentation

@@ -180,32 +180,32 @@ Definition at line 111 of f

-Definition at line 36 of file users.cpp. -

-References awaymsg, connection::bytes_in, connection::bytes_out, chans, connection::cmds_in, connection::cmds_out, dhost, dns_done, connection::fd, FindServerNamePtr(), flood, fullname, connection::haspassed, connection::host, ident, connection::idle_lastmsg, invites, connection::ip, connection::lastping, lines_in, modes, nick, connection::nping, oper, connection::port, recvq, connection::registered, reset_due, sendq, server, ServerConfig::ServerName, connection::signon, TIME, and timeout.

00037 {
-00038         // the PROPER way to do it, AVOID bzero at *ALL* costs
-00039         strcpy(nick,"");
-00040         strcpy(ip,"127.0.0.1");
-00041         timeout = 0;
-00042         strcpy(ident,"");
-00043         strcpy(host,"");
-00044         strcpy(dhost,"");
-00045         strcpy(fullname,"");
-00046         strcpy(modes,"");
-00047         server = (char*)FindServerNamePtr(Config->ServerName);
-00048         strcpy(awaymsg,"");
-00049         strcpy(oper,"");
-00050         reset_due = TIME;
-00051         lines_in = 0;
-00052         fd = lastping = signon = idle_lastmsg = nping = registered = 0;
-00053         flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
-00054         haspassed = false;
-00055         dns_done = false;
-00056         recvq = "";
-00057         sendq = "";
-00058         chans.clear();
-00059         invites.clear();
-00060 }
+Definition at line 63 of file users.cpp.
+

+References awaymsg, connection::bytes_in, connection::bytes_out, chans, connection::cmds_in, connection::cmds_out, dhost, dns_done, connection::fd, FindServerNamePtr(), flood, fullname, connection::haspassed, connection::host, ident, connection::idle_lastmsg, invites, connection::ip, connection::lastping, lines_in, modes, nick, connection::nping, oper, connection::port, recvq, connection::registered, reset_due, sendq, server, ServerConfig::ServerName, connection::signon, TIME, and timeout.

00064 {
+00065         // the PROPER way to do it, AVOID bzero at *ALL* costs
+00066         strcpy(nick,"");
+00067         strcpy(ip,"127.0.0.1");
+00068         timeout = 0;
+00069         strcpy(ident,"");
+00070         strcpy(host,"");
+00071         strcpy(dhost,"");
+00072         strcpy(fullname,"");
+00073         strcpy(modes,"");
+00074         server = (char*)FindServerNamePtr(Config->ServerName);
+00075         strcpy(awaymsg,"");
+00076         strcpy(oper,"");
+00077         reset_due = TIME;
+00078         lines_in = 0;
+00079         fd = lastping = signon = idle_lastmsg = nping = registered = 0;
+00080         flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0;
+00081         haspassed = false;
+00082         dns_done = false;
+00083         recvq = "";
+00084         sendq = "";
+00085         chans.clear();
+00086         invites.clear();
+00087 }
 

@@ -237,8 +237,8 @@ References awaymsg,

-Definition at line 62 of file users.cpp.

00063 {
-00064 }
+Definition at line 89 of file users.cpp.
00090 {
+00091 }
 

@@ -274,32 +274,32 @@ This method adds data to the buffer of the user.

The buffer can grow to any size within limits of the available memory, managed by the size of a std::string, however if any individual line in the buffer grows over 600 bytes in length (which is 88 chars over the RFC-specified limit per line) then the method will return false and the text will not be inserted.

-Definition at line 198 of file users.cpp. -

-References recvq, recvqmax, SetWriteError(), and WriteOpers().

00199 {
-00200         std::string b = "";
-00201         for (unsigned int i = 0; i < a.length(); i++)
-00202                 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7))
-00203                         b = b + a[i];
-00204         std::stringstream stream(recvq);
-00205         stream << b;
-00206         recvq = stream.str();
-00207         unsigned int i = 0;
-00208         // count the size of the first line in the buffer.
-00209         while (i < recvq.length())
-00210         {
-00211                 if (recvq[i++] == '\n')
-00212                         break;
-00213         }
-00214         if (recvq.length() > (unsigned)this->recvqmax)
-00215         {
-00216                 this->SetWriteError("RecvQ exceeded");
-00217                 WriteOpers("*** User %s RecvQ of %d exceeds connect class maximum of %d",this->nick,recvq.length(),this->recvqmax);
-00218         }
-00219         // return false if we've had more than 600 characters WITHOUT
-00220         // a carriage return (this is BAD, drop the socket)
-00221         return (i < 600);
-00222 }
+Definition at line 219 of file users.cpp.
+

+References recvq, recvqmax, SetWriteError(), and WriteOpers().

00220 {
+00221         std::string b = "";
+00222         for (unsigned int i = 0; i < a.length(); i++)
+00223                 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7))
+00224                         b = b + a[i];
+00225         std::stringstream stream(recvq);
+00226         stream << b;
+00227         recvq = stream.str();
+00228         unsigned int i = 0;
+00229         // count the size of the first line in the buffer.
+00230         while (i < recvq.length())
+00231         {
+00232                 if (recvq[i++] == '\n')
+00233                         break;
+00234         }
+00235         if (recvq.length() > (unsigned)this->recvqmax)
+00236         {
+00237                 this->SetWriteError("RecvQ exceeded");
+00238                 WriteOpers("*** User %s RecvQ of %d exceeds connect class maximum of %d",this->nick,recvq.length(),this->recvqmax);
+00239         }
+00240         // return false if we've had more than 600 characters WITHOUT
+00241         // a carriage return (this is BAD, drop the socket)
+00242         return (i < 600);
+00243 }
 

@@ -334,21 +334,25 @@ Adds to the user's write buffer.

You may add any amount of text up to this users sendq value, if you exceed the sendq value, SetWriteError() will be called to set the users error string to "SendQ exceeded", and further buffer adds will be dropped.

-Definition at line 254 of file users.cpp. -

-References sendq, sendqmax, SetWriteError(), and WriteOpers().

00255 {
-00256         if (this->GetWriteError() != "")
-00257                 return;
-00258         if (sendq.length() + data.length() > (unsigned)this->sendqmax)
-00259         {
-00260                 WriteOpers("*** User %s SendQ of %d exceeds connect class maximum of %d",this->nick,sendq.length() + data.length(),this->sendqmax);
-00261                 this->SetWriteError("SendQ exceeded");
-00262                 return;
-00263         }
-00264         std::stringstream stream;
-00265         stream << sendq << data;
-00266         sendq = stream.str();
-00267 }
+Definition at line 275 of file users.cpp.
+

+References sendq, sendqmax, SetWriteError(), and WriteOpers().

00276 {
+00277         if (this->GetWriteError() != "")
+00278                 return;
+00279         if (sendq.length() + data.length() > (unsigned)this->sendqmax)
+00280         {
+00281                 /* Fix by brain - Set the error text BEFORE calling writeopers, because
+00282                  * if we dont it'll recursively  call here over and over again trying
+00283                  * to repeatedly add the text to the sendq!
+00284                  */
+00285                 this->SetWriteError("SendQ exceeded");
+00286                 WriteOpers("*** User %s SendQ of %d exceeds connect class maximum of %d",this->nick,sendq.length() + data.length(),this->sendqmax);
+00287                 return;
+00288         }
+00289         std::stringstream stream;
+00290         stream << sendq << data;
+00291         sendq = stream.str();
+00292 }
 

@@ -382,14 +386,14 @@ This method returns true if the buffer contains at least one carriage return cha

one complete line may be read)

-Definition at line 224 of file users.cpp. +Definition at line 245 of file users.cpp.

-References recvq.

00225 {
-00226         for (unsigned int i = 0; i < recvq.length(); i++)
-00227                 if (recvq[i] == '\n')
-00228                         return true;
-00229         return false;
-00230 }
+References recvq.
00246 {
+00247         for (unsigned int i = 0; i < recvq.length(); i++)
+00248                 if (recvq[i] == '\n')
+00249                         return true;
+00250         return false;
+00251 }
 

@@ -423,13 +427,13 @@ This function clears the entire buffer by setting it to an empty string.

-Definition at line 232 of file users.cpp. +Definition at line 253 of file users.cpp.

-References recvq. +References recvq.

-Referenced by Server::PseudoToUser(), and Server::UserToPseudo().

00233 {
-00234         recvq = "";
-00235 }
+Referenced by Server::PseudoToUser(), and Server::UserToPseudo().
00254 {
+00255         recvq = "";
+00256 }
 

@@ -463,10 +467,12 @@ Shuts down and closes the user's socket.

-Definition at line 66 of file users.cpp.

00067 {
-00068         shutdown(this->fd,2);
-00069         close(this->fd);
-00070 }
+Definition at line 93 of file users.cpp.
+

+Referenced by kill_link(), and kill_link_silent().

00094 {
+00095         shutdown(this->fd,2);
+00096         close(this->fd);
+00097 }
 

@@ -500,28 +506,30 @@ Flushes as much of the user's buffer to the file descriptor as possible.

This function may not always flush the entire buffer, rather instead as much of it as it possibly can. If the send() call fails to send the entire buffer, the buffer position is advanced forwards and the rest of the data sent at the next call to this method.

-Definition at line 270 of file users.cpp. -

-References connection::bytes_out, connection::cmds_out, sendq, and SetWriteError().

00271 {
-00272         if (sendq.length())
-00273         {
-00274                 char* tb = (char*)this->sendq.c_str();
-00275                 int n_sent = write(this->fd,tb,this->sendq.length());
-00276                 if (n_sent == -1)
-00277                 {
-00278                         this->SetWriteError(strerror(errno));
-00279                 }
-00280                 else
-00281                 {
-00282                         // advance the queue
-00283                         tb += n_sent;
-00284                         this->sendq = tb;
-00285                         // update the user's stats counters
-00286                         this->bytes_out += n_sent;
-00287                         this->cmds_out++;
-00288                 }
-00289         }
-00290 }
+Definition at line 295 of file users.cpp.
+

+References connection::bytes_out, connection::cmds_out, sendq, and SetWriteError(). +

+Referenced by kill_link(), and kill_link_silent().

00296 {
+00297         if (sendq.length())
+00298         {
+00299                 char* tb = (char*)this->sendq.c_str();
+00300                 int n_sent = write(this->fd,tb,this->sendq.length());
+00301                 if (n_sent == -1)
+00302                 {
+00303                         this->SetWriteError(strerror(errno));
+00304                 }
+00305                 else
+00306                 {
+00307                         // advance the queue
+00308                         tb += n_sent;
+00309                         this->sendq = tb;
+00310                         // update the user's stats counters
+00311                         this->bytes_out += n_sent;
+00312                         this->cmds_out++;
+00313                 }
+00314         }
+00315 }
 

@@ -555,23 +563,23 @@ This method returns the first available string at the tail end of the buffer and

This means it is a one way operation in a similar way to strtok(), and multiple calls return multiple lines if they are available. The results of this function if there are no lines to be read are unknown, always use BufferIsReady() to check if it is ok to read the buffer before calling GetBuffer().

-Definition at line 237 of file users.cpp. -

-References recvq.

00238 {
-00239         if (recvq == "")
-00240                 return "";
-00241         char* line = (char*)recvq.c_str();
-00242         std::string ret = "";
-00243         while ((*line != '\n') && (strlen(line)))
-00244         {
-00245                 ret = ret + *line;
-00246                 line++;
-00247         }
-00248         if ((*line == '\n') || (*line == '\r'))
-00249                 line++;
-00250         recvq = line;
-00251         return ret;
-00252 }
+Definition at line 258 of file users.cpp.
+

+References recvq.

00259 {
+00260         if (recvq == "")
+00261                 return "";
+00262         char* line = (char*)recvq.c_str();
+00263         std::string ret = "";
+00264         while ((*line != '\n') && (strlen(line)))
+00265         {
+00266                 ret = ret + *line;
+00267                 line++;
+00268         }
+00269         if ((*line == '\n') || (*line == '\r'))
+00270                 line++;
+00271         recvq = line;
+00272         return ret;
+00273 }
 

@@ -605,15 +613,15 @@ Returns the full displayed host of the user This member function returns the hos

-Definition at line 72 of file users.cpp. +Definition at line 99 of file users.cpp.

-References dhost, ident, and nick. +References dhost, ident, and nick.

-Referenced by add_channel().

00073 {
-00074         static char result[MAXBUF];
-00075         snprintf(result,MAXBUF,"%s!%s@%s",nick,ident,dhost);
-00076         return result;
-00077 }
+Referenced by add_channel().
00100 {
+00101         static char result[MAXBUF];
+00102         snprintf(result,MAXBUF,"%s!%s@%s",nick,ident,dhost);
+00103         return result;
+00104 }
 

@@ -647,13 +655,13 @@ Returns the full real host of the user This member function returns the hostname

If any form of hostname cloaking is in operation, e.g. through a module, then this method will ignore it and return the true hostname.

-Definition at line 89 of file users.cpp. +Definition at line 116 of file users.cpp.

-References connection::host, ident, and nick.

00090 {
-00091         static char fresult[MAXBUF];
-00092         snprintf(fresult,MAXBUF,"%s!%s@%s",nick,ident,host);
-00093         return fresult;
-00094 }
+References connection::host, ident, and nick.
00117 {
+00118         static char fresult[MAXBUF];
+00119         snprintf(fresult,MAXBUF,"%s!%s@%s",nick,ident,host);
+00120         return fresult;
+00121 }
 

@@ -687,11 +695,11 @@ Returns the list of channels this user has been invited to but has not yet joine

-Definition at line 110 of file users.cpp. +Definition at line 136 of file users.cpp.

-References invites.

00111 {
-00112         return &invites;
-00113 }
+References invites.
00137 {
+00138         return &invites;
+00139 }
 

@@ -725,17 +733,17 @@ Returns the write error which last occured on this connection or an empty string

-Definition at line 300 of file users.cpp. +Definition at line 325 of file users.cpp.

-References WriteError.

00301 {
-00302         return this->WriteError;
-00303 }
+References WriteError.
00326 {
+00327         return this->WriteError;
+00328 }
 

-

+

- + @@ -764,65 +772,65 @@ Returns true or false for if a user can execute a privilaged oper command.

This is done by looking up their oper type from userrec::oper, then referencing this to their oper classes and checking the commands they can execute.

-Definition at line 144 of file users.cpp. -

-References ServerConfig::config_f, ServerConfig::ConfValue(), and is_uline().

00145 {
-00146         char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
-00147         char* mycmd;
-00148         char* savept;
-00149         char* savept2;
-00150         
-00151         // users on u-lined servers can completely bypass
-00152         // all permissions based checks.
-00153         //
-00154         // of course, if this is sent to a remote server and this
-00155         // server is not ulined there, then that other server
-00156         // silently drops the command.
-00157         if (is_uline(this->server))
-00158                 return true;
-00159         
-00160         // are they even an oper at all?
-00161         if (strchr(this->modes,'o'))
-00162         {
-00163                 for (int j =0; j < Config->ConfValueEnum("type",&Config->config_f); j++)
-00164                 {
-00165                         Config->ConfValue("type","name",j,TypeName,&Config->config_f);
-00166                         if (!strcmp(TypeName,this->oper))
-00167                         {
-00168                                 Config->ConfValue("type","classes",j,Classes,&Config->config_f);
-00169                                 char* myclass = strtok_r(Classes," ",&savept);
-00170                                 while (myclass)
-00171                                 {
-00172                                         for (int k =0; k < Config->ConfValueEnum("class",&Config->config_f); k++)
-00173                                         {
-00174                                                 Config->ConfValue("class","name",k,ClassName,&Config->config_f);
-00175                                                 if (!strcmp(ClassName,myclass))
-00176                                                 {
-00177                                                         Config->ConfValue("class","commands",k,CommandList,&Config->config_f);
-00178                                                         mycmd = strtok_r(CommandList," ",&savept2);
-00179                                                         while (mycmd)
-00180                                                         {
-00181                                                                 if ((!strcasecmp(mycmd,command)) || (*mycmd == '*'))
-00182                                                                 {
-00183                                                                         return true;
-00184                                                                 }
-00185                                                                 mycmd = strtok_r(NULL," ",&savept2);
-00186                                                         }
-00187                                                 }
-00188                                         }
-00189                                         myclass = strtok_r(NULL," ",&savept);
-00190                                 }
-00191                         }
-00192                 }
-00193         }
-00194         return false;
-00195 }
+Definition at line 165 of file users.cpp.
+

+References ServerConfig::config_f, ServerConfig::ConfValue(), and is_uline().

00166 {
+00167         char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF];
+00168         char* mycmd;
+00169         char* savept;
+00170         char* savept2;
+00171         
+00172         // users on u-lined servers can completely bypass
+00173         // all permissions based checks.
+00174         //
+00175         // of course, if this is sent to a remote server and this
+00176         // server is not ulined there, then that other server
+00177         // silently drops the command.
+00178         if (is_uline(this->server))
+00179                 return true;
+00180         
+00181         // are they even an oper at all?
+00182         if (strchr(this->modes,'o'))
+00183         {
+00184                 for (int j =0; j < Config->ConfValueEnum("type",&Config->config_f); j++)
+00185                 {
+00186                         Config->ConfValue("type","name",j,TypeName,&Config->config_f);
+00187                         if (!strcmp(TypeName,this->oper))
+00188                         {
+00189                                 Config->ConfValue("type","classes",j,Classes,&Config->config_f);
+00190                                 char* myclass = strtok_r(Classes," ",&savept);
+00191                                 while (myclass)
+00192                                 {
+00193                                         for (int k =0; k < Config->ConfValueEnum("class",&Config->config_f); k++)
+00194                                         {
+00195                                                 Config->ConfValue("class","name",k,ClassName,&Config->config_f);
+00196                                                 if (!strcmp(ClassName,myclass))
+00197                                                 {
+00198                                                         Config->ConfValue("class","commands",k,CommandList,&Config->config_f);
+00199                                                         mycmd = strtok_r(CommandList," ",&savept2);
+00200                                                         while (mycmd)
+00201                                                         {
+00202                                                                 if ((!strcasecmp(mycmd,command.c_str())) || (*mycmd == '*'))
+00203                                                                 {
+00204                                                                         return true;
+00205                                                                 }
+00206                                                                 mycmd = strtok_r(NULL," ",&savept2);
+00207                                                         }
+00208                                                 }
+00209                                         }
+00210                                         myclass = strtok_r(NULL," ",&savept);
+00211                                 }
+00212                         }
+00213                 }
+00214         }
+00215         return false;
+00216 }
 

@@ -743,7 +751,7 @@ References WriteError.
bool userrec::HasPermission char * std::string command  ) 
-

+

- + @@ -851,19 +859,19 @@ Adds a channel to a users invite list (invites them to a channel).

-Definition at line 115 of file users.cpp. +Definition at line 141 of file users.cpp.

-References Invited::channel, and invites.

00116 {
-00117         Invited i;
-00118         strlcpy(i.channel,channel,CHANMAX);
-00119         invites.push_back(i);
-00120 }
+References Invited::channel, and invites.
00142 {
+00143         Invited i;
+00144         i.channel = channel;
+00145         invites.push_back(i);
+00146 }
 

@@ -830,7 +838,7 @@ References ServerConfig:
void userrec::InviteTo char * irc::string channel  )  [virtual]
-

+

- + @@ -892,22 +900,21 @@ Returns true if a user is invited to a channel.

-Definition at line 96 of file users.cpp. +Definition at line 123 of file users.cpp.

-References invites. +References invites.

-Referenced by add_channel().

00097 {
-00098         for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
-00099         {
-00100                 if (i->channel) {
-00101                         if (!strcasecmp(i->channel,channel))
-00102                         {
-00103                                 return true;
-00104                         }
-00105                 }
-00106         }
-00107         return false;
-00108 }
+Referenced by add_channel().
00124 {
+00125         for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
+00126         {
+00127                 irc::string compare = i->channel;
+00128                 if (compare == channel)
+00129                 {
+00130                         return true;
+00131                 }
+00132         }
+00133         return false;
+00134 }
 

@@ -951,19 +958,19 @@ Calls read() to read some data for this user using their fd.

-Definition at line 79 of file users.cpp.

00080 {
-00081         if (this->fd > -1)
-00082         {
-00083                 return read(this->fd, buffer, size);
-00084         }
-00085         else return 0;
-00086 }
+Definition at line 106 of file users.cpp.
00107 {
+00108         if (this->fd > -1)
+00109         {
+00110                 return read(this->fd, buffer, size);
+00111         }
+00112         else return 0;
+00113 }
 

@@ -871,7 +879,7 @@ References Invited::channel
bool userrec::IsInvited char * irc::string channel  )  [virtual]
-

+

- + @@ -992,30 +999,25 @@ Removes a channel from a users invite list.

This member function is called on successfully joining an invite only channel to which the user has previously been invited, to clear the invitation.

-Definition at line 122 of file users.cpp. -

-References DEBUG, invites, and log(). -

-Referenced by add_channel().

00123 {
-00124         log(DEBUG,"Removing invites");
-00125         if (channel)
-00126         {
-00127                 if (invites.size())
-00128                 {
-00129                         for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
-00130                         {
-00131                                 if (i->channel)
-00132                                 {
-00133                                         if (!strcasecmp(i->channel,channel))
-00134                                         {
-00135                                                 invites.erase(i);
-00136                                                 return;
-00137                                         }
-00138                                 }
-00139                         }
-00140                 }
-00141         }
-00142 }
+Definition at line 148 of file users.cpp.
+

+References DEBUG, invites, and log(). +

+Referenced by add_channel().

00149 {
+00150         log(DEBUG,"Removing invites");
+00151         if (invites.size())
+00152         {
+00153                 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++)
+00154                 {
+00155                         irc::string compare = i->channel;
+00156                         if (compare == channel)
+00157                         {
+00158                                 invites.erase(i);
+00159                                 return;
+00160                         }
+00161                 }
+00162         }
+00163 }
 

@@ -1050,16 +1052,16 @@ Sets the write error for a connection.

This is done because the actual disconnect of a client may occur at an inopportune time such as half way through /LIST output. The WriteErrors of clients are checked at a more ideal time (in the mainloop) and errored clients purged.

-Definition at line 292 of file users.cpp. +Definition at line 317 of file users.cpp.

-References DEBUG, log(), and WriteError. +References DEBUG, log(), and WriteError.

-Referenced by AddBuffer(), AddWriteBuf(), and FlushWriteBuf().

00293 {
-00294         log(DEBUG,"Setting error string for %s to '%s'",this->nick,error.c_str());
-00295         // don't try to set the error twice, its already set take the first string.
-00296         if (this->WriteError == "")
-00297                 this->WriteError = error;
-00298 }
+Referenced by AddBuffer(), AddWriteBuf(), and FlushWriteBuf().
00318 {
+00319         log(DEBUG,"Setting error string for %s to '%s'",this->nick,error.c_str());
+00320         // don't try to set the error twice, its already set take the first string.
+00321         if (this->WriteError == "")
+00322                 this->WriteError = error;
+00323 }
 

@@ -1090,9 +1092,9 @@ The user's away message.

If this string is empty, the user is not marked as away.

-Definition at line 158 of file users.h. +Definition at line 162 of file users.h.

-Referenced by userrec(). +Referenced by userrec().

@@ -971,7 +978,7 @@ Definition at line 79 of
void userrec::RemoveInvite char * irc::string channel  )  [virtual]

@@ -1117,9 +1119,9 @@ Referenced by userrec().

-Definition at line 149 of file users.h. +Definition at line 153 of file users.h.

-Referenced by add_channel(), del_channel(), kick_channel(), Server::PseudoToUser(), and userrec(). +Referenced by add_channel(), del_channel(), kick_channel(), Server::PseudoToUser(), and userrec().

@@ -1146,9 +1148,9 @@ The host displayed to non-opers (used for cloaking etc).

This usually matches the value of userrec::host.

-Definition at line 134 of file users.h. +Definition at line 138 of file users.h.

-Referenced by GetFullHost(), and userrec(). +Referenced by AddWhoWas(), GetFullHost(), and userrec().

@@ -1175,9 +1177,9 @@ True when DNS lookups are completed.

-Definition at line 181 of file users.h. +Definition at line 185 of file users.h.

-Referenced by userrec(). +Referenced by ConnectUser(), and userrec().

@@ -1204,9 +1206,9 @@ Number of lines the user can place into the buffer (up to the global NetBufferSi

-Definition at line 164 of file users.h. +Definition at line 168 of file users.h.

-Referenced by userrec(). +Referenced by userrec().

@@ -1233,9 +1235,9 @@ The users full name.

-Definition at line 138 of file users.h. +Definition at line 142 of file users.h.

-Referenced by userrec(). +Referenced by AddWhoWas(), and userrec().

@@ -1262,9 +1264,9 @@ The users ident reply.

Two characters are added to the user-defined limit to compensate for the tilde etc.

-Definition at line 129 of file users.h. +Definition at line 133 of file users.h.

-Referenced by GetFullHost(), GetFullRealHost(), Server::PseudoToUser(), userrec(), and Server::UserToPseudo(). +Referenced by AddWhoWas(), FullConnectUser(), GetFullHost(), GetFullRealHost(), kill_link(), kill_link_silent(), Server::PseudoToUser(), userrec(), and Server::UserToPseudo().

@@ -1291,9 +1293,9 @@ A list of channels the user has a pending invite to.

-Definition at line 117 of file users.h. +Definition at line 121 of file users.h.

-Referenced by GetInviteList(), InviteTo(), IsInvited(), RemoveInvite(), and userrec(). +Referenced by GetInviteList(), InviteTo(), IsInvited(), RemoveInvite(), and userrec().

@@ -1320,9 +1322,9 @@ Flood counters.

-Definition at line 206 of file users.h. +Definition at line 210 of file users.h.

-Referenced by userrec(). +Referenced by userrec().

@@ -1349,9 +1351,9 @@ The user's mode string.

This may contain any of the following RFC characters: o, w, s, i Your module may define other mode characters as it sees fit. it is limited to length 54, as there can only be a maximum of 52 user modes (26 upper, 26 lower case) a null terminating char, and an optional + character.

-Definition at line 147 of file users.h. +Definition at line 151 of file users.h.

-Referenced by add_channel(), and userrec(). +Referenced by add_channel(), and userrec().

@@ -1378,9 +1380,9 @@ The users nickname.

An invalid nickname indicates an unregistered connection prior to the NICK command.

-Definition at line 124 of file users.h. +Definition at line 128 of file users.h.

-Referenced by add_channel(), del_channel(), ConfigReader::DumpErrors(), GetFullHost(), GetFullRealHost(), kick_channel(), Server::PseudoToUser(), and userrec(). +Referenced by add_channel(), AddWhoWas(), del_channel(), ConfigReader::DumpErrors(), FullConnectUser(), GetFullHost(), GetFullRealHost(), kick_channel(), kill_link(), kill_link_silent(), Server::PseudoToUser(), and userrec().

@@ -1407,9 +1409,9 @@ The oper type they logged in as, if they are an oper.

This is used to check permissions in operclasses, so that we can say 'yay' or 'nay' to any commands they issue. The value of this is the value of a valid 'type name=' tag.

-Definition at line 177 of file users.h. +Definition at line 181 of file users.h.

-Referenced by userrec(). +Referenced by userrec().

@@ -1436,7 +1438,7 @@ Password specified by the user when they registered.

This is stored even if the <connect> block doesnt need a password, so that modules may check it.

-Definition at line 191 of file users.h. +Definition at line 195 of file users.h.

@@ -1463,7 +1465,7 @@ Number of seconds between PINGs for this user (set from <connect:allow> ta

-Definition at line 185 of file users.h. +Definition at line 189 of file users.h.

@@ -1490,9 +1492,9 @@ User's receive queue.

Lines from the IRCd awaiting processing are stored here. Upgraded april 2005, old system a bit hairy.

-Definition at line 197 of file users.h. +Definition at line 201 of file users.h.

-Referenced by AddBuffer(), BufferIsReady(), ClearBuffer(), GetBuffer(), and userrec(). +Referenced by AddBuffer(), BufferIsReady(), ClearBuffer(), GetBuffer(), and userrec().

@@ -1519,9 +1521,9 @@ Maximum size this user's recvq can become.

-Definition at line 220 of file users.h. +Definition at line 224 of file users.h.

-Referenced by AddBuffer(). +Referenced by AddBuffer().

@@ -1546,9 +1548,9 @@ Referenced by AddBuffer()

-Definition at line 207 of file users.h. +Definition at line 211 of file users.h.

-Referenced by userrec(). +Referenced by userrec().

@@ -1575,9 +1577,9 @@ User's send queue.

Lines waiting to be sent are stored here until their buffer is flushed.

-Definition at line 202 of file users.h. +Definition at line 206 of file users.h.

-Referenced by AddWriteBuf(), FlushWriteBuf(), and userrec(). +Referenced by AddWriteBuf(), FlushWriteBuf(), and userrec().

@@ -1604,9 +1606,9 @@ Maximum size this user's sendq can become.

-Definition at line 216 of file users.h. +Definition at line 220 of file users.h.

-Referenced by AddWriteBuf(). +Referenced by AddWriteBuf().

@@ -1633,9 +1635,9 @@ The server the user is connected to.

-Definition at line 153 of file users.h. +Definition at line 157 of file users.h.

-Referenced by kick_channel(), and userrec(). +Referenced by AddWhoWas(), kick_channel(), and userrec().

@@ -1660,7 +1662,7 @@ Referenced by kick_channel

-Definition at line 208 of file users.h. +Definition at line 212 of file users.h.

@@ -1687,9 +1689,9 @@ Number of seconds this user is given to send USER/NICK If they do not send their

-Definition at line 170 of file users.h. +Definition at line 174 of file users.h.

-Referenced by userrec(). +Referenced by userrec().

@@ -1714,14 +1716,14 @@ Referenced by userrec().

-Definition at line 212 of file users.h. +Definition at line 216 of file users.h.

-Referenced by GetWriteError(), and SetWriteError(). +Referenced by GetWriteError(), and SetWriteError().


The documentation for this class was generated from the following files: -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:16 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/commands_8h-source.html b/docs/module-doc/commands_8h-source.html index 463355e9f..33fbaa71d 100644 --- a/docs/module-doc/commands_8h-source.html +++ b/docs/module-doc/commands_8h-source.html @@ -11,7 +11,7 @@ 00002 * | Inspire Internet Relay Chat Daemon | 00003 * +------------------------------------+ 00004 * -00005 * Inspire is copyright (C) 2002-2004 ChatSpike-Dev. +00005 * Inspire is copyright (C) 2002-2005 ChatSpike-Dev. 00006 * E-mail: 00007 * <brain@chatspike.net> 00008 * <Craig@chatspike.net> @@ -37,67 +37,79 @@ 00028 #include "users.h" 00029 #include "channels.h" 00030 -00031 -00034 void handle_join(char **parameters, int pcnt, userrec *user); -00035 void handle_part(char **parameters, int pcnt, userrec *user); -00036 void handle_kick(char **parameters, int pcnt, userrec *user); -00037 void handle_die(char **parameters, int pcnt, userrec *user); -00038 void handle_restart(char **parameters, int pcnt, userrec *user); -00039 void handle_kill(char **parameters, int pcnt, userrec *user); -00040 void handle_summon(char **parameters, int pcnt, userrec *user); -00041 void handle_users(char **parameters, int pcnt, userrec *user); -00042 void handle_pass(char **parameters, int pcnt, userrec *user); -00043 void handle_invite(char **parameters, int pcnt, userrec *user); -00044 void handle_topic(char **parameters, int pcnt, userrec *user); -00045 void handle_names(char **parameters, int pcnt, userrec *user); -00046 void handle_privmsg(char **parameters, int pcnt, userrec *user); -00047 void handle_notice(char **parameters, int pcnt, userrec *user); -00048 void handle_info(char **parameters, int pcnt, userrec *user); -00049 void handle_time(char **parameters, int pcnt, userrec *user); -00050 void handle_whois(char **parameters, int pcnt, userrec *user); -00051 void handle_quit(char **parameters, int pcnt, userrec *user); -00052 void handle_who(char **parameters, int pcnt, userrec *user); -00053 void handle_wallops(char **parameters, int pcnt, userrec *user); -00054 void handle_list(char **parameters, int pcnt, userrec *user); -00055 void handle_rehash(char **parameters, int pcnt, userrec *user); -00056 void handle_lusers(char **parameters, int pcnt, userrec *user); -00057 void handle_admin(char **parameters, int pcnt, userrec *user); -00058 void handle_ping(char **parameters, int pcnt, userrec *user); -00059 void handle_pong(char **parameters, int pcnt, userrec *user); -00060 void handle_motd(char **parameters, int pcnt, userrec *user); -00061 void handle_rules(char **parameters, int pcnt, userrec *user); -00062 void handle_user(char **parameters, int pcnt, userrec *user); -00063 void handle_userhost(char **parameters, int pcnt, userrec *user); -00064 void handle_ison(char **parameters, int pcnt, userrec *user); -00065 void handle_away(char **parameters, int pcnt, userrec *user); -00066 void handle_whowas(char **parameters, int pcnt, userrec *user); -00067 void handle_trace(char **parameters, int pcnt, userrec *user); -00068 void handle_modules(char **parameters, int pcnt, userrec *user); -00069 void handle_stats(char **parameters, int pcnt, userrec *user); -00070 void handle_connect(char **parameters, int pcnt, userrec *user); -00071 void handle_squit(char **parameters, int pcnt, userrec *user); -00072 void handle_links(char **parameters, int pcnt, userrec *user); -00073 void handle_map(char **parameters, int pcnt, userrec *user); -00074 void handle_oper(char **parameters, int pcnt, userrec *user); -00075 void handle_nick(char **parameters, int pcnt, userrec *user); -00076 void handle_kline(char **parameters, int pcnt, userrec *user); -00077 void handle_gline(char **parameters, int pcnt, userrec *user); -00078 void handle_zline(char **parameters, int pcnt, userrec *user); -00079 void handle_qline(char **parameters, int pcnt, userrec *user); -00080 void handle_eline(char **parameters, int pcnt, userrec *user); -00081 void handle_server(char **parameters, int pcnt, userrec *user); -00082 void handle_loadmodule(char **parameters, int pcnt, userrec *user); -00083 void handle_unloadmodule(char **parameters, int pcnt, userrec *user); -00084 void handle_commands(char **parameters, int pcnt, userrec *user); -00085 -00088 bool is_uline(const char* server); -00089 -00092 long duration(const char* str); -00093 -00094 void do_whois(userrec* user, userrec* dest,unsigned long signon, unsigned long idle, char* nick); -00095 -00096 #endif -

Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00031 char* CleanFilename(char* name); +00032 bool is_uline(const char* server); +00033 long duration(const char* str); +00034 void do_whois(userrec* user, userrec* dest,unsigned long signon, unsigned long idle, char* nick); +00035 bool host_matches_everyone(std::string mask, userrec* user); +00036 bool ip_matches_everyone(std::string ip, userrec* user); +00037 bool nick_matches_everyone(std::string nick, userrec* user); +00038 int operstrcmp(char* data,char* input); +00039 +00040 /* XXX Serious WTFness XXX +00041 * +00042 * Well, unless someone invents a wildcard or +00043 * regexp #include, and makes it a standard, +00044 * we're stuck with this way of including all +00045 * the commands. +00046 */ +00047 +00048 #include "cmd_admin.h" +00049 #include "cmd_away.h" +00050 #include "cmd_commands.h" +00051 #include "cmd_connect.h" +00052 #include "cmd_die.h" +00053 #include "cmd_eline.h" +00054 #include "cmd_gline.h" +00055 #include "cmd_info.h" +00056 #include "cmd_invite.h" +00057 #include "cmd_ison.h" +00058 #include "cmd_join.h" +00059 #include "cmd_kick.h" +00060 #include "cmd_kill.h" +00061 #include "cmd_kline.h" +00062 #include "cmd_links.h" +00063 #include "cmd_list.h" +00064 #include "cmd_loadmodule.h" +00065 #include "cmd_lusers.h" +00066 #include "cmd_map.h" +00067 #include "cmd_modules.h" +00068 #include "cmd_motd.h" +00069 #include "cmd_names.h" +00070 #include "cmd_nick.h" +00071 #include "cmd_notice.h" +00072 #include "cmd_oper.h" +00073 #include "cmd_part.h" +00074 #include "cmd_pass.h" +00075 #include "cmd_ping.h" +00076 #include "cmd_pong.h" +00077 #include "cmd_privmsg.h" +00078 #include "cmd_qline.h" +00079 #include "cmd_quit.h" +00080 #include "cmd_rehash.h" +00081 #include "cmd_restart.h" +00082 #include "cmd_rules.h" +00083 #include "cmd_server.h" +00084 #include "cmd_squit.h" +00085 #include "cmd_stats.h" +00086 #include "cmd_summon.h" +00087 #include "cmd_time.h" +00088 #include "cmd_topic.h" +00089 #include "cmd_trace.h" +00090 #include "cmd_unloadmodule.h" +00091 #include "cmd_user.h" +00092 #include "cmd_userhost.h" +00093 #include "cmd_users.h" +00094 #include "cmd_version.h" +00095 #include "cmd_wallops.h" +00096 #include "cmd_who.h" +00097 #include "cmd_whois.h" +00098 #include "cmd_whowas.h" +00099 #include "cmd_zline.h" +00100 +00101 +00102 #endif +

Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/commands_8h.html b/docs/module-doc/commands_8h.html index d34bebd33..519a15ab4 100644 --- a/docs/module-doc/commands_8h.html +++ b/docs/module-doc/commands_8h.html @@ -15,13 +15,64 @@ #include <vector>
#include "users.h"
#include "channels.h"
+#include "cmd_admin.h"
+#include "cmd_away.h"
+#include "cmd_commands.h"
+#include "cmd_connect.h"
+#include "cmd_die.h"
+#include "cmd_eline.h"
+#include "cmd_gline.h"
+#include "cmd_info.h"
+#include "cmd_invite.h"
+#include "cmd_ison.h"
+#include "cmd_join.h"
+#include "cmd_kick.h"
+#include "cmd_kill.h"
+#include "cmd_kline.h"
+#include "cmd_links.h"
+#include "cmd_list.h"
+#include "cmd_loadmodule.h"
+#include "cmd_lusers.h"
+#include "cmd_map.h"
+#include "cmd_modules.h"
+#include "cmd_motd.h"
+#include "cmd_names.h"
+#include "cmd_nick.h"
+#include "cmd_notice.h"
+#include "cmd_oper.h"
+#include "cmd_part.h"
+#include "cmd_pass.h"
+#include "cmd_ping.h"
+#include "cmd_pong.h"
+#include "cmd_privmsg.h"
+#include "cmd_qline.h"
+#include "cmd_quit.h"
+#include "cmd_rehash.h"
+#include "cmd_restart.h"
+#include "cmd_rules.h"
+#include "cmd_server.h"
+#include "cmd_squit.h"
+#include "cmd_stats.h"
+#include "cmd_summon.h"
+#include "cmd_time.h"
+#include "cmd_topic.h"
+#include "cmd_trace.h"
+#include "cmd_unloadmodule.h"
+#include "cmd_user.h"
+#include "cmd_userhost.h"
+#include "cmd_users.h"
+#include "cmd_version.h"
+#include "cmd_wallops.h"
+#include "cmd_who.h"
+#include "cmd_whois.h"
+#include "cmd_whowas.h"
+#include "cmd_zline.h"

Include dependency graph for commands.h:

- - - + +

@@ -36,184 +87,34 @@ This graph shows which files directly or indirectly include this file:

Go to the source code of this file. - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + - + - + - + - + - - + - - +

Functions

void handle_join (char **parameters, int pcnt, userrec *user)
char * CleanFilename (char *name)
 These are the handlers for user commands.
void handle_part (char **parameters, int pcnt, userrec *user)
void handle_kick (char **parameters, int pcnt, userrec *user)
void handle_die (char **parameters, int pcnt, userrec *user)
void handle_restart (char **parameters, int pcnt, userrec *user)
void handle_kill (char **parameters, int pcnt, userrec *user)
void handle_summon (char **parameters, int pcnt, userrec *user)
void handle_users (char **parameters, int pcnt, userrec *user)
void handle_pass (char **parameters, int pcnt, userrec *user)
void handle_invite (char **parameters, int pcnt, userrec *user)
void handle_topic (char **parameters, int pcnt, userrec *user)
void handle_names (char **parameters, int pcnt, userrec *user)
void handle_privmsg (char **parameters, int pcnt, userrec *user)
void handle_notice (char **parameters, int pcnt, userrec *user)
void handle_info (char **parameters, int pcnt, userrec *user)
void handle_time (char **parameters, int pcnt, userrec *user)
void handle_whois (char **parameters, int pcnt, userrec *user)
void handle_quit (char **parameters, int pcnt, userrec *user)
void handle_who (char **parameters, int pcnt, userrec *user)
void handle_wallops (char **parameters, int pcnt, userrec *user)
void handle_list (char **parameters, int pcnt, userrec *user)
void handle_rehash (char **parameters, int pcnt, userrec *user)
void handle_lusers (char **parameters, int pcnt, userrec *user)
void handle_admin (char **parameters, int pcnt, userrec *user)
void handle_ping (char **parameters, int pcnt, userrec *user)
void handle_pong (char **parameters, int pcnt, userrec *user)
void handle_motd (char **parameters, int pcnt, userrec *user)
void handle_rules (char **parameters, int pcnt, userrec *user)
void handle_user (char **parameters, int pcnt, userrec *user)
void handle_userhost (char **parameters, int pcnt, userrec *user)
void handle_ison (char **parameters, int pcnt, userrec *user)
void handle_away (char **parameters, int pcnt, userrec *user)
void handle_whowas (char **parameters, int pcnt, userrec *user)
void handle_trace (char **parameters, int pcnt, userrec *user)
void handle_modules (char **parameters, int pcnt, userrec *user)
void handle_stats (char **parameters, int pcnt, userrec *user)
void handle_connect (char **parameters, int pcnt, userrec *user)
void handle_squit (char **parameters, int pcnt, userrec *user)
void handle_links (char **parameters, int pcnt, userrec *user)
void handle_map (char **parameters, int pcnt, userrec *user)
void handle_oper (char **parameters, int pcnt, userrec *user)
void handle_nick (char **parameters, int pcnt, userrec *user)
void handle_kline (char **parameters, int pcnt, userrec *user)
void handle_gline (char **parameters, int pcnt, userrec *user)
void handle_zline (char **parameters, int pcnt, userrec *user)
void handle_qline (char **parameters, int pcnt, userrec *user)
void handle_eline (char **parameters, int pcnt, userrec *user)
void handle_server (char **parameters, int pcnt, userrec *user)
bool is_uline (const char *server)
void handle_loadmodule (char **parameters, int pcnt, userrec *user)
long duration (const char *str)
void handle_unloadmodule (char **parameters, int pcnt, userrec *user)
void do_whois (userrec *user, userrec *dest, unsigned long signon, unsigned long idle, char *nick)
void handle_commands (char **parameters, int pcnt, userrec *user)
bool host_matches_everyone (std::string mask, userrec *user)
bool is_uline (const char *server)
bool ip_matches_everyone (std::string ip, userrec *user)
 Functions for u:lined servers.
long duration (const char *str)
bool nick_matches_everyone (std::string nick, userrec *user)
 Other useful functions.
void do_whois (userrec *user, userrec *dest, unsigned long signon, unsigned long idle, char *nick)
int operstrcmp (char *data, char *input)

Function Documentation

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
void do_whois userrec user,
userrec dest,
unsigned long  signon,
unsigned long  idle,
char *  nick
-
- - - - - -
-   - - -

-

-

+

- + - - + + @@ -229,78 +130,43 @@ This graph shows which files directly or indirectly include this file:

-Other useful functions. -

- -

-Referenced by Server::CalcDuration(). +

long duration char* CleanFilename const char *  str char *  name  ) 
-

+

- -
- + - - - - - - - - + + - + + - - - -
void handle_admin void do_whois char **  parameters,
int  pcnt, userrec user,
userrec user dest,
-
- - - - - -
-   - - -

-

-

- - -
- - - - - - + + - - + + - - + + @@ -322,33 +188,18 @@ Referenced by Server::CalcD
void handle_away char **  parameters, unsigned long  signon,
int  pcnt, unsigned long  idle,
userrec userchar *  nick
-

+

@@ -362,25 +213,21 @@ Referenced by Server::CalcD + +

+Referenced by Server::CalcDuration().

- + - - - - - - - - - - - - - - - - - - - + + + +
void handle_commands long duration char **  parameters,
int  pcnt,
userrec user
const char *  str  ) 

-

-

+

- + - - - - - - - - + + @@ -408,22 +255,16 @@ Referenced by Server::CalcD
void handle_connect bool host_matches_everyone char **  parameters,
int  pcnt, std::string  mask,
-

+

- + - - - - - - - - + + @@ -451,33 +292,18 @@ Referenced by Server::CalcD
void handle_die bool ip_matches_everyone char **  parameters,
int  pcnt, std::string  ip,
-

+

@@ -491,25 +317,21 @@ Referenced by Server::CalcD + +

+Referenced by userrec::HasPermission(), Server::IsUlined(), and kick_channel().

- + - - - - - - - - - - - - - - - - - - - + + + +
void handle_eline bool is_uline char **  parameters,
int  pcnt,
userrec user
const char *  server  ) 

-

-

+

+ + + +
- + - - - - - - - - + + @@ -537,28 +359,22 @@ Referenced by Server::CalcD
void handle_gline bool nick_matches_everyone char **  parameters,
int  pcnt, std::string  nick,
-

+

- + - - - - - - - - + + - - + + @@ -580,1890 +396,7 @@ Referenced by Server::CalcD
void handle_info int operstrcmp char **  parameters,
int  pcnt, char *  data,
userrec userchar *  input
-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_invite char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_ison char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_join char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-These are the handlers for user commands. -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_kick char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_kill char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_kline char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_links char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_list char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_loadmodule char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_lusers char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_map char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_modules char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_motd char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_names char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_nick char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_notice char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_oper char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_part char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_pass char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_ping char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_pong char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_privmsg char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_qline char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_quit char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_rehash char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_restart char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_rules char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_server char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_squit char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_stats char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_summon char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_time char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_topic char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_trace char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_unloadmodule char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_user char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_userhost char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_users char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_wallops char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_who char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_whois char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_whowas char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
void handle_zline char **  parameters,
int  pcnt,
userrec user
-
- - - - - -
-   - - -

-

-

- - - - -
- - - - - - - - - -
bool is_uline const char *  server  ) 
-
- - - - - -
-   - - -

-Functions for u:lined servers. -

- -

-Referenced by userrec::HasPermission(), Server::IsUlined(), and kick_channel().

-


Generated on Thu Dec 15 11:14:15 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/commands_8h__incl.map b/docs/module-doc/commands_8h__incl.map index c90c37759..3712e88fb 100644 --- a/docs/module-doc/commands_8h__incl.map +++ b/docs/module-doc/commands_8h__incl.map @@ -1,4 +1,3 @@ base referer -rect $users_8h-source.html 159,260 223,287 -rect $channels_8h-source.html 283,210 368,236 -rect $connection_8h-source.html 276,362 375,388 +rect $users_8h-source.html 198,260 262,287 +rect $channels_8h-source.html 355,311 440,337 diff --git a/docs/module-doc/commands_8h__incl.md5 b/docs/module-doc/commands_8h__incl.md5 index 75966de38..cb82238d9 100644 --- a/docs/module-doc/commands_8h__incl.md5 +++ b/docs/module-doc/commands_8h__incl.md5 @@ -1 +1 @@ -0ab6434b364171922a16fbd69fe35c2b \ No newline at end of file +a53e792c40a1f2a94bc199e5679cfe9b \ No newline at end of file diff --git a/docs/module-doc/connection_8h-source.html b/docs/module-doc/connection_8h-source.html index be8560aa5..d0aa3eac3 100644 --- a/docs/module-doc/connection_8h-source.html +++ b/docs/module-doc/connection_8h-source.html @@ -82,7 +82,7 @@ 00107 #endif 00108 00109 -
Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/connection_8h.html b/docs/module-doc/connection_8h.html index d78e7e3ba..5b9315941 100644 --- a/docs/module-doc/connection_8h.html +++ b/docs/module-doc/connection_8h.html @@ -43,7 +43,7 @@ This graph shows which files directly or indirectly include this file:

 Please note: classes serverrec and userrec both inherit from class connection. More...
-


Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/connection_8h__dep__incl.md5 b/docs/module-doc/connection_8h__dep__incl.md5 index 107cf65bd..805703248 100644 --- a/docs/module-doc/connection_8h__dep__incl.md5 +++ b/docs/module-doc/connection_8h__dep__incl.md5 @@ -1 +1 @@ -59ee32ffe8ea5904c6be653a9ecfd51c \ No newline at end of file +0e1861daaddbab4521f1d2933037aa81 \ No newline at end of file diff --git a/docs/module-doc/ctables_8h-source.html b/docs/module-doc/ctables_8h-source.html index d5c1630ad..e2d1ecb8b 100644 --- a/docs/module-doc/ctables_8h-source.html +++ b/docs/module-doc/ctables_8h-source.html @@ -27,24 +27,38 @@ 00018 #define __CTABLES_H__ 00019 00020 #include "inspircd_config.h" -00021 #include "inspircd.h" -00022 #include "base.h" -00023 -00026 class command_t : public Extensible -00027 { -00028 public: -00031 char command[MAXBUF]; -00034 handlerfunc *handler_function; +00021 #include <deque> +00022 +00023 class userrec; +00024 +00025 /*typedef void (handlerfunc) (char**, int, userrec*);*/ +00026 +00029 class command_t +00030 { +00031 public: +00034 std::string command; 00037 char flags_needed; 00040 int min_params; 00043 long use_count; 00046 long total_bytes; -00049 char source[MAXBUF]; -00050 }; -00051 -00052 #endif -00053 -
Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00049 std::string source; +00050 +00051 command_t(std::string cmd, char flags, int minpara) : command(cmd), flags_needed(flags), min_params(minpara) +00052 { +00053 use_count = total_bytes = 0; +00054 source = "<core>"; +00055 } +00056 +00057 virtual void Handle(char** parameters, int pcnt, userrec* user) = 0; +00058 +00059 virtual ~command_t() {} +00060 }; +00061 +00062 typedef std::deque<command_t*> command_table; +00063 +00064 #endif +00065 +
Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/ctables_8h.html b/docs/module-doc/ctables_8h.html index 8c924681f..42e44d330 100644 --- a/docs/module-doc/ctables_8h.html +++ b/docs/module-doc/ctables_8h.html @@ -8,23 +8,19 @@

ctables.h File Reference

#include "inspircd_config.h"
-#include "inspircd.h"
-#include "base.h"
+#include <deque>

Include dependency graph for ctables.h:

- - - -

This graph shows which files directly or indirectly include this file:

- - + + - + +

@@ -34,8 +30,37 @@ This graph shows which files directly or indirectly include this file:

class  command_t
 A structure that defines a command. More...

Typedefs

typedef std::deque< command_t * > command_table
+


Typedef Documentation

+

+ + + + +
+ + + + +
typedef std::deque<command_t*> command_table
+
+ + + + +
+   + + +

+ +

+Definition at line 62 of file ctables.h.

-


Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/ctables_8h__dep__incl.map b/docs/module-doc/ctables_8h__dep__incl.map index 87b8aefa4..23354987f 100644 --- a/docs/module-doc/ctables_8h__dep__incl.map +++ b/docs/module-doc/ctables_8h__dep__incl.map @@ -1,5 +1,6 @@ base referer -rect $channels_8cpp-source.html 400,58 499,84 -rect $modules_8cpp-source.html 400,159 499,186 +rect $channels_8cpp-source.html 400,108 499,135 +rect $modules_8cpp-source.html 400,184 499,211 rect $modules_8h-source.html 134,108 216,135 -rect $typedefs_8h-source.html 266,58 351,84 +rect $typedefs_8h-source.html 266,159 351,185 +rect $mode_8h-source.html 275,209 342,236 diff --git a/docs/module-doc/ctables_8h__dep__incl.md5 b/docs/module-doc/ctables_8h__dep__incl.md5 index 3307d14f6..c35f9be47 100644 --- a/docs/module-doc/ctables_8h__dep__incl.md5 +++ b/docs/module-doc/ctables_8h__dep__incl.md5 @@ -1 +1 @@ -6858a245b05b677af1e0f72cce2d967f \ No newline at end of file +1cb19b8d7a8ce1acf4cdb02da02f3f37 \ No newline at end of file diff --git a/docs/module-doc/ctables_8h__incl.map b/docs/module-doc/ctables_8h__incl.map index 413e1a566..5a14779e7 100644 --- a/docs/module-doc/ctables_8h__incl.map +++ b/docs/module-doc/ctables_8h__incl.map @@ -1,3 +1 @@ base referer -rect $inspircd_8h-source.html 132,57 212,84 -rect $base_8h-source.html 141,108 203,135 diff --git a/docs/module-doc/ctables_8h__incl.md5 b/docs/module-doc/ctables_8h__incl.md5 index 8cde4cbba..cd96c12ea 100644 --- a/docs/module-doc/ctables_8h__incl.md5 +++ b/docs/module-doc/ctables_8h__incl.md5 @@ -1 +1 @@ -4bac505726c8cdd742349b74377d3ac3 \ No newline at end of file +40fd955ba897df932e17c7525207162b \ No newline at end of file diff --git a/docs/module-doc/cull__list_8h-source.html b/docs/module-doc/cull__list_8h-source.html index 0edd66e92..83695c0e5 100644 --- a/docs/module-doc/cull__list_8h-source.html +++ b/docs/module-doc/cull__list_8h-source.html @@ -60,7 +60,7 @@ 00109 }; 00110 00111 #endif -
Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/cull__list_8h.html b/docs/module-doc/cull__list_8h.html index 3495b81d6..4e852de90 100644 --- a/docs/module-doc/cull__list_8h.html +++ b/docs/module-doc/cull__list_8h.html @@ -20,8 +20,9 @@ Include dependency graph for cull_list.h:

- - + + +

@@ -35,7 +36,7 @@ Include dependency graph for cull_list.h:

 
The CullList class can be used by modules, and is used by the core, to compile large lists of users in preperation to quitting them all at once. More...
-


Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/cull__list_8h__incl.map b/docs/module-doc/cull__list_8h__incl.map index 1308df182..83585e216 100644 --- a/docs/module-doc/cull__list_8h__incl.map +++ b/docs/module-doc/cull__list_8h__incl.map @@ -1,4 +1,5 @@ base referer rect $users_8h-source.html 138,260 202,287 -rect $channels_8h-source.html 262,210 347,236 -rect $connection_8h-source.html 255,362 354,388 +rect $channels_8h-source.html 262,209 347,236 +rect $connection_8h-source.html 255,412 354,439 +rect $hashcomp_8h-source.html 258,311 351,337 diff --git a/docs/module-doc/cull__list_8h__incl.md5 b/docs/module-doc/cull__list_8h__incl.md5 index 0d58df24d..8e48434f9 100644 --- a/docs/module-doc/cull__list_8h__incl.md5 +++ b/docs/module-doc/cull__list_8h__incl.md5 @@ -1 +1 @@ -eba432fe5650ee3ba1491a9f1a296ae1 \ No newline at end of file +15a1b582a0c3999d28743f4a72ab2570 \ No newline at end of file diff --git a/docs/module-doc/dir_000000.html b/docs/module-doc/dir_000000.html index 1d1d82589..34e772952 100644 --- a/docs/module-doc/dir_000000.html +++ b/docs/module-doc/dir_000000.html @@ -20,7 +20,7 @@
directory  brain
-


Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/dir_000000_dep.gif b/docs/module-doc/dir_000000_dep.gif index f2c3bcd44..62bb6fe7e 100644 Binary files a/docs/module-doc/dir_000000_dep.gif and b/docs/module-doc/dir_000000_dep.gif differ diff --git a/docs/module-doc/dir_000001.html b/docs/module-doc/dir_000001.html index 5a5ae1ff0..3ba6911ae 100644 --- a/docs/module-doc/dir_000001.html +++ b/docs/module-doc/dir_000001.html @@ -21,7 +21,7 @@
directory  inspircd-cvs
-


Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/dir_000001_dep.gif b/docs/module-doc/dir_000001_dep.gif index a2748fee9..dcea55c5c 100644 Binary files a/docs/module-doc/dir_000001_dep.gif and b/docs/module-doc/dir_000001_dep.gif differ diff --git a/docs/module-doc/dir_000002.html b/docs/module-doc/dir_000002.html index 9661f9726..20d93c329 100644 --- a/docs/module-doc/dir_000002.html +++ b/docs/module-doc/dir_000002.html @@ -21,7 +21,7 @@
directory  inspircd
-


Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/dir_000002_dep.gif b/docs/module-doc/dir_000002_dep.gif index fb9a6f64a..370b51966 100644 Binary files a/docs/module-doc/dir_000002_dep.gif and b/docs/module-doc/dir_000002_dep.gif differ diff --git a/docs/module-doc/dir_000003.html b/docs/module-doc/dir_000003.html index bbc95ada8..2ac34368a 100644 --- a/docs/module-doc/dir_000003.html +++ b/docs/module-doc/dir_000003.html @@ -26,7 +26,7 @@ directory  src -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/dir_000003_dep.gif b/docs/module-doc/dir_000003_dep.gif index 57efe33a6..b920a467f 100644 Binary files a/docs/module-doc/dir_000003_dep.gif and b/docs/module-doc/dir_000003_dep.gif differ diff --git a/docs/module-doc/dir_000004.html b/docs/module-doc/dir_000004.html index 9f9dfde98..1cb43f248 100644 --- a/docs/module-doc/dir_000004.html +++ b/docs/module-doc/dir_000004.html @@ -17,6 +17,8 @@ + + @@ -58,7 +60,7 @@

Files

file  aes.h [code]
file  base.h [code]
file  channels.h [code]
file  xline.h [code]
-
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/dir_000004_dep.gif b/docs/module-doc/dir_000004_dep.gif index 069d80062..4db6c66d6 100644 Binary files a/docs/module-doc/dir_000004_dep.gif and b/docs/module-doc/dir_000004_dep.gif differ diff --git a/docs/module-doc/dir_000005.html b/docs/module-doc/dir_000005.html index f5c01a6e1..7afa9451f 100644 --- a/docs/module-doc/dir_000005.html +++ b/docs/module-doc/dir_000005.html @@ -31,7 +31,7 @@ file  users.cpp [code] -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/dir_000005_000004.html b/docs/module-doc/dir_000005_000004.html index 028cea65e..700c77fbb 100644 --- a/docs/module-doc/dir_000005_000004.html +++ b/docs/module-doc/dir_000005_000004.html @@ -7,7 +7,7 @@ -

src → include Relation

File in home » brain » inspircd-cvs » inspircd » srcIncludes file in home » brain » inspircd-cvs » inspircd » include
channels.cppcommands.h
channels.cppctables.h
channels.cppglobals.h
channels.cppinspircd.h
channels.cppinspircd_io.h
channels.cppmessage.h
channels.cppmode.h
channels.cppmodules.h
channels.cpptypedefs.h
channels.cppusers.h
channels.cppxline.h
modules.cppcommands.h
modules.cppctables.h
modules.cppglobals.h
modules.cpphashcomp.h
modules.cppinspircd.h
modules.cppinspircd_io.h
modules.cppmessage.h
modules.cppmode.h
modules.cppmodules.h
modules.cppsocket.h
modules.cppsocketengine.h
modules.cpptypedefs.h
modules.cppusers.h
modules.cppxline.h
socket.cppinspircd.h
socket.cppinspircd_io.h
socket.cppsocket.h
socket.cppsocketengine.h
socketengine.cppglobals.h
socketengine.cppinspircd.h
socketengine.cppsocketengine.h
users.cppchannels.h
users.cppcommands.h
users.cppconnection.h
users.cppinspircd.h
users.cppusers.h

Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +

src → include Relation

File in home » brain » inspircd-cvs » inspircd » srcIncludes file in home » brain » inspircd-cvs » inspircd » include
channels.cppcommands.h
channels.cppctables.h
channels.cppglobals.h
channels.cppinspircd.h
channels.cppinspircd_io.h
channels.cppmessage.h
channels.cppmode.h
channels.cppmodules.h
channels.cpptypedefs.h
channels.cppusers.h
channels.cppxline.h
modules.cppcommands.h
modules.cppctables.h
modules.cppglobals.h
modules.cpphashcomp.h
modules.cppinspircd.h
modules.cppinspircd_io.h
modules.cppmessage.h
modules.cppmode.h
modules.cppmodules.h
modules.cppsocket.h
modules.cppsocketengine.h
modules.cpptypedefs.h
modules.cppusers.h
modules.cppxline.h
socket.cppinspircd.h
socket.cppinspircd_io.h
socket.cppsocket.h
socket.cppsocketengine.h
socketengine.cppglobals.h
socketengine.cppinspircd.h
socketengine.cppsocketengine.h
users.cppchannels.h
users.cppcommands.h
users.cppconnection.h
users.cpphashcomp.h
users.cppinspircd.h
users.cppmessage.h
users.cppsocketengine.h
users.cpptypedefs.h
users.cppusers.h
users.cppxline.h

Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/dir_000005_dep.gif b/docs/module-doc/dir_000005_dep.gif index 946e6e401..b101b5fba 100644 Binary files a/docs/module-doc/dir_000005_dep.gif and b/docs/module-doc/dir_000005_dep.gif differ diff --git a/docs/module-doc/dirs.html b/docs/module-doc/dirs.html index f4c283aef..e195168bb 100644 --- a/docs/module-doc/dirs.html +++ b/docs/module-doc/dirs.html @@ -21,7 +21,7 @@ -
Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/dns_8h-source.html b/docs/module-doc/dns_8h-source.html index 76c546680..197c36e83 100644 --- a/docs/module-doc/dns_8h-source.html +++ b/docs/module-doc/dns_8h-source.html @@ -74,8 +74,10 @@ 00097 void SetNS(std::string dnsserver); 00098 }; 00099 -00100 #endif -

Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00105 void* dns_task(void* arg); +00106 +00107 #endif +

Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/dns_8h.html b/docs/module-doc/dns_8h.html index e24387110..3b5c6dc4f 100644 --- a/docs/module-doc/dns_8h.html +++ b/docs/module-doc/dns_8h.html @@ -24,8 +24,43 @@ Include dependency graph for dns.h:

class  DNS  The DNS class allows fast nonblocking resolution of hostnames and ip addresses. More...
+

Functions

+void * dns_task (void *arg) + + This is the handler function for multi-threaded DNS.
+ +

Function Documentation

+

+ + + + +
+ + + + + + + + + +
void* dns_task void *  arg  ) 
+
+ + + + +
+   + + +

+This is the handler function for multi-threaded DNS. +

+It cannot be a class member as pthread will not let us create a thread whos handler function is a member of a class (ugh).

-


Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/files.html b/docs/module-doc/files.html index 32fe81008..00a06dc08 100644 --- a/docs/module-doc/files.html +++ b/docs/module-doc/files.html @@ -6,6 +6,7 @@

InspIRCd File List

Here is a list of all files with brief descriptions: + @@ -32,7 +33,7 @@
aes.h [code]
base.h [code]
channels.cpp [code]
channels.h [code]
users.h [code]
xline.h [code]
-
Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/functions.html b/docs/module-doc/functions.html index 63ec060ee..95dd71675 100644 --- a/docs/module-doc/functions.html +++ b/docs/module-doc/functions.html @@ -5,21 +5,24 @@ - -
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
+ +
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

Here is a list of all class members with links to the classes they belong to:

- a -

-
Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
diff --git a/docs/module-doc/functions_0x62.html b/docs/module-doc/functions_0x62.html index 736160f32..bc155ce8e 100644 --- a/docs/module-doc/functions_0x62.html +++ b/docs/module-doc/functions_0x62.html @@ -5,8 +5,8 @@ - -
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
+ +
a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

Here is a list of all class members with links to the classes they belong to: @@ -17,12 +17,14 @@ Here is a list of all class members with links to the classes they belong to: : chanrec

  • binip : DNS
  • bits : BoolSet
  • BoolSet() -: BoolSet
  • BufferIsReady() +: BoolSet
  • BoundPortCount +: serverstats
  • Buffer +: InspSocket
  • BufferIsReady() : userrec
  • Build : Version
  • bytes_in : connection
  • bytes_out : connection -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x63.html b/docs/module-doc/functions_0x63.html index 0d8524325..74818b341 100644 --- a/docs/module-doc/functions_0x63.html +++ b/docs/module-doc/functions_0x63.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -15,12 +15,14 @@ Here is a list of all class members with links to the classes they belong to:

  • cache : ConfigReader
  • CalcDuration() : Server
  • CallCommandHandler() -: Server
  • ChangeGECOS() +: Server
  • CBC +: AES
  • CFB +: AES
  • ChangeGECOS() : Server
  • ChangeHost() : Server
  • ChangeUserNick() : Server
  • ChanMode() : Server
  • channel -: Invited, ucrec, ModeParameter
  • chanrec() +: Invited, ucrec, ModeParameter
  • chanrec() : chanrec
  • chans : userrec
  • classbase() : classbase
  • Classes @@ -29,12 +31,15 @@ Here is a list of all class members with links to the classes they belong to: : ServerConfig
  • client : InspSocket
  • Close() : InspSocket
  • CloseSocket() -: userrec
  • cmds_in +: userrec
  • cmd_mode() +: cmd_mode
  • cmds_in : connection
  • cmds_out : connection
  • command -: command_t
  • CommonChannels() +: command_t
  • command_t() +: command_t
  • CommonChannels() : Server
  • compare() -: irc::irc_char_traits
  • config_f +: irc::irc_char_traits
  • CompressModes() +: ModeParser
  • config_f : ServerConfig
  • ConfigReader() : ConfigReader
  • ConfProcess() : ServerConfig
  • ConfValue() @@ -48,7 +53,7 @@ Here is a list of all class members with links to the classes they belong to: : CullItem
  • CullList() : CullList
  • custom_modes : chanrec -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x64.html b/docs/module-doc/functions_0x64.html index 0b78affb0..005209a84 100644 --- a/docs/module-doc/functions_0x64.html +++ b/docs/module-doc/functions_0x64.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -14,10 +14,16 @@ Here is a list of all class members with links to the classes they belong to:

    - d -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x65.html b/docs/module-doc/functions_0x65.html index b13a3179c..0e48c9ad0 100644 --- a/docs/module-doc/functions_0x65.html +++ b/docs/module-doc/functions_0x65.html @@ -5,15 +5,18 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to:

    - e -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x66.html b/docs/module-doc/functions_0x66.html index 6943c877f..f29c77ed4 100644 --- a/docs/module-doc/functions_0x66.html +++ b/docs/module-doc/functions_0x66.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -27,10 +27,11 @@ Here is a list of all class members with links to the classes they belong to: : Version

  • flags_needed : command_t
  • flood : userrec, ConnectClass
  • FlushWriteBuf() -: userrec
  • ForwardLookup() +: userrec
  • FlushWriteBuffer() +: InspSocket
  • ForwardLookup() : DNS
  • fullname : WhoWasUser, userrec -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x67.html b/docs/module-doc/functions_0x67.html index acc6bf592..eb9b310a7 100644 --- a/docs/module-doc/functions_0x67.html +++ b/docs/module-doc/functions_0x67.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -14,7 +14,8 @@ Here is a list of all class members with links to the classes they belong to:

    - g -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +: userrec
  • GiveHops() +: ModeParser
  • GiveOps() +: ModeParser
  • GiveVoice() +: ModeParser +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x68.html b/docs/module-doc/functions_0x68.html index 3250e4c58..863b6e1e4 100644 --- a/docs/module-doc/functions_0x68.html +++ b/docs/module-doc/functions_0x68.html @@ -5,22 +5,22 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to:

    - h -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x69.html b/docs/module-doc/functions_0x69.html index 00e894dc9..5647c4c11 100644 --- a/docs/module-doc/functions_0x69.html +++ b/docs/module-doc/functions_0x69.html @@ -5,15 +5,15 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to:

    - i -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x6a.html b/docs/module-doc/functions_0x6a.html index 9ab823918..2fd50b8bf 100644 --- a/docs/module-doc/functions_0x6a.html +++ b/docs/module-doc/functions_0x6a.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -14,7 +14,7 @@ Here is a list of all class members with links to the classes they belong to:

    - j -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x6b.html b/docs/module-doc/functions_0x6b.html index b31f235c5..0f93a0eb6 100644 --- a/docs/module-doc/functions_0x6b.html +++ b/docs/module-doc/functions_0x6b.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -15,7 +15,7 @@ Here is a list of all class members with links to the classes they belong to:

  • ke_list : SocketEngine
  • key : chanrec -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x6c.html b/docs/module-doc/functions_0x6c.html index f61606efc..2168c2141 100644 --- a/docs/module-doc/functions_0x6c.html +++ b/docs/module-doc/functions_0x6c.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -26,7 +26,7 @@ Here is a list of all class members with links to the classes they belong to: : ServerConfig

  • LogLevel : ServerConfig
  • lt() : irc::irc_char_traits -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x6d.html b/docs/module-doc/functions_0x6d.html index 44a413882..6c662b1b8 100644 --- a/docs/module-doc/functions_0x6d.html +++ b/docs/module-doc/functions_0x6d.html @@ -5,34 +5,51 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to:

    - m -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x6e.html b/docs/module-doc/functions_0x6e.html index 397d656be..89d86504b 100644 --- a/docs/module-doc/functions_0x6e.html +++ b/docs/module-doc/functions_0x6e.html @@ -5,27 +5,27 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to:

    - n -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x6f.html b/docs/module-doc/functions_0x6f.html index f012bb45a..db6082df5 100644 --- a/docs/module-doc/functions_0x6f.html +++ b/docs/module-doc/functions_0x6f.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -101,7 +101,7 @@ Here is a list of all class members with links to the classes they belong to: : BoolSet

  • operator==() : BoolSet
  • operator|() : BoolSet -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x70.html b/docs/module-doc/functions_0x70.html index 5d6613503..22b5ef20b 100644 --- a/docs/module-doc/functions_0x70.html +++ b/docs/module-doc/functions_0x70.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -15,7 +15,8 @@ Here is a list of all class members with links to the classes they belong to:

  • parameter : ModeParameter
  • params_when_off : ExtMode
  • params_when_on -: ExtMode
  • PartUserFromChannel() +: ExtMode
  • Parser +: InspIRCd
  • PartUserFromChannel() : Server
  • pass : ConnectClass
  • password : userrec
  • PID @@ -25,11 +26,13 @@ Here is a list of all class members with links to the classes they belong to: : InspSocket
  • port : InspSocket, connection
  • ports : ServerConfig
  • PrefixQuit -: ServerConfig
  • ProtoSendMetaData() +: ServerConfig
  • ProcessModes() +: ModeParser
  • ProcessModuleUmode() +: ModeParser
  • ProtoSendMetaData() : Module
  • ProtoSendMode() : Module
  • PseudoToUser() : Server -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x71.html b/docs/module-doc/functions_0x71.html index 7b4365cb6..8e071e032 100644 --- a/docs/module-doc/functions_0x71.html +++ b/docs/module-doc/functions_0x71.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -14,7 +14,7 @@ Here is a list of all class members with links to the classes they belong to:

    - q -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x72.html b/docs/module-doc/functions_0x72.html index e89daa627..4b19d3f79 100644 --- a/docs/module-doc/functions_0x72.html +++ b/docs/module-doc/functions_0x72.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -26,17 +26,18 @@ Here is a list of all class members with links to the classes they belong to: : connection

  • registration_timeout : ConnectClass
  • RehashServer() : Server
  • RemoveInvite() -: userrec
  • Request() +: userrec
  • Request() : Request
  • reset_due -: userrec
  • restartpass +: userrec
  • ResetChain() +: AES
  • restartpass : ServerConfig
  • result : DNS
  • ReverseLookup() : DNS
  • Revision -: Version
  • rules -: ServerConfig
  • RULES -: ServerConfig
  • Run() +: Version
  • RULES +: ServerConfig
  • rules +: ServerConfig
  • Run() : InspIRCd -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x73.html b/docs/module-doc/functions_0x73.html index 12dbd6c49..154b57c31 100644 --- a/docs/module-doc/functions_0x73.html +++ b/docs/module-doc/functions_0x73.html @@ -5,14 +5,15 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to:

    - s -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x74.html b/docs/module-doc/functions_0x74.html index 79d5d82a7..9a538ab9e 100644 --- a/docs/module-doc/functions_0x74.html +++ b/docs/module-doc/functions_0x74.html @@ -5,25 +5,30 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to:

    - t -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x75.html b/docs/module-doc/functions_0x75.html index 2867f70ee..9a5e271b4 100644 --- a/docs/module-doc/functions_0x75.html +++ b/docs/module-doc/functions_0x75.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -22,7 +22,7 @@ Here is a list of all class members with links to the classes they belong to: : CullItem

  • userrec() : userrec
  • UserToPseudo() : Server -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x76.html b/docs/module-doc/functions_0x76.html index 2bb6274dc..4c63ec899 100644 --- a/docs/module-doc/functions_0x76.html +++ b/docs/module-doc/functions_0x76.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -15,7 +15,7 @@ Here is a list of all class members with links to the classes they belong to:

  • Verify() : ConfigReader
  • Version() : Version -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x77.html b/docs/module-doc/functions_0x77.html index 3a959fe84..3f205a5dc 100644 --- a/docs/module-doc/functions_0x77.html +++ b/docs/module-doc/functions_0x77.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to: @@ -16,7 +16,7 @@ Here is a list of all class members with links to the classes they belong to: : SocketEngine

  • Write() : InspSocket
  • WriteError : userrec -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_0x7e.html b/docs/module-doc/functions_0x7e.html index 1845daa86..70858c9c3 100644 --- a/docs/module-doc/functions_0x7e.html +++ b/docs/module-doc/functions_0x7e.html @@ -5,16 +5,18 @@ - -
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | k | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    Here is a list of all class members with links to the classes they belong to:

    - ~ -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func.html b/docs/module-doc/functions_func.html index f9c400a64..eac6ec6d8 100644 --- a/docs/module-doc/functions_func.html +++ b/docs/module-doc/functions_func.html @@ -5,21 +5,23 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    - a -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x62.html b/docs/module-doc/functions_func_0x62.html index 4cc924223..516e7fa73 100644 --- a/docs/module-doc/functions_func_0x62.html +++ b/docs/module-doc/functions_func_0x62.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -15,7 +15,7 @@

  • BoolSet() : BoolSet
  • BufferIsReady() : userrec -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x63.html b/docs/module-doc/functions_func_0x63.html index dafc2bb24..5c3e5327a 100644 --- a/docs/module-doc/functions_func_0x63.html +++ b/docs/module-doc/functions_func_0x63.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -24,9 +24,12 @@ : userrec

  • ClearStack() : ServerConfig
  • Close() : InspSocket
  • CloseSocket() -: userrec
  • CommonChannels() +: userrec
  • cmd_mode() +: cmd_mode
  • command_t() +: command_t
  • CommonChannels() : Server
  • compare() -: irc::irc_char_traits
  • ConfigReader() +: irc::irc_char_traits
  • CompressModes() +: ModeParser
  • ConfigReader() : ConfigReader
  • ConfProcess() : ServerConfig
  • ConfValue() : ServerConfig
  • ConfValueEnum() @@ -37,7 +40,7 @@ : ModuleFactory
  • CullItem() : CullItem
  • CullList() : CullList -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x64.html b/docs/module-doc/functions_func_0x64.html index 354a939f7..4e43d8f04 100644 --- a/docs/module-doc/functions_func_0x64.html +++ b/docs/module-doc/functions_func_0x64.html @@ -5,17 +5,22 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    - d -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x65.html b/docs/module-doc/functions_func_0x65.html index 6d3510385..8dac8fe1f 100644 --- a/docs/module-doc/functions_func_0x65.html +++ b/docs/module-doc/functions_func_0x65.html @@ -5,14 +5,16 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    - e -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x66.html b/docs/module-doc/functions_func_0x66.html index fc943467c..b8794425c 100644 --- a/docs/module-doc/functions_func_0x66.html +++ b/docs/module-doc/functions_func_0x66.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -21,9 +21,10 @@ : Server

  • FindModule() : Server
  • FindNick() : Server
  • FlushWriteBuf() -: userrec
  • ForwardLookup() +: userrec
  • FlushWriteBuffer() +: InspSocket
  • ForwardLookup() : DNS -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x67.html b/docs/module-doc/functions_func_0x67.html index f9d8ee6a4..a72d3fa6d 100644 --- a/docs/module-doc/functions_func_0x67.html +++ b/docs/module-doc/functions_func_0x67.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -14,7 +14,8 @@

    - g -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +: userrec
  • GiveHops() +: ModeParser
  • GiveOps() +: ModeParser
  • GiveVoice() +: ModeParser +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x68.html b/docs/module-doc/functions_func_0x68.html index d1c262528..25a9c99e5 100644 --- a/docs/module-doc/functions_func_0x68.html +++ b/docs/module-doc/functions_func_0x68.html @@ -5,18 +5,19 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    - h -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x69.html b/docs/module-doc/functions_func_0x69.html index 26bd00cd0..1428ced29 100644 --- a/docs/module-doc/functions_func_0x69.html +++ b/docs/module-doc/functions_func_0x69.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -16,15 +16,15 @@ : InspIRCd

  • InspSocket() : InspSocket
  • Invert() : BoolSet
  • InviteTo() -: userrec
  • IsCustomModeSet() +: userrec
  • IsCustomModeSet() : chanrec
  • IsInvited() -: userrec
  • IsNick() +: userrec
  • IsNick() : Server
  • IsOnChannel() : Server
  • IsUlined() : Server
  • IsValidMask() : Server
  • IsValidModuleCommand() : Server -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x6a.html b/docs/module-doc/functions_func_0x6a.html index a7819edbf..093c8e298 100644 --- a/docs/module-doc/functions_func_0x6a.html +++ b/docs/module-doc/functions_func_0x6a.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -14,7 +14,7 @@

    - j -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x6c.html b/docs/module-doc/functions_func_0x6c.html index 972a68d09..43e752c47 100644 --- a/docs/module-doc/functions_func_0x6c.html +++ b/docs/module-doc/functions_func_0x6c.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -18,7 +18,7 @@ : InspIRCd

  • Log() : Server
  • lt() : irc::irc_char_traits -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x6d.html b/docs/module-doc/functions_func_0x6d.html index 423e52154..43f8eb9f0 100644 --- a/docs/module-doc/functions_func_0x6d.html +++ b/docs/module-doc/functions_func_0x6d.html @@ -5,19 +5,23 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    - m -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +: ModuleFactory
  • Mul() +: AES
  • Mul4() +: AES +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x6e.html b/docs/module-doc/functions_func_0x6e.html index 976019c1b..d99d92872 100644 --- a/docs/module-doc/functions_func_0x6e.html +++ b/docs/module-doc/functions_func_0x6e.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -14,7 +14,7 @@

    - n -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x6f.html b/docs/module-doc/functions_func_0x6f.html index 4881460f4..d18bcfc48 100644 --- a/docs/module-doc/functions_func_0x6f.html +++ b/docs/module-doc/functions_func_0x6f.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -100,7 +100,7 @@ : BoolSet

  • operator==() : BoolSet
  • operator|() : BoolSet -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x70.html b/docs/module-doc/functions_func_0x70.html index f641d4978..695993316 100644 --- a/docs/module-doc/functions_func_0x70.html +++ b/docs/module-doc/functions_func_0x70.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -14,11 +14,13 @@

    - p -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x71.html b/docs/module-doc/functions_func_0x71.html index 611969743..11ea7aa89 100644 --- a/docs/module-doc/functions_func_0x71.html +++ b/docs/module-doc/functions_func_0x71.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -14,7 +14,7 @@

    - q -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x72.html b/docs/module-doc/functions_func_0x72.html index 2ba0aa884..bcb7d49bb 100644 --- a/docs/module-doc/functions_func_0x72.html +++ b/docs/module-doc/functions_func_0x72.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -20,11 +20,12 @@ : ConfigReader

  • ReadValue() : ConfigReader
  • RehashServer() : Server
  • RemoveInvite() -: userrec
  • Request() -: Request
  • ReverseLookup() +: userrec
  • Request() +: Request
  • ResetChain() +: AES
  • ReverseLookup() : DNS
  • Run() : InspIRCd -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x73.html b/docs/module-doc/functions_func_0x73.html index 09cac519e..c3a329511 100644 --- a/docs/module-doc/functions_func_0x73.html +++ b/docs/module-doc/functions_func_0x73.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -25,7 +25,8 @@ : Server

  • SendWallops() : Server
  • Server() : Server
  • ServerConfig() -: ServerConfig
  • serverstats() +: ServerConfig
  • ServerMode() +: ModeParser
  • serverstats() : serverstats
  • Set() : BoolSet
  • SetCustomMode() : chanrec
  • SetCustomModeParam() @@ -35,7 +36,7 @@ : userrec
  • Shrink() : Extensible
  • SocketEngine() : SocketEngine -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x74.html b/docs/module-doc/functions_func_0x74.html index 141a71d81..1efce4189 100644 --- a/docs/module-doc/functions_func_0x74.html +++ b/docs/module-doc/functions_func_0x74.html @@ -5,16 +5,20 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    - t -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x75.html b/docs/module-doc/functions_func_0x75.html index 20c0bba3c..7725007ab 100644 --- a/docs/module-doc/functions_func_0x75.html +++ b/docs/module-doc/functions_func_0x75.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -18,7 +18,7 @@ : BoolSet

  • userrec() : userrec
  • UserToPseudo() : Server -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x76.html b/docs/module-doc/functions_func_0x76.html index 4095d1e0a..30db7c9a9 100644 --- a/docs/module-doc/functions_func_0x76.html +++ b/docs/module-doc/functions_func_0x76.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -15,7 +15,7 @@

  • Verify() : ConfigReader
  • Version() : Version -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x77.html b/docs/module-doc/functions_func_0x77.html index 8b01a4dd6..b0713720a 100644 --- a/docs/module-doc/functions_func_0x77.html +++ b/docs/module-doc/functions_func_0x77.html @@ -5,8 +5,8 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    @@ -15,7 +15,7 @@

  • Wait() : SocketEngine
  • Write() : InspSocket -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_func_0x7e.html b/docs/module-doc/functions_func_0x7e.html index 69bd5df59..ba0048e08 100644 --- a/docs/module-doc/functions_func_0x7e.html +++ b/docs/module-doc/functions_func_0x7e.html @@ -5,16 +5,18 @@ - -
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | ~
    + +
    a | b | c | d | e | f | g | h | i | j | l | m | n | o | p | q | r | s | t | u | v | w | x | ~

    - ~ -

    -
    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/functions_vars.html b/docs/module-doc/functions_vars.html index c4ef6f30a..c01ba521b 100644 --- a/docs/module-doc/functions_vars.html +++ b/docs/module-doc/functions_vars.html @@ -5,14 +5,15 @@ - +
    a | b | c | d | e | f | h | i | k | l | m | n | o | p | r | s | t | u | w

    - a -

    - c -

    @@ -76,22 +79,22 @@ : userrec, ConnectClass
  • fullname : WhoWasUser, userrec

    - h -

    - i -

    - k -

    - m -

    - n -

    - o -

    +: Version
  • RULES +: ServerConfig
  • rules +: ServerConfig

    - s -

    - t -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x62.html b/docs/module-doc/globals_0x62.html index 919c02294..7f8f96ae2 100644 --- a/docs/module-doc/globals_0x62.html +++ b/docs/module-doc/globals_0x62.html @@ -16,9 +16,8 @@ Here is a list of all file members with links to the files they belong to: : channels.h
  • BindPorts() : inspircd_io.h
  • BindSocket() : inspircd_io.h
  • Blocking() -: message.h
  • boundPortCount -: socket.cpp -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +: message.h +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x63.html b/docs/module-doc/globals_0x63.html index 765d32c91..944287285 100644 --- a/docs/module-doc/globals_0x63.html +++ b/docs/module-doc/globals_0x63.html @@ -13,8 +13,7 @@ Here is a list of all file members with links to the files they belong to:

    - c -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x64.html b/docs/module-doc/globals_0x64.html index c1cbda21e..e03404410 100644 --- a/docs/module-doc/globals_0x64.html +++ b/docs/module-doc/globals_0x64.html @@ -22,13 +22,13 @@ Here is a list of all file members with links to the files they belong to: : xline.h
  • del_qline() : xline.h
  • del_zline() : xline.h
  • DeleteOper() -: inspircd.h
  • dns_task() -: inspircd.h
  • do_whois() +: users.h, users.cpp
  • dns_task() +: dns.h
  • do_whois() : commands.h
  • DoAddExtendedMode() : modules.cpp
  • DoBackgroundUserStuff() : userprocess.h
  • duration() : commands.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x65.html b/docs/module-doc/globals_0x65.html index d68d6edc3..4d7f52f1b 100644 --- a/docs/module-doc/globals_0x65.html +++ b/docs/module-doc/globals_0x65.html @@ -21,7 +21,7 @@ Here is a list of all file members with links to the files they belong to: : xline.h
  • ExtModeList : typedefs.h
  • ExtModeListIter : typedefs.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x66.html b/docs/module-doc/globals_0x66.html index d6190c77c..8d00787b3 100644 --- a/docs/module-doc/globals_0x66.html +++ b/docs/module-doc/globals_0x66.html @@ -13,21 +13,22 @@ Here is a list of all file members with links to the files they belong to:

    - f -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +: modules.h
  • from64tobits() +: aes.h
  • FullConnectUser() +: users.h, users.cpp +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x67.html b/docs/module-doc/globals_0x67.html index 248d9abe6..60f8884d7 100644 --- a/docs/module-doc/globals_0x67.html +++ b/docs/module-doc/globals_0x67.html @@ -17,12 +17,9 @@ Here is a list of all file members with links to the files they belong to: : globals.h
  • getadminnick() : globals.h
  • getnetworkname() : globals.h
  • getservername() -: globals.h
  • give_hops() -: mode.h
  • give_ops() -: mode.h
  • give_voice() -: mode.h
  • gline_set_creation_time() +: globals.h
  • gline_set_creation_time() : xline.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x68.html b/docs/module-doc/globals_0x68.html index 9cc8414fd..98e360dd8 100644 --- a/docs/module-doc/globals_0x68.html +++ b/docs/module-doc/globals_0x68.html @@ -12,64 +12,11 @@ Here is a list of all file members with links to the files they belong to:

    - h -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +: message.h
  • host_matches_everyone() +: commands.h +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x69.html b/docs/module-doc/globals_0x69.html index 61d3cd1f7..4fd62e793 100644 --- a/docs/module-doc/globals_0x69.html +++ b/docs/module-doc/globals_0x69.html @@ -25,16 +25,16 @@ Here is a list of all file members with links to the files they belong to: : socket.h
  • InspSocketState : socket.h
  • InvitedList : users.h
  • InviteList -: channels.h
  • ircd_module +: channels.h
  • ip_matches_everyone() +: commands.h
  • ircd_module : modules.h
  • IS_LOCAL -: inspircd.h
  • IS_MODULE_CREATED -: inspircd.h
  • IS_REMOTE -: inspircd.h
  • is_uline() -: commands.h
  • is_valid_cmd() -: inspircd.h
  • isident() +: modules.h
  • IS_MODULE_CREATED +: modules.h
  • IS_REMOTE +: modules.h
  • is_uline() +: commands.h
  • isident() : message.h
  • isnick() : message.h, globals.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x6b.html b/docs/module-doc/globals_0x6b.html index cf552cda4..66783a85a 100644 --- a/docs/module-doc/globals_0x6b.html +++ b/docs/module-doc/globals_0x6b.html @@ -14,9 +14,9 @@ Here is a list of all file members with links to the files they belong to:

    - k -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +: users.h, users.cpp
  • kill_link_silent() +: users.h, users.cpp +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x6c.html b/docs/module-doc/globals_0x6c.html index 36dbdfa08..20b75d3e1 100644 --- a/docs/module-doc/globals_0x6c.html +++ b/docs/module-doc/globals_0x6c.html @@ -13,10 +13,10 @@ Here is a list of all file members with links to the files they belong to:

    - l -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +: userprocess.h
  • local_users +: users.cpp
  • log() +: globals.h +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x6d.html b/docs/module-doc/globals_0x6d.html index 83b5c4e48..7389dffd0 100644 --- a/docs/module-doc/globals_0x6d.html +++ b/docs/module-doc/globals_0x6d.html @@ -19,10 +19,8 @@ Here is a list of all file members with links to the files they belong to: : xline.h
  • matches_zline() : xline.h
  • MAXCOMMAND : inspircd.h
  • MAXSOCKS -: inspircd.h
  • merge_mode() -: mode.h
  • merge_mode2() -: mode.h
  • MODCOUNT -: modules.cpp, channels.cpp
  • ModeDefiend() +: inspircd.h
  • MODCOUNT +: users.cpp, modules.cpp, channels.cpp
  • ModeDefiend() : globals.h
  • ModeDefined() : modules.h, modules.cpp
  • ModeDefinedOff() : modules.h, modules.cpp
  • ModeDefinedOn() @@ -30,12 +28,12 @@ Here is a list of all file members with links to the files they belong to: : modules.h, modules.cpp
  • ModeIsListMode() : modules.h, modules.cpp
  • ModeMakeList() : modules.h, modules.cpp
  • module_sockets -: modules.cpp
  • modules -: modules.cpp, channels.cpp
  • MT_CHANNEL +: users.cpp, modules.cpp
  • modules +: modules.cpp, users.cpp, modules.cpp, channels.cpp
  • MT_CHANNEL : modules.h
  • MT_CLIENT : modules.h
  • MT_SERVER : modules.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x6e.html b/docs/module-doc/globals_0x6e.html index 62214b413..502d0b9ba 100644 --- a/docs/module-doc/globals_0x6e.html +++ b/docs/module-doc/globals_0x6e.html @@ -12,11 +12,12 @@ Here is a list of all file members with links to the files they belong to:

    - n -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x6f.html b/docs/module-doc/globals_0x6f.html index 3b76cd4e4..e38c83b44 100644 --- a/docs/module-doc/globals_0x6f.html +++ b/docs/module-doc/globals_0x6f.html @@ -13,10 +13,10 @@ Here is a list of all file members with links to the files they belong to:

    - o -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +: userprocess.h
  • OpenTCPSocket() +: inspircd_io.h
  • operstrcmp() +: commands.h +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x70.html b/docs/module-doc/globals_0x70.html index 659e2ca40..df26acd58 100644 --- a/docs/module-doc/globals_0x70.html +++ b/docs/module-doc/globals_0x70.html @@ -12,12 +12,9 @@ Here is a list of all file members with links to the files they belong to:

    - p -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x71.html b/docs/module-doc/globals_0x71.html index 6722d9540..07226e2b3 100644 --- a/docs/module-doc/globals_0x71.html +++ b/docs/module-doc/globals_0x71.html @@ -15,7 +15,7 @@ Here is a list of all file members with links to the files they belong to:
  • qline_make_global() : xline.h
  • qline_set_creation_time() : xline.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x72.html b/docs/module-doc/globals_0x72.html index cf0b43fe5..8a95f8c5b 100644 --- a/docs/module-doc/globals_0x72.html +++ b/docs/module-doc/globals_0x72.html @@ -16,8 +16,8 @@ Here is a list of all file members with links to the files they belong to: : xline.h
  • readfile() : globals.h
  • ref : socketengine.cpp
  • ReHashNick() -: inspircd.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +: users.h, users.cpp +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x73.html b/docs/module-doc/globals_0x73.html index 95a4f0391..282ac9644 100644 --- a/docs/module-doc/globals_0x73.html +++ b/docs/module-doc/globals_0x73.html @@ -12,13 +12,11 @@ Here is a list of all file members with links to the files they belong to:

    - s -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x74.html b/docs/module-doc/globals_0x74.html index fa72e66fd..5d754b3bd 100644 --- a/docs/module-doc/globals_0x74.html +++ b/docs/module-doc/globals_0x74.html @@ -12,19 +12,16 @@ Here is a list of all file members with links to the files they belong to:

    - t -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +: modules.h
  • TYPE_SERVER +: modules.h
  • TYPE_USER +: modules.h +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x75.html b/docs/module-doc/globals_0x75.html index ba86fe49f..df26a8590 100644 --- a/docs/module-doc/globals_0x75.html +++ b/docs/module-doc/globals_0x75.html @@ -19,7 +19,7 @@ Here is a list of all file members with links to the files they belong to: : channels.h
  • UCMODE_VOICE : channels.h
  • user_hash : typedefs.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x76.html b/docs/module-doc/globals_0x76.html index d9a685da7..367298953 100644 --- a/docs/module-doc/globals_0x76.html +++ b/docs/module-doc/globals_0x76.html @@ -19,7 +19,7 @@ Here is a list of all file members with links to the files they belong to: : modules.h
  • VF_VENDOR : modules.h
  • VoidPointer : base.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x77.html b/docs/module-doc/globals_0x77.html index 03c173705..74dc85811 100644 --- a/docs/module-doc/globals_0x77.html +++ b/docs/module-doc/globals_0x77.html @@ -12,12 +12,13 @@ Here is a list of all file members with links to the files they belong to:

    - w -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x78.html b/docs/module-doc/globals_0x78.html index 0da0ab53f..5ddaf3aed 100644 --- a/docs/module-doc/globals_0x78.html +++ b/docs/module-doc/globals_0x78.html @@ -19,7 +19,7 @@ Here is a list of all file members with links to the files they belong to: : socketengine.h
  • X_LISTEN : socketengine.h
  • X_READBIT : socketengine.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_0x7a.html b/docs/module-doc/globals_0x7a.html index 04da69501..8fc3891c5 100644 --- a/docs/module-doc/globals_0x7a.html +++ b/docs/module-doc/globals_0x7a.html @@ -15,7 +15,7 @@ Here is a list of all file members with links to the files they belong to:
  • zline_make_global() : xline.h
  • zline_set_creation_time() : xline.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_8h-source.html b/docs/module-doc/globals_8h-source.html index 6ebac3264..57481c27f 100644 --- a/docs/module-doc/globals_8h-source.html +++ b/docs/module-doc/globals_8h-source.html @@ -62,7 +62,7 @@ 00053 int ModeDefiend(char c, int i); 00054 00055 #endif -

  • Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_8h.html b/docs/module-doc/globals_8h.html index f84f545f2..afae7a1a4 100644 --- a/docs/module-doc/globals_8h.html +++ b/docs/module-doc/globals_8h.html @@ -17,9 +17,10 @@

    Include dependency graph for globals.h:

    - + - + +

    @@ -162,7 +163,7 @@ Definition at line 29 of

    -Referenced by Server::SendChannel(). +Referenced by Server::SendChannel().

    @@ -201,7 +202,7 @@ Referenced by Server::SendC

    -Referenced by Server::ChanMode(). +Referenced by Server::ChanMode().

    @@ -240,7 +241,7 @@ Referenced by Server::ChanM

    -Referenced by Server::CommonChannels(). +Referenced by Server::CommonChannels().

    @@ -270,7 +271,7 @@ Referenced by Server::Commo

    -Referenced by Server::FindNick(). +Referenced by Server::FindNick().

    @@ -300,7 +301,7 @@ Referenced by Server::FindN

    -Referenced by add_channel(), del_channel(), and Server::FindChannel(). +Referenced by add_channel(), del_channel(), and Server::FindChannel().

    @@ -465,7 +466,7 @@ Referenced by add_channel(

    -Referenced by Server::IsNick(). +Referenced by Server::IsNick().

    @@ -510,7 +511,7 @@ Referenced by Server::IsNic

    -Referenced by add_channel(), Server::AddExtendedMode(), SocketEngine::AddFd(), chanrec::AddUser(), del_channel(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), InspSocket::InspSocket(), kick_channel(), Server::Log(), InspSocket::Read(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine(). +Referenced by add_channel(), AddClient(), Server::AddExtendedMode(), SocketEngine::AddFd(), AddOper(), chanrec::AddUser(), AddWhoWas(), del_channel(), DeleteOper(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), FullConnectUser(), InspSocket::InspSocket(), kick_channel(), kill_link(), kill_link_silent(), Server::Log(), InspSocket::Read(), ReHashNick(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().

    @@ -586,7 +587,7 @@ Referenced by add_channel(

    -Referenced by FileReader::FileReader(), and FileReader::LoadFile(). +Referenced by FileReader::FileReader(), and FileReader::LoadFile().

    @@ -631,7 +632,7 @@ Referenced by FileReader::F

    -Referenced by Server::PseudoToUser(), Server::Send(), Server::SendTo(), and Server::UserToPseudo(). +Referenced by kill_link(), kill_link_silent(), Server::PseudoToUser(), Server::Send(), Server::SendTo(), and Server::UserToPseudo().

    @@ -682,7 +683,7 @@ Referenced by Server::Pseud

    -Referenced by del_channel(), ForceChan(), kick_channel(), and Server::SendChannel(). +Referenced by del_channel(), ForceChan(), kick_channel(), and Server::SendChannel().

    @@ -727,7 +728,7 @@ Referenced by del_channel(

    -Referenced by Server::SendCommon(). +Referenced by Server::SendCommon().

    @@ -772,7 +773,7 @@ Referenced by Server::SendC

    -Referenced by Server::SendCommon(). +Referenced by kill_link(), kill_link_silent(), and Server::SendCommon().

    @@ -823,7 +824,7 @@ Referenced by Server::SendC

    -Referenced by Server::PseudoToUser(), and Server::SendFrom(). +Referenced by Server::PseudoToUser(), and Server::SendFrom().

    @@ -862,7 +863,7 @@ Referenced by Server::Pseud

    -Referenced by userrec::AddBuffer(), userrec::AddWriteBuf(), ConfigReader::DumpErrors(), Server::RehashServer(), and Server::SendOpers(). +Referenced by userrec::AddBuffer(), userrec::AddWriteBuf(), ConfigReader::DumpErrors(), FullConnectUser(), kill_link(), Server::RehashServer(), and Server::SendOpers().

    @@ -907,7 +908,7 @@ Referenced by userrec::AddBuf

    -Referenced by add_channel(), ConfigReader::DumpErrors(), ForceChan(), kick_channel(), Server::PseudoToUser(), and Server::SendServ(). +Referenced by add_channel(), ConfigReader::DumpErrors(), ForceChan(), FullConnectUser(), kick_channel(), Server::PseudoToUser(), and Server::SendServ().

    @@ -958,7 +959,7 @@ Referenced by add_channel(

    -Referenced by Server::SendTo(). +Referenced by Server::SendTo().

    @@ -1009,10 +1010,10 @@ Referenced by Server::SendT

    -Referenced by Server::SendWallops(). +Referenced by Server::SendWallops(). -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_8h__dep__incl.md5 b/docs/module-doc/globals_8h__dep__incl.md5 index c1e5ca4dd..5b28fd8e6 100644 --- a/docs/module-doc/globals_8h__dep__incl.md5 +++ b/docs/module-doc/globals_8h__dep__incl.md5 @@ -1 +1 @@ -9d6f4bf521bab022edbf6a21bf5aa7ea \ No newline at end of file +1ef247aba7c18e92a4fa5c62345d5980 \ No newline at end of file diff --git a/docs/module-doc/globals_8h__incl.map b/docs/module-doc/globals_8h__incl.map index 70f97a908..8a8679da5 100644 --- a/docs/module-doc/globals_8h__incl.map +++ b/docs/module-doc/globals_8h__incl.map @@ -1,4 +1,5 @@ base referer -rect $users_8h-source.html 138,235 202,261 +rect $users_8h-source.html 138,260 202,287 rect $channels_8h-source.html 262,159 347,185 -rect $connection_8h-source.html 255,361 354,388 +rect $connection_8h-source.html 255,311 354,337 +rect $hashcomp_8h-source.html 258,361 351,388 diff --git a/docs/module-doc/globals_8h__incl.md5 b/docs/module-doc/globals_8h__incl.md5 index b01db37e7..29705f0ba 100644 --- a/docs/module-doc/globals_8h__incl.md5 +++ b/docs/module-doc/globals_8h__incl.md5 @@ -1 +1 @@ -a3b3469472caf7df1d6ac1729fa3eb57 \ No newline at end of file +578c3aa06350d981bcd02180a126f6e8 \ No newline at end of file diff --git a/docs/module-doc/globals_defs.html b/docs/module-doc/globals_defs.html index 64b135653..b25cddde6 100644 --- a/docs/module-doc/globals_defs.html +++ b/docs/module-doc/globals_defs.html @@ -54,9 +54,9 @@ : modules.h

    - i -

    +: modules.h
  • IS_MODULE_CREATED +: modules.h
  • IS_REMOTE +: modules.h

    - m -

    - u -

    - w -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +: modules.h
  • WM_OR +: modules.h +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_enum.html b/docs/module-doc/globals_enum.html index ee4b21e4d..8a2a5e2c0 100644 --- a/docs/module-doc/globals_enum.html +++ b/docs/module-doc/globals_enum.html @@ -12,7 +12,7 @@
  • InspSocketError : socket.h
  • InspSocketState : socket.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_eval.html b/docs/module-doc/globals_eval.html index 10f36b756..987b7fe79 100644 --- a/docs/module-doc/globals_eval.html +++ b/docs/module-doc/globals_eval.html @@ -19,7 +19,7 @@ : socket.h
  • I_ERROR : socket.h
  • I_LISTENING : socket.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_func.html b/docs/module-doc/globals_func.html index 309c0dc67..f12e587a5 100644 --- a/docs/module-doc/globals_func.html +++ b/docs/module-doc/globals_func.html @@ -12,18 +12,17 @@

    - a -

    - b -

    - c -

    - d -

    - f -

    +: users.h, users.cpp
  • ForceChan() +: channels.cpp
  • from64tobits() +: aes.h
  • FullConnectUser() +: users.h, users.cpp

    - g -

    - h -

    +: message.h
  • host_matches_everyone() +: commands.h

    - i -

    - k -

    +: users.h, users.cpp
  • kill_link_silent() +: users.h, users.cpp

    - l -

    +: userprocess.h
  • log() +: globals.h

    - m -

    +: modules.cpp, users.cpp, modules.cpp, channels.cpp

    - n -

    - o -

    +: inspircd_io.h
  • operstrcmp() +: commands.h

    - p -

    - q -

    +: users.h, users.cpp

    - s -

    - t -

    +: message.h
  • to64frombits() +: aes.h

    - w -

    • Write() : globals.h
    • WriteChannel() @@ -234,7 +171,7 @@
    • zline_make_global() : xline.h
    • zline_set_creation_time() : xline.h
    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_type.html b/docs/module-doc/globals_type.html index 6f465a8e4..629ba26a8 100644 --- a/docs/module-doc/globals_type.html +++ b/docs/module-doc/globals_type.html @@ -15,12 +15,11 @@ : typedefs.h
  • chanuserlist : modules.h
  • ClassVector : users.h
  • command_table -: typedefs.h
  • ExemptList +: ctables.h
  • ExemptList : channels.h
  • ExtModeList : typedefs.h
  • ExtModeListIter : typedefs.h
  • file_cache -: typedefs.h, modules.h, globals.h
  • handlerfunc -: inspircd.h
  • InvitedList +: typedefs.h, modules.h, globals.h
  • InvitedList : users.h
  • InviteList : channels.h
  • ircd_module : modules.h
  • servernamelist @@ -30,7 +29,7 @@ : typedefs.h
  • VoidPointer : base.h
  • whowas_hash : typedefs.h -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/globals_vars.html b/docs/module-doc/globals_vars.html index 5d938142c..bfe69f2dc 100644 --- a/docs/module-doc/globals_vars.html +++ b/docs/module-doc/globals_vars.html @@ -6,25 +6,23 @@ -
    a | b | c | e | f | m | o | r | s | t | w | x
    +
    a | c | e | f | l | m | r | s | t | w | x

    - a -

    -

    - b -

    - c -

    @@ -33,31 +31,31 @@ : modules.cpp

    - f -

    +: modules.cpp, users.cpp, modules.cpp, channels.cpp
  • fd_ref_table +: users.cpp, modules.cpp +

    - l -

    - m -

    -

    - o -

    +: users.cpp, modules.cpp, channels.cpp
  • module_sockets +: users.cpp, modules.cpp
  • modules +: modules.cpp, users.cpp, modules.cpp, channels.cpp

    - r -

    - s -

    +
  • ServerInstance +: users.cpp, socket.cpp, modules.cpp
  • socket_ref +: users.cpp, socket.cpp

    - t -

    - w -

    +
  • whowas +: users.cpp
  • WHOWAS_MAX +: users.cpp, channels.cpp
  • WHOWAS_STALE +: users.cpp, channels.cpp

    - x -

    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/graph_legend.gif b/docs/module-doc/graph_legend.gif index f3adc6e30..865472e8c 100644 Binary files a/docs/module-doc/graph_legend.gif and b/docs/module-doc/graph_legend.gif differ diff --git a/docs/module-doc/graph_legend.html b/docs/module-doc/graph_legend.html index 706afb308..bbe0ebefd 100644 --- a/docs/module-doc/graph_legend.html +++ b/docs/module-doc/graph_legend.html @@ -67,7 +67,7 @@ A purple dashed arrow is used if a class is contained or used by another class.
  • A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labeled with the template parameters of the instance.
  • -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/hashcomp_8h-source.html b/docs/module-doc/hashcomp_8h-source.html index 08d0abcc0..4fbdf8d15 100644 --- a/docs/module-doc/hashcomp_8h-source.html +++ b/docs/module-doc/hashcomp_8h-source.html @@ -109,7 +109,7 @@ 00130 } 00131 00132 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/hashcomp_8h.html b/docs/module-doc/hashcomp_8h.html index d9399a264..44ba296ac 100644 --- a/docs/module-doc/hashcomp_8h.html +++ b/docs/module-doc/hashcomp_8h.html @@ -16,9 +16,10 @@ Include dependency graph for hashcomp.h:

    - - - + + + +

    @@ -79,7 +80,7 @@ This graph shows which files directly or indirectly include this file:

    44 of file hashcomp.h. -
    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/hashcomp_8h__dep__incl.map b/docs/module-doc/hashcomp_8h__dep__incl.map index 52c40f1fc..8e8539c82 100644 --- a/docs/module-doc/hashcomp_8h__dep__incl.map +++ b/docs/module-doc/hashcomp_8h__dep__incl.map @@ -1,4 +1,5 @@ base referer -rect $modules_8cpp-source.html 285,7 384,34 -rect $typedefs_8h-source.html 151,58 236,84 -rect $channels_8cpp-source.html 285,58 384,84 +rect $modules_8cpp-source.html 399,58 497,84 +rect $users_8cpp-source.html 408,159 488,186 +rect $users_8h-source.html 152,108 216,135 +rect $typedefs_8h-source.html 265,58 351,84 diff --git a/docs/module-doc/hashcomp_8h__dep__incl.md5 b/docs/module-doc/hashcomp_8h__dep__incl.md5 index 6be4611c3..cad960de2 100644 --- a/docs/module-doc/hashcomp_8h__dep__incl.md5 +++ b/docs/module-doc/hashcomp_8h__dep__incl.md5 @@ -1 +1 @@ -6a6c46b821cf3dc5d3cadf06a3a1391b \ No newline at end of file +5670628fe56960fde1c1a397ce860733 \ No newline at end of file diff --git a/docs/module-doc/hierarchy.html b/docs/module-doc/hierarchy.html index c65994f69..b58db2482 100644 --- a/docs/module-doc/hierarchy.html +++ b/docs/module-doc/hierarchy.html @@ -8,6 +8,7 @@

    InspIRCd Class Hierarchy

    Go to the graphical class hierarchy

    This inheritance list is sorted roughly, but not completely, alphabetically:

      +
    • AES
    • BoolSet
    • char_traits
        @@ -21,7 +22,6 @@ This inheritance list is sorted roughly, but not completely, alphabetically:
        • Extensible
          • chanrec -
          • command_t
          • connection
            • userrec @@ -57,6 +57,10 @@ This inheritance list is sorted roughly, but not completely, alphabetically:
            +
          • command_t +
          • CullItem
          • CullList
          • DNS @@ -66,12 +70,13 @@ This inheritance list is sorted roughly, but not completely, alphabetically: -
            Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
            Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
            diff --git a/docs/module-doc/inherit__graph__0.map b/docs/module-doc/inherit__graph__0.map index 09d914fed..360388e46 100644 --- a/docs/module-doc/inherit__graph__0.map +++ b/docs/module-doc/inherit__graph__0.map @@ -1,2 +1,2 @@ base referer -rect $classBoolSet.html 7,7 76,33 +rect $classAES.html 7,7 57,33 diff --git a/docs/module-doc/inherit__graph__0.md5 b/docs/module-doc/inherit__graph__0.md5 index 0d55dc8ff..0da62c0cd 100644 --- a/docs/module-doc/inherit__graph__0.md5 +++ b/docs/module-doc/inherit__graph__0.md5 @@ -1 +1 @@ -93d9e4fbc2d3cddda9a76d7441754f2b \ No newline at end of file +4c1910dbd53656eee7c5c84fc773f193 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__1.map b/docs/module-doc/inherit__graph__1.map index 2fef6e5ed..09d914fed 100644 --- a/docs/module-doc/inherit__graph__1.map +++ b/docs/module-doc/inherit__graph__1.map @@ -1,3 +1,2 @@ base referer -rect $classstd_1_1char__traits.html 8,7 91,33 -rect $structirc_1_1irc__char__traits.html 140,7 268,33 +rect $classBoolSet.html 7,7 76,33 diff --git a/docs/module-doc/inherit__graph__1.md5 b/docs/module-doc/inherit__graph__1.md5 index 9dc9f695d..0d55dc8ff 100644 --- a/docs/module-doc/inherit__graph__1.md5 +++ b/docs/module-doc/inherit__graph__1.md5 @@ -1 +1 @@ -9b6f095874e1ac542b37f925a223adb0 \ No newline at end of file +93d9e4fbc2d3cddda9a76d7441754f2b \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__10.map b/docs/module-doc/inherit__graph__10.map index 8c67f4a72..9f8c7b021 100644 --- a/docs/module-doc/inherit__graph__10.map +++ b/docs/module-doc/inherit__graph__10.map @@ -1,2 +1,2 @@ base referer -rect $structirc_1_1StrHashComp.html 7,7 135,33 +rect $classInspSocket.html 7,7 95,33 diff --git a/docs/module-doc/inherit__graph__10.md5 b/docs/module-doc/inherit__graph__10.md5 index b62920d1d..d2ac3e742 100644 --- a/docs/module-doc/inherit__graph__10.md5 +++ b/docs/module-doc/inherit__graph__10.md5 @@ -1 +1 @@ -d94ccc9245ee31c76282e2c8ed0c0bb2 \ No newline at end of file +866431d87448beeff03effa477cb0785 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__11.map b/docs/module-doc/inherit__graph__11.map index e91564620..dad9d9fcd 100644 --- a/docs/module-doc/inherit__graph__11.map +++ b/docs/module-doc/inherit__graph__11.map @@ -1,2 +1,2 @@ base referer -rect $structnspace_1_1hash_3_01in__addr_01_4.html 8,7 176,33 +rect $structirc_1_1InAddr__HashComp.html 7,7 164,33 diff --git a/docs/module-doc/inherit__graph__11.md5 b/docs/module-doc/inherit__graph__11.md5 index 9c5f939fc..9496775c7 100644 --- a/docs/module-doc/inherit__graph__11.md5 +++ b/docs/module-doc/inherit__graph__11.md5 @@ -1 +1 @@ -40e92872c26375b92021bb12d46d2211 \ No newline at end of file +3c2c67e0c9a15d3aaf7860ffcd39768e \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__12.map b/docs/module-doc/inherit__graph__12.map index cf6c39bc6..8c67f4a72 100644 --- a/docs/module-doc/inherit__graph__12.map +++ b/docs/module-doc/inherit__graph__12.map @@ -1,2 +1,2 @@ base referer -rect $structnspace_1_1hash_3_01string_01_4.html 7,7 164,33 +rect $structirc_1_1StrHashComp.html 7,7 135,33 diff --git a/docs/module-doc/inherit__graph__12.md5 b/docs/module-doc/inherit__graph__12.md5 index 354478843..b62920d1d 100644 --- a/docs/module-doc/inherit__graph__12.md5 +++ b/docs/module-doc/inherit__graph__12.md5 @@ -1 +1 @@ -317e8030ba500855ca30d38cc6449d34 \ No newline at end of file +d94ccc9245ee31c76282e2c8ed0c0bb2 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__13.map b/docs/module-doc/inherit__graph__13.map index 8390fc618..d4722becd 100644 --- a/docs/module-doc/inherit__graph__13.map +++ b/docs/module-doc/inherit__graph__13.map @@ -1,2 +1,2 @@ base referer -rect $classserverstats.html 7,7 95,33 +rect $classModeParser.html 8,7 101,33 diff --git a/docs/module-doc/inherit__graph__13.md5 b/docs/module-doc/inherit__graph__13.md5 index 2d37de06b..5703aac8a 100644 --- a/docs/module-doc/inherit__graph__13.md5 +++ b/docs/module-doc/inherit__graph__13.md5 @@ -1 +1 @@ -cf48882e944fddb7efa2fe6a320e8c63 \ No newline at end of file +f8e776a077ef5ca7f74ae7545b260b83 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__14.map b/docs/module-doc/inherit__graph__14.map index cb5e68503..e91564620 100644 --- a/docs/module-doc/inherit__graph__14.map +++ b/docs/module-doc/inherit__graph__14.map @@ -1,2 +1,2 @@ base referer -rect $classSocketEngine.html 8,7 112,33 +rect $structnspace_1_1hash_3_01in__addr_01_4.html 8,7 176,33 diff --git a/docs/module-doc/inherit__graph__14.md5 b/docs/module-doc/inherit__graph__14.md5 index 6349253e0..9c5f939fc 100644 --- a/docs/module-doc/inherit__graph__14.md5 +++ b/docs/module-doc/inherit__graph__14.md5 @@ -1 +1 @@ -949dcc70479b42522977703d4bb0a709 \ No newline at end of file +40e92872c26375b92021bb12d46d2211 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__15.map b/docs/module-doc/inherit__graph__15.map index f4dc152fc..cf6c39bc6 100644 --- a/docs/module-doc/inherit__graph__15.map +++ b/docs/module-doc/inherit__graph__15.map @@ -1,2 +1,2 @@ base referer -rect $classWhoWasUser.html 8,7 112,33 +rect $structnspace_1_1hash_3_01string_01_4.html 7,7 164,33 diff --git a/docs/module-doc/inherit__graph__15.md5 b/docs/module-doc/inherit__graph__15.md5 index 49ded545f..354478843 100644 --- a/docs/module-doc/inherit__graph__15.md5 +++ b/docs/module-doc/inherit__graph__15.md5 @@ -1 +1 @@ -5bff511d62c6faa81cdb63b1f78f6cd8 \ No newline at end of file +317e8030ba500855ca30d38cc6449d34 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__2.map b/docs/module-doc/inherit__graph__2.map index 089be13aa..2fef6e5ed 100644 --- a/docs/module-doc/inherit__graph__2.map +++ b/docs/module-doc/inherit__graph__2.map @@ -1,33 +1,3 @@ base referer -rect $classclassbase.html 8,412 88,439 -rect $classAdmin.html 167,7 228,33 -rect $classConfigReader.html 146,57 250,84 -rect $classConnectClass.html 146,108 250,135 -rect $classExtensible.html 156,159 239,185 -rect $classExtMode.html 160,209 235,236 -rect $classFileReader.html 154,260 242,287 -rect $classHostItem.html 160,311 235,337 -rect $classInvited.html 167,361 228,388 -rect $classModeParameter.html 139,412 256,439 -rect $classModule.html 164,463 231,489 -rect $classModuleFactory.html 143,513 252,540 -rect $classModuleMessage.html 138,564 258,591 -rect $classServer.html 167,615 228,641 -rect $classServerConfig.html 147,665 248,692 -rect $classucrec.html 171,716 224,743 -rect $classVersion.html 164,767 231,793 -rect $classXLine.html 170,817 226,844 -rect $classchanrec.html 319,108 388,135 -rect $classcommand__t.html 308,159 399,185 -rect $classconnection.html 311,209 396,236 -rect $classuserrec.html 450,209 516,236 -rect $classBanItem.html 318,260 390,287 -rect $classExemptItem.html 307,311 400,337 -rect $classInviteItem.html 314,361 394,388 -rect $classEvent.html 326,539 382,565 -rect $classRequest.html 318,589 390,616 -rect $classELine.html 326,716 382,743 -rect $classGLine.html 324,767 383,793 -rect $classKLine.html 326,817 382,844 -rect $classQLine.html 324,868 383,895 -rect $classZLine.html 326,919 382,945 +rect $classstd_1_1char__traits.html 8,7 91,33 +rect $structirc_1_1irc__char__traits.html 140,7 268,33 diff --git a/docs/module-doc/inherit__graph__2.md5 b/docs/module-doc/inherit__graph__2.md5 index c52b8028e..9dc9f695d 100644 --- a/docs/module-doc/inherit__graph__2.md5 +++ b/docs/module-doc/inherit__graph__2.md5 @@ -1 +1 @@ -6d4274482c5e5284d113f8910d688065 \ No newline at end of file +9b6f095874e1ac542b37f925a223adb0 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__3.map b/docs/module-doc/inherit__graph__3.map index 286852f67..750f8121b 100644 --- a/docs/module-doc/inherit__graph__3.map +++ b/docs/module-doc/inherit__graph__3.map @@ -1,2 +1,32 @@ base referer -rect $classCullItem.html 7,7 79,33 +rect $classclassbase.html 8,412 88,439 +rect $classAdmin.html 167,7 228,33 +rect $classConfigReader.html 146,57 250,84 +rect $classConnectClass.html 146,108 250,135 +rect $classExtensible.html 156,159 239,185 +rect $classExtMode.html 160,209 235,236 +rect $classFileReader.html 154,260 242,287 +rect $classHostItem.html 160,311 235,337 +rect $classInvited.html 167,361 228,388 +rect $classModeParameter.html 139,412 256,439 +rect $classModule.html 164,463 231,489 +rect $classModuleFactory.html 143,513 252,540 +rect $classModuleMessage.html 138,564 258,591 +rect $classServer.html 167,615 228,641 +rect $classServerConfig.html 147,665 248,692 +rect $classucrec.html 171,716 224,743 +rect $classVersion.html 164,767 231,793 +rect $classXLine.html 170,817 226,844 +rect $classchanrec.html 319,133 388,160 +rect $classconnection.html 311,184 396,211 +rect $classuserrec.html 450,184 516,211 +rect $classBanItem.html 318,260 390,287 +rect $classExemptItem.html 307,311 400,337 +rect $classInviteItem.html 314,361 394,388 +rect $classEvent.html 326,539 382,565 +rect $classRequest.html 318,589 390,616 +rect $classELine.html 326,716 382,743 +rect $classGLine.html 324,767 383,793 +rect $classKLine.html 326,817 382,844 +rect $classQLine.html 324,868 383,895 +rect $classZLine.html 326,919 382,945 diff --git a/docs/module-doc/inherit__graph__3.md5 b/docs/module-doc/inherit__graph__3.md5 index c6ff1cc7d..2b3aa861f 100644 --- a/docs/module-doc/inherit__graph__3.md5 +++ b/docs/module-doc/inherit__graph__3.md5 @@ -1 +1 @@ -04d1a5175492509e76bb27f8c708e6ac \ No newline at end of file +8b70355902672fcff82486b7fba0d379 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__4.map b/docs/module-doc/inherit__graph__4.map index 1b2802457..0d7b60b2b 100644 --- a/docs/module-doc/inherit__graph__4.map +++ b/docs/module-doc/inherit__graph__4.map @@ -1,2 +1,3 @@ base referer -rect $classCullList.html 7,7 73,33 +rect $classcommand__t.html 8,7 99,33 +rect $classcmd__mode.html 149,7 237,33 diff --git a/docs/module-doc/inherit__graph__4.md5 b/docs/module-doc/inherit__graph__4.md5 index df7340bb1..97c80f0e2 100644 --- a/docs/module-doc/inherit__graph__4.md5 +++ b/docs/module-doc/inherit__graph__4.md5 @@ -1 +1 @@ -fc7a10efd1ef64cd67f77b97165cd78b \ No newline at end of file +3dde6dbafbcda9e1b64a7ed5d68e5a93 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__5.map b/docs/module-doc/inherit__graph__5.map index 56a3b7703..286852f67 100644 --- a/docs/module-doc/inherit__graph__5.map +++ b/docs/module-doc/inherit__graph__5.map @@ -1,2 +1,2 @@ base referer -rect $classDNS.html 7,7 57,33 +rect $classCullItem.html 7,7 79,33 diff --git a/docs/module-doc/inherit__graph__5.md5 b/docs/module-doc/inherit__graph__5.md5 index 3644e817a..c6ff1cc7d 100644 --- a/docs/module-doc/inherit__graph__5.md5 +++ b/docs/module-doc/inherit__graph__5.md5 @@ -1 +1 @@ -d39d1604b95cefdfc240566a784bc1e0 \ No newline at end of file +04d1a5175492509e76bb27f8c708e6ac \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__6.map b/docs/module-doc/inherit__graph__6.map index 37bcc6048..1b2802457 100644 --- a/docs/module-doc/inherit__graph__6.map +++ b/docs/module-doc/inherit__graph__6.map @@ -1,2 +1,2 @@ base referer -rect $structdns__ip4list.html 7,7 92,33 +rect $classCullList.html 7,7 73,33 diff --git a/docs/module-doc/inherit__graph__6.md5 b/docs/module-doc/inherit__graph__6.md5 index a570a57e1..df7340bb1 100644 --- a/docs/module-doc/inherit__graph__6.md5 +++ b/docs/module-doc/inherit__graph__6.md5 @@ -1 +1 @@ -f91f9b746cbe9764b077e0f96e3d53c0 \ No newline at end of file +fc7a10efd1ef64cd67f77b97165cd78b \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__7.map b/docs/module-doc/inherit__graph__7.map index ac2c9ebe9..56a3b7703 100644 --- a/docs/module-doc/inherit__graph__7.map +++ b/docs/module-doc/inherit__graph__7.map @@ -1,2 +1,2 @@ base referer -rect $classInspIRCd.html 7,7 84,33 +rect $classDNS.html 7,7 57,33 diff --git a/docs/module-doc/inherit__graph__7.md5 b/docs/module-doc/inherit__graph__7.md5 index d6b0d6c87..3644e817a 100644 --- a/docs/module-doc/inherit__graph__7.md5 +++ b/docs/module-doc/inherit__graph__7.md5 @@ -1 +1 @@ -027440a4e7d81cbfbc813d6bda090a43 \ No newline at end of file +d39d1604b95cefdfc240566a784bc1e0 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__8.map b/docs/module-doc/inherit__graph__8.map index 9f8c7b021..37bcc6048 100644 --- a/docs/module-doc/inherit__graph__8.map +++ b/docs/module-doc/inherit__graph__8.map @@ -1,2 +1,2 @@ base referer -rect $classInspSocket.html 7,7 95,33 +rect $structdns__ip4list.html 7,7 92,33 diff --git a/docs/module-doc/inherit__graph__8.md5 b/docs/module-doc/inherit__graph__8.md5 index d2ac3e742..a570a57e1 100644 --- a/docs/module-doc/inherit__graph__8.md5 +++ b/docs/module-doc/inherit__graph__8.md5 @@ -1 +1 @@ -866431d87448beeff03effa477cb0785 \ No newline at end of file +f91f9b746cbe9764b077e0f96e3d53c0 \ No newline at end of file diff --git a/docs/module-doc/inherit__graph__9.map b/docs/module-doc/inherit__graph__9.map index dad9d9fcd..ac2c9ebe9 100644 --- a/docs/module-doc/inherit__graph__9.map +++ b/docs/module-doc/inherit__graph__9.map @@ -1,2 +1,2 @@ base referer -rect $structirc_1_1InAddr__HashComp.html 7,7 164,33 +rect $classInspIRCd.html 7,7 84,33 diff --git a/docs/module-doc/inherit__graph__9.md5 b/docs/module-doc/inherit__graph__9.md5 index 9496775c7..d6b0d6c87 100644 --- a/docs/module-doc/inherit__graph__9.md5 +++ b/docs/module-doc/inherit__graph__9.md5 @@ -1 +1 @@ -3c2c67e0c9a15d3aaf7860ffcd39768e \ No newline at end of file +027440a4e7d81cbfbc813d6bda090a43 \ No newline at end of file diff --git a/docs/module-doc/inherits.html b/docs/module-doc/inherits.html index 6a21e9c14..7a931df22 100644 --- a/docs/module-doc/inherits.html +++ b/docs/module-doc/inherits.html @@ -8,16 +8,20 @@

            InspIRCd Graphical Class Hierarchy

            Go to the textual class hierarchy

            - + - - - + - - - - - - - - + - - - -
            +
            + + +
            +
            +
            @@ -37,10 +41,9 @@ - - - - + + + @@ -52,60 +55,69 @@
            +
            + + + +
            +
            +
            +
            +
            +
            +
            +
            +
            + + +
            +
            +
            +
            +
            -


            Generated on Thu Dec 15 11:14:21 2005 for InspIRCd by  +
            Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
            diff --git a/docs/module-doc/inspircd_8h-source.html b/docs/module-doc/inspircd_8h-source.html index b2c1f49a8..7dab7e04a 100644 --- a/docs/module-doc/inspircd_8h-source.html +++ b/docs/module-doc/inspircd_8h-source.html @@ -48,103 +48,95 @@ 00039 #include <deque> 00040 00041 #include "inspircd_io.h" -00042 #include "inspircd_util.h" -00043 #include "users.h" -00044 #include "channels.h" -00045 #include "socket.h" -00046 -00047 // some misc defines +00042 #include "users.h" +00043 #include "channels.h" +00044 #include "socket.h" +00045 #include "mode.h" +00046 #include "socketengine.h" +00047 #include "command_parse.h" 00048 -00049 #define ERROR -1 -00050 #define TRUE 1 -00051 #define FALSE 0 -00052 #define MAXSOCKS 64 -00053 #define MAXCOMMAND 32 -00054 -00055 // flags for use with WriteMode -00056 -00057 #define WM_AND 1 -00058 #define WM_OR 2 -00059 -00060 // flags for use with OnUserPreMessage and OnUserPreNotice -00061 -00062 #define TYPE_USER 1 -00063 #define TYPE_CHANNEL 2 -00064 #define TYPE_SERVER 3 -00065 -00066 #define IS_LOCAL(x) (x->fd > -1) -00067 #define IS_REMOTE(x) (x->fd < 0) -00068 #define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER) -00069 -00070 typedef void (handlerfunc) (char**, int, userrec*); -00071 -00072 class serverstats -00073 { -00074 public: -00075 int statsAccept; -00076 int statsRefused; -00077 int statsUnknown; -00078 int statsCollisions; -00079 int statsDns; -00080 int statsDnsGood; -00081 int statsDnsBad; -00082 int statsConnects; -00083 int statsSent; -00084 int statsRecv; -00085 -00086 serverstats() -00087 { -00088 statsAccept = statsRefused = statsUnknown = 0; -00089 statsCollisions = statsDns = statsDnsGood = 0; -00090 statsDnsBad = statsConnects = statsSent = statsRecv = 0; -00091 } -00092 }; -00093 -00094 -00095 class InspIRCd -00096 { +00049 // some misc defines +00050 +00051 #define ERROR -1 +00052 #define TRUE 1 +00053 #define FALSE 0 +00054 #define MAXSOCKS 64 +00055 #define MAXCOMMAND 32 +00056 +00057 /* +00058 flags for use with WriteMode +00059 +00060 #define WM_AND 1 +00061 #define WM_OR 2 +00062 +00063 flags for use with OnUserPreMessage and OnUserPreNotice +00064 +00065 #define TYPE_USER 1 +00066 #define TYPE_CHANNEL 2 +00067 #define TYPE_SERVER 3 +00068 +00069 #define IS_LOCAL(x) (x->fd > -1) +00070 #define IS_REMOTE(x) (x->fd < 0) +00071 #define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER) +00072 */ +00073 +00074 class serverstats +00075 { +00076 public: +00077 int statsAccept; +00078 int statsRefused; +00079 int statsUnknown; +00080 int statsCollisions; +00081 int statsDns; +00082 int statsDnsGood; +00083 int statsDnsBad; +00084 int statsConnects; +00085 int statsSent; +00086 int statsRecv; +00087 int BoundPortCount; +00088 +00089 serverstats() +00090 { +00091 statsAccept = statsRefused = statsUnknown = 0; +00092 statsCollisions = statsDns = statsDnsGood = 0; +00093 statsDnsBad = statsConnects = statsSent = statsRecv = 0; +00094 BoundPortCount = 0; +00095 } +00096 }; 00097 -00098 private: -00099 char MODERR[MAXBUF]; -00100 void erase_factory(int j); -00101 void erase_module(int j); -00102 -00103 public: -00104 time_t startup_time; -00105 -00106 std::string GetRevision(); -00107 std::string GetVersionString(); -00108 char* ModuleError(); -00109 bool LoadModule(const char* filename); -00110 bool UnloadModule(const char* filename); -00111 InspIRCd(int argc, char** argv); -00112 int Run(); +00098 +00099 class InspIRCd +00100 { +00101 +00102 private: +00103 char MODERR[MAXBUF]; +00104 void erase_factory(int j); +00105 void erase_module(int j); +00106 +00107 public: +00108 time_t startup_time; +00109 ModeParser* ModeGrok; +00110 CommandParser* Parser; +00111 SocketEngine* SE; +00112 serverstats* stats; 00113 -00114 }; -00115 -00116 /* prototypes */ -00117 void force_nickchange(userrec* user,const char* newnick); -00118 void kill_link(userrec *user,const char* r); -00119 void kill_link_silent(userrec *user,const char* r); -00120 void call_handler(const char* commandname,char **parameters, int pcnt, userrec *user); -00121 bool is_valid_cmd(const char* commandname, int pcnt, userrec * user); -00122 int loop_call(handlerfunc fn, char **parameters, int pcnt, userrec *u, int start, int end, int joins); -00123 void AddWhoWas(userrec* u); -00124 void ConnectUser(userrec *user); -00125 userrec* ReHashNick(char* Old, char* New); -00126 /* optimization tricks to save us walking the user hash */ -00127 void AddOper(userrec* user); -00128 void DeleteOper(userrec* user); -00129 void handle_version(char **parameters, int pcnt, userrec *user); -00130 /* userrec optimization stuff */ -00131 void AddServerName(std::string servername); -00132 const char* FindServerNamePtr(std::string servername); -00133 void* dns_task(void* arg); -00134 void process_buffer(const char* cmdbuf,userrec *user); -00135 void FullConnectUser(userrec* user); -00136 -00137 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00114 void MakeLowerMap(); +00115 std::string GetRevision(); +00116 std::string GetVersionString(); +00117 char* ModuleError(); +00118 bool LoadModule(const char* filename); +00119 bool UnloadModule(const char* filename); +00120 InspIRCd(int argc, char** argv); +00121 int Run(); +00122 +00123 }; +00124 +00125 /* userrec optimization stuff */ +00126 void AddServerName(std::string servername); +00127 const char* FindServerNamePtr(std::string servername); +00128 +00129 #endif +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/inspircd_8h.html b/docs/module-doc/inspircd_8h.html index 73e37bc94..196378c4b 100644 --- a/docs/module-doc/inspircd_8h.html +++ b/docs/module-doc/inspircd_8h.html @@ -23,32 +23,36 @@ #include <arpa/inet.h>
    #include <deque>
    #include "inspircd_io.h"
    -#include "inspircd_util.h"
    #include "users.h"
    #include "channels.h"
    #include "socket.h"
    +#include "mode.h"
    +#include "socketengine.h"
    +#include "command_parse.h"

    Include dependency graph for inspircd.h:

    - - - - + + + + + +

    This graph shows which files directly or indirectly include this file:

    - - - - - - - - - + + + + + + + + +

    @@ -70,60 +74,11 @@ This graph shows which files directly or indirectly include this file:

    #define MAXCOMMAND   32 -#define WM_AND   1 - -#define WM_OR   2 - -#define TYPE_USER   1 - -#define TYPE_CHANNEL   2 - -#define TYPE_SERVER   3 - -#define IS_LOCAL(x)   (x->fd > -1) - -#define IS_REMOTE(x)   (x->fd < 0) - -#define IS_MODULE_CREATED(x)   (x->fd == FD_MAGIC_NUMBER) - -

    Typedefs

    -typedef void( handlerfunc )(char **, int, userrec *) -

    Functions

    -void force_nickchange (userrec *user, const char *newnick) - -void kill_link (userrec *user, const char *r) - -void kill_link_silent (userrec *user, const char *r) - -void call_handler (const char *commandname, char **parameters, int pcnt, userrec *user) - -bool is_valid_cmd (const char *commandname, int pcnt, userrec *user) - -int loop_call (handlerfunc fn, char **parameters, int pcnt, userrec *u, int start, int end, int joins) - -void AddWhoWas (userrec *u) - -void ConnectUser (userrec *user) - -userrecReHashNick (char *Old, char *New) - -void AddOper (userrec *user) - -void DeleteOper (userrec *user) - -void handle_version (char **parameters, int pcnt, userrec *user) - void AddServerName (std::string servername) const char * FindServerNamePtr (std::string servername) -void * dns_task (void *arg) - -void process_buffer (const char *cmdbuf, userrec *user) - -void FullConnectUser (userrec *user) -

    Define Documentation

    @@ -148,9 +103,9 @@ This graph shows which files directly or indirectly include this file:

    -Definition at line 49 of file inspircd.h. +Definition at line 51 of file inspircd.h.

    -Referenced by InspSocket::InspSocket(). +Referenced by InspSocket::InspSocket().

    @@ -175,97 +130,7 @@ Referenced by InspSocket::In

    -Definition at line 51 of file inspircd.h. - - -

    - - - - -
    - - - - - - - - - -
    #define IS_LOCAL  )    (x->fd > -1)
    -
    - - - - - -
    -   - - -

    - -

    -Definition at line 66 of file inspircd.h.

    -

    - - - - -
    - - - - - - - - - -
    #define IS_MODULE_CREATED  )    (x->fd == FD_MAGIC_NUMBER)
    -
    - - - - - -
    -   - - -

    - -

    -Definition at line 68 of file inspircd.h.

    -

    - - - - -
    - - - - - - - - - -
    #define IS_REMOTE  )    (x->fd < 0)
    -
    - - - - +Definition at line 53 of file inspircd.h.
    -   - - -

    - -

    -Definition at line 67 of file inspircd.h.

    @@ -290,7 +155,7 @@ Definition at line 67 of

    -Definition at line 53 of file inspircd.h. +Definition at line 55 of file inspircd.h.

    @@ -315,7 +180,7 @@ Definition at line 53 of

    -Definition at line 52 of file inspircd.h. +Definition at line 54 of file inspircd.h.

    @@ -340,171 +205,20 @@ Definition at line 52 of

    -Definition at line 50 of file inspircd.h. - - -

    - - - - -
    - - - - -
    #define TYPE_CHANNEL   2
    -
    - - - - - -
    -   - - -

    - -

    -Definition at line 63 of file inspircd.h.

    -

    - - - - -
    - - - - -
    #define TYPE_SERVER   3
    -
    - - - - - -
    -   - - -

    - -

    -Definition at line 64 of file inspircd.h.

    -

    - - - - -
    - - - - -
    #define TYPE_USER   1
    -
    - - - - - -
    -   - - -

    - -

    -Definition at line 62 of file inspircd.h.

    -

    - - - - -
    - - - - -
    #define WM_AND   1
    -
    - - - - - -
    -   - - -

    - -

    -Definition at line 57 of file inspircd.h.

    -

    - - - - -
    - - - - -
    #define WM_OR   2
    -
    - - - - - -
    -   - - -

    - -

    -Definition at line 58 of file inspircd.h.

    -


    Typedef Documentation

    -

    - - - - -
    - - - - -
    typedef void( handlerfunc)(char **, int, userrec *)
    -
    - - - - +Definition at line 52 of file inspircd.h.
    -   - - -

    - -

    -Definition at line 70 of file inspircd.h.


    Function Documentation

    -

    +

    +Referenced by add_channel(), del_channel(), and kick_channel().
    - + - - + + @@ -523,13 +237,13 @@ Definition at line 70 of
    void AddOper void AddServerName userrec user std::string  servername  ) 
    -

    +

    +Referenced by add_channel(), AddClient(), Server::AddExtendedMode(), SocketEngine::AddFd(), AddOper(), chanrec::AddUser(), AddWhoWas(), del_channel(), DeleteOper(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), FullConnectUser(), InspSocket::InspSocket(), kick_channel(), kill_link(), kill_link_silent(), InspSocket::Read(), ReHashNick(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().
    - + @@ -548,575 +262,12 @@ Definition at line 70 of - -
    void AddServerName const char* FindServerNamePtr std::string  servername

    -

    -

    - - - - -
    - - - - - - - - - -
    void AddWhoWas userrec u  ) 
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void call_handler const char *  commandname,
    char **  parameters,
    int  pcnt,
    userrec user
    -
    - - - - - -
    -   - - -

    - -

    -Referenced by Server::CallCommandHandler().

    -

    - - - - -
    - - - - - - - - - -
    void ConnectUser userrec user  ) 
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - -
    void DeleteOper userrec user  ) 
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - -
    void* dns_task void *  arg  ) 
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - -
    const char* FindServerNamePtr std::string  servername  ) 
    -
    - - - - - -
    -   - - -

    - -

    -Referenced by userrec::userrec().

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - -
    void force_nickchange userrec user,
    const char *  newnick
    -
    - - - - - -
    -   - - -

    - -

    -Referenced by Server::ChangeUserNick().

    -

    - - - - -
    - - - - - - - - - -
    void FullConnectUser userrec user  ) 
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_version char **  parameters,
    int  pcnt,
    userrec user
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    bool is_valid_cmd const char *  commandname,
    int  pcnt,
    userrec user
    -
    - - - - - -
    -   - - -

    - -

    -Referenced by Server::IsValidModuleCommand().

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - -
    void kill_link userrec user,
    const char *  r
    -
    - - - - - -
    -   - - -

    - -

    -Referenced by Server::PseudoToUser(), and Server::QuitUser().

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - -
    void kill_link_silent userrec user,
    const char *  r
    -
    - - - - - -
    -   -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    int loop_call handlerfunc  fn,
    char **  parameters,
    int  pcnt,
    userrec u,
    int  start,
    int  end,
    int  joins
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - -
    void process_buffer const char *  cmdbuf,
    userrec user
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - -
    userrec* ReHashNick char *  Old,
    char *  New
    -
    - - - - +Referenced by AddClient(), and userrec::userrec().
    -   - - -

    -

    -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/inspircd_8h__dep__incl.map b/docs/module-doc/inspircd_8h__dep__incl.map index 280811f38..178f5356d 100644 --- a/docs/module-doc/inspircd_8h__dep__incl.map +++ b/docs/module-doc/inspircd_8h__dep__incl.map @@ -1,10 +1,10 @@ base referer -rect $channels_8cpp-source.html 469,83 568,110 -rect $modules_8cpp-source.html 469,260 568,287 -rect $socket_8cpp-source.html 315,362 400,388 -rect $socketengine_8cpp-source.html 295,463 420,490 -rect $users_8cpp-source.html 151,514 231,540 -rect $ctables_8h-source.html 153,159 228,186 -rect $typedefs_8h-source.html 315,108 400,135 -rect $inspircd__io_8h-source.html 143,260 239,287 -rect $socketengine_8h-source.html 135,412 247,439 +rect $channels_8cpp-source.html 308,57 407,84 +rect $modules_8cpp-source.html 308,133 407,160 +rect $socket_8cpp-source.html 315,209 400,236 +rect $socketengine_8cpp-source.html 295,336 420,363 +rect $users_8cpp-source.html 318,260 398,287 +rect $inspircd__io_8h-source.html 143,57 239,84 +rect $socketengine_8h-source.html 135,260 247,287 +rect $typedefs_8h-source.html 148,108 234,135 +rect $userprocess_8h-source.html 139,412 243,439 diff --git a/docs/module-doc/inspircd_8h__dep__incl.md5 b/docs/module-doc/inspircd_8h__dep__incl.md5 index 5361c877a..adcc670cb 100644 --- a/docs/module-doc/inspircd_8h__dep__incl.md5 +++ b/docs/module-doc/inspircd_8h__dep__incl.md5 @@ -1 +1 @@ -782bd90da01c2446bdc3773deda660d0 \ No newline at end of file +ad3d11c83e25465927be164f7731df76 \ No newline at end of file diff --git a/docs/module-doc/inspircd_8h__incl.map b/docs/module-doc/inspircd_8h__incl.map index c32bf91d7..94b220b67 100644 --- a/docs/module-doc/inspircd_8h__incl.map +++ b/docs/module-doc/inspircd_8h__incl.map @@ -1,5 +1,7 @@ base referer -rect $inspircd__io_8h-source.html 139,615 235,642 -rect $users_8h-source.html 155,868 219,895 -rect $channels_8h-source.html 292,868 377,895 -rect $socket_8h-source.html 151,463 223,490 +rect $inspircd__io_8h-source.html 153,442 249,468 +rect $users_8h-source.html 332,290 396,316 +rect $channels_8h-source.html 461,188 547,215 +rect $socket_8h-source.html 165,644 237,671 +rect $mode_8h-source.html 168,290 235,316 +rect $socketengine_8h-source.html 145,492 257,519 diff --git a/docs/module-doc/inspircd_8h__incl.md5 b/docs/module-doc/inspircd_8h__incl.md5 index 00acfb0a8..7aeb9ace0 100644 --- a/docs/module-doc/inspircd_8h__incl.md5 +++ b/docs/module-doc/inspircd_8h__incl.md5 @@ -1 +1 @@ -8358cd32839305504555325b345eb8ff \ No newline at end of file +c78ac143e7cad9df2d2ae01b74f98cc9 \ No newline at end of file diff --git a/docs/module-doc/inspircd__io_8h-source.html b/docs/module-doc/inspircd__io_8h-source.html index 0ffcac95f..15217e72c 100644 --- a/docs/module-doc/inspircd__io_8h-source.html +++ b/docs/module-doc/inspircd__io_8h-source.html @@ -31,126 +31,132 @@ 00022 #include <vector> 00023 #include "inspircd.h" 00024 #include "globals.h" -00025 -00028 #define DEBUG 10 -00029 #define VERBOSE 20 -00030 #define DEFAULT 30 -00031 #define SPARSE 40 -00032 #define NONE 50 -00033 -00039 class ServerConfig : public classbase -00040 { -00041 private: -00047 std::vector<std::string> include_stack; -00048 -00055 int fgets_safe(char* buffer, size_t maxsize, FILE* &file); -00056 -00061 std::string ConfProcess(char* buffer, long linenumber, std::stringstream* errorstream, bool &error, std::string filename); -00062 -00063 public: -00064 -00068 char ServerName[MAXBUF]; -00069 -00070 /* Holds the network name the local server -00071 * belongs to. This is an arbitary field defined -00072 * by the administrator. -00073 */ -00074 char Network[MAXBUF]; -00075 -00079 char ServerDesc[MAXBUF]; -00080 -00084 char AdminName[MAXBUF]; -00085 -00089 char AdminEmail[MAXBUF]; -00090 -00094 char AdminNick[MAXBUF]; -00095 -00098 char diepass[MAXBUF]; -00099 -00102 char restartpass[MAXBUF]; -00103 -00107 char motd[MAXBUF]; -00108 -00112 char rules[MAXBUF]; -00113 -00116 char PrefixQuit[MAXBUF]; -00117 -00121 char DieValue[MAXBUF]; -00122 -00125 char DNSServer[MAXBUF]; -00126 -00131 char DisabledCommands[MAXBUF]; -00132 -00138 char ModPath[1024]; -00139 -00143 char MyExecutable[1024]; -00144 -00151 FILE *log_file; -00152 -00158 bool nofork; -00159 -00166 bool unlimitcore; -00167 -00171 bool AllowHalfop; -00172 -00176 int dns_timeout; -00177 -00182 int NetBufferSize; -00183 -00187 int MaxConn; -00188 -00193 unsigned int SoftLimit; -00194 -00198 int MaxWhoResults; -00199 -00202 int debugging; -00203 -00206 int LogLevel; -00207 -00211 int DieDelay; -00212 -00216 char addrs[MAXBUF][255]; -00217 -00220 file_cache MOTD; -00221 -00224 file_cache RULES; -00225 -00229 char PID[1024]; -00230 -00238 std::stringstream config_f; -00239 -00242 ClassVector Classes; -00243 -00247 std::vector<std::string> module_names; -00248 -00251 int ports[255]; -00252 -00253 ServerConfig(); -00254 -00258 void ClearStack(); +00025 #include "modules.h" +00026 +00029 #define DEBUG 10 +00030 #define VERBOSE 20 +00031 #define DEFAULT 30 +00032 #define SPARSE 40 +00033 #define NONE 50 +00034 +00040 class ServerConfig : public classbase +00041 { +00042 private: +00048 std::vector<std::string> include_stack; +00049 +00056 int fgets_safe(char* buffer, size_t maxsize, FILE* &file); +00057 +00062 std::string ConfProcess(char* buffer, long linenumber, std::stringstream* errorstream, bool &error, std::string filename); +00063 +00064 public: +00065 +00069 char ServerName[MAXBUF]; +00070 +00071 /* Holds the network name the local server +00072 * belongs to. This is an arbitary field defined +00073 * by the administrator. +00074 */ +00075 char Network[MAXBUF]; +00076 +00080 char ServerDesc[MAXBUF]; +00081 +00085 char AdminName[MAXBUF]; +00086 +00090 char AdminEmail[MAXBUF]; +00091 +00095 char AdminNick[MAXBUF]; +00096 +00099 char diepass[MAXBUF]; +00100 +00103 char restartpass[MAXBUF]; +00104 +00108 char motd[MAXBUF]; +00109 +00113 char rules[MAXBUF]; +00114 +00117 char PrefixQuit[MAXBUF]; +00118 +00122 char DieValue[MAXBUF]; +00123 +00126 char DNSServer[MAXBUF]; +00127 +00132 char DisabledCommands[MAXBUF]; +00133 +00139 char ModPath[1024]; +00140 +00144 char MyExecutable[1024]; +00145 +00152 FILE *log_file; +00153 +00159 bool nofork; +00160 +00167 bool unlimitcore; +00168 +00172 bool AllowHalfop; +00173 +00177 int dns_timeout; +00178 +00183 int NetBufferSize; +00184 +00188 int MaxConn; +00189 +00194 unsigned int SoftLimit; +00195 +00199 int MaxWhoResults; +00200 +00203 int debugging; +00204 +00207 int LogLevel; +00208 +00212 int DieDelay; +00213 +00217 char addrs[MAXBUF][255]; +00218 +00221 file_cache MOTD; +00222 +00225 file_cache RULES; +00226 +00230 char PID[1024]; +00231 +00239 std::stringstream config_f; +00240 +00243 ClassVector Classes; +00244 +00248 std::vector<std::string> module_names; +00249 +00252 int ports[255]; +00253 +00256 std::map<int,Module*> IOHookModule; +00257 +00258 ServerConfig(); 00259 -00264 void Read(bool bail, userrec* user); -00265 -00266 bool LoadConf(const char* filename, std::stringstream *target, std::stringstream* errorstream); -00267 int ConfValue(char* tag, char* var, int index, char *result, std::stringstream *config); -00268 int ReadConf(std::stringstream *config_f,const char* tag, const char* var, int index, char *result); -00269 int ConfValueEnum(char* tag,std::stringstream *config); -00270 int EnumConf(std::stringstream *config_f,const char* tag); -00271 int EnumValues(std::stringstream *config, const char* tag, int index); -00272 }; -00273 -00274 -00275 void Exit (int); -00276 void Start (void); -00277 int DaemonSeed (void); -00278 bool FileExists (const char* file); -00279 int OpenTCPSocket (void); -00280 int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr); -00281 void WritePID(std::string filename); -00282 int BindPorts(); -00283 -00284 #endif -
    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00263 void ClearStack(); +00264 +00269 void Read(bool bail, userrec* user); +00270 +00271 bool LoadConf(const char* filename, std::stringstream *target, std::stringstream* errorstream); +00272 int ConfValue(char* tag, char* var, int index, char *result, std::stringstream *config); +00273 int ReadConf(std::stringstream *config_f,const char* tag, const char* var, int index, char *result); +00274 int ConfValueEnum(char* tag,std::stringstream *config); +00275 int EnumConf(std::stringstream *config_f,const char* tag); +00276 int EnumValues(std::stringstream *config, const char* tag, int index); +00277 Module* GetIOHook(int port); +00278 bool AddIOHook(int port, Module* iomod); +00279 bool DelIOHook(int port); +00280 }; +00281 +00282 +00283 void Exit (int); +00284 void Start (void); +00285 int DaemonSeed (void); +00286 bool FileExists (const char* file); +00287 int OpenTCPSocket (void); +00288 int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr); +00289 void WritePID(std::string filename); +00290 int BindPorts(); +00291 +00292 #endif +
    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/inspircd__io_8h.html b/docs/module-doc/inspircd__io_8h.html index 0a4cb293e..25d103c38 100644 --- a/docs/module-doc/inspircd__io_8h.html +++ b/docs/module-doc/inspircd__io_8h.html @@ -12,21 +12,28 @@ #include <vector>
    #include "inspircd.h"
    #include "globals.h"
    +#include "modules.h"

    Include dependency graph for inspircd_io.h:

    - - + + +

    This graph shows which files directly or indirectly include this file:

    - - - - + + + + + + + + +

    @@ -91,9 +98,9 @@ Flags for use with 28 of file inspircd_io.h. +Definition at line 29 of file inspircd_io.h.

    -Referenced by add_channel(), Server::AddExtendedMode(), SocketEngine::AddFd(), chanrec::AddUser(), del_channel(), SocketEngine::DelFd(), chanrec::DelUser(), ForceChan(), InspSocket::InspSocket(), kick_channel(), InspSocket::Read(), userrec::RemoveInvite(), chanrec::SetCustomMode(), chanrec::SetCustomModeParam(), InspSocket::SetState(), userrec::SetWriteError(), SocketEngine::SocketEngine(), and SocketEngine::~SocketEngine().

    @@ -118,9 +125,9 @@ Referenced by add_channel(

    -Definition at line 30 of file inspircd_io.h. +Definition at line 31 of file inspircd_io.h.

    -Referenced by add_channel(), del_channel(), and kick_channel().

    @@ -145,7 +152,7 @@ Referenced by add_channel(

    -Definition at line 32 of file inspircd_io.h. +Definition at line 33 of file inspircd_io.h.

    @@ -170,7 +177,7 @@ Definition at line 32

    -Definition at line 31 of file inspircd_io.h. +Definition at line 32 of file inspircd_io.h.

    @@ -195,7 +202,7 @@ Definition at line 31

    -Definition at line 29 of file inspircd_io.h. +Definition at line 30 of file inspircd_io.h.


    Function Documentation

    @@ -280,7 +287,7 @@ Definition at line 29

    -Referenced by InspSocket::InspSocket(). +Referenced by InspSocket::InspSocket().

    @@ -394,7 +401,7 @@ Referenced by InspSocket::In

    -Referenced by InspSocket::InspSocket(). +Referenced by InspSocket::InspSocket().

    @@ -453,7 +460,7 @@ Referenced by InspSocket::In -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/inspircd__io_8h__dep__incl.map b/docs/module-doc/inspircd__io_8h__dep__incl.map index 1b2fd55bc..5f7a6c3f7 100644 --- a/docs/module-doc/inspircd__io_8h__dep__incl.map +++ b/docs/module-doc/inspircd__io_8h__dep__incl.map @@ -1,5 +1,10 @@ base referer -rect $channels_8cpp-source.html 283,20 381,47 -rect $modules_8cpp-source.html 283,96 381,123 -rect $socket_8cpp-source.html 289,147 375,173 -rect $inspircd_8h-source.html 153,57 233,84 +rect $channels_8cpp-source.html 455,58 553,84 +rect $modules_8cpp-source.html 455,235 553,262 +rect $socket_8cpp-source.html 461,463 547,490 +rect $inspircd_8h-source.html 153,286 233,312 +rect $socketengine_8cpp-source.html 441,387 567,414 +rect $users_8cpp-source.html 464,311 544,338 +rect $socketengine_8h-source.html 281,362 393,388 +rect $typedefs_8h-source.html 295,260 380,287 +rect $userprocess_8h-source.html 285,159 389,186 diff --git a/docs/module-doc/inspircd__io_8h__dep__incl.md5 b/docs/module-doc/inspircd__io_8h__dep__incl.md5 index dcdb730b7..d32608fc2 100644 --- a/docs/module-doc/inspircd__io_8h__dep__incl.md5 +++ b/docs/module-doc/inspircd__io_8h__dep__incl.md5 @@ -1 +1 @@ -722bc875f4773acca578188c1eaafc53 \ No newline at end of file +f69ba85152f09a6ee03d3d86a8d8993d \ No newline at end of file diff --git a/docs/module-doc/inspircd__io_8h__incl.map b/docs/module-doc/inspircd__io_8h__incl.map index 51ab7577f..37dd7fbc2 100644 --- a/docs/module-doc/inspircd__io_8h__incl.map +++ b/docs/module-doc/inspircd__io_8h__incl.map @@ -1,3 +1,4 @@ base referer -rect $inspircd_8h-source.html 153,159 233,186 -rect $globals_8h-source.html 156,210 231,236 +rect $inspircd_8h-source.html 156,209 236,236 +rect $globals_8h-source.html 159,159 234,185 +rect $modules_8h-source.html 155,57 238,84 diff --git a/docs/module-doc/inspircd__io_8h__incl.md5 b/docs/module-doc/inspircd__io_8h__incl.md5 index 8a137bb78..ba3286ffc 100644 --- a/docs/module-doc/inspircd__io_8h__incl.md5 +++ b/docs/module-doc/inspircd__io_8h__incl.md5 @@ -1 +1 @@ -a89903b24a07224b6560b828285cf5bb \ No newline at end of file +c18e01279feebe46cef6ba0a08a63a37 \ No newline at end of file diff --git a/docs/module-doc/main.html b/docs/module-doc/main.html index daa5e6b36..6ebc47e66 100644 --- a/docs/module-doc/main.html +++ b/docs/module-doc/main.html @@ -7,7 +7,7 @@

    InspIRCd Documentation

    -

    1.0Betareleases


    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +

    1.0Betareleases


    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/message_8h-source.html b/docs/module-doc/message_8h-source.html index b4747be45..bfcb5e8ac 100644 --- a/docs/module-doc/message_8h-source.html +++ b/docs/module-doc/message_8h-source.html @@ -57,7 +57,7 @@ 00048 void send_network_quit(const char* nick, const char* reason); 00049 00050 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/message_8h.html b/docs/module-doc/message_8h.html index 0faeacf22..e28cd9bcc 100644 --- a/docs/module-doc/message_8h.html +++ b/docs/module-doc/message_8h.html @@ -20,15 +20,17 @@ Include dependency graph for message.h:

    - - + + +

    This graph shows which files directly or indirectly include this file:

    - - + + +

    @@ -165,7 +167,7 @@ This graph shows which files directly or indirectly include this file:

    -Referenced by Server::ChangeHost(). +Referenced by Server::ChangeHost().

    @@ -204,7 +206,7 @@ Referenced by Server::Chang

    -Referenced by Server::ChangeGECOS(). +Referenced by Server::ChangeGECOS().

    @@ -458,7 +460,7 @@ Referenced by kick_channel

    -Referenced by add_channel(), Server::IsOnChannel(), and kick_channel(). +Referenced by add_channel(), Server::IsOnChannel(), and kick_channel().

    @@ -675,7 +677,7 @@ Referenced by add_channel( -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/message_8h__dep__incl.map b/docs/module-doc/message_8h__dep__incl.map index e26cc9746..cdf27ce97 100644 --- a/docs/module-doc/message_8h__dep__incl.map +++ b/docs/module-doc/message_8h__dep__incl.map @@ -1,3 +1,4 @@ base referer -rect $channels_8cpp-source.html 144,7 243,34 -rect $modules_8cpp-source.html 144,58 243,84 +rect $channels_8cpp-source.html 144,7 243,33 +rect $modules_8cpp-source.html 144,57 243,84 +rect $users_8cpp-source.html 154,108 234,135 diff --git a/docs/module-doc/message_8h__dep__incl.md5 b/docs/module-doc/message_8h__dep__incl.md5 index ea427afd1..9677d7a7c 100644 --- a/docs/module-doc/message_8h__dep__incl.md5 +++ b/docs/module-doc/message_8h__dep__incl.md5 @@ -1 +1 @@ -5798528055639d3c9fa4c0dd420993b1 \ No newline at end of file +2920c49d06760a3a8744ed87304dc5db \ No newline at end of file diff --git a/docs/module-doc/message_8h__incl.map b/docs/module-doc/message_8h__incl.map index 384780910..5e825e450 100644 --- a/docs/module-doc/message_8h__incl.map +++ b/docs/module-doc/message_8h__incl.map @@ -1,4 +1,5 @@ base referer rect $users_8h-source.html 148,260 212,287 -rect $channels_8h-source.html 272,210 357,236 -rect $connection_8h-source.html 265,362 364,388 +rect $channels_8h-source.html 272,209 357,236 +rect $connection_8h-source.html 265,412 364,439 +rect $hashcomp_8h-source.html 268,311 361,337 diff --git a/docs/module-doc/message_8h__incl.md5 b/docs/module-doc/message_8h__incl.md5 index 724dbb712..2d2990c8f 100644 --- a/docs/module-doc/message_8h__incl.md5 +++ b/docs/module-doc/message_8h__incl.md5 @@ -1 +1 @@ -3a2c4208881b372cdcae2d492b4dfb49 \ No newline at end of file +ea36c3bc5c3e318c0edcaea3bd1ee778 \ No newline at end of file diff --git a/docs/module-doc/mode_8h-source.html b/docs/module-doc/mode_8h-source.html index d82d7b6b3..ac7034b69 100644 --- a/docs/module-doc/mode_8h-source.html +++ b/docs/module-doc/mode_8h-source.html @@ -36,26 +36,36 @@ 00027 #include <vector> 00028 #include "users.h" 00029 #include "channels.h" -00030 -00031 char* give_ops(userrec *user,char *dest,chanrec *chan,int status); -00032 char* give_hops(userrec *user,char *dest,chanrec *chan,int status); -00033 char* give_voice(userrec *user,char *dest,chanrec *chan,int status); -00034 char* take_ops(userrec *user,char *dest,chanrec *chan,int status); -00035 char* take_hops(userrec *user,char *dest,chanrec *chan,int status); -00036 char* take_voice(userrec *user,char *dest,chanrec *chan,int status); -00037 char* add_ban(userrec *user,char *dest,chanrec *chan,int status); -00038 char* take_ban(userrec *user,char *dest,chanrec *chan,int status); -00039 void process_modes(char **parameters,userrec* user,chanrec *chan,int status, int pcnt, bool servermode, bool silent, bool local); -00040 bool allowed_umode(char umode, char* sourcemodes,bool adding); -00041 bool process_module_umode(char umode, userrec* source, void* dest, bool adding); -00042 void handle_mode(char **parameters, int pcnt, userrec *user); -00043 void server_mode(char **parameters, int pcnt, userrec *user); -00044 void merge_mode(char **parameters, int pcnt); -00045 void merge_mode2(char **parameters, int pcnt, userrec* user); -00046 -00047 -00048 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00030 #include "ctables.h" +00031 +00032 class ModeParser +00033 { +00034 private: +00035 char* GiveOps(userrec *user,char *dest,chanrec *chan,int status); +00036 char* GiveHops(userrec *user,char *dest,chanrec *chan,int status); +00037 char* GiveVoice(userrec *user,char *dest,chanrec *chan,int status); +00038 char* TakeOps(userrec *user,char *dest,chanrec *chan,int status); +00039 char* TakeHops(userrec *user,char *dest,chanrec *chan,int status); +00040 char* TakeVoice(userrec *user,char *dest,chanrec *chan,int status); +00041 char* AddBan(userrec *user,char *dest,chanrec *chan,int status); +00042 char* TakeBan(userrec *user,char *dest,chanrec *chan,int status); +00043 public: +00044 std::string CompressModes(std::string modes,bool channelmodes); +00045 void ProcessModes(char **parameters,userrec* user,chanrec *chan,int status, int pcnt, bool servermode, bool silent, bool local); +00046 bool AllowedUmode(char umode, char* sourcemodes,bool adding,bool serveroverride); +00047 bool ProcessModuleUmode(char umode, userrec* source, void* dest, bool adding); +00048 void ServerMode(char **parameters, int pcnt, userrec *user); +00049 }; +00050 +00051 class cmd_mode : public command_t +00052 { +00053 public: +00054 cmd_mode () : command_t("MODE",0,1) { } +00055 void Handle(char **parameters, int pcnt, userrec *user); +00056 }; +00057 +00058 #endif +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/mode_8h.html b/docs/module-doc/mode_8h.html index abfd7bab8..cb57105a5 100644 --- a/docs/module-doc/mode_8h.html +++ b/docs/module-doc/mode_8h.html @@ -15,784 +15,41 @@ #include <vector>
    #include "users.h"
    #include "channels.h"
    +#include "ctables.h"

    Include dependency graph for mode.h:

    - - - + + +

    This graph shows which files directly or indirectly include this file:

    - - + + + + + + + + + +

    Go to the source code of this file. - - + + - + - - - - - - - - - - - - - - - - - - - - - - - - - - -

    Functions

    char * give_ops (userrec *user, char *dest, chanrec *chan, int status)

    Classes

    class  ModeParser
    char * give_hops (userrec *user, char *dest, chanrec *chan, int status)
    class  cmd_mode
    char * give_voice (userrec *user, char *dest, chanrec *chan, int status)
    char * take_ops (userrec *user, char *dest, chanrec *chan, int status)
    char * take_hops (userrec *user, char *dest, chanrec *chan, int status)
    char * take_voice (userrec *user, char *dest, chanrec *chan, int status)
    char * add_ban (userrec *user, char *dest, chanrec *chan, int status)
    char * take_ban (userrec *user, char *dest, chanrec *chan, int status)
    void process_modes (char **parameters, userrec *user, chanrec *chan, int status, int pcnt, bool servermode, bool silent, bool local)
    bool allowed_umode (char umode, char *sourcemodes, bool adding)
    bool process_module_umode (char umode, userrec *source, void *dest, bool adding)
    void handle_mode (char **parameters, int pcnt, userrec *user)
    void server_mode (char **parameters, int pcnt, userrec *user)
    void merge_mode (char **parameters, int pcnt)
    void merge_mode2 (char **parameters, int pcnt, userrec *user)
    -


    Function Documentation

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    char* add_ban userrec user,
    char *  dest,
    chanrec chan,
    int  status
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    bool allowed_umode char  umode,
    char *  sourcemodes,
    bool  adding
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    char* give_hops userrec user,
    char *  dest,
    chanrec chan,
    int  status
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    char* give_ops userrec user,
    char *  dest,
    chanrec chan,
    int  status
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    char* give_voice userrec user,
    char *  dest,
    chanrec chan,
    int  status
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void handle_mode char **  parameters,
    int  pcnt,
    userrec user
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - -
    void merge_mode char **  parameters,
    int  pcnt
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void merge_mode2 char **  parameters,
    int  pcnt,
    userrec user
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    void process_modes char **  parameters,
    userrec user,
    chanrec chan,
    int  status,
    int  pcnt,
    bool  servermode,
    bool  silent,
    bool  local
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    bool process_module_umode char  umode,
    userrec source,
    void *  dest,
    bool  adding
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void server_mode char **  parameters,
    int  pcnt,
    userrec user
    -
    - - - - - -
    -   - - -

    - -

    -Referenced by Server::SendMode().

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    char* take_ban userrec user,
    char *  dest,
    chanrec chan,
    int  status
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    char* take_hops userrec user,
    char *  dest,
    chanrec chan,
    int  status
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    char* take_ops userrec user,
    char *  dest,
    chanrec chan,
    int  status
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
    char* take_voice userrec user,
    char *  dest,
    chanrec chan,
    int  status
    -
    - - - - -
    -   - - -

    -

    -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/mode_8h__dep__incl.map b/docs/module-doc/mode_8h__dep__incl.map index 5d61f5f98..0fbb16370 100644 --- a/docs/module-doc/mode_8h__dep__incl.map +++ b/docs/module-doc/mode_8h__dep__incl.map @@ -1,3 +1,11 @@ base referer -rect $channels_8cpp-source.html 123,7 221,34 -rect $modules_8cpp-source.html 123,58 221,84 +rect $channels_8cpp-source.html 423,108 521,135 +rect $modules_8cpp-source.html 423,210 521,236 +rect $inspircd_8h-source.html 121,286 201,312 +rect $socket_8cpp-source.html 429,311 515,338 +rect $socketengine_8cpp-source.html 409,438 535,464 +rect $users_8cpp-source.html 432,362 512,388 +rect $inspircd__io_8h-source.html 257,159 353,186 +rect $socketengine_8h-source.html 249,362 361,388 +rect $typedefs_8h-source.html 263,210 348,236 +rect $userprocess_8h-source.html 253,514 357,540 diff --git a/docs/module-doc/mode_8h__dep__incl.md5 b/docs/module-doc/mode_8h__dep__incl.md5 index e98ddad91..7141d3567 100644 --- a/docs/module-doc/mode_8h__dep__incl.md5 +++ b/docs/module-doc/mode_8h__dep__incl.md5 @@ -1 +1 @@ -fd59f64e403f74c533d4d585052df75c \ No newline at end of file +a468254eb82a333e8e171f75c5a95c2c \ No newline at end of file diff --git a/docs/module-doc/mode_8h__incl.map b/docs/module-doc/mode_8h__incl.map index c4bd501fa..5891ea4c1 100644 --- a/docs/module-doc/mode_8h__incl.map +++ b/docs/module-doc/mode_8h__incl.map @@ -1,4 +1,4 @@ base referer -rect $users_8h-source.html 127,260 191,287 -rect $channels_8h-source.html 251,210 336,236 -rect $connection_8h-source.html 244,362 343,388 +rect $users_8h-source.html 128,311 192,337 +rect $channels_8h-source.html 248,361 333,388 +rect $ctables_8h-source.html 123,108 197,135 diff --git a/docs/module-doc/mode_8h__incl.md5 b/docs/module-doc/mode_8h__incl.md5 index 6d7d31d18..e109361fc 100644 --- a/docs/module-doc/mode_8h__incl.md5 +++ b/docs/module-doc/mode_8h__incl.md5 @@ -1 +1 @@ -3d060c191165c8107d912ed1383b6923 \ No newline at end of file +65cc27648a712202e38cf2a89d5cde55 \ No newline at end of file diff --git a/docs/module-doc/modules_8cpp-source.html b/docs/module-doc/modules_8cpp-source.html index a13d4ac10..ac2ff009e 100644 --- a/docs/module-doc/modules_8cpp-source.html +++ b/docs/module-doc/modules_8cpp-source.html @@ -28,923 +28,922 @@ 00019 #include "inspircd_config.h" 00020 #include "inspircd.h" 00021 #include "inspircd_io.h" -00022 #include "inspircd_util.h" -00023 #include <unistd.h> -00024 #include <sys/errno.h> -00025 #include <time.h> -00026 #include <string> -00027 #ifdef GCC3 -00028 #include <ext/hash_map> -00029 #else -00030 #include <hash_map> -00031 #endif -00032 #include <map> -00033 #include <sstream> -00034 #include <vector> -00035 #include <deque> -00036 #include "users.h" -00037 #include "ctables.h" -00038 #include "globals.h" -00039 #include "modules.h" -00040 #include "dynamic.h" -00041 #include "wildcard.h" -00042 #include "message.h" -00043 #include "mode.h" -00044 #include "xline.h" -00045 #include "commands.h" -00046 #include "inspstring.h" -00047 #include "helperfuncs.h" -00048 #include "hashcomp.h" -00049 #include "socket.h" -00050 #include "socketengine.h" -00051 #include "typedefs.h" -00052 -00053 extern SocketEngine* SE; +00022 #include <unistd.h> +00023 #include <sys/errno.h> +00024 #include <time.h> +00025 #include <string> +00026 #ifdef GCC3 +00027 #include <ext/hash_map> +00028 #else +00029 #include <hash_map> +00030 #endif +00031 #include <map> +00032 #include <sstream> +00033 #include <vector> +00034 #include <deque> +00035 #include "users.h" +00036 #include "ctables.h" +00037 #include "globals.h" +00038 #include "modules.h" +00039 #include "dynamic.h" +00040 #include "wildcard.h" +00041 #include "message.h" +00042 #include "mode.h" +00043 #include "xline.h" +00044 #include "commands.h" +00045 #include "inspstring.h" +00046 #include "helperfuncs.h" +00047 #include "hashcomp.h" +00048 #include "socket.h" +00049 #include "socketengine.h" +00050 #include "typedefs.h" +00051 #include "modules.h" +00052 #include "command_parse.h" +00053 00054 extern ServerConfig *Config; 00055 extern InspIRCd* ServerInstance; 00056 extern int MODCOUNT; 00057 extern std::vector<Module*> modules; 00058 extern std::vector<ircd_module*> factory; 00059 extern std::vector<InspSocket*> module_sockets; -00060 -00061 extern time_t TIME; -00062 class Server; -00063 extern userrec* fd_ref_table[65536]; -00064 -00065 extern user_hash clientlist; -00066 extern chan_hash chanlist; -00067 extern command_table cmdlist; -00068 ExtModeList EMode; -00069 -00070 // returns true if an extended mode character is in use -00071 bool ModeDefined(char modechar, int type) -00072 { -00073 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00074 { -00075 if ((i->modechar == modechar) && (i->type == type)) -00076 { -00077 return true; -00078 } -00079 } -00080 return false; -00081 } -00082 -00083 bool ModeIsListMode(char modechar, int type) -00084 { -00085 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00086 { -00087 if ((i->modechar == modechar) && (i->type == type) && (i->list == true)) -00088 { -00089 return true; -00090 } -00091 } -00092 return false; -00093 } -00094 -00095 bool ModeDefinedOper(char modechar, int type) -00096 { -00097 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00098 { -00099 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true)) -00100 { -00101 return true; -00102 } -00103 } -00104 return false; -00105 } -00106 -00107 // returns number of parameters for a custom mode when it is switched on -00108 int ModeDefinedOn(char modechar, int type) -00109 { -00110 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00111 { -00112 if ((i->modechar == modechar) && (i->type == type)) -00113 { -00114 return i->params_when_on; -00115 } -00116 } -00117 return 0; -00118 } -00119 -00120 // returns number of parameters for a custom mode when it is switched on -00121 int ModeDefinedOff(char modechar, int type) -00122 { -00123 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00124 { -00125 if ((i->modechar == modechar) && (i->type == type)) -00126 { -00127 return i->params_when_off; -00128 } -00129 } -00130 return 0; -00131 } -00132 -00133 // returns true if an extended mode character is in use -00134 bool DoAddExtendedMode(char modechar, int type, bool requires_oper, int params_on, int params_off) -00135 { -00136 if (ModeDefined(modechar,type)) { -00137 return false; -00138 } -00139 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off)); -00140 return true; -00141 } -00142 -00143 // turns a mode into a listmode -00144 void ModeMakeList(char modechar) -00145 { -00146 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) -00147 { -00148 if ((i->modechar == modechar) && (i->type == MT_CHANNEL)) -00149 { -00150 i->list = true; -00151 return; -00152 } -00153 } -00154 return; -00155 } -00156 -00157 // version is a simple class for holding a modules version number -00158 -00159 Version::Version(int major, int minor, int revision, int build, int flags) : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { }; -00160 -00161 // admin is a simple class for holding a server's administrative info -00162 -00163 Admin::Admin(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { }; -00164 -00165 Request::Request(char* anydata, Module* src, Module* dst) : data(anydata), source(src), dest(dst) { }; -00166 -00167 char* Request::GetData() -00168 { -00169 return this->data; -00170 } -00171 -00172 Module* Request::GetSource() -00173 { -00174 return this->source; -00175 } -00176 -00177 Module* Request::GetDest() -00178 { -00179 return this->dest; -00180 } -00181 -00182 char* Request::Send() -00183 { -00184 if (this->dest) -00185 { -00186 return dest->OnRequest(this); -00187 } -00188 else -00189 { -00190 return NULL; -00191 } -00192 } -00193 -00194 Event::Event(char* anydata, Module* src, std::string eventid) : data(anydata), source(src), id(eventid) { }; -00195 -00196 char* Event::GetData() -00197 { -00198 return this->data; -00199 } -00200 -00201 Module* Event::GetSource() -00202 { -00203 return this->source; -00204 } -00205 -00206 char* Event::Send() -00207 { -00208 FOREACH_MOD OnEvent(this); -00209 return NULL; -00210 } -00211 -00212 std::string Event::GetEventID() -00213 { -00214 return this->id; -00215 } +00060 extern time_t TIME; +00061 class Server; +00062 extern userrec* fd_ref_table[65536]; +00063 +00064 extern user_hash clientlist; +00065 extern chan_hash chanlist; +00066 extern command_table cmdlist; +00067 ExtModeList EMode; +00068 +00069 // returns true if an extended mode character is in use +00070 bool ModeDefined(char modechar, int type) +00071 { +00072 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00073 { +00074 if ((i->modechar == modechar) && (i->type == type)) +00075 { +00076 return true; +00077 } +00078 } +00079 return false; +00080 } +00081 +00082 bool ModeIsListMode(char modechar, int type) +00083 { +00084 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00085 { +00086 if ((i->modechar == modechar) && (i->type == type) && (i->list == true)) +00087 { +00088 return true; +00089 } +00090 } +00091 return false; +00092 } +00093 +00094 bool ModeDefinedOper(char modechar, int type) +00095 { +00096 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00097 { +00098 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true)) +00099 { +00100 return true; +00101 } +00102 } +00103 return false; +00104 } +00105 +00106 // returns number of parameters for a custom mode when it is switched on +00107 int ModeDefinedOn(char modechar, int type) +00108 { +00109 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00110 { +00111 if ((i->modechar == modechar) && (i->type == type)) +00112 { +00113 return i->params_when_on; +00114 } +00115 } +00116 return 0; +00117 } +00118 +00119 // returns number of parameters for a custom mode when it is switched on +00120 int ModeDefinedOff(char modechar, int type) +00121 { +00122 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00123 { +00124 if ((i->modechar == modechar) && (i->type == type)) +00125 { +00126 return i->params_when_off; +00127 } +00128 } +00129 return 0; +00130 } +00131 +00132 // returns true if an extended mode character is in use +00133 bool DoAddExtendedMode(char modechar, int type, bool requires_oper, int params_on, int params_off) +00134 { +00135 if (ModeDefined(modechar,type)) { +00136 return false; +00137 } +00138 EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off)); +00139 return true; +00140 } +00141 +00142 // turns a mode into a listmode +00143 void ModeMakeList(char modechar) +00144 { +00145 for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++) +00146 { +00147 if ((i->modechar == modechar) && (i->type == MT_CHANNEL)) +00148 { +00149 i->list = true; +00150 return; +00151 } +00152 } +00153 return; +00154 } +00155 +00156 // version is a simple class for holding a modules version number +00157 +00158 Version::Version(int major, int minor, int revision, int build, int flags) : Major(major), Minor(minor), Revision(revision), Build(build), Flags(flags) { }; +00159 +00160 // admin is a simple class for holding a server's administrative info +00161 +00162 Admin::Admin(std::string name, std::string email, std::string nick) : Name(name), Email(email), Nick(nick) { }; +00163 +00164 Request::Request(char* anydata, Module* src, Module* dst) : data(anydata), source(src), dest(dst) { }; +00165 +00166 char* Request::GetData() +00167 { +00168 return this->data; +00169 } +00170 +00171 Module* Request::GetSource() +00172 { +00173 return this->source; +00174 } +00175 +00176 Module* Request::GetDest() +00177 { +00178 return this->dest; +00179 } +00180 +00181 char* Request::Send() +00182 { +00183 if (this->dest) +00184 { +00185 return dest->OnRequest(this); +00186 } +00187 else +00188 { +00189 return NULL; +00190 } +00191 } +00192 +00193 Event::Event(char* anydata, Module* src, std::string eventid) : data(anydata), source(src), id(eventid) { }; +00194 +00195 char* Event::GetData() +00196 { +00197 return this->data; +00198 } +00199 +00200 Module* Event::GetSource() +00201 { +00202 return this->source; +00203 } +00204 +00205 char* Event::Send() +00206 { +00207 FOREACH_MOD OnEvent(this); +00208 return NULL; +00209 } +00210 +00211 std::string Event::GetEventID() +00212 { +00213 return this->id; +00214 } +00215 00216 -00217 -00218 // These declarations define the behavours of the base class Module (which does nothing at all) -00219 -00220 Module::Module(Server* Me) { } -00221 Module::~Module() { } -00222 void Module::OnUserConnect(userrec* user) { } -00223 void Module::OnUserQuit(userrec* user, std::string message) { } -00224 void Module::OnUserDisconnect(userrec* user) { } -00225 void Module::OnUserJoin(userrec* user, chanrec* channel) { } -00226 void Module::OnUserPart(userrec* user, chanrec* channel) { } -00227 void Module::OnRehash(std::string parameter) { } -00228 void Module::OnServerRaw(std::string &raw, bool inbound, userrec* user) { } -00229 int Module::OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) { return 0; } -00230 int Module::OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list &params) { return false; } -00231 void Module::OnMode(userrec* user, void* dest, int target_type, std::string text) { }; -00232 Version Module::GetVersion() { return Version(1,0,0,0,VF_VENDOR); } -00233 void Module::OnOper(userrec* user, std::string opertype) { }; -00234 void Module::OnInfo(userrec* user) { }; -00235 void Module::OnWhois(userrec* source, userrec* dest) { }; -00236 int Module::OnUserPreInvite(userrec* source,userrec* dest,chanrec* channel) { return 0; }; -00237 int Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text) { return 0; }; -00238 int Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text) { return 0; }; -00239 int Module::OnUserPreNick(userrec* user, std::string newnick) { return 0; }; -00240 void Module::OnUserPostNick(userrec* user, std::string oldnick) { }; -00241 int Module::OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { return ACR_DEFAULT; }; -00242 void Module::On005Numeric(std::string &output) { }; -00243 int Module::OnKill(userrec* source, userrec* dest, std::string reason) { return 0; }; -00244 void Module::OnLoadModule(Module* mod,std::string name) { }; -00245 void Module::OnUnloadModule(Module* mod,std::string name) { }; -00246 void Module::OnBackgroundTimer(time_t curtime) { }; -00247 void Module::OnSendList(userrec* user, chanrec* channel, char mode) { }; -00248 int Module::OnPreCommand(std::string command, char **parameters, int pcnt, userrec *user) { return 0; }; -00249 bool Module::OnCheckReady(userrec* user) { return true; }; -00250 void Module::OnUserRegister(userrec* user) { }; -00251 int Module::OnUserPreKick(userrec* source, userrec* user, chanrec* chan, std::string reason) { return 0; }; -00252 void Module::OnUserKick(userrec* source, userrec* user, chanrec* chan, std::string reason) { }; -00253 int Module::OnRawMode(userrec* user, chanrec* chan, char mode, std::string param, bool adding, int pcnt) { return 0; }; -00254 int Module::OnCheckInvite(userrec* user, chanrec* chan) { return 0; }; -00255 int Module::OnCheckKey(userrec* user, chanrec* chan, std::string keygiven) { return 0; }; -00256 int Module::OnCheckLimit(userrec* user, chanrec* chan) { return 0; }; -00257 int Module::OnCheckBan(userrec* user, chanrec* chan) { return 0; }; -00258 void Module::OnStats(char symbol) { }; -00259 int Module::OnChangeLocalUserHost(userrec* user, std::string newhost) { return 0; }; -00260 int Module::OnChangeLocalUserGECOS(userrec* user, std::string newhost) { return 0; }; -00261 int Module::OnLocalTopicChange(userrec* user, chanrec* chan, std::string topic) { return 0; }; -00262 void Module::OnEvent(Event* event) { return; }; -00263 char* Module::OnRequest(Request* request) { return NULL; }; -00264 int Module::OnOperCompare(std::string password, std::string input) { return 0; }; -00265 void Module::OnGlobalOper(userrec* user) { }; -00266 void Module::OnGlobalConnect(userrec* user) { }; -00267 int Module::OnAddBan(userrec* source, chanrec* channel,std::string banmask) { return 0; }; -00268 int Module::OnDelBan(userrec* source, chanrec* channel,std::string banmask) { return 0; }; -00269 void Module::OnRawSocketAccept(int fd, std::string ip, int localport) { }; -00270 int Module::OnRawSocketWrite(int fd, char* buffer, int count) { return 0; }; -00271 void Module::OnRawSocketClose(int fd) { }; -00272 int Module::OnRawSocketRead(int fd, char* buffer, unsigned int count, int &readresult) { return 0; }; -00273 void Module::OnUserMessage(userrec* user, void* dest, int target_type, std::string text) { }; -00274 void Module::OnUserNotice(userrec* user, void* dest, int target_type, std::string text) { }; -00275 void Module::OnRemoteKill(userrec* source, userrec* dest, std::string reason) { }; -00276 void Module::OnUserInvite(userrec* source,userrec* dest,chanrec* channel) { }; -00277 void Module::OnPostLocalTopicChange(userrec* user, chanrec* chan, std::string topic) { }; -00278 void Module::OnGetServerDescription(std::string servername,std::string &description) { }; -00279 void Module::OnSyncUser(userrec* user, Module* proto, void* opaque) { }; -00280 void Module::OnSyncChannel(chanrec* chan, Module* proto, void* opaque) { }; -00281 void Module::ProtoSendMode(void* opaque, int target_type, void* target, std::string modeline) { }; -00282 void Module::OnSyncChannelMetaData(chanrec* chan, Module* proto,void* opaque, std::string extname) { }; -00283 void Module::OnSyncUserMetaData(userrec* user, Module* proto,void* opaque, std::string extname) { }; -00284 void Module::OnDecodeMetaData(int target_type, void* target, std::string extname, std::string extdata) { }; -00285 void Module::ProtoSendMetaData(void* opaque, int target_type, void* target, std::string extname, std::string extdata) { }; -00286 void Module::OnWallops(userrec* user, std::string text) { }; -00287 void Module::OnChangeHost(userrec* user, std::string newhost) { }; -00288 void Module::OnChangeName(userrec* user, std::string gecos) { }; -00289 void Module::OnAddGLine(long duration, userrec* source, std::string reason, std::string hostmask) { }; -00290 void Module::OnAddZLine(long duration, userrec* source, std::string reason, std::string ipmask) { }; -00291 void Module::OnAddKLine(long duration, userrec* source, std::string reason, std::string hostmask) { }; -00292 void Module::OnAddQLine(long duration, userrec* source, std::string reason, std::string nickmask) { }; -00293 void Module::OnAddELine(long duration, userrec* source, std::string reason, std::string hostmask) { }; -00294 void Module::OnDelGLine(userrec* source, std::string hostmask) { }; -00295 void Module::OnDelZLine(userrec* source, std::string ipmask) { }; -00296 void Module::OnDelKLine(userrec* source, std::string hostmask) { }; -00297 void Module::OnDelQLine(userrec* source, std::string nickmask) { }; -00298 void Module::OnDelELine(userrec* source, std::string hostmask) { }; -00299 void Module::OnCleanup(int target_type, void* item) { }; -00300 -00301 /* server is a wrapper class that provides methods to all of the C-style -00302 * exports in the core -00303 */ -00304 -00305 Server::Server() -00306 { -00307 } -00308 -00309 Server::~Server() -00310 { -00311 } -00312 -00313 void Server::AddSocket(InspSocket* sock) -00314 { -00315 module_sockets.push_back(sock); -00316 } -00317 -00318 void Server::RehashServer() -00319 { -00320 WriteOpers("*** Rehashing config file"); -00321 Config->Read(false,NULL); -00322 } -00323 -00324 ServerConfig* Server::GetConfig() -00325 { -00326 return Config; -00327 } -00328 -00329 std::string Server::GetVersion() -00330 { -00331 return ServerInstance->GetVersionString(); -00332 } -00333 -00334 void Server::DelSocket(InspSocket* sock) -00335 { -00336 for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++) -00337 { -00338 if (*a == sock) -00339 { -00340 module_sockets.erase(a); -00341 return; -00342 } -00343 } -00344 } -00345 -00346 void Server::SendOpers(std::string s) -00347 { -00348 WriteOpers("%s",s.c_str()); -00349 } -00350 -00351 bool Server::MatchText(std::string sliteral, std::string spattern) -00352 { -00353 char literal[MAXBUF],pattern[MAXBUF]; -00354 strlcpy(literal,sliteral.c_str(),MAXBUF); -00355 strlcpy(pattern,spattern.c_str(),MAXBUF); -00356 return match(literal,pattern); -00357 } -00358 -00359 void Server::SendToModeMask(std::string modes, int flags, std::string text) -00360 { -00361 WriteMode(modes.c_str(),flags,"%s",text.c_str()); -00362 } -00363 -00364 chanrec* Server::JoinUserToChannel(userrec* user, std::string cname, std::string key) -00365 { -00366 return add_channel(user,cname.c_str(),key.c_str(),false); -00367 } -00368 -00369 chanrec* Server::PartUserFromChannel(userrec* user, std::string cname, std::string reason) -00370 { -00371 return del_channel(user,cname.c_str(),reason.c_str(),false); -00372 } -00373 -00374 chanuserlist Server::GetUsers(chanrec* chan) -00375 { -00376 chanuserlist userl; -00377 userl.clear(); -00378 std::vector<char*> *list = chan->GetUsers(); -00379 for (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++) -00380 { -00381 char* o = *i; -00382 userl.push_back((userrec*)o); -00383 } -00384 return userl; -00385 } -00386 void Server::ChangeUserNick(userrec* user, std::string nickname) -00387 { -00388 force_nickchange(user,nickname.c_str()); -00389 } -00390 -00391 void Server::QuitUser(userrec* user, std::string reason) -00392 { -00393 kill_link(user,reason.c_str()); -00394 } -00395 -00396 bool Server::IsUlined(std::string server) -00397 { -00398 return is_uline(server.c_str()); -00399 } -00400 -00401 void Server::CallCommandHandler(std::string commandname, char** parameters, int pcnt, userrec* user) -00402 { -00403 call_handler(commandname.c_str(),parameters,pcnt,user); -00404 } -00405 -00406 bool Server::IsValidModuleCommand(std::string commandname, int pcnt, userrec* user) -00407 { -00408 return is_valid_cmd(commandname.c_str(), pcnt, user); -00409 } -00410 -00411 void Server::Log(int level, std::string s) -00412 { -00413 log(level,"%s",s.c_str()); -00414 } -00415 -00416 void Server::AddCommand(char* cmd, handlerfunc f, char flags, int minparams, char* source) -00417 { -00418 createcommand(cmd,f,flags,minparams,source); -00419 } -00420 -00421 void Server::SendMode(char **parameters, int pcnt, userrec *user) -00422 { -00423 server_mode(parameters,pcnt,user); -00424 } -00425 -00426 void Server::Send(int Socket, std::string s) -00427 { -00428 Write(Socket,"%s",s.c_str()); -00429 } -00430 -00431 void Server::SendServ(int Socket, std::string s) -00432 { -00433 WriteServ(Socket,"%s",s.c_str()); -00434 } -00435 -00436 void Server::SendFrom(int Socket, userrec* User, std::string s) -00437 { -00438 WriteFrom(Socket,User,"%s",s.c_str()); -00439 } -00440 -00441 void Server::SendTo(userrec* Source, userrec* Dest, std::string s) -00442 { -00443 if (!Source) -00444 { -00445 // if source is NULL, then the message originates from the local server -00446 Write(Dest->fd,":%s %s",this->GetServerName().c_str(),s.c_str()); -00447 } -00448 else -00449 { -00450 // otherwise it comes from the user specified -00451 WriteTo(Source,Dest,"%s",s.c_str()); -00452 } -00453 } -00454 -00455 void Server::SendChannelServerNotice(std::string ServName, chanrec* Channel, std::string text) -00456 { -00457 WriteChannelWithServ((char*)ServName.c_str(), Channel, "%s", text.c_str()); -00458 } -00459 -00460 void Server::SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender) -00461 { -00462 if (IncludeSender) -00463 { -00464 WriteChannel(Channel,User,"%s",s.c_str()); -00465 } -00466 else -00467 { -00468 ChanExceptSender(Channel,User,"%s",s.c_str()); -00469 } -00470 } -00471 -00472 bool Server::CommonChannels(userrec* u1, userrec* u2) -00473 { -00474 return (common_channels(u1,u2) != 0); -00475 } -00476 -00477 void Server::SendCommon(userrec* User, std::string text,bool IncludeSender) -00478 { -00479 if (IncludeSender) -00480 { -00481 WriteCommon(User,"%s",text.c_str()); -00482 } -00483 else -00484 { -00485 WriteCommonExcept(User,"%s",text.c_str()); -00486 } -00487 } -00488 -00489 void Server::SendWallops(userrec* User, std::string text) -00490 { -00491 WriteWallOps(User,false,"%s",text.c_str()); -00492 } -00493 -00494 void Server::ChangeHost(userrec* user, std::string host) -00495 { -00496 ChangeDisplayedHost(user,host.c_str()); -00497 } -00498 -00499 void Server::ChangeGECOS(userrec* user, std::string gecos) -00500 { -00501 ChangeName(user,gecos.c_str()); -00502 } -00503 -00504 bool Server::IsNick(std::string nick) -00505 { -00506 return (isnick(nick.c_str()) != 0); -00507 } -00508 -00509 userrec* Server::FindNick(std::string nick) -00510 { -00511 return Find(nick); -00512 } -00513 -00514 userrec* Server::FindDescriptor(int socket) -00515 { -00516 return (socket < 65536 ? fd_ref_table[socket] : NULL); -00517 } -00518 -00519 chanrec* Server::FindChannel(std::string channel) -00520 { -00521 return FindChan(channel.c_str()); -00522 } -00523 -00524 std::string Server::ChanMode(userrec* User, chanrec* Chan) -00525 { -00526 return cmode(User,Chan); -00527 } -00528 -00529 bool Server::IsOnChannel(userrec* User, chanrec* Chan) -00530 { -00531 return has_channel(User,Chan); -00532 } -00533 -00534 std::string Server::GetServerName() -00535 { -00536 return Config->ServerName; -00537 } -00538 -00539 std::string Server::GetNetworkName() -00540 { -00541 return Config->Network; -00542 } -00543 -00544 std::string Server::GetServerDescription() -00545 { -00546 return Config->ServerDesc; -00547 } -00548 -00549 Admin Server::GetAdmin() -00550 { -00551 return Admin(Config->AdminName,Config->AdminEmail,Config->AdminNick); -00552 } +00217 // These declarations define the behavours of the base class Module (which does nothing at all) +00218 +00219 Module::Module(Server* Me) { } +00220 Module::~Module() { } +00221 void Module::OnUserConnect(userrec* user) { } +00222 void Module::OnUserQuit(userrec* user, std::string message) { } +00223 void Module::OnUserDisconnect(userrec* user) { } +00224 void Module::OnUserJoin(userrec* user, chanrec* channel) { } +00225 void Module::OnUserPart(userrec* user, chanrec* channel) { } +00226 void Module::OnRehash(std::string parameter) { } +00227 void Module::OnServerRaw(std::string &raw, bool inbound, userrec* user) { } +00228 int Module::OnUserPreJoin(userrec* user, chanrec* chan, const char* cname) { return 0; } +00229 int Module::OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list &params) { return false; } +00230 void Module::OnMode(userrec* user, void* dest, int target_type, std::string text) { }; +00231 Version Module::GetVersion() { return Version(1,0,0,0,VF_VENDOR); } +00232 void Module::OnOper(userrec* user, std::string opertype) { }; +00233 void Module::OnInfo(userrec* user) { }; +00234 void Module::OnWhois(userrec* source, userrec* dest) { }; +00235 int Module::OnUserPreInvite(userrec* source,userrec* dest,chanrec* channel) { return 0; }; +00236 int Module::OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text) { return 0; }; +00237 int Module::OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text) { return 0; }; +00238 int Module::OnUserPreNick(userrec* user, std::string newnick) { return 0; }; +00239 void Module::OnUserPostNick(userrec* user, std::string oldnick) { }; +00240 int Module::OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type) { return ACR_DEFAULT; }; +00241 void Module::On005Numeric(std::string &output) { }; +00242 int Module::OnKill(userrec* source, userrec* dest, std::string reason) { return 0; }; +00243 void Module::OnLoadModule(Module* mod,std::string name) { }; +00244 void Module::OnUnloadModule(Module* mod,std::string name) { }; +00245 void Module::OnBackgroundTimer(time_t curtime) { }; +00246 void Module::OnSendList(userrec* user, chanrec* channel, char mode) { }; +00247 int Module::OnPreCommand(std::string command, char **parameters, int pcnt, userrec *user) { return 0; }; +00248 bool Module::OnCheckReady(userrec* user) { return true; }; +00249 void Module::OnUserRegister(userrec* user) { }; +00250 int Module::OnUserPreKick(userrec* source, userrec* user, chanrec* chan, std::string reason) { return 0; }; +00251 void Module::OnUserKick(userrec* source, userrec* user, chanrec* chan, std::string reason) { }; +00252 int Module::OnRawMode(userrec* user, chanrec* chan, char mode, std::string param, bool adding, int pcnt) { return 0; }; +00253 int Module::OnCheckInvite(userrec* user, chanrec* chan) { return 0; }; +00254 int Module::OnCheckKey(userrec* user, chanrec* chan, std::string keygiven) { return 0; }; +00255 int Module::OnCheckLimit(userrec* user, chanrec* chan) { return 0; }; +00256 int Module::OnCheckBan(userrec* user, chanrec* chan) { return 0; }; +00257 void Module::OnStats(char symbol) { }; +00258 int Module::OnChangeLocalUserHost(userrec* user, std::string newhost) { return 0; }; +00259 int Module::OnChangeLocalUserGECOS(userrec* user, std::string newhost) { return 0; }; +00260 int Module::OnLocalTopicChange(userrec* user, chanrec* chan, std::string topic) { return 0; }; +00261 void Module::OnEvent(Event* event) { return; }; +00262 char* Module::OnRequest(Request* request) { return NULL; }; +00263 int Module::OnOperCompare(std::string password, std::string input) { return 0; }; +00264 void Module::OnGlobalOper(userrec* user) { }; +00265 void Module::OnGlobalConnect(userrec* user) { }; +00266 int Module::OnAddBan(userrec* source, chanrec* channel,std::string banmask) { return 0; }; +00267 int Module::OnDelBan(userrec* source, chanrec* channel,std::string banmask) { return 0; }; +00268 void Module::OnRawSocketAccept(int fd, std::string ip, int localport) { }; +00269 int Module::OnRawSocketWrite(int fd, char* buffer, int count) { return 0; }; +00270 void Module::OnRawSocketClose(int fd) { }; +00271 int Module::OnRawSocketRead(int fd, char* buffer, unsigned int count, int &readresult) { return 0; }; +00272 void Module::OnUserMessage(userrec* user, void* dest, int target_type, std::string text) { }; +00273 void Module::OnUserNotice(userrec* user, void* dest, int target_type, std::string text) { }; +00274 void Module::OnRemoteKill(userrec* source, userrec* dest, std::string reason) { }; +00275 void Module::OnUserInvite(userrec* source,userrec* dest,chanrec* channel) { }; +00276 void Module::OnPostLocalTopicChange(userrec* user, chanrec* chan, std::string topic) { }; +00277 void Module::OnGetServerDescription(std::string servername,std::string &description) { }; +00278 void Module::OnSyncUser(userrec* user, Module* proto, void* opaque) { }; +00279 void Module::OnSyncChannel(chanrec* chan, Module* proto, void* opaque) { }; +00280 void Module::ProtoSendMode(void* opaque, int target_type, void* target, std::string modeline) { }; +00281 void Module::OnSyncChannelMetaData(chanrec* chan, Module* proto,void* opaque, std::string extname) { }; +00282 void Module::OnSyncUserMetaData(userrec* user, Module* proto,void* opaque, std::string extname) { }; +00283 void Module::OnDecodeMetaData(int target_type, void* target, std::string extname, std::string extdata) { }; +00284 void Module::ProtoSendMetaData(void* opaque, int target_type, void* target, std::string extname, std::string extdata) { }; +00285 void Module::OnWallops(userrec* user, std::string text) { }; +00286 void Module::OnChangeHost(userrec* user, std::string newhost) { }; +00287 void Module::OnChangeName(userrec* user, std::string gecos) { }; +00288 void Module::OnAddGLine(long duration, userrec* source, std::string reason, std::string hostmask) { }; +00289 void Module::OnAddZLine(long duration, userrec* source, std::string reason, std::string ipmask) { }; +00290 void Module::OnAddKLine(long duration, userrec* source, std::string reason, std::string hostmask) { }; +00291 void Module::OnAddQLine(long duration, userrec* source, std::string reason, std::string nickmask) { }; +00292 void Module::OnAddELine(long duration, userrec* source, std::string reason, std::string hostmask) { }; +00293 void Module::OnDelGLine(userrec* source, std::string hostmask) { }; +00294 void Module::OnDelZLine(userrec* source, std::string ipmask) { }; +00295 void Module::OnDelKLine(userrec* source, std::string hostmask) { }; +00296 void Module::OnDelQLine(userrec* source, std::string nickmask) { }; +00297 void Module::OnDelELine(userrec* source, std::string hostmask) { }; +00298 void Module::OnCleanup(int target_type, void* item) { }; +00299 +00300 /* server is a wrapper class that provides methods to all of the C-style +00301 * exports in the core +00302 */ +00303 +00304 Server::Server() +00305 { +00306 } +00307 +00308 Server::~Server() +00309 { +00310 } +00311 +00312 void Server::AddSocket(InspSocket* sock) +00313 { +00314 module_sockets.push_back(sock); +00315 } +00316 +00317 void Server::RehashServer() +00318 { +00319 WriteOpers("*** Rehashing config file"); +00320 Config->Read(false,NULL); +00321 } +00322 +00323 ServerConfig* Server::GetConfig() +00324 { +00325 return Config; +00326 } +00327 +00328 std::string Server::GetVersion() +00329 { +00330 return ServerInstance->GetVersionString(); +00331 } +00332 +00333 void Server::DelSocket(InspSocket* sock) +00334 { +00335 for (std::vector<InspSocket*>::iterator a = module_sockets.begin(); a < module_sockets.end(); a++) +00336 { +00337 if (*a == sock) +00338 { +00339 module_sockets.erase(a); +00340 return; +00341 } +00342 } +00343 } +00344 +00345 void Server::SendOpers(std::string s) +00346 { +00347 WriteOpers("%s",s.c_str()); +00348 } +00349 +00350 bool Server::MatchText(std::string sliteral, std::string spattern) +00351 { +00352 char literal[MAXBUF],pattern[MAXBUF]; +00353 strlcpy(literal,sliteral.c_str(),MAXBUF); +00354 strlcpy(pattern,spattern.c_str(),MAXBUF); +00355 return match(literal,pattern); +00356 } +00357 +00358 void Server::SendToModeMask(std::string modes, int flags, std::string text) +00359 { +00360 WriteMode(modes.c_str(),flags,"%s",text.c_str()); +00361 } +00362 +00363 chanrec* Server::JoinUserToChannel(userrec* user, std::string cname, std::string key) +00364 { +00365 return add_channel(user,cname.c_str(),key.c_str(),false); +00366 } +00367 +00368 chanrec* Server::PartUserFromChannel(userrec* user, std::string cname, std::string reason) +00369 { +00370 return del_channel(user,cname.c_str(),reason.c_str(),false); +00371 } +00372 +00373 chanuserlist Server::GetUsers(chanrec* chan) +00374 { +00375 chanuserlist userl; +00376 userl.clear(); +00377 std::vector<char*> *list = chan->GetUsers(); +00378 for (std::vector<char*>::iterator i = list->begin(); i != list->end(); i++) +00379 { +00380 char* o = *i; +00381 userl.push_back((userrec*)o); +00382 } +00383 return userl; +00384 } +00385 void Server::ChangeUserNick(userrec* user, std::string nickname) +00386 { +00387 force_nickchange(user,nickname.c_str()); +00388 } +00389 +00390 void Server::QuitUser(userrec* user, std::string reason) +00391 { +00392 kill_link(user,reason.c_str()); +00393 } +00394 +00395 bool Server::IsUlined(std::string server) +00396 { +00397 return is_uline(server.c_str()); +00398 } +00399 +00400 void Server::CallCommandHandler(std::string commandname, char** parameters, int pcnt, userrec* user) +00401 { +00402 ServerInstance->Parser->CallHandler(commandname,parameters,pcnt,user); +00403 } +00404 +00405 bool Server::IsValidModuleCommand(std::string commandname, int pcnt, userrec* user) +00406 { +00407 return ServerInstance->Parser->IsValidCommand(commandname, pcnt, user); +00408 } +00409 +00410 void Server::Log(int level, std::string s) +00411 { +00412 log(level,"%s",s.c_str()); +00413 } +00414 +00415 void Server::AddCommand(command_t *f) +00416 { +00417 ServerInstance->Parser->CreateCommand(f); +00418 } +00419 +00420 void Server::SendMode(char **parameters, int pcnt, userrec *user) +00421 { +00422 ServerInstance->ModeGrok->ServerMode(parameters,pcnt,user); +00423 } +00424 +00425 void Server::Send(int Socket, std::string s) +00426 { +00427 Write(Socket,"%s",s.c_str()); +00428 } +00429 +00430 void Server::SendServ(int Socket, std::string s) +00431 { +00432 WriteServ(Socket,"%s",s.c_str()); +00433 } +00434 +00435 void Server::SendFrom(int Socket, userrec* User, std::string s) +00436 { +00437 WriteFrom(Socket,User,"%s",s.c_str()); +00438 } +00439 +00440 void Server::SendTo(userrec* Source, userrec* Dest, std::string s) +00441 { +00442 if (!Source) +00443 { +00444 // if source is NULL, then the message originates from the local server +00445 Write(Dest->fd,":%s %s",this->GetServerName().c_str(),s.c_str()); +00446 } +00447 else +00448 { +00449 // otherwise it comes from the user specified +00450 WriteTo(Source,Dest,"%s",s.c_str()); +00451 } +00452 } +00453 +00454 void Server::SendChannelServerNotice(std::string ServName, chanrec* Channel, std::string text) +00455 { +00456 WriteChannelWithServ((char*)ServName.c_str(), Channel, "%s", text.c_str()); +00457 } +00458 +00459 void Server::SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender) +00460 { +00461 if (IncludeSender) +00462 { +00463 WriteChannel(Channel,User,"%s",s.c_str()); +00464 } +00465 else +00466 { +00467 ChanExceptSender(Channel,User,"%s",s.c_str()); +00468 } +00469 } +00470 +00471 bool Server::CommonChannels(userrec* u1, userrec* u2) +00472 { +00473 return (common_channels(u1,u2) != 0); +00474 } +00475 +00476 void Server::SendCommon(userrec* User, std::string text,bool IncludeSender) +00477 { +00478 if (IncludeSender) +00479 { +00480 WriteCommon(User,"%s",text.c_str()); +00481 } +00482 else +00483 { +00484 WriteCommonExcept(User,"%s",text.c_str()); +00485 } +00486 } +00487 +00488 void Server::SendWallops(userrec* User, std::string text) +00489 { +00490 WriteWallOps(User,false,"%s",text.c_str()); +00491 } +00492 +00493 void Server::ChangeHost(userrec* user, std::string host) +00494 { +00495 ChangeDisplayedHost(user,host.c_str()); +00496 } +00497 +00498 void Server::ChangeGECOS(userrec* user, std::string gecos) +00499 { +00500 ChangeName(user,gecos.c_str()); +00501 } +00502 +00503 bool Server::IsNick(std::string nick) +00504 { +00505 return (isnick(nick.c_str()) != 0); +00506 } +00507 +00508 userrec* Server::FindNick(std::string nick) +00509 { +00510 return Find(nick); +00511 } +00512 +00513 userrec* Server::FindDescriptor(int socket) +00514 { +00515 return (socket < 65536 ? fd_ref_table[socket] : NULL); +00516 } +00517 +00518 chanrec* Server::FindChannel(std::string channel) +00519 { +00520 return FindChan(channel.c_str()); +00521 } +00522 +00523 std::string Server::ChanMode(userrec* User, chanrec* Chan) +00524 { +00525 return cmode(User,Chan); +00526 } +00527 +00528 bool Server::IsOnChannel(userrec* User, chanrec* Chan) +00529 { +00530 return has_channel(User,Chan); +00531 } +00532 +00533 std::string Server::GetServerName() +00534 { +00535 return Config->ServerName; +00536 } +00537 +00538 std::string Server::GetNetworkName() +00539 { +00540 return Config->Network; +00541 } +00542 +00543 std::string Server::GetServerDescription() +00544 { +00545 return Config->ServerDesc; +00546 } +00547 +00548 Admin Server::GetAdmin() +00549 { +00550 return Admin(Config->AdminName,Config->AdminEmail,Config->AdminNick); +00551 } +00552 00553 00554 -00555 -00556 bool Server::AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off) -00557 { -00558 if (((modechar >= 'A') && (modechar <= 'Z')) || ((modechar >= 'a') && (modechar <= 'z'))) -00559 { -00560 if (type == MT_SERVER) -00561 { -00562 log(DEBUG,"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"); -00563 return false; -00564 } -00565 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT)) -00566 { -00567 log(DEBUG,"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"); -00568 return false; -00569 } -00570 if ((params_when_on>1) || (params_when_off>1)) -00571 { -00572 log(DEBUG,"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"); -00573 return false; -00574 } -00575 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off); -00576 } -00577 else -00578 { -00579 log(DEBUG,"*** API ERROR *** Muppet modechar detected."); -00580 } -00581 return false; -00582 } -00583 -00584 bool Server::AddExtendedListMode(char modechar) -00585 { -00586 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1); -00587 if (res) -00588 ModeMakeList(modechar); -00589 return res; -00590 } -00591 -00592 int Server::CountUsers(chanrec* c) -00593 { -00594 return usercount(c); -00595 } +00555 bool Server::AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off) +00556 { +00557 if (((modechar >= 'A') && (modechar <= 'Z')) || ((modechar >= 'a') && (modechar <= 'z'))) +00558 { +00559 if (type == MT_SERVER) +00560 { +00561 log(DEBUG,"*** API ERROR *** Modes of type MT_SERVER are reserved for future expansion"); +00562 return false; +00563 } +00564 if (((params_when_on>0) || (params_when_off>0)) && (type == MT_CLIENT)) +00565 { +00566 log(DEBUG,"*** API ERROR *** Parameters on MT_CLIENT modes are not supported"); +00567 return false; +00568 } +00569 if ((params_when_on>1) || (params_when_off>1)) +00570 { +00571 log(DEBUG,"*** API ERROR *** More than one parameter for an MT_CHANNEL mode is not yet supported"); +00572 return false; +00573 } +00574 return DoAddExtendedMode(modechar,type,requires_oper,params_when_on,params_when_off); +00575 } +00576 else +00577 { +00578 log(DEBUG,"*** API ERROR *** Muppet modechar detected."); +00579 } +00580 return false; +00581 } +00582 +00583 bool Server::AddExtendedListMode(char modechar) +00584 { +00585 bool res = DoAddExtendedMode(modechar,MT_CHANNEL,false,1,1); +00586 if (res) +00587 ModeMakeList(modechar); +00588 return res; +00589 } +00590 +00591 int Server::CountUsers(chanrec* c) +00592 { +00593 return usercount(c); +00594 } +00595 00596 -00597 -00598 bool Server::UserToPseudo(userrec* user,std::string message) -00599 { -00600 unsigned int old_fd = user->fd; -00601 user->fd = FD_MAGIC_NUMBER; -00602 user->ClearBuffer(); -00603 Write(old_fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,message.c_str()); -00604 SE->DelFd(old_fd); -00605 shutdown(old_fd,2); -00606 close(old_fd); -00607 return true; -00608 } -00609 -00610 bool Server::PseudoToUser(userrec* alive,userrec* zombie,std::string message) -00611 { -00612 zombie->fd = alive->fd; -00613 alive->fd = FD_MAGIC_NUMBER; -00614 alive->ClearBuffer(); -00615 Write(zombie->fd,":%s!%s@%s NICK %s",alive->nick,alive->ident,alive->host,zombie->nick); -00616 kill_link(alive,message.c_str()); -00617 fd_ref_table[zombie->fd] = zombie; -00618 for (unsigned int i = 0; i < zombie->chans.size(); i++) -00619 { -00620 if (zombie->chans[i].channel != NULL) -00621 { -00622 if (zombie->chans[i].channel->name) -00623 { -00624 chanrec* Ptr = zombie->chans[i].channel; -00625 WriteFrom(zombie->fd,zombie,"JOIN %s",Ptr->name); -00626 if (Ptr->topicset) -00627 { -00628 WriteServ(zombie->fd,"332 %s %s :%s", zombie->nick, Ptr->name, Ptr->topic); -00629 WriteServ(zombie->fd,"333 %s %s %s %d", zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset); -00630 } -00631 userlist(zombie,Ptr); -00632 WriteServ(zombie->fd,"366 %s %s :End of /NAMES list.", zombie->nick, Ptr->name); -00633 -00634 } -00635 } -00636 } -00637 return true; -00638 } -00639 -00640 void Server::AddGLine(long duration, std::string source, std::string reason, std::string hostmask) -00641 { -00642 add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); -00643 } -00644 -00645 void Server::AddQLine(long duration, std::string source, std::string reason, std::string nickname) -00646 { -00647 add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str()); -00648 } -00649 -00650 void Server::AddZLine(long duration, std::string source, std::string reason, std::string ipaddr) -00651 { -00652 add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str()); -00653 } -00654 -00655 void Server::AddKLine(long duration, std::string source, std::string reason, std::string hostmask) -00656 { -00657 add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); -00658 } -00659 -00660 void Server::AddELine(long duration, std::string source, std::string reason, std::string hostmask) -00661 { -00662 add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); -00663 } -00664 -00665 bool Server::DelGLine(std::string hostmask) -00666 { -00667 return del_gline(hostmask.c_str()); -00668 } -00669 -00670 bool Server::DelQLine(std::string nickname) -00671 { -00672 return del_qline(nickname.c_str()); -00673 } -00674 -00675 bool Server::DelZLine(std::string ipaddr) -00676 { -00677 return del_zline(ipaddr.c_str()); -00678 } -00679 -00680 bool Server::DelKLine(std::string hostmask) -00681 { -00682 return del_kline(hostmask.c_str()); -00683 } -00684 -00685 bool Server::DelELine(std::string hostmask) -00686 { -00687 return del_eline(hostmask.c_str()); -00688 } -00689 -00690 long Server::CalcDuration(std::string delta) -00691 { -00692 return duration(delta.c_str()); -00693 } -00694 -00695 bool Server::IsValidMask(std::string mask) -00696 { -00697 const char* dest = mask.c_str(); -00698 if (strchr(dest,'!')==0) -00699 return false; -00700 if (strchr(dest,'@')==0) -00701 return false; -00702 for (unsigned int i = 0; i < strlen(dest); i++) -00703 if (dest[i] < 32) -00704 return false; -00705 for (unsigned int i = 0; i < strlen(dest); i++) -00706 if (dest[i] > 126) -00707 return false; -00708 unsigned int c = 0; -00709 for (unsigned int i = 0; i < strlen(dest); i++) -00710 if (dest[i] == '!') -00711 c++; -00712 if (c>1) -00713 return false; -00714 c = 0; -00715 for (unsigned int i = 0; i < strlen(dest); i++) -00716 if (dest[i] == '@') -00717 c++; -00718 if (c>1) -00719 return false; -00720 -00721 return true; -00722 } -00723 -00724 Module* Server::FindModule(std::string name) -00725 { -00726 for (int i = 0; i <= MODCOUNT; i++) -00727 { -00728 if (Config->module_names[i] == name) -00729 { -00730 return modules[i]; -00731 } -00732 } -00733 return NULL; -00734 } -00735 -00736 ConfigReader::ConfigReader() -00737 { -00738 Config->ClearStack(); -00739 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); -00740 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); -00741 this->readerror = Config->LoadConf(CONFIG_FILE,this->cache,this->errorlog); -00742 if (!this->readerror) -00743 this->error = CONF_FILE_NOT_FOUND; -00744 } +00597 bool Server::UserToPseudo(userrec* user,std::string message) +00598 { +00599 unsigned int old_fd = user->fd; +00600 user->fd = FD_MAGIC_NUMBER; +00601 user->ClearBuffer(); +00602 Write(old_fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,message.c_str()); +00603 ServerInstance->SE->DelFd(old_fd); +00604 shutdown(old_fd,2); +00605 close(old_fd); +00606 return true; +00607 } +00608 +00609 bool Server::PseudoToUser(userrec* alive,userrec* zombie,std::string message) +00610 { +00611 zombie->fd = alive->fd; +00612 alive->fd = FD_MAGIC_NUMBER; +00613 alive->ClearBuffer(); +00614 Write(zombie->fd,":%s!%s@%s NICK %s",alive->nick,alive->ident,alive->host,zombie->nick); +00615 kill_link(alive,message.c_str()); +00616 fd_ref_table[zombie->fd] = zombie; +00617 for (unsigned int i = 0; i < zombie->chans.size(); i++) +00618 { +00619 if (zombie->chans[i].channel != NULL) +00620 { +00621 if (zombie->chans[i].channel->name) +00622 { +00623 chanrec* Ptr = zombie->chans[i].channel; +00624 WriteFrom(zombie->fd,zombie,"JOIN %s",Ptr->name); +00625 if (Ptr->topicset) +00626 { +00627 WriteServ(zombie->fd,"332 %s %s :%s", zombie->nick, Ptr->name, Ptr->topic); +00628 WriteServ(zombie->fd,"333 %s %s %s %d", zombie->nick, Ptr->name, Ptr->setby, Ptr->topicset); +00629 } +00630 userlist(zombie,Ptr); +00631 WriteServ(zombie->fd,"366 %s %s :End of /NAMES list.", zombie->nick, Ptr->name); +00632 +00633 } +00634 } +00635 } +00636 return true; +00637 } +00638 +00639 void Server::AddGLine(long duration, std::string source, std::string reason, std::string hostmask) +00640 { +00641 add_gline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); +00642 } +00643 +00644 void Server::AddQLine(long duration, std::string source, std::string reason, std::string nickname) +00645 { +00646 add_qline(duration, source.c_str(), reason.c_str(), nickname.c_str()); +00647 } +00648 +00649 void Server::AddZLine(long duration, std::string source, std::string reason, std::string ipaddr) +00650 { +00651 add_zline(duration, source.c_str(), reason.c_str(), ipaddr.c_str()); +00652 } +00653 +00654 void Server::AddKLine(long duration, std::string source, std::string reason, std::string hostmask) +00655 { +00656 add_kline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); +00657 } +00658 +00659 void Server::AddELine(long duration, std::string source, std::string reason, std::string hostmask) +00660 { +00661 add_eline(duration, source.c_str(), reason.c_str(), hostmask.c_str()); +00662 } +00663 +00664 bool Server::DelGLine(std::string hostmask) +00665 { +00666 return del_gline(hostmask.c_str()); +00667 } +00668 +00669 bool Server::DelQLine(std::string nickname) +00670 { +00671 return del_qline(nickname.c_str()); +00672 } +00673 +00674 bool Server::DelZLine(std::string ipaddr) +00675 { +00676 return del_zline(ipaddr.c_str()); +00677 } +00678 +00679 bool Server::DelKLine(std::string hostmask) +00680 { +00681 return del_kline(hostmask.c_str()); +00682 } +00683 +00684 bool Server::DelELine(std::string hostmask) +00685 { +00686 return del_eline(hostmask.c_str()); +00687 } +00688 +00689 long Server::CalcDuration(std::string delta) +00690 { +00691 return duration(delta.c_str()); +00692 } +00693 +00694 bool Server::IsValidMask(std::string mask) +00695 { +00696 const char* dest = mask.c_str(); +00697 if (strchr(dest,'!')==0) +00698 return false; +00699 if (strchr(dest,'@')==0) +00700 return false; +00701 for (unsigned int i = 0; i < strlen(dest); i++) +00702 if (dest[i] < 32) +00703 return false; +00704 for (unsigned int i = 0; i < strlen(dest); i++) +00705 if (dest[i] > 126) +00706 return false; +00707 unsigned int c = 0; +00708 for (unsigned int i = 0; i < strlen(dest); i++) +00709 if (dest[i] == '!') +00710 c++; +00711 if (c>1) +00712 return false; +00713 c = 0; +00714 for (unsigned int i = 0; i < strlen(dest); i++) +00715 if (dest[i] == '@') +00716 c++; +00717 if (c>1) +00718 return false; +00719 +00720 return true; +00721 } +00722 +00723 Module* Server::FindModule(std::string name) +00724 { +00725 for (int i = 0; i <= MODCOUNT; i++) +00726 { +00727 if (Config->module_names[i] == name) +00728 { +00729 return modules[i]; +00730 } +00731 } +00732 return NULL; +00733 } +00734 +00735 ConfigReader::ConfigReader() +00736 { +00737 Config->ClearStack(); +00738 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); +00739 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); +00740 this->readerror = Config->LoadConf(CONFIG_FILE,this->cache,this->errorlog); +00741 if (!this->readerror) +00742 this->error = CONF_FILE_NOT_FOUND; +00743 } +00744 00745 -00746 -00747 ConfigReader::~ConfigReader() -00748 { -00749 if (this->cache) -00750 delete this->cache; -00751 if (this->errorlog) -00752 delete this->errorlog; -00753 } +00746 ConfigReader::~ConfigReader() +00747 { +00748 if (this->cache) +00749 delete this->cache; +00750 if (this->errorlog) +00751 delete this->errorlog; +00752 } +00753 00754 -00755 -00756 ConfigReader::ConfigReader(std::string filename) -00757 { -00758 Config->ClearStack(); -00759 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); -00760 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); -00761 this->readerror = Config->LoadConf(filename.c_str(),this->cache,this->errorlog); -00762 if (!this->readerror) -00763 this->error = CONF_FILE_NOT_FOUND; -00764 }; -00765 -00766 std::string ConfigReader::ReadValue(std::string tag, std::string name, int index) -00767 { -00768 char val[MAXBUF]; -00769 char t[MAXBUF]; -00770 char n[MAXBUF]; -00771 strlcpy(t,tag.c_str(),MAXBUF); -00772 strlcpy(n,name.c_str(),MAXBUF); -00773 int res = Config->ReadConf(cache,t,n,index,val); -00774 if (!res) -00775 { -00776 this->error = CONF_VALUE_NOT_FOUND; -00777 return ""; -00778 } -00779 return val; -00780 } -00781 -00782 bool ConfigReader::ReadFlag(std::string tag, std::string name, int index) -00783 { -00784 char val[MAXBUF]; -00785 char t[MAXBUF]; -00786 char n[MAXBUF]; -00787 strlcpy(t,tag.c_str(),MAXBUF); -00788 strlcpy(n,name.c_str(),MAXBUF); -00789 int res = Config->ReadConf(cache,t,n,index,val); -00790 if (!res) -00791 { -00792 this->error = CONF_VALUE_NOT_FOUND; -00793 return false; -00794 } -00795 std::string s = val; -00796 return ((s == "yes") || (s == "YES") || (s == "true") || (s == "TRUE") || (s == "1")); -00797 } -00798 -00799 long ConfigReader::ReadInteger(std::string tag, std::string name, int index, bool needs_unsigned) -00800 { -00801 char val[MAXBUF]; -00802 char t[MAXBUF]; -00803 char n[MAXBUF]; -00804 strlcpy(t,tag.c_str(),MAXBUF); -00805 strlcpy(n,name.c_str(),MAXBUF); -00806 int res = Config->ReadConf(cache,t,n,index,val); -00807 if (!res) -00808 { -00809 this->error = CONF_VALUE_NOT_FOUND; -00810 return 0; -00811 } -00812 for (unsigned int i = 0; i < strlen(val); i++) -00813 { -00814 if (!isdigit(val[i])) -00815 { -00816 this->error = CONF_NOT_A_NUMBER; -00817 return 0; -00818 } -00819 } -00820 if ((needs_unsigned) && (atoi(val)<0)) -00821 { -00822 this->error = CONF_NOT_UNSIGNED; -00823 return 0; -00824 } -00825 return atoi(val); -00826 } -00827 -00828 long ConfigReader::GetError() -00829 { -00830 long olderr = this->error; -00831 this->error = 0; -00832 return olderr; -00833 } -00834 -00835 void ConfigReader::DumpErrors(bool bail, userrec* user) -00836 { -00837 if (bail) -00838 { -00839 printf("There were errors in your configuration:\n%s",errorlog->str().c_str()); -00840 exit(0); -00841 } -00842 else -00843 { -00844 char dataline[1024]; -00845 if (user) -00846 { -00847 WriteServ(user->fd,"NOTICE %s :There were errors in the configuration file:",user->nick); -00848 while (!errorlog->eof()) -00849 { -00850 errorlog->getline(dataline,1024); -00851 WriteServ(user->fd,"NOTICE %s :%s",user->nick,dataline); -00852 } -00853 } -00854 else -00855 { -00856 WriteOpers("There were errors in the configuration file:",user->nick); -00857 while (!errorlog->eof()) -00858 { -00859 errorlog->getline(dataline,1024); -00860 WriteOpers(dataline); -00861 } -00862 } -00863 return; -00864 } -00865 } +00755 ConfigReader::ConfigReader(std::string filename) +00756 { +00757 Config->ClearStack(); +00758 this->cache = new std::stringstream(std::stringstream::in | std::stringstream::out); +00759 this->errorlog = new std::stringstream(std::stringstream::in | std::stringstream::out); +00760 this->readerror = Config->LoadConf(filename.c_str(),this->cache,this->errorlog); +00761 if (!this->readerror) +00762 this->error = CONF_FILE_NOT_FOUND; +00763 }; +00764 +00765 std::string ConfigReader::ReadValue(std::string tag, std::string name, int index) +00766 { +00767 char val[MAXBUF]; +00768 char t[MAXBUF]; +00769 char n[MAXBUF]; +00770 strlcpy(t,tag.c_str(),MAXBUF); +00771 strlcpy(n,name.c_str(),MAXBUF); +00772 int res = Config->ReadConf(cache,t,n,index,val); +00773 if (!res) +00774 { +00775 this->error = CONF_VALUE_NOT_FOUND; +00776 return ""; +00777 } +00778 return val; +00779 } +00780 +00781 bool ConfigReader::ReadFlag(std::string tag, std::string name, int index) +00782 { +00783 char val[MAXBUF]; +00784 char t[MAXBUF]; +00785 char n[MAXBUF]; +00786 strlcpy(t,tag.c_str(),MAXBUF); +00787 strlcpy(n,name.c_str(),MAXBUF); +00788 int res = Config->ReadConf(cache,t,n,index,val); +00789 if (!res) +00790 { +00791 this->error = CONF_VALUE_NOT_FOUND; +00792 return false; +00793 } +00794 std::string s = val; +00795 return ((s == "yes") || (s == "YES") || (s == "true") || (s == "TRUE") || (s == "1")); +00796 } +00797 +00798 long ConfigReader::ReadInteger(std::string tag, std::string name, int index, bool needs_unsigned) +00799 { +00800 char val[MAXBUF]; +00801 char t[MAXBUF]; +00802 char n[MAXBUF]; +00803 strlcpy(t,tag.c_str(),MAXBUF); +00804 strlcpy(n,name.c_str(),MAXBUF); +00805 int res = Config->ReadConf(cache,t,n,index,val); +00806 if (!res) +00807 { +00808 this->error = CONF_VALUE_NOT_FOUND; +00809 return 0; +00810 } +00811 for (unsigned int i = 0; i < strlen(val); i++) +00812 { +00813 if (!isdigit(val[i])) +00814 { +00815 this->error = CONF_NOT_A_NUMBER; +00816 return 0; +00817 } +00818 } +00819 if ((needs_unsigned) && (atoi(val)<0)) +00820 { +00821 this->error = CONF_NOT_UNSIGNED; +00822 return 0; +00823 } +00824 return atoi(val); +00825 } +00826 +00827 long ConfigReader::GetError() +00828 { +00829 long olderr = this->error; +00830 this->error = 0; +00831 return olderr; +00832 } +00833 +00834 void ConfigReader::DumpErrors(bool bail, userrec* user) +00835 { +00836 if (bail) +00837 { +00838 printf("There were errors in your configuration:\n%s",errorlog->str().c_str()); +00839 exit(0); +00840 } +00841 else +00842 { +00843 char dataline[1024]; +00844 if (user) +00845 { +00846 WriteServ(user->fd,"NOTICE %s :There were errors in the configuration file:",user->nick); +00847 while (!errorlog->eof()) +00848 { +00849 errorlog->getline(dataline,1024); +00850 WriteServ(user->fd,"NOTICE %s :%s",user->nick,dataline); +00851 } +00852 } +00853 else +00854 { +00855 WriteOpers("There were errors in the configuration file:",user->nick); +00856 while (!errorlog->eof()) +00857 { +00858 errorlog->getline(dataline,1024); +00859 WriteOpers(dataline); +00860 } +00861 } +00862 return; +00863 } +00864 } +00865 00866 -00867 -00868 int ConfigReader::Enumerate(std::string tag) -00869 { -00870 return Config->EnumConf(cache,tag.c_str()); -00871 } -00872 -00873 int ConfigReader::EnumerateValues(std::string tag, int index) -00874 { -00875 return Config->EnumValues(cache, tag.c_str(), index); -00876 } -00877 -00878 bool ConfigReader::Verify() -00879 { -00880 return this->readerror; -00881 } +00867 int ConfigReader::Enumerate(std::string tag) +00868 { +00869 return Config->EnumConf(cache,tag.c_str()); +00870 } +00871 +00872 int ConfigReader::EnumerateValues(std::string tag, int index) +00873 { +00874 return Config->EnumValues(cache, tag.c_str(), index); +00875 } +00876 +00877 bool ConfigReader::Verify() +00878 { +00879 return this->readerror; +00880 } +00881 00882 -00883 -00884 FileReader::FileReader(std::string filename) -00885 { -00886 file_cache c; -00887 readfile(c,filename.c_str()); -00888 this->fc = c; -00889 } -00890 -00891 FileReader::FileReader() -00892 { -00893 } -00894 -00895 void FileReader::LoadFile(std::string filename) -00896 { -00897 file_cache c; -00898 readfile(c,filename.c_str()); -00899 this->fc = c; -00900 } +00883 FileReader::FileReader(std::string filename) +00884 { +00885 file_cache c; +00886 readfile(c,filename.c_str()); +00887 this->fc = c; +00888 } +00889 +00890 FileReader::FileReader() +00891 { +00892 } +00893 +00894 void FileReader::LoadFile(std::string filename) +00895 { +00896 file_cache c; +00897 readfile(c,filename.c_str()); +00898 this->fc = c; +00899 } +00900 00901 -00902 -00903 FileReader::~FileReader() -00904 { -00905 } -00906 -00907 bool FileReader::Exists() -00908 { -00909 if (fc.size() == 0) -00910 { -00911 return(false); -00912 } -00913 else -00914 { -00915 return(true); -00916 } -00917 } -00918 -00919 std::string FileReader::GetLine(int x) -00920 { -00921 if ((x<0) || ((unsigned)x>fc.size())) -00922 return ""; -00923 return fc[x]; -00924 } -00925 -00926 int FileReader::FileSize() -00927 { -00928 return fc.size(); -00929 } +00902 FileReader::~FileReader() +00903 { +00904 } +00905 +00906 bool FileReader::Exists() +00907 { +00908 if (fc.size() == 0) +00909 { +00910 return(false); +00911 } +00912 else +00913 { +00914 return(true); +00915 } +00916 } +00917 +00918 std::string FileReader::GetLine(int x) +00919 { +00920 if ((x<0) || ((unsigned)x>fc.size())) +00921 return ""; +00922 return fc[x]; +00923 } +00924 +00925 int FileReader::FileSize() +00926 { +00927 return fc.size(); +00928 } +00929 00930 -00931 -00932 std::vector<Module*> modules(255); -00933 std::vector<ircd_module*> factory(255); -00934 -00935 int MODCOUNT = -1; +00931 std::vector<Module*> modules(255); +00932 std::vector<ircd_module*> factory(255); +00933 +00934 int MODCOUNT = -1; +00935 00936 -00937 -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/modules_8cpp.html b/docs/module-doc/modules_8cpp.html index 33b829252..c1e98e777 100644 --- a/docs/module-doc/modules_8cpp.html +++ b/docs/module-doc/modules_8cpp.html @@ -10,7 +10,6 @@

    modules.cpp File Reference

    #include "inspircd_config.h"
    #include "inspircd.h"
    #include "inspircd_io.h"
    -#include "inspircd_util.h"
    #include <unistd.h>
    #include <sys/errno.h>
    #include <time.h>
    @@ -36,24 +35,25 @@ #include "socket.h"
    #include "socketengine.h"
    #include "typedefs.h"
    +#include "command_parse.h"

    Include dependency graph for modules.cpp:

    - - - - - - - - - - - - - - + + + + + + + + + + + + + +

    @@ -79,8 +79,6 @@ Include dependency graph for modules.cpp:

    std::vector< ircd_module * > factory (255)

    Variables

    -SocketEngineSE - ServerConfigConfig InspIRCdServerInstance @@ -101,7 +99,7 @@ Include dependency graph for modules.cpp:

    chan_hash chanlist -command_table cmdlist +command_table cmdlist ExtModeList EMode @@ -161,17 +159,17 @@ Include dependency graph for modules.cpp:

    134 of file modules.cpp. +Definition at line 133 of file modules.cpp.

    -References EMode, and ModeDefined(). +References EMode, and ModeDefined().

    -Referenced by Server::AddExtendedListMode(), and Server::AddExtendedMode().

    00135 {
    -00136         if (ModeDefined(modechar,type)) {
    -00137                 return false;
    -00138         }
    -00139         EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off));
    -00140         return true;
    -00141 }
    +Referenced by Server::AddExtendedListMode(), and Server::AddExtendedMode().
    00134 {
    +00135         if (ModeDefined(modechar,type)) {
    +00136                 return false;
    +00137         }
    +00138         EMode.push_back(ExtMode(modechar,type,requires_oper,params_on,params_off));
    +00139         return true;
    +00140 }
     

    @@ -241,20 +239,20 @@ Referenced by Server::AddEx

    -Definition at line 71 of file modules.cpp. +Definition at line 70 of file modules.cpp.

    -References EMode. +References EMode.

    -Referenced by DoAddExtendedMode().

    00072 {
    -00073         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00074         {
    -00075                 if ((i->modechar == modechar) && (i->type == type))
    -00076                 {
    -00077                         return true;
    -00078                 }
    -00079         }
    -00080         return false;
    -00081 }
    +Referenced by DoAddExtendedMode().
    00071 {
    +00072         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00073         {
    +00074                 if ((i->modechar == modechar) && (i->type == type))
    +00075                 {
    +00076                         return true;
    +00077                 }
    +00078         }
    +00079         return false;
    +00080 }
     

    @@ -296,18 +294,18 @@ Referenced by DoAddExtended

    -Definition at line 121 of file modules.cpp. +Definition at line 120 of file modules.cpp.

    -References EMode.

    00122 {
    -00123         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00124         {
    -00125                 if ((i->modechar == modechar) && (i->type == type))
    -00126                 {
    -00127                         return i->params_when_off;
    -00128                 }
    -00129         }
    -00130         return 0;
    -00131 }
    +References EMode.
    00121 {
    +00122         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00123         {
    +00124                 if ((i->modechar == modechar) && (i->type == type))
    +00125                 {
    +00126                         return i->params_when_off;
    +00127                 }
    +00128         }
    +00129         return 0;
    +00130 }
     

    @@ -349,18 +347,18 @@ References EMode.

    -Definition at line 108 of file modules.cpp. +Definition at line 107 of file modules.cpp.

    -References EMode.

    00109 {
    -00110         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00111         {
    -00112                 if ((i->modechar == modechar) && (i->type == type))
    -00113                 {
    -00114                         return i->params_when_on;
    -00115                 }
    -00116         }
    -00117         return 0;
    -00118 }
    +References EMode.
    00108 {
    +00109         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00110         {
    +00111                 if ((i->modechar == modechar) && (i->type == type))
    +00112                 {
    +00113                         return i->params_when_on;
    +00114                 }
    +00115         }
    +00116         return 0;
    +00117 }
     

    @@ -402,18 +400,18 @@ References EMode.

    -Definition at line 95 of file modules.cpp. +Definition at line 94 of file modules.cpp.

    -References EMode.

    00096 {
    -00097         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00098         {
    -00099                 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
    -00100                 {
    -00101                         return true;
    -00102                 }
    -00103         }
    -00104         return false;
    -00105 }
    +References EMode.
    00095 {
    +00096         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00097         {
    +00098                 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
    +00099                 {
    +00100                         return true;
    +00101                 }
    +00102         }
    +00103         return false;
    +00104 }
     

    @@ -455,18 +453,18 @@ References EMode.

    -Definition at line 83 of file modules.cpp. +Definition at line 82 of file modules.cpp.

    -References EMode.

    00084 {
    -00085         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00086         {
    -00087                 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
    -00088                 {
    -00089                         return true;
    -00090                 }
    -00091         }
    -00092         return false;
    -00093 }
    +References EMode.
    00083 {
    +00084         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00085         {
    +00086                 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
    +00087                 {
    +00088                         return true;
    +00089                 }
    +00090         }
    +00091         return false;
    +00092 }
     

    @@ -499,21 +497,21 @@ References EMode.

    -Definition at line 144 of file modules.cpp. +Definition at line 143 of file modules.cpp.

    -References EMode, and MT_CHANNEL. +References EMode, and MT_CHANNEL.

    -Referenced by Server::AddExtendedListMode().

    00145 {
    -00146         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00147         {
    -00148                 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
    -00149                 {
    -00150                         i->list = true;
    -00151                         return;
    -00152                 }
    -00153         }
    -00154         return;
    -00155 }
    +Referenced by Server::AddExtendedListMode().
    00144 {
    +00145         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00146         {
    +00147                 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
    +00148                 {
    +00149                         i->list = true;
    +00150                         return;
    +00151                 }
    +00152         }
    +00153         return;
    +00154 }
     

    @@ -577,7 +575,7 @@ Referenced by Server::AddEx - +
    user_hash clientlist user_hash clientlist
    @@ -591,7 +589,9 @@ Referenced by
    Server::AddEx

    - + +

    +Referenced by AddClient(), kill_link(), kill_link_silent(), and ReHashNick().

    @@ -600,7 +600,7 @@ Referenced by Server::AddEx - +
    command_table cmdlist command_table cmdlist
    @@ -662,9 +662,9 @@ Referenced by
    Server::AddEx

    -Definition at line 68 of file modules.cpp. +Definition at line 67 of file modules.cpp.

    -Referenced by DoAddExtendedMode(), ModeDefined(), ModeDefinedOff(), ModeDefinedOn(), ModeDefinedOper(), ModeIsListMode(), and ModeMakeList(). +Referenced by DoAddExtendedMode(), ModeDefined(), ModeDefinedOff(), ModeDefinedOn(), ModeDefinedOper(), ModeIsListMode(), and ModeMakeList().

    @@ -696,7 +696,7 @@ Referenced by DoAddExtended - +
    userrec* fd_ref_table[65536] userrec* fd_ref_table[65536]
    @@ -719,7 +719,7 @@ Referenced by
    DoAddExtended - +
    int MODCOUNT = -1 int MODCOUNT = -1
    @@ -735,7 +735,7 @@ Referenced by
    DoAddExtended

    -Definition at line 935 of file modules.cpp. +Definition at line 934 of file modules.cpp.

    @@ -744,7 +744,7 @@ Definition at line 935 - +
    std::vector<InspSocket*> module_sockets std::vector<InspSocket*> module_sockets
    @@ -760,7 +760,7 @@ Definition at line 935

    -Referenced by Server::AddSocket(), and Server::DelSocket(). +Referenced by Server::AddSocket(), and Server::DelSocket().

    @@ -782,29 +782,6 @@ Referenced by Server::AddSo -

    - - - -

    - - - - -
    - - - - -
    SocketEngine* SE
    -
    - - - - @@ -815,7 +792,7 @@ Referenced by Server::AddSo @@ -855,7 +832,7 @@ Referenced by Server::AddSo
    -   - -

    - +
    InspIRCd* ServerInstance InspIRCd* ServerInstance
    -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/modules_8cpp__incl.map b/docs/module-doc/modules_8cpp__incl.map index 056ed18df..957fa469e 100644 --- a/docs/module-doc/modules_8cpp__incl.map +++ b/docs/module-doc/modules_8cpp__incl.map @@ -1,15 +1,15 @@ base referer -rect $inspircd_8h-source.html 610,799 690,826 -rect $inspircd__io_8h-source.html 742,716 838,743 -rect $globals_8h-source.html 902,970 976,996 -rect $users_8h-source.html 1039,716 1103,743 -rect $socket_8h-source.html 754,970 826,996 -rect $ctables_8h-source.html 468,1426 543,1452 -rect $modules_8h-source.html 312,1223 395,1250 -rect $message_8h-source.html 896,716 982,743 -rect $mode_8h-source.html 906,412 972,439 -rect $xline_8h-source.html 908,362 970,388 -rect $commands_8h-source.html 890,311 988,338 -rect $hashcomp_8h-source.html 307,1679 400,1706 -rect $socketengine_8h-source.html 450,970 562,996 -rect $typedefs_8h-source.html 163,1274 248,1300 +rect $inspircd_8h-source.html 305,716 385,743 +rect $inspircd__io_8h-source.html 452,666 548,692 +rect $globals_8h-source.html 627,666 701,692 +rect $users_8h-source.html 772,818 836,844 +rect $hashcomp_8h-source.html 896,1426 989,1452 +rect $modules_8h-source.html 623,1375 705,1402 +rect $ctables_8h-source.html 767,1578 841,1604 +rect $socket_8h-source.html 768,1223 840,1250 +rect $mode_8h-source.html 631,1020 697,1047 +rect $socketengine_8h-source.html 444,412 556,439 +rect $message_8h-source.html 621,615 707,642 +rect $xline_8h-source.html 633,362 695,388 +rect $commands_8h-source.html 615,919 713,946 +rect $typedefs_8h-source.html 163,1375 248,1402 diff --git a/docs/module-doc/modules_8cpp__incl.md5 b/docs/module-doc/modules_8cpp__incl.md5 index 10e2c307c..d0f388278 100644 --- a/docs/module-doc/modules_8cpp__incl.md5 +++ b/docs/module-doc/modules_8cpp__incl.md5 @@ -1 +1 @@ -2384cd0922e32b841176cc7e795d3e18 \ No newline at end of file +4e8aa95ae7fcdb9cbd30aed0c54c5b3b \ No newline at end of file diff --git a/docs/module-doc/modules_8h-source.html b/docs/module-doc/modules_8h-source.html index a156711a2..554028446 100644 --- a/docs/module-doc/modules_8h-source.html +++ b/docs/module-doc/modules_8h-source.html @@ -63,475 +63,493 @@ 00062 #include <deque> 00063 #include <sstream> 00064 -00065 class Server; -00066 -00069 typedef std::deque<std::string> file_cache; -00070 typedef file_cache string_list; -00071 -00074 typedef std::deque<userrec*> chanuserlist; -00075 +00065 class Server; +00066 class ServerConfig; +00067 +00070 typedef std::deque<std::string> file_cache; +00071 typedef file_cache string_list; +00072 +00075 typedef std::deque<userrec*> chanuserlist; 00076 -00077 // This #define allows us to call a method in all -00078 // loaded modules in a readable simple way, e.g.: -00079 // 'FOREACH_MOD OnConnect(user);' -00080 -00081 #define FOREACH_MOD for (int _i = 0; _i <= MODCOUNT; _i++) modules[_i]-> -00082 -00083 // This define is similar to the one above but returns a result in MOD_RESULT. -00084 // The first module to return a nonzero result is the value to be accepted, -00085 // and any modules after are ignored. -00086 -00087 // ********************************************************************************************* -00088 -00089 #define FOREACH_RESULT(x) { MOD_RESULT = 0; \ -00090 for (int _i = 0; _i <= MODCOUNT; _i++) { \ -00091 int res = modules[_i]->x ; \ -00092 if (res != 0) { \ -00093 MOD_RESULT = res; \ -00094 break; \ -00095 } \ -00096 } \ -00097 } -00098 -00099 // ********************************************************************************************* -00100 -00101 #define FD_MAGIC_NUMBER -42 -00102 -00103 extern void createcommand(char* cmd, handlerfunc f, char flags, int minparams, char* source); -00104 extern void server_mode(char **parameters, int pcnt, userrec *user); +00077 +00078 // This #define allows us to call a method in all +00079 // loaded modules in a readable simple way, e.g.: +00080 // 'FOREACH_MOD OnConnect(user);' +00081 +00082 #define FOREACH_MOD for (int _i = 0; _i <= MODCOUNT; _i++) modules[_i]-> +00083 +00084 // This define is similar to the one above but returns a result in MOD_RESULT. +00085 // The first module to return a nonzero result is the value to be accepted, +00086 // and any modules after are ignored. +00087 +00088 // ********************************************************************************************* +00089 +00090 #define FOREACH_RESULT(x) { MOD_RESULT = 0; \ +00091 for (int _i = 0; _i <= MODCOUNT; _i++) { \ +00092 int res = modules[_i]->x ; \ +00093 if (res != 0) { \ +00094 MOD_RESULT = res; \ +00095 break; \ +00096 } \ +00097 } \ +00098 } +00099 +00100 // ********************************************************************************************* +00101 +00102 #define FD_MAGIC_NUMBER -42 +00103 +00104 // useful macros 00105 -00106 // class Version holds the version information of a Module, returned -00107 // by Module::GetVersion (thanks RD) -00108 -00113 class Version : public classbase -00114 { -00115 public: -00116 const int Major, Minor, Revision, Build, Flags; -00117 Version(int major, int minor, int revision, int build, int flags); -00118 }; -00119 -00125 class Admin : public classbase -00126 { -00127 public: -00128 const std::string Name, Email, Nick; -00129 Admin(std::string name, std::string email, std::string nick); -00130 }; -00131 -00132 -00133 // Forward-delacare module for ModuleMessage etc -00134 class Module; -00135 -00136 // Thanks to Rob (from anope) for the idea of this message passing API -00137 // (its been done before, but this seemed a very neat and tidy way... -00138 -00143 class ModuleMessage : public classbase +00106 #define IS_LOCAL(x) (x->fd > -1) +00107 #define IS_REMOTE(x) (x->fd < 0) +00108 #define IS_MODULE_CREATED(x) (x->fd == FD_MAGIC_NUMBER) +00109 +00110 // flags for use with WriteMode +00111 +00112 #define WM_AND 1 +00113 #define WM_OR 2 +00114 +00115 // flags for use with OnUserPreMessage and OnUserPreNotice +00116 +00117 #define TYPE_USER 1 +00118 #define TYPE_CHANNEL 2 +00119 #define TYPE_SERVER 3 +00120 +00121 /*extern void createcommand(char* cmd, handlerfunc f, char flags, int minparams, char* source); +00122 extern void server_mode(char **parameters, int pcnt, userrec *user);*/ +00123 +00124 // class Version holds the version information of a Module, returned +00125 // by Module::GetVersion (thanks RD) +00126 +00131 class Version : public classbase +00132 { +00133 public: +00134 const int Major, Minor, Revision, Build, Flags; +00135 Version(int major, int minor, int revision, int build, int flags); +00136 }; +00137 +00143 class Admin : public classbase 00144 { 00145 public: -00148 virtual char* Send() = 0; -00149 virtual ~ModuleMessage() {}; -00150 }; -00151 -00157 class Request : public ModuleMessage -00158 { -00159 protected: -00162 char* data; -00166 Module* source; -00169 Module* dest; -00170 public: -00173 Request(char* anydata, Module* src, Module* dst); -00176 char* GetData(); -00179 Module* GetSource(); -00182 Module* GetDest(); -00188 char* Send(); -00189 }; -00190 -00191 -00197 class Event : public ModuleMessage -00198 { -00199 protected: -00202 char* data; -00206 Module* source; -00211 std::string id; -00212 public: -00215 Event(char* anydata, Module* src, std::string eventid); -00218 char* GetData(); -00221 Module* GetSource(); -00225 std::string GetEventID(); -00230 char* Send(); -00231 }; -00232 -00236 class ExtMode : public classbase -00237 { -00238 public: -00239 char modechar; -00240 int type; -00241 bool needsoper; -00242 int params_when_on; -00243 int params_when_off; -00244 bool list; -00245 ExtMode(char mc, int ty, bool oper, int p_on, int p_off) : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { }; -00246 }; -00247 -00248 -00254 class Module : public classbase +00146 const std::string Name, Email, Nick; +00147 Admin(std::string name, std::string email, std::string nick); +00148 }; +00149 +00150 +00151 // Forward-delacare module for ModuleMessage etc +00152 class Module; +00153 +00154 // Thanks to Rob (from anope) for the idea of this message passing API +00155 // (its been done before, but this seemed a very neat and tidy way... +00156 +00161 class ModuleMessage : public classbase +00162 { +00163 public: +00166 virtual char* Send() = 0; +00167 virtual ~ModuleMessage() {}; +00168 }; +00169 +00175 class Request : public ModuleMessage +00176 { +00177 protected: +00180 char* data; +00184 Module* source; +00187 Module* dest; +00188 public: +00191 Request(char* anydata, Module* src, Module* dst); +00194 char* GetData(); +00197 Module* GetSource(); +00200 Module* GetDest(); +00206 char* Send(); +00207 }; +00208 +00209 +00215 class Event : public ModuleMessage +00216 { +00217 protected: +00220 char* data; +00224 Module* source; +00229 std::string id; +00230 public: +00233 Event(char* anydata, Module* src, std::string eventid); +00236 char* GetData(); +00239 Module* GetSource(); +00243 std::string GetEventID(); +00248 char* Send(); +00249 }; +00250 +00254 class ExtMode : public classbase 00255 { 00256 public: -00257 -00262 Module(Server* Me); -00263 -00267 virtual ~Module(); -00268 -00273 virtual Version GetVersion(); -00274 -00279 virtual void OnUserConnect(userrec* user); -00280 -00288 virtual void OnUserQuit(userrec* user, std::string message); -00289 -00296 virtual void OnUserDisconnect(userrec* user); -00297 -00304 virtual void OnUserJoin(userrec* user, chanrec* channel); -00305 -00312 virtual void OnUserPart(userrec* user, chanrec* channel); -00313 -00321 virtual void OnRehash(std::string parameter); -00322 -00334 virtual void OnServerRaw(std::string &raw, bool inbound, userrec* user); -00335 -00351 virtual int OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list &params); -00352 -00369 virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname); +00257 char modechar; +00258 int type; +00259 bool needsoper; +00260 int params_when_on; +00261 int params_when_off; +00262 bool list; +00263 ExtMode(char mc, int ty, bool oper, int p_on, int p_off) : modechar(mc), type(ty), needsoper(oper), params_when_on(p_on), params_when_off(p_off) { }; +00264 }; +00265 +00266 +00272 class Module : public classbase +00273 { +00274 public: +00275 +00280 Module(Server* Me); +00281 +00285 virtual ~Module(); +00286 +00291 virtual Version GetVersion(); +00292 +00297 virtual void OnUserConnect(userrec* user); +00298 +00306 virtual void OnUserQuit(userrec* user, std::string message); +00307 +00314 virtual void OnUserDisconnect(userrec* user); +00315 +00322 virtual void OnUserJoin(userrec* user, chanrec* channel); +00323 +00330 virtual void OnUserPart(userrec* user, chanrec* channel); +00331 +00339 virtual void OnRehash(std::string parameter); +00340 +00352 virtual void OnServerRaw(std::string &raw, bool inbound, userrec* user); +00353 +00369 virtual int OnExtendedMode(userrec* user, void* target, char modechar, int type, bool mode_on, string_list &params); 00370 -00381 virtual int OnUserPreKick(userrec* source, userrec* user, chanrec* chan, std::string reason); -00382 -00391 virtual void OnUserKick(userrec* source, userrec* user, chanrec* chan, std::string reason); -00392 -00399 virtual void OnOper(userrec* user, std::string opertype); -00400 -00411 virtual void OnInfo(userrec* user); -00412 -00419 virtual void OnWhois(userrec* source, userrec* dest); -00420 -00430 virtual int OnUserPreInvite(userrec* source,userrec* dest,chanrec* channel); -00431 -00439 virtual void OnUserInvite(userrec* source,userrec* dest,chanrec* channel); -00440 -00454 virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text); -00455 -00472 virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text); -00473 -00484 virtual int OnUserPreNick(userrec* user, std::string newnick); -00485 -00494 virtual void OnUserMessage(userrec* user, void* dest, int target_type, std::string text); -00495 -00504 virtual void OnUserNotice(userrec* user, void* dest, int target_type, std::string text); -00505 -00515 virtual void OnMode(userrec* user, void* dest, int target_type, std::string text); -00516 -00525 virtual void OnGetServerDescription(std::string servername,std::string &description); -00526 -00539 virtual void OnSyncUser(userrec* user, Module* proto, void* opaque); -00540 -00556 virtual void OnSyncChannel(chanrec* chan, Module* proto, void* opaque); -00557 -00558 /* Allows modules to syncronize metadata related to channels over the network during a netburst. -00559 * Whenever the linking module wants to send out data, but doesnt know what the data -00560 * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then -00561 * this method is called.You should use the ProtoSendMetaData function after you've -00562 * correctly decided how the data should be represented, to send the metadata on its way if it belongs -00563 * to your module. For a good example of how to use this method, see src/modules/m_swhois.cpp. -00564 * @param chan The channel whos metadata is being syncronized -00565 * @param proto A pointer to the module handling network protocol -00566 * @param opaque An opaque pointer set by the protocol module, should not be modified! -00567 * @param extname The extensions name which is being searched for -00568 */ -00569 virtual void OnSyncChannelMetaData(chanrec* chan, Module* proto,void* opaque, std::string extname); -00570 -00571 /* Allows modules to syncronize metadata related to users over the network during a netburst. -00572 * Whenever the linking module wants to send out data, but doesnt know what the data -00573 * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then -00574 * this method is called. You should use the ProtoSendMetaData function after you've -00575 * correctly decided how the data should be represented, to send the metadata on its way if -00576 * if it belongs to your module. -00577 * @param user The user whos metadata is being syncronized -00578 * @param proto A pointer to the module handling network protocol -00579 * @param opaque An opaque pointer set by the protocol module, should not be modified! -00580 * @param extname The extensions name which is being searched for -00581 */ -00582 virtual void OnSyncUserMetaData(userrec* user, Module* proto,void* opaque, std::string extname); -00583 -00591 virtual void OnDecodeMetaData(int target_type, void* target, std::string extname, std::string extdata); -00592 -00606 virtual void ProtoSendMode(void* opaque, int target_type, void* target, std::string modeline); -00607 -00622 virtual void ProtoSendMetaData(void* opaque, int target_type, void* target, std::string extname, std::string extdata); -00623 -00628 virtual void OnWallops(userrec* user, std::string text); -00629 -00635 virtual void OnChangeHost(userrec* user, std::string newhost); -00636 -00642 virtual void OnChangeName(userrec* user, std::string gecos); -00643 -00651 virtual void OnAddGLine(long duration, userrec* source, std::string reason, std::string hostmask); -00652 -00660 virtual void OnAddZLine(long duration, userrec* source, std::string reason, std::string ipmask); +00387 virtual int OnUserPreJoin(userrec* user, chanrec* chan, const char* cname); +00388 +00399 virtual int OnUserPreKick(userrec* source, userrec* user, chanrec* chan, std::string reason); +00400 +00409 virtual void OnUserKick(userrec* source, userrec* user, chanrec* chan, std::string reason); +00410 +00417 virtual void OnOper(userrec* user, std::string opertype); +00418 +00429 virtual void OnInfo(userrec* user); +00430 +00437 virtual void OnWhois(userrec* source, userrec* dest); +00438 +00448 virtual int OnUserPreInvite(userrec* source,userrec* dest,chanrec* channel); +00449 +00457 virtual void OnUserInvite(userrec* source,userrec* dest,chanrec* channel); +00458 +00472 virtual int OnUserPreMessage(userrec* user,void* dest,int target_type, std::string &text); +00473 +00490 virtual int OnUserPreNotice(userrec* user,void* dest,int target_type, std::string &text); +00491 +00502 virtual int OnUserPreNick(userrec* user, std::string newnick); +00503 +00512 virtual void OnUserMessage(userrec* user, void* dest, int target_type, std::string text); +00513 +00522 virtual void OnUserNotice(userrec* user, void* dest, int target_type, std::string text); +00523 +00533 virtual void OnMode(userrec* user, void* dest, int target_type, std::string text); +00534 +00543 virtual void OnGetServerDescription(std::string servername,std::string &description); +00544 +00557 virtual void OnSyncUser(userrec* user, Module* proto, void* opaque); +00558 +00574 virtual void OnSyncChannel(chanrec* chan, Module* proto, void* opaque); +00575 +00576 /* Allows modules to syncronize metadata related to channels over the network during a netburst. +00577 * Whenever the linking module wants to send out data, but doesnt know what the data +00578 * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then +00579 * this method is called.You should use the ProtoSendMetaData function after you've +00580 * correctly decided how the data should be represented, to send the metadata on its way if it belongs +00581 * to your module. For a good example of how to use this method, see src/modules/m_swhois.cpp. +00582 * @param chan The channel whos metadata is being syncronized +00583 * @param proto A pointer to the module handling network protocol +00584 * @param opaque An opaque pointer set by the protocol module, should not be modified! +00585 * @param extname The extensions name which is being searched for +00586 */ +00587 virtual void OnSyncChannelMetaData(chanrec* chan, Module* proto,void* opaque, std::string extname); +00588 +00589 /* Allows modules to syncronize metadata related to users over the network during a netburst. +00590 * Whenever the linking module wants to send out data, but doesnt know what the data +00591 * represents (e.g. it is Extensible metadata, added to a userrec or chanrec by a module) then +00592 * this method is called. You should use the ProtoSendMetaData function after you've +00593 * correctly decided how the data should be represented, to send the metadata on its way if +00594 * if it belongs to your module. +00595 * @param user The user whos metadata is being syncronized +00596 * @param proto A pointer to the module handling network protocol +00597 * @param opaque An opaque pointer set by the protocol module, should not be modified! +00598 * @param extname The extensions name which is being searched for +00599 */ +00600 virtual void OnSyncUserMetaData(userrec* user, Module* proto,void* opaque, std::string extname); +00601 +00609 virtual void OnDecodeMetaData(int target_type, void* target, std::string extname, std::string extdata); +00610 +00624 virtual void ProtoSendMode(void* opaque, int target_type, void* target, std::string modeline); +00625 +00640 virtual void ProtoSendMetaData(void* opaque, int target_type, void* target, std::string extname, std::string extdata); +00641 +00646 virtual void OnWallops(userrec* user, std::string text); +00647 +00653 virtual void OnChangeHost(userrec* user, std::string newhost); +00654 +00660 virtual void OnChangeName(userrec* user, std::string gecos); 00661 -00669 virtual void OnAddKLine(long duration, userrec* source, std::string reason, std::string hostmask); +00669 virtual void OnAddGLine(long duration, userrec* source, std::string reason, std::string hostmask); 00670 -00678 virtual void OnAddQLine(long duration, userrec* source, std::string reason, std::string nickmask); +00678 virtual void OnAddZLine(long duration, userrec* source, std::string reason, std::string ipmask); 00679 -00687 virtual void OnAddELine(long duration, userrec* source, std::string reason, std::string hostmask); +00687 virtual void OnAddKLine(long duration, userrec* source, std::string reason, std::string hostmask); 00688 -00694 virtual void OnDelGLine(userrec* source, std::string hostmask); -00695 -00701 virtual void OnDelZLine(userrec* source, std::string ipmask); -00702 -00708 virtual void OnDelKLine(userrec* source, std::string hostmask); -00709 -00715 virtual void OnDelQLine(userrec* source, std::string nickmask); -00716 -00722 virtual void OnDelELine(userrec* source, std::string hostmask); -00723 -00733 virtual void OnCleanup(int target_type, void* item); +00696 virtual void OnAddQLine(long duration, userrec* source, std::string reason, std::string nickmask); +00697 +00705 virtual void OnAddELine(long duration, userrec* source, std::string reason, std::string hostmask); +00706 +00712 virtual void OnDelGLine(userrec* source, std::string hostmask); +00713 +00719 virtual void OnDelZLine(userrec* source, std::string ipmask); +00720 +00726 virtual void OnDelKLine(userrec* source, std::string hostmask); +00727 +00733 virtual void OnDelQLine(userrec* source, std::string nickmask); 00734 -00744 virtual void OnUserPostNick(userrec* user, std::string oldnick); -00745 -00771 virtual int OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type); -00772 -00777 virtual void On005Numeric(std::string &output); -00778 -00792 virtual int OnKill(userrec* source, userrec* dest, std::string reason); -00793 -00799 virtual void OnRemoteKill(userrec* source, userrec* dest, std::string reason); -00800 -00813 virtual void OnLoadModule(Module* mod,std::string name); -00814 -00827 virtual void OnUnloadModule(Module* mod,std::string name); -00828 -00835 virtual void OnBackgroundTimer(time_t curtime); -00836 -00847 virtual void OnSendList(userrec* user, chanrec* channel, char mode); -00848 -00864 virtual int OnPreCommand(std::string command, char **parameters, int pcnt, userrec *user); -00865 -00876 virtual bool OnCheckReady(userrec* user); -00877 -00886 virtual void OnUserRegister(userrec* user); -00887 -00900 virtual int OnRawMode(userrec* user, chanrec* chan, char mode, std::string param, bool adding, int pcnt); -00901 -00910 virtual int OnCheckInvite(userrec* user, chanrec* chan); -00911 -00921 virtual int OnCheckKey(userrec* user, chanrec* chan, std::string keygiven); -00922 -00931 virtual int OnCheckLimit(userrec* user, chanrec* chan); -00932 -00941 virtual int OnCheckBan(userrec* user, chanrec* chan); -00942 -00947 virtual void OnStats(char symbol); -00948 -00955 virtual int OnChangeLocalUserHost(userrec* user, std::string newhost); -00956 -00963 virtual int OnChangeLocalUserGECOS(userrec* user, std::string newhost); -00964 -00972 virtual int OnLocalTopicChange(userrec* user, chanrec* chan, std::string topic); -00973 -00980 virtual void OnPostLocalTopicChange(userrec* user, chanrec* chan, std::string topic); -00981 -00988 virtual void OnEvent(Event* event); -00989 -00997 virtual char* OnRequest(Request* request); -00998 -01008 virtual int OnOperCompare(std::string password, std::string input); -01009 -01016 virtual void OnGlobalOper(userrec* user); -01017 -01023 virtual void OnGlobalConnect(userrec* user); -01024 -01032 virtual int OnAddBan(userrec* source, chanrec* channel,std::string banmask); -01033 -01041 virtual int OnDelBan(userrec* source, chanrec* channel,std::string banmask); +00740 virtual void OnDelELine(userrec* source, std::string hostmask); +00741 +00751 virtual void OnCleanup(int target_type, void* item); +00752 +00762 virtual void OnUserPostNick(userrec* user, std::string oldnick); +00763 +00789 virtual int OnAccessCheck(userrec* source,userrec* dest,chanrec* channel,int access_type); +00790 +00795 virtual void On005Numeric(std::string &output); +00796 +00810 virtual int OnKill(userrec* source, userrec* dest, std::string reason); +00811 +00817 virtual void OnRemoteKill(userrec* source, userrec* dest, std::string reason); +00818 +00831 virtual void OnLoadModule(Module* mod,std::string name); +00832 +00845 virtual void OnUnloadModule(Module* mod,std::string name); +00846 +00853 virtual void OnBackgroundTimer(time_t curtime); +00854 +00865 virtual void OnSendList(userrec* user, chanrec* channel, char mode); +00866 +00882 virtual int OnPreCommand(std::string command, char **parameters, int pcnt, userrec *user); +00883 +00894 virtual bool OnCheckReady(userrec* user); +00895 +00904 virtual void OnUserRegister(userrec* user); +00905 +00918 virtual int OnRawMode(userrec* user, chanrec* chan, char mode, std::string param, bool adding, int pcnt); +00919 +00928 virtual int OnCheckInvite(userrec* user, chanrec* chan); +00929 +00939 virtual int OnCheckKey(userrec* user, chanrec* chan, std::string keygiven); +00940 +00949 virtual int OnCheckLimit(userrec* user, chanrec* chan); +00950 +00959 virtual int OnCheckBan(userrec* user, chanrec* chan); +00960 +00965 virtual void OnStats(char symbol); +00966 +00973 virtual int OnChangeLocalUserHost(userrec* user, std::string newhost); +00974 +00981 virtual int OnChangeLocalUserGECOS(userrec* user, std::string newhost); +00982 +00990 virtual int OnLocalTopicChange(userrec* user, chanrec* chan, std::string topic); +00991 +00998 virtual void OnPostLocalTopicChange(userrec* user, chanrec* chan, std::string topic); +00999 +01006 virtual void OnEvent(Event* event); +01007 +01015 virtual char* OnRequest(Request* request); +01016 +01026 virtual int OnOperCompare(std::string password, std::string input); +01027 +01034 virtual void OnGlobalOper(userrec* user); +01035 +01041 virtual void OnGlobalConnect(userrec* user); 01042 -01052 virtual void OnRawSocketAccept(int fd, std::string ip, int localport); -01053 -01064 virtual int OnRawSocketWrite(int fd, char* buffer, int count); -01065 -01070 virtual void OnRawSocketClose(int fd); +01050 virtual int OnAddBan(userrec* source, chanrec* channel,std::string banmask); +01051 +01059 virtual int OnDelBan(userrec* source, chanrec* channel,std::string banmask); +01060 +01070 virtual void OnRawSocketAccept(int fd, std::string ip, int localport); 01071 -01087 virtual int OnRawSocketRead(int fd, char* buffer, unsigned int count, int &readresult); -01088 }; +01082 virtual int OnRawSocketWrite(int fd, char* buffer, int count); +01083 +01088 virtual void OnRawSocketClose(int fd); 01089 -01090 -01096 class Server : public classbase -01097 { -01098 public: -01102 Server(); -01106 virtual ~Server(); -01111 ServerConfig* GetConfig(); -01115 virtual void SendOpers(std::string s); -01118 std::string GetVersion(); -01123 virtual void Log(int level, std::string s); -01128 virtual void Send(int Socket, std::string s); -01133 virtual void SendServ(int Socket, std::string s); -01137 virtual void SendChannelServerNotice(std::string ServName, chanrec* Channel, std::string text); -01142 virtual void SendFrom(int Socket, userrec* User, std::string s); -01157 virtual void SendTo(userrec* Source, userrec* Dest, std::string s); -01164 virtual void SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender); -01169 virtual bool CommonChannels(userrec* u1, userrec* u2); -01177 virtual void SendCommon(userrec* User, std::string text,bool IncludeSender); -01182 virtual void SendWallops(userrec* User, std::string text); -01183 -01187 virtual bool IsNick(std::string nick); -01191 virtual int CountUsers(chanrec* c); -01195 virtual userrec* FindNick(std::string nick); -01199 virtual userrec* FindDescriptor(int socket); -01203 virtual chanrec* FindChannel(std::string channel); -01208 virtual std::string ChanMode(userrec* User, chanrec* Chan); -01212 virtual bool IsOnChannel(userrec* User, chanrec* Chan); -01215 virtual std::string GetServerName(); -01218 virtual std::string GetNetworkName(); -01221 virtual std::string GetServerDescription(); -01227 virtual Admin GetAdmin(); -01246 virtual bool AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off); -01247 -01269 virtual bool AddExtendedListMode(char modechar); -01270 -01288 virtual void AddCommand(char* cmd, handlerfunc f, char flags, int minparams, char* source); -01289 -01311 virtual void SendMode(char **parameters, int pcnt, userrec *user); -01312 -01325 virtual void SendToModeMask(std::string modes, int flags, std::string text); -01326 -01332 virtual chanrec* JoinUserToChannel(userrec* user, std::string cname, std::string key); -01333 -01339 virtual chanrec* PartUserFromChannel(userrec* user, std::string cname, std::string reason); -01340 -01346 virtual void ChangeUserNick(userrec* user, std::string nickname); -01347 -01358 virtual void QuitUser(userrec* user, std::string reason); -01359 -01364 virtual bool MatchText(std::string sliteral, std::string spattern); +01105 virtual int OnRawSocketRead(int fd, char* buffer, unsigned int count, int &readresult); +01106 }; +01107 +01108 +01114 class Server : public classbase +01115 { +01116 public: +01120 Server(); +01124 virtual ~Server(); +01129 ServerConfig* GetConfig(); +01133 virtual void SendOpers(std::string s); +01136 std::string GetVersion(); +01141 virtual void Log(int level, std::string s); +01146 virtual void Send(int Socket, std::string s); +01151 virtual void SendServ(int Socket, std::string s); +01155 virtual void SendChannelServerNotice(std::string ServName, chanrec* Channel, std::string text); +01160 virtual void SendFrom(int Socket, userrec* User, std::string s); +01175 virtual void SendTo(userrec* Source, userrec* Dest, std::string s); +01182 virtual void SendChannel(userrec* User, chanrec* Channel, std::string s,bool IncludeSender); +01187 virtual bool CommonChannels(userrec* u1, userrec* u2); +01195 virtual void SendCommon(userrec* User, std::string text,bool IncludeSender); +01200 virtual void SendWallops(userrec* User, std::string text); +01201 +01205 virtual bool IsNick(std::string nick); +01209 virtual int CountUsers(chanrec* c); +01213 virtual userrec* FindNick(std::string nick); +01217 virtual userrec* FindDescriptor(int socket); +01221 virtual chanrec* FindChannel(std::string channel); +01226 virtual std::string ChanMode(userrec* User, chanrec* Chan); +01230 virtual bool IsOnChannel(userrec* User, chanrec* Chan); +01233 virtual std::string GetServerName(); +01236 virtual std::string GetNetworkName(); +01239 virtual std::string GetServerDescription(); +01245 virtual Admin GetAdmin(); +01264 virtual bool AddExtendedMode(char modechar, int type, bool requires_oper, int params_when_on, int params_when_off); +01265 +01287 virtual bool AddExtendedListMode(char modechar); +01288 +01306 virtual void AddCommand(command_t *f); +01307 +01329 virtual void SendMode(char **parameters, int pcnt, userrec *user); +01330 +01343 virtual void SendToModeMask(std::string modes, int flags, std::string text); +01344 +01350 virtual chanrec* JoinUserToChannel(userrec* user, std::string cname, std::string key); +01351 +01357 virtual chanrec* PartUserFromChannel(userrec* user, std::string cname, std::string reason); +01358 +01364 virtual void ChangeUserNick(userrec* user, std::string nickname); 01365 -01377 virtual void CallCommandHandler(std::string commandname, char** parameters, int pcnt, userrec* user); -01378 -01379 virtual bool IsValidModuleCommand(std::string commandname, int pcnt, userrec* user); -01380 -01386 virtual void ChangeHost(userrec* user, std::string host); -01387 -01393 virtual void ChangeGECOS(userrec* user, std::string gecos); -01394 -01403 virtual bool IsUlined(std::string server); -01404 -01408 virtual chanuserlist GetUsers(chanrec* chan); -01409 -01416 virtual bool UserToPseudo(userrec* user,std::string message); -01417 -01424 virtual bool PseudoToUser(userrec* alive,userrec* zombie,std::string message); -01425 -01433 virtual void AddGLine(long duration, std::string source, std::string reason, std::string hostmask); -01434 -01442 virtual void AddQLine(long duration, std::string source, std::string reason, std::string nickname); +01376 virtual void QuitUser(userrec* user, std::string reason); +01377 +01382 virtual bool MatchText(std::string sliteral, std::string spattern); +01383 +01395 virtual void CallCommandHandler(std::string commandname, char** parameters, int pcnt, userrec* user); +01396 +01397 virtual bool IsValidModuleCommand(std::string commandname, int pcnt, userrec* user); +01398 +01404 virtual void ChangeHost(userrec* user, std::string host); +01405 +01411 virtual void ChangeGECOS(userrec* user, std::string gecos); +01412 +01421 virtual bool IsUlined(std::string server); +01422 +01426 virtual chanuserlist GetUsers(chanrec* chan); +01427 +01434 virtual bool UserToPseudo(userrec* user,std::string message); +01435 +01442 virtual bool PseudoToUser(userrec* alive,userrec* zombie,std::string message); 01443 -01451 virtual void AddZLine(long duration, std::string source, std::string reason, std::string ipaddr); +01451 virtual void AddGLine(long duration, std::string source, std::string reason, std::string hostmask); 01452 -01460 virtual void AddKLine(long duration, std::string source, std::string reason, std::string hostmask); +01460 virtual void AddQLine(long duration, std::string source, std::string reason, std::string nickname); 01461 -01469 virtual void AddELine(long duration, std::string source, std::string reason, std::string hostmask); +01469 virtual void AddZLine(long duration, std::string source, std::string reason, std::string ipaddr); 01470 -01473 virtual bool DelGLine(std::string hostmask); -01474 -01477 virtual bool DelQLine(std::string nickname); -01478 -01481 virtual bool DelZLine(std::string ipaddr); -01482 -01485 virtual bool DelKLine(std::string hostmask); -01486 -01489 virtual bool DelELine(std::string hostmask); -01490 -01496 virtual long CalcDuration(std::string duration); -01497 -01500 virtual bool IsValidMask(std::string mask); -01501 -01506 virtual Module* FindModule(std::string name); -01507 -01510 virtual void AddSocket(InspSocket* sock); -01511 -01514 virtual void DelSocket(InspSocket* sock); +01478 virtual void AddKLine(long duration, std::string source, std::string reason, std::string hostmask); +01479 +01487 virtual void AddELine(long duration, std::string source, std::string reason, std::string hostmask); +01488 +01491 virtual bool DelGLine(std::string hostmask); +01492 +01495 virtual bool DelQLine(std::string nickname); +01496 +01499 virtual bool DelZLine(std::string ipaddr); +01500 +01503 virtual bool DelKLine(std::string hostmask); +01504 +01507 virtual bool DelELine(std::string hostmask); +01508 +01514 virtual long CalcDuration(std::string duration); 01515 -01516 virtual void RehashServer(); -01517 }; -01518 +01518 virtual bool IsValidMask(std::string mask); 01519 -01520 #define CONF_NOT_A_NUMBER 0x000010 -01521 #define CONF_NOT_UNSIGNED 0x000080 -01522 #define CONF_VALUE_NOT_FOUND 0x000100 -01523 #define CONF_FILE_NOT_FOUND 0x000200 -01524 +01524 virtual Module* FindModule(std::string name); 01525 -01532 class ConfigReader : public classbase -01533 { -01534 protected: -01540 std::stringstream *cache; -01541 std::stringstream *errorlog; -01544 bool readerror; -01545 long error; -01546 -01547 public: -01552 ConfigReader(); // default constructor reads ircd.conf -01556 ConfigReader(std::string filename); // read a module-specific config -01560 ~ConfigReader(); -01565 std::string ReadValue(std::string tag, std::string name, int index); -01571 bool ReadFlag(std::string tag, std::string name, int index); -01580 long ReadInteger(std::string tag, std::string name, int index, bool needs_unsigned); -01585 long GetError(); -01592 int Enumerate(std::string tag); -01597 bool Verify(); -01604 void DumpErrors(bool bail,userrec* user); -01605 -01611 int EnumerateValues(std::string tag, int index); -01612 }; -01613 -01614 -01615 -01621 class FileReader : public classbase -01622 { -01623 file_cache fc; -01624 public: -01629 FileReader(); -01630 -01636 FileReader(std::string filename); -01637 -01641 ~FileReader(); -01642 -01648 void LoadFile(std::string filename); -01649 -01653 bool Exists(); -01654 -01659 std::string GetLine(int x); +01528 virtual void AddSocket(InspSocket* sock); +01529 +01532 virtual void DelSocket(InspSocket* sock); +01533 +01534 virtual void RehashServer(); +01535 }; +01536 +01537 +01538 #define CONF_NOT_A_NUMBER 0x000010 +01539 #define CONF_NOT_UNSIGNED 0x000080 +01540 #define CONF_VALUE_NOT_FOUND 0x000100 +01541 #define CONF_FILE_NOT_FOUND 0x000200 +01542 +01543 +01550 class ConfigReader : public classbase +01551 { +01552 protected: +01558 std::stringstream *cache; +01559 std::stringstream *errorlog; +01562 bool readerror; +01563 long error; +01564 +01565 public: +01570 ConfigReader(); // default constructor reads ircd.conf +01574 ConfigReader(std::string filename); // read a module-specific config +01578 ~ConfigReader(); +01583 std::string ReadValue(std::string tag, std::string name, int index); +01589 bool ReadFlag(std::string tag, std::string name, int index); +01598 long ReadInteger(std::string tag, std::string name, int index, bool needs_unsigned); +01603 long GetError(); +01610 int Enumerate(std::string tag); +01615 bool Verify(); +01622 void DumpErrors(bool bail,userrec* user); +01623 +01629 int EnumerateValues(std::string tag, int index); +01630 }; +01631 +01632 +01633 +01639 class FileReader : public classbase +01640 { +01641 file_cache fc; +01642 public: +01647 FileReader(); +01648 +01654 FileReader(std::string filename); +01655 +01659 ~FileReader(); 01660 -01666 int FileSize(); -01667 }; -01668 -01669 -01676 class ModuleFactory : public classbase -01677 { -01678 public: -01679 ModuleFactory() { } -01680 virtual ~ModuleFactory() { } -01685 virtual Module * CreateModule(Server* Me) = 0; -01686 }; +01666 void LoadFile(std::string filename); +01667 +01671 bool Exists(); +01672 +01677 std::string GetLine(int x); +01678 +01684 int FileSize(); +01685 }; +01686 01687 -01688 -01689 typedef DLLFactory<ModuleFactory> ircd_module; -01690 -01691 bool ModeDefined(char c, int i); -01692 bool ModeDefinedOper(char c, int i); -01693 int ModeDefinedOn(char c, int i); -01694 int ModeDefinedOff(char c, int i); -01695 void ModeMakeList(char modechar); -01696 bool ModeIsListMode(char modechar, int type); -01697 -01698 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +01694 class ModuleFactory : public classbase +01695 { +01696 public: +01697 ModuleFactory() { } +01698 virtual ~ModuleFactory() { } +01703 virtual Module * CreateModule(Server* Me) = 0; +01704 }; +01705 +01706 +01707 typedef DLLFactory<ModuleFactory> ircd_module; +01708 +01709 bool ModeDefined(char c, int i); +01710 bool ModeDefinedOper(char c, int i); +01711 int ModeDefinedOn(char c, int i); +01712 int ModeDefinedOff(char c, int i); +01713 void ModeMakeList(char modechar); +01714 bool ModeIsListMode(char modechar, int type); +01715 +01716 #endif +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/modules_8h.html b/docs/module-doc/modules_8h.html index 9ccdc3d84..032239f66 100644 --- a/docs/module-doc/modules_8h.html +++ b/docs/module-doc/modules_8h.html @@ -18,18 +18,18 @@

    Include dependency graph for modules.h:

    - - - - + + +

    This graph shows which files directly or indirectly include this file:

    - - - + + + +

    @@ -122,12 +122,28 @@ This graph shows which files directly or indirectly include this file:

    #define VF_COMMON   8 -#define FOREACH_MOD   for (int _i = 0; _i <= MODCOUNT; _i++) modules[_i]-> +#define FOREACH_MOD   for (int _i = 0; _i <= MODCOUNT; _i++) modules[_i]-> #define FOREACH_RESULT(x) #define FD_MAGIC_NUMBER   -42 +#define IS_LOCAL(x)   (x->fd > -1) + +#define IS_REMOTE(x)   (x->fd < 0) + +#define IS_MODULE_CREATED(x)   (x->fd == FD_MAGIC_NUMBER) + +#define WM_AND   1 + +#define WM_OR   2 + +#define TYPE_USER   1 + +#define TYPE_CHANNEL   2 + +#define TYPE_SERVER   3 + #define CONF_NOT_A_NUMBER   0x000010 #define CONF_NOT_UNSIGNED   0x000080 @@ -148,10 +164,6 @@ This graph shows which files directly or indirectly include this file:

    typedef DLLFactory< ModuleFactoryircd_module

    Functions

    -void createcommand (char *cmd, handlerfunc f, char flags, int minparams, char *source) - -void server_mode (char **parameters, int pcnt, userrec *user) - bool ModeDefined (char c, int i) bool ModeDefinedOper (char c, int i) @@ -444,7 +456,7 @@ Used with OnAccessCheck() method of modules.

    Definition at line 37 of file modules.h.

    -Referenced by kick_channel(), and Module::OnAccessCheck(). +Referenced by kick_channel(), and Module::OnAccessCheck().

    @@ -496,9 +508,9 @@ Referenced by kick_channel

    -Definition at line 1523 of file modules.h. +Definition at line 1541 of file modules.h.

    -Referenced by ConfigReader::ConfigReader(). +Referenced by ConfigReader::ConfigReader().

    @@ -523,9 +535,9 @@ Referenced by ConfigReader:

    -Definition at line 1520 of file modules.h. +Definition at line 1538 of file modules.h.

    -Referenced by ConfigReader::ReadInteger(). +Referenced by ConfigReader::ReadInteger().

    @@ -550,9 +562,9 @@ Referenced by ConfigReader:

    -Definition at line 1521 of file modules.h. +Definition at line 1539 of file modules.h.

    -Referenced by ConfigReader::ReadInteger(). +Referenced by ConfigReader::ReadInteger().

    @@ -577,9 +589,9 @@ Referenced by ConfigReader:

    -Definition at line 1522 of file modules.h. +Definition at line 1540 of file modules.h.

    -Referenced by ConfigReader::ReadFlag(), ConfigReader::ReadInteger(), and ConfigReader::ReadValue(). +Referenced by ConfigReader::ReadFlag(), ConfigReader::ReadInteger(), and ConfigReader::ReadValue().

    @@ -656,9 +668,9 @@ Definition at line 25 of

    -Definition at line 101 of file modules.h. +Definition at line 102 of file modules.h.

    -Referenced by Server::PseudoToUser(), and Server::UserToPseudo(). +Referenced by Server::PseudoToUser(), and Server::UserToPseudo().

    @@ -667,7 +679,7 @@ Referenced by Server::Pseud - +
    #define FOREACH_MOD   for (int _i = 0; _i <= MODCOUNT; _i++) modules[_i]-> #define FOREACH_MOD   for (int _i = 0; _i <= MODCOUNT; _i++) modules[_i]->
    @@ -683,9 +695,9 @@ Referenced by
    Server::Pseud

    -Definition at line 81 of file modules.h. +Definition at line 82 of file modules.h.

    -Referenced by del_channel(), ForceChan(), kick_channel(), and Event::Send(). +Referenced by del_channel(), ForceChan(), FullConnectUser(), kick_channel(), kill_link(), kill_link_silent(), and Event::Send().

    @@ -724,9 +736,99 @@ Referenced by del_channel( }

    -Definition at line 89 of file modules.h. +Definition at line 90 of file modules.h. +

    +Referenced by add_channel(), force_nickchange(), and kick_channel(). + + +

    + + + + +
    + + + + + + + + + +
    #define IS_LOCAL  )    (x->fd > -1)
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 106 of file modules.h.

    +

    + + + + +
    + + + + + + + + + +
    #define IS_MODULE_CREATED  )    (x->fd == FD_MAGIC_NUMBER)
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 108 of file modules.h.

    +

    + + + + +
    + + + + + + + + + +
    #define IS_REMOTE  )    (x->fd < 0)
    +
    + + + + +Definition at line 107 of file modules.h.
    +   + + +

    +

    -Referenced by add_channel(), and kick_channel().

    @@ -755,7 +857,7 @@ Used with OnExtendedMode() method of modules.

    Definition at line 31 of file modules.h.

    -Referenced by Server::AddExtendedListMode(), and ModeMakeList(). +Referenced by Server::AddExtendedListMode(), and ModeMakeList().

    @@ -782,7 +884,7 @@ Referenced by Server::AddEx

    Definition at line 32 of file modules.h.

    -Referenced by Server::AddExtendedMode(). +Referenced by Server::AddExtendedMode().

    @@ -809,7 +911,7 @@ Referenced by Server::AddEx

    Definition at line 33 of file modules.h.

    -Referenced by Server::AddExtendedMode(). +Referenced by Server::AddExtendedMode().

    @@ -862,6 +964,81 @@ Definition at line 27 of Definition at line 26 of file modules.h. +

    + + + + +
    + + + + +
    #define TYPE_CHANNEL   2
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 118 of file modules.h.

    +

    + + + + +
    + + + + +
    #define TYPE_SERVER   3
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 119 of file modules.h.

    +

    + + + + +
    + + + + +
    #define TYPE_USER   1
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 117 of file modules.h.

    @@ -988,17 +1165,16 @@ Definition at line 52 of

    Definition at line 53 of file modules.h.

    -Referenced by Module::GetVersion(). +Referenced by Module::GetVersion().

    -


    Typedef Documentation

    -

    +

    @@ -1012,20 +1188,18 @@ Referenced by Module::GetVe +Definition at line 112 of file modules.h.
    - +
    typedef std::deque<userrec*> chanuserlist #define WM_AND   1

    -Holds a list of users in a channel. -

    -Definition at line 74 of file modules.h.

    -

    +

    @@ -1039,20 +1213,19 @@ Definition at line 74 of +Definition at line 113 of file modules.h.
    - +
    typedef std::deque<std::string> file_cache #define WM_OR   2

    -Low level definition of a FileReader classes file cache area. -

    -Definition at line 65 of file modules.h.

    -

    +


    Typedef Documentation

    +

    @@ -1066,18 +1239,20 @@ Definition at line 65 of +Definition at line 75 of file modules.h.
    - +
    typedef DLLFactory<ModuleFactory> ircd_module typedef std::deque<userrec*> chanuserlist

    +Holds a list of users in a channel. +

    -Definition at line 1689 of file modules.h.

    -

    +

    @@ -1091,51 +1266,45 @@ Definition at line 1689 o +Definition at line 66 of file modules.h.
    - +
    typedef file_cache string_list typedef std::deque<std::string> file_cache

    +Low level definition of a FileReader classes file cache area. +

    -Definition at line 70 of file modules.h.

    -


    Function Documentation

    -

    +

    + +
    - - - - - - - - - - - - - - - - - - - - - - - - - - - - + +
    void createcommand char *  cmd,
    handlerfunc  f,
    char  flags,
    int  minparams,
    char *  sourcetypedef DLLFactory<ModuleFactory> ircd_module
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 1707 of file modules.h.

    +

    + + + @@ -1151,9 +1320,10 @@ Definition at line 70 of

    -Referenced by Server::AddCommand(). +Definition at line 71 of file modules.h.

    + - - - +
    typedef file_cache string_list
    +


    Function Documentation

    @@ -1190,20 +1360,20 @@ Referenced by Server::AddCo

    -Definition at line 71 of file modules.cpp. +Definition at line 70 of file modules.cpp.

    -References EMode. +References EMode.

    -Referenced by DoAddExtendedMode().

    00072 {
    -00073         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00074         {
    -00075                 if ((i->modechar == modechar) && (i->type == type))
    -00076                 {
    -00077                         return true;
    -00078                 }
    -00079         }
    -00080         return false;
    -00081 }
    +Referenced by DoAddExtendedMode().
    00071 {
    +00072         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00073         {
    +00074                 if ((i->modechar == modechar) && (i->type == type))
    +00075                 {
    +00076                         return true;
    +00077                 }
    +00078         }
    +00079         return false;
    +00080 }
     

    @@ -1245,18 +1415,18 @@ Referenced by DoAddExtended

    -Definition at line 121 of file modules.cpp. +Definition at line 120 of file modules.cpp.

    -References EMode.

    00122 {
    -00123         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00124         {
    -00125                 if ((i->modechar == modechar) && (i->type == type))
    -00126                 {
    -00127                         return i->params_when_off;
    -00128                 }
    -00129         }
    -00130         return 0;
    -00131 }
    +References EMode.
    00121 {
    +00122         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00123         {
    +00124                 if ((i->modechar == modechar) && (i->type == type))
    +00125                 {
    +00126                         return i->params_when_off;
    +00127                 }
    +00128         }
    +00129         return 0;
    +00130 }
     

    @@ -1298,18 +1468,18 @@ References EMode.

    -Definition at line 108 of file modules.cpp. +Definition at line 107 of file modules.cpp.

    -References EMode.

    00109 {
    -00110         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00111         {
    -00112                 if ((i->modechar == modechar) && (i->type == type))
    -00113                 {
    -00114                         return i->params_when_on;
    -00115                 }
    -00116         }
    -00117         return 0;
    -00118 }
    +References EMode.
    00108 {
    +00109         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00110         {
    +00111                 if ((i->modechar == modechar) && (i->type == type))
    +00112                 {
    +00113                         return i->params_when_on;
    +00114                 }
    +00115         }
    +00116         return 0;
    +00117 }
     

    @@ -1351,18 +1521,18 @@ References EMode.

    -Definition at line 95 of file modules.cpp. +Definition at line 94 of file modules.cpp.

    -References EMode.

    00096 {
    -00097         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00098         {
    -00099                 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
    -00100                 {
    -00101                         return true;
    -00102                 }
    -00103         }
    -00104         return false;
    -00105 }
    +References EMode.
    00095 {
    +00096         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00097         {
    +00098                 if ((i->modechar == modechar) && (i->type == type) && (i->needsoper == true))
    +00099                 {
    +00100                         return true;
    +00101                 }
    +00102         }
    +00103         return false;
    +00104 }
     

    @@ -1404,18 +1574,18 @@ References EMode.

    -Definition at line 83 of file modules.cpp. +Definition at line 82 of file modules.cpp.

    -References EMode.

    00084 {
    -00085         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00086         {
    -00087                 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
    -00088                 {
    -00089                         return true;
    -00090                 }
    -00091         }
    -00092         return false;
    -00093 }
    +References EMode.
    00083 {
    +00084         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00085         {
    +00086                 if ((i->modechar == modechar) && (i->type == type) && (i->list == true))
    +00087                 {
    +00088                         return true;
    +00089                 }
    +00090         }
    +00091         return false;
    +00092 }
     

    @@ -1448,70 +1618,27 @@ References EMode.

    -Definition at line 144 of file modules.cpp. +Definition at line 143 of file modules.cpp.

    -References EMode, and MT_CHANNEL. +References EMode, and MT_CHANNEL.

    -Referenced by Server::AddExtendedListMode().

    00145 {
    -00146         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    -00147         {
    -00148                 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
    -00149                 {
    -00150                         i->list = true;
    -00151                         return;
    -00152                 }
    -00153         }
    -00154         return;
    -00155 }
    +Referenced by Server::AddExtendedListMode().
    00144 {
    +00145         for (ExtModeListIter i = EMode.begin(); i < EMode.end(); i++)
    +00146         {
    +00147                 if ((i->modechar == modechar) && (i->type == MT_CHANNEL))
    +00148                 {
    +00149                         i->list = true;
    +00150                         return;
    +00151                 }
    +00152         }
    +00153         return;
    +00154 }
     

    -

    - - - - -
    - - - - - - - - - - - - - - - - - - - - - - - - -
    void server_mode char **  parameters,
    int  pcnt,
    userrec user
    -
    - - - - - -
    -   - - -

    -

    -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/modules_8h__dep__incl.map b/docs/module-doc/modules_8h__dep__incl.map index 2ae52d4d8..d2382c473 100644 --- a/docs/module-doc/modules_8h__dep__incl.map +++ b/docs/module-doc/modules_8h__dep__incl.map @@ -1,4 +1,5 @@ base referer -rect $channels_8cpp-source.html 275,32 373,59 -rect $modules_8cpp-source.html 275,95 373,121 -rect $typedefs_8h-source.html 140,57 225,84 +rect $channels_8cpp-source.html 288,57 387,84 +rect $modules_8cpp-source.html 288,108 387,135 +rect $inspircd__io_8h-source.html 142,57 238,84 +rect $typedefs_8h-source.html 147,108 232,135 diff --git a/docs/module-doc/modules_8h__dep__incl.md5 b/docs/module-doc/modules_8h__dep__incl.md5 index 1b8f85636..797e74981 100644 --- a/docs/module-doc/modules_8h__dep__incl.md5 +++ b/docs/module-doc/modules_8h__dep__incl.md5 @@ -1 +1 @@ -029327ee049ffb0b20c7a5fec8c0bf60 \ No newline at end of file +a9c8e3f1de38b14742a7373870135e9c \ No newline at end of file diff --git a/docs/module-doc/modules_8h__incl.map b/docs/module-doc/modules_8h__incl.map index 11a5b7c38..80950de97 100644 --- a/docs/module-doc/modules_8h__incl.map +++ b/docs/module-doc/modules_8h__incl.map @@ -1,5 +1,4 @@ base referer -rect $base_8h-source.html 283,108 344,135 -rect $ctables_8h-source.html 145,209 220,236 -rect $socket_8h-source.html 427,361 499,388 -rect $inspircd_8h-source.html 273,209 353,236 +rect $base_8h-source.html 152,159 214,185 +rect $ctables_8h-source.html 146,108 220,135 +rect $socket_8h-source.html 147,336 219,363 diff --git a/docs/module-doc/modules_8h__incl.md5 b/docs/module-doc/modules_8h__incl.md5 index 0ba01c624..44632e2c0 100644 --- a/docs/module-doc/modules_8h__incl.md5 +++ b/docs/module-doc/modules_8h__incl.md5 @@ -1 +1 @@ -8349e345831c364ad6f1773db4ad756f \ No newline at end of file +b8bad034c27cd1c2ec23841d82552230 \ No newline at end of file diff --git a/docs/module-doc/namespaceirc.html b/docs/module-doc/namespaceirc.html index 7a3116ffc..2c5489a02 100644 --- a/docs/module-doc/namespaceirc.html +++ b/docs/module-doc/namespaceirc.html @@ -56,7 +56,7 @@ This typedef declares irc::string< Definition at line 129 of file hashcomp.h. -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/namespacemembers.html b/docs/module-doc/namespacemembers.html index 739166549..239850c0b 100644 --- a/docs/module-doc/namespacemembers.html +++ b/docs/module-doc/namespacemembers.html @@ -11,7 +11,7 @@ Here is a list of all namespace members with links to the namespace documentatio -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/namespacemembers_type.html b/docs/module-doc/namespacemembers_type.html index 99d94cbd5..a73089474 100644 --- a/docs/module-doc/namespacemembers_type.html +++ b/docs/module-doc/namespacemembers_type.html @@ -11,7 +11,7 @@ -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/namespacenspace.html b/docs/module-doc/namespacenspace.html index 3558dad6a..ef2d042ee 100644 --- a/docs/module-doc/namespacenspace.html +++ b/docs/module-doc/namespacenspace.html @@ -15,7 +15,7 @@ struct  hash< string > -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/namespaces.html b/docs/module-doc/namespaces.html index a9b9a4154..73a796a6c 100644 --- a/docs/module-doc/namespaces.html +++ b/docs/module-doc/namespaces.html @@ -10,7 +10,7 @@ nspace std -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/namespacestd.html b/docs/module-doc/namespacestd.html index 51eb1a3f9..38a0bf752 100644 --- a/docs/module-doc/namespacestd.html +++ b/docs/module-doc/namespacestd.html @@ -10,7 +10,7 @@
    -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/socket_8cpp-source.html b/docs/module-doc/socket_8cpp-source.html index 933d1eae5..5278c5d50 100644 --- a/docs/module-doc/socket_8cpp-source.html +++ b/docs/module-doc/socket_8cpp-source.html @@ -41,253 +41,252 @@ 00032 #include "socket.h" 00033 #include "inspircd.h" 00034 #include "inspircd_io.h" -00035 #include "inspircd_util.h" -00036 #include "inspstring.h" -00037 #include "helperfuncs.h" -00038 #include "socketengine.h" +00035 #include "inspstring.h" +00036 #include "helperfuncs.h" +00037 #include "socketengine.h" +00038 00039 -00040 extern SocketEngine* SE; -00041 -00042 extern int boundPortCount; -00043 extern int openSockfd[MAXSOCKS]; -00044 extern time_t TIME; -00045 -00046 InspSocket* socket_ref[65535]; -00047 -00048 InspSocket::InspSocket() -00049 { -00050 this->state = I_DISCONNECTED; -00051 } -00052 -00053 InspSocket::InspSocket(int newfd, char* ip) -00054 { -00055 this->fd = newfd; -00056 this->state = I_CONNECTED; -00057 this->IP = ip; -00058 SE->AddFd(this->fd,true,X_ESTAB_MODULE); -00059 socket_ref[this->fd] = this; -00060 } -00061 -00062 InspSocket::InspSocket(std::string host, int port, bool listening, unsigned long maxtime) -00063 { -00064 if (listening) { -00065 if ((this->fd = OpenTCPSocket()) == ERROR) -00066 { -00067 this->fd = -1; -00068 this->state = I_ERROR; -00069 this->OnError(I_ERR_SOCKET); -00070 log(DEBUG,"OpenTCPSocket() error"); -00071 return; -00072 } -00073 else -00074 { -00075 if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR) -00076 { -00077 this->Close(); -00078 this->fd = -1; -00079 this->state = I_ERROR; -00080 this->OnError(I_ERR_BIND); -00081 log(DEBUG,"BindSocket() error %s",strerror(errno)); -00082 return; -00083 } -00084 else -00085 { -00086 this->state = I_LISTENING; -00087 SE->AddFd(this->fd,true,X_ESTAB_MODULE); -00088 socket_ref[this->fd] = this; -00089 log(DEBUG,"New socket now in I_LISTENING state"); -00090 return; -00091 } -00092 } -00093 } else { -00094 char* ip; -00095 this->host = host; -00096 hostent* hoste = gethostbyname(host.c_str()); -00097 if (!hoste) { -00098 ip = (char*)host.c_str(); -00099 } else { -00100 struct in_addr* ia = (in_addr*)hoste->h_addr; -00101 ip = inet_ntoa(*ia); -00102 } -00103 -00104 this->IP = ip; -00105 -00106 timeout_end = time(NULL)+maxtime; -00107 timeout = false; -00108 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) -00109 { -00110 this->state = I_ERROR; -00111 this->OnError(I_ERR_SOCKET); -00112 return; -00113 } -00114 this->port = port; -00115 inet_aton(ip,&addy); -00116 addr.sin_family = AF_INET; -00117 addr.sin_addr = addy; -00118 addr.sin_port = htons(this->port); -00119 -00120 int flags; -00121 flags = fcntl(this->fd, F_GETFL, 0); -00122 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK); -00123 -00124 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1) -00125 { -00126 if (errno != EINPROGRESS) -00127 { -00128 this->Close(); -00129 this->OnError(I_ERR_CONNECT); -00130 this->state = I_ERROR; -00131 return; -00132 } -00133 } -00134 this->state = I_CONNECTING; -00135 SE->AddFd(this->fd,false,X_ESTAB_MODULE); -00136 socket_ref[this->fd] = this; -00137 return; -00138 } -00139 } -00140 -00141 void InspSocket::Close() -00142 { -00143 if (this->fd != -1) -00144 { -00145 this->OnClose(); -00146 shutdown(this->fd,2); -00147 close(this->fd); -00148 socket_ref[this->fd] = NULL; -00149 this->fd = -1; -00150 } -00151 } -00152 -00153 std::string InspSocket::GetIP() -00154 { -00155 return this->IP; -00156 } -00157 -00158 char* InspSocket::Read() -00159 { -00160 int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0); -00161 if (n > 0) -00162 { -00163 ibuf[n] = 0; -00164 return ibuf; -00165 } -00166 else -00167 { -00168 log(DEBUG,"EOF or error on socket"); -00169 return NULL; -00170 } -00171 } -00172 -00173 // There are two possible outcomes to this function. -00174 // It will either write all of the data, or an undefined amount. -00175 // If an undefined amount is written the connection has failed -00176 // and should be aborted. -00177 int InspSocket::Write(std::string data) -00178 { -00179 char* d = (char*)data.c_str(); -00180 unsigned int written = 0; -00181 int n = 0; -00182 int s = data.length(); -00183 while ((written < data.length()) && (n >= 0)) -00184 { -00185 n = send(this->fd,d,s,0); -00186 if (n > 0) -00187 { -00188 // If we didnt write everything, advance -00189 // the pointers so that when we retry -00190 // the next time around the loop, we try -00191 // to write what we failed to write before. -00192 written += n; -00193 s -= n; -00194 d += n; -00195 } -00196 } -00197 return written; -00198 } -00199 -00200 bool InspSocket::Timeout(time_t current) -00201 { -00202 if ((this->state == I_CONNECTING) && (current > timeout_end)) -00203 { -00204 // for non-listening sockets, the timeout can occur -00205 // which causes termination of the connection after -00206 // the given number of seconds without a successful -00207 // connection. -00208 this->OnTimeout(); -00209 this->OnError(I_ERR_TIMEOUT); -00210 timeout = true; -00211 this->state = I_ERROR; -00212 return true; -00213 } -00214 return false; -00215 } -00216 -00217 bool InspSocket::Poll() -00218 { -00219 int incoming = -1; -00220 -00221 switch (this->state) -00222 { -00223 case I_CONNECTING: -00224 this->SetState(I_CONNECTED); -00225 /* Our socket was in write-state, so delete it and re-add it -00226 * in read-state. -00227 */ -00228 SE->DelFd(this->fd); -00229 SE->AddFd(this->fd,true,X_ESTAB_MODULE); -00230 return this->OnConnected(); -00231 break; -00232 case I_LISTENING: -00233 length = sizeof (client); -00234 incoming = accept (this->fd, (sockaddr*)&client,&length); -00235 this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr)); -00236 return true; -00237 break; -00238 case I_CONNECTED: -00239 return this->OnDataReady(); -00240 break; -00241 default: -00242 break; -00243 } -00244 -00245 return true; -00246 } -00247 -00248 void InspSocket::SetState(InspSocketState s) -00249 { -00250 log(DEBUG,"Socket state change"); -00251 this->state = s; -00252 } -00253 -00254 InspSocketState InspSocket::GetState() -00255 { -00256 return this->state; -00257 } -00258 -00259 int InspSocket::GetFd() -00260 { -00261 return this->fd; -00262 } -00263 -00264 bool InspSocket::OnConnected() { return true; } -00265 void InspSocket::OnError(InspSocketError e) { return; } -00266 int InspSocket::OnDisconnect() { return 0; } -00267 int InspSocket::OnIncomingConnection(int newfd, char* ip) { return 0; } -00268 bool InspSocket::OnDataReady() { return true; } -00269 void InspSocket::OnTimeout() { return; } -00270 void InspSocket::OnClose() { return; } -00271 -00272 InspSocket::~InspSocket() -00273 { -00274 this->Close(); -00275 } -00276 -00277 /* -00278 int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr) -00279 int OpenTCPSocket (void) -00280 */ -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00040 extern InspIRCd* ServerInstance; +00041 extern time_t TIME; +00042 +00043 InspSocket* socket_ref[65535]; +00044 +00045 InspSocket::InspSocket() +00046 { +00047 this->state = I_DISCONNECTED; +00048 } +00049 +00050 InspSocket::InspSocket(int newfd, char* ip) +00051 { +00052 this->fd = newfd; +00053 this->state = I_CONNECTED; +00054 this->IP = ip; +00055 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE); +00056 socket_ref[this->fd] = this; +00057 } +00058 +00059 InspSocket::InspSocket(std::string host, int port, bool listening, unsigned long maxtime) +00060 { +00061 if (listening) { +00062 if ((this->fd = OpenTCPSocket()) == ERROR) +00063 { +00064 this->fd = -1; +00065 this->state = I_ERROR; +00066 this->OnError(I_ERR_SOCKET); +00067 log(DEBUG,"OpenTCPSocket() error"); +00068 return; +00069 } +00070 else +00071 { +00072 if (BindSocket(this->fd,this->client,this->server,port,(char*)host.c_str()) == ERROR) +00073 { +00074 this->Close(); +00075 this->fd = -1; +00076 this->state = I_ERROR; +00077 this->OnError(I_ERR_BIND); +00078 log(DEBUG,"BindSocket() error %s",strerror(errno)); +00079 return; +00080 } +00081 else +00082 { +00083 this->state = I_LISTENING; +00084 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE); +00085 socket_ref[this->fd] = this; +00086 log(DEBUG,"New socket now in I_LISTENING state"); +00087 return; +00088 } +00089 } +00090 } else { +00091 char* ip; +00092 this->host = host; +00093 hostent* hoste = gethostbyname(host.c_str()); +00094 if (!hoste) { +00095 ip = (char*)host.c_str(); +00096 } else { +00097 struct in_addr* ia = (in_addr*)hoste->h_addr; +00098 ip = inet_ntoa(*ia); +00099 } +00100 +00101 this->IP = ip; +00102 +00103 timeout_end = time(NULL)+maxtime; +00104 timeout = false; +00105 if ((this->fd = socket(AF_INET, SOCK_STREAM, 0)) == -1) +00106 { +00107 this->state = I_ERROR; +00108 this->OnError(I_ERR_SOCKET); +00109 return; +00110 } +00111 this->port = port; +00112 inet_aton(ip,&addy); +00113 addr.sin_family = AF_INET; +00114 addr.sin_addr = addy; +00115 addr.sin_port = htons(this->port); +00116 +00117 int flags; +00118 flags = fcntl(this->fd, F_GETFL, 0); +00119 fcntl(this->fd, F_SETFL, flags | O_NONBLOCK); +00120 +00121 if(connect(this->fd, (sockaddr*)&this->addr,sizeof(this->addr)) == -1) +00122 { +00123 if (errno != EINPROGRESS) +00124 { +00125 this->Close(); +00126 this->OnError(I_ERR_CONNECT); +00127 this->state = I_ERROR; +00128 return; +00129 } +00130 } +00131 this->state = I_CONNECTING; +00132 ServerInstance->SE->AddFd(this->fd,false,X_ESTAB_MODULE); +00133 socket_ref[this->fd] = this; +00134 return; +00135 } +00136 } +00137 +00138 void InspSocket::Close() +00139 { +00140 if (this->fd != -1) +00141 { +00142 this->OnClose(); +00143 shutdown(this->fd,2); +00144 close(this->fd); +00145 socket_ref[this->fd] = NULL; +00146 this->fd = -1; +00147 } +00148 } +00149 +00150 std::string InspSocket::GetIP() +00151 { +00152 return this->IP; +00153 } +00154 +00155 char* InspSocket::Read() +00156 { +00157 int n = recv(this->fd,this->ibuf,sizeof(this->ibuf),0); +00158 if (n > 0) +00159 { +00160 ibuf[n] = 0; +00161 return ibuf; +00162 } +00163 else +00164 { +00165 log(DEBUG,"EOF or error on socket"); +00166 return NULL; +00167 } +00168 } +00169 +00170 // There are two possible outcomes to this function. +00171 // It will either write all of the data, or an undefined amount. +00172 // If an undefined amount is written the connection has failed +00173 // and should be aborted. +00174 int InspSocket::Write(std::string data) +00175 { +00176 this->Buffer = this->Buffer + data; +00177 this->FlushWriteBuffer(); +00178 return data.length(); +00179 } +00180 +00181 void InspSocket::FlushWriteBuffer() +00182 { +00183 int result = 0; +00184 if (this->Buffer.length()) +00185 { +00186 result = send(this->fd,this->Buffer.c_str(),this->Buffer.length(),0); +00187 if (result > 0) +00188 { +00189 /* If we wrote some, advance the buffer forwards */ +00190 char* n = (char*)this->Buffer.c_str(); +00191 n += result; +00192 this->Buffer = n; +00193 } +00194 } +00195 } +00196 +00197 bool InspSocket::Timeout(time_t current) +00198 { +00199 if ((this->state == I_CONNECTING) && (current > timeout_end)) +00200 { +00201 // for non-listening sockets, the timeout can occur +00202 // which causes termination of the connection after +00203 // the given number of seconds without a successful +00204 // connection. +00205 this->OnTimeout(); +00206 this->OnError(I_ERR_TIMEOUT); +00207 timeout = true; +00208 this->state = I_ERROR; +00209 return true; +00210 } +00211 if (this->Buffer.length()) +00212 this->FlushWriteBuffer(); +00213 return false; +00214 } +00215 +00216 bool InspSocket::Poll() +00217 { +00218 int incoming = -1; +00219 +00220 switch (this->state) +00221 { +00222 case I_CONNECTING: +00223 this->SetState(I_CONNECTED); +00224 /* Our socket was in write-state, so delete it and re-add it +00225 * in read-state. +00226 */ +00227 ServerInstance->SE->DelFd(this->fd); +00228 ServerInstance->SE->AddFd(this->fd,true,X_ESTAB_MODULE); +00229 return this->OnConnected(); +00230 break; +00231 case I_LISTENING: +00232 length = sizeof (client); +00233 incoming = accept (this->fd, (sockaddr*)&client,&length); +00234 this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr)); +00235 return true; +00236 break; +00237 case I_CONNECTED: +00238 return this->OnDataReady(); +00239 break; +00240 default: +00241 break; +00242 } +00243 +00244 return true; +00245 } +00246 +00247 void InspSocket::SetState(InspSocketState s) +00248 { +00249 log(DEBUG,"Socket state change"); +00250 this->state = s; +00251 } +00252 +00253 InspSocketState InspSocket::GetState() +00254 { +00255 return this->state; +00256 } +00257 +00258 int InspSocket::GetFd() +00259 { +00260 return this->fd; +00261 } +00262 +00263 bool InspSocket::OnConnected() { return true; } +00264 void InspSocket::OnError(InspSocketError e) { return; } +00265 int InspSocket::OnDisconnect() { return 0; } +00266 int InspSocket::OnIncomingConnection(int newfd, char* ip) { return 0; } +00267 bool InspSocket::OnDataReady() { return true; } +00268 void InspSocket::OnTimeout() { return; } +00269 void InspSocket::OnClose() { return; } +00270 +00271 InspSocket::~InspSocket() +00272 { +00273 this->Close(); +00274 } +00275 +00276 /* +00277 int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr) +00278 int OpenTCPSocket (void) +00279 */ +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/socket_8cpp.html b/docs/module-doc/socket_8cpp.html index fda9e1ce7..8a47414ce 100644 --- a/docs/module-doc/socket_8cpp.html +++ b/docs/module-doc/socket_8cpp.html @@ -23,7 +23,6 @@ #include "socket.h"
    #include "inspircd.h"
    #include "inspircd_io.h"
    -#include "inspircd_util.h"
    #include "inspstring.h"
    #include "helperfuncs.h"
    #include "socketengine.h"
    @@ -31,21 +30,17 @@

    Include dependency graph for socket.cpp:

    - - - - + + + +

    Go to the source code of this file. - - - - - + @@ -53,59 +48,13 @@ Include dependency graph for socket.cpp:

    -


    Variables

    SocketEngineSE
    int boundPortCount
    int openSockfd [MAXSOCKS]
    InspIRCdServerInstance
    time_t TIME
    - - - -
    - - - - -
    int boundPortCount
    -
    - - - - - -
    -   - - -

    -

    -

    - - - - -
    - - - - -
    int openSockfd[MAXSOCKS]
    -
    - - - - - -
    -   - - -

    -

    -

    +

    @@ -128,7 +77,7 @@ Include dependency graph for socket.cpp:

    - +
    SocketEngine* SE InspIRCd* ServerInstance
    - +
    InspSocket* socket_ref[65535] InspSocket* socket_ref[65535]
    @@ -144,7 +93,7 @@ Include dependency graph for socket.cpp:

    46 of file socket.cpp. +Definition at line 43 of file socket.cpp.

    @@ -170,7 +119,7 @@ Definition at line 46 of -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/socket_8cpp__incl.map b/docs/module-doc/socket_8cpp__incl.map index e5dbf66eb..42039b390 100644 --- a/docs/module-doc/socket_8cpp__incl.map +++ b/docs/module-doc/socket_8cpp__incl.map @@ -1,5 +1,5 @@ base referer -rect $socket_8h-source.html 456,374 528,400 -rect $inspircd_8h-source.html 301,450 381,476 -rect $inspircd__io_8h-source.html 444,424 540,451 -rect $socketengine_8h-source.html 140,830 252,856 +rect $socket_8h-source.html 318,463 390,490 +rect $inspircd_8h-source.html 155,424 235,451 +rect $inspircd__io_8h-source.html 306,564 402,591 +rect $socketengine_8h-source.html 298,210 410,236 diff --git a/docs/module-doc/socket_8cpp__incl.md5 b/docs/module-doc/socket_8cpp__incl.md5 index 532a9daa0..0c7a5d7de 100644 --- a/docs/module-doc/socket_8cpp__incl.md5 +++ b/docs/module-doc/socket_8cpp__incl.md5 @@ -1 +1 @@ -9f75c46dbd63c7144404dcb531abb481 \ No newline at end of file +03426437789107bb0505454dfe45ab2a \ No newline at end of file diff --git a/docs/module-doc/socket_8h-source.html b/docs/module-doc/socket_8h-source.html index 4001154a5..601404fc3 100644 --- a/docs/module-doc/socket_8h-source.html +++ b/docs/module-doc/socket_8h-source.html @@ -56,61 +56,65 @@ 00092 00097 bool timeout; 00098 -00106 char ibuf[16384]; +00106 char ibuf[65535]; 00107 -00113 std::string IP; -00114 -00119 sockaddr_in client; -00120 -00125 sockaddr_in server; -00126 -00131 socklen_t length; -00132 -00133 public: -00134 -00139 InspSocket(); -00140 -00149 InspSocket(int newfd, char* ip); -00150 -00160 InspSocket(std::string host, int port, bool listening, unsigned long maxtime); -00161 -00167 virtual bool OnConnected(); -00168 -00175 virtual void OnError(InspSocketError e); -00176 -00181 virtual int OnDisconnect(); -00182 -00195 virtual bool OnDataReady(); -00196 -00204 virtual void OnTimeout(); +00111 std::string Buffer; +00112 +00118 std::string IP; +00119 +00124 sockaddr_in client; +00125 +00130 sockaddr_in server; +00131 +00136 socklen_t length; +00137 +00140 void FlushWriteBuffer(); +00141 +00142 public: +00143 +00148 InspSocket(); +00149 +00158 InspSocket(int newfd, char* ip); +00159 +00169 InspSocket(std::string host, int port, bool listening, unsigned long maxtime); +00170 +00176 virtual bool OnConnected(); +00177 +00184 virtual void OnError(InspSocketError e); +00185 +00190 virtual int OnDisconnect(); +00191 +00204 virtual bool OnDataReady(); 00205 -00214 virtual void OnClose(); -00215 -00221 virtual char* Read(); -00222 -00228 std::string GetIP(); -00229 -00236 bool Timeout(time_t current); -00237 -00243 virtual int Write(std::string data); -00244 -00258 virtual int OnIncomingConnection(int newfd, char* ip); -00259 -00265 void SetState(InspSocketState s); -00266 -00270 InspSocketState GetState(); -00271 -00280 bool Poll(); -00281 -00287 int GetFd(); -00288 -00294 virtual void Close(); -00295 -00301 virtual ~InspSocket(); -00302 }; -00303 -00304 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00213 virtual void OnTimeout(); +00214 +00223 virtual void OnClose(); +00224 +00230 virtual char* Read(); +00231 +00237 std::string GetIP(); +00238 +00245 bool Timeout(time_t current); +00246 +00252 virtual int Write(std::string data); +00253 +00267 virtual int OnIncomingConnection(int newfd, char* ip); +00268 +00274 void SetState(InspSocketState s); +00275 +00279 InspSocketState GetState(); +00280 +00289 bool Poll(); +00290 +00296 int GetFd(); +00297 +00303 virtual void Close(); +00304 +00310 virtual ~InspSocket(); +00311 }; +00312 +00313 #endif +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/socket_8h.html b/docs/module-doc/socket_8h.html index 6a07f6829..f06eb2bdf 100644 --- a/docs/module-doc/socket_8h.html +++ b/docs/module-doc/socket_8h.html @@ -21,8 +21,8 @@ This graph shows which files directly or indirectly include this file:

    - +

    @@ -139,7 +139,7 @@ Definition at line 29 of f -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/socket_8h__dep__incl.map b/docs/module-doc/socket_8h__dep__incl.map index 39631ee0c..9aac42e32 100644 --- a/docs/module-doc/socket_8h__dep__incl.map +++ b/docs/module-doc/socket_8h__dep__incl.map @@ -1,5 +1,5 @@ base referer rect $modules_8cpp-source.html 260,57 359,84 rect $socket_8cpp-source.html 267,133 352,160 -rect $inspircd_8h-source.html 129,108 209,135 rect $modules_8h-source.html 128,57 211,84 +rect $inspircd_8h-source.html 129,108 209,135 diff --git a/docs/module-doc/socket_8h__dep__incl.md5 b/docs/module-doc/socket_8h__dep__incl.md5 index 5264f4ee1..f7ea8f6d9 100644 --- a/docs/module-doc/socket_8h__dep__incl.md5 +++ b/docs/module-doc/socket_8h__dep__incl.md5 @@ -1 +1 @@ -3c191a72f21affbd7a2ef0ada34c2b11 \ No newline at end of file +44d57d2060fc1c23df1ada0b15f0d062 \ No newline at end of file diff --git a/docs/module-doc/socketengine_8cpp-source.html b/docs/module-doc/socketengine_8cpp-source.html index 9811eef6b..e04764301 100644 --- a/docs/module-doc/socketengine_8cpp-source.html +++ b/docs/module-doc/socketengine_8cpp-source.html @@ -212,7 +212,7 @@ 00203 #endif 00204 return "misconfigured"; 00205 } -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/socketengine_8cpp.html b/docs/module-doc/socketengine_8cpp.html index 35ea9bd95..9c1891efc 100644 --- a/docs/module-doc/socketengine_8cpp.html +++ b/docs/module-doc/socketengine_8cpp.html @@ -17,9 +17,9 @@

    Include dependency graph for socketengine.cpp:

    - - - + + +

    @@ -57,7 +57,7 @@ Definition at line 33< Referenced by SocketEngine::AddFd(), SocketEngine::DelFd(), SocketEngine::GetType(), and SocketEngine::Wait(). -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/socketengine_8cpp__incl.map b/docs/module-doc/socketengine_8cpp__incl.map index e7b56eb07..c2c0abf48 100644 --- a/docs/module-doc/socketengine_8cpp__incl.map +++ b/docs/module-doc/socketengine_8cpp__incl.map @@ -1,4 +1,4 @@ base referer -rect $globals_8h-source.html 343,209 417,236 -rect $inspircd_8h-source.html 340,57 420,84 -rect $socketengine_8h-source.html 180,159 292,185 +rect $globals_8h-source.html 492,210 567,236 +rect $inspircd_8h-source.html 180,108 260,135 +rect $socketengine_8h-source.html 308,159 420,186 diff --git a/docs/module-doc/socketengine_8cpp__incl.md5 b/docs/module-doc/socketengine_8cpp__incl.md5 index 333ce2806..e8adc4660 100644 --- a/docs/module-doc/socketengine_8cpp__incl.md5 +++ b/docs/module-doc/socketengine_8cpp__incl.md5 @@ -1 +1 @@ -50741f9f6cf4a87616fd7184331c0fd9 \ No newline at end of file +a9f3c9ef26b80d60108ae75da748354c \ No newline at end of file diff --git a/docs/module-doc/socketengine_8h-source.html b/docs/module-doc/socketengine_8h-source.html index ceb54ee8c..bf289751c 100644 --- a/docs/module-doc/socketengine_8h-source.html +++ b/docs/module-doc/socketengine_8h-source.html @@ -82,7 +82,7 @@ 00142 }; 00143 00144 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/socketengine_8h.html b/docs/module-doc/socketengine_8h.html index c6ee617a3..c3194dde2 100644 --- a/docs/module-doc/socketengine_8h.html +++ b/docs/module-doc/socketengine_8h.html @@ -26,9 +26,15 @@ Include dependency graph for socketengine.h:

    - - - + + + + + + + + +

    @@ -106,7 +112,9 @@ Referenced by SocketEn

    -Definition at line 43 of file socketengine.h. +Definition at line 43 of file socketengine.h. +

    +Referenced by AddClient().

    @@ -158,7 +166,7 @@ Definition at line 45 Definition at line 44 of file socketengine.h.

    -Referenced by InspSocket::InspSocket(), and InspSocket::Poll(). +Referenced by InspSocket::InspSocket(), and InspSocket::Poll().

    @@ -215,7 +223,7 @@ Definition at line 55SocketEngine::AddFd(), SocketEngine::DelFd(), and SocketEngine::Wait(). -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/socketengine_8h__dep__incl.map b/docs/module-doc/socketengine_8h__dep__incl.map index d19518b55..50af03e3e 100644 --- a/docs/module-doc/socketengine_8h__dep__incl.map +++ b/docs/module-doc/socketengine_8h__dep__incl.map @@ -1,4 +1,10 @@ base referer -rect $modules_8cpp-source.html 180,7 279,33 -rect $socket_8cpp-source.html 187,57 272,84 -rect $socketengine_8cpp-source.html 167,108 292,135 +rect $modules_8cpp-source.html 469,311 568,338 +rect $socket_8cpp-source.html 476,412 561,439 +rect $socketengine_8cpp-source.html 295,58 420,84 +rect $users_8cpp-source.html 479,108 559,135 +rect $inspircd_8h-source.html 167,260 247,287 +rect $channels_8cpp-source.html 469,210 568,236 +rect $inspircd__io_8h-source.html 309,260 405,287 +rect $typedefs_8h-source.html 315,210 400,236 +rect $userprocess_8h-source.html 305,311 409,338 diff --git a/docs/module-doc/socketengine_8h__dep__incl.md5 b/docs/module-doc/socketengine_8h__dep__incl.md5 index eb92fe10f..494132264 100644 --- a/docs/module-doc/socketengine_8h__dep__incl.md5 +++ b/docs/module-doc/socketengine_8h__dep__incl.md5 @@ -1 +1 @@ -00d3a68c8884c78980281618846deffd \ No newline at end of file +5d41f86d6f67ff7b18b6ad71c4748bc2 \ No newline at end of file diff --git a/docs/module-doc/socketengine_8h__incl.md5 b/docs/module-doc/socketengine_8h__incl.md5 index 8b91e5aee..5f44e8306 100644 --- a/docs/module-doc/socketengine_8h__incl.md5 +++ b/docs/module-doc/socketengine_8h__incl.md5 @@ -1 +1 @@ -9faa242bc7dd08e1da2018aca66c84c3 \ No newline at end of file +9fbbbfd9144c559ad108601ee9a99b89 \ No newline at end of file diff --git a/docs/module-doc/structdns__ip4list-members.html b/docs/module-doc/structdns__ip4list-members.html index fa02814fa..00adf56b3 100644 --- a/docs/module-doc/structdns__ip4list-members.html +++ b/docs/module-doc/structdns__ip4list-members.html @@ -8,7 +8,7 @@

    dns_ip4list Member List

    This is the complete list of members for dns_ip4list, including all inherited members.

    -
    ipdns_ip4list
    nextdns_ip4list


    Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structdns__ip4list.html b/docs/module-doc/structdns__ip4list.html index cf1bd3068..dbaa45b4c 100644 --- a/docs/module-doc/structdns__ip4list.html +++ b/docs/module-doc/structdns__ip4list.html @@ -74,7 +74,7 @@ Definition at line 28 of file
    The documentation for this struct was generated from the following file: -
    Generated on Thu Dec 15 11:14:18 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:15 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structirc_1_1InAddr__HashComp-members.html b/docs/module-doc/structirc_1_1InAddr__HashComp-members.html index 249b293ef..8182411d7 100644 --- a/docs/module-doc/structirc_1_1InAddr__HashComp-members.html +++ b/docs/module-doc/structirc_1_1InAddr__HashComp-members.html @@ -7,7 +7,7 @@

    irc::InAddr_HashComp Member List

    This is the complete list of members for irc::InAddr_HashComp, including all inherited members.

    -
    operator()(const in_addr &s1, const in_addr &s2) const irc::InAddr_HashComp


    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structirc_1_1InAddr__HashComp.html b/docs/module-doc/structirc_1_1InAddr__HashComp.html index 49a97d2d1..db0ae84d5 100644 --- a/docs/module-doc/structirc_1_1InAddr__HashComp.html +++ b/docs/module-doc/structirc_1_1InAddr__HashComp.html @@ -68,7 +68,7 @@ The operator () does the actual comparison in hash_map.
    The documentation for this struct was generated from the following file: -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structirc_1_1StrHashComp-members.html b/docs/module-doc/structirc_1_1StrHashComp-members.html index dd9da58d0..42b6d308f 100644 --- a/docs/module-doc/structirc_1_1StrHashComp-members.html +++ b/docs/module-doc/structirc_1_1StrHashComp-members.html @@ -7,7 +7,7 @@

    irc::StrHashComp Member List

    This is the complete list of members for irc::StrHashComp, including all inherited members.

    -
    operator()(const std::string &s1, const std::string &s2) const irc::StrHashComp


    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structirc_1_1StrHashComp.html b/docs/module-doc/structirc_1_1StrHashComp.html index 74ece1118..9f14acf2a 100644 --- a/docs/module-doc/structirc_1_1StrHashComp.html +++ b/docs/module-doc/structirc_1_1StrHashComp.html @@ -68,7 +68,7 @@ The operator () does the actual comparison in hash_map.
    The documentation for this struct was generated from the following file: -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structirc_1_1irc__char__traits-members.html b/docs/module-doc/structirc_1_1irc__char__traits-members.html index 596ff8900..18a070203 100644 --- a/docs/module-doc/structirc_1_1irc__char__traits-members.html +++ b/docs/module-doc/structirc_1_1irc__char__traits-members.html @@ -11,7 +11,7 @@ find(const char *s1, int n, char c)irc::irc_char_traits [static] lt(char c1st, char c2nd)irc::irc_char_traits [static] ne(char c1st, char c2nd)irc::irc_char_traits [static] -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structirc_1_1irc__char__traits.html b/docs/module-doc/structirc_1_1irc__char__traits.html index ea99c41a1..cc87009d3 100644 --- a/docs/module-doc/structirc_1_1irc__char__traits.html +++ b/docs/module-doc/structirc_1_1irc__char__traits.html @@ -256,7 +256,7 @@ Check if two chars do NOT match.
    The documentation for this struct was generated from the following file: -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4-members.html b/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4-members.html index ee61dcf3d..ce275a162 100644 --- a/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4-members.html +++ b/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4-members.html @@ -7,7 +7,7 @@

    nspace::hash< in_addr > Member List

    This is the complete list of members for nspace::hash< in_addr >, including all inherited members.

    -
    operator()(const struct in_addr &a) const nspace::hash< in_addr >


    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4.html b/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4.html index b6f8cbff5..67b91bf4a 100644 --- a/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4.html +++ b/docs/module-doc/structnspace_1_1hash_3_01in__addr_01_4.html @@ -54,7 +54,7 @@ Definition at line 54 of
    The documentation for this struct was generated from the following file: -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structnspace_1_1hash_3_01string_01_4-members.html b/docs/module-doc/structnspace_1_1hash_3_01string_01_4-members.html index 9fab76b65..db868f084 100644 --- a/docs/module-doc/structnspace_1_1hash_3_01string_01_4-members.html +++ b/docs/module-doc/structnspace_1_1hash_3_01string_01_4-members.html @@ -7,7 +7,7 @@

    nspace::hash< string > Member List

    This is the complete list of members for nspace::hash< string >, including all inherited members.

    -
    operator()(const string &s) const nspace::hash< string >


    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/structnspace_1_1hash_3_01string_01_4.html b/docs/module-doc/structnspace_1_1hash_3_01string_01_4.html index 73e23d188..c16f33dc1 100644 --- a/docs/module-doc/structnspace_1_1hash_3_01string_01_4.html +++ b/docs/module-doc/structnspace_1_1hash_3_01string_01_4.html @@ -54,7 +54,7 @@ Definition at line 62 of
    The documentation for this struct was generated from the following file: -
    Generated on Thu Dec 15 11:14:20 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:17 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/tree.html b/docs/module-doc/tree.html index c109a1b8f..1c7b81379 100644 --- a/docs/module-doc/tree.html +++ b/docs/module-doc/tree.html @@ -74,6 +74,7 @@

    o+File List

    +

    |o*aes.h

    |o*base.h

    |o*channels.cpp

    |o*channels.h

    @@ -103,11 +104,13 @@

    o+Class List

    o+Class Hierarchy

    +

    |o*AES

    |o*BoolSet

    |o+char_traits

    o*Class Members

    -

    o+Namespace List

    -
    +

    o+Namespace List

    + -

    o+Directories

    -
    -

    |\+home

    -
    -

    | \+brain

    -
    -

    |  \+inspircd-cvs

    -
    -

    |   \+inspircd

    -
    -

    |    o+include

    -
    -
    -

    |    \+src

    +

    o+Directories

    +
    +

    |\+home

    +
    +

    | \+brain

    +
    +

    |  \+inspircd-cvs

    +
    +

    |   \+inspircd

    +
    +

    |    o+include

    +

    |    \+src

    +
    +
    diff --git a/docs/module-doc/typedefs_8h-source.html b/docs/module-doc/typedefs_8h-source.html index a907e32fc..7f7c60887 100644 --- a/docs/module-doc/typedefs_8h-source.html +++ b/docs/module-doc/typedefs_8h-source.html @@ -30,14 +30,13 @@ 00021 typedef nspace::hash_map<std::string, chanrec*, nspace::hash<string>, irc::StrHashComp> chan_hash; 00022 typedef nspace::hash_map<in_addr,string*, nspace::hash<in_addr>, irc::InAddr_HashComp> address_cache; 00023 typedef nspace::hash_map<std::string, WhoWasUser*, nspace::hash<string>, irc::StrHashComp> whowas_hash; -00024 typedef std::deque<command_t> command_table; -00025 typedef std::vector<std::string> servernamelist; -00026 typedef std::vector<ExtMode> ExtModeList; -00027 typedef ExtModeList::iterator ExtModeListIter; -00028 typedef std::deque<std::string> file_cache; -00029 -00030 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00024 typedef std::vector<std::string> servernamelist; +00025 typedef std::vector<ExtMode> ExtModeList; +00026 typedef ExtModeList::iterator ExtModeListIter; +00027 typedef std::deque<std::string> file_cache; +00028 +00029 #endif +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/typedefs_8h.html b/docs/module-doc/typedefs_8h.html index 2db725325..180274f56 100644 --- a/docs/module-doc/typedefs_8h.html +++ b/docs/module-doc/typedefs_8h.html @@ -22,20 +22,21 @@

    Include dependency graph for typedefs.h:

    - - - - - - - + + + + + + +

    This graph shows which files directly or indirectly include this file:

    - - + + +

    @@ -58,8 +59,6 @@ This graph shows which files directly or indirectly include this file:

    std::string, WhoWasUser *,
    nspace::hash< string >, irc::StrHashCompwhowas_hash -typedef std::deque< command_tcommand_table - typedef std::vector< std::stringservernamelist typedef std::vector< ExtModeExtModeList @@ -120,31 +119,6 @@ Definition at line 22 of Definition at line 21 of file typedefs.h. -

    - - - - -
    - - - - -
    typedef std::deque<command_t> command_table
    -
    - - - - - -
    -   - - -

    - -

    -Definition at line 24 of file typedefs.h.

    @@ -167,7 +141,7 @@ Definition at line 24 of

    -Definition at line 26 of file typedefs.h. +Definition at line 25 of file typedefs.h.

    @@ -192,7 +166,7 @@ Definition at line 26 of

    -Definition at line 27 of file typedefs.h. +Definition at line 26 of file typedefs.h.

    @@ -217,7 +191,7 @@ Definition at line 27 of

    -Definition at line 28 of file typedefs.h. +Definition at line 27 of file typedefs.h.

    @@ -242,7 +216,7 @@ Definition at line 28 of

    -Definition at line 25 of file typedefs.h. +Definition at line 24 of file typedefs.h.

    @@ -295,7 +269,7 @@ Definition at line 20 of Definition at line 23 of file typedefs.h. -


    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/typedefs_8h__dep__incl.map b/docs/module-doc/typedefs_8h__dep__incl.map index d7538d0b6..122b85584 100644 --- a/docs/module-doc/typedefs_8h__dep__incl.map +++ b/docs/module-doc/typedefs_8h__dep__incl.map @@ -1,3 +1,4 @@ base referer -rect $channels_8cpp-source.html 141,7 240,34 -rect $modules_8cpp-source.html 141,58 240,84 +rect $channels_8cpp-source.html 141,7 240,33 +rect $modules_8cpp-source.html 141,57 240,84 +rect $users_8cpp-source.html 151,108 231,135 diff --git a/docs/module-doc/typedefs_8h__dep__incl.md5 b/docs/module-doc/typedefs_8h__dep__incl.md5 index 11e0ba285..9905c76fe 100644 --- a/docs/module-doc/typedefs_8h__dep__incl.md5 +++ b/docs/module-doc/typedefs_8h__dep__incl.md5 @@ -1 +1 @@ -142082842cc532e4d4e382b14a7b2d29 \ No newline at end of file +9650d15ddf009f9c420b6ac64e094f58 \ No newline at end of file diff --git a/docs/module-doc/typedefs_8h__incl.map b/docs/module-doc/typedefs_8h__incl.map index b131a2682..214c3651f 100644 --- a/docs/module-doc/typedefs_8h__incl.map +++ b/docs/module-doc/typedefs_8h__incl.map @@ -1,8 +1,8 @@ base referer -rect $users_8h-source.html 568,463 632,489 -rect $channels_8h-source.html 684,361 769,388 -rect $hashcomp_8h-source.html 141,108 235,135 -rect $ctables_8h-source.html 300,209 375,236 -rect $inspircd_8h-source.html 439,235 519,261 -rect $modules_8h-source.html 147,311 229,337 -rect $globals_8h-source.html 441,412 516,439 +rect $users_8h-source.html 280,245 344,272 +rect $channels_8h-source.html 404,448 489,475 +rect $hashcomp_8h-source.html 400,93 493,120 +rect $ctables_8h-source.html 275,600 349,627 +rect $inspircd_8h-source.html 143,335 223,361 +rect $modules_8h-source.html 141,600 224,627 +rect $globals_8h-source.html 145,423 220,449 diff --git a/docs/module-doc/typedefs_8h__incl.md5 b/docs/module-doc/typedefs_8h__incl.md5 index c9e951c43..8797dc7d4 100644 --- a/docs/module-doc/typedefs_8h__incl.md5 +++ b/docs/module-doc/typedefs_8h__incl.md5 @@ -1 +1 @@ -137043db2e87cae486cf9cf5c587f147 \ No newline at end of file +74b3db4e6e9c4732328fa3d4f91f37f3 \ No newline at end of file diff --git a/docs/module-doc/userprocess_8h-source.html b/docs/module-doc/userprocess_8h-source.html index 7d8502961..d664aaf5b 100644 --- a/docs/module-doc/userprocess_8h-source.html +++ b/docs/module-doc/userprocess_8h-source.html @@ -11,16 +11,17 @@ 00002 #define __USERPROCESS_H__ 00003 00004 #include "users.h" -00005 -00006 void CheckDie(); -00007 void LoadAllModules(); -00008 void CheckRoot(); -00009 void OpenLog(char** argv, int argc); -00010 bool DoBackgroundUserStuff(time_t TIME); -00011 void ProcessUser(userrec* cu); -00012 -00013 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00005 #include "inspircd.h" +00006 +00007 void CheckDie(); +00008 void LoadAllModules(InspIRCd* ServerInstance); +00009 void CheckRoot(); +00010 void OpenLog(char** argv, int argc); +00011 bool DoBackgroundUserStuff(time_t TIME); +00012 void ProcessUser(userrec* cu); +00013 +00014 #endif +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/userprocess_8h.html b/docs/module-doc/userprocess_8h.html index 2e6f0e710..e0a3ec873 100644 --- a/docs/module-doc/userprocess_8h.html +++ b/docs/module-doc/userprocess_8h.html @@ -8,13 +8,13 @@

    userprocess.h File Reference

    #include "users.h"
    +#include "inspircd.h"

    Include dependency graph for userprocess.h:

    - - - + +

    @@ -23,7 +23,7 @@ Include dependency graph for userprocess.h:


    Functions

    void CheckDie () -void LoadAllModules () +void LoadAllModules (InspIRCd *ServerInstance) void CheckRoot () @@ -117,7 +117,7 @@ Include dependency graph for userprocess.h:

    +

    - + + @@ -209,7 +210,7 @@ Include dependency graph for userprocess.h:

    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/userprocess_8h__incl.map b/docs/module-doc/userprocess_8h__incl.map index 597eed7b6..2c35162eb 100644 --- a/docs/module-doc/userprocess_8h__incl.map +++ b/docs/module-doc/userprocess_8h__incl.map @@ -1,4 +1,3 @@ base referer -rect $users_8h-source.html 163,108 227,135 -rect $channels_8h-source.html 283,108 368,135 -rect $connection_8h-source.html 276,58 375,84 +rect $users_8h-source.html 291,32 355,59 +rect $inspircd_8h-source.html 162,58 242,84 diff --git a/docs/module-doc/userprocess_8h__incl.md5 b/docs/module-doc/userprocess_8h__incl.md5 index 3dc031b2d..d8ff2f5d6 100644 --- a/docs/module-doc/userprocess_8h__incl.md5 +++ b/docs/module-doc/userprocess_8h__incl.md5 @@ -1 +1 @@ -bd342784e8f38bb1e1aa5077552ba0a3 \ No newline at end of file +1cd979ceea10e39121f05ee648f60ec5 \ No newline at end of file diff --git a/docs/module-doc/users_8cpp-source.html b/docs/module-doc/users_8cpp-source.html index 5cc9b05f2..d43be846f 100644 --- a/docs/module-doc/users_8cpp-source.html +++ b/docs/module-doc/users_8cpp-source.html @@ -38,279 +38,780 @@ 00029 #include "inspstring.h" 00030 #include "commands.h" 00031 #include "helperfuncs.h" -00032 -00033 extern ServerConfig* Config; -00034 extern time_t TIME; -00035 -00036 userrec::userrec() -00037 { -00038 // the PROPER way to do it, AVOID bzero at *ALL* costs -00039 strcpy(nick,""); -00040 strcpy(ip,"127.0.0.1"); -00041 timeout = 0; -00042 strcpy(ident,""); -00043 strcpy(host,""); -00044 strcpy(dhost,""); -00045 strcpy(fullname,""); -00046 strcpy(modes,""); -00047 server = (char*)FindServerNamePtr(Config->ServerName); -00048 strcpy(awaymsg,""); -00049 strcpy(oper,""); -00050 reset_due = TIME; -00051 lines_in = 0; -00052 fd = lastping = signon = idle_lastmsg = nping = registered = 0; -00053 flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0; -00054 haspassed = false; -00055 dns_done = false; -00056 recvq = ""; -00057 sendq = ""; -00058 chans.clear(); -00059 invites.clear(); -00060 } -00061 -00062 userrec::~userrec() -00063 { -00064 } -00065 -00066 void userrec::CloseSocket() -00067 { -00068 shutdown(this->fd,2); -00069 close(this->fd); -00070 } -00071 -00072 char* userrec::GetFullHost() -00073 { -00074 static char result[MAXBUF]; -00075 snprintf(result,MAXBUF,"%s!%s@%s",nick,ident,dhost); -00076 return result; -00077 } -00078 -00079 int userrec::ReadData(void* buffer, size_t size) -00080 { -00081 if (this->fd > -1) -00082 { -00083 return read(this->fd, buffer, size); -00084 } -00085 else return 0; -00086 } -00087 +00032 #include "typedefs.h" +00033 #include "socketengine.h" +00034 #include "hashcomp.h" +00035 #include "message.h" +00036 #include "wildcard.h" +00037 #include "xline.h" +00038 +00039 extern InspIRCd* ServerInstance; +00040 extern int WHOWAS_STALE; +00041 extern int WHOWAS_MAX; +00042 extern std::vector<Module*> modules; +00043 extern std::vector<ircd_module*> factory; +00044 extern std::vector<InspSocket*> module_sockets; +00045 extern int MODCOUNT; +00046 extern InspSocket* socket_ref[65535]; +00047 extern time_t TIME; +00048 extern userrec* fd_ref_table[65536]; +00049 extern ServerConfig *Config; +00050 extern user_hash clientlist; +00051 extern whowas_hash whowas; +00052 std::vector<userrec*> local_users; +00053 +00054 std::vector<userrec*> all_opers; +00055 +00056 template<typename T> inline string ConvToStr(const T &in) +00057 { +00058 stringstream tmp; +00059 if (!(tmp << in)) return string(); +00060 return tmp.str(); +00061 } +00062 +00063 userrec::userrec() +00064 { +00065 // the PROPER way to do it, AVOID bzero at *ALL* costs +00066 strcpy(nick,""); +00067 strcpy(ip,"127.0.0.1"); +00068 timeout = 0; +00069 strcpy(ident,""); +00070 strcpy(host,""); +00071 strcpy(dhost,""); +00072 strcpy(fullname,""); +00073 strcpy(modes,""); +00074 server = (char*)FindServerNamePtr(Config->ServerName); +00075 strcpy(awaymsg,""); +00076 strcpy(oper,""); +00077 reset_due = TIME; +00078 lines_in = 0; +00079 fd = lastping = signon = idle_lastmsg = nping = registered = 0; +00080 flood = port = bytes_in = bytes_out = cmds_in = cmds_out = 0; +00081 haspassed = false; +00082 dns_done = false; +00083 recvq = ""; +00084 sendq = ""; +00085 chans.clear(); +00086 invites.clear(); +00087 } 00088 -00089 char* userrec::GetFullRealHost() +00089 userrec::~userrec() 00090 { -00091 static char fresult[MAXBUF]; -00092 snprintf(fresult,MAXBUF,"%s!%s@%s",nick,ident,host); -00093 return fresult; -00094 } -00095 -00096 bool userrec::IsInvited(char* channel) -00097 { -00098 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) -00099 { -00100 if (i->channel) { -00101 if (!strcasecmp(i->channel,channel)) -00102 { -00103 return true; -00104 } -00105 } -00106 } -00107 return false; -00108 } -00109 -00110 InvitedList* userrec::GetInviteList() -00111 { -00112 return &invites; +00091 } +00092 +00093 void userrec::CloseSocket() +00094 { +00095 shutdown(this->fd,2); +00096 close(this->fd); +00097 } +00098 +00099 char* userrec::GetFullHost() +00100 { +00101 static char result[MAXBUF]; +00102 snprintf(result,MAXBUF,"%s!%s@%s",nick,ident,dhost); +00103 return result; +00104 } +00105 +00106 int userrec::ReadData(void* buffer, size_t size) +00107 { +00108 if (this->fd > -1) +00109 { +00110 return read(this->fd, buffer, size); +00111 } +00112 else return 0; 00113 } 00114 -00115 void userrec::InviteTo(char* channel) -00116 { -00117 Invited i; -00118 strlcpy(i.channel,channel,CHANMAX); -00119 invites.push_back(i); -00120 } -00121 -00122 void userrec::RemoveInvite(char* channel) -00123 { -00124 log(DEBUG,"Removing invites"); -00125 if (channel) +00115 +00116 char* userrec::GetFullRealHost() +00117 { +00118 static char fresult[MAXBUF]; +00119 snprintf(fresult,MAXBUF,"%s!%s@%s",nick,ident,host); +00120 return fresult; +00121 } +00122 +00123 bool userrec::IsInvited(irc::string &channel) +00124 { +00125 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) 00126 { -00127 if (invites.size()) -00128 { -00129 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) -00130 { -00131 if (i->channel) -00132 { -00133 if (!strcasecmp(i->channel,channel)) -00134 { -00135 invites.erase(i); -00136 return; -00137 } -00138 } -00139 } -00140 } -00141 } -00142 } -00143 -00144 bool userrec::HasPermission(char* command) -00145 { -00146 char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF]; -00147 char* mycmd; -00148 char* savept; -00149 char* savept2; -00150 -00151 // users on u-lined servers can completely bypass -00152 // all permissions based checks. -00153 // -00154 // of course, if this is sent to a remote server and this -00155 // server is not ulined there, then that other server -00156 // silently drops the command. -00157 if (is_uline(this->server)) -00158 return true; -00159 -00160 // are they even an oper at all? -00161 if (strchr(this->modes,'o')) -00162 { -00163 for (int j =0; j < Config->ConfValueEnum("type",&Config->config_f); j++) -00164 { -00165 Config->ConfValue("type","name",j,TypeName,&Config->config_f); -00166 if (!strcmp(TypeName,this->oper)) -00167 { -00168 Config->ConfValue("type","classes",j,Classes,&Config->config_f); -00169 char* myclass = strtok_r(Classes," ",&savept); -00170 while (myclass) -00171 { -00172 for (int k =0; k < Config->ConfValueEnum("class",&Config->config_f); k++) -00173 { -00174 Config->ConfValue("class","name",k,ClassName,&Config->config_f); -00175 if (!strcmp(ClassName,myclass)) -00176 { -00177 Config->ConfValue("class","commands",k,CommandList,&Config->config_f); -00178 mycmd = strtok_r(CommandList," ",&savept2); -00179 while (mycmd) -00180 { -00181 if ((!strcasecmp(mycmd,command)) || (*mycmd == '*')) -00182 { -00183 return true; -00184 } -00185 mycmd = strtok_r(NULL," ",&savept2); -00186 } -00187 } -00188 } -00189 myclass = strtok_r(NULL," ",&savept); -00190 } -00191 } -00192 } -00193 } -00194 return false; -00195 } -00196 -00197 -00198 bool userrec::AddBuffer(std::string a) -00199 { -00200 std::string b = ""; -00201 for (unsigned int i = 0; i < a.length(); i++) -00202 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7)) -00203 b = b + a[i]; -00204 std::stringstream stream(recvq); -00205 stream << b; -00206 recvq = stream.str(); -00207 unsigned int i = 0; -00208 // count the size of the first line in the buffer. -00209 while (i < recvq.length()) -00210 { -00211 if (recvq[i++] == '\n') -00212 break; -00213 } -00214 if (recvq.length() > (unsigned)this->recvqmax) -00215 { -00216 this->SetWriteError("RecvQ exceeded"); -00217 WriteOpers("*** User %s RecvQ of %d exceeds connect class maximum of %d",this->nick,recvq.length(),this->recvqmax); -00218 } -00219 // return false if we've had more than 600 characters WITHOUT -00220 // a carriage return (this is BAD, drop the socket) -00221 return (i < 600); -00222 } -00223 -00224 bool userrec::BufferIsReady() -00225 { -00226 for (unsigned int i = 0; i < recvq.length(); i++) -00227 if (recvq[i] == '\n') -00228 return true; -00229 return false; -00230 } -00231 -00232 void userrec::ClearBuffer() -00233 { -00234 recvq = ""; -00235 } -00236 -00237 std::string userrec::GetBuffer() -00238 { -00239 if (recvq == "") -00240 return ""; -00241 char* line = (char*)recvq.c_str(); -00242 std::string ret = ""; -00243 while ((*line != '\n') && (strlen(line))) -00244 { -00245 ret = ret + *line; -00246 line++; -00247 } -00248 if ((*line == '\n') || (*line == '\r')) -00249 line++; -00250 recvq = line; -00251 return ret; -00252 } -00253 -00254 void userrec::AddWriteBuf(std::string data) -00255 { -00256 if (this->GetWriteError() != "") -00257 return; -00258 if (sendq.length() + data.length() > (unsigned)this->sendqmax) -00259 { -00260 WriteOpers("*** User %s SendQ of %d exceeds connect class maximum of %d",this->nick,sendq.length() + data.length(),this->sendqmax); -00261 this->SetWriteError("SendQ exceeded"); -00262 return; -00263 } -00264 std::stringstream stream; -00265 stream << sendq << data; -00266 sendq = stream.str(); -00267 } -00268 -00269 // send AS MUCH OF THE USERS SENDQ as we are able to (might not be all of it) -00270 void userrec::FlushWriteBuf() -00271 { -00272 if (sendq.length()) -00273 { -00274 char* tb = (char*)this->sendq.c_str(); -00275 int n_sent = write(this->fd,tb,this->sendq.length()); -00276 if (n_sent == -1) -00277 { -00278 this->SetWriteError(strerror(errno)); -00279 } -00280 else -00281 { -00282 // advance the queue -00283 tb += n_sent; -00284 this->sendq = tb; -00285 // update the user's stats counters -00286 this->bytes_out += n_sent; -00287 this->cmds_out++; -00288 } -00289 } -00290 } -00291 -00292 void userrec::SetWriteError(std::string error) -00293 { -00294 log(DEBUG,"Setting error string for %s to '%s'",this->nick,error.c_str()); -00295 // don't try to set the error twice, its already set take the first string. -00296 if (this->WriteError == "") -00297 this->WriteError = error; -00298 } -00299 -00300 std::string userrec::GetWriteError() -00301 { -00302 return this->WriteError; -00303 } -
    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00127 irc::string compare = i->channel; +00128 if (compare == channel) +00129 { +00130 return true; +00131 } +00132 } +00133 return false; +00134 } +00135 +00136 InvitedList* userrec::GetInviteList() +00137 { +00138 return &invites; +00139 } +00140 +00141 void userrec::InviteTo(irc::string &channel) +00142 { +00143 Invited i; +00144 i.channel = channel; +00145 invites.push_back(i); +00146 } +00147 +00148 void userrec::RemoveInvite(irc::string &channel) +00149 { +00150 log(DEBUG,"Removing invites"); +00151 if (invites.size()) +00152 { +00153 for (InvitedList::iterator i = invites.begin(); i != invites.end(); i++) +00154 { +00155 irc::string compare = i->channel; +00156 if (compare == channel) +00157 { +00158 invites.erase(i); +00159 return; +00160 } +00161 } +00162 } +00163 } +00164 +00165 bool userrec::HasPermission(std::string &command) +00166 { +00167 char TypeName[MAXBUF],Classes[MAXBUF],ClassName[MAXBUF],CommandList[MAXBUF]; +00168 char* mycmd; +00169 char* savept; +00170 char* savept2; +00171 +00172 // users on u-lined servers can completely bypass +00173 // all permissions based checks. +00174 // +00175 // of course, if this is sent to a remote server and this +00176 // server is not ulined there, then that other server +00177 // silently drops the command. +00178 if (is_uline(this->server)) +00179 return true; +00180 +00181 // are they even an oper at all? +00182 if (strchr(this->modes,'o')) +00183 { +00184 for (int j =0; j < Config->ConfValueEnum("type",&Config->config_f); j++) +00185 { +00186 Config->ConfValue("type","name",j,TypeName,&Config->config_f); +00187 if (!strcmp(TypeName,this->oper)) +00188 { +00189 Config->ConfValue("type","classes",j,Classes,&Config->config_f); +00190 char* myclass = strtok_r(Classes," ",&savept); +00191 while (myclass) +00192 { +00193 for (int k =0; k < Config->ConfValueEnum("class",&Config->config_f); k++) +00194 { +00195 Config->ConfValue("class","name",k,ClassName,&Config->config_f); +00196 if (!strcmp(ClassName,myclass)) +00197 { +00198 Config->ConfValue("class","commands",k,CommandList,&Config->config_f); +00199 mycmd = strtok_r(CommandList," ",&savept2); +00200 while (mycmd) +00201 { +00202 if ((!strcasecmp(mycmd,command.c_str())) || (*mycmd == '*')) +00203 { +00204 return true; +00205 } +00206 mycmd = strtok_r(NULL," ",&savept2); +00207 } +00208 } +00209 } +00210 myclass = strtok_r(NULL," ",&savept); +00211 } +00212 } +00213 } +00214 } +00215 return false; +00216 } +00217 +00218 +00219 bool userrec::AddBuffer(std::string a) +00220 { +00221 std::string b = ""; +00222 for (unsigned int i = 0; i < a.length(); i++) +00223 if ((a[i] != '\r') && (a[i] != '\0') && (a[i] != 7)) +00224 b = b + a[i]; +00225 std::stringstream stream(recvq); +00226 stream << b; +00227 recvq = stream.str(); +00228 unsigned int i = 0; +00229 // count the size of the first line in the buffer. +00230 while (i < recvq.length()) +00231 { +00232 if (recvq[i++] == '\n') +00233 break; +00234 } +00235 if (recvq.length() > (unsigned)this->recvqmax) +00236 { +00237 this->SetWriteError("RecvQ exceeded"); +00238 WriteOpers("*** User %s RecvQ of %d exceeds connect class maximum of %d",this->nick,recvq.length(),this->recvqmax); +00239 } +00240 // return false if we've had more than 600 characters WITHOUT +00241 // a carriage return (this is BAD, drop the socket) +00242 return (i < 600); +00243 } +00244 +00245 bool userrec::BufferIsReady() +00246 { +00247 for (unsigned int i = 0; i < recvq.length(); i++) +00248 if (recvq[i] == '\n') +00249 return true; +00250 return false; +00251 } +00252 +00253 void userrec::ClearBuffer() +00254 { +00255 recvq = ""; +00256 } +00257 +00258 std::string userrec::GetBuffer() +00259 { +00260 if (recvq == "") +00261 return ""; +00262 char* line = (char*)recvq.c_str(); +00263 std::string ret = ""; +00264 while ((*line != '\n') && (strlen(line))) +00265 { +00266 ret = ret + *line; +00267 line++; +00268 } +00269 if ((*line == '\n') || (*line == '\r')) +00270 line++; +00271 recvq = line; +00272 return ret; +00273 } +00274 +00275 void userrec::AddWriteBuf(std::string data) +00276 { +00277 if (this->GetWriteError() != "") +00278 return; +00279 if (sendq.length() + data.length() > (unsigned)this->sendqmax) +00280 { +00281 /* Fix by brain - Set the error text BEFORE calling writeopers, because +00282 * if we dont it'll recursively call here over and over again trying +00283 * to repeatedly add the text to the sendq! +00284 */ +00285 this->SetWriteError("SendQ exceeded"); +00286 WriteOpers("*** User %s SendQ of %d exceeds connect class maximum of %d",this->nick,sendq.length() + data.length(),this->sendqmax); +00287 return; +00288 } +00289 std::stringstream stream; +00290 stream << sendq << data; +00291 sendq = stream.str(); +00292 } +00293 +00294 // send AS MUCH OF THE USERS SENDQ as we are able to (might not be all of it) +00295 void userrec::FlushWriteBuf() +00296 { +00297 if (sendq.length()) +00298 { +00299 char* tb = (char*)this->sendq.c_str(); +00300 int n_sent = write(this->fd,tb,this->sendq.length()); +00301 if (n_sent == -1) +00302 { +00303 this->SetWriteError(strerror(errno)); +00304 } +00305 else +00306 { +00307 // advance the queue +00308 tb += n_sent; +00309 this->sendq = tb; +00310 // update the user's stats counters +00311 this->bytes_out += n_sent; +00312 this->cmds_out++; +00313 } +00314 } +00315 } +00316 +00317 void userrec::SetWriteError(std::string error) +00318 { +00319 log(DEBUG,"Setting error string for %s to '%s'",this->nick,error.c_str()); +00320 // don't try to set the error twice, its already set take the first string. +00321 if (this->WriteError == "") +00322 this->WriteError = error; +00323 } +00324 +00325 std::string userrec::GetWriteError() +00326 { +00327 return this->WriteError; +00328 } +00329 +00330 void AddOper(userrec* user) +00331 { +00332 log(DEBUG,"Oper added to optimization list"); +00333 all_opers.push_back(user); +00334 } +00335 +00336 void DeleteOper(userrec* user) +00337 { +00338 for (std::vector<userrec*>::iterator a = all_opers.begin(); a < all_opers.end(); a++) +00339 { +00340 if (*a == user) +00341 { +00342 log(DEBUG,"Oper removed from optimization list"); +00343 all_opers.erase(a); +00344 return; +00345 } +00346 } +00347 } +00348 +00349 void kill_link(userrec *user,const char* r) +00350 { +00351 user_hash::iterator iter = clientlist.find(user->nick); +00352 +00353 char reason[MAXBUF]; +00354 +00355 strncpy(reason,r,MAXBUF); +00356 +00357 if (strlen(reason)>MAXQUIT) +00358 { +00359 reason[MAXQUIT-1] = '\0'; +00360 } +00361 +00362 log(DEBUG,"kill_link: %s '%s'",user->nick,reason); +00363 Write(user->fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,reason); +00364 log(DEBUG,"closing fd %lu",(unsigned long)user->fd); +00365 +00366 if (user->registered == 7) { +00367 FOREACH_MOD OnUserQuit(user,reason); +00368 WriteCommonExcept(user,"QUIT :%s",reason); +00369 } +00370 +00371 user->FlushWriteBuf(); +00372 +00373 FOREACH_MOD OnUserDisconnect(user); +00374 +00375 if (user->fd > -1) +00376 { +00377 if (Config->GetIOHook(user->port)) +00378 { +00379 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd); +00380 } +00381 ServerInstance->SE->DelFd(user->fd); +00382 user->CloseSocket(); +00383 } +00384 +00385 // this must come before the WriteOpers so that it doesnt try to fill their buffer with anything +00386 // if they were an oper with +s. +00387 if (user->registered == 7) { +00388 purge_empty_chans(user); +00389 // fix by brain: only show local quits because we only show local connects (it just makes SENSE) +00390 if (user->fd > -1) +00391 WriteOpers("*** Client exiting: %s!%s@%s [%s]",user->nick,user->ident,user->host,reason); +00392 AddWhoWas(user); +00393 } +00394 +00395 if (iter != clientlist.end()) +00396 { +00397 log(DEBUG,"deleting user hash value %lu",(unsigned long)user); +00398 if (user->fd > -1) +00399 { +00400 fd_ref_table[user->fd] = NULL; +00401 if (find(local_users.begin(),local_users.end(),user) != local_users.end()) +00402 { +00403 local_users.erase(find(local_users.begin(),local_users.end(),user)); +00404 log(DEBUG,"Delete local user"); +00405 } +00406 } +00407 clientlist.erase(iter); +00408 } +00409 delete user; +00410 } +00411 +00412 void kill_link_silent(userrec *user,const char* r) +00413 { +00414 user_hash::iterator iter = clientlist.find(user->nick); +00415 +00416 char reason[MAXBUF]; +00417 +00418 strncpy(reason,r,MAXBUF); +00419 +00420 if (strlen(reason)>MAXQUIT) +00421 { +00422 reason[MAXQUIT-1] = '\0'; +00423 } +00424 +00425 log(DEBUG,"kill_link: %s '%s'",user->nick,reason); +00426 Write(user->fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,reason); +00427 log(DEBUG,"closing fd %lu",(unsigned long)user->fd); +00428 +00429 user->FlushWriteBuf(); +00430 +00431 if (user->registered == 7) { +00432 FOREACH_MOD OnUserQuit(user,reason); +00433 WriteCommonExcept(user,"QUIT :%s",reason); +00434 } +00435 +00436 FOREACH_MOD OnUserDisconnect(user); +00437 +00438 if (user->fd > -1) +00439 { +00440 if (Config->GetIOHook(user->port)) +00441 { +00442 Config->GetIOHook(user->port)->OnRawSocketClose(user->fd); +00443 } +00444 ServerInstance->SE->DelFd(user->fd); +00445 user->CloseSocket(); +00446 } +00447 +00448 if (user->registered == 7) { +00449 purge_empty_chans(user); +00450 } +00451 +00452 if (iter != clientlist.end()) +00453 { +00454 log(DEBUG,"deleting user hash value %lu",(unsigned long)user); +00455 if (user->fd > -1) +00456 { +00457 fd_ref_table[user->fd] = NULL; +00458 if (find(local_users.begin(),local_users.end(),user) != local_users.end()) +00459 { +00460 log(DEBUG,"Delete local user"); +00461 local_users.erase(find(local_users.begin(),local_users.end(),user)); +00462 } +00463 } +00464 clientlist.erase(iter); +00465 } +00466 delete user; +00467 } +00468 +00469 +00470 /* adds or updates an entry in the whowas list */ +00471 void AddWhoWas(userrec* u) +00472 { +00473 whowas_hash::iterator iter = whowas.find(u->nick); +00474 WhoWasUser *a = new WhoWasUser(); +00475 strlcpy(a->nick,u->nick,NICKMAX); +00476 strlcpy(a->ident,u->ident,IDENTMAX); +00477 strlcpy(a->dhost,u->dhost,160); +00478 strlcpy(a->host,u->host,160); +00479 strlcpy(a->fullname,u->fullname,MAXGECOS); +00480 strlcpy(a->server,u->server,256); +00481 a->signon = u->signon; +00482 +00483 /* MAX_WHOWAS: max number of /WHOWAS items +00484 * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and +00485 * can be replaced by a newer one +00486 */ +00487 +00488 if (iter == whowas.end()) +00489 { +00490 if (whowas.size() >= (unsigned)WHOWAS_MAX) +00491 { +00492 for (whowas_hash::iterator i = whowas.begin(); i != whowas.end(); i++) +00493 { +00494 // 3600 seconds in an hour ;) +00495 if ((i->second->signon)<(TIME-(WHOWAS_STALE*3600))) +00496 { +00497 // delete the old one +00498 if (i->second) delete i->second; +00499 // replace with new one +00500 i->second = a; +00501 log(DEBUG,"added WHOWAS entry, purged an old record"); +00502 return; +00503 } +00504 } +00505 // no space left and user doesnt exist. Don't leave ram in use! +00506 log(DEBUG,"Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram"); +00507 delete a; +00508 } +00509 else +00510 { +00511 log(DEBUG,"added fresh WHOWAS entry"); +00512 whowas[a->nick] = a; +00513 } +00514 } +00515 else +00516 { +00517 log(DEBUG,"updated WHOWAS entry"); +00518 if (iter->second) delete iter->second; +00519 iter->second = a; +00520 } +00521 } +00522 +00523 /* add a client connection to the sockets list */ +00524 void AddClient(int socket, char* host, int port, bool iscached, char* ip) +00525 { +00526 string tempnick; +00527 char tn2[MAXBUF]; +00528 user_hash::iterator iter; +00529 +00530 tempnick = ConvToStr(socket) + "-unknown"; +00531 sprintf(tn2,"%lu-unknown",(unsigned long)socket); +00532 +00533 iter = clientlist.find(tempnick); +00534 +00535 // fix by brain. +00536 // as these nicknames are 'RFC impossible', we can be sure nobody is going to be +00537 // using one as a registered connection. As theyre per fd, we can also safely assume +00538 // that we wont have collisions. Therefore, if the nick exists in the list, its only +00539 // used by a dead socket, erase the iterator so that the new client may reclaim it. +00540 // this was probably the cause of 'server ignores me when i hammer it with reconnects' +00541 // issue in earlier alphas/betas +00542 if (iter != clientlist.end()) +00543 { +00544 userrec* goner = iter->second; +00545 delete goner; +00546 clientlist.erase(iter); +00547 } +00548 +00549 /* +00550 * It is OK to access the value here this way since we know +00551 * it exists, we just created it above. +00552 * +00553 * At NO other time should you access a value in a map or a +00554 * hash_map this way. +00555 */ +00556 clientlist[tempnick] = new userrec(); +00557 +00558 log(DEBUG,"AddClient: %lu %s %d %s",(unsigned long)socket,host,port,ip); +00559 +00560 clientlist[tempnick]->fd = socket; +00561 strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX); +00562 strlcpy(clientlist[tempnick]->host, host,160); +00563 strlcpy(clientlist[tempnick]->dhost, host,160); +00564 clientlist[tempnick]->server = (char*)FindServerNamePtr(Config->ServerName); +00565 strlcpy(clientlist[tempnick]->ident, "unknown",IDENTMAX); +00566 clientlist[tempnick]->registered = 0; +00567 clientlist[tempnick]->signon = TIME + Config->dns_timeout; +00568 clientlist[tempnick]->lastping = 1; +00569 clientlist[tempnick]->port = port; +00570 strlcpy(clientlist[tempnick]->ip,ip,16); +00571 +00572 // set the registration timeout for this user +00573 unsigned long class_regtimeout = 90; +00574 int class_flood = 0; +00575 long class_threshold = 5; +00576 long class_sqmax = 262144; // 256kb +00577 long class_rqmax = 4096; // 4k +00578 +00579 for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++) +00580 { +00581 if (match(clientlist[tempnick]->host,i->host) && (i->type == CC_ALLOW)) +00582 { +00583 class_regtimeout = (unsigned long)i->registration_timeout; +00584 class_flood = i->flood; +00585 clientlist[tempnick]->pingmax = i->pingtime; +00586 class_threshold = i->threshold; +00587 class_sqmax = i->sendqmax; +00588 class_rqmax = i->recvqmax; +00589 break; +00590 } +00591 } +00592 +00593 clientlist[tempnick]->nping = TIME+clientlist[tempnick]->pingmax + Config->dns_timeout; +00594 clientlist[tempnick]->timeout = TIME+class_regtimeout; +00595 clientlist[tempnick]->flood = class_flood; +00596 clientlist[tempnick]->threshold = class_threshold; +00597 clientlist[tempnick]->sendqmax = class_sqmax; +00598 clientlist[tempnick]->recvqmax = class_rqmax; +00599 +00600 ucrec a; +00601 a.channel = NULL; +00602 a.uc_modes = 0; +00603 for (int i = 0; i < MAXCHANS; i++) +00604 clientlist[tempnick]->chans.push_back(a); +00605 +00606 if (clientlist.size() > Config->SoftLimit) +00607 { +00608 kill_link(clientlist[tempnick],"No more connections allowed"); +00609 return; +00610 } +00611 +00612 if (clientlist.size() >= MAXCLIENTS) +00613 { +00614 kill_link(clientlist[tempnick],"No more connections allowed"); +00615 return; +00616 } +00617 +00618 // this is done as a safety check to keep the file descriptors within range of fd_ref_table. +00619 // its a pretty big but for the moment valid assumption: +00620 // file descriptors are handed out starting at 0, and are recycled as theyre freed. +00621 // therefore if there is ever an fd over 65535, 65536 clients must be connected to the +00622 // irc server at once (or the irc server otherwise initiating this many connections, files etc) +00623 // which for the time being is a physical impossibility (even the largest networks dont have more +00624 // than about 10,000 users on ONE server!) +00625 if ((unsigned)socket > 65534) +00626 { +00627 kill_link(clientlist[tempnick],"Server is full"); +00628 return; +00629 } +00630 char* e = matches_exception(ip); +00631 if (!e) +00632 { +00633 char* r = matches_zline(ip); +00634 if (r) +00635 { +00636 char reason[MAXBUF]; +00637 snprintf(reason,MAXBUF,"Z-Lined: %s",r); +00638 kill_link(clientlist[tempnick],reason); +00639 return; +00640 } +00641 } +00642 fd_ref_table[socket] = clientlist[tempnick]; +00643 local_users.push_back(clientlist[tempnick]); +00644 ServerInstance->SE->AddFd(socket,true,X_ESTAB_CLIENT); +00645 } +00646 +00647 void FullConnectUser(userrec* user) +00648 { +00649 ServerInstance->stats->statsConnects++; +00650 user->idle_lastmsg = TIME; +00651 log(DEBUG,"ConnectUser: %s",user->nick); +00652 +00653 if ((strcmp(Passwd(user),"")) && (!user->haspassed)) +00654 { +00655 kill_link(user,"Invalid password"); +00656 return; +00657 } +00658 if (IsDenied(user)) +00659 { +00660 kill_link(user,"Unauthorised connection"); +00661 return; +00662 } +00663 +00664 char match_against[MAXBUF]; +00665 snprintf(match_against,MAXBUF,"%s@%s",user->ident,user->host); +00666 char* e = matches_exception(match_against); +00667 if (!e) +00668 { +00669 char* r = matches_gline(match_against); +00670 if (r) +00671 { +00672 char reason[MAXBUF]; +00673 snprintf(reason,MAXBUF,"G-Lined: %s",r); +00674 kill_link_silent(user,reason); +00675 return; +00676 } +00677 r = matches_kline(user->host); +00678 if (r) +00679 { +00680 char reason[MAXBUF]; +00681 snprintf(reason,MAXBUF,"K-Lined: %s",r); +00682 kill_link_silent(user,reason); +00683 return; +00684 } +00685 } +00686 +00687 +00688 WriteServ(user->fd,"NOTICE Auth :Welcome to \002%s\002!",Config->Network); +00689 WriteServ(user->fd,"001 %s :Welcome to the %s IRC Network %s!%s@%s",user->nick,Config->Network,user->nick,user->ident,user->host); +00690 WriteServ(user->fd,"002 %s :Your host is %s, running version %s",user->nick,Config->ServerName,VERSION); +00691 WriteServ(user->fd,"003 %s :This server was created %s %s",user->nick,__TIME__,__DATE__); +00692 WriteServ(user->fd,"004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN",user->nick,Config->ServerName,VERSION); +00693 // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it... +00694 std::stringstream v; +00695 v << "WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=" << MAXCHANS; +00696 v << " MAXBANS=60 NICKLEN=" << NICKMAX; +00697 v << " TOPICLEN=" << MAXTOPIC << " KICKLEN=" << MAXKICK << " MAXTARGETS=20 AWAYLEN=" << MAXAWAY << " CHANMODES=ohvb,k,l,psmnti NETWORK="; +00698 v << Config->Network; +00699 std::string data005 = v.str(); +00700 FOREACH_MOD On005Numeric(data005); +00701 // anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line... +00702 // so i'd better split it :) +00703 std::stringstream out(data005); +00704 std::string token = ""; +00705 std::string line5 = ""; +00706 int token_counter = 0; +00707 while (!out.eof()) +00708 { +00709 out >> token; +00710 line5 = line5 + token + " "; +00711 token_counter++; +00712 if ((token_counter >= 13) || (out.eof() == true)) +00713 { +00714 WriteServ(user->fd,"005 %s %s:are supported by this server",user->nick,line5.c_str()); +00715 line5 = ""; +00716 token_counter = 0; +00717 } +00718 } +00719 ShowMOTD(user); +00720 +00721 // fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out +00722 // onto the network and produce 'fake direction' +00723 FOREACH_MOD OnUserConnect(user); +00724 FOREACH_MOD OnGlobalConnect(user); +00725 user->registered = 7; +00726 WriteOpers("*** Client connecting on port %lu: %s!%s@%s [%s]",(unsigned long)user->port,user->nick,user->ident,user->host,user->ip); +00727 } +00728 +00729 +00730 /* shows the message of the day, and any other on-logon stuff */ +00731 void ConnectUser(userrec *user) +00732 { +00733 // dns is already done, things are fast. no need to wait for dns to complete just pass them straight on +00734 if ((user->dns_done) && (user->registered >= 3) && (AllModulesReportReady(user))) +00735 { +00736 FullConnectUser(user); +00737 } +00738 } +00739 +00740 /* re-allocates a nick in the user_hash after they change nicknames, +00741 * returns a pointer to the new user as it may have moved */ +00742 +00743 userrec* ReHashNick(char* Old, char* New) +00744 { +00745 //user_hash::iterator newnick; +00746 user_hash::iterator oldnick = clientlist.find(Old); +00747 +00748 log(DEBUG,"ReHashNick: %s %s",Old,New); +00749 +00750 if (!strcasecmp(Old,New)) +00751 { +00752 log(DEBUG,"old nick is new nick, skipping"); +00753 return oldnick->second; +00754 } +00755 +00756 if (oldnick == clientlist.end()) return NULL; /* doesnt exist */ +00757 +00758 log(DEBUG,"ReHashNick: Found hashed nick %s",Old); +00759 +00760 userrec* olduser = oldnick->second; +00761 clientlist[New] = olduser; +00762 clientlist.erase(oldnick); +00763 +00764 log(DEBUG,"ReHashNick: Nick rehashed as %s",New); +00765 +00766 return clientlist[New]; +00767 } +00768 +00769 void force_nickchange(userrec* user,const char* newnick) +00770 { +00771 char nick[MAXBUF]; +00772 int MOD_RESULT = 0; +00773 +00774 strcpy(nick,""); +00775 +00776 FOREACH_RESULT(OnUserPreNick(user,newnick)); +00777 if (MOD_RESULT) { +00778 ServerInstance->stats->statsCollisions++; +00779 kill_link(user,"Nickname collision"); +00780 return; +00781 } +00782 if (matches_qline(newnick)) +00783 { +00784 ServerInstance->stats->statsCollisions++; +00785 kill_link(user,"Nickname collision"); +00786 return; +00787 } +00788 +00789 if (user) +00790 { +00791 if (newnick) +00792 { +00793 strncpy(nick,newnick,MAXBUF); +00794 } +00795 if (user->registered == 7) +00796 { +00797 char* pars[1]; +00798 pars[0] = nick; +00799 std::string cmd = "NICK"; +00800 ServerInstance->Parser->CallHandler(cmd,pars,1,user); +00801 } +00802 } +00803 } +00804 +
    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/users_8cpp.html b/docs/module-doc/users_8cpp.html index 46ef13e2c..15bd4cd46 100644 --- a/docs/module-doc/users_8cpp.html +++ b/docs/module-doc/users_8cpp.html @@ -16,27 +16,1042 @@ #include "inspstring.h"
    #include "commands.h"
    #include "helperfuncs.h"
    +#include "typedefs.h"
    +#include "socketengine.h"
    +#include "hashcomp.h"
    +#include "message.h"
    +#include "wildcard.h"
    +#include "xline.h"

    Include dependency graph for users.cpp:

    - - - - - + + + + + + + + + +

    Go to the source code of this file.

    @@ -125,7 +125,8 @@ Include dependency graph for userprocess.h:

    void LoadAllModules
    InspIRCd ServerInstance  ) 
    + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    Functions

    template<typename T>
    string ConvToStr (const T &in)
    void AddOper (userrec *user)
    void DeleteOper (userrec *user)
    void kill_link (userrec *user, const char *r)
    void kill_link_silent (userrec *user, const char *r)
    void AddWhoWas (userrec *u)
    void AddClient (int socket, char *host, int port, bool iscached, char *ip)
    void FullConnectUser (userrec *user)
    void ConnectUser (userrec *user)
    userrecReHashNick (char *Old, char *New)
    void force_nickchange (userrec *user, const char *newnick)

    Variables

    ServerConfigConfig
    InspIRCdServerInstance
    int WHOWAS_STALE
    int WHOWAS_MAX
    std::vector< Module * > modules
    std::vector< ircd_module * > factory
    std::vector< InspSocket * > module_sockets
    int MODCOUNT
    InspSocketsocket_ref [65535]
    time_t TIME
    userrecfd_ref_table [65536]
    ServerConfigConfig
    user_hash clientlist
    whowas_hash whowas
    std::vector< userrec * > local_users
    std::vector< userrec * > all_opers
    +


    Function Documentation

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void AddClient int  socket,
    char *  host,
    int  port,
    bool  iscached,
    char *  ip
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 524 of file users.cpp. +

    +References SocketEngine::AddFd(), CC_ALLOW, ucrec::channel, ServerConfig::Classes, clientlist, ConvToStr(), DEBUG, ServerConfig::dns_timeout, FindServerNamePtr(), kill_link(), local_users, log(), matches_exception(), matches_zline(), InspIRCd::SE, ServerConfig::ServerName, ServerConfig::SoftLimit, TIME, ucrec::uc_modes, and X_ESTAB_CLIENT.

    00525 {
    +00526         string tempnick;
    +00527         char tn2[MAXBUF];
    +00528         user_hash::iterator iter;
    +00529 
    +00530         tempnick = ConvToStr(socket) + "-unknown";
    +00531         sprintf(tn2,"%lu-unknown",(unsigned long)socket);
    +00532 
    +00533         iter = clientlist.find(tempnick);
    +00534 
    +00535         // fix by brain.
    +00536         // as these nicknames are 'RFC impossible', we can be sure nobody is going to be
    +00537         // using one as a registered connection. As theyre per fd, we can also safely assume
    +00538         // that we wont have collisions. Therefore, if the nick exists in the list, its only
    +00539         // used by a dead socket, erase the iterator so that the new client may reclaim it.
    +00540         // this was probably the cause of 'server ignores me when i hammer it with reconnects'
    +00541         // issue in earlier alphas/betas
    +00542         if (iter != clientlist.end())
    +00543         {
    +00544                 userrec* goner = iter->second;
    +00545                 delete goner;
    +00546                 clientlist.erase(iter);
    +00547         }
    +00548 
    +00549         /*
    +00550          * It is OK to access the value here this way since we know
    +00551          * it exists, we just created it above.
    +00552          *
    +00553          * At NO other time should you access a value in a map or a
    +00554          * hash_map this way.
    +00555          */
    +00556         clientlist[tempnick] = new userrec();
    +00557 
    +00558         log(DEBUG,"AddClient: %lu %s %d %s",(unsigned long)socket,host,port,ip);
    +00559 
    +00560         clientlist[tempnick]->fd = socket;
    +00561         strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX);
    +00562         strlcpy(clientlist[tempnick]->host, host,160);
    +00563         strlcpy(clientlist[tempnick]->dhost, host,160);
    +00564         clientlist[tempnick]->server = (char*)FindServerNamePtr(Config->ServerName);
    +00565         strlcpy(clientlist[tempnick]->ident, "unknown",IDENTMAX);
    +00566         clientlist[tempnick]->registered = 0;
    +00567         clientlist[tempnick]->signon = TIME + Config->dns_timeout;
    +00568         clientlist[tempnick]->lastping = 1;
    +00569         clientlist[tempnick]->port = port;
    +00570         strlcpy(clientlist[tempnick]->ip,ip,16);
    +00571 
    +00572         // set the registration timeout for this user
    +00573         unsigned long class_regtimeout = 90;
    +00574         int class_flood = 0;
    +00575         long class_threshold = 5;
    +00576         long class_sqmax = 262144;      // 256kb
    +00577         long class_rqmax = 4096;        // 4k
    +00578 
    +00579         for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++)
    +00580         {
    +00581                 if (match(clientlist[tempnick]->host,i->host) && (i->type == CC_ALLOW))
    +00582                 {
    +00583                         class_regtimeout = (unsigned long)i->registration_timeout;
    +00584                         class_flood = i->flood;
    +00585                         clientlist[tempnick]->pingmax = i->pingtime;
    +00586                         class_threshold = i->threshold;
    +00587                         class_sqmax = i->sendqmax;
    +00588                         class_rqmax = i->recvqmax;
    +00589                         break;
    +00590                 }
    +00591         }
    +00592 
    +00593         clientlist[tempnick]->nping = TIME+clientlist[tempnick]->pingmax + Config->dns_timeout;
    +00594         clientlist[tempnick]->timeout = TIME+class_regtimeout;
    +00595         clientlist[tempnick]->flood = class_flood;
    +00596         clientlist[tempnick]->threshold = class_threshold;
    +00597         clientlist[tempnick]->sendqmax = class_sqmax;
    +00598         clientlist[tempnick]->recvqmax = class_rqmax;
    +00599 
    +00600         ucrec a;
    +00601         a.channel = NULL;
    +00602         a.uc_modes = 0;
    +00603         for (int i = 0; i < MAXCHANS; i++)
    +00604                 clientlist[tempnick]->chans.push_back(a);
    +00605 
    +00606         if (clientlist.size() > Config->SoftLimit)
    +00607         {
    +00608                 kill_link(clientlist[tempnick],"No more connections allowed");
    +00609                 return;
    +00610         }
    +00611 
    +00612         if (clientlist.size() >= MAXCLIENTS)
    +00613         {
    +00614                 kill_link(clientlist[tempnick],"No more connections allowed");
    +00615                 return;
    +00616         }
    +00617 
    +00618         // this is done as a safety check to keep the file descriptors within range of fd_ref_table.
    +00619         // its a pretty big but for the moment valid assumption:
    +00620         // file descriptors are handed out starting at 0, and are recycled as theyre freed.
    +00621         // therefore if there is ever an fd over 65535, 65536 clients must be connected to the
    +00622         // irc server at once (or the irc server otherwise initiating this many connections, files etc)
    +00623         // which for the time being is a physical impossibility (even the largest networks dont have more
    +00624         // than about 10,000 users on ONE server!)
    +00625         if ((unsigned)socket > 65534)
    +00626         {
    +00627                 kill_link(clientlist[tempnick],"Server is full");
    +00628                 return;
    +00629         }
    +00630         char* e = matches_exception(ip);
    +00631         if (!e)
    +00632         {
    +00633                 char* r = matches_zline(ip);
    +00634                 if (r)
    +00635                 {
    +00636                         char reason[MAXBUF];
    +00637                         snprintf(reason,MAXBUF,"Z-Lined: %s",r);
    +00638                         kill_link(clientlist[tempnick],reason);
    +00639                         return;
    +00640                 }
    +00641         }
    +00642         fd_ref_table[socket] = clientlist[tempnick];
    +00643         local_users.push_back(clientlist[tempnick]);
    +00644         ServerInstance->SE->AddFd(socket,true,X_ESTAB_CLIENT);
    +00645 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + +
    void AddOper userrec user  ) 
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 330 of file users.cpp. +

    +References all_opers, DEBUG, and log().

    00331 {
    +00332         log(DEBUG,"Oper added to optimization list");
    +00333         all_opers.push_back(user);
    +00334 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + +
    void AddWhoWas userrec u  ) 
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 471 of file users.cpp. +

    +References DEBUG, WhoWasUser::dhost, userrec::dhost, WhoWasUser::fullname, userrec::fullname, WhoWasUser::host, connection::host, WhoWasUser::ident, userrec::ident, log(), userrec::nick, WhoWasUser::nick, WhoWasUser::server, userrec::server, WhoWasUser::signon, connection::signon, TIME, whowas, WHOWAS_MAX, and WHOWAS_STALE. +

    +Referenced by kill_link().

    00472 {
    +00473         whowas_hash::iterator iter = whowas.find(u->nick);
    +00474         WhoWasUser *a = new WhoWasUser();
    +00475         strlcpy(a->nick,u->nick,NICKMAX);
    +00476         strlcpy(a->ident,u->ident,IDENTMAX);
    +00477         strlcpy(a->dhost,u->dhost,160);
    +00478         strlcpy(a->host,u->host,160);
    +00479         strlcpy(a->fullname,u->fullname,MAXGECOS);
    +00480         strlcpy(a->server,u->server,256);
    +00481         a->signon = u->signon;
    +00482 
    +00483         /* MAX_WHOWAS:   max number of /WHOWAS items
    +00484          * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and
    +00485          *               can be replaced by a newer one
    +00486          */
    +00487 
    +00488         if (iter == whowas.end())
    +00489         {
    +00490                 if (whowas.size() >= (unsigned)WHOWAS_MAX)
    +00491                 {
    +00492                         for (whowas_hash::iterator i = whowas.begin(); i != whowas.end(); i++)
    +00493                         {
    +00494                                 // 3600 seconds in an hour ;)
    +00495                                 if ((i->second->signon)<(TIME-(WHOWAS_STALE*3600)))
    +00496                                 {
    +00497                                         // delete the old one
    +00498                                         if (i->second) delete i->second;
    +00499                                         // replace with new one
    +00500                                         i->second = a;
    +00501                                         log(DEBUG,"added WHOWAS entry, purged an old record");
    +00502                                         return;
    +00503                                 }
    +00504                         }
    +00505                         // no space left and user doesnt exist. Don't leave ram in use!
    +00506                         log(DEBUG,"Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram");
    +00507                         delete a;
    +00508                 }
    +00509                 else
    +00510                 {
    +00511                         log(DEBUG,"added fresh WHOWAS entry");
    +00512                         whowas[a->nick] = a;
    +00513                 }
    +00514         }
    +00515         else
    +00516         {
    +00517                 log(DEBUG,"updated WHOWAS entry");
    +00518                 if (iter->second) delete iter->second;
    +00519                 iter->second = a;
    +00520         }
    +00521 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + +
    void ConnectUser userrec user  ) 
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 731 of file users.cpp. +

    +References userrec::dns_done, FullConnectUser(), and connection::registered.

    00732 {
    +00733         // dns is already done, things are fast. no need to wait for dns to complete just pass them straight on
    +00734         if ((user->dns_done) && (user->registered >= 3) && (AllModulesReportReady(user)))
    +00735         {
    +00736                 FullConnectUser(user);
    +00737         }
    +00738 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + + + + +
    +template<typename T>
    string ConvToStr const T &  in  )  [inline]
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 56 of file users.cpp. +

    +Referenced by AddClient().

    00057 {
    +00058         stringstream tmp;
    +00059         if (!(tmp << in)) return string();
    +00060         return tmp.str();
    +00061 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + +
    void DeleteOper userrec user  ) 
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 336 of file users.cpp. +

    +References all_opers, DEBUG, and log().

    00337 {
    +00338         for (std::vector<userrec*>::iterator a = all_opers.begin(); a < all_opers.end(); a++)
    +00339         {
    +00340                 if (*a == user)
    +00341                 {
    +00342                         log(DEBUG,"Oper removed from optimization list");
    +00343                         all_opers.erase(a);
    +00344                         return;
    +00345                 }
    +00346         }
    +00347 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void force_nickchange userrec user,
    const char *  newnick
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 769 of file users.cpp. +

    +References FOREACH_RESULT, kill_link(), matches_qline(), InspIRCd::Parser, connection::registered, InspIRCd::stats, and serverstats::statsCollisions. +

    +Referenced by Server::ChangeUserNick().

    00770 {
    +00771         char nick[MAXBUF];
    +00772         int MOD_RESULT = 0;
    +00773 
    +00774         strcpy(nick,"");
    +00775 
    +00776         FOREACH_RESULT(OnUserPreNick(user,newnick));
    +00777         if (MOD_RESULT) {
    +00778                 ServerInstance->stats->statsCollisions++;
    +00779                 kill_link(user,"Nickname collision");
    +00780                 return;
    +00781         }
    +00782         if (matches_qline(newnick))
    +00783         {
    +00784                 ServerInstance->stats->statsCollisions++;
    +00785                 kill_link(user,"Nickname collision");
    +00786                 return;
    +00787         }
    +00788 
    +00789         if (user)
    +00790         {
    +00791                 if (newnick)
    +00792                 {
    +00793                         strncpy(nick,newnick,MAXBUF);
    +00794                 }
    +00795                 if (user->registered == 7)
    +00796                 {
    +00797                         char* pars[1];
    +00798                         pars[0] = nick;
    +00799                         std::string cmd = "NICK";
    +00800                         ServerInstance->Parser->CallHandler(cmd,pars,1,user);
    +00801                 }
    +00802         }
    +00803 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + +
    void FullConnectUser userrec user  ) 
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 647 of file users.cpp. +

    +References DEBUG, connection::fd, FOREACH_MOD, connection::haspassed, connection::host, userrec::ident, connection::idle_lastmsg, connection::ip, kill_link(), kill_link_silent(), log(), matches_exception(), matches_gline(), matches_kline(), ServerConfig::Network, userrec::nick, connection::port, connection::registered, ServerConfig::ServerName, InspIRCd::stats, serverstats::statsConnects, TIME, WriteOpers(), and WriteServ(). +

    +Referenced by ConnectUser().

    00648 {
    +00649         ServerInstance->stats->statsConnects++;
    +00650         user->idle_lastmsg = TIME;
    +00651         log(DEBUG,"ConnectUser: %s",user->nick);
    +00652 
    +00653         if ((strcmp(Passwd(user),"")) && (!user->haspassed))
    +00654         {
    +00655                 kill_link(user,"Invalid password");
    +00656                 return;
    +00657         }
    +00658         if (IsDenied(user))
    +00659         {
    +00660                 kill_link(user,"Unauthorised connection");
    +00661                 return;
    +00662         }
    +00663 
    +00664         char match_against[MAXBUF];
    +00665         snprintf(match_against,MAXBUF,"%s@%s",user->ident,user->host);
    +00666         char* e = matches_exception(match_against);
    +00667         if (!e)
    +00668         {
    +00669                 char* r = matches_gline(match_against);
    +00670                 if (r)
    +00671                 {
    +00672                         char reason[MAXBUF];
    +00673                         snprintf(reason,MAXBUF,"G-Lined: %s",r);
    +00674                         kill_link_silent(user,reason);
    +00675                         return;
    +00676                 }
    +00677                 r = matches_kline(user->host);
    +00678                 if (r)
    +00679                 {
    +00680                         char reason[MAXBUF];
    +00681                         snprintf(reason,MAXBUF,"K-Lined: %s",r);
    +00682                         kill_link_silent(user,reason);
    +00683                         return;
    +00684                 }
    +00685         }
    +00686 
    +00687 
    +00688         WriteServ(user->fd,"NOTICE Auth :Welcome to \002%s\002!",Config->Network);
    +00689         WriteServ(user->fd,"001 %s :Welcome to the %s IRC Network %s!%s@%s",user->nick,Config->Network,user->nick,user->ident,user->host);
    +00690         WriteServ(user->fd,"002 %s :Your host is %s, running version %s",user->nick,Config->ServerName,VERSION);
    +00691         WriteServ(user->fd,"003 %s :This server was created %s %s",user->nick,__TIME__,__DATE__);
    +00692         WriteServ(user->fd,"004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN",user->nick,Config->ServerName,VERSION);
    +00693         // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...
    +00694         std::stringstream v;
    +00695         v << "WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=" << MAXCHANS;
    +00696         v << " MAXBANS=60 NICKLEN=" << NICKMAX;
    +00697         v << " TOPICLEN=" << MAXTOPIC << " KICKLEN=" << MAXKICK << " MAXTARGETS=20 AWAYLEN=" << MAXAWAY << " CHANMODES=ohvb,k,l,psmnti NETWORK=";
    +00698         v << Config->Network;
    +00699         std::string data005 = v.str();
    +00700         FOREACH_MOD On005Numeric(data005);
    +00701         // anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...
    +00702         // so i'd better split it :)
    +00703         std::stringstream out(data005);
    +00704         std::string token = "";
    +00705         std::string line5 = "";
    +00706         int token_counter = 0;
    +00707         while (!out.eof())
    +00708         {
    +00709                 out >> token;
    +00710                 line5 = line5 + token + " ";
    +00711                 token_counter++;
    +00712                 if ((token_counter >= 13) || (out.eof() == true))
    +00713                 {
    +00714                         WriteServ(user->fd,"005 %s %s:are supported by this server",user->nick,line5.c_str());
    +00715                         line5 = "";
    +00716                         token_counter = 0;
    +00717                 }
    +00718         }
    +00719         ShowMOTD(user);
    +00720 
    +00721         // fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out
    +00722         // onto the network and produce 'fake direction'
    +00723         FOREACH_MOD OnUserConnect(user);
    +00724         FOREACH_MOD OnGlobalConnect(user);
    +00725         user->registered = 7;
    +00726         WriteOpers("*** Client connecting on port %lu: %s!%s@%s [%s]",(unsigned long)user->port,user->nick,user->ident,user->host,user->ip);
    +00727 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void kill_link userrec user,
    const char *  r
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 349 of file users.cpp. +

    +References AddWhoWas(), clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), WriteCommonExcept(), and WriteOpers(). +

    +Referenced by AddClient(), force_nickchange(), FullConnectUser(), Server::PseudoToUser(), and Server::QuitUser().

    00350 {
    +00351         user_hash::iterator iter = clientlist.find(user->nick);
    +00352 
    +00353         char reason[MAXBUF];
    +00354 
    +00355         strncpy(reason,r,MAXBUF);
    +00356 
    +00357         if (strlen(reason)>MAXQUIT)
    +00358         {
    +00359                 reason[MAXQUIT-1] = '\0';
    +00360         }
    +00361 
    +00362         log(DEBUG,"kill_link: %s '%s'",user->nick,reason);
    +00363         Write(user->fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,reason);
    +00364         log(DEBUG,"closing fd %lu",(unsigned long)user->fd);
    +00365 
    +00366         if (user->registered == 7) {
    +00367                 FOREACH_MOD OnUserQuit(user,reason);
    +00368                 WriteCommonExcept(user,"QUIT :%s",reason);
    +00369         }
    +00370 
    +00371         user->FlushWriteBuf();
    +00372 
    +00373         FOREACH_MOD OnUserDisconnect(user);
    +00374 
    +00375         if (user->fd > -1)
    +00376         {
    +00377                 if (Config->GetIOHook(user->port))
    +00378                 {
    +00379                         Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
    +00380                 }
    +00381                 ServerInstance->SE->DelFd(user->fd);
    +00382                 user->CloseSocket();
    +00383         }
    +00384 
    +00385         // this must come before the WriteOpers so that it doesnt try to fill their buffer with anything
    +00386         // if they were an oper with +s.
    +00387         if (user->registered == 7) {
    +00388                 purge_empty_chans(user);
    +00389                 // fix by brain: only show local quits because we only show local connects (it just makes SENSE)
    +00390                 if (user->fd > -1)
    +00391                         WriteOpers("*** Client exiting: %s!%s@%s [%s]",user->nick,user->ident,user->host,reason);
    +00392                 AddWhoWas(user);
    +00393         }
    +00394 
    +00395         if (iter != clientlist.end())
    +00396         {
    +00397                 log(DEBUG,"deleting user hash value %lu",(unsigned long)user);
    +00398                 if (user->fd > -1)
    +00399                 {
    +00400                         fd_ref_table[user->fd] = NULL;
    +00401                         if (find(local_users.begin(),local_users.end(),user) != local_users.end())
    +00402                         {
    +00403                                 local_users.erase(find(local_users.begin(),local_users.end(),user));
    +00404                                 log(DEBUG,"Delete local user");
    +00405                         }
    +00406                 }
    +00407                 clientlist.erase(iter);
    +00408         }
    +00409         delete user;
    +00410 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void kill_link_silent userrec user,
    const char *  r
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 412 of file users.cpp. +

    +References clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), and WriteCommonExcept(). +

    +Referenced by FullConnectUser().

    00413 {
    +00414         user_hash::iterator iter = clientlist.find(user->nick);
    +00415 
    +00416         char reason[MAXBUF];
    +00417 
    +00418         strncpy(reason,r,MAXBUF);
    +00419 
    +00420         if (strlen(reason)>MAXQUIT)
    +00421         {
    +00422                 reason[MAXQUIT-1] = '\0';
    +00423         }
    +00424 
    +00425         log(DEBUG,"kill_link: %s '%s'",user->nick,reason);
    +00426         Write(user->fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,reason);
    +00427         log(DEBUG,"closing fd %lu",(unsigned long)user->fd);
    +00428 
    +00429         user->FlushWriteBuf();
    +00430 
    +00431         if (user->registered == 7) {
    +00432                 FOREACH_MOD OnUserQuit(user,reason);
    +00433                 WriteCommonExcept(user,"QUIT :%s",reason);
    +00434         }
    +00435 
    +00436         FOREACH_MOD OnUserDisconnect(user);
    +00437 
    +00438         if (user->fd > -1)
    +00439         {
    +00440                 if (Config->GetIOHook(user->port))
    +00441                 {
    +00442                         Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
    +00443                 }
    +00444                 ServerInstance->SE->DelFd(user->fd);
    +00445                 user->CloseSocket();
    +00446         }
    +00447 
    +00448         if (user->registered == 7) {
    +00449                 purge_empty_chans(user);
    +00450         }
    +00451 
    +00452         if (iter != clientlist.end())
    +00453         {
    +00454                 log(DEBUG,"deleting user hash value %lu",(unsigned long)user);
    +00455                 if (user->fd > -1)
    +00456                 {
    +00457                         fd_ref_table[user->fd] = NULL;
    +00458                         if (find(local_users.begin(),local_users.end(),user) != local_users.end())
    +00459                         {
    +00460                                 log(DEBUG,"Delete local user");
    +00461                                 local_users.erase(find(local_users.begin(),local_users.end(),user));
    +00462                         }
    +00463                 }
    +00464                 clientlist.erase(iter);
    +00465         }
    +00466         delete user;
    +00467 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    userrec* ReHashNick char *  Old,
    char *  New
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 743 of file users.cpp. +

    +References clientlist, DEBUG, and log().

    00744 {
    +00745         //user_hash::iterator newnick;
    +00746         user_hash::iterator oldnick = clientlist.find(Old);
    +00747 
    +00748         log(DEBUG,"ReHashNick: %s %s",Old,New);
    +00749 
    +00750         if (!strcasecmp(Old,New))
    +00751         {
    +00752                 log(DEBUG,"old nick is new nick, skipping");
    +00753                 return oldnick->second;
    +00754         }
    +00755 
    +00756         if (oldnick == clientlist.end()) return NULL; /* doesnt exist */
    +00757 
    +00758         log(DEBUG,"ReHashNick: Found hashed nick %s",Old);
    +00759 
    +00760         userrec* olduser = oldnick->second;
    +00761         clientlist[New] = olduser;
    +00762         clientlist.erase(oldnick);
    +00763 
    +00764         log(DEBUG,"ReHashNick: Nick rehashed as %s",New);
    +00765 
    +00766         return clientlist[New];
    +00767 }
    +
    +

    +

    +


    Variable Documentation

    +

    + + + + +
    + + + + +
    std::vector<userrec*> all_opers
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 54 of file users.cpp. +

    +Referenced by AddOper(), and DeleteOper().

    +

    + + + + +
    + + + + +
    user_hash clientlist
    +
    + + + + +
    +   + + +

    +

    -


    Variable Documentation

    @@ -60,6 +1075,196 @@ Include dependency graph for users.cpp:

    +

    + + + +
    + + + + +
    std::vector<ircd_module*> factory
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    userrec* fd_ref_table[65536]
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    std::vector<userrec*> local_users
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 52 of file users.cpp. +

    +Referenced by AddClient(), kill_link(), and kill_link_silent().

    +

    + + + + +
    + + + + +
    int MODCOUNT
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    std::vector<InspSocket*> module_sockets
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    std::vector<Module*> modules
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    InspIRCd* ServerInstance
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    InspSocket* socket_ref[65535]
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 43 of file socket.cpp.

    @@ -83,7 +1288,78 @@ Include dependency graph for users.cpp:

    Generated on Thu Dec 15 11:14:16 2005 for InspIRCd by  +

    +

    + + + +
    + + + + +
    whowas_hash whowas
    +
    + + + + + +
    +   + + +

    + +

    +Referenced by AddWhoWas().

    +

    + + + + +
    + + + + +
    int WHOWAS_MAX
    +
    + + + + + +
    +   + + +

    +

    +

    + + + + +
    + + + + +
    int WHOWAS_STALE
    +
    + + + + + +
    +   + + +

    +

    +


    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/users_8cpp__incl.map b/docs/module-doc/users_8cpp__incl.map index 622bc529e..10b1319b3 100644 --- a/docs/module-doc/users_8cpp__incl.map +++ b/docs/module-doc/users_8cpp__incl.map @@ -1,6 +1,11 @@ base referer -rect $channels_8h-source.html 408,159 493,185 -rect $connection_8h-source.html 401,108 500,135 -rect $users_8h-source.html 288,209 352,236 -rect $inspircd_8h-source.html 147,260 227,287 -rect $commands_8h-source.html 137,159 236,185 +rect $channels_8h-source.html 600,640 685,667 +rect $connection_8h-source.html 593,260 692,287 +rect $users_8h-source.html 457,564 521,591 +rect $hashcomp_8h-source.html 596,438 689,464 +rect $inspircd_8h-source.html 296,210 376,236 +rect $socketengine_8h-source.html 433,159 545,186 +rect $commands_8h-source.html 287,716 385,743 +rect $typedefs_8h-source.html 144,412 229,439 +rect $message_8h-source.html 293,666 379,692 +rect $xline_8h-source.html 305,767 367,794 diff --git a/docs/module-doc/users_8cpp__incl.md5 b/docs/module-doc/users_8cpp__incl.md5 index 024e4ea0f..b5702ddcc 100644 --- a/docs/module-doc/users_8cpp__incl.md5 +++ b/docs/module-doc/users_8cpp__incl.md5 @@ -1 +1 @@ -92d4da8a60e18559ac0cab66f6d1f6c6 \ No newline at end of file +6b9b901afd1c7a5528dabf33f5a1687e \ No newline at end of file diff --git a/docs/module-doc/users_8h-source.html b/docs/module-doc/users_8h-source.html index 909efa35b..9cf815a35 100644 --- a/docs/module-doc/users_8h-source.html +++ b/docs/module-doc/users_8h-source.html @@ -34,165 +34,180 @@ 00025 00026 #ifndef __USERS_H__ 00027 #define __USERS_H__ -00028 -00029 #define STATUS_OP 4 -00030 #define STATUS_HOP 2 -00031 #define STATUS_VOICE 1 -00032 #define STATUS_NORMAL 0 -00033 -00034 #define CC_ALLOW 0 -00035 #define CC_DENY 1 -00036 -00039 class Invited : public classbase -00040 { -00041 public: -00042 char channel[CHANMAX]; -00043 }; -00044 -00045 -00048 class ConnectClass : public classbase -00049 { -00050 public: -00053 char type; -00056 int registration_timeout; -00059 int flood; -00062 char host[MAXBUF]; -00065 int pingtime; -00068 char pass[MAXBUF]; -00069 -00072 int threshold; +00028 +00029 #include "hashcomp.h" +00030 +00031 #define STATUS_OP 4 +00032 #define STATUS_HOP 2 +00033 #define STATUS_VOICE 1 +00034 #define STATUS_NORMAL 0 +00035 +00036 #define CC_ALLOW 0 +00037 #define CC_DENY 1 +00038 +00039 template<typename T> inline string ConvToStr(const T &in); +00040 +00043 class Invited : public classbase +00044 { +00045 public: +00046 irc::string channel; +00047 }; +00048 +00049 +00052 class ConnectClass : public classbase +00053 { +00054 public: +00057 char type; +00060 int registration_timeout; +00063 int flood; +00066 char host[MAXBUF]; +00069 int pingtime; +00072 char pass[MAXBUF]; 00073 -00076 long sendqmax; +00076 int threshold; 00077 -00080 long recvqmax; -00081 -00082 ConnectClass() -00083 { -00084 registration_timeout = 0; -00085 flood = 0; -00086 pingtime = 0; -00087 threshold = 0; -00088 sendqmax = 0; -00089 recvqmax = 0; -00090 strlcpy(host,"",MAXBUF); -00091 strlcpy(pass,"",MAXBUF); -00092 } -00093 }; -00094 -00097 typedef std::vector<Invited> InvitedList; +00080 long sendqmax; +00081 +00084 long recvqmax; +00085 +00086 ConnectClass() +00087 { +00088 registration_timeout = 0; +00089 flood = 0; +00090 pingtime = 0; +00091 threshold = 0; +00092 sendqmax = 0; +00093 recvqmax = 0; +00094 strlcpy(host,"",MAXBUF); +00095 strlcpy(pass,"",MAXBUF); +00096 } +00097 }; 00098 -00099 -00100 -00103 typedef std::vector<ConnectClass> ClassVector; +00101 typedef std::vector<Invited> InvitedList; +00102 +00103 00104 -00111 class userrec : public connection -00112 { -00113 private: -00114 -00117 InvitedList invites; -00118 public: -00119 -00124 char nick[NICKMAX]; -00125 -00129 char ident[IDENTMAX+2]; -00130 -00134 char dhost[160]; -00135 -00138 char fullname[MAXGECOS+1]; +00107 typedef std::vector<ConnectClass> ClassVector; +00108 +00115 class userrec : public connection +00116 { +00117 private: +00118 +00121 InvitedList invites; +00122 public: +00123 +00128 char nick[NICKMAX]; +00129 +00133 char ident[IDENTMAX+2]; +00134 +00138 char dhost[160]; 00139 -00147 char modes[54]; -00148 -00149 std::vector<ucrec> chans; -00150 -00153 char* server; +00142 char fullname[MAXGECOS+1]; +00143 +00151 char modes[54]; +00152 +00153 std::vector<ucrec> chans; 00154 -00158 char awaymsg[MAXAWAY+1]; -00159 -00164 int flood; -00165 -00170 unsigned int timeout; -00171 -00177 char oper[NICKMAX]; -00178 -00181 bool dns_done; +00157 char* server; +00158 +00162 char awaymsg[MAXAWAY+1]; +00163 +00168 int flood; +00169 +00174 unsigned int timeout; +00175 +00181 char oper[NICKMAX]; 00182 -00185 unsigned int pingmax; +00185 bool dns_done; 00186 -00191 char password[MAXBUF]; -00192 -00197 std::string recvq; -00198 -00202 std::string sendq; -00203 -00206 int lines_in; -00207 time_t reset_due; -00208 long threshold; -00209 -00210 /* Write error string -00211 */ -00212 std::string WriteError; +00189 unsigned int pingmax; +00190 +00195 char password[MAXBUF]; +00196 +00201 std::string recvq; +00202 +00206 std::string sendq; +00207 +00210 int lines_in; +00211 time_t reset_due; +00212 long threshold; 00213 -00216 long sendqmax; +00214 /* Write error string +00215 */ +00216 std::string WriteError; 00217 -00220 long recvqmax; +00220 long sendqmax; 00221 -00222 userrec(); -00223 -00228 virtual char* GetFullHost(); -00229 -00235 virtual char* GetFullRealHost(); -00236 -00239 virtual bool IsInvited(char* channel); +00224 long recvqmax; +00225 +00226 userrec(); +00227 +00232 virtual char* GetFullHost(); +00233 +00239 virtual char* GetFullRealHost(); 00240 -00243 virtual void InviteTo(char* channel); +00243 virtual bool IsInvited(irc::string &channel); 00244 -00249 virtual void RemoveInvite(char* channel); -00250 -00255 bool HasPermission(char* command); -00256 -00259 int ReadData(void* buffer, size_t size); +00247 virtual void InviteTo(irc::string &channel); +00248 +00253 virtual void RemoveInvite(irc::string &channel); +00254 +00259 bool HasPermission(std::string &command); 00260 -00268 bool AddBuffer(std::string a); -00269 -00273 bool BufferIsReady(); -00274 -00277 void ClearBuffer(); +00263 int ReadData(void* buffer, size_t size); +00264 +00272 bool AddBuffer(std::string a); +00273 +00277 bool BufferIsReady(); 00278 -00286 std::string GetBuffer(); -00287 -00293 void SetWriteError(std::string error); -00294 -00298 std::string GetWriteError(); -00299 -00305 void AddWriteBuf(std::string data); -00306 -00313 void FlushWriteBuf(); -00314 -00317 InvitedList* GetInviteList(); +00281 void ClearBuffer(); +00282 +00290 std::string GetBuffer(); +00291 +00297 void SetWriteError(std::string error); +00298 +00302 std::string GetWriteError(); +00303 +00309 void AddWriteBuf(std::string data); +00310 +00317 void FlushWriteBuf(); 00318 -00321 void CloseSocket(); +00321 InvitedList* GetInviteList(); 00322 -00323 virtual ~userrec(); -00324 -00325 #ifdef THREADED_DNS -00326 pthread_t dnsthread; -00327 #endif -00328 }; -00329 -00332 class WhoWasUser -00333 { -00334 public: -00335 char nick[NICKMAX]; -00336 char ident[IDENTMAX+1]; -00337 char dhost[160]; -00338 char host[160]; -00339 char fullname[MAXGECOS+1]; -00340 char server[256]; -00341 time_t signon; -00342 }; -00343 -00344 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +00325 void CloseSocket(); +00326 +00327 virtual ~userrec(); +00328 +00329 #ifdef THREADED_DNS +00330 pthread_t dnsthread; +00331 #endif +00332 }; +00333 +00336 class WhoWasUser +00337 { +00338 public: +00339 char nick[NICKMAX]; +00340 char ident[IDENTMAX+1]; +00341 char dhost[160]; +00342 char host[160]; +00343 char fullname[MAXGECOS+1]; +00344 char server[256]; +00345 time_t signon; +00346 }; +00347 +00348 void AddOper(userrec* user); +00349 void DeleteOper(userrec* user); +00350 void kill_link(userrec *user,const char* r); +00351 void kill_link_silent(userrec *user,const char* r); +00352 void AddWhoWas(userrec* u); +00353 void AddClient(int socket, char* host, int port, bool iscached, char* ip); +00354 void FullConnectUser(userrec* user); +00355 void ConnectUser(userrec *user); +00356 userrec* ReHashNick(char* Old, char* New); +00357 void force_nickchange(userrec* user,const char* newnick); +00358 +00359 #endif +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/users_8h.html b/docs/module-doc/users_8h.html index 62402d7cb..4dac0e456 100644 --- a/docs/module-doc/users_8h.html +++ b/docs/module-doc/users_8h.html @@ -12,29 +12,31 @@ #include "inspstring.h"
    #include "connection.h"
    #include <string>
    +#include "hashcomp.h"

    Include dependency graph for users.h:

    - + +

    This graph shows which files directly or indirectly include this file:

    - - - - - - - - - - - - + + + + + + + + + + + +

    @@ -73,6 +75,30 @@ This graph shows which files directly or indirectly include this file:

    typedef std::vector< ConnectClassClassVector  Holds a complete list of all allow and deny tags from the configuration file (connection classes).
    +

    Functions

    +template<typename T> +string ConvToStr (const T &in) + +void AddOper (userrec *user) + +void DeleteOper (userrec *user) + +void kill_link (userrec *user, const char *r) + +void kill_link_silent (userrec *user, const char *r) + +void AddWhoWas (userrec *u) + +void AddClient (int socket, char *host, int port, bool iscached, char *ip) + +void FullConnectUser (userrec *user) + +void ConnectUser (userrec *user) + +userrecReHashNick (char *Old, char *New) + +void force_nickchange (userrec *user, const char *newnick) +

    Define Documentation

    @@ -97,7 +123,9 @@ This graph shows which files directly or indirectly include this file:

    -Definition at line 34 of file users.h. +Definition at line 36 of file users.h. +

    +Referenced by AddClient().

    @@ -122,7 +150,7 @@ Definition at line 34 of fi

    -Definition at line 35 of file users.h. +Definition at line 37 of file users.h.

    @@ -147,7 +175,7 @@ Definition at line 35 of fi

    -Definition at line 30 of file users.h. +Definition at line 32 of file users.h.

    Referenced by kick_channel(). @@ -174,7 +202,7 @@ Referenced by kick_channel

    -Definition at line 32 of file users.h. +Definition at line 34 of file users.h.

    @@ -199,7 +227,7 @@ Definition at line 32 of fi

    -Definition at line 29 of file users.h. +Definition at line 31 of file users.h.

    @@ -224,7 +252,7 @@ Definition at line 29 of fi

    -Definition at line 31 of file users.h. +Definition at line 33 of file users.h.


    Typedef Documentation

    @@ -252,7 +280,7 @@ Holds a complete list of all allow and deny tags from the configuration file (co

    -Definition at line 103 of file users.h. +Definition at line 107 of file users.h.

    @@ -279,10 +307,914 @@ Holds a complete list of all channels to which a user has been invited and has n

    -Definition at line 97 of file users.h. +Definition at line 101 of file users.h. + + +


    Function Documentation

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    void AddClient int  socket,
    char *  host,
    int  port,
    bool  iscached,
    char *  ip
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 524 of file users.cpp. +

    +References SocketEngine::AddFd(), CC_ALLOW, ucrec::channel, ServerConfig::Classes, clientlist, ConvToStr(), DEBUG, ServerConfig::dns_timeout, FindServerNamePtr(), kill_link(), local_users, log(), matches_exception(), matches_zline(), InspIRCd::SE, ServerConfig::ServerName, ServerConfig::SoftLimit, TIME, ucrec::uc_modes, and X_ESTAB_CLIENT.

    00525 {
    +00526         string tempnick;
    +00527         char tn2[MAXBUF];
    +00528         user_hash::iterator iter;
    +00529 
    +00530         tempnick = ConvToStr(socket) + "-unknown";
    +00531         sprintf(tn2,"%lu-unknown",(unsigned long)socket);
    +00532 
    +00533         iter = clientlist.find(tempnick);
    +00534 
    +00535         // fix by brain.
    +00536         // as these nicknames are 'RFC impossible', we can be sure nobody is going to be
    +00537         // using one as a registered connection. As theyre per fd, we can also safely assume
    +00538         // that we wont have collisions. Therefore, if the nick exists in the list, its only
    +00539         // used by a dead socket, erase the iterator so that the new client may reclaim it.
    +00540         // this was probably the cause of 'server ignores me when i hammer it with reconnects'
    +00541         // issue in earlier alphas/betas
    +00542         if (iter != clientlist.end())
    +00543         {
    +00544                 userrec* goner = iter->second;
    +00545                 delete goner;
    +00546                 clientlist.erase(iter);
    +00547         }
    +00548 
    +00549         /*
    +00550          * It is OK to access the value here this way since we know
    +00551          * it exists, we just created it above.
    +00552          *
    +00553          * At NO other time should you access a value in a map or a
    +00554          * hash_map this way.
    +00555          */
    +00556         clientlist[tempnick] = new userrec();
    +00557 
    +00558         log(DEBUG,"AddClient: %lu %s %d %s",(unsigned long)socket,host,port,ip);
    +00559 
    +00560         clientlist[tempnick]->fd = socket;
    +00561         strlcpy(clientlist[tempnick]->nick, tn2,NICKMAX);
    +00562         strlcpy(clientlist[tempnick]->host, host,160);
    +00563         strlcpy(clientlist[tempnick]->dhost, host,160);
    +00564         clientlist[tempnick]->server = (char*)FindServerNamePtr(Config->ServerName);
    +00565         strlcpy(clientlist[tempnick]->ident, "unknown",IDENTMAX);
    +00566         clientlist[tempnick]->registered = 0;
    +00567         clientlist[tempnick]->signon = TIME + Config->dns_timeout;
    +00568         clientlist[tempnick]->lastping = 1;
    +00569         clientlist[tempnick]->port = port;
    +00570         strlcpy(clientlist[tempnick]->ip,ip,16);
    +00571 
    +00572         // set the registration timeout for this user
    +00573         unsigned long class_regtimeout = 90;
    +00574         int class_flood = 0;
    +00575         long class_threshold = 5;
    +00576         long class_sqmax = 262144;      // 256kb
    +00577         long class_rqmax = 4096;        // 4k
    +00578 
    +00579         for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++)
    +00580         {
    +00581                 if (match(clientlist[tempnick]->host,i->host) && (i->type == CC_ALLOW))
    +00582                 {
    +00583                         class_regtimeout = (unsigned long)i->registration_timeout;
    +00584                         class_flood = i->flood;
    +00585                         clientlist[tempnick]->pingmax = i->pingtime;
    +00586                         class_threshold = i->threshold;
    +00587                         class_sqmax = i->sendqmax;
    +00588                         class_rqmax = i->recvqmax;
    +00589                         break;
    +00590                 }
    +00591         }
    +00592 
    +00593         clientlist[tempnick]->nping = TIME+clientlist[tempnick]->pingmax + Config->dns_timeout;
    +00594         clientlist[tempnick]->timeout = TIME+class_regtimeout;
    +00595         clientlist[tempnick]->flood = class_flood;
    +00596         clientlist[tempnick]->threshold = class_threshold;
    +00597         clientlist[tempnick]->sendqmax = class_sqmax;
    +00598         clientlist[tempnick]->recvqmax = class_rqmax;
    +00599 
    +00600         ucrec a;
    +00601         a.channel = NULL;
    +00602         a.uc_modes = 0;
    +00603         for (int i = 0; i < MAXCHANS; i++)
    +00604                 clientlist[tempnick]->chans.push_back(a);
    +00605 
    +00606         if (clientlist.size() > Config->SoftLimit)
    +00607         {
    +00608                 kill_link(clientlist[tempnick],"No more connections allowed");
    +00609                 return;
    +00610         }
    +00611 
    +00612         if (clientlist.size() >= MAXCLIENTS)
    +00613         {
    +00614                 kill_link(clientlist[tempnick],"No more connections allowed");
    +00615                 return;
    +00616         }
    +00617 
    +00618         // this is done as a safety check to keep the file descriptors within range of fd_ref_table.
    +00619         // its a pretty big but for the moment valid assumption:
    +00620         // file descriptors are handed out starting at 0, and are recycled as theyre freed.
    +00621         // therefore if there is ever an fd over 65535, 65536 clients must be connected to the
    +00622         // irc server at once (or the irc server otherwise initiating this many connections, files etc)
    +00623         // which for the time being is a physical impossibility (even the largest networks dont have more
    +00624         // than about 10,000 users on ONE server!)
    +00625         if ((unsigned)socket > 65534)
    +00626         {
    +00627                 kill_link(clientlist[tempnick],"Server is full");
    +00628                 return;
    +00629         }
    +00630         char* e = matches_exception(ip);
    +00631         if (!e)
    +00632         {
    +00633                 char* r = matches_zline(ip);
    +00634                 if (r)
    +00635                 {
    +00636                         char reason[MAXBUF];
    +00637                         snprintf(reason,MAXBUF,"Z-Lined: %s",r);
    +00638                         kill_link(clientlist[tempnick],reason);
    +00639                         return;
    +00640                 }
    +00641         }
    +00642         fd_ref_table[socket] = clientlist[tempnick];
    +00643         local_users.push_back(clientlist[tempnick]);
    +00644         ServerInstance->SE->AddFd(socket,true,X_ESTAB_CLIENT);
    +00645 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + +
    void AddOper userrec user  ) 
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 330 of file users.cpp. +

    +References all_opers, DEBUG, and log().

    00331 {
    +00332         log(DEBUG,"Oper added to optimization list");
    +00333         all_opers.push_back(user);
    +00334 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + +
    void AddWhoWas userrec u  ) 
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 471 of file users.cpp. +

    +References DEBUG, userrec::dhost, WhoWasUser::dhost, userrec::fullname, WhoWasUser::fullname, connection::host, WhoWasUser::host, userrec::ident, WhoWasUser::ident, log(), WhoWasUser::nick, userrec::nick, userrec::server, WhoWasUser::server, connection::signon, WhoWasUser::signon, TIME, whowas, WHOWAS_MAX, and WHOWAS_STALE. +

    +Referenced by kill_link().

    00472 {
    +00473         whowas_hash::iterator iter = whowas.find(u->nick);
    +00474         WhoWasUser *a = new WhoWasUser();
    +00475         strlcpy(a->nick,u->nick,NICKMAX);
    +00476         strlcpy(a->ident,u->ident,IDENTMAX);
    +00477         strlcpy(a->dhost,u->dhost,160);
    +00478         strlcpy(a->host,u->host,160);
    +00479         strlcpy(a->fullname,u->fullname,MAXGECOS);
    +00480         strlcpy(a->server,u->server,256);
    +00481         a->signon = u->signon;
    +00482 
    +00483         /* MAX_WHOWAS:   max number of /WHOWAS items
    +00484          * WHOWAS_STALE: number of hours before a WHOWAS item is marked as stale and
    +00485          *               can be replaced by a newer one
    +00486          */
    +00487 
    +00488         if (iter == whowas.end())
    +00489         {
    +00490                 if (whowas.size() >= (unsigned)WHOWAS_MAX)
    +00491                 {
    +00492                         for (whowas_hash::iterator i = whowas.begin(); i != whowas.end(); i++)
    +00493                         {
    +00494                                 // 3600 seconds in an hour ;)
    +00495                                 if ((i->second->signon)<(TIME-(WHOWAS_STALE*3600)))
    +00496                                 {
    +00497                                         // delete the old one
    +00498                                         if (i->second) delete i->second;
    +00499                                         // replace with new one
    +00500                                         i->second = a;
    +00501                                         log(DEBUG,"added WHOWAS entry, purged an old record");
    +00502                                         return;
    +00503                                 }
    +00504                         }
    +00505                         // no space left and user doesnt exist. Don't leave ram in use!
    +00506                         log(DEBUG,"Not able to update whowas (list at WHOWAS_MAX entries and trying to add new?), freeing excess ram");
    +00507                         delete a;
    +00508                 }
    +00509                 else
    +00510                 {
    +00511                         log(DEBUG,"added fresh WHOWAS entry");
    +00512                         whowas[a->nick] = a;
    +00513                 }
    +00514         }
    +00515         else
    +00516         {
    +00517                 log(DEBUG,"updated WHOWAS entry");
    +00518                 if (iter->second) delete iter->second;
    +00519                 iter->second = a;
    +00520         }
    +00521 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + +
    void ConnectUser userrec user  ) 
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 731 of file users.cpp. +

    +References userrec::dns_done, FullConnectUser(), and connection::registered.

    00732 {
    +00733         // dns is already done, things are fast. no need to wait for dns to complete just pass them straight on
    +00734         if ((user->dns_done) && (user->registered >= 3) && (AllModulesReportReady(user)))
    +00735         {
    +00736                 FullConnectUser(user);
    +00737         }
    +00738 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + + + + +
    +template<typename T>
    string ConvToStr const T &  in  )  [inline]
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 56 of file users.cpp. +

    +Referenced by AddClient().

    00057 {
    +00058         stringstream tmp;
    +00059         if (!(tmp << in)) return string();
    +00060         return tmp.str();
    +00061 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + +
    void DeleteOper userrec user  ) 
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 336 of file users.cpp. +

    +References all_opers, DEBUG, and log().

    00337 {
    +00338         for (std::vector<userrec*>::iterator a = all_opers.begin(); a < all_opers.end(); a++)
    +00339         {
    +00340                 if (*a == user)
    +00341                 {
    +00342                         log(DEBUG,"Oper removed from optimization list");
    +00343                         all_opers.erase(a);
    +00344                         return;
    +00345                 }
    +00346         }
    +00347 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void force_nickchange userrec user,
    const char *  newnick
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 769 of file users.cpp. +

    +References FOREACH_RESULT, kill_link(), matches_qline(), InspIRCd::Parser, connection::registered, InspIRCd::stats, and serverstats::statsCollisions. +

    +Referenced by Server::ChangeUserNick().

    00770 {
    +00771         char nick[MAXBUF];
    +00772         int MOD_RESULT = 0;
    +00773 
    +00774         strcpy(nick,"");
    +00775 
    +00776         FOREACH_RESULT(OnUserPreNick(user,newnick));
    +00777         if (MOD_RESULT) {
    +00778                 ServerInstance->stats->statsCollisions++;
    +00779                 kill_link(user,"Nickname collision");
    +00780                 return;
    +00781         }
    +00782         if (matches_qline(newnick))
    +00783         {
    +00784                 ServerInstance->stats->statsCollisions++;
    +00785                 kill_link(user,"Nickname collision");
    +00786                 return;
    +00787         }
    +00788 
    +00789         if (user)
    +00790         {
    +00791                 if (newnick)
    +00792                 {
    +00793                         strncpy(nick,newnick,MAXBUF);
    +00794                 }
    +00795                 if (user->registered == 7)
    +00796                 {
    +00797                         char* pars[1];
    +00798                         pars[0] = nick;
    +00799                         std::string cmd = "NICK";
    +00800                         ServerInstance->Parser->CallHandler(cmd,pars,1,user);
    +00801                 }
    +00802         }
    +00803 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + +
    void FullConnectUser userrec user  ) 
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 647 of file users.cpp. +

    +References DEBUG, connection::fd, FOREACH_MOD, connection::haspassed, connection::host, userrec::ident, connection::idle_lastmsg, connection::ip, kill_link(), kill_link_silent(), log(), matches_exception(), matches_gline(), matches_kline(), ServerConfig::Network, userrec::nick, connection::port, connection::registered, ServerConfig::ServerName, InspIRCd::stats, serverstats::statsConnects, TIME, WriteOpers(), and WriteServ(). +

    +Referenced by ConnectUser().

    00648 {
    +00649         ServerInstance->stats->statsConnects++;
    +00650         user->idle_lastmsg = TIME;
    +00651         log(DEBUG,"ConnectUser: %s",user->nick);
    +00652 
    +00653         if ((strcmp(Passwd(user),"")) && (!user->haspassed))
    +00654         {
    +00655                 kill_link(user,"Invalid password");
    +00656                 return;
    +00657         }
    +00658         if (IsDenied(user))
    +00659         {
    +00660                 kill_link(user,"Unauthorised connection");
    +00661                 return;
    +00662         }
    +00663 
    +00664         char match_against[MAXBUF];
    +00665         snprintf(match_against,MAXBUF,"%s@%s",user->ident,user->host);
    +00666         char* e = matches_exception(match_against);
    +00667         if (!e)
    +00668         {
    +00669                 char* r = matches_gline(match_against);
    +00670                 if (r)
    +00671                 {
    +00672                         char reason[MAXBUF];
    +00673                         snprintf(reason,MAXBUF,"G-Lined: %s",r);
    +00674                         kill_link_silent(user,reason);
    +00675                         return;
    +00676                 }
    +00677                 r = matches_kline(user->host);
    +00678                 if (r)
    +00679                 {
    +00680                         char reason[MAXBUF];
    +00681                         snprintf(reason,MAXBUF,"K-Lined: %s",r);
    +00682                         kill_link_silent(user,reason);
    +00683                         return;
    +00684                 }
    +00685         }
    +00686 
    +00687 
    +00688         WriteServ(user->fd,"NOTICE Auth :Welcome to \002%s\002!",Config->Network);
    +00689         WriteServ(user->fd,"001 %s :Welcome to the %s IRC Network %s!%s@%s",user->nick,Config->Network,user->nick,user->ident,user->host);
    +00690         WriteServ(user->fd,"002 %s :Your host is %s, running version %s",user->nick,Config->ServerName,VERSION);
    +00691         WriteServ(user->fd,"003 %s :This server was created %s %s",user->nick,__TIME__,__DATE__);
    +00692         WriteServ(user->fd,"004 %s %s %s iowghraAsORVSxNCWqBzvdHtGI lvhopsmntikrRcaqOALQbSeKVfHGCuzN",user->nick,Config->ServerName,VERSION);
    +00693         // the neatest way to construct the initial 005 numeric, considering the number of configure constants to go in it...
    +00694         std::stringstream v;
    +00695         v << "WALLCHOPS MODES=13 CHANTYPES=# PREFIX=(ohv)@%+ MAP SAFELIST MAXCHANNELS=" << MAXCHANS;
    +00696         v << " MAXBANS=60 NICKLEN=" << NICKMAX;
    +00697         v << " TOPICLEN=" << MAXTOPIC << " KICKLEN=" << MAXKICK << " MAXTARGETS=20 AWAYLEN=" << MAXAWAY << " CHANMODES=ohvb,k,l,psmnti NETWORK=";
    +00698         v << Config->Network;
    +00699         std::string data005 = v.str();
    +00700         FOREACH_MOD On005Numeric(data005);
    +00701         // anfl @ #ratbox, efnet reminded me that according to the RFC this cant contain more than 13 tokens per line...
    +00702         // so i'd better split it :)
    +00703         std::stringstream out(data005);
    +00704         std::string token = "";
    +00705         std::string line5 = "";
    +00706         int token_counter = 0;
    +00707         while (!out.eof())
    +00708         {
    +00709                 out >> token;
    +00710                 line5 = line5 + token + " ";
    +00711                 token_counter++;
    +00712                 if ((token_counter >= 13) || (out.eof() == true))
    +00713                 {
    +00714                         WriteServ(user->fd,"005 %s %s:are supported by this server",user->nick,line5.c_str());
    +00715                         line5 = "";
    +00716                         token_counter = 0;
    +00717                 }
    +00718         }
    +00719         ShowMOTD(user);
    +00720 
    +00721         // fix 3 by brain, move registered = 7 below these so that spurious modes and host changes dont go out
    +00722         // onto the network and produce 'fake direction'
    +00723         FOREACH_MOD OnUserConnect(user);
    +00724         FOREACH_MOD OnGlobalConnect(user);
    +00725         user->registered = 7;
    +00726         WriteOpers("*** Client connecting on port %lu: %s!%s@%s [%s]",(unsigned long)user->port,user->nick,user->ident,user->host,user->ip);
    +00727 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void kill_link userrec user,
    const char *  r
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 349 of file users.cpp. +

    +References AddWhoWas(), clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), WriteCommonExcept(), and WriteOpers(). +

    +Referenced by AddClient(), force_nickchange(), FullConnectUser(), Server::PseudoToUser(), and Server::QuitUser().

    00350 {
    +00351         user_hash::iterator iter = clientlist.find(user->nick);
    +00352 
    +00353         char reason[MAXBUF];
    +00354 
    +00355         strncpy(reason,r,MAXBUF);
    +00356 
    +00357         if (strlen(reason)>MAXQUIT)
    +00358         {
    +00359                 reason[MAXQUIT-1] = '\0';
    +00360         }
    +00361 
    +00362         log(DEBUG,"kill_link: %s '%s'",user->nick,reason);
    +00363         Write(user->fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,reason);
    +00364         log(DEBUG,"closing fd %lu",(unsigned long)user->fd);
    +00365 
    +00366         if (user->registered == 7) {
    +00367                 FOREACH_MOD OnUserQuit(user,reason);
    +00368                 WriteCommonExcept(user,"QUIT :%s",reason);
    +00369         }
    +00370 
    +00371         user->FlushWriteBuf();
    +00372 
    +00373         FOREACH_MOD OnUserDisconnect(user);
    +00374 
    +00375         if (user->fd > -1)
    +00376         {
    +00377                 if (Config->GetIOHook(user->port))
    +00378                 {
    +00379                         Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
    +00380                 }
    +00381                 ServerInstance->SE->DelFd(user->fd);
    +00382                 user->CloseSocket();
    +00383         }
    +00384 
    +00385         // this must come before the WriteOpers so that it doesnt try to fill their buffer with anything
    +00386         // if they were an oper with +s.
    +00387         if (user->registered == 7) {
    +00388                 purge_empty_chans(user);
    +00389                 // fix by brain: only show local quits because we only show local connects (it just makes SENSE)
    +00390                 if (user->fd > -1)
    +00391                         WriteOpers("*** Client exiting: %s!%s@%s [%s]",user->nick,user->ident,user->host,reason);
    +00392                 AddWhoWas(user);
    +00393         }
    +00394 
    +00395         if (iter != clientlist.end())
    +00396         {
    +00397                 log(DEBUG,"deleting user hash value %lu",(unsigned long)user);
    +00398                 if (user->fd > -1)
    +00399                 {
    +00400                         fd_ref_table[user->fd] = NULL;
    +00401                         if (find(local_users.begin(),local_users.end(),user) != local_users.end())
    +00402                         {
    +00403                                 local_users.erase(find(local_users.begin(),local_users.end(),user));
    +00404                                 log(DEBUG,"Delete local user");
    +00405                         }
    +00406                 }
    +00407                 clientlist.erase(iter);
    +00408         }
    +00409         delete user;
    +00410 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    void kill_link_silent userrec user,
    const char *  r
    +
    + + + + + +
    +   + + +

    + +

    +Definition at line 412 of file users.cpp. +

    +References clientlist, userrec::CloseSocket(), DEBUG, SocketEngine::DelFd(), connection::fd, userrec::FlushWriteBuf(), FOREACH_MOD, ServerConfig::GetIOHook(), connection::host, userrec::ident, local_users, log(), userrec::nick, Module::OnRawSocketClose(), connection::port, connection::registered, InspIRCd::SE, Write(), and WriteCommonExcept(). +

    +Referenced by FullConnectUser().

    00413 {
    +00414         user_hash::iterator iter = clientlist.find(user->nick);
    +00415 
    +00416         char reason[MAXBUF];
    +00417 
    +00418         strncpy(reason,r,MAXBUF);
    +00419 
    +00420         if (strlen(reason)>MAXQUIT)
    +00421         {
    +00422                 reason[MAXQUIT-1] = '\0';
    +00423         }
    +00424 
    +00425         log(DEBUG,"kill_link: %s '%s'",user->nick,reason);
    +00426         Write(user->fd,"ERROR :Closing link (%s@%s) [%s]",user->ident,user->host,reason);
    +00427         log(DEBUG,"closing fd %lu",(unsigned long)user->fd);
    +00428 
    +00429         user->FlushWriteBuf();
    +00430 
    +00431         if (user->registered == 7) {
    +00432                 FOREACH_MOD OnUserQuit(user,reason);
    +00433                 WriteCommonExcept(user,"QUIT :%s",reason);
    +00434         }
    +00435 
    +00436         FOREACH_MOD OnUserDisconnect(user);
    +00437 
    +00438         if (user->fd > -1)
    +00439         {
    +00440                 if (Config->GetIOHook(user->port))
    +00441                 {
    +00442                         Config->GetIOHook(user->port)->OnRawSocketClose(user->fd);
    +00443                 }
    +00444                 ServerInstance->SE->DelFd(user->fd);
    +00445                 user->CloseSocket();
    +00446         }
    +00447 
    +00448         if (user->registered == 7) {
    +00449                 purge_empty_chans(user);
    +00450         }
    +00451 
    +00452         if (iter != clientlist.end())
    +00453         {
    +00454                 log(DEBUG,"deleting user hash value %lu",(unsigned long)user);
    +00455                 if (user->fd > -1)
    +00456                 {
    +00457                         fd_ref_table[user->fd] = NULL;
    +00458                         if (find(local_users.begin(),local_users.end(),user) != local_users.end())
    +00459                         {
    +00460                                 log(DEBUG,"Delete local user");
    +00461                                 local_users.erase(find(local_users.begin(),local_users.end(),user));
    +00462                         }
    +00463                 }
    +00464                 clientlist.erase(iter);
    +00465         }
    +00466         delete user;
    +00467 }
    +
    +

    +

    +

    + + + + +
    + + + + + + + + + + + + + + + + + + +
    userrec* ReHashNick char *  Old,
    char *  New
    +
    + + + +
    +   + + +

    + +

    +Definition at line 743 of file users.cpp. +

    +References clientlist, DEBUG, and log().

    00744 {
    +00745         //user_hash::iterator newnick;
    +00746         user_hash::iterator oldnick = clientlist.find(Old);
    +00747 
    +00748         log(DEBUG,"ReHashNick: %s %s",Old,New);
    +00749 
    +00750         if (!strcasecmp(Old,New))
    +00751         {
    +00752                 log(DEBUG,"old nick is new nick, skipping");
    +00753                 return oldnick->second;
    +00754         }
    +00755 
    +00756         if (oldnick == clientlist.end()) return NULL; /* doesnt exist */
    +00757 
    +00758         log(DEBUG,"ReHashNick: Found hashed nick %s",Old);
    +00759 
    +00760         userrec* olduser = oldnick->second;
    +00761         clientlist[New] = olduser;
    +00762         clientlist.erase(oldnick);
    +00763 
    +00764         log(DEBUG,"ReHashNick: Nick rehashed as %s",New);
    +00765 
    +00766         return clientlist[New];
    +00767 }
    +
    +

    +

    -


    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/users_8h__dep__incl.map b/docs/module-doc/users_8h__dep__incl.map index 26ba17778..8d3acb66f 100644 --- a/docs/module-doc/users_8h__dep__incl.map +++ b/docs/module-doc/users_8h__dep__incl.map @@ -1,13 +1,13 @@ base referer -rect $channels_8cpp-source.html 413,412 512,439 -rect $modules_8cpp-source.html 413,311 512,337 -rect $users_8cpp-source.html 280,159 360,185 -rect $commands_8h-source.html 125,108 224,135 -rect $globals_8h-source.html 137,361 212,388 -rect $typedefs_8h-source.html 277,361 363,388 -rect $inspircd_8h-source.html 135,209 215,236 -rect $cull__list_8h-source.html 136,412 213,439 -rect $message_8h-source.html 277,564 363,591 -rect $mode_8h-source.html 287,260 353,287 -rect $userprocess_8h-source.html 123,564 227,591 -rect $xline_8h-source.html 289,463 351,489 +rect $channels_8cpp-source.html 531,235 629,261 +rect $modules_8cpp-source.html 531,387 629,413 +rect $users_8cpp-source.html 540,564 620,591 +rect $commands_8h-source.html 379,615 477,641 +rect $cull__list_8h-source.html 121,311 199,337 +rect $globals_8h-source.html 249,159 324,185 +rect $typedefs_8h-source.html 385,260 471,287 +rect $inspircd_8h-source.html 247,412 327,439 +rect $userprocess_8h-source.html 376,463 480,489 +rect $mode_8h-source.html 127,361 193,388 +rect $message_8h-source.html 385,311 471,337 +rect $xline_8h-source.html 397,513 459,540 diff --git a/docs/module-doc/users_8h__dep__incl.md5 b/docs/module-doc/users_8h__dep__incl.md5 index 77a2c3cd3..9619fc58f 100644 --- a/docs/module-doc/users_8h__dep__incl.md5 +++ b/docs/module-doc/users_8h__dep__incl.md5 @@ -1 +1 @@ -c6314acd91a09c69378b916056cacc46 \ No newline at end of file +b1eec238e42f7d91bc0d7f5a3b91a235 \ No newline at end of file diff --git a/docs/module-doc/users_8h__incl.map b/docs/module-doc/users_8h__incl.map index a05768f57..de04ab43e 100644 --- a/docs/module-doc/users_8h__incl.map +++ b/docs/module-doc/users_8h__incl.map @@ -1,3 +1,4 @@ base referer rect $channels_8h-source.html 128,108 213,135 -rect $connection_8h-source.html 121,58 220,84 +rect $connection_8h-source.html 121,159 220,185 +rect $hashcomp_8h-source.html 124,57 217,84 diff --git a/docs/module-doc/users_8h__incl.md5 b/docs/module-doc/users_8h__incl.md5 index 0182762ef..da43ba319 100644 --- a/docs/module-doc/users_8h__incl.md5 +++ b/docs/module-doc/users_8h__incl.md5 @@ -1 +1 @@ -8a804bf9eb838d5cc63aad0c666de3ab \ No newline at end of file +24445b415c7267f43aad5464edd11467 \ No newline at end of file diff --git a/docs/module-doc/xline_8h-source.html b/docs/module-doc/xline_8h-source.html index 9d4e52ad3..bacb63213 100644 --- a/docs/module-doc/xline_8h-source.html +++ b/docs/module-doc/xline_8h-source.html @@ -129,7 +129,7 @@ 00161 bool qline_make_global(const char* nickname); 00162 00163 #endif -

    Generated on Thu Dec 15 11:14:14 2005 for InspIRCd by  +

    Generated on Mon Dec 19 18:02:13 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/xline_8h.html b/docs/module-doc/xline_8h.html index 7f39624d3..0785c9614 100644 --- a/docs/module-doc/xline_8h.html +++ b/docs/module-doc/xline_8h.html @@ -20,15 +20,17 @@ Include dependency graph for xline.h:

    - - + + +

    This graph shows which files directly or indirectly include this file:

    - - + + +

    @@ -172,7 +174,7 @@ This graph shows which files directly or indirectly include this file:

    -Referenced by Server::AddELine(). +Referenced by Server::AddELine().

    @@ -223,7 +225,7 @@ Referenced by Server::AddEL

    -Referenced by Server::AddGLine(). +Referenced by Server::AddGLine().

    @@ -274,7 +276,7 @@ Referenced by Server::AddGL

    -Referenced by Server::AddKLine(). +Referenced by Server::AddKLine().

    @@ -325,7 +327,7 @@ Referenced by Server::AddKL

    -Referenced by Server::AddQLine(). +Referenced by Server::AddQLine().

    @@ -376,7 +378,7 @@ Referenced by Server::AddQL

    -Referenced by Server::AddZLine(). +Referenced by Server::AddZLine().

    @@ -434,7 +436,7 @@ Referenced by Server::AddZL

    -Referenced by Server::DelELine(). +Referenced by Server::DelELine().

    @@ -464,7 +466,7 @@ Referenced by Server::DelEL

    -Referenced by Server::DelGLine(). +Referenced by Server::DelGLine().

    @@ -494,7 +496,7 @@ Referenced by Server::DelGL

    -Referenced by Server::DelKLine(). +Referenced by Server::DelKLine().

    @@ -524,7 +526,7 @@ Referenced by Server::DelKL

    -Referenced by Server::DelQLine(). +Referenced by Server::DelQLine().

    @@ -554,7 +556,7 @@ Referenced by Server::DelQL

    -Referenced by Server::DelZLine(). +Referenced by Server::DelZLine().

    @@ -683,7 +685,9 @@ Referenced by Server::DelZL

    - + +

    +Referenced by AddClient(), and FullConnectUser().

    @@ -711,7 +715,9 @@ Referenced by Server::DelZL

    - + +

    +Referenced by FullConnectUser().

    @@ -739,7 +745,9 @@ Referenced by Server::DelZL

    - + +

    +Referenced by FullConnectUser().

    @@ -767,7 +775,9 @@ Referenced by Server::DelZL

    - + +

    +Referenced by force_nickchange().

    @@ -795,7 +805,9 @@ Referenced by Server::DelZL

    - + +

    +Referenced by AddClient().

    @@ -1221,7 +1233,7 @@ Definition at line 33 of fi Definition at line 34 of file xline.h. -


    Generated on Thu Dec 15 11:14:17 2005 for InspIRCd by  +
    Generated on Mon Dec 19 18:02:14 2005 for InspIRCd by  doxygen 1.4.4-20050815
    diff --git a/docs/module-doc/xline_8h__dep__incl.map b/docs/module-doc/xline_8h__dep__incl.map index f174ea10d..3000d3ddf 100644 --- a/docs/module-doc/xline_8h__dep__incl.map +++ b/docs/module-doc/xline_8h__dep__incl.map @@ -1,3 +1,4 @@ base referer -rect $channels_8cpp-source.html 120,7 219,34 -rect $modules_8cpp-source.html 120,58 219,84 +rect $channels_8cpp-source.html 120,7 219,33 +rect $modules_8cpp-source.html 120,57 219,84 +rect $users_8cpp-source.html 130,108 210,135 diff --git a/docs/module-doc/xline_8h__dep__incl.md5 b/docs/module-doc/xline_8h__dep__incl.md5 index 6d471411b..842472c9b 100644 --- a/docs/module-doc/xline_8h__dep__incl.md5 +++ b/docs/module-doc/xline_8h__dep__incl.md5 @@ -1 +1 @@ -94b61de8eaa885e874543fc93fa71194 \ No newline at end of file +c8590565d44b3716ffcd0bac63383582 \ No newline at end of file diff --git a/docs/module-doc/xline_8h__incl.map b/docs/module-doc/xline_8h__incl.map index 48d749ff5..a0ec2f1b6 100644 --- a/docs/module-doc/xline_8h__incl.map +++ b/docs/module-doc/xline_8h__incl.map @@ -1,4 +1,5 @@ base referer rect $users_8h-source.html 124,260 188,287 -rect $channels_8h-source.html 248,210 333,236 -rect $connection_8h-source.html 241,362 340,388 +rect $channels_8h-source.html 248,209 333,236 +rect $connection_8h-source.html 241,412 340,439 +rect $hashcomp_8h-source.html 244,311 337,337 diff --git a/docs/module-doc/xline_8h__incl.md5 b/docs/module-doc/xline_8h__incl.md5 index 19d6c530a..db8dff57e 100644 --- a/docs/module-doc/xline_8h__incl.md5 +++ b/docs/module-doc/xline_8h__incl.md5 @@ -1 +1 @@ -c19192f2db3c2ad86cf37af32b2260b3 \ No newline at end of file +923f635ea1c21953bb7135ac47173dce \ No newline at end of file