Revize 606
Přidáno uživatelem harryhk před více než 14 roky(ů)
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
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).