0

I need help with PHP API for adding an address to the address-list if it doesn't already exist and removing if it does exist.

I am using routeros_api.class.php from https://wiki.mikrotik.com/wiki/API_PHP_class.

I have tried this, the removal part works correctly but does not check if it exists first before removing but the first part of the code does not, it just hangs when running.

if ($datalimitexceeded == "1") {
    $API->write('/ip/firewall/address-list/print', false);
    $API->write('?comment='.$comment, false);
    $API->write('?address='.$site_ip, false);
    $READ = $API->read(false);
    $ARRAY = $API->parseResponse($READ);
    if(count($ARRAY)>0){
        $API->write("/ip/firewall/address-list/add",false);
        $API->write("=.id=".$ARRAY[0]['.id'],false);
        $API->write('=list='.$list,false);
        $API->write('=address='.$site_ip,false);
        $API->write('=comment='.$comment,true);
        $READ = $API->read(false);
        $ARRAY = $API->parseResponse($READ);
    } else {
        $API->write("/ip/firewall/address-list/add",false);
        $API->write('=list='.$list,false);
        $API->write('=address='.$address,false);
        $API->write('=comment='.$comment,false);
        $READ = $API->read(false);
        $ARRAY = $API->parseResponse($READ);
    }
4

1 回答 1

0

修复并整理了我的问题!

这是我的工作代码:

if ($datalimitexceeded == "1") { 
        $API->write('/ip/firewall/address-list/print',false);
        $API->write('?comment='.$comment,true);
        $READ = $API->read(false);
        $ARRAY = $API->parseResponse($READ);
        if(count($ARRAY)>0){
            $API->write('/ip/firewall/address-list/set',false);
            $API->write("=.id=".$ARRAY[0]['.id'],false);
            $API->write('=disabled=no',true);
            $READ = $API->read(false);
            $ARRAY = $API->parseResponse($READ);
        } else {
            $API->write('/ip/firewall/address-list/add',false);
            $API->write('=list='.$list,false);
            $API->write('=address='.$site_ip,false);
            $API->write('=comment='.$comment,true);
            $READ = $API->read(false);
            $ARRAY = $API->parseResponse($READ);
        } 
    }

    if ($datalimitexceeded == "0") {
        $API->write('/ip/firewall/address-list/print',false);
        $API->write('?comment='.$comment,true);
        $READ = $API->read(false);
        $ARRAY = $API->parseResponse($READ);
        if(count($ARRAY)>0){
            $API->write('/ip/firewall/address-list/remove', false);
            $API->write('=.id=' . $ARRAY[0]['.id']);
            $READ = $API->read(false);
        }
    }
于 2017-12-29T12:54:28.860 回答