From 30a48e224df291cc3e7d2d406c393fdf9a4eb90d Mon Sep 17 00:00:00 2001 From: hickert Date: Tue, 1 Aug 2006 04:04:49 +0000 Subject: [PATCH] Added goVirusServer service git-svn-id: https://oss.gonicus.de/repositories/gosa/branches/2.5@4351 594d385d-05f5-0310-b6e9-bd551577e9d8 --- plugins/admin/systems/class_goSpamServer.inc | 5 +- plugins/admin/systems/class_goVirusServer.inc | 338 ++++++++++++++++++ plugins/admin/systems/goVirusServer.tpl | 112 ++++++ 3 files changed, 453 insertions(+), 2 deletions(-) create mode 100644 plugins/admin/systems/class_goVirusServer.inc create mode 100644 plugins/admin/systems/goVirusServer.tpl diff --git a/plugins/admin/systems/class_goSpamServer.inc b/plugins/admin/systems/class_goSpamServer.inc index e52198d13..055496bf8 100644 --- a/plugins/admin/systems/class_goSpamServer.inc +++ b/plugins/admin/systems/class_goSpamServer.inc @@ -45,7 +45,8 @@ class goSpamServer extends plugin{ $this->ui = get_userinfo(); /* Set up the users ACL's for this 'dn' */ - $this->acl= get_permissions ($this->dn, $this->ui->subtreeACL); + $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){ @@ -181,7 +182,7 @@ class goSpamServer extends plugin{ /* Create divlist */ $DivRules = new divSelectBox("SpamRules"); - $DivRules->SetHeight(150); + $DivRules->SetHeight(130); if(preg_match("/disabled/",chkacl($this->acl,"saTrustedNetworks"))){ $actions = ""; diff --git a/plugins/admin/systems/class_goVirusServer.inc b/plugins/admin/systems/class_goVirusServer.inc new file mode 100644 index 000000000..ee4bb64e3 --- /dev/null +++ b/plugins/admin/systems/class_goVirusServer.inc @@ -0,0 +1,338 @@ +DisplayName = _("Anti virus"); + + /* Get userinfo & acls */ + $this->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, "goVirusServer", $this->ui->dn); + + /* Get Flags */ + foreach($this->Flags as $flag){ + $var = "avFlags".$flag; + if(preg_match("/".$flag."/",$this->avFlags)){ + $this->$var = TRUE; + } + } + } + + + function execute() + { + /* Do we need to flip is_account state? */ + if (isset($_POST['modify_state'])) { + $this->is_account = !$this->is_account; + } + + /* Show tab dialog headers */ + if ($this->is_account) { + /* call Add Acoount to add account */ + $display = $this->show_header(_("Remove anti virus extension"), + _("This server has anti virus features enabled. You can disable them by clicking below.")); + } else { + /* call remove Account */ + $display = $this->show_header(_("Add anti virus service"), + _("This server has anti virus features disabled. You can enable them by clicking below.")); + return ($display); + } + + /* Assign smarty vars */ + $smarty = get_smarty(); + 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 = "avFlags".$Flag; + $smarty->assign("avFlags".$Flag."ACL",chkacl($this->acl,$Flag)); + if($this->$var){ + $smarty->assign("avFlags".$Flag."CHK"," checked " ); + }else{ + $smarty->assign("avFlags".$Flag."CHK",""); + } + } + + return($display.$smarty->fetch(get_template_path("goVirusServer.tpl",TRUE,dirname(__FILE__)))); + } + + + /* Add $post to list of configured trusted */ + function AddTrust($post) + { + if(!empty($post)){ + $this->TrustedNetworks[$post] = $post; + } + } + + + /* Delete trusted network */ + function DelTrust($posts) + { + foreach($posts as $post){ + if(isset($this->TrustedNetworks[$post])){ + unset($this->TrustedNetworks[$post]); + } + } + } + + + /* remove this extension */ + function remove_from_parent() + { + if(!$this->is_account && $this->initially_was_account){ + plugin::remove_from_parent(); + + /* 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/anti virus with dn '%s' failed."),$this->dn)); + $this->handle_post_events("remove"); + } + } + + + 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(); + + print_a($this->attrs); + + /* 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(); + return($message); + } + + + function save_object() + { + if(isset($_POST['goVirusServer'])){ + plugin::save_object(); + foreach($this->Flags as $flag){ + $var = "avFlags".$flag; + if(isset($_POST[$var])){ + $this->$var = TRUE; + }else{ + $this->$var = FALSE; + } + } + } + } + + + /* Return plugin informations for acl handling + function plInfo() + { + return (array( + "plShortName" => _("Anti virus"), + "plDescription" => _("Anti virus service"), + "plSelfModify" => FALSE, + "plDepends" => array(), + "plPriority" => 0, + "plSection" => array("administration"), + "plCategory" => array("server"), + "plProvidedAcls"=> array( + + + "avFlagsD" =>_("Enable debugging"), + "avFlagsS" =>_("Enable mail scanning"), + "avFlagsA" =>_("Enable scanning of archives"), + "avFlagsE" =>_("Block encrypted archives"), + + "avMaxThreads" =>_("Maximum threads"), +// "avMaxDirectoryRecursions" =>_(""), +// "avUser" =>_(""), + "avArchiveMaxFileSize" =>_("Maximum file size"), + "avArchiveMaxRecursion" =>_("Maximum recursions"), + "avArchiveMaxCompressionRatio" =>_("Maximum compression ratio"), + "avDatabaseMirror" =>_("Database mirror"), + "avChecksPerDay" =>_("Checks per day"), + "avHttpProxyURL" =>_("Http proxy URL")) + )); + } + */ + + /* For newer service management dialogs */ + /*function getListEntry() + { + $this->updateStatusState(); + $flag = $this->StatusFlag; + $fields['Status'] = $this->$flag; + $fields['Message'] = _("Anti virus"); + $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/anti virus with dn '%s' failed."),$this->dn)); + $this->action_hook(); + } + } + + + */ + +} +// vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler: +?> diff --git a/plugins/admin/systems/goVirusServer.tpl b/plugins/admin/systems/goVirusServer.tpl new file mode 100644 index 000000000..f5a6fd9af --- /dev/null +++ b/plugins/admin/systems/goVirusServer.tpl @@ -0,0 +1,112 @@ + + + + + + + + + + + + + +
+

{t}Generic virus filtering{/t}

+ + + + + + + + + + + + + + + + + +
+ {t}Maximum threads{/t} + + +
+ {t}Database mirror{/t} + + +
+ {t}Checks per day{/t} + + +
+ {t}Http proxy URL{/t} + + +
+ +
+ + + + + + + + + + + +
+ + {t}Enable debugging{/t} +
+ + {t}Enable mail scanning{/t} +
+ + {t}Enable scanning of archives{/t} +
+
+

 

+
+

{t}Archive scanning{/t}

+ + + + + + + + + +
{t}Maximum file size{/t} + + +
{t}Maximum recursion{/t} + + +
+ +
+ + + + + + + + +
{t}Maximum compression ratio{/t} + + +
+ + {t}Block encrypted archives{/t} +
+ +
+ -- 2.30.2