* | Inspire Internet Relay Chat Daemon |
* +------------------------------------+
*
- * InspIRCd: (C) 2002-2009 InspIRCd Development Team
+ * InspIRCd: (C) 2002-2010 InspIRCd Development Team
* See: http://wiki.inspircd.org/Credits
*
* This program is free but copyrighted software; see
*/
enum ServerState { CONNECTING, WAIT_AUTH_1, WAIT_AUTH_2, CONNECTED };
+struct CapabData
+{
+ std::string ModuleList; /* Required module list of other server from CAPAB */
+ std::string OptModuleList; /* Optional module list of other server from CAPAB */
+ std::string ChanModes;
+ std::string UserModes;
+ std::map<std::string,std::string> CapKeys; /* CAPAB keys from other server */
+ std::string ourchallenge; /* Challenge sent for challenge/response */
+ std::string theirchallenge; /* Challenge recv for challenge/response */
+ std::string OutboundPass; /* Outbound password */
+ int capab_phase; /* Have sent CAPAB already */
+ bool auth_fingerprint; /* Did we auth using SSL fingerprint */
+ bool auth_challenge; /* Did we auth using challenge/response */
+};
+
/** Every SERVER connection inbound or outbound is represented by
* an object of type TreeSocket.
* TreeSockets, being inherited from BufferedSocket, can be tied into
std::string InboundServerName; /* Server name sent to us by other side */
std::string InboundDescription; /* Server description (GECOS) sent to us by the other side */
std::string InboundSID; /* Server ID sent to us by the other side */
+ std::string IP;
+ CapabData* capab;
int num_lost_users; /* Users lost in split */
int num_lost_servers; /* Servers lost in split */
time_t NextPing; /* Time when we are due to ping this server */
bool LastPingWasGood; /* Responded to last ping we sent? */
- std::string IP;
- std::string ModuleList; /* Required module list of other server from CAPAB */
- std::string OptModuleList; /* Optional module list of other server from CAPAB */
- std::map<std::string,std::string> CapKeys; /* CAPAB keys from other server */
- std::string ourchallenge; /* Challenge sent for challenge/response */
- std::string theirchallenge; /* Challenge recv for challenge/response */
- std::string OutboundPass; /* Outbound password */
- int capab_phase; /* Have sent CAPAB already */
- bool auth_fingerprint; /* Did we auth using SSL fingerprint */
- bool auth_challenge; /* Did we auth using challenge/response */
int proto_version; /* Remote protocol version */
public:
reference<Autoconnect> myautoconnect; /* Autoconnect used to cause this connection, if any */
/** Add modules to VF_COMMON list for backwards compatability */
void CompatAddModules(std::vector<std::string>& modlist);
- /* Check a comma seperated list for an item */
- bool HasItem(const std::string &list, const std::string &item);
-
- /* Isolate and return the elements that are different between two comma seperated lists */
- std::string ListDifference(const std::string &one, const std::string &two);
+ /* Isolate and return the elements that are different between two lists */
+ void ListDifference(const std::string &one, const std::string &two, char sep,
+ std::string& mleft, std::string& mright);
bool Capab(const parameterlist ¶ms);
void WriteLine(std::string line);
/** Handle ERROR command */
- bool Error(parameterlist ¶ms);
+ void Error(parameterlist ¶ms);
/** remote MOTD. */
bool Motd(const std::string &prefix, parameterlist ¶ms);
/** Remote AWAY */
bool Away(const std::string &prefix, parameterlist ¶ms);
- /** Because Andy insists that services-compatible servers must
- * implement SVSNICK and SVSJOIN, that's exactly what we do :p
- */
- bool SVSNick(const std::string &prefix, parameterlist ¶ms);
-
/** SAVE to resolve nick collisions without killing */
bool ForceNick(const std::string &prefix, parameterlist ¶ms);
*/
bool OperQuit(const std::string &prefix, parameterlist ¶ms);
- /** SVSJOIN
- */
- bool ServiceJoin(const std::string &prefix, parameterlist ¶ms);
-
- /** SVSPART
- */
- bool ServicePart(const std::string &prefix, parameterlist ¶ms);
-
/** KILL
*/
bool RemoteKill(const std::string &prefix, parameterlist ¶ms);