X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fconfigreader.h;h=cc0c06d38ebfff6cb4dab121caa10f4678bd5063;hb=b9e42dee051a50f448b87d4d670d897c915fd55b;hp=89116c5c5fa888c3545b73a63e293d51f6efe763;hpb=0d3ecb964292600ec1ce6ee1cef83f72185a8bcc;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/configreader.h b/include/configreader.h index 89116c5c5..cc0c06d38 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -2,8 +2,8 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd: (C) 2002-2008 InspIRCd Development Team - * See: http://www.inspircd.org/wiki/index.php/Credits + * InspIRCd: (C) 2002-2009 InspIRCd Development Team + * See: http://wiki.inspircd.org/Credits * * This program is free but copyrighted software; see * the file COPYING for details. @@ -17,7 +17,7 @@ /* handy defines */ /** Determines if a channel op is exempt from given mode m, - * in config of server instance s. + * in config of server instance s. */ #define CHANOPS_EXEMPT(s, m) (s->Config->ExemptChanOps[(unsigned char)m]) @@ -48,8 +48,7 @@ enum ConfigDataType DT_IPADDRESS = 6, /* IP address (v4, v6) */ DT_CHANNEL = 7, /* Channel name */ DT_ALLOW_WILD = 64, /* Allow wildcards/CIDR in DT_IPADDRESS */ - DT_ALLOW_NEWLINE = 128, /* New line characters allowed in DT_CHARPTR */ - DT_BOOTONLY = 256 /* Can only be set on startup, not on rehash */ + DT_ALLOW_NEWLINE = 128 /* New line characters allowed in DT_CHARPTR */ }; /** The maximum number of values in a core configuration tag. Can be increased if needed. @@ -224,7 +223,7 @@ struct MultiConfig /** A set of oper types */ -typedef std::map opertype_t; +typedef std::map opertype_t; /** Holds an oper class. */ @@ -323,38 +322,27 @@ class CoreExport ServerConfig : public Extensible * configutation, appending errors to errorstream * and setting error if an error has occured. */ - bool ParseLine(ConfigDataHash &target, const std::string &filename, std::string &line, long &linenumber, std::ostringstream &errorstream); + bool ParseLine(const std::string &filename, std::string &line, long &linenumber); /** Check that there is only one of each configuration item */ - bool CheckOnce(const char* tag, ConfigDataHash &newconf); + bool CheckOnce(const char* tag); public: /** Process an include executable directive */ - bool DoPipe(ConfigDataHash &target, const std::string &file, std::ostringstream &errorstream); + bool DoPipe(const std::string &file); /** Process an include file directive */ - bool DoInclude(ConfigDataHash &target, const std::string &file, std::ostringstream &errorstream); - - /** User that is currently performing a rehash, needed because the - * rehash code is now threaded and needs to know who to give errors and feedback to. - */ - std::string RehashUserUID; - - /** Rehash parameter, as above - */ - std::string RehashParameter; + bool DoInclude(const std::string &file); /** Error stream, contains error output from any failed configuration parsing. */ - std::ostringstream errstr; + std::stringstream errstr; - /** Holds the new configuration when a rehash occurs so we dont overwrite the existing - * working config with a broken one without checking it first and swapping pointers. - */ - ConfigDataHash newconfig; + /** True if this configuration is valid enough to run with */ + bool valid; /** Set of included files. Do we use this any more? */ @@ -373,7 +361,7 @@ class CoreExport ServerConfig : public Extensible /** Not used any more as it is named, can probably be removed or renamed. */ int DoDownloads(); - + /** This holds all the information in the config file, * it's indexed by tag name to a vector of key/values. */ @@ -406,6 +394,11 @@ class CoreExport ServerConfig : public Extensible */ int WhoWasMaxKeep; + /** Both for set(g|u)id. + */ + char SetUser[MAXBUF]; + char SetGroup[MAXBUF]; + /** Holds the server name of the local server * as defined by the administrator. */ @@ -414,7 +407,7 @@ class CoreExport ServerConfig : public Extensible /** Notice to give to users when they are Xlined */ char MoronBanner[MAXBUF]; - + /* Holds the network name the local server * belongs to. This is an arbitary field defined * by the administrator. @@ -541,7 +534,7 @@ class CoreExport ServerConfig : public Extensible * foreground. */ bool nofork; - + /** If this value if true then all log * messages will be output, regardless of * the level given in the config file. @@ -549,7 +542,7 @@ class CoreExport ServerConfig : public Extensible * option. */ bool forcedebug; - + /** If this is true then log output will be * written to the logfile. This is the default. * If you put -nolog on the commandline then @@ -560,6 +553,17 @@ class CoreExport ServerConfig : public Extensible */ bool writelog; + /** If set to true, then all opers on this server are + * shown with a generic 'is an IRC operator' line rather + * than the oper type. Oper types are still used internally. + */ + bool GenericOper; + + /** If this value is true, banned users (+b, not extbans) will not be able to change nick + * if banned on any channel, nor to message them. + */ + bool RestrictBannedUsers; + /** If this value is true, halfops have been * enabled in the configuration file. */ @@ -660,10 +664,6 @@ class CoreExport ServerConfig : public Extensible */ ClassVector Classes; - /** A list of the classes for listening ports - */ - std::vector ports; - /** The 005 tokens of this server (ISUPPORT) * populated/repopulated upon loading or unloading * modules. @@ -678,7 +678,7 @@ class CoreExport ServerConfig : public Extensible * only to operators. */ char UserStats[MAXBUF]; - + /** The path and filename of the ircd.log file */ std::string logpath; @@ -786,7 +786,11 @@ class CoreExport ServerConfig : public Extensible * and initialize this class. All other methods * should be used only by the core. */ - void Read(bool bail, const std::string &useruid); + void Read(); + + /** Apply configuration changes from the old configuration. + */ + void Apply(ServerConfig* old, const std::string &useruid); /** Read a file into a file_cache object */ @@ -797,84 +801,80 @@ class CoreExport ServerConfig : public Extensible bool StartsWithWindowsDriveLetter(const std::string &path); /** Report a configuration error given in errormessage. - * @param bail If this is set to true, the error is sent to the console, and the program exits - * @param useruid If this is set to a non-empty value which is a valid UID, and bail is false, - * the errors are spooled to this user as SNOTICEs. - * If the parameter is not a valid UID, the messages are spooled to all opers. */ - void ReportConfigError(const std::string &errormessage, bool bail, const std::string &useruid); + void ReportConfigError(const std::string &errormessage); /** Load 'filename' into 'target', with the new config parser everything is parsed into * tag/key/value at load-time rather than at read-value time. */ - bool LoadConf(ConfigDataHash &target, FILE* &conf, const char* filename, std::ostringstream &errorstream); + bool LoadConf(FILE* &conf, const char* filename); /** Load 'filename' into 'target', with the new config parser everything is parsed into * tag/key/value at load-time rather than at read-value time. */ - bool LoadConf(ConfigDataHash &target, FILE* &conf, const std::string &filename, std::ostringstream &errorstream); - + bool LoadConf(FILE* &conf, const std::string &filename); + /** Writes 'length' chars into 'result' as a string */ - bool ConfValue(ConfigDataHash &target, const char* tag, const char* var, int index, char* result, int length, bool allow_linefeeds = false); + bool ConfValue(const char* tag, const char* var, int index, char* result, int length, bool allow_linefeeds = false); /** Writes 'length' chars into 'result' as a string */ - bool ConfValue(ConfigDataHash &target, const char* tag, const char* var, const char* default_value, int index, char* result, int length, bool allow_linefeeds = false); + bool ConfValue(const char* tag, const char* var, const char* default_value, int index, char* result, int length, bool allow_linefeeds = false); /** Writes 'length' chars into 'result' as a string */ - bool ConfValue(ConfigDataHash &target, const std::string &tag, const std::string &var, int index, std::string &result, bool allow_linefeeds = false); + bool ConfValue(const std::string &tag, const std::string &var, int index, std::string &result, bool allow_linefeeds = false); /** Writes 'length' chars into 'result' as a string */ - bool ConfValue(ConfigDataHash &target, const std::string &tag, const std::string &var, const std::string &default_value, int index, std::string &result, bool allow_linefeeds = false); - + bool ConfValue(const std::string &tag, const std::string &var, const std::string &default_value, int index, std::string &result, bool allow_linefeeds = false); + /** Tries to convert the value to an integer and write it to 'result' */ - bool ConfValueInteger(ConfigDataHash &target, const char* tag, const char* var, int index, int &result); + bool ConfValueInteger(const char* tag, const char* var, int index, int &result); /** Tries to convert the value to an integer and write it to 'result' */ - bool ConfValueInteger(ConfigDataHash &target, const char* tag, const char* var, const char* default_value, int index, int &result); + bool ConfValueInteger(const char* tag, const char* var, const char* default_value, int index, int &result); /** Tries to convert the value to an integer and write it to 'result' */ - bool ConfValueInteger(ConfigDataHash &target, const std::string &tag, const std::string &var, int index, int &result); + bool ConfValueInteger(const std::string &tag, const std::string &var, int index, int &result); /** Tries to convert the value to an integer and write it to 'result' */ - bool ConfValueInteger(ConfigDataHash &target, const std::string &tag, const std::string &var, const std::string &default_value, int index, int &result); - + bool ConfValueInteger(const std::string &tag, const std::string &var, const std::string &default_value, int index, int &result); + /** Returns true if the value exists and has a true value, false otherwise */ - bool ConfValueBool(ConfigDataHash &target, const char* tag, const char* var, int index); + bool ConfValueBool(const char* tag, const char* var, int index); /** Returns true if the value exists and has a true value, false otherwise */ - bool ConfValueBool(ConfigDataHash &target, const char* tag, const char* var, const char* default_value, int index); + bool ConfValueBool(const char* tag, const char* var, const char* default_value, int index); /** Returns true if the value exists and has a true value, false otherwise */ - bool ConfValueBool(ConfigDataHash &target, const std::string &tag, const std::string &var, int index); + bool ConfValueBool(const std::string &tag, const std::string &var, int index); /** Returns true if the value exists and has a true value, false otherwise */ - bool ConfValueBool(ConfigDataHash &target, const std::string &tag, const std::string &var, const std::string &default_value, int index); - + bool ConfValueBool(const std::string &tag, const std::string &var, const std::string &default_value, int index); + /** Returns the number of occurences of tag in the config file */ - int ConfValueEnum(ConfigDataHash &target, const char* tag); + int ConfValueEnum(const char* tag); /** Returns the number of occurences of tag in the config file */ - int ConfValueEnum(ConfigDataHash &target, const std::string &tag); - + int ConfValueEnum(const std::string &tag); + /** Returns the numbers of vars inside the index'th 'tag in the config file */ - int ConfVarEnum(ConfigDataHash &target, const char* tag, int index); + int ConfVarEnum(const char* tag, int index); /** Returns the numbers of vars inside the index'th 'tag in the config file */ - int ConfVarEnum(ConfigDataHash &target, const std::string &tag, int index); + int ConfVarEnum(const std::string &tag, int index); /** Validates a hostname value, throwing ConfigException if it is not valid */ @@ -893,12 +893,6 @@ class CoreExport ServerConfig : public Extensible */ std::string GetFullProgDir(); - /** Returns true if a directory is valid (within the modules directory). - * @param dirandfile The directory and filename to check - * @return True if the directory is valid - */ - static bool DirValid(const char* dirandfile); - /** Clean a filename, stripping the directories (and drives) from string. * @param name Directory to tidy * @return The cleaned filename @@ -929,7 +923,7 @@ bool InitTypes(ServerConfig* conf, const char* tag); */ bool InitClasses(ServerConfig* conf, const char* tag); -/** Initialize an oper type +/** Initialize an oper type */ bool DoType(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types); @@ -946,7 +940,7 @@ bool DoneClassesAndTypes(ServerConfig* conf, const char* tag); /** Initialize x line */ bool InitXLine(ServerConfig* conf, const char* tag); - + /** Add a config-defined zline */ bool DoZLine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types); @@ -963,8 +957,4 @@ bool DoKLine(ServerConfig* conf, const char* tag, char** entries, ValueList &val */ bool DoELine(ServerConfig* conf, const char* tag, char** entries, ValueList &values, int* types); - - - #endif -