X-Git-Url: https://jfr.im/git/irc/gameservirc.git/blobdiff_plain/1e1b5312aab8cad09bacc048d457b2e79805023c..c260a8d7699447c74d9a9ee8912582cc8814cec2:/gameserv/config.cpp diff --git a/gameserv/config.cpp b/gameserv/config.cpp index 21088cd..9796938 100644 --- a/gameserv/config.cpp +++ b/gameserv/config.cpp @@ -3,6 +3,7 @@ #include #include #include "extern.h" +#include "flags.h" using std::ifstream; using std::cerr; @@ -21,9 +22,15 @@ char *c_Forest; // Forest channel char *c_ForestTopic; // Forest Channel Topic char *adminpass; // Administrator password char *welcomemsg; // Welcome Message +char *ignoreserverslist; // Servernames to ignore int welcomedelay; // Welcome Message Delay int updateperiod; // Seconds until another player database update int forestfights; // Forest fights per day +int maxafightdistance; // Max levels above a player they can fight player->player +int maxbfightdistance; // Max levels below a player they can fight player->player +int maxidletime; // Max time (in seconds) a player can be idle for +int idlecheckperiod; // Period for checking every player's idle time +long configflags; // Holds the bit representation of some boolean values // Remote server stuff. This is used for the outgoing connection gameserv needs to make // to a real ircd. @@ -33,6 +40,8 @@ char *remotepass; // Password for the server link char *playerdata; // File to store player data in char *monsterdata; // File to load monster data from +char *newsdata; // File to store news data in +char *pidfile; // Process ID file #if defined(P10) char *gsnum = "[]AAA"; // GameServ Numeric @@ -66,12 +75,21 @@ void unload_config_file() delete [] adminpass; if (welcomemsg) delete [] welcomemsg; + if (pidfile) + delete [] pidfile; + if (ignoreserverslist) + delete [] ignoreserverslist; + if (newsdata) + delete [] newsdata; + + configflags = 0; } int load_config_file(char *config) { char *buf, *directive, *value; - #define numdirectives 15 + + #define numdirectives 22 unload_config_file(); @@ -97,7 +115,22 @@ int load_config_file(char *config) directives[12].desc = "WELCOMEDELAY - Delay (in seconds) to wait before welcoming new users to the network"; directives[13].desc = "FORESTFIGHTS - Number of forest fights players get every day"; directives[14].desc = "UPDATEPERIOD - Number of seconds between every player data save"; - directives[15].desc = "WELCOMEMSG - Message to send to new users on the network"; + directives[15].desc = "PIDFILE - Filename to store the gameserv process ID in"; + directives[16].desc = "MAXAFIGHTDISTANCE - The maximum number of levels above you "\ + "that you can fight player->player"; + directives[17].desc = "MAXBFIGHTDISTANCE - The maximum number of levels below you "\ + "that you can fight player->player"; + directives[18].desc = "MAXIDLETIME - The maximum amount of time (in seconds) "\ + "that a player can be idle before something happens"; + directives[19].desc = "IDLECHECKPERIOD - The period (in seconds) in which the entire "\ + "players list will be checked for idlers. See also: "\ + "MAXIDLETIME"; + directives[20].desc = "LISTENONC_FOREST - True/False as to "\ + "whether or not to listen for forest "\ + "commands on the forest channel"; + directives[21].desc = "NEWSDATA - File to store daily news in"; + + configflags = 0; for (int count = 0; count < numdirectives; count++) { @@ -237,12 +270,76 @@ int load_config_file(char *config) updateperiod = stringtoint(value); directives[14].done = true; } + else if (stricmp(directive, "PIDFILE") == 0) + { + value = strtok(NULL, " "); + pidfile = new char[strlen(value) + 1]; + strcpy(pidfile, value); + directives[15].done = true; + } + else if (stricmp(directive, "MAXAFIGHTDISTANCE") == 0) + { + value = strtok(NULL, " "); + maxafightdistance = stringtoint(value); + directives[16].done = true;; + } + else if (stricmp(directive, "MAXBFIGHTDISTANCE") == 0) + { + value = strtok(NULL, " "); + maxbfightdistance = stringtoint(value); + directives[17].done = true; + } + else if (stricmp(directive, "MAXIDLETIME") == 0) + { + value = strtok(NULL, " "); + maxidletime = stringtoint(value); + directives[18].done = true; + } + else if (stricmp(directive, "IDLECHECKPERIOD") == 0) + { + value = strtok(NULL, " "); + idlecheckperiod = stringtoint(value); + directives[19].done = true; + } + else if (stricmp(directive, "LISTENONC_FOREST") == 0) + { + value = strtok(NULL, " "); + if (stricmp(value, "TRUE") == 0) + setListenOnCF(); + + directives[20].done = true; + } + else if (stricmp(directive, "NEWSDATA") == 0) + { + value = strtok(NULL, " "); + newsdata = new char [strlen(value) + 1]; + strcpy(newsdata, value); + directives[21].done = true; + } else if (stricmp(directive, "WELCOMEMSG") == 0) { + // This directive is optional value = strtok(NULL, ""); welcomemsg = new char[strlen(value) + 1]; strcpy(welcomemsg, value); - directives[15].done = true; + setWelcome(); + } + else if (stricmp(directive, "USEPRIVMSG") == 0) + { + // This directive is optional + setUsePrivmsg(); + } + else if (stricmp(directive, "BOPER") == 0) + { + // This directive is optional + setBOper(); + } + else if (stricmp(directive, "IGNORESERVERS") == 0) + { + // This directive is optional + value = strtok(NULL, ""); + ignoreserverslist = new char[strlen(value) + 1]; + strcpy(ignoreserverslist, value); } else {