/usr/include/inspircd/usermanager.h is in inspircd-dev 2.0.20-5build2.
This file is owned by root:root, with mode 0o644.
The actual contents of the file can be viewed below.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 | /*
* InspIRCd -- Internet Relay Chat Daemon
*
* Copyright (C) 2008 Robin Burchell <robin+git@viroteck.net>
*
* 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
* License as published by the Free Software Foundation, version 2.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License
* along with this program. If not, see <http://www.gnu.org/licenses/>.
*/
#ifndef USERMANAGER_H
#define USERMANAGER_H
#include <list>
/** A list of ip addresses cross referenced against clone counts */
typedef std::map<irc::sockets::cidr_mask, unsigned int> clonemap;
class CoreExport UserManager
{
private:
/** Map of local ip addresses for clone counting
*/
clonemap local_clones;
public:
UserManager();
~UserManager()
{
for (user_hash::iterator i = clientlist->begin();i != clientlist->end();i++)
{
delete i->second;
}
clientlist->clear();
delete clientlist;
delete uuidlist;
}
/** Client list, a hash_map containing all clients, local and remote
*/
user_hash* clientlist;
/** Client list stored by UUID. Contains all clients, and is updated
* automatically by the constructor and destructor of User.
*/
user_hash* uuidlist;
/** Local client list, a list containing only local clients
*/
LocalUserList local_users;
/** Oper list, a vector containing all local and remote opered users
*/
std::list<User*> all_opers;
/** Number of unregistered users online right now.
* (Unregistered means before USER/NICK/dns)
*/
unsigned int unregistered_count;
/** Number of elements in local_users
*/
unsigned int local_count;
/** Map of global ip addresses for clone counting
* XXX - this should be private, but m_clones depends on it currently.
*/
clonemap global_clones;
/** Add a client to the system.
* This will create a new User, insert it into the user_hash,
* initialize it as not yet registered, and add it to the socket engine.
* @param socket The socket id (file descriptor) this user is on
* @param via The socket that this user connected using
* @param client The IP address and client port of the user
* @param server The server IP address and port used by the user
* @return This function has no return value, but a call to AddClient may remove the user.
*/
void AddUser(int socket, ListenSocket* via, irc::sockets::sockaddrs* client, irc::sockets::sockaddrs* server);
/** Disconnect a user gracefully
* @param user The user to remove
* @param quitreason The quit reason to show to normal users
* @param operreason The quit reason to show to opers
* @return Although this function has no return type, on exit the user provided will no longer exist.
*/
void QuitUser(User *user, const std::string &quitreason, const char* operreason = "");
/** Add a user to the local clone map
* @param user The user to add
*/
void AddLocalClone(User *user);
/** Add a user to the global clone map
* @param user The user to add
*/
void AddGlobalClone(User *user);
/** Remove all clone counts from the user, you should
* use this if you change the user's IP address
* after they have registered.
* @param user The user to remove
*/
void RemoveCloneCounts(User *user);
/** Rebuild clone counts
*/
void RehashCloneCounts();
/** Return the number of global clones of this user
* @param user The user to get a count for
* @return The global clone count of this user
*/
unsigned long GlobalCloneCount(User *user);
/** Return the number of local clones of this user
* @param user The user to get a count for
* @return The local clone count of this user
*/
unsigned long LocalCloneCount(User *user);
/** Return a count of users, unknown and known connections
* @return The number of users
*/
unsigned int UserCount();
/** Return a count of fully registered connections only
* @return The number of registered users
*/
unsigned int RegisteredUserCount();
/** Return a count of opered (umode +o) users only
* @return The number of opers
*/
unsigned int OperCount();
/** Return a count of unregistered (before NICK/USER) users only
* @return The number of unregistered (unknown) connections
*/
unsigned int UnregisteredUserCount();
/** Return a count of local users on this server only
* @return The number of local users
*/
unsigned int LocalUserCount();
/** Number of users with a certain mode set on them
*/
int ModeCount(const char mode);
/** Send a server notice to all local users
* @param text The text format string to send
* @param ... The format arguments
*/
void ServerNoticeAll(const char* text, ...) CUSTOM_PRINTF(2, 3);
/** Send a server message (PRIVMSG) to all local users
* @param text The text format string to send
* @param ... The format arguments
*/
void ServerPrivmsgAll(const char* text, ...) CUSTOM_PRINTF(2, 3);
};
#endif
|