X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_systemManagement.inc;h=27a4e6e0f7686aa3b20d9ce46996a0ce0e5543eb;hb=c30fdf675865a86365275ed6fb9f8a0cc06e41af;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..27a4e6e0f 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]);
@@ -806,12 +900,9 @@ class systems extends plugin
$type= 'R'.$type;
break;
case 'install':
- $type= 'Y'.$type;
- break;
case 'sysinfo':
- $type= 'Y'.$type;
- break;
case 'softupdate':
+ case 'scheduledupdate':
$type= 'Y'.$type;
break;
}