diff options
Diffstat (limited to 'include/account.h')
-rw-r--r-- | include/account.h | 281 |
1 files changed, 0 insertions, 281 deletions
diff --git a/include/account.h b/include/account.h deleted file mode 100644 index c49f5f205..000000000 --- a/include/account.h +++ /dev/null @@ -1,281 +0,0 @@ -/* - * - * (C) 2003-2016 Anope Team - * Contact us at team@anope.org - * - * Please read COPYING and README for further details. - * - * Based on the original code of Epona by Lara. - * Based on the original code of Services by Andy Church. - */ - -#ifndef ACCOUNT_H -#define ACCOUNT_H - -#include "extensible.h" -#include "serialize.h" -#include "anope.h" -#include "memo.h" -#include "base.h" - -typedef Anope::hash_map<NickAlias *> nickalias_map; -typedef Anope::hash_map<NickCore *> nickcore_map; - -extern CoreExport Serialize::Checker<nickalias_map> NickAliasList; -extern CoreExport Serialize::Checker<nickcore_map> NickCoreList; - -/* A registered nickname. - * It matters that Base is here before Extensible (it is inherited by Serializable) - */ -class CoreExport NickAlias : public Serializable, public Extensible -{ - Anope::string vhost_ident, vhost_host, vhost_creator; - time_t vhost_created; - - public: - Anope::string nick; - Anope::string last_quit; - Anope::string last_realname; - /* Last usermask this nick was seen on, eg user@host */ - Anope::string last_usermask; - /* Last uncloaked usermask, requires nickserv/auspex to see */ - Anope::string last_realhost; - time_t time_registered; - time_t last_seen; - /* Account this nick is tied to. Multiple nicks can be tied to a single account. */ - Serialize::Reference<NickCore> nc; - - /** Constructor - * @param nickname The nick - * @param nickcore The nickcore for this nick - */ - NickAlias(const Anope::string &nickname, NickCore *nickcore); - ~NickAlias(); - - void Serialize(Serialize::Data &data) const anope_override; - static Serializable* Unserialize(Serializable *obj, Serialize::Data &); - - /** Set a vhost for the user - * @param ident The ident - * @param host The host - * @param creator Who created the vhost - * @param time When the vhost was craated - */ - void SetVhost(const Anope::string &ident, const Anope::string &host, const Anope::string &creator, time_t created = Anope::CurTime); - - /** Remove a users vhost - **/ - void RemoveVhost(); - - /** Check if the user has a vhost - * @return true or false - */ - bool HasVhost() const; - - /** Retrieve the vhost ident - * @return the ident - */ - const Anope::string &GetVhostIdent() const; - - /** Retrieve the vhost host - * @return the host - */ - const Anope::string &GetVhostHost() const; - - /** Retrieve the vhost creator - * @return the creator - */ - const Anope::string &GetVhostCreator() const; - - /** Retrieve when the vhost was created - * @return the time it was created - */ - time_t GetVhostCreated() const; - - /** Finds a registered nick - * @param nick The nick to lookup - * @return the nick, if found - */ - static NickAlias *Find(const Anope::string &nick); -}; - -/* A registered account. Each account must have a NickAlias with the same nick as the - * account's display. - * It matters that Base is here before Extensible (it is inherited by Serializable) - */ -class CoreExport NickCore : public Serializable, public Extensible -{ - /* Channels which reference this core in some way (this is on their access list, akick list, is founder, successor, etc) */ - Serialize::Checker<std::map<ChannelInfo *, int> > chanaccess; - public: - /* Name of the account. Find(display)->nc == this. */ - Anope::string display; - /* User password in form of hashm:data */ - Anope::string pass; - Anope::string email; - /* Locale name of the language of the user. Empty means default language */ - Anope::string language; - /* Access list, contains user@host masks of users who get certain privileges based - * on if NI_SECURE is set and what (if any) kill protection is enabled. */ - std::vector<Anope::string> access; - MemoInfo memos; - std::map<Anope::string, Anope::string> last_modes; - - /* Nicknames registered that are grouped to this account. - * for n in aliases, n->nc == this. - */ - Serialize::Checker<std::vector<NickAlias *> > aliases; - - /* Set if this user is a services operattor. o->ot must exist. */ - Oper *o; - - /* Unsaved data */ - - /* Number of channels registered by this account */ - uint16_t channelcount; - /* Last time an email was sent to this user */ - time_t lastmail; - /* Users online now logged into this account */ - std::list<User *> users; - - /** Constructor - * @param display The display nick - */ - NickCore(const Anope::string &nickdisplay); - ~NickCore(); - - void Serialize(Serialize::Data &data) const anope_override; - static Serializable* Unserialize(Serializable *obj, Serialize::Data &); - - /** Changes the display for this account - * @param na The new display, must be grouped to this account. - */ - void SetDisplay(const NickAlias *na); - - /** Checks whether this account is a services oper or not. - * @return True if this account is a services oper, false otherwise. - */ - virtual bool IsServicesOper() const; - - /** Add an entry to the nick's access list - * - * @param entry The nick!ident@host entry to add to the access list - * - * Adds a new entry into the access list. - */ - void AddAccess(const Anope::string &entry); - - /** Get an entry from the nick's access list by index - * - * @param entry Index in the access list vector to retrieve - * @return The access list entry of the given index if within bounds, an empty string if the vector is empty or the index is out of bounds - * - * Retrieves an entry from the access list corresponding to the given index. - */ - Anope::string GetAccess(unsigned entry) const; - - /** Get the number of entries on the access list for this account. - */ - unsigned GetAccessCount() const; - - /** Find an entry in the nick's access list - * - * @param entry The nick!ident@host entry to search for - * @return True if the entry is found in the access list, false otherwise - * - * Search for an entry within the access list. - */ - bool FindAccess(const Anope::string &entry); - - /** Erase an entry from the nick's access list - * - * @param entry The nick!ident@host entry to remove - * - * Removes the specified access list entry from the access list. - */ - void EraseAccess(const Anope::string &entry); - - /** Clears the entire nick's access list - * - * Deletes all the memory allocated in the access list vector and then clears the vector. - */ - void ClearAccess(); - - /** Is the given user on this accounts access list? - * - * @param u The user - * - * @return true if the user is on the access list - */ - bool IsOnAccess(const User *u) const; - - /** Finds an account - * @param nick The account name to find - * @return The account, if it exists - */ - static NickCore* Find(const Anope::string &nick); - - void AddChannelReference(ChannelInfo *ci); - void RemoveChannelReference(ChannelInfo *ci); - void GetChannelReferences(std::deque<ChannelInfo *> &queue); -}; - -/* A request to check if an account/password is valid. These can exist for - * extended periods due to the time some authentication modules take. - */ -class CoreExport IdentifyRequest -{ - /* Owner of this request, used to cleanup requests if a module is unloaded - * while a reqyest us pending */ - Module *owner; - Anope::string account; - Anope::string password; - - std::set<Module *> holds; - bool dispatched; - bool success; - - static std::set<IdentifyRequest *> Requests; - - protected: - IdentifyRequest(Module *o, const Anope::string &acc, const Anope::string &pass); - virtual ~IdentifyRequest(); - - public: - /* One of these is called when the request goes through */ - virtual void OnSuccess() = 0; - virtual void OnFail() = 0; - - const Anope::string &GetAccount() const { return account; } - const Anope::string &GetPassword() const { return password; } - - /* Holds this request. When a request is held it must be Released later - * for the request to complete. Multiple modules may hold a request at any time, - * but the request is not complete until every module has released it. If you do not - * require holding this (eg, your password check is done in this thread and immediately) - * then you don't need to hold the request before Successing it. - * @param m The module holding this request - */ - void Hold(Module *m); - - /** Releases a held request - * @param m The module releaseing the hold - */ - void Release(Module *m); - - /** Called by modules when this IdentifyRequest has successeded successfully. - * If this request is behind held it must still be Released after calling this. - * @param m The module confirming authentication - */ - void Success(Module *m); - - /** Used to either finalize this request or marks - * it as dispatched and begins waiting for the module(s) - * that have holds to finish. - */ - void Dispatch(); - - static void ModuleUnload(Module *m); -}; - -#endif // ACCOUNT_H |