From 2bdbca1e885af9504d8ec7322e1efd7623b5bd97 Mon Sep 17 00:00:00 2001 From: Jonas Gunz Date: Wed, 30 Sep 2020 21:02:12 +0200 Subject: initial --- src/main.c | 83 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 83 insertions(+) create mode 100644 src/main.c (limited to 'src/main.c') diff --git a/src/main.c b/src/main.c new file mode 100644 index 0000000..c4cc3a1 --- /dev/null +++ b/src/main.c @@ -0,0 +1,83 @@ +/* + * src/main.c + * (c) 2020 Jonas Gunz + * License: +*/ + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include "rcon.h" + +typedef struct program_params_s { + char* host; + char* port; + char* password; + char* command; +} program_params_t; + +program_params_t parse_args ( int argc, char* argv[] ); + +int main( int argc, char* argv[] ) { + program_params_t args = parse_args( argc, argv ); + + int sock = -1; + int ret = 0; + struct addrinfo hints, *result, *iter; + char recvbuf [ RCON_RECV_PKGSIZE ]; + char sendbuf [ RCON_SEND_PKGSIZE ]; + + memset ( &hints, 0, sizeof( struct addrinfo ) ); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + + ret = getaddrinfo ( args.host, args.port, &hints, &result ); + if ( ret ) { + fprintf ( stderr, "getaddrinfo: %s\n", gai_strerror(ret) ); + exit ( EXIT_FAILURE ); + } + + for ( iter = result; iter != NULL; iter = iter->ai_next ) { + sock = socket( result->ai_family, result->ai_socktype, result->ai_protocol ); + if ( socket < 0 ) + continue; + + if ( connect ( sock, iter->ai_addr, iter->ai_addrlen ) != -1 ) + break; + + close (sock); + } + + if ( ! iter ) { + fprintf ( stderr, "Connection failed.\n" ); + exit ( EXIT_FAILURE ); + } + + fprintf ( stderr, "Connection successful.\n" ); + + rcon_packet_t pack = {0,1337,RCON_LOGIN,args.password, strlen(args.password)}, rcon_result; + + ret = send ( sock, sendbuf, ret, 0 ); + + ret = recv ( sock, recvbuf, RCON_RECV_PKGSIZE, 0); + rcon_parse_packet ( &rcon_result, recvbuf, ret ); + + close (sock); + + //printf("%s\n%s", sendbuf, recvbuf); + + return 0; +} + +program_params_t parse_args ( int argc, char* argv[] ) { + program_params_t ret = { "127.0.0.1", "25575", "1234", "list" }; + return ret; +} -- cgit v1.2.3