diff options
Diffstat (limited to 'src/server')
| -rw-r--r-- | src/server/heightScore.c | 139 | ||||
| -rw-r--r-- | src/server/log.c | 82 | ||||
| -rw-r--r-- | src/server/publicServer.c | 446 | ||||
| -rw-r--r-- | src/server/serverConfigFile.c | 135 |
4 files changed, 402 insertions, 400 deletions
diff --git a/src/server/heightScore.c b/src/server/heightScore.c index 5c42ad6..7689d3f 100644 --- a/src/server/heightScore.c +++ b/src/server/heightScore.c @@ -11,92 +11,85 @@ 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/log.c b/src/server/log.c index 89e4f46..658a30c 100644 --- a/src/server/log.c +++ b/src/server/log.c @@ -11,57 +11,65 @@ 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/publicServer.c b/src/server/publicServer.c index 8770300..2f25568 100644 --- a/src/server/publicServer.c +++ b/src/server/publicServer.c @@ -47,326 +47,330 @@ 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); - - free(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); - if ((s = socket (AF_INET, SOCK_STREAM, 0)) < 0) { - return 0; - } + free(master_server_ip); - /* Set to nonblocking socket mode */ + if ((s = socket(AF_INET, SOCK_STREAM, 0)) < 0) { + return 0; + } + + /* 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; + char ip4[STR_IP_SIZE]; + char ip6[STR_IP_SIZE]; + char *p_ip4, *p_ip6; + int port4; + int port6; + int ret; + + ret = -1; - ret = -1; + strcpy(ip4, getSetting("IP4", "--ip4", "none")); + strcpy(ip6, getSetting("IP6", "--ip6", "none")); - strcpy(ip4, getSetting("IP4", "--ip4", "none" ) ); - strcpy(ip6, getSetting("IP6", "--ip6", "none" ) ); + p_ip4 = ip4; - p_ip4 = ip4; + if (strcmp(ip4, "none") == 0) { + p_ip4 = NULL; + } - if( strcmp(ip4, "none") == 0 ) - { - p_ip4 = NULL; - } + p_ip6 = ip6; - p_ip6 = ip6; + if (strcmp(ip6, "none") == 0) { + p_ip6 = NULL; + } - if( strcmp(ip6, "none") == 0 ) - { - p_ip6 = NULL; - } + port4 = atoi(getSetting("PORT4", "--port4", "2200")); + port6 = atoi(getSetting("PORT6", "--port6", "2200")); - port4 = atoi( getSetting("PORT4", "--port4", "2200") ); - port6 = atoi( getSetting("PORT6", "--port6", "2200") ); + //ret = initNetMulitplayerPublicServer(p_ip4, port4, p_ip6, port6); - //ret = initNetMulitplayerPublicServer(p_ip4, port4, p_ip6, port6); - - ret = initNetMuliplayerForGameServer(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/serverConfigFile.c b/src/server/serverConfigFile.c index 487ec13..82cb49b 100644 --- a/src/server/serverConfigFile.c +++ b/src/server/serverConfigFile.c @@ -11,98 +11,95 @@ 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); + } } - - |