X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_systemManagement.inc;h=3f376951e09d57f4f79ce32096734a66a163ab26;hb=14a1125842be8515bd8b8f7117081e00f40470b5;hp=10df0550f8322a226860ed97a9891ca8f68d603b;hpb=e7a9785c01a72325e6a618ad9e30f2e8e6b347f5;p=gosa.git diff --git a/plugins/admin/systems/class_systemManagement.inc b/plugins/admin/systems/class_systemManagement.inc index 10df0550f..3f376951e 100644 --- a/plugins/admin/systems/class_systemManagement.inc +++ b/plugins/admin/systems/class_systemManagement.inc @@ -83,6 +83,9 @@ class systems extends plugin }elseif(preg_match("/user_setpwd_.*/i",$key)){ $s_action="change_pw"; $s_entry = preg_replace("/user_setpwd_/i","",$key); + }elseif(preg_match("/gen_cd_.*/i",$key)){ + $s_action="gen_cd"; + $s_entry = preg_replace("/gen_cd_/i","",$key); }elseif(preg_match("/newsystem_.*/i",$key)){ $s_action="newsystem"; $s_entry = preg_replace("/newsystem_/i","",$key); @@ -219,6 +222,91 @@ class systems extends plugin } } + /******************** + Create FAI CD ... + ********************/ + if ($s_action=="gen_cd"){ + $this->dn= $this->terminals[$s_entry]['dn']; + $_SESSION['objectinfo']= $this->dn; + return ($smarty->fetch(get_template_path('gencd.tpl', TRUE))); + } + + /* Start CD-Creation */ + if (isset($_POST["cd_create"])){ + $smarty->assign("src", "?plug=".$_GET['plug']."&PerformIsoCreation"); + return ($smarty->fetch(get_template_path('gencd_frame.tpl', TRUE))); + } + + if ($this->dn != "" && isset($_GET['PerformIsoCreation'])){ + + $return_button = "
+ + +
"; + + $dsc = array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w")); + + /* Get and check command */ + $command= search_config($this->config->data['TABS'], "workgeneric", "ISOCMD"); + if (check_command($command)){ + @DEBUG (DEBUG_SHELL, __LINE__, __FUNCTION__, __FILE__, $command, "Execute"); + + /* Print out html introduction */ + echo ' + + + + + + + +
';
+
+        /* Open process handle and check if it is a valid process */
+        $process= proc_open($command." '".$this->dn."'", $dsc, $pipes);
+        if (is_resource($process)) {
+          fclose($pipes[0]);
+
+          /* Print out returned lines && write JS to scroll down each line */
+          while (!feof($pipes[1])){
+            $cur_dat = fgets($pipes[1], 1024);
+            echo $cur_dat;
+            echo '' ;
+            flush();
+          }
+        }
+    
+        /* Get error string && close streams */
+        $buffer = "";
+        while (!feof($pipes[2])){
+          $buffer .= fgets($pipes[2],256);
+        }
+      
+        fclose($pipes[1]);
+        fclose($pipes[2]);
+        echo "
"; + + /* Check return code */ + $ret= proc_close($process); + if ($ret != 0){ + echo "

"._("Creating the image failed. Please see the report below.")."

"; + echo "
$buffer
"; + } + + echo $return_button."
"; + + } else { + $tmp= "

".sprintf(_("Command '%s', specified for ISO creation doesn't seem to exist."), $command)."

"; + echo $tmp; + } + + /* Scroll down completly */ + echo '' ; + echo ''; + flush(); + exit; + } + /******************** Change password ... @@ -402,10 +490,10 @@ class systems extends plugin $found = false; /* Set gotoMode to active if we there was an ogroup selected . (save_object_directly) */ - foreach(array("workgeneric","servgeneric") as $tab){ + foreach(array("workgeneric"=>"active","servgeneric"=>"active","termgeneric"=>"graphic") as $tab => $value){ if(isset($this->systab->by_object[$tab]->gotoMode)) { $found = true; - $this->systab->by_object[$tab]->gotoMode = "active"; + $this->systab->by_object[$tab]->gotoMode = $value; } } if(!$found){ @@ -417,7 +505,7 @@ class systems extends plugin if (count($message) == 0){ /* Save terminal data to ldap */ - if(isset($_SESSION['SelectedSystemType']['ogroup'])){ + if(isset($_SESSION['SelectedSystemType']['ogroup']) && $_SESSION['SelectedSystemType']['ogroup'] != 'none'){ foreach (array("workservice", "termservice") as $cls){ if (isset($this->systab->by_object[$cls])){ $this->systab->by_object[$cls]->gotoXMouseport= ""; @@ -568,7 +656,7 @@ class systems extends plugin $responsible= array(); foreach ($this->config->departments as $key => $value){ if (get_module_permission(get_permissions ($value, $this->ui->subtreeACL), - "terminal", $value) == "#all#"){ + "systems", $value) != ""){ $responsible[$key]= $value; } } @@ -593,7 +681,7 @@ class systems extends plugin /* This array represents the combination between checkboxes and search filters */ $objs = array( "ShowServers" => array("CLASS" => "goServer" ,"TREE" => "ou=servers,ou=systems," ), - "ShowTerminals" => array("CLASS" => "goHard" ,"TREE" => "ou=terminals,ou=systems,"), + "ShowTerminals" => array("CLASS" => "gotoTerminal" ,"TREE" => "ou=terminals,ou=systems,"), "ShowPrinters" => array("CLASS" => "gotoPrinter" ,"TREE" => "ou=printers,ou=systems," ), "ShowDevices" => array("CLASS" => "ieee802Device" ,"TREE" => "ou=netdevices,ou=systems," ), "ShowPhones" => array("CLASS" => "goFonHardware" ,"TREE" => "ou=phones,ou=systems," ), @@ -610,14 +698,14 @@ class systems extends plugin if($this->DivListSystem->$checkBox){ if($this->DivListSystem->SubSearch){ if($oc['CLASS'] != ""){ - $filter = "(|(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex.")))"; + $filter = "(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex."))"; $res = array_merge($res,get_list($filter,$this->ui->subtreeACL, $base, array("cn", "description", "macAddress", "objectClass", "sambaDomainName", "FAIstate"), GL_NONE | GL_SUBSEARCH | GL_SIZELIMIT)); } }else{ /* User filter? */ if($oc['CLASS'] != ""){ - $filter = "(|(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex.")))"; + $filter = "(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex."))"; $res = array_merge($res,get_list($filter,$this->ui->subtreeACL, $oc['TREE'].$base, array("cn", "description", "macAddress", "objectClass", "sambaDomainName", "FAIstate"), GL_NONE | GL_SIZELIMIT)); } @@ -654,6 +742,12 @@ class systems extends plugin } } + /* Create a string containing the last part of the department. */ + $dn_name = preg_replace("#^([^/]+/)*#","",convert_department_dn(@LDAP::fix($tmp))); + if(empty($dn_name)){ + $dn_name = "/"; + } + /* Detect type of object and create an entry for $this->terminals */ $terminal = array(); if ((in_array ($tmp, $responsible)) || ($add != "")){ @@ -665,7 +759,7 @@ class systems extends plugin } else { $terminal = $value; $terminal['type'] = "D"; - $terminal['message'] = _("Terminal template for"); + $terminal['message'] = _("Terminal template for")." '".$dn_name."' "; $terminal['location'] = array_search($tmp, $this->config->departments); } } elseif (in_array_ics('gotoWorkstation', $value["objectClass"])){ @@ -677,7 +771,7 @@ class systems extends plugin $terminal = $value; $terminal['type'] = "D"; $terminal['location'] = array_search($tmp, $this->config->departments); - $terminal['message'] = _("Workstation template for"); + $terminal['message'] = _("Workstation template for")." '".$dn_name."' "; } if (isset($value["FAIstate"][0])){ $terminal['type']= $this->getState($terminal['type'], $value["FAIstate"][0]);