X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fconfigreader.h;h=5e8c62e0620d9e38bca9a8384b750bdfe37f7969;hb=5e9a6b9186a8cbaaf65ae7d9cd9c0c033c91b497;hp=f3816ba32b61c1756918fae6eae917ac202a843f;hpb=91f17cace8a3ef7ae69cb9597df62c84aef8339c;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/configreader.h b/include/configreader.h index f3816ba32..5e8c62e06 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -2,13 +2,9 @@ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * - * InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev. - * E-mail: - * - * - * - * - * Written by Craig Edwards, Craig McLure, and others. + * InspIRCd: (C) 2002-2007 InspIRCd Development Team + * See: http://www.inspircd.org/wiki/index.php/Credits + * * This program is free but copyrighted software; see * the file COPYING for details. * @@ -30,10 +26,18 @@ class ServerConfig; class InspIRCd; +class InspSocket; /** Types of data in the core config */ -enum ConfigDataType { DT_NOTHING, DT_INTEGER, DT_CHARPTR, DT_BOOLEAN }; +enum ConfigDataType +{ + DT_NOTHING = 0, + DT_INTEGER = 1, + DT_CHARPTR = 2, + DT_BOOLEAN = 3, + DT_ALLOW_NEWLINE = 128 +}; /** Holds a config value, either string, integer or boolean. * Callback functions receive one or more of these, either on @@ -135,6 +139,7 @@ struct InitialConfig { char* tag; char* value; + char* default_value; ValueContainerBase* val; ConfigDataType datatype; Validator validation_function; @@ -147,6 +152,7 @@ struct MultiConfig { const char* tag; char* items[12]; + char* items_default[12]; int datatype[12]; MultiNotify init_function; MultiValidator validation_function; @@ -292,10 +298,6 @@ class ServerConfig : public Extensible */ char ModPath[1024]; - /** The temporary directory where modules are copied - */ - char TempDir[1024]; - /** The full pathname to the executable, as * given in argv[0] when the program starts. */ @@ -449,11 +451,14 @@ class ServerConfig : public Extensible */ std::map IOHookModule; + std::map SocketIOHookModule; + /** The 005 tokens of this server (ISUPPORT) * populated/repopulated upon loading or unloading * modules. */ std::string data005; + std::vector isupport; /** STATS characters in this list are available * only to operators. @@ -476,6 +481,10 @@ class ServerConfig : public Extensible */ std::map maxbans; + /** Directory where the inspircd binary resides + */ + std::string MyDir; + /** If set to true, no user DNS lookups are to be performed */ bool NoUserDns; @@ -489,6 +498,11 @@ class ServerConfig : public Extensible */ bool CycleHosts; + /** If set to true, prefixed channel NOTICEs and PRIVMSGs will have the prefix + * added to the outgoing text for undernet style msg prefixing. + */ + bool UndernetMsgPrefix; + /** All oper type definitions from the config file */ opertype_t opertypes; @@ -497,6 +511,14 @@ class ServerConfig : public Extensible */ operclass_t operclass; + /** Saved argv from startup + */ + char** argv; + + /** Saved argc from startup + */ + int argc; + /** Construct a new ServerConfig */ ServerConfig(InspIRCd* Instance); @@ -505,6 +527,14 @@ class ServerConfig : public Extensible */ void ClearStack(); + /** Update the 005 vector + */ + void Update005(); + + /** Send the 005 numerics (ISUPPORT) to a user + */ + void Send005(userrec* user); + /** Read the entire configuration into memory * and initialize this class. All other methods * should be used only by the core. @@ -515,10 +545,23 @@ class ServerConfig : public Extensible */ bool ReadFile(file_cache &F, const char* fname); + /** 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. + */ + + /** 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 user If this is set to a non-null value, and bail is false, the errors are spooled to + * this user as SNOTICEs. + * If the parameter is NULL, the messages are spooled to all users via WriteOpers as SNOTICEs. + */ + void ReportConfigError(const std::string &errormessage, bool bail, userrec* user); + /** 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, const char* filename, std::ostringstream &errorstream); + /** 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. */ @@ -528,24 +571,31 @@ class ServerConfig : public Extensible /** 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 ConfValue(ConfigDataHash &target, const char* tag, const char* var, int index, char* result, int length, bool allow_linefeeds = false); + bool ConfValue(ConfigDataHash &target, 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 ConfValue(ConfigDataHash &target, const std::string &tag, const std::string &var, int index, std::string &result, bool allow_linefeeds = false); + 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); /** 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(ConfigDataHash &target, 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(ConfigDataHash &target, 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(ConfigDataHash &target, 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(ConfigDataHash &target, 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 */ @@ -564,6 +614,9 @@ class ServerConfig : public Extensible Module* GetIOHook(int port); bool AddIOHook(int port, Module* iomod); bool DelIOHook(int port); + Module* GetIOHook(InspSocket* is); + bool AddIOHook(Module* iomod, InspSocket* is); + bool DelIOHook(InspSocket* is); static std::string GetFullProgDir(char** argv, int argc); static bool DirValid(const char* dirandfile);