Tech-nico.com

API MIKROTIK Tercera parte – Nuestro primer ejemplo (codigo abierto)

Hola amigos.

Tal como lo habíamos anunciado en la Segunda parte, vamos a dar un caso de uso real,
en esta ocasión dedicado para el señor Nemox de Micromax Computación R.L. (Barinas – Venezuela) El nos pidio hacer algo especifico: Poder controlar la lista de «Hotspot > IP-Bindings» desde su celular; y  para comprobar que con el API se puede hacer prácticamente todo, tome su caso como un desafió.

Y aqui el resultado:

A la izquierda esta visto desde el Iphone de Nemox. Y a la derecha desde el google chrome.

Muestra la lista de Hotspot – Ip Bindings y permite eliminar, habilitar y deshabilitar un cliente. El boton «agregar» no esta programado, pero dejo el código abierto para que cualquiera pueda editarlo y agregar o quitar funcionaliedades.

Esta armado el esqueleto del sitio en HTML5 y CSS3, los eventos y funcionalidades estan hechos con JQuery y el manejo del API con PHP5.

Vamos por partes:

El codigo de los 4 botones, Agregar, Eliminar, Habilitar, Deshabilitar, esta en el archivo index.html; si lo abrimos y vamos hacia el final, mas precisamente en la linea 110 veremos el codigo de cada boton. Pueden notar que cada boton tiene un codigo muy parecido. Lo que hace es, si esta seleccionado algun cliente (binding), toma su ID de un campo oculto (hidden field) para luego enviarlo como parametro al PHP que ejecuta la accion dentro del routerOS.
En la linea 119 vemos como ejemplo la ruta api/hotspot_general.php?ac=enable&id=numero  que tiene 2 parametros: «ac» (accion) que en nuestro caso son  las de los botones e «id» que es el codigo que identifica al IP Binding seleccionado con 1 click.

index.html

 

api/hotspot_general.php
Este es el archivo que se comunica con tu RouterOS por medio del API, tienes que editar las primeras lineas con los datos de tu servidor: Revisen los otros archivos de la carpeta «api».

$ipRouteros=»192.168.33.200″;
$Username=»usuario»;
$Pass=»contraseña»;
$api_puerto=8727;

A partir de la linea 30 comenzamos a ver los casos para el parametro «ac» y depende el parametro que le pasemos es lo que ira a ejecutar. Creo que esta muy facil de entender. Para el boton «Agregar» debemos añadir un nuevo «case» con el parametro correspondiente.

El codigo que ejecuta la accion en el Mikrotik es este:

case «enable»:
$API->write(«/ip/hotspot/ip-binding/enable«,false);
$API->write(«=.id=».$id,true);
$READ = $API->read(false);
$API->parse_response($READ);
break;

Es muy facil de entender:

Hay comandos que nos solicitan datos. Antes de ejecutar el codigo con PHP lo probamos en la consola. Escribimos /ip hotspot ip-binding print  y vamos a saber quien esta desabilitado y su codigo ID.
Tomemos cualquier nro para testear y probemos:  /ip hotspot ip-binding enable.(enter) y nos va a pedir el ID, en nuestro ejemplo de prueba ponemos el 7 que esta deshabilitado.

Bien, aqui tenemos estas 2 lineas:

$API->write(«/ip/hotspot/ip-binding/enable»,false);
$API->write(«=.id=».$id,true);

El flag false o true se refiere a que si este comando requiere de un dato, id, etc todavia no ejecuta el comando hasta no tener todo lo que necesita. Como vemos en la segunda linea el flag es true ya que el comando esta completo y lo manda a ejecutar.

Las siguientes 2 lineas…

$READ = $API->read(false);
$API->parse_response($READ);

son la respuesta de lo que ejecutamos, que en nuestro codigo no la estamos mostrando. Si el numero de ID no existiera, nos devolvería un error de «no such item». O si el comando ejecutado nos traeria una lista deberiamos recorrer el array $READ con un for para mostrar lo que se nos antoje.

Hay cosas que no las estoy explicando porque estan muy bien comentadas. Si no se entiende algo por favor pregunten.

Acá va el código abierto del ejemplo: mikrotik-test

Enjoy the saturday!

API MIKROTIK – Como optimizar tu administracion con un poco de PHP (introduccion)

API MIKROTIK Tercera parte – Nuestro primer ejemplo (codigo abierto)

API MIKROTIK – Crear queues simples con PHP (con validacion)

_______________________________________
Primero en tech-nico.com Autor Nicolas Daitsch

Salir de la versión móvil