diff options
Diffstat (limited to 'config/bind/bind.inc')
-rw-r--r-- | config/bind/bind.inc | 119 |
1 files changed, 28 insertions, 91 deletions
diff --git a/config/bind/bind.inc b/config/bind/bind.inc index 4e01214a..1f7f9d8b 100644 --- a/config/bind/bind.inc +++ b/config/bind/bind.inc @@ -3,7 +3,8 @@ /* bind.inc part of the Bind package for pfSense - Copyright (C) 2013 Juliano Oliveira/Adriano Brancher + Copyright (C) 2013 Juliano Oliveira/Adriano Brancher + Copyright (C) 2013 Marcello Coutinho All rights reserved. Redistribution and use in source and binary forms, with or without @@ -59,8 +60,6 @@ define('CHROOT_LOCALBASE','/conf/named'); $bind_notify = $bind['bind_notify']; $custom_options = base64_decode($bind['bind_custom_options']); $bind_logging = $bind['bind_logging']; - - $bind_conf ="#Bind pfsense configuration\n"; $bind_conf .="#Do not edit this file!!!\n"; $bind_conf .= <<<EOD @@ -149,13 +148,12 @@ $bind_conf .= <<<EOD EOD; } - #Config Zone domain - if(is_array($config["installedpackages"]["bindacls"])) - $bindacls = $config["installedpackages"]["bindacls"]["config"]; - else - $bindacls =array(); - + if(!is_array($config["installedpackages"]["bindacls"]) || !is_array($config["installedpackages"]["bindacls"]["config"])){ + $config["installedpackages"]["bindacls"]["config"][] =array("name"=>"any","description"=>"Default Access list","row" => array("value"=> "","description"=>"")); + write_config(); + } + $bindacls = $config["installedpackages"]["bindacls"]["config"]; for ($i=0; $i<sizeof($bindacls); $i++) { $aclname = $bindacls[$i]['name']; @@ -202,9 +200,13 @@ EOD; $bind_conf .="\t\tfile \"/etc/namedb/named.root\";\n"; $bind_conf .= "\t};\n\n"; - for ($x=0; $x<sizeof($config["installedpackages"]["bindzone"]["config"]); $x++) + if(is_array($config["installedpackages"]["bindzone"])) + $bindzone = $config["installedpackages"]["bindzone"]["config"]; + else + $bindzone =array(); + for ($x=0; $x<sizeof($bindzone); $x++) { - $zone = $config["installedpackages"]["bindzone"]["config"][$x]; + $zone = $bindzone[$x]; $zonename = $zone['name']; $zonetype = $zone['type']; @@ -248,7 +250,7 @@ EOD; if ($zonetype == "master"){ $zonetll = $zone['tll']; - $zonemail = $zone['mail']; + $zonemail = preg_replace("/@/",".",$zone['mail']); $zoneserial = $zone['serial']; $zonerefresh = $zone['refresh']; $zoneretry = $zone['retry']; @@ -268,20 +270,21 @@ EOD; if($zone['allowtransfer'] == '') $zoneallowtransfer = "none"; else - $zoneallowtransfer = str_replace(',','; ',$zone['allowtransfer']); - $zone_conf = ";$zonename\n"; - $zone_conf .= "\$TTL $zonetll\n\n"; - + $zoneallowtransfer = str_replace(',','; ',$zone['allowtransfer']); + $zone_conf .= "\$TTL $zonetll\n;\n"; + $zone_conf .= ";\tDatabase file {$zonename}.DB for {$zonename} zone.\n"; + $zone_conf .= ";\tZone version {$zoneserial}\n;\n"; if($zonereverso == "on") $zone_conf .= "@\t IN SOA $zonenameserver. \t $zonemail. (\n"; else $zone_conf .= "$zonename.\t IN SOA $zonenameserver. \t $zonemail. (\n"; - $zone_conf .= "\t$zoneserial\n"; - $zone_conf .= "\t$zonerefresh\n"; - $zone_conf .= "\t$zoneretry\n"; - $zone_conf .= "\t$zoneexpire\n"; - $zone_conf .= "\t$zoneminimum)\n\n"; + $zone_conf .= "\t\t$zoneserial ; serial\n"; + $zone_conf .= "\t\t$zonerefresh ; refresh\n"; + $zone_conf .= "\t\t$zoneretry ; retry\n"; + $zone_conf .= "\t\t$zoneexpire ; expire\n"; + $zone_conf .= "\t\t$zoneminimum)\n\n"; + $zone_conf .= ";\n; Zone Records\n;\n"; if($zonereverso == "on") $zone_conf .= "\t IN NS \t\t$zonenameserver.\n"; @@ -291,9 +294,11 @@ EOD; } for ($y=0; $y<sizeof($zone['row']); $y++) { - $hostname = $zone['row'][$y]['hostname']; + $hostname = (preg_match("/(MX|NS)/",$zone['row'][$y]['hosttype'])?"@":$zone['row'][$y]['hostname']); $hosttype = $zone['row'][$y]['hosttype']; $hostdst = $zone['row'][$y]['hostdst']; + if (preg_match("/[a-zA-Z]/",$hostdst) && $hosttype !="TXT") + $hostdst .= "."; $hostvalue = $zone['row'][$y]['hostvalue']; $zone_conf .= "$hostname \t IN $hosttype $hostvalue \t$hostdst\n"; @@ -302,9 +307,7 @@ EOD; mkdir(CHROOT_LOCALBASE."/etc/namedb/$zonetype/$zoneview",0755,true); } file_put_contents(CHROOT_LOCALBASE."/etc/namedb/$zonetype/$zoneview/$zonename.DB", $zone_conf); - - #reader file domain zone - #reader file host definition + } } } @@ -375,72 +378,6 @@ function bind_print_javascript_type_zone2(){ print("<script language=\"JavaScript\">on_type_zone_changed()</script>\n"); } -# Carregar o campo com os dados da views -# ----------------------------------------------------------------------------- - -function get_bind_conf_items_list($data_group, $fieldname) { - global $config; - $res = ''; - if (is_array($config["installedpackages"][$data_group])){ - $conf = $config["installedpackages"][$data_group]["config"]; - if (is_array($conf)) - foreach($conf as $cf) $res[] = $cf[$fieldname]; - } - return $res; -} - -# Carregar o campo com os dados da views -# ----------------------------------------------------------------------------- - -function bind_views_before_form_dest($pkg,$data_group,$fieldname,$dest) { - - $destination_items = get_bind_conf_items_list($data_group,$fieldname); - $i=0; - if (is_array($pkg['fields']['field'])) - foreach($pkg['fields']['field'] as $field) { - # - if ($field['fieldname'] == $dest) { - $fld = &$pkg['fields']['field'][$i]; - if (is_array($destination_items)) - foreach($destination_items as $nmkey => $nm) - $fld['options']['option'][] = array('name'=>ucfirst(strtolower($nm)), 'value'=>strtolower($nm)); - } - $i++; - } -} - -# check zone serial number -# ----------------------------------------------------------------------------- - -function get_bind_conf_serial($data_group, $fieldname) { - global $config; - $res = ''; - if (is_array($config["installedpackages"][$data_group])){ - $conf = $config["installedpackages"][$data_group]["config"]; - if (is_array($conf)) - foreach($conf as $cf) $res[] = $cf[$fieldname]; - } - return $res; -} - -# load data into fields -# ----------------------------------------------------------------------------- - -function bind_zone_before_form_dest($pkg,$data_group,$fieldname,$dest) { - - $destination_items = get_bind_conf_serial($data_group,$fieldname); - $i=0; - if (is_array($pkg['fields']['field'])) - foreach($pkg['fields']['field'] as $field) { - # - if ($field['fieldname'] == $dest) { - $fld = &$pkg['fields']['field'][$i]; - $fld['default_value'] = date("YmdHis"); - #$fld['value'] = date("Ymdhms")."boa"; - } - $i++; - } -} function bind_write_rcfile() { $rc = array(); $BIND_LOCALBASE = "/usr/local"; |