import{ RconPool }from'@callowayisweird/source-rcon'const pool =newRconPool([{ host:'10.0.0.1', port:27015, password:'pass1'},{ host:'10.0.0.2', port:27015, password:'pass2'},{ host:'10.0.0.3', port:27015, password:'pass3'},])await pool.connectAll()// Execute on a specific serverconst status =await pool.execute('10.0.0.1:27015','status')// Execute on all serversconst results =await pool.executeAll('status')for(const[server, response]of results){console.log(`${server}: ${response}`)}await pool.disconnectAll()
Permission-Gated RCON
import{ Rcon, GatedRcon }from'@callowayisweird/source-rcon'const rcon =newRcon({
host:'127.0.0.1',
port:27015,
password:'secret',})await rcon.connect()const gated =newGatedRcon(rcon,{
allowedUsers:['STEAM_0:1:12345678','STEAM_0:1:87654321'],
permissions:{'STEAM_0:1:12345678':['say *','status','changelevel *'],// admin'STEAM_0:1:87654321':['say *','status'],// moderator},
rateLimit:{
windowMs:60000,// 1 minute
maxCommands:10,// max 10 commands per minute},onExecute:(steamId, command, response)=>{console.log(`[RCON] ${steamId} executed: ${command}`)},onBlocked:(steamId, command, reason)=>{console.warn(`[RCON] Blocked ${steamId}: ${command} (${reason})`)},})// Will succeed for allowed users with matching permissionsawait gated.execute('STEAM_0:1:12345678','say Hello everyone!')// Will throw PermissionDeniedErrorawait gated.execute('STEAM_0:1:87654321','changelevel gm_flatgrass')