std::string ourchallenge; /* Challenge sent for challenge/response */
std::string theirchallenge; /* Challenge recv for challenge/response */
std::string OutboundPass; /* Outbound password */
-
+ bool sentcapab; /* Have sent CAPAB already */
public:
/** Because most of the I/O gubbins are encapsulated within
*/
virtual void OnError(InspSocketError e);
+ /** Sends an error to the remote server, and displays it locally to show
+ * that it was sent.
+ */
+ void SendError(const std::string &errormessage);
+
/** Handle socket disconnect event
*/
virtual int OnDisconnect();
bool OperQuit(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
- */
- bool RemoteSquit(const std::string &prefix, std::deque<std::string> ¶ms);
-
/** SVSJOIN
*/
bool ServiceJoin(const std::string &prefix, std::deque<std::string> ¶ms);
virtual int OnIncomingConnection(int newsock, char* ip);
};
+/* Used to validate the value lengths of multiple parameters for a command */
+struct cmd_validation
+{
+ const char* item;
+ size_t param;
+ size_t length;
+};
+
+/* Used to validate the length values in CAPAB CAPABILITIES */
+struct cap_validation
+{
+ const char* reason;
+ const char* key;
+ size_t size;
+};
+
#endif