Code

0d7cd71592009a3ba93853ef95f56b7c562132cd
[gosa.git] / plugins / admin / systems / class_goVirusServer.inc
1 <?php
3 class govirusserver extends goService{
4         
5   /* This plugin only writes its objectClass */
6   var $objectclasses    = array("goVirusServer");
7   var $attributes       = array("avMaxThreads","avMaxDirectoryRecursions","avUser","avFlags","avArchiveMaxFileSize","avArchiveMaxRecursion",
8                                 "avArchiveMaxCompressionRatio","avDatabaseMirror","avChecksPerDay","avHttpProxyURL");
9   var $StatusFlag       = "avStatus";
10  
11   /* This class can't be assigned twice so it conflicts with itsself */
12   var $conflicts        = array("goVirusServer");
14   var $DisplayName      = "";
15   var $dn               = NULL;
16   var $cn               = "";
17   var $avStatus         = "";
19   var $ui               = NULL;
21   var $Flags            = array("D","S","A","E");
22   
23   var $avFlags          = "DS";
24   var $avFlagsD         = TRUE;
25   var $avFlagsS         = TRUE;
26   var $avFlagsA         = FALSE;
27   var $avFlagsE         = FALSE;
29   var $avMaxThreads                 = 5;
30   var $avMaxDirectoryRecursions     = 4;    
31   var $avArchiveMaxFileSize         = 4000;
32   var $avArchiveMaxRecursion        = 5;
33   var $avArchiveMaxCompressionRatio = 95;
34   var $avChecksPerDay               = 12;
36   var $avUser                       = "";
37   var $avHttpProxyURL               = "";
38   var $avDatabaseMirror             = "";
39   var $view_logged  =FALSE;
41   function govirusserver(&$config,$dn, $parent= NULL)
42   {
43     /* Init class */
44     goService::goService($config,$dn, $parent);
45     $this->DisplayName = _("Anti virus");
47     /* Get userinfo & acls */
48     $this->ui = get_userinfo();
50     /* Get Flags */
51     foreach($this->Flags as $flag){
52       $var = "avFlags".$flag;
53       if(preg_match("/".$flag."/",$this->avFlags)){
54         $this->$var = TRUE;
55       }
56     }
57   }
60   function execute()
61   {
62     $smarty = get_smarty(); 
64     if($this->is_account && !$this->view_logged){
65       $this->view_logged = TRUE;
66       new log("view","server/".get_class($this),$this->dn);
67     }
70     /* Set acls */
71     $tmp = $this->plInfo();
72     foreach($tmp['plProvidedAcls'] as $name => $translation) { 
73       $smarty->assign($name."ACL",$this->getacl($name));
74     }
76     $display = "";
77     $smarty->assign("servtabs",FALSE);
78     $this->is_account = true;
80     /* Assign smarty vars */
81     foreach($this->attributes as $attr){
82       $smarty->assign($attr,$this->$attr);
83     }
85     /* Assign checkbox states */
86     foreach($this->Flags as $Flag){
87       $var = "avFlags".$Flag;
88       if($this->$var){
89         $smarty->assign("avFlags".$Flag."CHK"," checked " );
90       }else{
91         $smarty->assign("avFlags".$Flag."CHK","");
92       }
93     }
95     /* Assign value for max thread select box */
96     $tmp = array();
97     for($i = 1 ; $i <= 20 ; $i ++){
98       $tmp[$i] = $i;
99     }
100     $smarty->assign("ThreadValues",$tmp);
102     if($this->avFlagsA){
103       $smarty->assign("avFlagsAState" , "" );
104     }else{
105       $smarty->assign("avFlagsAState" , " disabled " );
106     }
108     return($display.$smarty->fetch(get_template_path("goVirusServer.tpl",TRUE,dirname(__FILE__))));
109   }
112   function save()
113   {
114     if(!$this->is_account) return;
116     /* Create Flags */     
117     $this->avFlags = "";
118     foreach($this->Flags as $flag){
119       $var = "avFlags".$flag;
120       if($this->$var){
121         $this->avFlags .=$flag;
122       }
123     }
125     plugin::save();
127     if(!$this->avFlagsA){
128       $arr = array("avArchiveMaxFileSize","avArchiveMaxRecursion","avArchiveMaxCompressionRatio");
129       foreach($arr as $attr){
130         $this->attrs[$attr] =  array();
131       }
132       $this->attrs['avFlags'] = preg_replace("/E/","",$this->attrs['avFlags']);
133     }
135     /* Check if this is a new entry ... add/modify */
136     $ldap = $this->config->get_ldap_link();
137     $ldap->cat($this->dn,array("objectClass"));
138     if($ldap->count()){
139       $ldap->cd($this->dn);
140       $ldap->modify($this->attrs);
141     }else{
142       $ldap->cd($this->dn);
143       $ldap->add($this->attrs);
144     }
145     if($this->initially_was_account){
146       $this->handle_post_events("modify");
147       new log("modify","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
148     }else{
149       $this->handle_post_events("add");
150       new log("create","server/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
151     }
153     show_ldap_error($ldap->get_error(), sprintf(_("Saving of server services/anti virus with dn '%s' failed."),$this->dn));
154   }
156   function check()
157   { 
158     $message = plugin::check();
160     $mustBeNumeric = array(
161           "avMaxDirectoryRecursions"     =>_("Maximum directory recursions"),
162           "avMaxThreads"                 =>_("Maximum threads"),
163           "avArchiveMaxFileSize"         =>_("Maximum file size"),
164           "avArchiveMaxRecursion"        =>_("Maximum recursions"),
165           "avArchiveMaxCompressionRatio" =>_("Maximum compression ratio"),
166           "avChecksPerDay"               =>_("Checks per day"));
168     foreach($mustBeNumeric as $key => $trans){
169       if(!is_numeric($this->$key)){
170         $message[] = sprintf(_("The specified value for '%s' must be a numeric value."),$trans);
171       }
172     }
174     foreach(array("avUser"=>_("Database user"),"avHttpProxyURL"=>_("Http proxy URL"),"avDatabaseMirror"=>_("Database mirror")) as $attr => $name){
175       if(!preg_match("/^[a-z0-9:_\-\.\/]*$/",$this->$attr)){
176         $message[] = sprintf(_("Please specify a valid value for '%s'."),$name);
177       }
178     }
179   
180     return($message);
181   }
182   
184   function save_object()
185   {
186     if(isset($_POST['goVirusServer'])){
187       plugin::save_object();
188       foreach($this->Flags as $flag){
190         $var = "avFlags".$flag;
191         if($this->acl_is_writeable($var)){
192           if(isset($_POST[$var])){
193             $this->$var = TRUE;
194           }else{
195             $this->$var = FALSE;
196           }
197         }
198       }
199     }    
200   }  
201   
203   /* For newer service management dialogs */
204   function getListEntry()
205   {
206     $fields       = goService::getListEntry();
207     $fields['AllowEdit']    = true;
208     $fields['Message']      = _("Anti virus");
209     return($fields);
210   }
213   /* Return plugin informations for acl handling */ 
214   function plInfo()
215   {
216     return (array(
217           "plShortName"   => _("Anti virus"),
218           "plDescription" => _("Anti virus")." ("._("Services").")",
219           "plSelfModify"  => FALSE,
220           "plDepends"     => array(),
221           "plPriority"    => 96,
222           "plSection"     => array("administration"),
223           "plCategory"    => array("server"),
224           "plProvidedAcls"=> array(
226           "start"         => _("Start"),
227           "stop"          => _("Stop"),
228           "restart"       => _("Restart"),
230           "avFlagsD"         =>_("Enable debugging"),
231           "avFlagsS"         =>_("Enable mail scanning"),
232           "avFlagsA"         =>_("Enable scanning of archives"),
233           "avFlagsE"         =>_("Block encrypted archives"),
235           "avMaxThreads"                 =>_("Maximum threads"),
236           "avMaxDirectoryRecursions"     =>_("Maximum directory recursions"),
237           "avUser"                       =>_("Anti virus user"),
238           "avArchiveMaxFileSize"         =>_("Maximum file size"),
239           "avArchiveMaxRecursion"        =>_("Maximum recursions"),
240           "avArchiveMaxCompressionRatio" =>_("Maximum compression ratio"),
241           "avDatabaseMirror"             =>_("Database mirror"),
242           "avChecksPerDay"               =>_("Checks per day"),
243           "avHttpProxyURL"               =>_("Http proxy URL"))
244           ));
245   }
247 // vim:tabstop=2:expandtab:shiftwidth=2:filetype=php:syntax:ruler:
248 ?>