<?php
#   SGT - The SGT for Internet - http://sgt.eti.br
#   Copyright (c) 2016-2018, Jean Azevedo. All rights reserved.

#   This file is part of SGT.

#   SGT is free software: you can redistribute it and/or modify
#   it under the terms of the GNU General Public License as published by
#   the Free Software Foundation, either version 3 of the License, or
#   any later version.

#   SGT is distributed in the hope that it will be useful,
#   but WITHOUT ANY WARRANTY; without even the implied warranty of
#   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#   GNU General Public License for more details.

#   You should have received a copy of the GNU General Public License
#   along with Foobar.  If not, see <http://www.gnu.org/licenses/>.

    include("../seguranca_adm_av.php");
    protegePagina();
    include "../conectar.php";
    include "../log_.php";
    $unidade = $_POST['unidade'];
    $ip_rede = $_POST['ip_rede'];
    $ipi_1 = $_POST['ipi_1'];
    $ipi_2 = $_POST['ipi_2'];
    $ipi_3 = $_POST['ipi_3'];
    $ipi_4 = $_POST['ipi_4'];
    $ipf_1 = $_POST['ipf_1'];
    $ipf_2 = $_POST['ipf_2'];
    $ipf_3 = $_POST['ipf_3'];
    $ipf_4 = $_POST['ipf_4'];
    $cidr = $_POST['cidr'];
    $rede = $_POST['rede'];
    $ip_ini = "$ipi_1.$ipi_2.$ipi_3.$ipi_4";
    $ip_fim = "$ipf_1.$ipf_2.$ipf_3.$ipf_4";
    $busca_ip=$pdo_sgt->prepare("SELECT * FROM tb_map_ip WHERE unidade=:unidade AND ip=:ip AND cidr=:cidr");
    $busca_ip->bindValue(":unidade",$unidade);
    $busca_ip->bindValue(":ip",$ip_ini);
    $busca_ip->bindValue(":cidr",$cidr);
    $busca_ip->execute();
    $busca_rede=$pdo_sgt->prepare("SELECT * FROM tb_map_ip WHERE unidade=:unidade AND rede=:rede");
    $busca_rede->bindValue(":unidade",$unidade);
    $busca_rede->bindValue(":rede",$rede);
    $busca_rede->execute();
    $dados_rede=$busca_rede->fetch(PDO::FETCH_ASSOC);
    if($busca_ip->rowCount() > 0){
        echo"<script language='javascript' type='text/javascript'>
            alert('Está rede para está unidade já existe!');
            window.history.go(-1)>Volta;
        </script>";
        die();
    }
    else {
        if($unidade == "" || $unidade == null){
            echo"<script language='javascript' type='text/javascript'>
                alert('O campo Unidade deve ser preenchido!');
                window.history.go(-1)>Volta;
            </script>";
        }
        else{
            if($dados_rede['rede'] == $rede){
                echo"<script language='javascript' type='text/javascript'>
                    alert('Está descriçao de rede já existe para esta unidade!');
                    window.history.go(-1)>Volta;
                </script>";
                die();
            }
            else {
                if($cidr < 16){
                     echo"<script language='javascript' type='text/javascript'>
                        alert('CIDR precisa ser igual ou maior que 16!');
                        window.history.go(-1)>Volta;
                    </script>";
                }
                else {
                    $ip_1 = $ipi_1;
                    $ip_2 = $ipi_2;
                    $ip_3 = $ipi_3;
                    $ip_11 = $ipf_1;
                    $ip_22 = $ipf_2;
                    $ip_33 = $ipf_3;
                    $ip_44_ = $ipf_4;
                    $ip_11 ++;
                    $ip_22 ++;
                    $ip_33 ++;
                    $ip_44_ ++;
                    $ipfinal = "$ipf_1.$ipf_2.$ipf_3.$ipf_4";
                    while ($ip_33 > $ip_3){
                        $ipc = $ipi_4;
                        if($ip_3 == $ipf_3){
                            if($ipi_3 == $ip_3){
                                while ($ipc < $ip_44_){
                                    $ip = "$ip_1.$ip_2.$ip_3.$ipc";
                                    $query=$pdo_sgt->prepare("INSERT INTO tb_map_ip (unidade,ip,cidr,rede) "
                                        . "VALUES (:unidade,:ip,:cidr,:rede)");
                                    $query->bindValue(":unidade",$unidade);
                                    $query->bindValue(":ip",$ip);
                                    $query->bindValue(":cidr",$cidr);
                                    $query->bindValue(":rede",$rede);
                                    $query->execute();
                                    $ipc ++;
                                }
                                $ip_3 ++;
                            } else {
                                $ipc = 0;
                                while ($ipc < $ip_44_){
                                    $ip = "$ip_1.$ip_2.$ip_3.$ipc";
                                    $query=$pdo_sgt->prepare("INSERT INTO tb_map_ip (unidade,ip,cidr,rede) "
                                        . "VALUES (:unidade,:ip,:cidr,:rede)");
                                    $query->bindValue(":unidade",$unidade);
                                    $query->bindValue(":ip",$ip);
                                    $query->bindValue(":cidr",$cidr);
                                    $query->bindValue(":rede",$rede);
                                    $query->execute();
                                    $ipc ++;
                                }
                                $ip_3 ++;
                            }
                        } else {
                            if($ipi_3 == $ip_3){
                                while ($ipc < 256){
                                    $ip = "$ip_1.$ip_2.$ip_3.$ipc";
                                    $query=$pdo_sgt->prepare("INSERT INTO tb_map_ip (unidade,ip,cidr,rede) "
                                        . "VALUES (:unidade,:ip,:cidr,:rede)");
                                    $query->bindValue(":unidade",$unidade);
                                    $query->bindValue(":ip",$ip);
                                    $query->bindValue(":cidr",$cidr);
                                    $query->bindValue(":rede",$rede);
                                    $query->execute();
                                    $ipc ++;
                                }
                                $ip_3 ++;
                            } else {
                                $ipc = 0;
                                while ($ipc < 256){
                                    $ip = "$ip_1.$ip_2.$ip_3.$ipc";
                                    $query=$pdo_sgt->prepare("INSERT INTO tb_map_ip (unidade,ip,cidr,rede) "
                                        . "VALUES (:unidade,:ip,:cidr,:rede)");
                                    $query->bindValue(":unidade",$unidade);
                                    $query->bindValue(":ip",$ip);
                                    $query->bindValue(":cidr",$cidr);
                                    $query->bindValue(":rede",$rede);
                                    $query->execute();
                                    $ipc ++;
                                }
                                $ip_3 ++;
                            }
                        }
                    }
                    $mensagem = "Criada uma rede: $ip_rede, com o nome: $rede, para a unidade: $unidade.";
                    salvaLog($mensagem);
                    echo"<script language='javascript' type='text/javascript'>
                        window.location.href='list_ip_unid.php';
                    </script>";
                }
            }
        }
    }
?>