X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_goSpamServer.inc;h=a5ac7fa563e126e843ca440089339dafbc39005f;hb=9695395f399e680d3fbb0c6b7a2df7d8b37d17c8;hp=1d47712203a724b0c2a3380daa0d805a23dc0923;hpb=1a1cd62339c5c255de11b0d5b78649e067e7bc34;p=gosa.git diff --git a/plugins/admin/systems/class_goSpamServer.inc b/plugins/admin/systems/class_goSpamServer.inc index 1d4771220..a5ac7fa56 100644 --- a/plugins/admin/systems/class_goSpamServer.inc +++ b/plugins/admin/systems/class_goSpamServer.inc @@ -1,6 +1,8 @@ ui = get_userinfo(); - /* Set up the users ACL's for this 'dn' */ - $acl= get_permissions ($this->dn, $this->ui->subtreeACL); - $this->acl= get_module_permission($acl, "goSpamServer", $this->ui->dn); - /* Get Flags */ foreach($this->Flags as $flag){ $var = "saFlags".$flag; @@ -87,44 +85,30 @@ class gospamserver extends plugin{ function execute() { + $display =""; $smarty = get_smarty(); - if(get_class($this->parent) == "servtabs"){ - - $smarty->assign("servtabs",true); - /* Do we need to flip is_account state? */ - if (isset($_POST['modify_state'])) { - $this->is_account = !$this->is_account; - } + + /* If displayed, it is ever true*/ + $this->is_account =true; - /* Show tab dialog headers */ - if ($this->is_account) { - /* call Add Acoount to add account */ - $display = $this->show_header(_("Remove spamassassin extension"), - _("This server has spamassassin features enabled. You can disable them by clicking below.")); - } else { - /* call remove Account */ - $display = $this->show_header(_("Add spamassassin service"), - _("This server has spamassassin features disabled. You can enable them by clicking below.")); - return ($display); - } - }else{ - $this->is_account =true; - $display =""; - $smarty->assign("servtabs",false); + /* Get acls */ + $tmp = $this->plinfo(); + foreach($tmp['plProvidedAcls'] as $name => $translation){ + $smarty->assign($name."ACL",$this->getacl($name)); } - + /* Add new trusted network */ - if(isset($_POST['AddNewTrust'])){ + if(isset($_POST['AddNewTrust']) && ($this->acl_is_writeable("saTrustedNetworks"))){ $this->AddTrust($_POST['NewTrustName']); } /* Delete selected trusted network */ - if(isset($_POST['DelTrust'])){ + if(isset($_POST['DelTrust']) && ($this->acl_is_writeable("saTrustedNetworks"))){ $this->DelTrust($_POST['TrustedNetworks']); } /* Add a new rule */ - if(isset($_POST['AddRule'])){ + if(isset($_POST['AddRule']) && $this->acl_is_writeable("saRule")){ $this->dialog = new goSpamServerRule($this->config,$this->dn); } @@ -136,7 +120,7 @@ class gospamserver extends plugin{ /* Handle post to delete rules */ $once = true; foreach($_POST as $name => $value){ - if(preg_match("/^editRule_/",$name) && $once ){ + if(preg_match("/^editRule_/",$name) && $once && $this->acl_is_readable("saRule")){ $once = false; $entry = preg_replace("/^editRule_/","",$name); $entry = preg_replace("/_(x|y)$/","",$entry); @@ -144,7 +128,7 @@ class gospamserver extends plugin{ $name = $entry; $this->dialog = new goSpamServerRule($this->config,$this->dn,$name,$rule); } - if(preg_match("/^delRule_/",$name) && $once ){ + if(preg_match("/^delRule_/",$name) && $once && $this->acl_is_writeable("saRule")){ $once = false; $entry = preg_replace("/^delRule_/","",$name); $entry = preg_replace("/_(x|y)$/","",$entry); @@ -160,7 +144,7 @@ class gospamserver extends plugin{ foreach($msgs as $msg){ print_red($msg); } - }else{ + }elseif($this->acl_is_writeable("saRule")){ $ret = $this->dialog->save(); if((!empty($ret['orig_name'])) && isset($this->Rules[$ret['orig_name']])){ unset($this->Rules[$ret['orig_name']]); @@ -179,13 +163,12 @@ class gospamserver extends plugin{ /* Assign smarty vars */ foreach($this->attributes as $attr){ $smarty->assign($attr,$this->$attr); - $smarty->assign($attr."ACL",chkacl($this->acl,$attr)); } /* Assign checkbox states */ foreach($this->Flags as $Flag){ $var = "saFlags".$Flag; - $smarty->assign("saFlags".$Flag."ACL",chkacl($this->acl,$Flag)); + $smarty->assign("saFlags".$Flag."ACL", $this->getacl($Flag)); if($this->$var){ $smarty->assign("saFlags".$Flag."CHK"," checked " ); }else{ @@ -197,11 +180,14 @@ class gospamserver extends plugin{ $DivRules = new divSelectBox("SpamRules"); $DivRules->SetHeight(130); - if(preg_match("/disabled/",chkacl($this->acl,"saTrustedNetworks"))){ + if($this->acl_is_writeable("saTrustedNetworks")){ $actions = ""; }else{ + $actions = ""; - $actions.= ""; + if($this->acl_is_writeable("saRule")){ + $actions.= ""; + } } foreach($this->Rules as $key => $net){ @@ -246,37 +232,6 @@ class gospamserver extends plugin{ } } - - /* remove this extension */ - function remove_from_parent() - { - - if(!$this->is_account && $this->initially_was_account){ - - plugin::remove_from_parent(); - - /* Remove status flag, it is not a memeber of - this->attributes, so ensure that it is deleted too */ - if(!empty($this->StatusFlag)){ - $this->attrs[$this->StatusFlag] = array(); - } - - /* Check if this is a new entry ... add/modify */ - $ldap = $this->config->get_ldap_link(); - $ldap->cat($this->dn,array("objectClass")); - if($ldap->count()){ - $ldap->cd($this->dn); - $ldap->modify($this->attrs); - }else{ - $ldap->cd($this->dn); - $ldap->add($this->attrs); - } - show_ldap_error($ldap->get_error(), sprintf(_("Removing of server services/spamassassin with dn '%s' failed."),$this->dn)); - $this->handle_post_events("remove"); - } - } - - function save() { if(!$this->is_account) return; @@ -344,25 +299,28 @@ class gospamserver extends plugin{ /* Check flags */ foreach($this->Flags as $flag){ $var = "saFlags".$flag; - if(isset($_POST[$var])){ - $this->$var = TRUE; - }else{ - $this->$var = FALSE; + + if($this->acl_is_writeable($var)){ + if(isset($_POST[$var])){ + $this->$var = TRUE; + }else{ + $this->$var = FALSE; + } } } } } - /* Return plugin informations for acl handling + /* Return plugin informations for acl handling */ function plInfo() { return (array( "plShortName" => _("Spamassassin"), - "plDescription" => _("Spamassassin service"), + "plDescription" => _("Spamassassin")." ("._("Services").")", "plSelfModify" => FALSE, "plDepends" => array(), - "plPriority" => 0, + "plPriority" => 89, "plSection" => array("administration"), "plCategory" => array("server"), "plProvidedAcls"=> array( @@ -380,104 +338,15 @@ class gospamserver extends plugin{ "saFlagP" => _("Enable use of Pyzor")) )); } - */ /* For newer service management dialogs */ function getListEntry() { - $this->updateStatusState(); - $flag = $this->StatusFlag; - $fields['Status'] = $this->$flag; + $fields = goService::getListEntry(); $fields['Message'] = _("Spamassassin"); - $fields['AllowStart'] = true; - $fields['AllowStop'] = true; - $fields['AllowRestart'] = true; - $fields['AllowRemove'] = true; $fields['AllowEdit'] = true; return($fields); } - - function updateStatusState() - { - if(empty($this->StatusFlag)) return; - - $attrs = array(); - $flag = $this->StatusFlag; - $ldap = $this->config->get_ldap_link(); - $ldap->cd($this->cn); - $ldap->cat($this->dn,array($flag)); - if($ldap->count()){ - $attrs = $ldap->fetch(); - } - if(isset($attrs[$flag][0])){ - $this->$flag = $attrs[$flag][0]; - } - } - function action_hook($add_attrs= array()) - { - /* Find postcreate entries for this class */ - $command= search_config($this->config->data['MENU'], get_class($this), "ACTION_HOOK"); - if ($command == "" && isset($this->config->data['TABS'])){ - $command= search_config($this->config->data['TABS'], get_class($this), "ACTION_HOOK"); - } - if ($command != ""){ - /* Walk through attribute list */ - foreach ($this->attributes as $attr){ - if (!is_array($this->$attr)){ - $command= preg_replace("/%$attr/", $this->$attr, $command); - } - } - $command= preg_replace("/%dn/", $this->dn, $command); - /* Additional attributes */ - foreach ($add_attrs as $name => $value){ - $command= preg_replace("/%$name/", $value, $command); - } - - /* If there are still some %.. in our command, try to fill these with some other class vars */ - if(preg_match("/%/",$command)){ - $attrs = get_object_vars($this); - foreach($attrs as $name => $value){ - if(!is_string($value)) continue; - $command= preg_replace("/%$name/", $value, $command); - } - } - - if (check_command($command)){ - @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, - $command, "Execute"); - - exec($command); - } else { - $message= sprintf(_("Command '%s', specified as ACTION_HOOK for plugin '%s' doesn't seem to exist."), $command, get_class($this)); - print_red ($message); - } - } - } - - /* Directly save new status flag */ - function setStatus($value) - { - if($value == "none") return; - if(!$this->initially_was_account) return; - $ldap = $this->config->get_ldap_link(); - $ldap->cd($this->dn); - $ldap->cat($this->dn,array("objectClass")); - if($ldap->count()){ - - $tmp = $ldap->fetch(); - for($i = 0; $i < $tmp['objectClass']['count']; $i ++){ - $attrs['objectClass'][] = $tmp['objectClass'][$i]; - } - $flag = $this->StatusFlag; - $attrs[$flag] = $value; - $this->$flag = $value; - $ldap->modify($attrs); - show_ldap_error($ldap->get_error(), sprintf(_("Set status flag for server services/spamassassin with dn '%s' failed."),$this->dn)); - $this->action_hook(); - } - } - - } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>