X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=include%2Fconfigreader.h;h=5c8a663070887c1ac3f0b204880d2e15fb625a14;hb=d54fd9b1e6b31f69332a9241b5f17330c0ad61e0;hp=723ce881b0a38c3ce5472ce933a2a390c06c074b;hpb=28b812bb3337f87f6b466608f1f9663113ddb41b;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/include/configreader.h b/include/configreader.h index 723ce881b..5c8a66307 100644 --- a/include/configreader.h +++ b/include/configreader.h @@ -25,10 +25,15 @@ #include "inspircd.h" #include "globals.h" #include "modules.h" +#include "socketengine.h" +#include "socket.h" -typedef bool (*Validator)(const char*, const char*, void*); -typedef bool (*MultiValidator)(const char*, char**, void**, int*); -typedef bool (*MultiNotify)(const char*); +class ServerConfig; +class InspIRCd; + +typedef bool (*Validator)(ServerConfig* conf, const char*, const char*, void*); +typedef bool (*MultiValidator)(ServerConfig* conf, const char*, char**, void**, int*); +typedef bool (*MultiNotify)(ServerConfig* conf, const char*); enum ConfigDataType { DT_NOTHING, DT_INTEGER, DT_CHARPTR, DT_BOOLEAN }; @@ -59,6 +64,8 @@ struct MultiConfig class ServerConfig : public Extensible { private: + InspIRCd* ServerInstance; + /** This variable holds the names of all * files included from the main one. This * is used to make sure that no files are @@ -79,6 +86,8 @@ class ServerConfig : public Extensible bool CheckOnce(char* tag, bool bail, userrec* user); public: + + InspIRCd* GetInstance(); /** This holds all the information in the config file, * it's indexed by tag name to a vector of key/values. @@ -301,6 +310,10 @@ class ServerConfig : public Extensible */ int ports[255]; + /** A list of the file descriptors for the listening client ports + */ + ListenSocket* openSockfd[255]; + /** Boolean sets of which modules implement which functions */ char implement_lists[255][255]; @@ -340,10 +353,22 @@ class ServerConfig : public Extensible */ std::map maxbans; - ServerConfig(); + /** If set to true, no user DNS lookups are to be performed + */ + bool NoUserDns; + + /** If set to true, provide syntax hints for unknown commands + */ + bool SyntaxHints; + + /** If set to true, users appear to quit then rejoin when their hosts change. + * This keeps clients synchronized properly. + */ + bool CycleHosts; + + ServerConfig(InspIRCd* Instance); - /** Clears the include stack in preperation for - * a Read() call. + /** Clears the include stack in preperation for a Read() call. */ void ClearStack(); @@ -353,6 +378,10 @@ class ServerConfig : public Extensible */ void Read(bool bail, userrec* user); + /** Read a file into a file_cache object + */ + 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. */ @@ -384,6 +413,14 @@ class ServerConfig : public Extensible Module* GetIOHook(int port); bool AddIOHook(int port, Module* iomod); bool DelIOHook(int port); + + static std::string GetFullProgDir(char** argv, int argc); + static bool DirValid(const char* dirandfile); + static char* CleanFilename(char* name); + static bool FileExists(const char* file); + }; +bool InitializeDisabledCommands(const char* data, InspIRCd* ServerInstance); + #endif