/** connect:allow */
CC_ALLOW = 0,
/** connect:deny */
- CC_DENY = 1
+ CC_DENY = 1,
+ /** named connect block (for opers, etc) */
+ CC_NAMED = 2
};
/** RFC1459 channel modes
*/
unsigned int pingtime;
- /** (Optional) Password for this line
- */
- std::string pass;
-
- /** (Optional) Hash Method for this line
- */
- std::string hash;
-
/** Maximum size of sendq for users in this class (bytes)
* Users cannot send commands if they go over this limit
*/
*/
unsigned int maxchans;
- /** Port number this connect class applies to
- */
- int port;
-
/** How many users may be in this connect class before they are refused?
* (0 = no limit = default)
*/
/** Update the settings in this block to match the given block */
void Update(const ConnectClass* newSettings);
-
const std::string& GetName() { return name; }
- const std::string& GetPass() { return pass; }
const std::string& GetHost() { return host; }
- const int GetPort() { return port; }
/** Returns the registration timeout
*/
*/
unsigned int GetPenaltyThreshold()
{
- return (penaltythreshold ? penaltythreshold : 10);
+ return penaltythreshold ? penaltythreshold : (fakelag ? 10 : 20);
}
unsigned int GetCommandRate()
return commandrate ? commandrate : 1000;
}
- /** Returusn the maximum number of local sessions
+ /** Return the maximum number of local sessions
*/
unsigned long GetMaxLocal()
{
*/
void Oper(OperInfo* info);
- /** Change this users hash key to a new string.
- * You should not call this function directly. It is used by the core
- * to update the users hash entry on a nickchange.
- * @param New new user_hash key
- * @return Pointer to User in hash (usually 'this')
- */
- User* UpdateNickHash(const char* New);
-
/** Force a nickname change.
* If the nickname change fails (for example, because the nick in question
* already exists) this function will return false, and you must then either
* @param newnick The nickname to change to
* @return True if the nickchange was successful.
*/
- bool ForceNickChange(const char* newnick);
+ inline bool ForceNickChange(const char* newnick) { return ChangeNick(newnick, true); }
/** Oper down.
* This will clear the +o usermode and unset the user's oper type
*/
bool ChangeName(const char* gecos);
+ /** Change a user's nick
+ * @param newnick The new nick
+ * @param force True if the change is being forced (should not be blocked by modes like +N)
+ * @return True if the change succeeded
+ */
+ bool ChangeNick(const std::string& newnick, bool force = false);
+
/** Send a command to all local users from this user
* The command given must be able to send text with the
* first parameter as a servermask (e.g. $*), so basically
*/
virtual ConnectClass* GetClass();
- /** Show the message of the day to this user
- */
- void ShowMOTD();
-
- /** Show the server RULES file to this user
- */
- void ShowRULES();
-
/** Default destructor
*/
virtual ~User();
void AddWriteBuf(const std::string &data);
};
+typedef unsigned int already_sent_t;
+
class CoreExport LocalUser : public User
{
/** A list of channels the user has a pending invite to.
*/
unsigned int CommandFloodPenalty;
+ static already_sent_t already_sent_id;
+ already_sent_t already_sent;
+
/** Stored reverse lookup from res_forward. Should not be used after resolution.
*/
std::string stored_host;
* @return True if the user can set or unset this mode.
*/
bool HasModePermission(unsigned char mode, ModeType type);
-
- inline int GetFd() { return eh.GetFd(); }
};
class CoreExport RemoteUser : public User
class CoreExport UserResolver : public Resolver
{
private:
- /** User this class is 'attached' to.
- */
- LocalUser* bound_user;
- /** File descriptor teh lookup is bound to
- */
- int bound_fd;
+ /** UUID we are looking up */
+ std::string uuid;
/** True if the lookup is forward, false if is a reverse lookup
*/
bool fwd;