Code

- Added ssh plugin
[gosa.git] / plugins / admin / systems / class_systemManagement.inc
index a039c2ecca8e3ef1f5715b2cb9340b44c47e326c..27a4e6e0f7686aa3b20d9ce46996a0ce0e5543eb 100644 (file)
@@ -226,66 +226,88 @@ class systems extends plugin
       Create FAI CD ...   
      ********************/
     if ($s_action=="gen_cd"){
-echo "ACL CHECK!";
       $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"])){
-echo "ACL CHECK!";
-      $smarty->assign("src", "?plug=".$_GET['plug']."&PerformIsoCreation");
+      $smarty->assign("src", "?plug=".$_GET['plug']."&PerformIsoCreation");
       return ($smarty->fetch(get_template_path('gencd_frame.tpl', TRUE)));
     }
-
+  
     if ($this->dn != "" && isset($_GET['PerformIsoCreation'])){
-echo "ACL CHECK!";
 
+      $return_button   = "<form method='get' action='main.php' target='_parent'>
+                            <input type='submit' value='"._("Back")."'>
+                            <input type='hidden' name='plug' value='".$_GET['plug']."'/>
+                          </form>";
+
+      $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");
 
-        $dsc= array(0 => array("pipe", "r"), 1 => array("pipe", "w"), 2 => array("pipe", "w"));
-        echo "<html><head>";
-        echo "<script language=\"javascript\" src=\"include/focus.js\" type=\"text/javascript\"></script>";
-        echo "</head>";
-        echo "<body onLoad='scrollDown()'><pre>";
-        $process= proc_open($command, $dsc, $pipes, '/tmp');
+        /* Print out html introduction */
+        echo '  <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
+                <html>
+                  <head>
+                    <title></title>
+                    <style type="text/css">@import url("themes/default/style.css");</style>
+                    <script language="javascript" src="include/focus.js" type="text/javascript"></script>
+                  </head>
+                  <body style="background: none; margin:4px;" id="body" >
+                  <pre>';
+
+        /* 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])){
-            echo fgets($pipes[1], 1024);
+            $cur_dat = fgets($pipes[1], 1024);
+            echo $cur_dat;
+            echo '<script language="javascript" type="text/javascript">scrollDown2();</script>' ;
             flush();
           }
         }
-        $buffer= stream_get_contents($pipes[2]);
+    
+        /* Get error string && close streams */
+        $buffer = "";
+        while (!feof($pipes[2])){
+          $buffer .= fgets($pipes[2],256);
+        }
+      
         fclose($pipes[1]);
         fclose($pipes[2]);
-        $ret= proc_close($process);
         echo "</pre>";
-        
-        if ($ret == 0){
-          echo "hier der runterladen button";
-        } else {
+      
+        /* Check return code */ 
+        $ret= proc_close($process);
+        if ($ret != 0){
           echo "<h1 style='color:red'>"._("Creating the image failed. Please see the report below.")."</h1>";
           echo "<pre style='color:red'>$buffer</pre>";
         }
 
+        echo $return_button."<br>";
+
       } else {
         $tmp= "<h1 style='color:red'>".sprintf(_("Command '%s', specified for ISO creation doesn't seem to exist."), $command)."</h1>";
         echo $tmp;
       }
 
-      echo "<button onClick='clearTimeout(timeout)'>"._("Disable auto scroll")."</button>";
-      echo "</body></html>";
-
+      /* Scroll down completly */
+      echo '<script language="javascript" type="text/javascript">scrollDown2();</script>' ;
+      echo '</body></html>';
+      flush();
       exit;
     }
 
 
-
     /********************
       Change password ...   
      ********************/
@@ -634,7 +656,7 @@ echo "ACL CHECK!";
     $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;
       }
     }
@@ -676,14 +698,14 @@ echo "ACL CHECK!";
       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));
           }
@@ -720,6 +742,12 @@ echo "ACL CHECK!";
         }
       } 
 
+      /* 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 != "")){
@@ -731,7 +759,7 @@ echo "ACL CHECK!";
           } else {
             $terminal             = $value;
             $terminal['type']     = "D";
-            $terminal['message']  = _("Terminal template for");
+            $terminal['message']  = _("Terminal template for")."&nbsp;'".$dn_name."'&nbsp;";
             $terminal['location'] = array_search($tmp, $this->config->departments); 
           }
         } elseif (in_array_ics('gotoWorkstation', $value["objectClass"])){
@@ -743,7 +771,7 @@ echo "ACL CHECK!";
             $terminal             = $value;
             $terminal['type']     = "D";
             $terminal['location'] = array_search($tmp, $this->config->departments);
-            $terminal['message']  = _("Workstation template for");
+            $terminal['message']  = _("Workstation template for")."&nbsp;'".$dn_name."'&nbsp;";
           }
           if (isset($value["FAIstate"][0])){
             $terminal['type']= $this->getState($terminal['type'], $value["FAIstate"][0]);
@@ -872,12 +900,9 @@ echo "ACL CHECK!";
                 $type= 'R'.$type;
                 break;
       case 'install':
-                $type= 'Y'.$type;
-                break;
       case 'sysinfo':
-                $type= 'Y'.$type;
-                break;
       case 'softupdate':
+      case 'scheduledupdate':
                 $type= 'Y'.$type;
                 break;
     }