He creado recientemente una aplicación en Node.js para poder controlar un servidor de Aternos ya se por linea de comandos o a través de una REST API.

Es bastante básico de momento, tengo que dedicarle un poco más de tiempo a las excepciones pero es actualmente funcional.

Empleando el paquete Puppeteer en modo headless, se accede a la pantalla de login con los datos de acceso suministrados en el archivo .env, permitiendo acceder e interactuar con el servidor escogido.

Instalación

git clone https://github.com/hartontw/aternosAPI.git
cd aternosAPI
npm install

Configuración

Crear un archivo .env en el directorio de aternosAPI

ATERNOS_USER=your_user
ATERNOS_PASSWORD=your_password
HOST_NAME=localhost
PORT=3000
API_PASSWORD=strong_password
TOKEN_KEY=vulnerable_token_key
  • ATERNOS_USER: requerido
  • ATERNOS_PASSWORD: requerido
  • HOST_NAME: para el modo rest, por defecto «localhost»
  • PORT: para el modo rest, por defecto «3000»
  • API_PASSWORD: para el modo rest, si no se asigna la API es pública
  • TOKEN_KEY: para el modo rest con contraseña, por defecto «vulnerable_token_key»

Uso

Si solo tienes un servidor como es lo habitual te vale con cualquiera de estos comandos:

npm run rest #for start the rest api, visit printed address for paths
npm run start #starts the server
npm run start-wait #starts the server and wait the queue for confirm
npm run stop #stop the server
npm run restart #restart the server
npm run state #get the name, state and queue
npm run gamedig #get gamedig complete info

Si tienes varios servidores puedes asignar el parametro id:

npm run start -- --id=myserver

o de forma más general:

node src/index.js --[rest, start [--wait], stop, restart, state, gamedig] [--id=<server id or name>]

Rest API

Para un resumen accede al sitio.

Si la API esta protegida con contraseña:

  • Accede mediante POST a /login pasando como cuerpo {«password»:»api_password»} para obtener el Token.
  • Añade en la cabecera como «x-access-token» este Token a las llamadas.
  • El Token solo es válido para la dirección IP que lo solicita.