X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fusers.h;h=28f94a2159c57821172525d4be9490220bb24d44;hb=2688cfbad5e121945f61e0f5f023c904a19c7009;hp=c08be8c6fec737ce208953e28c79743cf35a2884;hpb=0a67b8861adfca7b09e59d9639e26b6bf71859a5;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/users.h b/include/users.h index c08be8c6f..28f94a215 100644 --- a/include/users.h +++ b/include/users.h @@ -1,21 +1,22 @@ /* * InspIRCd -- Internet Relay Chat Daemon * + * Copyright (C) 2019-2020 Matt Schatz * Copyright (C) 2019 linuxdaemon - * Copyright (C) 2019 Matt Schatz * Copyright (C) 2013 Daniel Vassdal * Copyright (C) 2012-2016, 2018 Attila Molnar - * Copyright (C) 2012-2013, 2016-2019 Sadie Powell - * Copyright (C) 2012, 2018-2019 Robby + * Copyright (C) 2012-2013, 2016-2021 Sadie Powell + * Copyright (C) 2012, 2019 Robby * Copyright (C) 2012 DjSlash * Copyright (C) 2012 ChrisTX + * Copyright (C) 2011 jackmcbarn * Copyright (C) 2009-2010 Daniel De Graaf * Copyright (C) 2009 Uli Schlachter * Copyright (C) 2008 Thomas Stagner * Copyright (C) 2008 John Brooks - * Copyright (C) 2007-2009 Robin Burchell * Copyright (C) 2007, 2009 Dennis Friis - * Copyright (C) 2006-2008 Craig Edwards + * Copyright (C) 2006-2009 Robin Burchell + * Copyright (C) 2003-2008 Craig Edwards * * 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 @@ -60,8 +61,8 @@ enum RegistrationState { REG_USER = 1, /* Has sent USER */ REG_NICK = 2, /* Has sent NICK */ - REG_NICKUSER = 3, /* Bitwise combination of REG_NICK and REG_USER */ - REG_ALL = 7 /* REG_NICKUSER plus next bit along */ + REG_NICKUSER = 3, /* Bitwise combination of REG_NICK and REG_USER */ + REG_ALL = 7 /* REG_NICKUSER plus next bit along */ }; enum UserType { @@ -70,7 +71,7 @@ enum UserType { USERTYPE_SERVER = 3 }; -/** Holds information relevent to <connect allow> and <connect deny> tags in the config file. +/** Holds information relevant to <connect allow> and <connect deny> tags in the config file. */ struct CoreExport ConnectClass : public refcountbase { @@ -90,10 +91,12 @@ struct CoreExport ConnectClass : public refcountbase */ unsigned int registration_timeout; - /** Host mask for this line - */ + /** Hosts that this user can connect from as a string. */ std::string host; + /** Hosts that this user can connect from as a vector. */ + std::vector hosts; + /** Number of seconds between pings for this line */ unsigned int pingtime; @@ -165,8 +168,9 @@ struct CoreExport ConnectClass : public refcountbase /** 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& GetHost() { return host; } + const std::string& GetName() const { return name; } + const std::string& GetHost() const { return host; } + const std::vector& GetHosts() const { return hosts; } /** Returns the registration timeout */ @@ -239,19 +243,19 @@ struct CoreExport ConnectClass : public refcountbase class CoreExport User : public Extensible { private: - /** Cached nick!ident@dhost value using the displayed hostname + /** Cached nick!ident\@dhost value using the displayed hostname */ std::string cached_fullhost; - /** Cached ident@ip value using the real IP address + /** Cached ident\@ip value using the real IP address */ std::string cached_hostip; - /** Cached ident@realhost value using the real hostname + /** Cached ident\@realhost value using the real hostname */ std::string cached_makehost; - /** Cached nick!ident@realhost value using the real hostname + /** Cached nick!ident\@realhost value using the real hostname */ std::string cached_fullrealhost; @@ -361,13 +365,13 @@ class CoreExport User : public Extensible /** If this is set to true, then all socket operations for the user * are dropped into the bit-bucket. - * This value is set by QuitUser, and is not needed seperately from that call. + * This value is set by QuitUser, and is not needed separately from that call. * Please note that setting this value alone will NOT cause the user to quit. */ unsigned int quitting:1; /** What type of user is this? */ - const UserType usertype:2; + const unsigned int usertype:2; /** Get client IP string from sockaddr, using static internal buffer * @return The IP string @@ -490,6 +494,12 @@ class CoreExport User : public Extensible */ virtual bool HasModePermission(const ModeHandler* mh) const; + /** Determines whether this user can set the specified snomask. + * @param chr The server notice mask character to look up. + * @return True if the user can set the specified snomask; otherwise, false. + */ + virtual bool HasSnomaskPermission(char chr) const; + /** Creates a usermask with real host. * Takes a buffer to use and fills the given buffer with the hostmask in the format user\@host * @return the usermask in the format user\@host @@ -692,17 +702,17 @@ class CoreExport User : public Extensible virtual ~User(); CullResult cull() CXX11_OVERRIDE; - /** @copydoc Serializable::Deserialize. */ + /** @copydoc Serializable::Deserialize */ bool Deserialize(Data& data) CXX11_OVERRIDE; - /** @copydoc Serializable::Deserialize. */ + /** @copydoc Serializable::Deserialize */ bool Serialize(Serializable::Data& data) CXX11_OVERRIDE; }; class CoreExport UserIOHandler : public StreamSocket { private: - size_t checked_until; + size_t checked_until; public: LocalUser* const user; UserIOHandler(LocalUser* me) @@ -840,7 +850,6 @@ class CoreExport LocalUser : public User, public insp::intrusive_list_node tags from the configuration file. - * @return A reference to this user's current connect class. */ void SetClass(const std::string &explicit_name = ""); @@ -879,6 +888,9 @@ class CoreExport LocalUser : public User, public insp::intrusive_list_node