Projekt

Obecné

Profil

« Předchozí | Další » 

Revize 606

Přidáno uživatelem harryhk před více než 14 roky(ů)

Odstraneny konfiguracni soubory z repozitare, upravene generovani konfiguracnich souboru dhcp, dns a mac restrikce.
Drobne zmeny v Cloudech/oblastech, pri zobrazeni/upravovani cloudu lze pridelit volny subnet (pokud zadny volny neni, odkaz se v nabidce nezobrazi).

Zobrazit rozdíly:

freenetis/trunk/kohana/media/download/hkfree.org
$ORIGIN kocourkov.hkfree.org.
$TTL 86400 ; (1 day)
kocourkov.hkfree.org. IN SOA charon.hkfree.org. pmv.root.hkfree.org. (
2010011100 ; serial
28800 ; refresh (8 hours)
7200 ; retry (2 hours)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns.hkfree.org.
NS ns2.hkfree.org.
MX 10 relay.hkfree.org.
A 10.107.37.1
pepa2 A 10.107.37.95
pepa A 10.107.37.101
pepa A 10.107.37.102
A 10.107.37.129
pepa2 A 10.107.37.130
karel A 10.107.37.150
karel A 10.107.37.151
A 10.107.137.1
A 10.107.137.129
freenetis/trunk/kohana/media/download/mac_restriction.sh
#!/bin/sh
iptables -F FORWARD
#pepa
iptables -I FORWARD -m mac --mac-source 00:00:00:00:11:22 -j REJECT
iptables -I FORWARD -s 10.107.37.102 -m mac --mac-source 00:00:00:00:11:22 -j ACCEPT
#pepa2
iptables -I FORWARD -m mac --mac-source 00:00:00:00:11:23 -j REJECT
iptables -I FORWARD -s 10.107.37.95 -m mac --mac-source 00:00:00:00:11:23 -j ACCEPT
#pepa
iptables -I FORWARD -m mac --mac-source 12:34:56:78:9a:bc -j REJECT
iptables -I FORWARD -s 10.107.37.101 -m mac --mac-source 12:34:56:78:9a:bc -j ACCEPT
freenetis/trunk/kohana/media/download/dhcpd.conf
boot-unknown-clients false;
one-lease-per-client true;
default-lease-time 2400;
max-lease-time 7200;
option domain-name-servers 10.107.4.100, 10.107.4.129, 10.107.3.1;
option domain-name "hkfree.org";
authoritative;
subnet 10.107.137.128 netmask 255.255.255.128 {
option routers 10.107.137.129;
option broadcast-address 10.107.137.255;
group {
}
}
freenetis/trunk/kohana/media/download/10.107
$ORIGIN .
$TTL 86400 ; (1 day)
55.107.10.in-addr.arpa IN SOA charon.hkfree.org. pmv.root.hkfree.org. (
2010020200 ; serial
28800 ; refresh (8 hours)
7200 ; retry (2 hours)
604800 ; expire (1 week)
86400 ; minimum (1 day)
)
NS ns.hkfree.org.
NS ns2.hkfree.org.
$ORIGIN 55.107.10.in-addr.arpa.
$TTL 86400
freenetis/trunk/kohana/application/models/subnet.php
}
/**
* Author: Lubomir Buben
* @author: Lubomir Buben
* Function tries to find subnet of cloud. Used in clouds/show, clouds/edit.
* @param $cloud_id
* @return unknown_type
......
}
/**
* Author: Lubomir Buben
* @author: Lubomir Buben
* Function finds all free subnets (without cloud assigned)
* @param none
* @return unknown_type
......
}
/**
* Author: Lubomir Buben
* @author: Lubomir Buben
* Function counts all free subnets (without cloud assigned)
* @param none
* @return $total_free_subnets
......
);
return count($records);
}
/**
* @author: Lubomir Buben
* Function gets every single subnet to know all used prefixes.
* @return unknown_type
*/
public function get_every_subnet(){
return self::$db->query("SELECT s.*, c.name AS cloud
FROM subnets s
LEFT JOIN clouds c ON s.cloud_id = c.id
ORDER BY INET_ATON(s.network_address)"
);
}
/**
* @author: Lubomir Buben
* Function gets all subnets of the ip prefix.
* @return unknown_type
*/
public function get_subnet_of_ip_prefix($ip_prefix){
$where = 'WHERE s.network_address LIKE \''.$ip_prefix.'%\' COLLATE utf8_general_ci';
return self::$db->query("
SELECT s.id
FROM subnets s
$where
"
);
}
}
?>
freenetis/trunk/kohana/application/models/config_file.php
//protected $belongs_to = array('user','confirmed_by' => 'user');
//public $arr_sql = array('id' => 'r.id', 'ip_address' => 'r.ip_address', 'duration' => 'r.duration', 'destination' => 'r.destination', 'admin'=>'r.admin', 'message' => 'r.message', 'note' => 'r.note', 'locksign' => 'r.locksign');
/*public function get_dhcp_users($subnet_id = null){
return self::$db->query("SELECT
ip.ip_address, i.mac
FROM ip_addresses ip
LEFT JOIN ifaces i ON ip.iface_id = i.id
WHERE subnet_id=$subnet_id"
);
}*/
public function get_dhcp_users($subnet_id = null){
return self::$db->query("SELECT
ip.ip_address, i.mac, u.login
ip.ip_address, ip.gateway, i.mac, u.login
FROM ip_addresses ip
LEFT JOIN ifaces i ON ip.iface_id = i.id
LEFT JOIN devices d ON i.device_id = d.id
......
public function get_mac_users($subnet_id = null){
return self::$db->query("SELECT
ip.ip_address, i.mac, u.login
ip.ip_address, ip.gateway, i.mac, u.login
FROM ip_addresses ip
LEFT JOIN ifaces i ON ip.iface_id = i.id
LEFT JOIN devices d ON i.device_id = d.id
freenetis/trunk/kohana/application/models/cloud.php
public $arr_sql = array('id' => 'c.id', 'name' => 'c.name');
/**
* @author Lubomir Buben
* Function gets all cloud's names and ids
* @return unknown_type
*/
......
);
}
public function remove_cloud_from_subnets($cloud_id){
return self::$db->query("UPDATE subnets
set cloud_id = 0
WHERE
cloud_id = $cloud_id"
);
}
/**
* @author Lubomir Buben
* Function gets every single cloud
* @return unknown_type
*/
public function get_every_cloud(){
return self::$db->query("SELECT
c.*, u.login
FROM clouds c
LEFT JOIN cloud_admins ca ON c.id = ca.cloud_id
LEFT JOIN users u ON u.id = ca.admin_id"
);
}
}
?>
freenetis/trunk/kohana/application/models/ip_address.php
"); */
return self::$db->query("SELECT
q.id, q.ip_address, d.name AS device_name, m.name AS member_name, d.id AS did, m.id AS mid
q.id, q.ip_address, q.gateway, d.name AS device_name, m.name AS member_name, d.id AS did, m.id AS mid
FROM (SELECT
ip.id, ip.ip_address, IFNULL(ic1.device_id, ic2.device_id) as device_id
ip.id, ip.ip_address, ip.gateway, IFNULL(ic1.device_id, ic2.device_id) as device_id
FROM ip_addresses ip
LEFT JOIN ifaces ic1 ON ip.iface_id = ic1.id
LEFT JOIN vlan_ifaces vic ON ip.vlan_iface_id = vic.id
......
ORDER BY inet_aton(q.ip_address)
");
}
/**
* Function gets IP addresses of device.
* @author Jiri Svitak
* @param $device_id
* @return unknown_type
*/
public function get_ip_addresses_of_device($device_id)
{
return self::$db->query("
SELECT ip.id, ip.ip_address, s.name AS subnet_name
FROM ip_addresses ip
LEFT JOIN ifaces i ON i.id = ip.iface_id
LEFT JOIN vlan_ifaces vi ON vi.id = ip.vlan_iface_id
LEFT JOIN ifaces i2 ON i2.id = vi.iface_id
LEFT JOIN subnets s ON s.id = ip.subnet_id
WHERE i.device_id = $device_id OR i2.device_id = $device_id
ORDER BY inet_aton(ip.ip_address)
");
}
}
?>
freenetis/trunk/kohana/application/controllers/clouds.php
$this->form->group('')->label(url_lang::lang('texts.Basic information'));
$this->form->input('name')->label(url_lang::lang('texts.Name').':')->rules('required');
$this->form->input('admin')->label(url_lang::lang('texts.Admin').'(ID):')->rules('required');
$this->form->input('admin')->label(url_lang::lang('texts.Admin').' (ID):')->rules('required');
if($total_free_subnets>0){
$this->form->dropdown('subnet')->label(url_lang::lang('texts.Subnet').':')->options($subnet);
}
......
$cloud_admin = new Cloud_admin_Model();
$cloud_admin->cloud_id = $cloud->id;
$cloud_admin->admin_id = $form_data['admin'];
if(isset($form_data['subnet'])){
$subnet = new Subnet_Model($form_data['subnet']);
$subnet->cloud_id = $cloud->id;
$subnet->save();
}
unset($form_data);
if ($cloud_admin->save()) {
$this->session->set_flash('message', url_lang::lang('texts.Cloud has been successfully added.'));
......
$cloud_model = new Cloud_Model($cloud_id);
$linkback = url_lang::base()."clouds/show_all/";
if ($cloud_model->delete()){
if ($cloud_model->remove_cloud_from_subnets($cloud_id) && $cloud_model->delete()){
$this->session->set_flash('message', url_lang::lang('texts.cloud has been successfully deleted.'));
} else {
$this->session->set_flash('message', url_lang::lang('texts.Error - cant delete this cloud.'));
}
url::redirect($linkback);
}
freenetis/trunk/kohana/application/controllers/config_files.php
<?php
/**
/**va
* @author Lubomir Buben
*/
class Config_files_Controller extends Controller{
private $links;
function __construct()
{
function __construct(){
parent::__construct();
$array[] = html::anchor(url_lang::base().'config_files/dhcp', url_lang::lang('texts.DHCP'));
$array[] = html::anchor(url_lang::base().'config_files/dns_reverse', url_lang::lang('texts.Reverse DNS'));
......
foreach ($subnets as $subnet){
$arr_subnets_names[$subnet->id] = $subnet->name . ": ". $subnet->net_str."/".$subnet->mask;
$this->arr_mask_by_id[$subnet->id]=$subnet->mask;
$this->arr_net_by_id[$subnet->id]=$subnet->net;
$arr_subnets_nets[] = $subnet->net;
$arr_subnets_masks[] = $subnet->mask;
$this->arr_net_by_id[$subnet->id]=$subnet->net;
$arr_subnets_nets[] = $subnet->net;
$arr_subnets_masks[] = $subnet->mask;
$arr_subnets_netnames[] = $subnet->net_str."/".$subnet->mask.": ".$subnet->name ;
$arr_subnets_ids[]=$subnet->id;
$arr_subnets_ids[]=$subnet->id;
}
$general_settings = new Config_file_Model(1);
......
$this->form->input('tertiary_dns')->label(url_lang::lang('texts.Tertiary DNS').':')->callback(array($this, 'callback_valid_ip'))->value($general_settings->tertiary_dns);
$this->form->group('')->label(url_lang::lang('texts.Basic information'));
$this->form->dropdown('subnet_id')->label(url_lang::lang('texts.Select subnet').':')->rules('required')->options($arr_subnets_names)->selected(0);
$this->form->input('routers_ip_address')->label(url_lang::lang('texts.Routers IP address').':')->rules('required|length[7,15]')->callback(array($this, 'valid_ip'));
$this->form->group('')->label(url_lang::lang('texts.Optional information'));
$this->form->dropdown('subnet_id2')->label(url_lang::lang('texts.Select subnet').':')->options($arr_subnets_names)->selected(0);
$this->form->input('routers_ip_address2')->label(url_lang::lang('texts.Routers IP address').':')->rules('length[7,15]')->callback(array($this, 'valid_ip2'));
$this->form->dropdown('subnet_id3')->label(url_lang::lang('texts.Select subnet').':')->options($arr_subnets_names)->selected(0);
$this->form->input('routers_ip_address3')->label(url_lang::lang('texts.Routers IP address').':')->rules('length[7,15]')->callback(array($this, 'valid_ip3'));
$this->form->submit('submit')->value(url_lang::lang('texts.Generate'));
special::required_forge_style($this->form, ' *', 'required');
......
$form_data['subnet_id3']=0;
$form_data['routers_ip_address3']=0;
}
$this->generate_dhcp($form_data['primary_dns'], $form_data['secondary_dns'], $form_data['tertiary_dns'],
/*$result = $this->generate_dhcp($form_data['primary_dns'], $form_data['secondary_dns'], $form_data['tertiary_dns'],
$form_data['lease_time'],$form_data['max_lease_time'],$form_data['subnet_id'],
$form_data['routers_ip_address'],$form_data['subnet_id2'],$form_data['routers_ip_address2'],
$form_data['subnet_id3'],$form_data['routers_ip_address3']);
$form_data['subnet_id3'],$form_data['routers_ip_address3']);*/
$result = $this->generate_dhcp($form_data['primary_dns'], $form_data['secondary_dns'], $form_data['tertiary_dns'],
$form_data['lease_time'],$form_data['max_lease_time'],$form_data['subnet_id'],
$form_data['subnet_id2'],$form_data['subnet_id3']);
// set content header
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="dhcpd.conf"');
echo ''.$result.'';
unset($form_data);
if (/*$redirection->save()*/true) {
//$this->session->set_flash('message', url_lang::lang('texts.DHCP configuration file was successfully generated.'));
url::redirect(url_lang::base().'../media/download/download.php?file=dhcpd.conf');
exit;
}
exit;
}
//----- end validate --------------------------------------------------
......
}
function dns_reverse(){
$area_model = new Area_Model();
$areas = $area_model->get_area_prefixes();
$arr_area_prefixes[] = '----- '.url_lang::lang('texts.select area prefix').' -----';
foreach ($areas as $area){
$arr_area_prefixes[$area->prefix] = $area->prefix." (".$area->area_name.")";
$subnet_model = new Subnet_Model();
$result = $subnet_model->get_every_subnet();
$arr_subnet_prefixes[] = '----- '.url_lang::lang('texts.Select IP prefix').' -----';
foreach ($result as $row){
list($part1, $part2, $part3, $part4) = split('[.]', $row->network_address);
$ip_prefix = "$part1.$part2.$part3";
$arr_subnet_prefixes[$ip_prefix] = $ip_prefix;
$arr_clouds[$ip_prefix] = $row->cloud_id;
}
$area_model = new Area_Model();
$general_settings = new Config_file_Model(1);
$this->form = new Forge(url_lang::base()."config_files/dns_reverse", '', 'POST', array('id' => 'article_form'));
$this->form->set_attr('class', 'form_class')->set_attr('method', 'post');
$this->form->group('')->label(url_lang::lang('texts.Basic information'));
$this->form->dropdown('area_prefix')->label(url_lang::lang('texts.Select area prefix').':')->rules('required')->options($arr_area_prefixes)->selected(0);
$this->form->dropdown('ip_prefix')->label(url_lang::lang('texts.Select area prefix').':')->rules('required')->options($arr_subnet_prefixes)->selected(0);
$this->form->group('')->label(url_lang::lang('texts.Advanced information'));
$this->form->input('refresh')->label(url_lang::lang('texts.Refresh time').':')->value($general_settings->refresh);
$this->form->input('retry')->label(url_lang::lang('texts.Retry time').':')->value($general_settings->retry);
......
foreach($form_data as $key => $value){
$form_data[$key] = htmlspecialchars($value);
}
$this->generate_dns_reverse($form_data['area_prefix'],$form_data['refresh'], $form_data['retry'], $form_data['expire'],
$cloud_id = $arr_clouds[$form_data['ip_prefix']];
$result = $this->generate_dns_reverse($form_data['ip_prefix'],$cloud_id,$form_data['refresh'], $form_data['retry'], $form_data['expire'],
$form_data['minimum'],$form_data['time_to_live'],$form_data['name_server'],
$form_data['name_server2'],$form_data['mail_exchange'],$form_data['soa_record'],$form_data['dns_admin']);
$filename = $form_data['ip_prefix'];
// set content header
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$filename.'"');
echo ''.$result.'';
unset($form_data);
if (true) {
//$this->session->set_flash('message', url_lang::lang('texts.Reverse DNS zone file was successfully generated.'));
//url::redirect(url_lang::base().'config_files/dns_reverse/');
url::redirect(url_lang::base().'../media/download/download.php?file=10.107');
exit;
}
exit;
}
//----- end validate --------------------------------------------------
......
}
function dns_forward(){
$area_model = new Area_Model();
$areas = $area_model->get_areas();
$arr_areas[] = '----- '.url_lang::lang('texts.select area').' -----';
foreach ($areas as $area){
$arr_areas[$area->id] = $area->area_name." (".$area->id.")";
$cloud_model = new Cloud_Model();
$clouds = $cloud_model->get_every_cloud();
$arr_clouds[] = '----- '.url_lang::lang('texts.Select cloud').' -----';
foreach ($clouds as $row){
$arr_clouds[$row->id] = $row->name;
}
$area_model = new Area_Model();
$general_settings = new Config_file_Model(1);
$this->form = new Forge(url_lang::base()."config_files/dns_forward", '', 'POST', array('id' => 'article_form'));
$this->form->set_attr('class', 'form_class')->set_attr('method', 'post');
$this->form->group('')->label(url_lang::lang('texts.Basic information'));
$this->form->dropdown('area')->label(url_lang::lang('texts.Select area').':')->rules('required')->options($arr_areas)->selected(0);
$this->form->dropdown('cloud')->label(url_lang::lang('texts.Select cloud').':')->rules('required')->options($arr_clouds)->selected(0);
$this->form->group('')->label(url_lang::lang('texts.Advanced information'));
$this->form->input('refresh')->label(url_lang::lang('texts.Refresh time').':')->value($general_settings->refresh);
$this->form->input('retry')->label(url_lang::lang('texts.Retry time').':')->value($general_settings->retry);
......
$form_data[$key] = htmlspecialchars($value);
}
$this->generate_dns_forward($form_data['area'],$form_data['refresh'], $form_data['retry'], $form_data['expire'],
$result = $this->generate_dns_forward($form_data['cloud'],$form_data['refresh'], $form_data['retry'], $form_data['expire'],
$form_data['minimum'],$form_data['time_to_live'],$form_data['name_server'],
$form_data['name_server2'],$form_data['mail_exchange'],$form_data['soa_record'],$form_data['dns_admin']);
$cloud_model = new Cloud_Model($form_data['cloud']);
$cloud_name = strtolower($cloud_model->name);
$settings = new Config_file_Model(1);
$filename = $cloud_name.'.'.$settings->domain_name;
// set content header
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="'.$filename.'"');
echo ''.$result.'';
unset($form_data);
if (true) {
//$this->session->set_flash('message', url_lang::lang('texts.Forward DNS zone file was successfully generated.'));
//url::redirect(url_lang::base().'config_files/dns_forward/');
url::redirect(url_lang::base().'../media/download/download.php?file=hkfree.org');
exit;
}
exit;
}
//----- end validate --------------------------------------------------
......
$arr_subnets_ids[]=$subnet->id;
}
$general_settings = new Config_file_Model(1);
//$general_settings = new Config_file_Model(1);
$this->form->group('')->label(url_lang::lang('texts.Basic information'));
$this->form->dropdown('subnet_id')->label(url_lang::lang('texts.Select subnet').':')->rules('required')->options($arr_subnets_names)->selected(0);
$this->form->input('routers_ip_address')->label(url_lang::lang('texts.Routers IP address').':')->rules('required|length[7,15]')->callback(array($this, 'valid_ip'));
$this->form->submit('submit')->value(url_lang::lang('texts.Generate'));
special::required_forge_style($this->form, ' *', 'required');
......
$form_data[$key] = htmlspecialchars($value);
}
$this->generate_mac_restriction($form_data['subnet_id'], $form_data['routers_ip_address']);
$result = $this->generate_mac_restriction($form_data['subnet_id']);
// set content header
header('Content-type: application/force-download');
header('Content-Disposition: attachment; filename="dhcpd.conf"');
echo ''.$result.'';
unset($form_data);
if (/*$redirection->save()*/true) {
//$this->session->set_flash('message', url_lang::lang('texts.MAC restriction file was successfully generated.'));
//url::redirect(url_lang::base().'config_files/mac_restriction/');
url::redirect(url_lang::base().'../media/download/download.php?file=mac_restriction.sh');
exit;
}
exit;
}
//----- end validate --------------------------------------------------
......
$view->render(TRUE);
}
function generate_dhcp($primary_dns, $secondary_dns, $tertiary_dns, $lease_time, $max_lease_time, $subnet_id, $routers_ip_address, $subnet_id2, $routers_ip_address2, $subnet_id3, $routers_ip_address3){
/**
* @author: Lubomir Buben
* Function integrates information from all chosen subnets into one file ($text) that is being downloaded by user
* @return string
*/
function generate_dhcp($primary_dns, $secondary_dns, $tertiary_dns, $lease_time, $max_lease_time, $subnet_id, $subnet_id2, $subnet_id3){
$settings = new Config_file_Model(1);
$text = "boot-unknown-clients false;\none-lease-per-client true;\ndefault-lease-time $lease_time;\nmax-lease-time $max_lease_time;\noption domain-name-servers $primary_dns, $secondary_dns, $tertiary_dns;\noption domain-name \"$settings->domain_name\";\nauthoritative;\n\n";
$text .= $this->dhcp_subnet($subnet_id);
if($subnet_id2!=0){
$text .= $this->dhcp_subnet($subnet_id2);
}
if($subnet_id3!=0){
$text .= $this->dhcp_subnet($subnet_id2);
}
return $text;
}
/**
* @author: Lubomir Buben
* Function gets necessary information for generation dhcp configuration file
* @return string
*/
function dhcp_subnet($subnet_id = null, $settings = null) {
$subnet = new Subnet_Model($subnet_id);
$settings = new Config_file_Model(1);
$text = "";
//counting broadcast ip address
$data = "$subnet->netmask";
......
$result = $settings->get_dhcp_users($subnet_id);
$total_addresses = 0;
foreach ($result as $row){
if ($row->ip_address!=$routers_ip_address){
if ($row->gateway!=1){
$total_addresses++;
$ip_addresses[]=$row->ip_address;
$mac_addresses[]=$row->mac;
$users[]=$row->login."-".$total_addresses;
} else {
$routers_ip_address = $row->ip_address;
}
}
$text = "boot-unknown-clients false;\none-lease-per-client true;\ndefault-lease-time $lease_time;\nmax-lease-time $max_lease_time;\noption domain-name-servers $primary_dns, $secondary_dns, $tertiary_dns;\noption domain-name \"$settings->domain_name\";\nauthoritative;\n\n";
$text .= "subnet $subnet->network_address netmask $subnet->netmask {\n option routers $routers_ip_address;\n option broadcast-address $broadcast;\n group {\n";
for ($i=0; $i<$total_addresses; $i++){
$text .= " host $users[$i] {\n hardware ethernet $mac_addresses[$i];\n fixed-address $ip_addresses[$i];\n }\n";
}
$text .= " }\n}\n\n";
//subnet2
if($subnet_id2!=0){
$subnet = new Subnet_Model($subnet_id2);
//counting broadcast ip address
$data = "$subnet->netmask";
List ($bip1, $bip2, $bip3, $bip4) = Explode (".", $data);
$data2 = "$subnet->network_address";
List ($ip1, $ip2, $ip3, $ip4) = Explode (".", $data2);
$broadcast = "$ip1.$ip2.$ip3.".($ip4+$bip4-1);
//getting data from DB
$result = $settings->get_dhcp_users($subnet_id2);
$total_addresses = 0;
foreach ($result as $row){
if ($row->ip_address!=$routers_ip_address2){
$total_addresses++;
$ip_addresses2[]=$row->ip_address;
$mac_addresses2[]=$row->mac;
$users2[]=$row->login."-".$total_addresses;
}
}
$text .= "subnet $subnet->network_address netmask $subnet->netmask {\n option routers $routers_ip_address2;\n option broadcast-address $broadcast;\n group {\n";
for ($i=0; $i<$total_addresses; $i++){
$text .= " host $users2[$i] {\n hardware ethernet $mac_addresses2[$i];\n fixed-address $ip_addresses2[$i];\n }\n";
}
$text .= " }\n}\n\n";
}
//subnet3
if($subnet_id3!=0){
$subnet = new Subnet_Model($subnet_id3);
//counting broadcast ip address
$data = "$subnet->netmask";
List ($bip1, $bip2, $bip3, $bip4) = Explode (".", $data);
$data2 = "$subnet->network_address";
List ($ip1, $ip2, $ip3, $ip4) = Explode (".", $data2);
$broadcast = "$ip1.$ip2.$ip3.".($ip4+$bip4-1);
//getting data from DB
$result = $settings->get_dhcp_users($subnet_id3);
$total_addresses = 0;
foreach ($result as $row){
if ($row->ip_address!=$routers_ip_address3){
$total_addresses++;
$ip_addresses3[]=$row->ip_address;
$mac_addresses3[]=$row->mac;
$users3[]=$row->login."-".$total_addresses;
}
}
$text .= "subnet $subnet->network_address netmask $subnet->netmask {\n option routers $routers_ip_address3;\n option broadcast-address $broadcast;\n group {\n";
for ($i=0; $i<$total_addresses; $i++){
$text .= " host $users3[$i] {\n hardware ethernet $mac_addresses3[$i];\n fixed-address $ip_addresses3[$i];\n }\n";
}
$text .= " }\n}\n\n";
}
$fp = FOpen ('media/download/dhcpd.conf',"w");
if ($fp){
FWrite ($fp, $text);
FClose ($fp);
}
return;
return $text;
}
/**
* @author: Lubomir Buben
* Function converts seconds into more readable units if possilbe (hours / days / weeks)
* @return string
*/
function time_conversion($time){
$hours = round($time/3600);
$days = round($hours/24);
......
return $result;
}
function generate_dns_reverse($area_prefix = 0, $refresh = 28800, $retry = 7200, $expire = 604800, $minimum = 86400, $time_to_live = 86400, $name_server = null, $name_server2 = null, $mail_exchange = null, $soa_record = null, $dns_admin = null){
/**
* @author Lubomir Buben
* Function generates configuration file for forward dns record
* @return file
*/
function generate_dns_reverse($ip_prefix = 0, $cloud_id = 0, $refresh = 28800, $retry = 7200, $expire = 604800, $minimum = 86400, $time_to_live = 86400, $name_server = null, $name_server2 = null, $mail_exchange = null, $soa_record = null, $dns_admin = null){
$settings = new Config_file_Model(1);
$area_model = new Area_Model();
$result = $area_model->get_records_by_prefix($area_prefix);
//saving name of the cloud
$cloud_model = new Cloud_Model($cloud_id);
$cloud_name = strtolower($cloud_model->name);
//converting time units to more readable units if possible
$refresh2 = $this->time_conversion($refresh);
$retry2 = $this->time_conversion($retry);
$expire2 = $this->time_conversion($expire);
$minimum2 = $this->time_conversion($minimum);
$time_to_live2 = $this->time_conversion($time_to_live);
//getting all subnets of ip prefix
$subnet_model = new Subnet_Model();
$result = $subnet_model->get_subnet_of_ip_prefix($ip_prefix);
$total_records = 0;
foreach ($result as $row){
if ($total_records==0){
$area_name = strtolower($row->area_name);
//getting all ip addresses of subnet
$ip_address_model = new Ip_address_Model();
$result2 = $ip_address_model->get_ip_addresses_of_subnet($row->id);
foreach ($result2 as $row2){
List ($ip1, $ip2, $ip3, $ip4) = Explode (".", $row2->ip_address);
$ip_addresses[]=$ip4;
if ($row2->gateway)
$users[]="";
else {
//getting user of ip address
$ip = new Ip_address_Model($row->id);
$user = $ip->iface->device->user->login;
//$user = $ip->vlan_iface->iface->device->user->login;
$users[]=strtolower($user).".";
}
$total_records++;
}
//if ($row->ip_address!=null)
$data = "$row->ip_address";
List ($ip1, $ip2, $ip3, $ip4) = Explode (".", $data);
$ip_addresses[]=$ip4;
if ($row->gateway)
$users[]="";
else
$users[]=strtolower($row->login).".";
$total_records++;
}
List ($ip1, $ip2) = Explode (".", $settings->freenet_ip);
$arpa = "$area_prefix.$ip2.$ip1.in-addr.arpa";
$arpa = "$ip3.$ip2.$ip1.in-addr.arpa";
$serial = $today = date("Ymd")."00";
$text = "\$ORIGIN .\n\$TTL $time_to_live ; $time_to_live2\n$arpa IN SOA $soa_record. $dns_admin. (\n";
......
$text .= "\$ORIGIN $arpa.\n\$TTL $time_to_live\n\n";
for ($i=0; $i<$total_records; $i++){
$text .= "$ip_addresses[$i] PTR $users[$i]$area_name.$settings->domain_name.\n";
$text .= "$ip_addresses[$i] PTR $users[$i]$cloud_name.$settings->domain_name.\n";
}
$fp = FOpen ('media/download/10.107',"w");
if ($fp){
FWrite ($fp, $text);
FClose ($fp);
}
return;
$text .= "\n\n";
return $text;
}
function generate_dns_forward($area = 0, $refresh = 28800, $retry = 7200, $expire = 604800, $minimum = 86400, $time_to_live = 86400, $name_server = null, $name_server2 = null, $mail_exchange = null, $soa_record = null, $dns_admin = null){
function generate_dns_forward($cloud_id = 0, $refresh = 28800, $retry = 7200, $expire = 604800, $minimum = 86400, $time_to_live = 86400, $name_server = null, $name_server2 = null, $mail_exchange = null, $soa_record = null, $dns_admin = null){
$settings = new Config_file_Model(1);
$area_model = new Area_Model();
$result = $area_model->get_records_by_area($area);
//zjisteni nazvu oblasti
$area_model2 = new Area_Model($area);
$area_name = strtolower($area_model2->area_name);
//getting all subnets of cloud
$subnet_model = new Subnet_Model();
$result = $subnet_model->get_subnet_of_cloud($cloud_id);
$total_records = 0;
foreach ($result as $row){
//getting all ip addresses of subnet
$ip_address_model = new Ip_address_Model();
$result2 = $ip_address_model->get_ip_addresses_of_subnet($row->id);
foreach ($result2 as $row2){
$ip_addresses[]=$row2->ip_address;
if ($row2->gateway)
$users[]="";
else {
//getting user of ip address
$ip = new Ip_address_Model($row->id);
$user = $ip->iface->device->user->login;
//$user = $ip->vlan_iface->iface->device->user->login;
$users[]=strtolower($user);
}
$total_records++;
}
}
$cloud_model = new Cloud_Model($cloud_id);
$cloud_name = strtolower($cloud_model->name);
$refresh2 = $this->time_conversion($refresh);
$retry2 = $this->time_conversion($retry);
$expire2 = $this->time_conversion($expire);
$minimum2 = $this->time_conversion($minimum);
$time_to_live2 = $this->time_conversion($time_to_live);
$total_records = 0;
foreach ($result as $row){
//$data = "$row->ip_address";
//List ($ip1, $ip2, $ip3, $ip4) = Explode (".", $data);
$ip_addresses[]=$row->ip_address;
if ($row->gateway)
$users[]="";
else
$users[]=strtolower($row->login);
$total_records++;
}
$serial = $today = date("Ymd")."00";
$text = "\$ORIGIN $area_name.$settings->domain_name.\n";
$text = "\$ORIGIN $cloud_name.$settings->domain_name.\n";
$text .= "\$TTL $time_to_live ; $time_to_live2\n";
$text .= "$area_name.$settings->domain_name. IN SOA $soa_record. $dns_admin. (\n";
$text .= "$cloud_name.$settings->domain_name. IN SOA $soa_record. $dns_admin. (\n";
$text .= " $serial ; serial\n";
$text .= " $refresh ; refresh $refresh2\n";
$text .= " $retry ; retry $retry2\n";
......
$text .= " MX 10 $mail_exchange.\n";
}
$text .= "\n\n";
//TEST
$test = $area_model->get_prefixes_by_area($area);
$prefixes=0;
foreach ($test as $row){
//$result = $area_model->get_records_by_prefix2($row->prefix);
$prefix[$prefixes]=$row->prefix;
$prefixes++;
}
$total_records=0;
for($i=0; $i<$prefixes; $i++){
$result = $area_model->get_records_by_prefix2($prefix[$i]);
foreach ($result as $row){
$ip_addresses[]=$row->ip_address;
if ($row->gateway)
$users[]="";
else
$users[]=strtolower($row->login);
$total_records++;
}
}
for ($i=0; $i<$total_records; $i++){
$text .= "$users[$i] A $ip_addresses[$i]\n";
}
$fp = FOpen ('media/download/hkfree.org',"w");
if ($fp){
FWrite ($fp, $text);
FClose ($fp);
}
return;
$text .= "\n\n";
return $text;
}
function generate_mac_restriction($subnet_id = 0, $routers_ip_address = null){
function generate_mac_restriction($subnet_id = 0){
$settings = new Config_file_Model(1);
$subnet = new Subnet_Model($subnet_id);
......
$result = $settings->get_mac_users($subnet_id);
$total_addresses = 0;
foreach ($result as $row){
if ($row->ip_address!=$routers_ip_address){
if ($row->gateway!=1){
$total_addresses++;
$ip_addresses[]=$row->ip_address;
$mac_addresses[]=$row->mac;
......
$text .= "iptables -I FORWARD -m mac --mac-source $mac_addresses[$i] -j REJECT\n";
$text .= "iptables -I FORWARD -s $ip_addresses[$i] -m mac --mac-source $mac_addresses[$i] -j ACCEPT\n\n";
}
$fp = FOpen ('media/download/mac_restriction.sh',"w");
if ($fp){
FWrite ($fp, $text);
FClose ($fp);
}
return;
return $text;
}
function callback_valid_ip($input)
......
* @param $input ip address to validate
* @return unknown_type
*/
/*
function valid_ip2($input){
$ip = ip2long($this->input->post('routers_ip_address2')); // Submitted values
$subnet_id = $this->input->post('subnet_id2');
......
* Function checks validity of ip address.
* @param $input ip address to validate
* @return unknown_type
*/
*//*
function valid_ip3($input){
$ip = ip2long($this->input->post('routers_ip_address3')); // Submitted values
$subnet_id = $this->input->post('subnet_id3');
......
{
$input->add_error('required', url_lang::lang('texts.IP address already exists.'));
}
}
}*/
/**
* Function checks ip address if matches subnet and mask.

Také k dispozici: Unified diff