mirror of
				https://github.com/KartKrewDev/RingRacers.git
				synced 2025-10-30 08:01:28 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			133 lines
		
	
	
	
		
			3.3 KiB
		
	
	
	
		
			C++
		
	
	
	
	
	
			
		
		
	
	
			133 lines
		
	
	
	
		
			3.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.
 | 
						|
//
 | 
						|
//-----------------------------------------------------------------------------
 | 
						|
 | 
						|
#include <time.h>
 | 
						|
#include <string.h>
 | 
						|
#include "ipcs.h"
 | 
						|
#include "common.h"
 | 
						|
 | 
						|
//=============================================================================
 | 
						|
 | 
						|
static CClientSocket client_socket;
 | 
						|
//static msg_t msg;
 | 
						|
FILE *logfile;
 | 
						|
 | 
						|
//=============================================================================
 | 
						|
 | 
						|
static msg_t *getData(int argc, char *argv[])
 | 
						|
{
 | 
						|
	static msg_t msg;
 | 
						|
	msg_server_t *info = (msg_server_t *)msg.buffer;
 | 
						|
 | 
						|
#if defined (_WIN32)
 | 
						|
	strcpy(info->header.buffer, "");
 | 
						|
#else
 | 
						|
	strcpy(info->header.buffer, getpass("Enter password: "));
 | 
						|
#endif
 | 
						|
 | 
						|
	// default values if one of the param is not entered
 | 
						|
	strcpy(info->ip,       "88.86.106.169");
 | 
						|
	strcpy(info->port,     "5029");
 | 
						|
	strcpy(info->name,     "Cueball's Dedicated Server");
 | 
						|
	strcpy(info->version,  "1.09.4");
 | 
						|
	msg.type = ADD_PSERVER_MSG;
 | 
						|
	msg.length = sizeof (msg_server_t);
 | 
						|
 | 
						|
	for (int i = 0; i < argc; i++)
 | 
						|
	{
 | 
						|
		// first: extra parameters (must be after all -param)
 | 
						|
		if (!strcasecmp(argv[i], "get"))
 | 
						|
		{
 | 
						|
			msg.type = GET_SERVER_MSG;
 | 
						|
			msg.length = 0;
 | 
						|
		}
 | 
						|
		else if (!strcasecmp(argv[i], "log"))
 | 
						|
		{
 | 
						|
			msg.type = GET_LOGFILE_MSG;
 | 
						|
			msg.length = sizeof (msg_server_t);
 | 
						|
		}
 | 
						|
		else if (!strcasecmp(argv[i], "erase"))
 | 
						|
		{
 | 
						|
			msg.type = ERASE_LOGFILE_MSG;
 | 
						|
			msg.length = sizeof (msg_server_t);
 | 
						|
		}
 | 
						|
		else if (!strcasecmp(argv[i], "remove"))
 | 
						|
		{
 | 
						|
			msg.type = REMOVE_PSERVER_MSG;
 | 
						|
			msg.length = sizeof (msg_server_t);
 | 
						|
		}
 | 
						|
 | 
						|
		if (i >= argc-1)
 | 
						|
			continue;
 | 
						|
 | 
						|
		// second: parameter requiring extra parameters
 | 
						|
		if (strcasecmp(argv[i], "-ip") == 0)
 | 
						|
			strcpy(info->ip, argv[i+1]);
 | 
						|
		else if (strcasecmp(argv[i], "-port") == 0)
 | 
						|
			strcpy(info->port, argv[i+1]);
 | 
						|
		else if (strcasecmp(argv[i], "-hostname") == 0)
 | 
						|
			strcpy(info->name, argv[i+1]);
 | 
						|
		else if (strcasecmp(argv[i], "-version") == 0)
 | 
						|
			strcpy(info->version, argv[i+1]);
 | 
						|
		else if (strcasecmp(argv[i], "-pass") == 0)
 | 
						|
			strcpy(info->header.buffer, argv[i+1]);
 | 
						|
	}
 | 
						|
	return &msg;
 | 
						|
}
 | 
						|
 | 
						|
int main(int argc, char *argv[])
 | 
						|
{
 | 
						|
	if (argc == 2)
 | 
						|
	{
 | 
						|
		printf("encrypt: %s\n", pCrypt(argv[1], "04"));
 | 
						|
		return 0;
 | 
						|
	}
 | 
						|
	else if (argc > 2)
 | 
						|
	{
 | 
						|
		if (client_socket.connect(argv[1], argv[2]) < 0)
 | 
						|
		{
 | 
						|
			conPrintf(RED, "Connect failed.\n");
 | 
						|
			return -1;
 | 
						|
		}
 | 
						|
 | 
						|
		msg_t *msg = getData(argc, argv);
 | 
						|
 | 
						|
		if (client_socket.write(msg) < 0)
 | 
						|
		{
 | 
						|
			dbgPrintf(RED, "Write failed.\n");
 | 
						|
			return -1;
 | 
						|
		}
 | 
						|
 | 
						|
		switch (ntohl(msg->type))
 | 
						|
		{
 | 
						|
		case GET_SERVER_MSG:
 | 
						|
		case GET_LOGFILE_MSG:
 | 
						|
			while (client_socket.read(msg) >= 0)
 | 
						|
			{
 | 
						|
				if (ntohl(msg->length) == 0)
 | 
						|
					break;
 | 
						|
				printf("%s", msg->buffer);
 | 
						|
			}
 | 
						|
			break;
 | 
						|
 | 
						|
		case REMOVE_PSERVER_MSG:
 | 
						|
		default:
 | 
						|
			break;
 | 
						|
		}
 | 
						|
	}
 | 
						|
	return 0;
 | 
						|
}
 |