index 155966473306d485bf01ae25fd62d5d0b3ddf073..c74c27fd379fdbbfb0ba2364b557c533b4e46d9f 100644 (file)
<?php
-class servdns extends plugin
+require_once("class_goService.inc");
+
+class servdns extends goService
{
/* CLI vars */
var $cli_summary= "Manage server basic objects";
var $DisplayName = "";
var $StatusFlag = "";
- function servdns ($config, $dn= NULL)
+ function servdns ($config, $dn= NULL, $parent= NULL)
{
- plugin::plugin ($config, $dn);
+ plugin::plugin ($config, $dn, $parent);
- $this->DisplayName = _("Domain name system service");
+ $this->DisplayName = _("DNS service");
$this->orig_dn = $dn;
}
if ($this->is_account){
- $display= $this->show_header(_("Remove DNS service"),
+ $display= $this->show_disable_header(_("Remove DNS service"),
_("This server has DNS features enabled. You can disable them by clicking below."));
} else {
- $display= $this->show_header(_("Add DNS service"),
+ $display= $this->show_enable_header(_("Add DNS service"),
_("This server has DNS features disabled. You can enable them by clicking below."));
return ($display);
}
/* There are still entries using this configuration
* Abort deletion
- */
+ */
if(count($used)){
$i = 2;
$str ="";
foreach($used as $dn){
- if($i > 0 ){
+ if($i > 0 && !preg_match("/,relativeDomainName=/",$dn)){
$i --;
- $str.=$dn." ";
+ $name = preg_replace("/^[^=]+=([^,]*),.*$/","\\1",$dn);
+ $zone = preg_replace("/^.*zoneName=([^,]*),.*$/","\\1",$dn);
+ $str.= $name.".".$zone." ";
}
}
$str .=" ... ";
}
print_red(sprintf(_("Can't delete the selected zone, because it is still in use by these entry/entries '%s'"),trim($str)));
-
+ return(false);
}else{
unset($this->Zones[$id]);
+ return(true);
}
}
*/
function remove_from_parent()
{
- if(!$this->initially_was_account){
- return;
- }
- print_red("Can't remove dns yet. returning without remove.");
- return;
- $ldap = $this->config->get_ldap_link();
- $ldap->ls("(&(objectClass=dNSZone)(zoneName=*)(relativeDomainName=@))",$this->orig_dn,array("relativeDomainName","zoneName"));
- while($attr = $ldap->fetch()){
- $ldap->cd($attr['dn']);
- $ldap->rmDir($attr['dn']);
+ if($this->initially_was_account){
+ $bool = true;
+ foreach($this->Zones as $key => $zone){
+ $bool= $bool & $this->RemoveZone($key);
+ }
+
+ if($bool){
+ $this->save();
+ }
+ return($bool);
}
- show_ldap_error($ldap->get_error(), _("Removing DNS service failed"));
}
foreach($tmp['zoneUpdates'] as $dn => $attrs){
$ldap->cd($dn);
$ldap->modify($attrs);
- show_ldap_error("Zone:".$ldap->get_error(), _("Updating DNS service failed"));
+ show_ldap_error($ldap->get_error(), sprintf(_("Updating of system server/dns with dn '%s' failed."),$this->dn));
}
}
foreach($tmp['del'] as $dn => $del){
$ldap->cd($dn);
$ldap->rmdir_recursive($dn);
- show_ldap_error($ldap->get_error(), _("Removing DNS entries failed"));
+ show_ldap_error($ldap->get_error(), sprintf(_("Removing of system server/dns with dn '%s' failed."),$this->dn));
}
/* move follwoing entries
$ldap->cd($dn);
$ldap->add($attrs);
}
- show_ldap_error($ldap->get_error(), _("Saving DNS entries failed"));
+ show_ldap_error($ldap->get_error(), sprintf(_("Saving of system server/dns with dn '%s' failed."),$this->dn));
}
}
{
if($value == "none") return;
if(!$this->initially_was_account) return;
+ if(empty($this->StatusFlag)) return;
$ldap = $this->config->get_ldap_link();
$ldap->cd($this->dn);
$ldap->cat($this->dn,array("objectClass"));
$attrs[$flag] = $value;
$this->$flag = $value;
$ldap->modify($attrs);
- show_ldap_error($ldap->get_error());
+ show_ldap_error($ldap->get_error(), sprintf(_("Set status flag for system server/dns with dn '%s' failed."),$this->dn));
$this->action_hook();
}
}
function getListEntry()
{
- $this->updateStatusState();
- $flag = $this->StatusFlag;
- if(empty($flag)){
- $fields['Status'] = "";
- }else{
- $fields['Status'] = $this->$flag;
- }
+ $fields = goService::getListEntry();
$fields['Message'] = _("DNS service");
- $fields['AllowStart'] = true;
- $fields['AllowStop'] = true;
- $fields['AllowRestart'] = true;
- $fields['AllowRemove']= true;
$fields['AllowEdit'] = true;
return($fields);
}
$this->$flag = $attrs[$flag][0];
}
}
+
+
+ /* Return plugin informations for acl handling */
+ function plInfo()
+ {
+ return (array(
+ "plShortName" => _("DNS service"),
+ "plDescription" => _("DNS service")." ("._("Services").")",
+ "plSelfModify" => FALSE,
+ "plDepends" => array(),
+ "plPriority" => 83,
+ "plSection" => array("administration"),
+ "plCategory" => array("server"),
+
+ "plProvidedAcls"=> array(
+ "zoneName" =>_("Zone name"),
+ "ReverseZone" =>_("Reverse zone"),
+ "sOAprimary" =>_("Primary dns server"),
+ "sOAmail" =>_("Mail address"),
+ "sOAserial" =>_("Serial"),
+ "sOArefresh" =>_("Refresh"),
+ "sOAretry" =>_("Retry"),
+ "sOAexpire" =>_("Expire"),
+ "sOAttl" =>_("TTL"),
+ "zoneRecords" =>_("Zone records"))
+ ));
+ }
+
}
// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
?>