* InspIRCd is copyright (C) 2002-2006 ChatSpike-Dev.
* E-mail:
* <brain@chatspike.net>
- * <Craig@chatspike.net>
+ * <Craig@chatspike.net>
* <omster@gmail.com>
*
* Written by Craig Edwards, Craig McLure, and others.
#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 };
-struct InitialConfig {
+struct InitialConfig
+{
char* tag;
char* value;
void* val;
Validator validation_function;
};
-struct MultiConfig {
+struct MultiConfig
+{
const char* tag;
char* items[12];
int datatype[12];
* and storage of the configuration data needed to run the ircd, such as
* the servername, connect classes, /ADMIN data, MOTDs and filenames etc.
*/
-class ServerConfig : public classbase
+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.
* handling code, used to read data into a user's
* recvQ.
*/
- int NetBufferSize;
+ int NetBufferSize;
/** The value to be used for listen() backlogs
* as default.
*/
- int MaxConn;
+ int MaxConn;
/** The soft limit value assigned to the irc server.
* The IRC server will not allow more than this
* number of local users.
*/
- unsigned int SoftLimit;
+ unsigned int SoftLimit;
/** Maximum number of targets for a multi target command
* such as PRIVMSG or KICK
/** The maximum number of /WHO results allowed
* in any single /WHO command.
*/
- int MaxWhoResults;
+ int MaxWhoResults;
/** True if the DEBUG loglevel is selected.
*/
- int debugging;
+ int debugging;
/** The loglevel in use by the IRC server
*/
- int LogLevel;
+ int LogLevel;
/** How many seconds to wait before exiting
* the program when /DIE is correctly issued.
*/
- int DieDelay;
+ int DieDelay;
/** True if we're going to hide netsplits as *.net *.split for non-opers
*/
/** A list of IP addresses the server is listening
* on.
*/
- char addrs[MAXBUF][255];
+ char addrs[MAXBUF][255];
/** The MOTD file, cached in a file_cache type.
*/
*/
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];
*/
std::map<std::string,int> 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;
- /** Clears the include stack in preperation for
- * a Read() call.
+ /** 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.
*/
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);
+
#endif