/* +------------------------------------+ * | Inspire Internet Relay Chat Daemon | * +------------------------------------+ * * Inspire is copyright (C) 2002-2004 ChatSpike-Dev. * E-mail: * * * * Written by Craig Edwards, Craig McLure, and others. * This program is free but copyrighted software; see * the file COPYING for details. * * --------------------------------------------------- */ #include #include class ServerConfig { char ServerName[MAXBUF]; char Network[MAXBUF]; char ServerDesc[MAXBUF]; char AdminName[MAXBUF]; char AdminEmail[MAXBUF]; char AdminNick[MAXBUF]; char diepass[MAXBUF]; char restartpass[MAXBUF]; char motd[MAXBUF]; char rules[MAXBUF]; char PrefixQuit[MAXBUF]; char DieValue[MAXBUF]; char DNSServer[MAXBUF]; char ModPath[1024]; char MyExecutable[1024]; FILE *log_file; bool nofork; bool unlimitcore; bool AllowHalfop; int dns_timeout; int NetBufferSize; // NetBufferSize used as the buffer size for all read() ops int MaxConn; // size of accept() backlog (128 by default on *BSD) unsigned int SoftLimit; int MaxWhoResults; int debugging; int LogLevel; int DieDelay; char addrs[MAXBUF][255]; ServerConfig() { *ServerName = '\0'; *Network = '\0'; *ServerDesc = '\0'; *AdminName = '\0'; *AdminEmail = '\0'; *AdminNick = '\0'; *diepass = '\0'; *restartpass = '\0'; *motd = '\0'; *rules = '\0'; *PrefixQuit = '\0'; *DieValue = '\0'; *DNSServer = '\0'; *ModPath = '\0'; *MyExecutable = '\0'; log_file = NULL; nofork = false; unlimitcore = false; AllowHalfop = true; dns_timeout = 5; NetBufferSize = 10240; SoftLimit = MAXCLIENTS; MaxConn = SOMAXCONN; MaxWhoResults = 100; debugging = 0; LogLevel = DEFAULT; DieDelay = 5; } }; void Exit (int); void Start (void); int DaemonSeed (void); bool FileExists (const char* file); int OpenTCPSocket (void); int BindSocket (int sockfd, struct sockaddr_in client, struct sockaddr_in server, int port, char* addr); bool LoadConf(const char* filename, std::stringstream *target, std::stringstream* errorstream); int ConfValue(char* tag, char* var, int index, char *result, std::stringstream *config); int ReadConf(std::stringstream *config_f,const char* tag, const char* var, int index, char *result); int ConfValueEnum(char* tag,std::stringstream *config); int EnumConf(std::stringstream *config_f,const char* tag); int EnumValues(std::stringstream *config, const char* tag, int index); void WritePID(std::string filename);