<?php

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, site_url("/listagem/ips_permitidos"));
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'REST API');
$ips_perm = curl_exec($curl_handle);
curl_close($curl_handle);

$curl_handle = curl_init();
curl_setopt($curl_handle, CURLOPT_URL, site_url("/listagem/ips_bloqueados"));
curl_setopt($curl_handle, CURLOPT_CONNECTTIMEOUT, 2);
curl_setopt($curl_handle, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($curl_handle, CURLOPT_USERAGENT, 'REST API');
$ips_bloq = curl_exec($curl_handle);
curl_close($curl_handle);

$ips_perm = simplexml_load_string($ips_perm);
$ips_bloq = simplexml_load_string($ips_bloq);

//limpa as regras 
exec("/sbin/iptables -F");
// permitidos 
foreach ($ips_perm->item as $_ip) {
    //$comando_iptables = "/sbin/iptables -A INPUT ";
    $comando_iptables = "";
    $ip = $_ip->{"ip"};
    $_range = (array) $_ip->{"_range"};
    $porta = (array) $_ip->{"porta"};

    if ($ip != "") {
        if (isset($porta[0]) && is_numeric($porta[0])) {
            $comando_iptables = "/sbin/iptables -A INPUT -p tcp -d {$ip}";
            if (isset($_range[0]) && is_numeric($_range[0])) {
                $comando_iptables .= "/$_range[0]";
            }
            $comando_iptables .= " --dport $porta[0] -j ACCEPT";
        } else {
            $comando_iptables = "/sbin/iptables -A INPUT -s {$ip}";
            if (isset($_range[0]) && is_numeric($_range[0])) {
                $comando_iptables .= "/$_range[0]";
            }
            $comando_iptables .= " -j ACCEPT";
        }
        exec($comando_iptables);
    }
}
// bloqueados 
foreach ($ips_bloq->item as $_ip) {
    $comando_iptables = "/sbin/iptables -A INPUT ";
    $ip = $_ip->{"ip"};
    $_range = (array) $_ip->{"_range"};
    $porta = (array) $_ip->{"porta"};

    if ($ip != "") {
        if (isset($porta[0]) && is_numeric($porta[0])) {
            $comando_iptables = "/sbin/iptables -A INPUT -p tcp -d {$ip}";
            if (isset($_range[0]) && is_numeric($_range[0])) {
                $comando_iptables .= "/$_range[0]";
            }
            $comando_iptables .= " --dport $porta[0] -j DROP";
        } else {
            $comando_iptables = "/sbin/iptables -A INPUT -s {$ip}";
            if (isset($_range[0]) && is_numeric($_range[0])) {
                $comando_iptables .= "/$_range[0]";
            }
            $comando_iptables .= " -j DROP";
        }
        
        exec($comando_iptables);
    }
}
 