diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/heightScore.c | 139 | ||||
| -rw-r--r-- | src/server/heightScore.c~ | 102 | ||||
| -rw-r--r-- | src/server/log.c | 82 | ||||
| -rw-r--r-- | src/server/log.c~ | 67 | ||||
| -rw-r--r-- | src/server/publicServer.c | 446 | ||||
| -rw-r--r-- | src/server/publicServer.c~ | 372 | ||||
| -rw-r--r-- | src/server/serverConfigFile.c | 135 | ||||
| -rw-r--r-- | src/server/serverConfigFile.c~ | 108 |
8 files changed, 400 insertions, 1051 deletions
diff --git a/src/server/heightScore.c b/src/server/heightScore.c index 1a0026b..5c42ad6 100644 --- a/src/server/heightScore.c +++ b/src/server/heightScore.c @@ -11,85 +11,92 @@ static textFile_t *textFile; -void -initHeightScore(char *file) +void initHeightScore(char *file) { - int i; - - textFile = loadTextFile(file); - - if (textFile == NULL) { - fprintf(stderr, _("I am unable to load: \"%s\" !\n"), file); - fprintf(stderr, _("Creating: \"%s\"\n"), file); - textFile = newTextFile(file); - } - else { + int i; + + textFile = loadTextFile(file); + + if( textFile == NULL ) + { + fprintf(stderr, _("I am unable to load: \"%s\" !\n"), file); + fprintf(stderr, _("Creating: \"%s\"\n"), file); + textFile = newTextFile(file); + } + else + { #ifdef DEBUG - printf(_("Scorefile: \"%s\"\n"), file); + printf(_("Scorefile: \"%s\"\n"), file); #endif - return; - } + return; + } - if (textFile == NULL) { - fprintf(stderr, _("I was unable to create: \"%s\" !\n"), file); - return; - } + if( textFile == NULL ) + { + fprintf(stderr, _("I was unable to create: \"%s\" !\n"), file); + return; + } - for (i = 0; i < HEIGHTSCORE_MAX_PLAYERS; i++) { - addList(textFile->text, strdup("no_name 0")); - } + for( i = 0 ; i < HEIGHTSCORE_MAX_PLAYERS ; i++ ) + { + addList(textFile->text, strdup("no_name 0") ); + } - saveTextFile(textFile); + saveTextFile(textFile); } -int -addPlayerInHighScore(char *name, int score) +int addPlayerInHighScore(char *name, int score) { - int i; - - if (score <= 0) { - return -1; // Ha ha ha - } - - for (i = 0; i < HEIGHTSCORE_MAX_PLAYERS; i++) { - char *line; - char thisName[STR_NAME_SIZE]; - int thisCore; - - line = (char *) textFile->text->list[i]; - sscanf(line, "%s %d", thisName, &thisCore); - - if (score >= thisCore) { - char new[STR_SIZE]; - - sprintf(new, "%s %d", name, score); - insList(textFile->text, i, strdup(new)); - delListItem(textFile->text, HEIGHTSCORE_MAX_PLAYERS, free); - //printTextFile(textFile); - saveTextFile(textFile); - - return 0; - } - } - - return -1; + int i; + + if( score <= 0 ) + { + return -1; // Ha ha ha + } + + for( i = 0 ; i < HEIGHTSCORE_MAX_PLAYERS ; i++ ) + { + char *line; + char thisName[STR_NAME_SIZE]; + int thisCore; + + line = (char *) textFile->text->list[i]; + sscanf(line, "%s %d", thisName, &thisCore); + + if( score >= thisCore ) + { + char new[STR_SIZE]; + + sprintf(new, "%s %d", name, score); + insList(textFile->text, i, strdup(new) ); + delListItem(textFile->text, HEIGHTSCORE_MAX_PLAYERS, free); + //printTextFile(textFile); + saveTextFile(textFile); + + return 0; + } + } + + return -1; } -char * -getTableItem(int index) +char* getTableItem(int index) { - if (textFile != NULL && index >= 0 && index < textFile->text->count) { - return (char *) textFile->text->list[index]; - } - - return NULL; + if( textFile != NULL && + index >= 0 && + index < textFile->text->count ) + { + return (char *)textFile->text->list[index]; + } + + return NULL; } -void -quitHeightScore() +void quitHeightScore() { - if (textFile != NULL) { - saveTextFile(textFile); - destroyTextFile(textFile); - } + if( textFile != NULL ) + { + saveTextFile(textFile); + destroyTextFile(textFile); + } } diff --git a/src/server/heightScore.c~ b/src/server/heightScore.c~ deleted file mode 100644 index 5c42ad6..0000000 --- a/src/server/heightScore.c~ +++ /dev/null @@ -1,102 +0,0 @@ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> - -#include "main.h" -#include "list.h" -#include "textFile.h" -#include "heightScore.h" - -static textFile_t *textFile; - -void initHeightScore(char *file) -{ - int i; - - textFile = loadTextFile(file); - - if( textFile == NULL ) - { - fprintf(stderr, _("I am unable to load: \"%s\" !\n"), file); - fprintf(stderr, _("Creating: \"%s\"\n"), file); - textFile = newTextFile(file); - } - else - { -#ifdef DEBUG - printf(_("Scorefile: \"%s\"\n"), file); -#endif - return; - } - - if( textFile == NULL ) - { - fprintf(stderr, _("I was unable to create: \"%s\" !\n"), file); - return; - } - - for( i = 0 ; i < HEIGHTSCORE_MAX_PLAYERS ; i++ ) - { - addList(textFile->text, strdup("no_name 0") ); - } - - saveTextFile(textFile); -} - -int addPlayerInHighScore(char *name, int score) -{ - int i; - - if( score <= 0 ) - { - return -1; // Ha ha ha - } - - for( i = 0 ; i < HEIGHTSCORE_MAX_PLAYERS ; i++ ) - { - char *line; - char thisName[STR_NAME_SIZE]; - int thisCore; - - line = (char *) textFile->text->list[i]; - sscanf(line, "%s %d", thisName, &thisCore); - - if( score >= thisCore ) - { - char new[STR_SIZE]; - - sprintf(new, "%s %d", name, score); - insList(textFile->text, i, strdup(new) ); - delListItem(textFile->text, HEIGHTSCORE_MAX_PLAYERS, free); - //printTextFile(textFile); - saveTextFile(textFile); - - return 0; - } - } - - return -1; -} - -char* getTableItem(int index) -{ - if( textFile != NULL && - index >= 0 && - index < textFile->text->count ) - { - return (char *)textFile->text->list[index]; - } - - return NULL; -} - -void quitHeightScore() -{ - if( textFile != NULL ) - { - saveTextFile(textFile); - destroyTextFile(textFile); - } -} diff --git a/src/server/log.c b/src/server/log.c index 9773926..89e4f46 100644 --- a/src/server/log.c +++ b/src/server/log.c @@ -11,65 +11,57 @@ static FILE *logFile; -int -initLog(char *name) +int initLog(char *name) { - logFile = fopen(name, "a"); + logFile = fopen(name, "a"); - if (logFile == NULL) { - fprintf(stderr, _("Opening logfile \"%s\" failed!\n"), name); - return -1; - } + if( logFile == NULL ) + { + fprintf(stderr, _("Opening logfile \"%s\" failed!\n"), name); + return -1; + } #ifdef DEBUG - printf(_("I use logfile: \"%s\")\n"), name); + printf(_("I use logfile: \"%s\")\n"), name); #endif - addToLog(LOG_INF, "open log file"); + addToLog(LOG_INF, "open log file"); - return 0; + return 0; } -void -addToLog(int type, char *msg) +void addToLog(int type, char *msg) { - char str[STR_LOG_SIZE]; - struct tm *tm_struct; - time_t currentTime; - char *str_type; + char str[STR_LOG_SIZE]; + struct tm *tm_struct; + time_t currentTime; + char *str_type; - currentTime = time(NULL); - tm_struct = localtime(¤tTime); + currentTime = time(NULL); + tm_struct = localtime(¤tTime); - switch (type) { - case LOG_INF: - str_type = "INF"; - break; - case LOG_DBG: - str_type = "DBG"; - break; - case LOG_WRN: - str_type = "WRN"; - break; - case LOG_ERR: - str_type = "ERR"; - break; - default: - assert(!_("Really bad log value!")); - break; - } + switch( type ) + { + case LOG_INF : str_type = "INF"; break; + case LOG_DBG : str_type = "DBG"; break; + case LOG_WRN : str_type = "WRN"; break; + case LOG_ERR : str_type = "ERR"; break; + default : + assert( ! _("Really bad log value!") ); + break; + } - sprintf(str, "(%02d-%02d-%02d %02d:%02d:%02d) %s %s\n", - 1900 + tm_struct->tm_year, tm_struct->tm_mon, tm_struct->tm_mday, - tm_struct->tm_hour, tm_struct->tm_min, tm_struct->tm_sec, - str_type, msg); + sprintf(str, "(%02d-%02d-%02d %02d:%02d:%02d) %s %s\n", + 1900+tm_struct->tm_year, tm_struct->tm_mon, tm_struct->tm_mday, + tm_struct->tm_hour, tm_struct->tm_min, tm_struct->tm_sec, + str_type, msg); - fprintf(logFile, str); + fprintf(logFile, str); - fflush(logFile); + fflush(logFile); } -void -quitLog() +void quitLog() { - addToLog(LOG_INF, "close log file"); - fclose(logFile); + addToLog(LOG_INF, "close log file"); + fclose(logFile); } + diff --git a/src/server/log.c~ b/src/server/log.c~ deleted file mode 100644 index 89e4f46..0000000 --- a/src/server/log.c~ +++ /dev/null @@ -1,67 +0,0 @@ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <sys/stat.h> -#include <time.h> -#include <assert.h> - -#include "log.h" -#include "main.h" - -static FILE *logFile; - -int initLog(char *name) -{ - logFile = fopen(name, "a"); - - if( logFile == NULL ) - { - fprintf(stderr, _("Opening logfile \"%s\" failed!\n"), name); - return -1; - } -#ifdef DEBUG - printf(_("I use logfile: \"%s\")\n"), name); -#endif - addToLog(LOG_INF, "open log file"); - - return 0; -} - -void addToLog(int type, char *msg) -{ - char str[STR_LOG_SIZE]; - struct tm *tm_struct; - time_t currentTime; - char *str_type; - - currentTime = time(NULL); - tm_struct = localtime(¤tTime); - - switch( type ) - { - case LOG_INF : str_type = "INF"; break; - case LOG_DBG : str_type = "DBG"; break; - case LOG_WRN : str_type = "WRN"; break; - case LOG_ERR : str_type = "ERR"; break; - default : - assert( ! _("Really bad log value!") ); - break; - } - - sprintf(str, "(%02d-%02d-%02d %02d:%02d:%02d) %s %s\n", - 1900+tm_struct->tm_year, tm_struct->tm_mon, tm_struct->tm_mday, - tm_struct->tm_hour, tm_struct->tm_min, tm_struct->tm_sec, - str_type, msg); - - fprintf(logFile, str); - - fflush(logFile); -} - -void quitLog() -{ - addToLog(LOG_INF, "close log file"); - fclose(logFile); -} - diff --git a/src/server/publicServer.c b/src/server/publicServer.c index a3c7326..8770300 100644 --- a/src/server/publicServer.c +++ b/src/server/publicServer.c @@ -47,330 +47,326 @@ extern int errno; #define __PACKED__ __attribute__ ((__packed__)) -void -countRoundInc() +void countRoundInc() { } -char * -getSetting(char *env, char *param, char *default_val) +char *getSetting(char *env, char *param, char *default_val) { - return getParamElse(param, getServerConfigFileValue(env, default_val)); + return getParamElse(param, getServerConfigFileValue(env, default_val) ); } -static int -registerPublicServer() +static int registerPublicServer() { #ifndef __WIN32 - int s; + int s; #else - SOCKET s; + SOCKET s; #endif - /* TODO: dodelat TCP makro */ - struct sockaddr_in server; - char *master_server_ip; + /* TODO: dodelat TCP makro */ + struct sockaddr_in server; + char *master_server_ip; - master_server_ip = getIPFormDNS(NET_MASTER_SERVER_DOMAIN); + master_server_ip = getIPFormDNS(NET_MASTER_SERVER_DOMAIN); - //printf("master_server_ip = %s\n", master_server_ip); + //printf("master_server_ip = %s\n", master_server_ip); - if (master_server_ip == NULL) // master server is down - { - return -1; - } + if( master_server_ip == NULL ) // master server is down + { + return -1; + } - server.sin_family = AF_INET; - server.sin_port = htons(NET_MASTER_PORT); - server.sin_addr.s_addr = inet_addr(master_server_ip); + server.sin_family = AF_INET; + server.sin_port = htons (NET_MASTER_PORT); + server.sin_addr.s_addr = inet_addr (master_server_ip); + + free(master_server_ip); - free(master_server_ip); + if ((s = socket (AF_INET, SOCK_STREAM, 0)) < 0) { + return 0; + } - if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { - return 0; - } - - /* Set to nonblocking socket mode */ + /* Set to nonblocking socket mode */ #ifndef __WIN32__ - int oldFlag; + int oldFlag; - oldFlag = fcntl(s, F_GETFL, 0); + oldFlag = fcntl (s, F_GETFL, 0); - if (fcntl(s, F_SETFL, oldFlag | O_NONBLOCK) == -1) { - return -1; - } + if( fcntl(s, F_SETFL, oldFlag | O_NONBLOCK) == -1 ) + { + return -1; + } #else - unsigned long arg = 1; - // Operation is FIONBIO. Parameter is pointer on non-zero number. - if (ioctlsocket(s, FIONBIO, &arg) == SOCKET_ERROR) { - WSACleanup(); - return -1; - } + unsigned long arg = 1; + // Operation is FIONBIO. Parameter is pointer on non-zero number. + if( ioctlsocket(s, FIONBIO, &arg) == SOCKET_ERROR ) + { + WSACleanup(); + return -1; + } #endif - if (connect(s, (struct sockaddr *) &server, sizeof(server)) == -1) { + if( connect (s, (struct sockaddr *) &server, sizeof (server)) == -1 ) { #ifndef __WIN32__ - if (errno != EINPROGRESS) - return -1; + if (errno != EINPROGRESS) + return -1; #else - if (WSAGetLastError() != WSAEWOULDBLOCK) { - WSACleanup(); - return -1; - } + if (WSAGetLastError() != WSAEWOULDBLOCK) { + WSACleanup(); + return -1; + } #endif - } + } - struct timeval tv; + struct timeval tv; - fd_set myset; + fd_set myset; - FD_ZERO(&myset); - FD_SET(s, &myset); + FD_ZERO(&myset); + FD_SET(s, &myset); - tv.tv_sec = 3; - tv.tv_usec = 0; + tv.tv_sec = 3; + tv.tv_usec = 0; - int ret = select(s + 1, NULL, &myset, NULL, &tv); + int ret = select (s+1, NULL, &myset, NULL, &tv); - if (ret == -1) - return -1; + if (ret == -1) + return -1; - if (ret == 0) - return -1; + if (ret == 0) + return -1; - FD_ZERO(&myset); - FD_SET(s, &myset); + FD_ZERO(&myset); + FD_SET(s, &myset); - tv.tv_sec = 1; - tv.tv_usec = 0; + tv.tv_sec = 1; + tv.tv_usec = 0; - ret = select(s + 1, NULL, &myset, NULL, &tv); + ret = select (s+1, NULL, &myset, NULL, &tv); - if (ret == -1) - return -1; + if (ret == -1) + return -1; - if (ret == 0) - return -1; + if (ret == 0) + return -1; - typedef struct - { - unsigned char cmd; - unsigned port; - unsigned ip; - } __PACKED__ register_head; + typedef struct { + unsigned char cmd; + unsigned port; + unsigned ip; + } __PACKED__ register_head; - char *str = (char *) malloc(sizeof(register_head)); + char *str = (char *) malloc (sizeof (register_head)); - register_head *head = (register_head *) str; + register_head *head = (register_head *) str; - head->cmd = 'p'; - head->port = atoi(getSetting("PORT4", "--port4", "2200")); - head->ip = 0; // TODO + head->cmd = 'p'; + head->port = atoi( getSetting("PORT4", "--port4", "2200") ); + head->ip = 0; // TODO - /* send request for server list */ - int r = send(s, str, 9, 0); + /* send request for server list */ + int r = send (s, str, 9, 0); - free(str); + free (str); - if (r == -1) { + if (r == -1) { #ifndef __WIN32 - close(s); + close(s); #else - closesocket(s); + closesocket(s); #endif - return -1; - } + return -1; + } #ifndef __WIN32 - close(s); + close(s); #else - closesocket(s); + closesocket(s); #endif - return 0; + return 0; } -static int -initPublicServerNetwork() +static int initPublicServerNetwork() { - char ip4[STR_IP_SIZE]; - char ip6[STR_IP_SIZE]; - char *p_ip4, *p_ip6; - int port4; - int port6; - int ret; - - ret = -1; + char ip4[STR_IP_SIZE]; + char ip6[STR_IP_SIZE]; + char *p_ip4, *p_ip6; + int port4; + int port6; + int ret; - strcpy(ip4, getSetting("IP4", "--ip4", "none")); - strcpy(ip6, getSetting("IP6", "--ip6", "none")); + ret = -1; - p_ip4 = ip4; + strcpy(ip4, getSetting("IP4", "--ip4", "none" ) ); + strcpy(ip6, getSetting("IP6", "--ip6", "none" ) ); - if (strcmp(ip4, "none") == 0) { - p_ip4 = NULL; - } + p_ip4 = ip4; - p_ip6 = ip6; + if( strcmp(ip4, "none") == 0 ) + { + p_ip4 = NULL; + } - if (strcmp(ip6, "none") == 0) { - p_ip6 = NULL; - } + p_ip6 = ip6; - port4 = atoi(getSetting("PORT4", "--port4", "2200")); - port6 = atoi(getSetting("PORT6", "--port6", "2200")); + if( strcmp(ip6, "none") == 0 ) + { + p_ip6 = NULL; + } - //ret = initNetMulitplayerPublicServer(p_ip4, port4, p_ip6, port6); + port4 = atoi( getSetting("PORT4", "--port4", "2200") ); + port6 = atoi( getSetting("PORT6", "--port6", "2200") ); - ret = initNetMuliplayerForGameServer(p_ip4, port4, p_ip6, port6); + //ret = initNetMulitplayerPublicServer(p_ip4, port4, p_ip6, port6); + + ret = initNetMuliplayerForGameServer(p_ip4, port4, p_ip6, port6); - return ret; + return ret; } -static void -loadArena() +static void loadArena() { - choice_arenaFile = - getArenaFileFormNetName(getSetting("ARENA", "--arena", "FAGN")); - arena = getArena(choice_arenaFile); - setCurrentArena(arena); + choice_arenaFile = getArenaFileFormNetName( getSetting("ARENA", "--arena", "FAGN") ); + arena = getArena(choice_arenaFile); + setCurrentArena(arena); } -int -initPublicServer() +int initPublicServer() { - int ret; - int i; - - initListID(); - initModule(); - initArenaFile(); - initTux(); - initItem(); - initShot(); - initServerConfigFile(); - - ret = - initLog(getSetting - ("LOG_FILE", "--log-file", "/tmp/tuxanci-server.log")); - - if (ret < 0) { - fprintf(stderr, _("I was unable to open config file!\n")); - return -1; - } - - initHeightScore(getSetting - ("SCORE_FILE", "--score-file", "/tmp/heightscore")); - - loadArena(); - - for (i = 0; i < atoi(getSetting("ITEM", "--item", "10")); i++) { - addNewItem(arena->spaceItem, ID_UNKNOWN); - } - - isSignalEnd = FALSE; - - ret = initPublicServerNetwork(); - - if (ret < 0) { - printf(_("Unable to initialize network socket!\n")); - return -1; - } - - setServerMaxClients(atoi - (getSetting("MAX_CLIENTS", "--max-clients", "32"))); - - if (registerPublicServer() < 0) { - printf(_("Unable to contact MasterServer!)\n")); - } - - return 0; + int ret; + int i; + + initListID(); + initModule(); + initArenaFile(); + initTux(); + initItem(); + initShot(); + initServerConfigFile(); + + ret = initLog(getSetting("LOG_FILE", "--log-file", "/tmp/tuxanci-server.log") ); + + if( ret < 0 ) + { + fprintf(stderr, _("I was unable to open config file!\n")); + return -1; + } + + initHeightScore( getSetting("SCORE_FILE", "--score-file", "/tmp/heightscore") ); + + loadArena(); + + for( i = 0 ; i < atoi(getSetting("ITEM", "--item", "10")) ; i++ ) + { + addNewItem(arena->spaceItem, ID_UNKNOWN); + } + + isSignalEnd = FALSE; + + ret = initPublicServerNetwork(); + + if( ret < 0 ) + { + printf(_("Unable to initialize network socket!\n")); + return -1; + } + + setServerMaxClients( atoi( getSetting("MAX_CLIENTS", "--max-clients", "32") )); + + if (registerPublicServer() < 0) + { + printf(_("Unable to contact MasterServer!)\n")); + } + + return 0; } -arenaFile_t * -getChoiceArena() +arenaFile_t* getChoiceArena() { - return choice_arenaFile; + return choice_arenaFile; } -void -eventPublicServer() +void eventPublicServer() { - static my_time_t lastActive = 0; - my_time_t interval; + static my_time_t lastActive = 0; + my_time_t interval; - eventNetMultiplayer(); + eventNetMultiplayer(); - if (isSignalEnd == TRUE) { - quitPublicServer(); - } + if( isSignalEnd == TRUE ) + { + quitPublicServer(); + } - if (lastActive == 0) { - lastActive = getMyTime(); - } + if( lastActive == 0 ) + { + lastActive = getMyTime(); + } - interval = getMyTime() - lastActive; + interval = getMyTime() - lastActive; - if (interval < 50) { - return; - } + if( interval < 50 ) + { + return; + } - //printf("interval = %d\n", interval); + //printf("interval = %d\n", interval); - lastActive = getMyTime(); + lastActive = getMyTime(); - eventArena(arena); + eventArena(arena); } -void -my_handler_quit(int n) +void my_handler_quit(int n) { #ifdef DEBUG - printf("my_handler_quit\n"); + printf("my_handler_quit\n"); #endif - isSignalEnd = TRUE; + isSignalEnd = TRUE; } -void -quitPublicServer() +void quitPublicServer() { #ifdef DEBUG - printf(_("Quitting public server\n")); + printf(_("Quitting public server\n")); #endif - quitNetMultiplayer(); - destroyArena(arena); - - quitTux(); - quitItem(); - quitShot(); - - quitArenaFile(); - quitServerConfigFile(); - quitModule(); - quitListID(); - quitHeightScore(); - quitLog(); - - exit(0); + quitNetMultiplayer(); + destroyArena(arena); + + quitTux(); + quitItem(); + quitShot(); + + quitArenaFile(); + quitServerConfigFile(); + quitModule(); + quitListID(); + quitHeightScore(); + quitLog(); + + exit(0); } -int -startPublicServer() +int startPublicServer() { #ifndef __WIN32__ - signal(SIGINT, my_handler_quit); - signal(SIGTERM, my_handler_quit); - signal(SIGQUIT, my_handler_quit); + signal(SIGINT, my_handler_quit); + signal(SIGTERM, my_handler_quit); + signal(SIGQUIT, my_handler_quit); #endif - if (initPublicServer() < 0) { - quitPublicServer(); - return -1; - } - - while (1) { - eventPublicServer(); - } - - return 0; + if( initPublicServer() < 0 ) + { + quitPublicServer(); + return -1; + } + + while(1) + { + eventPublicServer(); + } + + return 0; } diff --git a/src/server/publicServer.c~ b/src/server/publicServer.c~ deleted file mode 100644 index 8770300..0000000 --- a/src/server/publicServer.c~ +++ /dev/null @@ -1,372 +0,0 @@ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> -#include <signal.h> -#include <time.h> - -#ifndef __WIN32 -#include <sys/socket.h> -#include <sys/select.h> -#include <arpa/inet.h> -#else -# include <windows.h> -# include <wininet.h> -#endif - -#include <unistd.h> -#include <fcntl.h> -#include <errno.h> - -#include "main.h" -#include "list.h" -#include "tux.h" -#include "idManager.h" -#include "myTimer.h" -#include "arena.h" -#include "item.h" -#include "shot.h" -#include "arenaFile.h" -#include "proto.h" -#include "modules.h" -#include "net_multiplayer.h" - -#include "publicServer.h" -#include "serverConfigFile.h" -#include "heightScore.h" -#include "log.h" - -#include "dns.h" - -static arena_t *arena; -static bool_t isSignalEnd; -static arenaFile_t *choice_arenaFile; - -extern int errno; - -#define __PACKED__ __attribute__ ((__packed__)) - -void countRoundInc() -{ -} - -char *getSetting(char *env, char *param, char *default_val) -{ - return getParamElse(param, getServerConfigFileValue(env, default_val) ); -} - -static int registerPublicServer() -{ -#ifndef __WIN32 - int s; -#else - SOCKET s; -#endif - - /* TODO: dodelat TCP makro */ - struct sockaddr_in server; - char *master_server_ip; - - master_server_ip = getIPFormDNS(NET_MASTER_SERVER_DOMAIN); - - //printf("master_server_ip = %s\n", master_server_ip); - - if( master_server_ip == NULL ) // master server is down - { - return -1; - } - - server.sin_family = AF_INET; - server.sin_port = htons (NET_MASTER_PORT); - server.sin_addr.s_addr = inet_addr (master_server_ip); - - free(master_server_ip); - - if ((s = socket (AF_INET, SOCK_STREAM, 0)) < 0) { - return 0; - } - - /* Set to nonblocking socket mode */ -#ifndef __WIN32__ - int oldFlag; - - oldFlag = fcntl (s, F_GETFL, 0); - - if( fcntl(s, F_SETFL, oldFlag | O_NONBLOCK) == -1 ) - { - return -1; - } -#else - unsigned long arg = 1; - // Operation is FIONBIO. Parameter is pointer on non-zero number. - if( ioctlsocket(s, FIONBIO, &arg) == SOCKET_ERROR ) - { - WSACleanup(); - return -1; - } -#endif - - if( connect (s, (struct sockaddr *) &server, sizeof (server)) == -1 ) { -#ifndef __WIN32__ - if (errno != EINPROGRESS) - return -1; -#else - if (WSAGetLastError() != WSAEWOULDBLOCK) { - WSACleanup(); - return -1; - } -#endif - } - - struct timeval tv; - - fd_set myset; - - FD_ZERO(&myset); - FD_SET(s, &myset); - - tv.tv_sec = 3; - tv.tv_usec = 0; - - int ret = select (s+1, NULL, &myset, NULL, &tv); - - if (ret == -1) - return -1; - - if (ret == 0) - return -1; - - FD_ZERO(&myset); - FD_SET(s, &myset); - - tv.tv_sec = 1; - tv.tv_usec = 0; - - ret = select (s+1, NULL, &myset, NULL, &tv); - - if (ret == -1) - return -1; - - if (ret == 0) - return -1; - - - typedef struct { - unsigned char cmd; - unsigned port; - unsigned ip; - } __PACKED__ register_head; - - char *str = (char *) malloc (sizeof (register_head)); - - register_head *head = (register_head *) str; - - head->cmd = 'p'; - head->port = atoi( getSetting("PORT4", "--port4", "2200") ); - head->ip = 0; // TODO - - /* send request for server list */ - int r = send (s, str, 9, 0); - - free (str); - - if (r == -1) { -#ifndef __WIN32 - close(s); -#else - closesocket(s); -#endif - return -1; - } - -#ifndef __WIN32 - close(s); -#else - closesocket(s); -#endif - - return 0; -} - -static int initPublicServerNetwork() -{ - char ip4[STR_IP_SIZE]; - char ip6[STR_IP_SIZE]; - char *p_ip4, *p_ip6; - int port4; - int port6; - int ret; - - ret = -1; - - strcpy(ip4, getSetting("IP4", "--ip4", "none" ) ); - strcpy(ip6, getSetting("IP6", "--ip6", "none" ) ); - - p_ip4 = ip4; - - if( strcmp(ip4, "none") == 0 ) - { - p_ip4 = NULL; - } - - p_ip6 = ip6; - - if( strcmp(ip6, "none") == 0 ) - { - p_ip6 = NULL; - } - - port4 = atoi( getSetting("PORT4", "--port4", "2200") ); - port6 = atoi( getSetting("PORT6", "--port6", "2200") ); - - //ret = initNetMulitplayerPublicServer(p_ip4, port4, p_ip6, port6); - - ret = initNetMuliplayerForGameServer(p_ip4, port4, p_ip6, port6); - - return ret; -} - -static void loadArena() -{ - choice_arenaFile = getArenaFileFormNetName( getSetting("ARENA", "--arena", "FAGN") ); - arena = getArena(choice_arenaFile); - setCurrentArena(arena); -} - -int initPublicServer() -{ - int ret; - int i; - - initListID(); - initModule(); - initArenaFile(); - initTux(); - initItem(); - initShot(); - initServerConfigFile(); - - ret = initLog(getSetting("LOG_FILE", "--log-file", "/tmp/tuxanci-server.log") ); - - if( ret < 0 ) - { - fprintf(stderr, _("I was unable to open config file!\n")); - return -1; - } - - initHeightScore( getSetting("SCORE_FILE", "--score-file", "/tmp/heightscore") ); - - loadArena(); - - for( i = 0 ; i < atoi(getSetting("ITEM", "--item", "10")) ; i++ ) - { - addNewItem(arena->spaceItem, ID_UNKNOWN); - } - - isSignalEnd = FALSE; - - ret = initPublicServerNetwork(); - - if( ret < 0 ) - { - printf(_("Unable to initialize network socket!\n")); - return -1; - } - - setServerMaxClients( atoi( getSetting("MAX_CLIENTS", "--max-clients", "32") )); - - if (registerPublicServer() < 0) - { - printf(_("Unable to contact MasterServer!)\n")); - } - - return 0; -} - -arenaFile_t* getChoiceArena() -{ - return choice_arenaFile; -} - -void eventPublicServer() -{ - static my_time_t lastActive = 0; - my_time_t interval; - - eventNetMultiplayer(); - - if( isSignalEnd == TRUE ) - { - quitPublicServer(); - } - - if( lastActive == 0 ) - { - lastActive = getMyTime(); - } - - interval = getMyTime() - lastActive; - - if( interval < 50 ) - { - return; - } - - //printf("interval = %d\n", interval); - - lastActive = getMyTime(); - - eventArena(arena); -} - -void my_handler_quit(int n) -{ -#ifdef DEBUG - printf("my_handler_quit\n"); -#endif - isSignalEnd = TRUE; -} - -void quitPublicServer() -{ -#ifdef DEBUG - printf(_("Quitting public server\n")); -#endif - quitNetMultiplayer(); - destroyArena(arena); - - quitTux(); - quitItem(); - quitShot(); - - quitArenaFile(); - quitServerConfigFile(); - quitModule(); - quitListID(); - quitHeightScore(); - quitLog(); - - exit(0); -} - -int startPublicServer() -{ -#ifndef __WIN32__ - signal(SIGINT, my_handler_quit); - signal(SIGTERM, my_handler_quit); - signal(SIGQUIT, my_handler_quit); -#endif - if( initPublicServer() < 0 ) - { - quitPublicServer(); - return -1; - } - - while(1) - { - eventPublicServer(); - } - - return 0; -} diff --git a/src/server/serverConfigFile.c b/src/server/serverConfigFile.c index 7e843eb..487ec13 100644 --- a/src/server/serverConfigFile.c +++ b/src/server/serverConfigFile.c @@ -11,95 +11,98 @@ static textFile_t *serverTextFile; -static void -prepareConfigFile(textFile_t * ts) +static void prepareConfigFile(textFile_t *ts) { - int i; - int j; - - for (i = 0; i < serverTextFile->text->count; i++) { - char *line; - int len; - - line = (char *) (serverTextFile->text->list[i]); - len = strlen(line); - - for (j = 0; j < len; j++) { - if (line[j] == ' ') // [TAB] - { - line[j] = ' '; - } - } - } + int i; + int j; + + for( i = 0 ; i < serverTextFile->text->count ; i++ ) + { + char *line; + int len; + + line = (char *)(serverTextFile->text->list[i]); + len = strlen(line); + + for( j = 0 ; j < len ; j++ ) + { + if( line[j] == ' ' ) // [TAB] + { + line[j] = ' '; + } + } + } } -void -initServerConfigFile() +void initServerConfigFile() { - char *configFile; + char *configFile; - configFile = getParamElse("--config-file", SERVER_CONFIG); - printf(_("Loading configuration from: \"%s\"\n"), - getParamElse("--config-file", SERVER_CONFIG)); + configFile = getParamElse("--config-file", SERVER_CONFIG); + printf(_("Loading configuration from: \"%s\"\n"), getParamElse("--config-file", SERVER_CONFIG) ); - serverTextFile = loadTextFile(configFile); + serverTextFile = loadTextFile(configFile); - if (serverTextFile == NULL) { - fprintf(stderr, - _ - ("I was unable to load config file. Falling back to defaults!\n")); - return; - } - - prepareConfigFile(serverTextFile); + if( serverTextFile == NULL ) + { + fprintf(stderr, _("I was unable to load config file. Falling back to defaults!\n")); + return; + } + + prepareConfigFile(serverTextFile); } -static char * -findValue(char *s) +static char *findValue(char *s) { - int len; - int i; + int len; + int i; - len = strlen(s); + len = strlen(s); - for (i = 0; i < len - 1; i++) { - if (s[i] == ' ' && s[i + 1] != ' ') { - return s + i + 1; - } - } + for( i = 0 ; i < len-1 ; i++) + { + if( s[i] == ' ' && s[i+1] != ' ' ) + { + return s+i+1; + } + } - return NULL; + return NULL; } -char * -getServerConfigFileValue(char *env, char *s) +char* getServerConfigFileValue(char *env, char *s) { - int i; - int len; + int i; + int len; - if (serverTextFile == NULL) { - return s; - } + if( serverTextFile == NULL ) + { + return s; + } - len = strlen(env); + len = strlen(env); - for (i = 0; i < serverTextFile->text->count; i++) { - char *line; + for( i = 0 ; i < serverTextFile->text->count ; i++ ) + { + char *line; - line = (char *) (serverTextFile->text->list[i]); + line = (char *)(serverTextFile->text->list[i]); - if (strncmp(line, env, len) == 0) { - return findValue(line); - } - } + if( strncmp(line, env, len) == 0 ) + { + return findValue(line); + } + } - return s; + return s; } -void -quitServerConfigFile() +void quitServerConfigFile() { - if (serverTextFile != NULL) { - destroyTextFile(serverTextFile); - } + if( serverTextFile != NULL ) + { + destroyTextFile(serverTextFile); + } } + + diff --git a/src/server/serverConfigFile.c~ b/src/server/serverConfigFile.c~ deleted file mode 100644 index 487ec13..0000000 --- a/src/server/serverConfigFile.c~ +++ /dev/null @@ -1,108 +0,0 @@ - -#include <stdio.h> -#include <stdlib.h> -#include <string.h> -#include <assert.h> - -#include "main.h" -#include "list.h" -#include "textFile.h" -#include "serverConfigFile.h" - -static textFile_t *serverTextFile; - -static void prepareConfigFile(textFile_t *ts) -{ - int i; - int j; - - for( i = 0 ; i < serverTextFile->text->count ; i++ ) - { - char *line; - int len; - - line = (char *)(serverTextFile->text->list[i]); - len = strlen(line); - - for( j = 0 ; j < len ; j++ ) - { - if( line[j] == ' ' ) // [TAB] - { - line[j] = ' '; - } - } - } -} - -void initServerConfigFile() -{ - char *configFile; - - configFile = getParamElse("--config-file", SERVER_CONFIG); - printf(_("Loading configuration from: \"%s\"\n"), getParamElse("--config-file", SERVER_CONFIG) ); - - serverTextFile = loadTextFile(configFile); - - if( serverTextFile == NULL ) - { - fprintf(stderr, _("I was unable to load config file. Falling back to defaults!\n")); - return; - } - - prepareConfigFile(serverTextFile); -} - -static char *findValue(char *s) -{ - int len; - int i; - - len = strlen(s); - - for( i = 0 ; i < len-1 ; i++) - { - if( s[i] == ' ' && s[i+1] != ' ' ) - { - return s+i+1; - } - } - - return NULL; -} - -char* getServerConfigFileValue(char *env, char *s) -{ - int i; - int len; - - if( serverTextFile == NULL ) - { - return s; - } - - len = strlen(env); - - for( i = 0 ; i < serverTextFile->text->count ; i++ ) - { - char *line; - - line = (char *)(serverTextFile->text->list[i]); - - if( strncmp(line, env, len) == 0 ) - { - return findValue(line); - } - } - - return s; -} - -void quitServerConfigFile() -{ - if( serverTextFile != NULL ) - { - destroyTextFile(serverTextFile); - } -} - - |