* See: http://www.inspircd.org/wiki/index.php/Credits
*
* This program is free but copyrighted software; see
* See: http://www.inspircd.org/wiki/index.php/Credits
*
* This program is free but copyrighted software; see
* the core socket engine, and we cn therefore receive activity events
* for them, just like activex objects on speed. (yes really, that
* is a technical term!) Each of these which relates to a locally
* the core socket engine, and we cn therefore receive activity events
* for them, just like activex objects on speed. (yes really, that
* is a technical term!) Each of these which relates to a locally
ServerState LinkState; /* Link state */
std::string InboundServerName; /* Server name sent to us by other side */
std::string InboundDescription; /* Server description (GECOS) sent to us by the other side */
ServerState LinkState; /* Link state */
std::string InboundServerName; /* Server name sent to us by other side */
std::string InboundDescription; /* Server description (GECOS) sent to us by the other side */
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? */
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? */
unsigned int keylength; /* Is this still used? */
std::string ModuleList; /* Module list of other server from CAPAB */
std::map<std::string,std::string> CapKeys; /* CAPAB keys from other server */
unsigned int keylength; /* Is this still used? */
std::string ModuleList; /* 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 */
std::string ourchallenge; /* Challenge sent for challenge/response */
std::string theirchallenge; /* Challenge recv for challenge/response */
std::string OutboundPass; /* Outbound password */
* most of the action, and append a few of our own values
* to it.
*/
TreeSocket(SpanningTreeUtilities* Util, InspIRCd* SI, std::string host, int port, bool listening, unsigned long maxtime, Module* HookMod = NULL);
/** Because most of the I/O gubbins are encapsulated within
* most of the action, and append a few of our own values
* to it.
*/
TreeSocket(SpanningTreeUtilities* Util, InspIRCd* SI, std::string host, int port, bool listening, unsigned long maxtime, Module* HookMod = NULL);
/** Because most of the I/O gubbins are encapsulated within
/** FJOIN, similar to TS6 SJOIN, but not quite. */
bool ForceJoin(const std::string &source, std::deque<std::string> ¶ms);
/** FJOIN, similar to TS6 SJOIN, but not quite. */
bool ForceJoin(const std::string &source, std::deque<std::string> ¶ms);
- /** NICK command */
- bool IntroduceClient(const std::string &source, std::deque<std::string> ¶ms);
+ /* Used on nick collision ... XXX ugly function HACK */
+ int DoCollision(User *u, time_t remotets, const char *remoteident, const char *remoteip, const char *remoteuid);
+
+ /** UID command */
+ bool ParseUID(const std::string &source, std::deque<std::string> ¶ms);
/** Send one or more FJOINs for a channel of users.
* If the length of a single line is more than 480-NICKMAX
* in length, it is split over multiple lines.
*/
/** Send one or more FJOINs for a channel of users.
* If the length of a single line is more than 480-NICKMAX
* in length, it is split over multiple lines.
*/
/** Send G, Q, Z and E lines */
void SendXLines(TreeServer* Current);
/** Send G, Q, Z and E lines */
void SendXLines(TreeServer* Current);
/** This function is called when we receive data from a remote
* server. We buffer the data in a std::string (it doesnt stay
/** This function is called when we receive data from a remote
* server. We buffer the data in a std::string (it doesnt stay
* read up to 16 kilobytes in one operation.
*
* IF THIS FUNCTION RETURNS FALSE, THE CORE CLOSES AND DELETES
* read up to 16 kilobytes in one operation.
*
* IF THIS FUNCTION RETURNS FALSE, THE CORE CLOSES AND DELETES
- bool OperQuit(const std::string &prefix, std::deque<std::string> ¶ms);
+ /** PRIVMSG or NOTICE with server origin ONLY
+ */
+ bool ServerMessage(const std::string &messagetype, const std::string &prefix, std::deque<std::string> ¶ms, const std::string &sourceserv);
+
+ /** ENCAP command
+ */
+ bool Encap(const std::string &prefix, std::deque<std::string> ¶ms);
- /** Remote SQUIT (RSQUIT). Routing works similar to SVSNICK: Route it to the server that the target is connected to locally,
- * then let that server do the dirty work (squit it!). Example:
- * A -> B -> C -> D: oper on A squits D, A routes to B, B routes to C, C notices D connected locally, kills it. -- w00t