En esta ocasión, les traigo algo muy usado por todos los mikroteros. Los address-list que siempre nos han facilitado las cosas. He visto ejemplos en otros sitios webs intentando manejarlas, y hasta incluso códigos copiados/editados de este blog (sin poner la fuente), pero claro, sin funcionar :p. Bueno, aca lo tienen!.
<?php require_once('api_mt_include2.php'); ?> <?php /* /// AUTOR: Tech-Nico.com /// /// admin@tech-nico.com ///// /// API: Firewall Address-list: agrego una direccion IP a un address-list /// Fecha: 26/08/2015 //////// configura tus datos $ServerList ="192.168.100.1"; //ip_de_tu_API $Username ="api"; //usuario_API $Pass ="#pass"; //contraseña_API $Port ="8727"; //puerto_API */ /// VARIABLES DE FORMULARIO $address= "5.4.3.1"; // direccion que cargaremos en el address-list $list= "FACEBOOK"; // nombre de la lista donde cargaremos la direccion $comment= "Este es un ejemplo de tech-nico.com"; // comentario if( $address !="" && $list!="" ){ $API = new routeros_api(); $API->debug = false; if ($API->connect($ServerList, $Username, $Pass, $Port)) { $API->write("/ip/firewall/address-list/getall",false); $API->write('?address='.$address,false); $API->write('?list='.$list,true); $READ = $API->read(false); $ARRAY = $API->parse_response($READ); // busco si ya existe if(count($ARRAY)>0){ echo "Error: Ya existe " . $list ." con la direccion: ".$address; }else{ // si no existe lo creo $API->write("/ip/firewall/address-list/add",false); $API->write('=address='.$address,false); // IP $API->write('=list='.$list,false); // lista $API->write('=comment='.$comment,true); // comentario $READ = $API->read(false); $ARRAY = $API->parse_response($READ); echo "Se agrego la direccion " . $address ." a la lista: ".$list; } $API->disconnect(); } } ?>
Por favor, pongan la fuente si van a copiar y pegar en otro sitio.!!
_________________
Primero en tech-nico.com
Gracias por tu aporte Nicolas!!! Excelente Blog
hola como estan me gustaria que me ayudaran a como resolver este problema
Notice: Undefined variable: receiveddone in C:\xampp\htdocs\prueva\api.php on line 302
Hola Jose, al parecer te esta diciendo que la variable «receiveddone» no esta definida. Fijate que en el codigo que yo postie no existe. Saludos.
ok dejame revisar, otra pregunta en tu codigo se pueden importal los clientes automatico con solo conectar al api
No, Eso no lo arme.
yo lo tengo armado y todo funciona bien solo tengo ese problema y no eh podido corregirlo te voy a pasar el codigo
Sistema de Gestion ISP
Inicio
Clientes
PPP Secrets
Hotspot
Configuracion
Contact
connect($ipRouteros , $Username , $Pass, $api_puerto)) {
?>
Editar Cliente:
Seleccione Cliente a editar
write(«/queue/simple/getall»,true);
$READ = $API->read(false);
$ARRAY = $API->parse_response($READ);
echo »;
for($i=0;$i<count ($ARRAY);$i++){
if(!empty($ARRAY[$i]['name']))
echo '’.$ARRAY[$i][‘name’].»;
}
echo ‘
‘;
}
else{
switch($_POST[‘accion’]){
case ‘Eliminar’:$API->write(«/queue/simple/getall»,true);
$READ = $API->read(false);
$ARRAY = $API->parse_response($READ);
for($i=0;$iwrite(«/queue/simple/remove»,false);
$API->write(«=.id=».$ARRAY[$i][‘.id’],true);
$READ = $API->read(false);
$ARRAY = $API->parse_response($READ);
echo ‘Queue Eliminado’;
break;
}
}
break;
case ‘Editar’: echo ‘Opcion en construccion’;
break;
}
}
}else{
echo ‘Error en conexion’;
}
?>
Lista de Clientes:
usuarios
Nuevo
Suspender
Eliminar
Retirar
Avanzado
connect($ipRouteros , $Username , $Pass, $api_puerto)) {
?>
Nombre del ClienteLimite Subida/BajadaNo de Ip
write(«/queue/simple/getall»,true);
$READ = $API->read(false);
$ARRAY = $API->parse_response($READ);
for($i=0;$i<count ($ARRAY);$i++){
if ($i%2==0)
echo '’.$ARRAY[$i][‘name’].».$ARRAY[$i][‘max-limit’].».$ARRAY[$i][‘target-addresses’].»;
else
echo ».$ARRAY[$i][‘name’].».$ARRAY[$i][‘max-limit’].».$ARRAY[$i][‘target-addresses’].»;
}
?>
PPP Secrets:
Nombre de SecretClavePerfil
write(«/ppp/secret/getall»,true);
$READ = $API->read(false);
$ARRAY = $API->parse_response($READ);
for($i=0;$i<count ($ARRAY);$i++){
if ($i%2==0)
echo '’.$ARRAY[$i][‘name’].».$ARRAY[$i][‘password’].».$ARRAY[$i][‘profile’].»;
else
echo ».$ARRAY[$i][‘name’].».$ARRAY[$i][‘password’].».$ARRAY[$i][‘profile’].»;
}
}
?>
Copyright © 2015 MIKROBILLING
Hola que tal, muy bueno me función. Soy nuevo en esto, pero quisiera saber ahora cómo se le hace para eliminar una dirección de una Adres List
Aldring, aca tenes el ejemplo que pedis de como «eliminar una direccion IP de una lista«. Slds.
buenas tardes… despues de algunos anõs del post aún siguen surgindo dudas jaja
yo tengo el mismo problema de:
soporte en Noviembre 18, 2015 en 12:28 am dijo:
Hola Jose, al parecer te esta diciendo que la variable “receiveddone” no esta definida. Fijate que en el codigo que yo postie no existe. Saludos.
esta en el archivo «api_mt_include2.php»
y la linea es:
// If we get a !done, make a note of it.
if ($_ == «!done»)
$receiveddone = true;
$STATUS = socket_get_status($this->socket);
if ($LENGTH > 0)
$this->debug(‘>>> [‘ . $LENGTH . ‘, ‘ . $STATUS[‘unread_bytes’] . ‘]’ . $_);
(linea 301) if ((!$this->connected && !$STATUS[‘unread_bytes’]) || ($this->connected && !$STATUS[‘unread_bytes’] && $receiveddone))
break;
Notice: Undefined variable: receiveddone in C:\xampp\htdocs\tech-nico\api\api_mt_include2.php on line 301
alguien lo ha logrado corrigir eso??
Gracias!!!!!
Hermeson, lo corregi hace mucho, pero me olvide de subirla. Ahi te va: Libreria API Class 1.4 corregida.. Saludos.
Hola Nico, muchas gracias x la rapida respuesta, estuve mirando el codigo, xo jooo iba a perder mas tiempo buscando el error en vez de preguntarte. Estoy haciendo una app y no te preocupes, que voy poner el fuente (thanks to:) para ti en un apartado. Muchas gracias una vez mas. Hermeson
Hola, sigo probando tu codigo y vuelvo a tener el siguiente error, no se si alguien le pase lo mismo y ya pudo corregirlo…
Fatal error: Maximum execution time of 30 seconds exceeded in
Disculpen ya logre hacer que funcione, al parecer el problema esta en la librería que estaba usando la primera versión del primer ejemplo y después de bajar la que corrigió Nico, se soluciono el problema, gracias por tu sitio y tu contribución al mundo de mikrotik
Buenas tardes, queria consultarte como podria ser el habilitar y deshabilitar un servicio. he probado pero no hace el cambio.
Saludos, como seria la api para mostrar esta consulta: /ip firewall address list hora print.