aboutsummaryrefslogtreecommitdiff
path: root/src/main.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/main.c')
-rw-r--r--src/main.c67
1 files changed, 30 insertions, 37 deletions
diff --git a/src/main.c b/src/main.c
index 1a3c46f..0a80bf6 100644
--- a/src/main.c
+++ b/src/main.c
@@ -26,20 +26,45 @@ typedef struct program_params_s {
program_params_t parse_args ( int argc, char* argv[] );
+int connect_socket ( char* _host, char* _port );
+
int main( int argc, char* argv[] ) {
program_params_t args = parse_args( argc, argv );
+ int sock = connect_socket ( args.host, args.port );
+
+ fprintf ( stderr, "Connection successful.\n" );
+
+ if ( rcon_login ( sock, args.password ) ) {
+ fprintf ( stderr, "Authentification failed.\n" );
+ exit ( EXIT_FAILURE );
+ }
+
+ char* result = NULL;
+ rcon_command ( &result, sock, args.command );
+
+ printf("%s\n", result);
+
+ close (sock);
+
+ return 0;
+}
+
+program_params_t parse_args ( int argc, char* argv[] ) {
+ program_params_t ret = { "127.0.0.1", "25575", "1234", "list" };
+ return ret;
+}
+
+int connect_socket ( char* _host, char* _port ) {
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 );
+ ret = getaddrinfo ( _host, _port, &hints, &result );
if ( ret ) {
fprintf ( stderr, "getaddrinfo: %s\n", gai_strerror(ret) );
exit ( EXIT_FAILURE );
@@ -47,7 +72,7 @@ int main( int argc, char* argv[] ) {
for ( iter = result; iter != NULL; iter = iter->ai_next ) {
sock = socket( result->ai_family, result->ai_socktype, result->ai_protocol );
- if ( socket < 0 )
+ if ( sock < 0 )
continue;
if ( connect ( sock, iter->ai_addr, iter->ai_addrlen ) != -1 )
@@ -61,38 +86,6 @@ int main( int argc, char* argv[] ) {
exit ( EXIT_FAILURE );
}
- fprintf ( stderr, "Connection successful.\n" );
-
- rcon_packet_t pack = {0,1337,RCON_LOGIN,args.password, strlen(args.password)}, rcon_result;
- ret = rcon_construct_packet ( sendbuf, RCON_SEND_PKGSIZE, &pack );
-
- ret = send ( sock, sendbuf, ret, 0 );
-
- ret = recv ( sock, recvbuf, RCON_RECV_PKGSIZE, 0);
- rcon_parse_packet ( &rcon_result, recvbuf, ret );
-
- if ( rcon_result.type != RCON_COMMAND ) {
- fprintf ( stderr, "Authentification failed." );
- exit ( EXIT_FAILURE );
- }
-
- rcon_packet_t pack2 = {0,6969,RCON_COMMAND, args.command, strlen(args.command)};
-
- ret = rcon_construct_packet ( sendbuf, RCON_SEND_PKGSIZE, &pack2 );
-
- ret = send ( sock, sendbuf, ret, 0 );
-
- ret = recv ( sock, recvbuf, RCON_RECV_PKGSIZE, 0);
- rcon_parse_packet ( &rcon_result, recvbuf, ret );
-
- printf("%s\n", rcon_result.payload);
-
- close (sock);
-
- return 0;
+ return sock;
}
-program_params_t parse_args ( int argc, char* argv[] ) {
- program_params_t ret = { "127.0.0.1", "25575", "1234", "list" };
- return ret;
-}