+ Responder ao Tópico



  1. #1

    Cool Web proxy com API mikrotik

    Olá pessoal da comunidade,

    estou implementando um telinha em html e php para interagir com o a API Mikrotik com o PHP.
    Beleza até ai tudo bem conecto no mikrotik tal, só que estou querendo excluir uma regra no Web
    Proxy apartir de um id passado. O que acontece é que eu não estou conseguindo passar o comando
    que o mikrotik possa entender.
    Abaixo vai um exemplo:

    Código PHP:
    <?php

    require("routeros_api.class.php");

    $API = new routeros_api();
    $API ->debug(true);

    $ip "192.168.88.200";
    $login "admin";
    $senha "admin";

    if(
    $API ->connect($ip$login$senha)){

            
    //id ficticio que criei aqui
            
    $id "1";

        
    $API ->write("/ip/proxy/access/remove"false);
        
    $API ->write("=numbers=$id");

        
    $ler $API ->read(false);
        
    $array $API ->parse_response($ler);
        
    print_r($array);

        
    $API ->disconnect();

    }
    //fim do if

    ?>
    executo esse codigo é retornado um erro de que não foi encontrado o argumento:

    Código :
    Array
    (
        [!trap] => Array
            (
                [0] => Array
                    (
                        [category] => 0
                        [message] => no such item
                    )
     
            )
     
    )

    Alguem tem alguma ideia do que seja, ou mesmo tem um exemplo desse comando usando a API mikrotik.
    Desde já agradeço a ajuda.
    Última edição por msk8m; 01-08-2011 às 16:59.

  2. #2

    Padrão Re: Web proxy com API mikrotik

    Vc ja tentou pegar esse comando("/ip/proxy/access/remove") e digitar direto no terminal no winbox pra ver se ta tudo certo?
    Creio que esta errado,o comando seria "ip web-proxy access remove 0" sem as barras e com os espaços.
    Qualquer duvida posta ai pra gente.

  3. #3

    Thumbs up Re: Web proxy com API mikrotik

    E ai francisconeto beleza né,
    vamos lá:

    Para sua primeira pergunta a resposta é sim, eu testei o comando no winbox. No caso fica assim:

    Código :
    [admin@routerboard]/ip proxy access> remove numbers=1

    no caso quando se usa a API do Mikrotik os comando são passados assim mesmo verifiquei na documentação:
    http://wiki.mikrotik.com/wiki/API_command_notes

    Mas ai, eu pesquisando aqui eu achei o site desse cara aqui:Everton Santos
    que tem alguns exemplos. Baseados nele eu consegui resolver o
    problema. E o código ficou assim o:

    Código PHP:
    <?php

    require("routeros_api.class.php");

    $param $_GET['id'];
    echo 
    $param;
    excluirRegra($param);


    //função para excluir 
    function excluirRegra($id){

        
    //criando um objeto da api do mikrotik
        
    $API = new routeros_api();
        
    $API ->debug true;

        
    //dados fazer a conexão com o routerboard
        
    $ipMik "192.168.88.200";
        
    $login "admin";
        
    $senha "admin";

        if(
    $API ->connect($ipMik$login$senha)){

        
    $API ->write("/ip/proxy/access/print");
        
    $array $API ->read();

        
    $linha $array[$id];
        
    $id1 $linha[".id"];

        
    $API ->write("/ip/proxy/access/remove"false);
        
    $API ->write("=.id=$id1");

        
    $ler $API ->read(false);
        
    $array $API ->parse_response($ler);
        
    print_r($array);

            
    header("Location: /retorno/excluido.php?id=$id");        
            
            
    $API ->disconnect();

        }
    //fim do if

        
    else {

            echo 
    "Erro ao conectar no Mikrotik! Deletar.";

        }
    //fim do else


    }//fim da função excluirRegra

    ?>
    Nesse codigo eu estou pegando o 'id' via método get do html e a partir dele eu consegui setar o valor de qual regra vou excluir. Ficou meio
    confuso mas funcionou. Valeu pela dica e fica ai o codigo pra quem tiver alguma duvida