Started moving of data into ServerConfig class

git-svn-id: http://svn.inspircd.org/repository/trunk/inspircd@2393 e03df62e-2008-0410-955e-edbf42e46eb7
This commit is contained in:
brain 2005-12-14 10:51:18 +00:00
parent 44d3b5b826
commit d582107b33
14 changed files with 41 additions and 235 deletions

View File

@ -14,6 +14,9 @@
* --------------------------------------------------- * ---------------------------------------------------
*/ */
#ifndef __INSPIRCD_H__
#define __INSPIRCD_H__
#include "inspircd_config.h" #include "inspircd_config.h"
#include <string> #include <string>
#include <stdio.h> #include <stdio.h>
@ -75,6 +78,7 @@ typedef std::deque<std::string> file_cache;
class serverstats class serverstats
{ {
public:
int statsAccept; int statsAccept;
int statsRefused; int statsRefused;
int statsUnknown; int statsUnknown;
@ -156,3 +160,5 @@ void* dns_task(void* arg);
void process_buffer(const char* cmdbuf,userrec *user); void process_buffer(const char* cmdbuf,userrec *user);
void FullConnectUser(userrec* user); void FullConnectUser(userrec* user);
chanrec* ForceChan(chanrec* Ptr,ucrec &a,userrec* user, int created); chanrec* ForceChan(chanrec* Ptr,ucrec &a,userrec* user, int created);
#endif

View File

@ -14,11 +14,16 @@
* --------------------------------------------------- * ---------------------------------------------------
*/ */
#ifndef __INSPIRCD_IO_H__
#define __INSPIRCD_IO_H__
#include <sstream> #include <sstream>
#include <string> #include <string>
#include "inspircd.h"
class ServerConfig class ServerConfig
{ {
public:
char ServerName[MAXBUF]; char ServerName[MAXBUF];
char Network[MAXBUF]; char Network[MAXBUF];
char ServerDesc[MAXBUF]; char ServerDesc[MAXBUF];
@ -75,7 +80,7 @@ class ServerConfig
MaxConn = SOMAXCONN; MaxConn = SOMAXCONN;
MaxWhoResults = 100; MaxWhoResults = 100;
debugging = 0; debugging = 0;
LogLevel = DEFAULT; LogLevel = 0;
DieDelay = 5; DieDelay = 5;
} }
}; };
@ -95,3 +100,5 @@ int ConfValueEnum(char* tag,std::stringstream *config);
int EnumConf(std::stringstream *config_f,const char* tag); int EnumConf(std::stringstream *config_f,const char* tag);
int EnumValues(std::stringstream *config, const char* tag, int index); int EnumValues(std::stringstream *config, const char* tag, int index);
void WritePID(std::string filename); void WritePID(std::string filename);
#endif

View File

@ -53,45 +53,17 @@ using namespace std;
#define nspace std #define nspace std
#endif #endif
extern ServerConfig* Config;
extern int MODCOUNT; extern int MODCOUNT;
extern std::vector<Module*> modules; extern std::vector<Module*> modules;
extern std::vector<ircd_module*> factory; extern std::vector<ircd_module*> factory;
extern int LogLevel;
extern char ServerName[MAXBUF];
extern char Network[MAXBUF];
extern char ServerDesc[MAXBUF];
extern char AdminName[MAXBUF];
extern char AdminEmail[MAXBUF];
extern char AdminNick[MAXBUF];
extern char diepass[MAXBUF];
extern char restartpass[MAXBUF];
extern char motd[MAXBUF];
extern char rules[MAXBUF];
extern char list[MAXBUF];
extern char PrefixQuit[MAXBUF];
extern char DieValue[MAXBUF];
extern int debugging;
extern int WHOWAS_STALE; extern int WHOWAS_STALE;
extern int WHOWAS_MAX; extern int WHOWAS_MAX;
extern int DieDelay;
extern time_t startup_time; extern time_t startup_time;
extern int NetBufferSize;
int MaxWhoResults;
extern time_t nb_start;
extern std::vector<std::string> module_names; extern std::vector<std::string> module_names;
extern int boundPortCount; extern int boundPortCount;
extern int portCount;
extern int ports[MAXSOCKS];
extern std::stringstream config_f; extern std::stringstream config_f;
extern FILE *log_file;
extern time_t TIME; extern time_t TIME;
using namespace std; using namespace std;

View File

@ -63,53 +63,21 @@ using namespace std;
#include "socketengine.h" #include "socketengine.h"
extern SocketEngine* SE; extern SocketEngine* SE;
extern ServerConfig* Config;
extern int MODCOUNT; extern int MODCOUNT;
extern std::vector<Module*> modules; extern std::vector<Module*> modules;
extern std::vector<ircd_module*> factory; extern std::vector<ircd_module*> factory;
extern int LogLevel;
extern char ServerName[MAXBUF];
extern char Network[MAXBUF];
extern char ServerDesc[MAXBUF];
extern char AdminName[MAXBUF];
extern char AdminEmail[MAXBUF];
extern char AdminNick[MAXBUF];
extern char diepass[MAXBUF];
extern char restartpass[MAXBUF];
extern char motd[MAXBUF];
extern char rules[MAXBUF];
extern char list[MAXBUF];
extern char PrefixQuit[MAXBUF];
extern char DieValue[MAXBUF];
extern int debugging;
extern int WHOWAS_STALE; extern int WHOWAS_STALE;
extern int WHOWAS_MAX; extern int WHOWAS_MAX;
extern int DieDelay;
extern time_t startup_time; extern time_t startup_time;
extern int NetBufferSize;
extern int MaxWhoResults;
extern time_t nb_start;
extern bool nofork;
extern time_t TIME; extern time_t TIME;
extern std::vector<std::string> module_names; extern std::vector<std::string> module_names;
extern char MyExecutable[1024];
extern int boundPortCount; extern int boundPortCount;
extern int portCount; extern int portCount;
extern int ports[MAXSOCKS]; extern int ports[MAXSOCKS];
extern std::stringstream config_f; extern std::stringstream config_f;
extern FILE *log_file;
extern ClassVector Classes; extern ClassVector Classes;
const long duration_m = 60; const long duration_m = 60;

View File

@ -40,6 +40,7 @@ using namespace std;
#include "socketengine.h" #include "socketengine.h"
extern SocketEngine* SE; extern SocketEngine* SE;
extern ServerConfig* Config;
serverstats* stats; serverstats* stats;
#define max(a,b) (a > b ? a : b) #define max(a,b) (a > b ? a : b)

View File

@ -43,7 +43,6 @@ using namespace std;
#include <time.h> #include <time.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/socket.h> #include <sys/socket.h>
#include <sys/poll.h>
#include <sys/time.h> #include <sys/time.h>
#include <netinet/in.h> #include <netinet/in.h>
#include <string.h> #include <string.h>
@ -53,9 +52,7 @@ using namespace std;
#include "socketengine.h" #include "socketengine.h"
extern SocketEngine* SE; extern SocketEngine* SE;
typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, irc::StrHashComp> user_hash; extern ServerConfig* Config;
extern user_hash clientlist;
extern char DNSServer[MAXBUF];
class Lookup; class Lookup;

View File

@ -51,21 +51,12 @@ using namespace std;
extern int MODCOUNT; extern int MODCOUNT;
extern std::vector<Module*> modules; extern std::vector<Module*> modules;
extern ServerConfig *Config;
extern time_t TIME; extern time_t TIME;
extern bool nofork;
extern char lowermap[255]; extern char lowermap[255];
extern char ServerName[MAXBUF];
extern char Network[MAXBUF];
extern char ServerDesc[MAXBUF];
extern char list[MAXBUF];
extern int debugging;
extern int LogLevel;
extern std::stringstream config_f; extern std::stringstream config_f;
extern FILE *log_file;
extern userrec* fd_ref_table[65536]; extern userrec* fd_ref_table[65536];
extern serverstats* stats; extern serverstats* stats;

View File

@ -31,12 +31,10 @@ using namespace std;
#include "inspstring.h" #include "inspstring.h"
#include "helperfuncs.h" #include "helperfuncs.h"
extern FILE *log_file; extern ServerConfig *Config;
extern int boundPortCount; extern int boundPortCount;
extern int openSockfd[MAXSOCKS]; extern int openSockfd[MAXSOCKS];
extern time_t TIME; extern time_t TIME;
extern bool unlimitcore;
extern int MaxConn;
std::vector<std::string> include_stack; std::vector<std::string> include_stack;
void WriteOpers(char* text, ...); void WriteOpers(char* text, ...);

View File

@ -51,25 +51,7 @@ extern std::vector<Module*> modules;
extern std::vector<ircd_module*> factory; extern std::vector<ircd_module*> factory;
extern std::vector<std::string> module_names; extern std::vector<std::string> module_names;
extern ServerConfig* Config;
extern int LogLevel;
extern char ServerName[MAXBUF];
extern char Network[MAXBUF];
extern char ServerDesc[MAXBUF];
extern char AdminName[MAXBUF];
extern char AdminEmail[MAXBUF];
extern char AdminNick[MAXBUF];
extern char diepass[MAXBUF];
extern char restartpass[MAXBUF];
extern char motd[MAXBUF];
extern char rules[MAXBUF];
extern char list[MAXBUF];
extern char PrefixQuit[MAXBUF];
extern char DieValue[MAXBUF];
extern bool AllowHalfop;
extern bool AllowProtect;
extern bool AllowFounder;
extern time_t TIME; extern time_t TIME;

View File

@ -50,55 +50,25 @@ using namespace std;
#include "socketengine.h" #include "socketengine.h"
extern SocketEngine* SE; extern SocketEngine* SE;
extern ServerConfig *Config;
extern int MODCOUNT; extern int MODCOUNT;
extern std::vector<Module*> modules; extern std::vector<Module*> modules;
extern std::vector<ircd_module*> factory; extern std::vector<ircd_module*> factory;
extern std::vector<std::string> include_stack; extern std::vector<std::string> include_stack;
extern std::vector<InspSocket*> module_sockets; extern std::vector<InspSocket*> module_sockets;
extern time_t TIME; extern time_t TIME;
extern int LogLevel;
extern char ServerName[MAXBUF];
extern char Network[MAXBUF];
extern char ServerDesc[MAXBUF];
extern char AdminName[MAXBUF];
extern char AdminEmail[MAXBUF];
extern char AdminNick[MAXBUF];
extern char diepass[MAXBUF];
extern char restartpass[MAXBUF];
extern char motd[MAXBUF];
extern char rules[MAXBUF];
extern char list[MAXBUF];
extern char PrefixQuit[MAXBUF];
extern char DieValue[MAXBUF];
extern int debugging;
extern int WHOWAS_STALE; extern int WHOWAS_STALE;
extern int WHOWAS_MAX; extern int WHOWAS_MAX;
extern int DieDelay;
extern time_t startup_time; extern time_t startup_time;
extern int NetBufferSize;
extern int MaxWhoResults;
extern time_t nb_start;
extern std::vector<std::string> module_names; extern std::vector<std::string> module_names;
extern int boundPortCount; extern int boundPortCount;
extern int portCount; extern int portCount;
extern int ports[MAXSOCKS]; extern int ports[MAXSOCKS];
class Server; class Server;
extern std::stringstream config_f; extern std::stringstream config_f;
extern FILE *log_file;
extern userrec* fd_ref_table[65536]; extern userrec* fd_ref_table[65536];
typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, irc::StrHashComp> user_hash; typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, irc::StrHashComp> user_hash;

View File

@ -39,12 +39,9 @@ using namespace std;
extern SocketEngine* SE; extern SocketEngine* SE;
extern FILE *log_file;
extern int boundPortCount; extern int boundPortCount;
extern int openSockfd[MAXSOCKS]; extern int openSockfd[MAXSOCKS];
extern time_t TIME; extern time_t TIME;
extern bool unlimitcore;
extern int MaxConn;
InspSocket* socket_ref[65535]; InspSocket* socket_ref[65535];

View File

@ -60,60 +60,22 @@ using namespace std;
extern int MODCOUNT; extern int MODCOUNT;
extern int openSockfd[MAXSOCKS]; extern int openSockfd[MAXSOCKS];
extern bool nofork;
extern bool unlimitcore;
extern struct sockaddr_in client,server; extern struct sockaddr_in client,server;
extern char addrs[MAXBUF][255];
extern socklen_t length; extern socklen_t length;
extern char configToken[MAXBUF], Addr[MAXBUF], Type[MAXBUF];
extern char DisabledCommands[MAXBUF];
extern bool AllowHalfop;
extern bool AllowProtect;
extern bool AllowFounder;
extern std::vector<Module*> modules; extern std::vector<Module*> modules;
extern std::vector<std::string> module_names; extern std::vector<std::string> module_names;
extern std::vector<ircd_module*> factory; extern std::vector<ircd_module*> factory;
extern std::vector<InspSocket*> module_sockets; extern std::vector<InspSocket*> module_sockets;
extern SocketEngine* SE; extern SocketEngine* SE;
extern time_t TIME; extern time_t TIME;
extern time_t OLDTIME; extern time_t OLDTIME;
extern int DieDelay;
extern time_t startup_time; extern time_t startup_time;
extern int NetBufferSize;
extern int MaxConn;
extern unsigned int SoftLimit;
extern int MaxWhoResults;
extern time_t nb_start;
extern int dns_timeout;
extern serverstats* stats; extern serverstats* stats;
extern ServerConfig *Config;
extern userrec* fd_ref_table[65536]; extern userrec* fd_ref_table[65536];
char data[65536];
extern int LogLevel;
extern char ServerName[MAXBUF];
extern char Network[MAXBUF];
extern char ServerDesc[MAXBUF];
extern char AdminName[MAXBUF];
extern char AdminEmail[MAXBUF];
extern char AdminNick[MAXBUF];
extern char diepass[MAXBUF];
extern char restartpass[MAXBUF];
extern char motd[MAXBUF];
extern char rules[MAXBUF];
extern char list[MAXBUF];
extern char PrefixQuit[MAXBUF];
extern char DieValue[MAXBUF];
extern char DNSServer[MAXBUF];
extern char data[65536];
typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, irc::StrHashComp> user_hash; typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, irc::StrHashComp> user_hash;
typedef nspace::hash_map<std::string, chanrec*, nspace::hash<string>, irc::StrHashComp> chan_hash; typedef nspace::hash_map<std::string, chanrec*, nspace::hash<string>, irc::StrHashComp> chan_hash;
@ -124,7 +86,6 @@ extern user_hash clientlist;
extern chan_hash chanlist; extern chan_hash chanlist;
extern whowas_hash whowas; extern whowas_hash whowas;
extern FILE *log_file;
extern std::stringstream config_f; extern std::stringstream config_f;
void ProcessUser(userrec* cu) void ProcessUser(userrec* cu)
@ -146,7 +107,7 @@ void ProcessUser(userrec* cu)
log(DEBUG,"Read result: %d",result); log(DEBUG,"Read result: %d",result);
if (result) if (result)
{ {
statsRecv += result; stats->statsRecv += result;
// perform a check on the raw buffer as an array (not a string!) to remove // perform a check on the raw buffer as an array (not a string!) to remove
// characters 0 and 7 which are illegal in the RFC - replace them with spaces. // characters 0 and 7 which are illegal in the RFC - replace them with spaces.
// hopefully this should stop even more people whining about "Unknown command: *" // hopefully this should stop even more people whining about "Unknown command: *"
@ -174,12 +135,12 @@ void ProcessUser(userrec* cu)
{ {
WriteOpers("*** Excess flood from %s",current->ip); WriteOpers("*** Excess flood from %s",current->ip);
log(DEFAULT,"Excess flood from: %s",current->ip); log(DEFAULT,"Excess flood from: %s",current->ip);
add_zline(120,ServerName,"Flood from unregistered connection",current->ip); add_zline(120,Config->ServerName,"Flood from unregistered connection",current->ip);
apply_lines(APPLY_ZLINES); apply_lines(APPLY_ZLINES);
} }
return; return;
} }
if (current->recvq.length() > (unsigned)NetBufferSize) if (current->recvq.length() > (unsigned)Config->NetBufferSize)
{ {
if (current->registered == 7) if (current->registered == 7)
{ {
@ -189,7 +150,7 @@ void ProcessUser(userrec* cu)
{ {
WriteOpers("*** Excess flood from %s",current->ip); WriteOpers("*** Excess flood from %s",current->ip);
log(DEFAULT,"Excess flood from: %s",current->ip); log(DEFAULT,"Excess flood from: %s",current->ip);
add_zline(120,ServerName,"Flood from unregistered connection",current->ip); add_zline(120,Config->ServerName,"Flood from unregistered connection",current->ip);
apply_lines(APPLY_ZLINES); apply_lines(APPLY_ZLINES);
} }
return; return;
@ -221,7 +182,7 @@ void ProcessUser(userrec* cu)
} }
else else
{ {
add_zline(120,ServerName,"Flood from unregistered connection",current->ip); add_zline(120,Config->ServerName,"Flood from unregistered connection",current->ip);
apply_lines(APPLY_ZLINES); apply_lines(APPLY_ZLINES);
} }
return; return;
@ -347,7 +308,7 @@ bool DoBackgroundUserStuff(time_t TIME)
{ {
log(DEBUG,"signon exceed, registered=3, and modules ready, OK: %d %d",TIME,curr->signon); log(DEBUG,"signon exceed, registered=3, and modules ready, OK: %d %d",TIME,curr->signon);
curr->dns_done = true; curr->dns_done = true;
statsDnsBad++; stats->statsDnsBad++;
FullConnectUser(curr); FullConnectUser(curr);
if (fd_ref_table[currfd] != curr) // something changed, bail pronto if (fd_ref_table[currfd] != curr) // something changed, bail pronto
return true; return true;
@ -367,7 +328,7 @@ bool DoBackgroundUserStuff(time_t TIME)
kill_link(curr,"Ping timeout"); kill_link(curr,"Ping timeout");
return true; return true;
} }
Write(curr->fd,"PING :%s",ServerName); Write(curr->fd,"PING :%s",Config->ServerName);
log(DEBUG,"InspIRCd: pinging: %s",curr->nick); log(DEBUG,"InspIRCd: pinging: %s",curr->nick);
curr->lastping = 0; curr->lastping = 0;
curr->nping = TIME+curr->pingmax; // was hard coded to 120 curr->nping = TIME+curr->pingmax; // was hard coded to 120
@ -381,8 +342,8 @@ bool DoBackgroundUserStuff(time_t TIME)
void OpenLog(char** argv, int argc) void OpenLog(char** argv, int argc)
{ {
std::string logpath = GetFullProgDir(argv,argc) + "/ircd.log"; std::string logpath = GetFullProgDir(argv,argc) + "/ircd.log";
log_file = fopen(logpath.c_str(),"a+"); Config->log_file = fopen(logpath.c_str(),"a+");
if (!log_file) if (!Config->log_file)
{ {
printf("ERROR: Could not write to logfile %s, bailing!\n\n",logpath.c_str()); printf("ERROR: Could not write to logfile %s, bailing!\n\n",logpath.c_str());
Exit(ERROR); Exit(ERROR);
@ -408,10 +369,10 @@ void CheckRoot()
void CheckDie() void CheckDie()
{ {
if (DieValue[0]) if (*Config->DieValue)
{ {
printf("WARNING: %s\n\n",DieValue); printf("WARNING: %s\n\n",Config->DieValue);
log(DEFAULT,"Ut-Oh, somebody didn't read their config file: '%s'",DieValue); log(DEFAULT,"Ut-Oh, somebody didn't read their config file: '%s'",Config->DieValue);
exit(0); exit(0);
} }
} }
@ -420,6 +381,7 @@ void LoadAllModules()
{ {
/* We must load the modules AFTER initializing the socket engine, now */ /* We must load the modules AFTER initializing the socket engine, now */
MODCOUNT = -1; MODCOUNT = -1;
char configToken[MAXBUF];
for (int count = 0; count < ConfValueEnum("module",&config_f); count++) for (int count = 0; count < ConfValueEnum("module",&config_f); count++)
{ {
ConfValue("module","name",count,configToken,&config_f); ConfValue("module","name",count,configToken,&config_f);

View File

@ -31,7 +31,7 @@ using namespace std;
#include "helperfuncs.h" #include "helperfuncs.h"
extern std::stringstream config_f; extern std::stringstream config_f;
extern char ServerName[MAXBUF]; extern ServerConfig* Config;
extern time_t TIME; extern time_t TIME;
@ -46,7 +46,7 @@ userrec::userrec()
strcpy(dhost,""); strcpy(dhost,"");
strcpy(fullname,""); strcpy(fullname,"");
strcpy(modes,""); strcpy(modes,"");
server = (char*)FindServerNamePtr(ServerName); server = (char*)FindServerNamePtr(Config->ServerName);
strcpy(awaymsg,""); strcpy(awaymsg,"");
strcpy(oper,""); strcpy(oper,"");
reset_due = TIME; reset_due = TIME;

View File

@ -50,55 +50,10 @@ using namespace std;
extern int MODCOUNT; extern int MODCOUNT;
extern std::vector<Module*> modules; extern std::vector<Module*> modules;
extern std::vector<ircd_module*> factory; extern std::vector<ircd_module*> factory;
extern ServerConfig* Config;
extern int LogLevel;
extern char ServerName[MAXBUF];
extern char Network[MAXBUF];
extern char ServerDesc[MAXBUF];
extern char AdminName[MAXBUF];
extern char AdminEmail[MAXBUF];
extern char AdminNick[MAXBUF];
extern char diepass[MAXBUF];
extern char restartpass[MAXBUF];
extern char motd[MAXBUF];
extern char rules[MAXBUF];
extern char list[MAXBUF];
extern char PrefixQuit[MAXBUF];
extern char DieValue[MAXBUF];
extern int debugging;
extern int WHOWAS_STALE;
extern int WHOWAS_MAX;
extern int DieDelay;
extern time_t startup_time;
extern int NetBufferSize;
extern time_t nb_start;
extern std::vector<std::string> module_names;
extern int boundPortCount;
extern int portCount;
extern int ports[MAXSOCKS];
extern std::stringstream config_f; extern std::stringstream config_f;
extern FILE *log_file;
typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, irc::StrHashComp> user_hash; typedef nspace::hash_map<std::string, userrec*, nspace::hash<string>, irc::StrHashComp> user_hash;
typedef nspace::hash_map<std::string, chanrec*, nspace::hash<string>, irc::StrHashComp> chan_hash;
typedef nspace::hash_map<in_addr,string*, nspace::hash<in_addr>, irc::InAddr_HashComp> address_cache;
typedef nspace::hash_map<std::string, WhoWasUser*, nspace::hash<string>, irc::StrHashComp> whowas_hash;
typedef std::deque<command_t> command_table;
extern user_hash clientlist; extern user_hash clientlist;
extern chan_hash chanlist;
extern whowas_hash whowas;
extern command_table cmdlist;
extern file_cache MOTD;
extern file_cache RULES;
extern address_cache IP;
/* Version two, now with optimized expiry! /* Version two, now with optimized expiry!
* *