/* =========== SV_DumpUser_f Examine all a users info strings FIXME: move to game =========== */ static void SV_DumpUser_f(void) { client_t *cl; // make sure server is running if (!com_sv_running->integer) { Com_Printf("Server is not running.\n"); return; } if (Cmd_Argc() != 2) { Com_Printf("Usage: dumpuser <userid>\n"); return; } cl = SV_GetPlayerByName(); if (!cl) { Com_Printf("No player found.\n"); return; } Com_Printf("userinfo\n--------\n"); Info_Print(cl->userinfo); }
/* ================== SV_Kick_f Kick a user off of the server FIXME: move to game ================== */ static void SV_Kick_f( void ) { client_t *cl; int i; // make sure server is running if ( !com_sv_running->integer ) { Com_Printf( "Server is not running.\n" ); return; } if ( Cmd_Argc() != 2 ) { Com_Printf ("Usage: kick <player name>\nkick all = kick everyone\nkick allbots = kick all bots\n"); return; } if (!Q_stricmp(Cmd_Argv(1), "Padawan")) { //if you try to kick the default name, also try to kick "" SV_KickByName(""); } cl = SV_GetPlayerByName(); if ( !cl ) { if ( !Q_stricmp(Cmd_Argv(1), "all") ) { for ( i=0, cl=svs.clients ; i < sv_maxclients->integer ; i++,cl++ ) { if ( !cl->state ) { continue; } if( cl->netchan.remoteAddress.type == NA_LOOPBACK ) { continue; } SV_DropClient( cl, SV_GetStripEdString("SVINGAME","WAS_KICKED")); // "was kicked" ); cl->lastPacketTime = svs.time; // in case there is a funny zombie } } else if ( !Q_stricmp(Cmd_Argv(1), "allbots") ) { for ( i=0, cl=svs.clients ; i < sv_maxclients->integer ; i++,cl++ ) { if ( !cl->state ) { continue; } if( cl->netchan.remoteAddress.type != NA_BOT ) { continue; } SV_DropClient( cl, SV_GetStripEdString("SVINGAME","WAS_KICKED")); // "was kicked" ); cl->lastPacketTime = svs.time; // in case there is a funny zombie } } return; } if( cl->netchan.remoteAddress.type == NA_LOOPBACK ) { // SV_SendServerCommand(NULL, "print \"%s\"", "Cannot kick host player\n"); SV_SendServerCommand(NULL, "print \"%s\"", SV_GetStripEdString("SVINGAME","CANNOT_KICK_HOST")); return; } SV_DropClient( cl, SV_GetStripEdString("SVINGAME","WAS_KICKED")); // "was kicked" ); cl->lastPacketTime = svs.time; // in case there is a funny zombie }
/* ================== SV_Ban_f Ban a user from being able to play on this server through the auth server ================== */ static void SV_Ban_f(void) { client_t *cl; // make sure server is running if (!com_sv_running->integer) { Com_Printf("Server is not running.\n"); return; } if (Cmd_Argc() != 2) { Com_Printf("Usage: banUser <player name>\n"); return; } cl = SV_GetPlayerByName(); if (!cl) { return; } if (cl->netchan.remoteAddress.type == NA_LOOPBACK) { SV_SendServerCommand(NULL, "print \"%s\"", "Cannot kick host player\n"); return; } // look up the authorize server's IP if (!svs.authorizeAddress.ip[0] && svs.authorizeAddress.type != NA_BAD) { Com_Printf("Resolving %s\n", AUTHORIZE_SERVER_NAME); if (!NET_StringToAdr(AUTHORIZE_SERVER_NAME, &svs.authorizeAddress)) { Com_Printf("Couldn't resolve address\n"); return; } svs.authorizeAddress.port = BigShort(PORT_AUTHORIZE); Com_Printf("%s resolved to %i.%i.%i.%i:%i\n", AUTHORIZE_SERVER_NAME, svs.authorizeAddress.ip[0], svs.authorizeAddress.ip[1], svs.authorizeAddress.ip[2], svs.authorizeAddress.ip[3], BigShort(svs.authorizeAddress.port)); } // otherwise send their ip to the authorize server if (svs.authorizeAddress.type != NA_BAD) { NET_OutOfBandPrint(NS_SERVER, svs.authorizeAddress, "banUser %i.%i.%i.%i", cl->netchan.remoteAddress.ip[0], cl->netchan.remoteAddress.ip[1], cl->netchan.remoteAddress.ip[2], cl->netchan.remoteAddress.ip[3]); Com_Printf("%s was banned from coming back\n", rc(cl->name)); } }
/* ================== SV_Kick_f Kick a user off of the server FIXME: move to game ================== */ static void SV_Kick_f( void ) { client_t *cl; int i; // make sure server is running if ( !com_sv_running->integer ) { Com_Printf( "Server is not running.\n" ); return; } if ( Cmd_Argc() != 2 ) { // Com_Printf ("Usage: kick <player name>\nkick all = kick everyone\nkick allbots = kick all bots\n"); Com_Printf( "Usage: kick <player name>\nkick all = kick everyone\n" ); return; } cl = SV_GetPlayerByName(); if ( !cl ) { if ( !Q_stricmp( Cmd_Argv( 1 ), "all" ) ) { for ( i = 0, cl = svs.clients ; i < sv_maxclients->integer ; i++,cl++ ) { if ( !cl->state ) { continue; } if ( cl->netchan.remoteAddress.type == NA_LOOPBACK ) { continue; } SV_DropClient( cl, "player kicked" ); // JPW NERVE to match front menu message cl->lastPacketTime = svs.time; // in case there is a funny zombie } } else if ( !Q_stricmp( Cmd_Argv( 1 ), "allbots" ) ) { for ( i = 0, cl = svs.clients ; i < sv_maxclients->integer ; i++,cl++ ) { if ( !cl->state ) { continue; } if ( cl->netchan.remoteAddress.type != NA_BOT ) { continue; } SV_DropClient( cl, "was kicked" ); cl->lastPacketTime = svs.time; // in case there is a funny zombie } } return; } if ( cl->netchan.remoteAddress.type == NA_LOOPBACK ) { SV_SendServerCommand( NULL, "print \"%s\"", "Cannot kick host player\n" ); return; } SV_DropClient( cl, "player kicked" ); // JPW NERVE to match front menu message cl->lastPacketTime = svs.time; // in case there is a funny zombie }