DisplayName = _("Anti virus"); /* Get userinfo & acls */ $this->ui = get_userinfo(); /* Get Flags */ foreach($this->Flags as $flag){ $var = "avFlags".$flag; if(preg_match("/".$flag."/",$this->avFlags)){ $this->$var = TRUE; } } } function execute() { $smarty = get_smarty(); /* Set acls */ $tmp = $this->plInfo(); foreach($tmp['plProvidedAcls'] as $name => $translation) { $smarty->assign($name."ACL",$this->getacl($name)); } $display = ""; $smarty->assign("servtabs",FALSE); $this->is_account = true; /* Assign smarty vars */ foreach($this->attributes as $attr){ $smarty->assign($attr,$this->$attr); } /* Assign checkbox states */ foreach($this->Flags as $Flag){ $var = "avFlags".$Flag; if($this->$var){ $smarty->assign("avFlags".$Flag."CHK"," checked " ); }else{ $smarty->assign("avFlags".$Flag."CHK",""); } } /* Assign value for max thread select box */ $tmp = array(); for($i = 1 ; $i <= 20 ; $i ++){ $tmp[$i] = $i; } $smarty->assign("ThreadValues",$tmp); if($this->avFlagsA){ $smarty->assign("avFlagsAState" , "" ); }else{ $smarty->assign("avFlagsAState" , " disabled " ); } return($display.$smarty->fetch(get_template_path("goVirusServer.tpl",TRUE,dirname(__FILE__)))); } function save() { if(!$this->is_account) return; /* Create Flags */ $this->avFlags = ""; foreach($this->Flags as $flag){ $var = "avFlags".$flag; if($this->$var){ $this->avFlags .=$flag; } } plugin::save(); if(!$this->avFlagsA){ $arr = array("avArchiveMaxFileSize","avArchiveMaxRecursion","avArchiveMaxCompressionRatio"); foreach($arr as $attr){ $this->attrs[$attr] = array(); } $this->attrs['avFlags'] = preg_replace("/E/","",$this->attrs['avFlags']); } /* 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); } if($this->initially_was_account){ $this->handle_post_events("modify"); }else{ $this->handle_post_events("add"); } show_ldap_error($ldap->get_error(), sprintf(_("Saving of server services/anti virus with dn '%s' failed."),$this->dn)); } function check() { $message = plugin::check(); $mustBeNumeric = array( "avMaxDirectoryRecursions" =>_("Maximum directory recursions"), "avMaxThreads" =>_("Maximum threads"), "avArchiveMaxFileSize" =>_("Maximum file size"), "avArchiveMaxRecursion" =>_("Maximum recursions"), "avArchiveMaxCompressionRatio" =>_("Maximum compression ratio"), "avChecksPerDay" =>_("Checks per day")); foreach($mustBeNumeric as $key => $trans){ if(!is_numeric($this->$key)){ $message[] = sprintf(_("The specified value for '%s' must be a numeric value."),$trans); } } foreach(array("avUser"=>_("Database user"),"avHttpProxyURL"=>_("Http proxy URL"),"avDatabaseMirror"=>_("Database mirror")) as $attr => $name){ if(!preg_match("/^[a-z0-9:_\-\.\/]*$/",$this->$attr)){ $message[] = sprintf(_("Please specify a valid value for '%s'."),$name); } } return($message); } function save_object() { if(isset($_POST['goVirusServer'])){ plugin::save_object(); foreach($this->Flags as $flag){ $var = "avFlags".$flag; if($this->acl_is_writeable($var)){ if(isset($_POST[$var])){ $this->$var = TRUE; }else{ $this->$var = FALSE; } } } } } /* For newer service management dialogs */ function getListEntry() { $fields = goService::getListEntry(); $fields['AllowEdit'] = true; $fields['Message'] = _("Anti virus"); return($fields); } /* Return plugin informations for acl handling */ function plInfo() { return (array( "plShortName" => _("Anti virus"), "plDescription" => _("Anti virus")." ("._("Services").")", "plSelfModify" => FALSE, "plDepends" => array(), "plPriority" => 96, "plSection" => array("administration"), "plCategory" => array("server"), "plProvidedAcls"=> array( "start" => _("Start"), "stop" => _("Stop"), "restart" => _("Restart"), "avFlagsD" =>_("Enable debugging"), "avFlagsS" =>_("Enable mail scanning"), "avFlagsA" =>_("Enable scanning of archives"), "avFlagsE" =>_("Block encrypted archives"), "avMaxThreads" =>_("Maximum threads"), "avMaxDirectoryRecursions" =>_("Maximum directory recursions"), "avUser" =>_("Anti virus user"), "avArchiveMaxFileSize" =>_("Maximum file size"), "avArchiveMaxRecursion" =>_("Maximum recursions"), "avArchiveMaxCompressionRatio" =>_("Maximum compression ratio"), "avDatabaseMirror" =>_("Database mirror"), "avChecksPerDay" =>_("Checks per day"), "avHttpProxyURL" =>_("Http proxy URL")) )); } } // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: ?>