/** Holds information relevent to <connect allow> and <connect deny> tags in the config file.
*/
-struct CoreExport ConnectClass : public classbase
+struct CoreExport ConnectClass : public refcountbase
{
/** Type of line, either CC_ALLOW or CC_DENY
*/
*/
unsigned long limit;
- /** Reference counter.
- * This will be 1 if no users are connected, as long as it is a valid connect block
- * When it reaches 0, the object should be deleted
- */
- unsigned long RefCount;
-
/** Create a new connect class with no settings.
*/
ConnectClass(char type, const std::string& mask);
/** Holds a complete list of all allow and deny tags from the configuration file (connection classes)
*/
-typedef std::vector<ConnectClass*> ClassVector;
+typedef std::vector<reference<ConnectClass> > ClassVector;
/** Typedef for the list of user-channel records for a user
*/
static LocalStringExt OperQuit;
/** Contains a pointer to the connect class a user is on from - this will be NULL for remote connections.
- * The pointer is guarenteed to *always* be valid. :)
*/
- ConnectClass *MyClass;
+ reference<ConnectClass> MyClass;
/** Hostname of connection.
* This should be valid as per RFC1035.
/** The server the user is connected to.
*/
- const char* server;
+ std::string server;
/** The user's away message.
* If this string is empty, the user is not marked as away.
* @return The port number of this user.
*/
int GetServerPort();
- /**
- * @return The server IP address
- */
- std::string GetServerIP();
/** Get client IP string from sockaddr, using static internal buffer
* @return The IP string
/** Write to all users that can see this user (including this user in the list), appending CR/LF
* @param text A std::string to send to the users
*/
- void WriteCommon(const std::string &text);
+ void WriteCommonRaw(const std::string &line, bool include_self = true);
/** Write to all users that can see this user (including this user in the list), appending CR/LF
* @param text The format string for text to send to the users
*/
void WriteCommonExcept(const char* text, ...) CUSTOM_PRINTF(2, 3);
- /** Write to all users that can see this user (not including this user in the list), appending CR/LF
- * @param text A std::string to send to the users
- */
- void WriteCommonExcept(const std::string &text);
-
/** Write a quit message to all common users, as in User::WriteCommonExcept but with a specific
* quit message for opers only.
* @param normal_text Normal user quit message
/** Default destructor
*/
virtual ~User();
- virtual void cull();
+ virtual bool cull();
};
/** Derived from Resolver, and performs user forward/reverse lookups.