mirror of
https://git.do.srb2.org/STJr/SRB2.git
synced 2024-12-23 11:10:56 +00:00
147 lines
3 KiB
C++
147 lines
3 KiB
C++
// Emacs style mode select -*- C++ -*-
|
|
//-----------------------------------------------------------------------------
|
|
//
|
|
// Copyright (C) 2000 by DooM Legacy Team.
|
|
//
|
|
// This program is free software; you can redistribute it and/or
|
|
// modify it under the terms of the GNU General Public License
|
|
// as published by the Free Software Foundation; either version 2
|
|
// of the License, or (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU General Public License for more details.
|
|
//
|
|
//-----------------------------------------------------------------------------
|
|
|
|
#ifdef __GNUC__
|
|
#include <unistd.h>
|
|
#endif
|
|
#include <string.h> // strcat(),...
|
|
#include "common.h"
|
|
#include "ipcs.h"
|
|
#include "stats.h"
|
|
|
|
//=============================================================================
|
|
|
|
/*
|
|
** CServerStats()
|
|
*/
|
|
CServerStats::CServerStats()
|
|
{
|
|
uptime = time(NULL);
|
|
num_connections = 0;
|
|
num_http_con = 0;
|
|
num_servers = 0;
|
|
snprintf(motd, sizeof motd, "%s%s", "Welcome to the SRB2 Master Server!<br>", SERVERMOTDTEXT);
|
|
num_add = 0;
|
|
num_removal = 0;
|
|
num_retrieval = 0;
|
|
num_autoremoval = 0;
|
|
num_badconnection = 0;
|
|
for (int i = 0; i < NUMLASTSERVERS; i++)
|
|
{
|
|
strcpy(last_server[i].ip, "0.0.0.0");
|
|
strcpy(last_server[i].name, "Non-Existing SRB2 server");
|
|
strcpy(last_server[i].version, "0.0.0");
|
|
}
|
|
snprintf(version, sizeof version, "%s %s", __DATE__, __TIME__);
|
|
}
|
|
|
|
/*
|
|
** ~CServerStats()
|
|
*/
|
|
CServerStats::~CServerStats()
|
|
{
|
|
}
|
|
|
|
/*
|
|
** getUptime()
|
|
*/
|
|
const char *CServerStats::getUptime()
|
|
{
|
|
char *res = ctime(&uptime);
|
|
res[strlen(res)-1] = '\0'; // remove the '\n' at the end
|
|
return res;
|
|
}
|
|
|
|
/*
|
|
** getHours()
|
|
*/
|
|
int CServerStats::getHours()
|
|
{
|
|
return (int)(((time(NULL) - uptime)/(60*60))%24);
|
|
}
|
|
|
|
/*
|
|
** getDays()
|
|
*/
|
|
int CServerStats::getDays()
|
|
{
|
|
return (int)((time(NULL) - uptime)/(60*60*24));
|
|
}
|
|
|
|
/*
|
|
** getMotd()
|
|
*/
|
|
const char *CServerStats::getMotd()
|
|
{
|
|
return motd;
|
|
}
|
|
|
|
/*
|
|
** getLastServers()
|
|
*/
|
|
const char *CServerStats::getLastServers()
|
|
{
|
|
static char res[170*NUMLASTSERVERS];
|
|
|
|
tzset();
|
|
res[0] = '\0';
|
|
for (int i = 0; i < NUMLASTSERVERS; i++)
|
|
{
|
|
char str[170];
|
|
char *ct;
|
|
|
|
ct = ctime(&last_time[i]);
|
|
ct[strlen(ct)-1] = '\0'; // replace \n with a \0
|
|
snprintf(str, sizeof str,
|
|
"Address: %15s Name: %-31s v%-7s (%s %s)\n000043210000",
|
|
last_server[i].ip, last_server[i].name, last_server[i].version, ct, tzname[0]);
|
|
strcat(res, str);
|
|
}
|
|
|
|
return res;
|
|
}
|
|
|
|
/*
|
|
** getVersion()
|
|
*/
|
|
const char *CServerStats::getVersion()
|
|
{
|
|
return version;
|
|
}
|
|
|
|
/*
|
|
** putMotd()
|
|
*/
|
|
void CServerStats::putMotd(char *motd)
|
|
{
|
|
strcpy(this->motd, motd);
|
|
}
|
|
|
|
/*
|
|
** putLastServer():
|
|
*/
|
|
void CServerStats::putLastServer(msg_server_t *server)
|
|
{
|
|
for (int i = NUMLASTSERVERS-1; i > 0; i--)
|
|
{
|
|
memcpy(&last_server[i], &last_server[i-1],
|
|
sizeof (msg_server_t));
|
|
last_time[i] = last_time[i-1];
|
|
}
|
|
memcpy(&last_server[0], server, sizeof (msg_server_t));
|
|
last_time[0] = time(NULL);
|
|
}
|