/*
* InspIRCd -- Internet Relay Chat Daemon
*
+ * Copyright (C) 2019 Matt Schatz <genius3000@g3k.solutions>
+ * Copyright (C) 2013, 2017-2019 Sadie Powell <sadie@witchery.services>
+ * Copyright (C) 2012-2015 Attila Molnar <attilamolnar@hush.com>
+ * Copyright (C) 2012, 2019 Robby <robby@chatbelgie.be>
* Copyright (C) 2009-2010 Daniel De Graaf <danieldg@inspircd.org>
- * Copyright (C) 2008 Robin Burchell <robin+git@viroteck.net>
+ * Copyright (C) 2009 Uli Schlachter <psychon@inspircd.org>
+ * Copyright (C) 2007-2008 Robin Burchell <robin+git@viroteck.net>
+ * Copyright (C) 2007, 2010 Craig Edwards <brain@inspircd.org>
* Copyright (C) 2007 Dennis Friis <peavey@inspircd.org>
- * Copyright (C) 2007 Craig Edwards <craigedwards@brainbox.cc>
*
* This file is part of InspIRCd. InspIRCd is free software: you can
* redistribute it and/or modify it under the terms of the GNU General Public
ServerState LinkState; /* Link state */
CapabData* capab; /* Link setup data (held until burst is sent) */
TreeServer* MyRoot; /* The server we are talking to */
- int proto_version; /* Remote protocol version */
+ unsigned int proto_version; /* Remote protocol version */
/** True if we've sent our burst.
* This only changes the behavior of message translation for 1202 protocol servers and it can be
* @param params Parameters they sent in the SERVER command
* @return Link block for the remote server, or NULL if an error occurred
*/
- Link* AuthRemote(const parameterlist& params);
+ Link* AuthRemote(const CommandBase::Params& params);
/** Write a line on this socket with a new line character appended, skipping all translation for old protocols
* @param line Line to write without a new line character at the end
* most of the action, and append a few of our own values
* to it.
*/
- TreeSocket(Link* link, Autoconnect* myac, const std::string& ipaddr);
+ TreeSocket(Link* link, Autoconnect* myac, const irc::sockets::sockaddrs& sa);
/** When a listening socket gives us a new file descriptor,
* we must associate it with a socket without creating a new
*/
std::string MyModules(int filter);
+ /** Returns mode list as a string, filtered by type.
+ * @param type The type of modes to return.
+ */
+ std::string BuildModeList(ModeType type);
+
/** Send my capabilities to the remote side
*/
void SendCapabilities(int phase);
void ListDifference(const std::string &one, const std::string &two, char sep,
std::string& mleft, std::string& mright);
- bool Capab(const parameterlist ¶ms);
+ bool Capab(const CommandBase::Params& params);
/** Send one or more FJOINs for a channel of users.
* If the length of a single line is more than 480-NICKMAX
*/
void SendFJoins(Channel* c);
- /** Send G, Q, Z and E lines */
+ /** Send G-, Q-, Z- and E-lines */
void SendXLines();
/** Send all known information about a channel */
void WriteLine(const std::string& line);
/** Handle ERROR command */
- void Error(parameterlist ¶ms);
+ void Error(CommandBase::Params& params);
/** (local) -> SERVER
*/
- bool Outbound_Reply_Server(parameterlist ¶ms);
+ bool Outbound_Reply_Server(CommandBase::Params& params);
/** (local) <- SERVER
*/
- bool Inbound_Server(parameterlist ¶ms);
+ bool Inbound_Server(CommandBase::Params& params);
/** Handle IRC line split
*/
- void Split(const std::string &line, std::string& prefix, std::string& command, parameterlist ¶ms);
+ void Split(const std::string& line, std::string& tags, std::string& prefix, std::string& command, CommandBase::Params& params);
/** Process complete line from buffer
*/
void ProcessLine(std::string &line);
- void ProcessConnectedLine(std::string& prefix, std::string& command, parameterlist& params);
+ /** Process message tags received from a remote server. */
+ void ProcessTag(User* source, const std::string& tag, ClientProtocol::TagMap& tags);
+
+ /** Process a message for a fully connected server. */
+ void ProcessConnectedLine(std::string& tags, std::string& prefix, std::string& command, CommandBase::Params& params);
/** Handle socket timeout from connect()
*/
/** Fixes messages coming from old servers so the new command handlers understand them
*/
- bool PreProcessOldProtocolMessage(User*& who, std::string& cmd, std::vector<std::string>& params);
+ bool PreProcessOldProtocolMessage(User*& who, std::string& cmd, CommandBase::Params& params);
};