X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-plugins%2Ffai%2Fadmin%2Ffai%2Fclass_faiPartitionTableEntry.inc;h=a5adc2f1c65b6dbe3df9c1e0176be5ebb4387a8c;hb=cb773874cb502bc0f01aeefc43849e0522e1a4d9;hp=d72ec5149f0efcbcc0698ad76d2e50802f288307;hpb=9169b2843e25912293f2c2ef8f96278b52b9fbae;p=gosa.git diff --git a/gosa-plugins/fai/admin/fai/class_faiPartitionTableEntry.inc b/gosa-plugins/fai/admin/fai/class_faiPartitionTableEntry.inc index d72ec5149..a5adc2f1c 100644 --- a/gosa-plugins/fai/admin/fai/class_faiPartitionTableEntry.inc +++ b/gosa-plugins/fai/admin/fai/class_faiPartitionTableEntry.inc @@ -2,11 +2,6 @@ class faiPartitionTableEntry extends plugin { - /* CLI vars */ - var $cli_summary= "Manage server basic objects"; - var $cli_description= "Some longer text\nfor help"; - var $cli_parameters= array("eins" => "Eins ist toll", "zwei" => "Zwei ist noch besser"); - /* attribute list for save action */ var $ignore_account= TRUE; var $attributes = array("DISKcn","DISKdescription"); @@ -19,63 +14,33 @@ class faiPartitionTableEntry extends plugin var $UsedAttrs = array(); var $is_edit = false; var $old_cn = ""; - var $status = "new"; - var $deletePartitions = array(); - - var $FAIstate = ""; + var $parent = null; - function faiPartitionTableEntry (&$config, $dn= NULL,$usedDiskNames=array(),$disk=false) + function faiPartitionTableEntry (&$config, $dn= NULL,&$parent,$disk=false) { plugin::plugin ($config, $dn); $this->UsedAttrs = array("cn","description","FAIpartitionType","FAIpartitionNr","FAIfsType","FAImountPoint","FAIpartitionSize", "FAImountOptions","FAIfsOptions","FAIpartitionFlags"); - /* Default status is new */ - $this->status = "new"; - + $this->parent = $parent; + /* We want to edit an entry */ if($disk){ - /* Set disk status */ - $this->status = $disk['status']; - /* Walk through partitions */ foreach($disk['partitions'] as $name => $values){ - /* If a partition is already marked as delete, attach it to deletePartitions only. */ - if($values['status'] == "delete"){ - unset($disk['partitions'][$name]); - $this->deletePartitions[]=$values; - }else{ + $disk['partitions'][$name]['old_cn']= $disk['partitions'][$name]['cn']; - /* Set status, to know which partition must be deleted from ldap - new : Neu partition entry // save - edited : Update partition entry in ldap - deleted: Remove partition from ldap - */ - - /* If status is not new, set to edit mode. - * New means that this partition currently wasn't saved to ldap. - */ - if($disk['partitions'][$name]['status']!="new"){ - $disk['partitions'][$name]['status']="edited"; - } - - $disk['partitions'][$name]['old_cn']= $disk['partitions'][$name]['cn']; - - /* Assign empty attributes, if attribute is missing */ - foreach($this->UsedAttrs as $attr){ - if(!isset($values[$attr])){ - $disk['partitions'][$name][$attr]=""; - } + /* Assign empty attributes, if attribute is missing */ + foreach($this->UsedAttrs as $attr){ + if(!isset($values[$attr])){ + $disk['partitions'][$name][$attr]=""; } + } - if (preg_match('/^_/', $disk['partitions'][$name]['FAIfsType'])){ - $disk['partitions'][$name]['FAIfsType']= preg_replace('/^_/', '', $disk['partitions'][$name]['FAIfsType']); - $disk['partitions'][$name]['FAIencrypted']= true; - } else { - $disk['partitions'][$name]['FAIencrypted']= false; - } + if (preg_match('/^_/', $disk['partitions'][$name]['FAIfsType'])){ + $disk['partitions'][$name]['FAIfsType']= preg_replace('/^_/', '', $disk['partitions'][$name]['FAIfsType']); } } @@ -117,8 +82,8 @@ class faiPartitionTableEntry extends plugin * The number specifies the index we want to delete */ foreach($_POST as $name => $value){ - if((preg_match("/Delete_.*/",$name)) && $this->acl_is_removeable()){ - $tmp = split("_",$name); + if((preg_match("/Delete_.*/",$name)) && $this->acl_is_removeable() && !preg_match("/freeze/i",$this->FAIstate)){ + $tmp = explode("_",$name); $s_action = "remove"; $s_entry = $tmp[1]; } @@ -128,14 +93,8 @@ class faiPartitionTableEntry extends plugin * We must sort the index again, else we possibly got problems * with partitions order. */ - if($s_action == "remove" && $this->acl_is_removeable()){ - if($this->partitions[$s_entry]['status'] == "edited"){ - $this->deletePartitions[$s_entry]= $this->partitions[$s_entry]; - $this->deletePartitions[$s_entry]['FAIpartitionNr']=$s_entry; - unset($this->partitions[$s_entry]); - }else{ - unset($this->partitions[$s_entry]); - } + if($s_action == "remove" && $this->acl_is_removeable() && !preg_match("/freeze/i",$this->FAIstate)){ + unset($this->partitions[$s_entry]); $tmp= array(); foreach($this->partitions as $part){ $tmp[count($tmp)+1]=$part; @@ -146,13 +105,11 @@ class faiPartitionTableEntry extends plugin /* To add a partitions we only append an empty * array to the already defined partitions. */ - if(isset($_POST['AddPartition']) && $this->acl_is_createable()){ + if(isset($_POST['AddPartition']) && $this->acl_is_createable() && !preg_match("/freeze/i",$this->FAIstate)){ foreach($this->UsedAttrs as $attr){ $tmp[$attr] = ""; } $tmp["old_cn"] = ""; - $tmp["FAIencrypted"] = FALSE; - $tmp['status']="new"; $this->partitions[count($this->partitions)+1]=$tmp; } @@ -166,17 +123,12 @@ class faiPartitionTableEntry extends plugin $tmp = $this->plInfo(); $sacl = ""; foreach($tmp['plProvidedAcls'] as $name => $translated){ - - $acl = $this->getacl($name); - $sacl .= $acl; - if($this->FAIstate == "freezed"){ - $acl = preg_replace("/w/","",$acl); - } + $acl = $this->getacl($name, preg_match("/freeze/i",$this->FAIstate)); $smarty->assign($name."ACL",$acl); } - $smarty->assign("allowSave",$sacl); $smarty->assign("sub_object_is_createable",$this->acl_is_createable()); + $smarty->assign("freeze",preg_match("/freeze/i",$this->FAIstate)); /* Fetch template and show the result */ @@ -201,7 +153,6 @@ class faiPartitionTableEntry extends plugin $str .= ""._("Mount options").""; $str .= ""._("FS option").""; $str .= ""._("Preserve").""; - $str .= ""._("Encrypted").""; $str .= " "; $str .= ""; } @@ -212,112 +163,99 @@ class faiPartitionTableEntry extends plugin * To be able to check the posts later, we append a key to each single postfield. like cn_1 ... cn_2 */ foreach($this->partitions as $key => $part){ - + $dis = ""; if($part['FAIpartitionFlags'] == "preserve"){ $dis = " disabled "; } $disableALL = ""; - if($this->FAIstate =="freeze"){ + if (preg_match("/freeze/", $this->FAIstate)){ $disableALL = " disabled "; } - if($part['status']!="delete"){ - - /* Generate Partition select box - */ - $PartitionType = ""; - if($this->acl_is_writeable("FAIpartitionType")){ - $PartitionType = ""; - }elseif($this->acl_is_readable("FAIpartitionType")){ - $PartitionType = $part['FAIpartitionType']; - } + /* Generate Partition select box + */ + $PartitionType = ""; + if($this->acl_is_writeable("FAIpartitionType")){ + $PartitionType = ""; + }elseif($this->acl_is_readable("FAIpartitionType")){ + $PartitionType = $part['FAIpartitionType']; + } - /* Generate fsType select box - */ - $FAIfsType= ""; - if($this->acl_is_writeable("FAIfsType")){ - $FAIfsType= ""; - }elseif($this->acl_is_readable("FAIfsType")){ - $FAIfsType = $part['FAIfsType']; - } + /* Generate fsType select box + */ + $FAIfsType= ""; + if($this->acl_is_writeable("FAIfsType")){ + $FAIfsType= ""; + }elseif($this->acl_is_readable("FAIfsType")){ + $FAIfsType = $part['FAIfsType']; + } - foreach(array("FAImountPoint","FAIpartitionSize","FAImountOptions","FAIfsOptions") as $attr){ - $$attr = ""; - if($this->acl_is_writeable($attr)){ - $$attr = ""; + foreach(array("FAImountPoint","FAIpartitionSize","FAImountOptions","FAIfsOptions") as $attr){ + $$attr = ""; + if($this->acl_is_writeable($attr)){ + $$attr = ""; - }elseif($this->acl_is_readable($attr)){ - $$attr = $part[$attr]; - } + }elseif($this->acl_is_readable($attr)){ + $$attr = $part[$attr]; } + } - $str .= "\n"; - $str .= "\n".$PartitionType.""; - $str .= "\n".$FAIfsType.""; - $str .= "\n".$FAImountPoint.""; - $str .= "\n".$FAIpartitionSize.""; - $str .= "\n".$FAImountOptions.""; - $str .= "\n".$FAIfsOptions.""; + $str .= "\n"; + $str .= "\n".$PartitionType.""; + $str .= "\n".$FAIfsType.""; + $str .= "\n".$FAImountPoint.""; + $str .= "\n".$FAIpartitionSize.""; + $str .= "\n".$FAImountOptions.""; + $str .= "\n".$FAIfsOptions.""; - $changeState = "onClick=\"changeState('FAImountPoint_".$key."') ; ". - "changeState('FAIpartitionSize_".$key."') ; ". - "changeState('FAImountOptions_".$key."') ; ". - "changeState('FAIfsType_".$key."') ; ". - "changeState('FAIfsOptions_".$key."') ; \""; - - if($this->acl_is_writeable("FAIpartitionFlags")){ - if($part['FAIpartitionFlags']!=false){ - $str .= "\n"; - }else{ - $str .= "\n"; - } - if($part['FAIencrypted']!=false){ - $str .= "\n"; - }else{ - $str .= "\n"; - } + $changeState = "onClick=\"changeState('FAImountPoint_".$key."') ; ". + "changeState('FAIpartitionSize_".$key."') ; ". + "changeState('FAImountOptions_".$key."') ; ". + "changeState('FAIfsType_".$key."') ; ". + "changeState('FAIfsOptions_".$key."') ; \""; + + if($this->acl_is_writeable("FAIpartitionFlags")){ + if($part['FAIpartitionFlags']!=false){ + $str .= "\n"; }else{ - if($part['FAIpartitionFlags']!=false){ - $str .= ""._("False").""; - }else{ - $str .= ""._("True").""; - } - if($part['FAIencrypted']!=false){ - $str .= ""._("False").""; - }else{ - $str .= ""._("True").""; - } + $str .= "\n"; } - if($this->acl_is_removeable()){ - $str .= "\n"; + }else{ + if($part['FAIpartitionFlags']!=false){ + $str .= ""._("False").""; }else{ - $str .= "\n"; + $str .= ""._("True").""; } - $str .= "\n"; } + if($this->acl_is_removeable()){ + $str .= "\n"; + }else{ + $str .= "\n"; + } + $str .= "\n"; } - + if(!empty($str)){ $str = "".$str."
"; } @@ -332,28 +270,19 @@ class faiPartitionTableEntry extends plugin /* Attach partitions */ foreach($this->partitions as $key=>$val) { - if (isset($this->partitions[$key]['FAIencrypted']) && $this->partitions[$key]['FAIencrypted']){ - unset ($this->partitions[$key]['FAIencrypted']); - $this->partitions[$key]['FAIfsType']= "_".$this->partitions[$key]['FAIfsType']; - } $this->partitions[$key]['FAIpartitionNr']=$key; - } - - /* Attach deleted */ - foreach($this->deletePartitions as $key=>$val) { - $this->partitions[$key."-delete"]=$val; - $this->partitions[$key."-delete"]['status']="delete"; + $this->partitions[$key]['cn']=$key; } $tmp['description'] = $this->DISKdescription; $tmp['partitions'] = $this->partitions; - $tmp['status'] = $this->status; /* If hdd name has changed, tell partitionTable to rename it */ if(($this->is_edit)&&($this->old_cn != $this->DISKcn)){ $tmp['rename']['from'] = $this->old_cn; $tmp['rename']['to'] = $this->DISKcn; } + $tmp['FAIdiskType'] = "old"; return($tmp); } @@ -361,7 +290,7 @@ class faiPartitionTableEntry extends plugin /* Save data to object */ function save_object() { - if((isset($_POST['TableEntryFrameSubmitted'])) && ($this->FAIstate != "freeze") ){ + if((isset($_POST['TableEntryFrameSubmitted'])) && !preg_match("/freeze/", $this->FAIstate) ){ plugin::save_object(); foreach($this->partitions as $key => $part){ @@ -377,15 +306,6 @@ class faiPartitionTableEntry extends plugin } } - if($this->acl_is_writeable("FAIencrypted")){ - - if(isset($_POST["FAIencrypted_".$key])){ - $this->partitions[$key]["FAIencrypted"] = $_POST["FAIencrypted_".$key]; - }else{ - $this->partitions[$key]["FAIencrypted"] = false; - } - } - /* Adapt ext3 to have -j option */ if ($this->partitions[$key]["FAIfsType"] == "ext3") { $this->partitions[$key]["FAIfsOptions"]= preg_replace('/\s*-j\s*/', '', $this->partitions[$key]["FAIfsOptions"]); @@ -404,8 +324,16 @@ class faiPartitionTableEntry extends plugin $message= plugin::check(); /* Check for an empty disk name */ - if(empty($this->DISKcn)){ - $message[] = _("Please specify a valid disc name."); + $d = trim($this->DISKcn); + if($d == "" ){ + $message[] = msgPool::required(_("Name")); + } + if(preg_match("/[^a-z0-9_\-]/i",$d)){ + $message[] = msgPool::invalid(_("Name"),$d,"/[a-z0-9_\-]/i"); + } + + if($this->old_cn != $this->DISKcn && in_array($this->DISKcn,$this->parent->getUsedDiskNames())){ + $message[] = msgPool::duplicated(_("Name")); } /* check every partition. @@ -433,7 +361,7 @@ class faiPartitionTableEntry extends plugin if($part['FAIfsType']!="swap" && $part['FAImountPoint'] != "-"){ if((empty($part['FAImountPoint']))||(!((preg_match("/^\/.*/",$part['FAImountPoint']))||(preg_match("/^swap$/",$part['FAImountPoint']))))){ - $message[]=sprintf(_("Please enter a valid mount point for partition %s." ),($key)); + $message[]= msgPool::invalid(sprintf(_("partition %s mount point"),$key)); } } if($part['FAIfsType'] == "swap"){ @@ -445,27 +373,27 @@ class faiPartitionTableEntry extends plugin $message[]=_("Please use 'swap' as mount point, if 'swap' is used as fs-type."); } - $tmp = split("-",$part['FAIpartitionSize']); + $tmp = explode("-",$part['FAIpartitionSize']); switch (count($tmp)){ case 0: - $message[]= sprintf(_("Please enter a valid partition size for partition %s."),($key)); + $message[]= msgPool::invalid(sprintf(_("partition %s size"),$key)); break; case 1: - if (!tests::is_id(is_id($tmp[0])) &&(!empty($tmp[1]))){ - $message[]= sprintf(_("Please enter a valid partition size for partition %s."),($key)); + if (!tests::is_id($tmp[0]) &&(!empty($tmp[1]))){ + $message[]= msgPool::invalid(sprintf(_("partition %s size"),$key)); } break; case 2: - if((!tests::is_id($tmp[0]))&&(!tests::is_id($tmp[1])) &&(!empty($tmp[1]))){ - $message[]=sprintf(_("Please enter a valid range for partition %s."),($key)); - }elseif($tmp[0]>=$tmp[1]){ - $message[]=sprintf(_("Please enter a valid range for partition %s."),($key)); + if( !tests::is_id($tmp[0]) && !tests::is_id($tmp[1]) && !empty($tmp[1]) ){ + $message[]= msgPool::invalid(sprintf(_("partition %s size"),$key)); + }elseif(!empty($tmp[1]) && $tmp[0]>=$tmp[1]){ + $message[]= msgPool::invalid(sprintf(_("partition %s size"),$key)); } break; default: - $message[]=sprintf(_("Please enter a range for partition size for partition %s."),($key)); + $message[]= msgPool::invalid(sprintf(_("partition %s size"),$key)); } foreach($this->UsedAttrs as $attrs){ @@ -509,7 +437,6 @@ class faiPartitionTableEntry extends plugin "FAIpartitionSize" => _("Partition size"), "FAImountOptions" => _("Mount options"), "FAIfsOptions" => _("File system options"), - "FAIencrypted" => _("File system encryption"), "FAIpartitionFlags" => _("Partition flags")) )); }