#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 };
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
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.
/** A list of the file descriptors for the listening client ports
*/
- int openSockfd[MAX_DESCRIPTORS];
+ ListenSocket* openSockfd[255];
/** Boolean sets of which modules implement which functions
*/
*/
bool SyntaxHints;
- ServerConfig();
+ /** 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();
*/
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.
*/
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);