<?php

//$SessionDisable = true;
include('../global.php');

class Renumbering extends Page
{
  var $FullTitle = 'Rozeslání mailů s heslem';
  var $ShortTitle = 'Rozeslání mailů';

  var $SubnetTable = array(
    1 => array('AddressRange' => '10.145.64.0', 'Mask' => 25),
    2 => array('AddressRange' => '10.145.65.0', 'Mask' => 24),
    3 => array('AddressRange' => '10.145.64.128', 'Mask' => 25),
    4 => array('AddressRange' => '10.145.66.128', 'Mask' => 27),
    5 => array('AddressRange' => '10.145.66.192', 'Mask' => 27),
    6 => array('AddressRange' => '10.145.66.224', 'Mask' => 29),
    7 => array('AddressRange' => '10.145.64.232', 'Mask' => 29),
    8 => array('AddressRange' => '10.145.67.8', 'Mask' => 29),
    9 => array('AddressRange' => '10.145.67.0', 'Mask' => 29),
    10 => array('AddressRange' => '10.145.67.16', 'Mask' => 29),
    11 => array('AddressRange' => '10.145.67.24', 'Mask' => 29),
    12 => array('AddressRange' => '10.145.66.240', 'Mask' => 30),
    13 => array('AddressRange' => '10.145.66.244', 'Mask' => 30),
    14 => array('AddressRange' => '10.145.66.248', 'Mask' => 30),
    15 => array('AddressRange' => '10.145.66.0', 'Mask' => 30),
    16 => array('AddressRange' => '10.145.66.160', 'Mask' => 27),
  );
  
  function Show()
  {
    global $Config;
    
    $Output = '';

    $DbResult = $this->Database->query('SELECT * FROM NetworkSubnet WHERE CompareNetworkPrefix(INET_ATON("192.168.0.0"), INET_ATON(AddressRange), 16)');
    $Output .= 'UPDATE NetworkInterface SET CZFreeIP = LocalIP<br>';
    while($Subnet = $DbResult->fetch_assoc())
    {
      $Output .= '-- Podsíť '.$Subnet['Name'].': '.$Subnet['AddressRange'].'/'.$Subnet['Mask'].' => '.$this->SubnetTable[$Subnet['Id']]['AddressRange'].'/'.$this->SubnetTable[$Subnet['Id']]['Mask'].'<br>';
      $DbResult2 = $this->Database->query('SELECT NetworkInterface.Id, NetworkInterface.LocalIP, NetworkDevice.Name FROM NetworkInterface JOIN NetworkDevice ON NetworkDevice.Id = NetworkInterface.Device WHERE CompareNetworkPrefix(INET_ATON(NetworkInterface.LocalIP), INET_ATON("'.$Subnet['AddressRange'].'"), '.$Subnet['Mask'].')  ORDER BY NetworkInterface.LocalIP');
      $NextIP = IPv4ToInt32($this->SubnetTable[$Subnet['Id']]['AddressRange']) + 1;
      while($Interface = $DbResult2->fetch_assoc())
      {
        $Output .= '-- '.$Interface['Name'].': '.$Interface['LocalIP'].' => '.Int32ToIPv4($NextIP).'<br>';
        $Output .= 'UPDATE NetworkInterface SET LocalIP = "'.Int32ToIPv4($NextIP).'" WHERE Id='.$Interface['Id'].';<br>';
        $NextIP++;        
      }
      $Output .= '<hr>';
    }
    return($Output);
  }
}

$System->AddModule(new Renumbering());
$System->Modules['Renumbering']->GetOutput();

?>
