#include "modules.h"
#include "socketengine.h"
#include "socket.h"
+#include "token_list.h"
/** Structure representing a single \<tag> in config */
class CoreExport ConfigTag : public refcountbase
/** Get the value of an option, using def if it does not exist */
std::string getString(const std::string& key, const std::string& def = "", size_t minlen = 0, size_t maxlen = UINT32_MAX);
/** Get the value of an option, using def if it does not exist */
- long getInt(const std::string& key, long def = 0, long min = LONG_MIN, long max = LONG_MAX);
+ long getInt(const std::string& key, long def, long min = LONG_MIN, long max = LONG_MAX);
/** Get the value of an option, using def if it does not exist */
- double getFloat(const std::string& key, double def = 0);
+ double getFloat(const std::string& key, double def);
/** Get the value of an option, using def if it does not exist */
bool getBool(const std::string& key, bool def = false);
* @param max Maximum acceptable value (optional)
* @return The duration in seconds
*/
- long getDuration(const std::string& key, long def = 0, long min = LONG_MIN, long max = LONG_MAX);
+ long getDuration(const std::string& key, long def, long min = LONG_MIN, long max = LONG_MAX);
/** Get the value of an option
* @param key The option to get
class CoreExport OperInfo : public refcountbase
{
public:
- typedef insp::flat_set<std::string> PrivSet;
- PrivSet AllowedOperCommands;
- PrivSet AllowedPrivs;
+ TokenList AllowedOperCommands;
+ TokenList AllowedPrivs;
/** Allowed user modes from oper classes. */
std::bitset<64> AllowedUserModes;
/** Name of the oper type; i.e. the one shown in WHOIS */
std::string name;
+ /** Creates a new OperInfo with the specified oper type name.
+ * @param Name The name of the oper type.
+ */
+ OperInfo(const std::string& Name);
+
/** Get a configuration item, searching in the oper, type, and class blocks (in that order) */
std::string getConfig(const std::string& key);
void init();
/** Bind to IPv6 by default */
bool WildcardIPv6;
- /** Used to indicate who we announce invites to on a channel */
- enum InviteAnnounceState { INVITE_ANNOUNCE_NONE, INVITE_ANNOUNCE_ALL, INVITE_ANNOUNCE_OPS, INVITE_ANNOUNCE_DYNAMIC };
- enum OperSpyWhoisState { SPYWHOIS_NONE, SPYWHOIS_SINGLEMSG, SPYWHOIS_SPLITMSG };
-
- /** This holds all the information in the config file,
+ /** This holds all the information in the config file,
* it's indexed by tag name to a vector of key/values.
*/
ConfigDataHash config_data;
/** Clones CIDR range for ipv4 (0-32)
* Defaults to 32 (checks clones on all IPs seperately)
*/
- int c_ipv4_range;
+ unsigned char c_ipv4_range;
/** Clones CIDR range for ipv6 (0-128)
* Defaults to 128 (checks on all IPs seperately)
*/
- int c_ipv6_range;
+ unsigned char c_ipv6_range;
/** Holds the server name of the local server
* as defined by the administrator.
*/
bool DisabledDontExist;
- /** This variable contains a space-seperated list
- * of commands which are disabled by the
- * administrator of the server for non-opers.
- */
- std::string DisabledCommands;
-
/** This variable identifies which usermodes have been diabled.
*/
- char DisabledUModes[64];
+ std::bitset<64> DisabledUModes;
/** This variable identifies which chanmodes have been disabled.
*/
- char DisabledCModes[64];
+ std::bitset<64> DisabledCModes;
/** If set to true, then all opers on this server are
* shown with a generic 'is an IRC operator' line rather
*/
bool HideBans;
- /** Announce invites to the channel with a server notice
- */
- InviteAnnounceState AnnounceInvites;
-
- /** If this is enabled then operators will
- * see invisible (+i) channels in /whois.
- */
- OperSpyWhoisState OperSpyWhois;
-
/** True if raw I/O is being logged */
bool RawLog;
- /** Set to a non-empty string to obfuscate the server name of users in WHOIS
- */
- std::string HideWhoisServer;
+ /** Set to a non-empty string to obfuscate server names. */
+ std::string HideServer;
/** Set to a non empty string to obfuscate nicknames prepended to a KILL.
*/
void Fill();
- bool ApplyDisabledCommands(const std::string& data);
+ /** Disables the commands specified in <disabled:commands>. */
+ bool ApplyDisabledCommands();
/** Escapes a value for storage in a configuration key.
* @param str The string to escape.
delete Config;
}
- void Run();
+ void Run() CXX11_OVERRIDE;
/** Run in the main thread to apply the configuration */
void Finish();
bool IsDone() { return done; }