Code

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