X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Fsystems%2Fclass_systemManagement.inc;h=ac36a2034057729f02f3d917f9962884c62053dd;hb=9695395f399e680d3fbb0c6b7a2df7d8b37d17c8;hp=9918377e2b1ab44c10ed380f28a120d7ab404516;hpb=b4dd732c45b096d0c4b4c869244d13b36e3eb733;p=gosa.git
diff --git a/plugins/admin/systems/class_systemManagement.inc b/plugins/admin/systems/class_systemManagement.inc
index 9918377e2..ac36a2034 100644
--- a/plugins/admin/systems/class_systemManagement.inc
+++ b/plugins/admin/systems/class_systemManagement.inc
@@ -54,7 +54,7 @@ class systems extends plugin
/* Call parent execute */
plugin::execute();
- $_SESSION['LOCK_VARS_TO_USE'] = array("/^user_edit_/i","/^user_del_/","/^act/","/^id/");
+ $_SESSION['LOCK_VARS_TO_USE'] = array("/^system_edit_/i","/^system_del_/","/^act/","/^id/");
/********************
Check for functional posts, edit|delete|add|... system devices
@@ -67,21 +67,21 @@ class systems extends plugin
/* Test Posts */
foreach($_POST as $key => $val){
// Post for delete
- if(preg_match("/user_del.*/",$key)){
+ if(preg_match("/system_del.*/",$key)){
$s_action = "del";
- $s_entry = preg_replace("/user_".$s_action."_/i","",$key);
+ $s_entry = preg_replace("/system_del_/i","",$key);
// Post for edit
- }elseif(preg_match("/user_edit_.*/",$key)){
+ }elseif(preg_match("/system_edit_.*/",$key)){
$s_action="edit";
- $s_entry = preg_replace("/user_".$s_action."_/i","",$key);
+ $s_entry = preg_replace("/system_edit_/i","",$key);
// Post for new
- }elseif(preg_match("/user_new.*/",$key)){
+ }elseif(preg_match("/system_new.*/",$key)){
$s_action="new";
- }elseif(preg_match("/user_tplnew.*/i",$key)){
+ }elseif(preg_match("/system_tplnew.*/i",$key)){
$s_action="new_tpl";
- }elseif(preg_match("/user_setpwd_.*/i",$key)){
+ }elseif(preg_match("/system_setpwd_.*/i",$key)){
$s_action="change_pw";
- $s_entry = preg_replace("/user_setpwd_/i","",$key);
+ $s_entry = preg_replace("/system_setpwd_/i","",$key);
}elseif(preg_match("/gen_cd_.*/i",$key)){
$s_action="gen_cd";
$s_entry = preg_replace("/gen_cd_/i","",$key);
@@ -121,7 +121,7 @@ class systems extends plugin
return ($smarty->fetch(get_template_path('chooser.tpl', TRUE)));
}
-
+
/********************
Create FAI CD ...
********************/
@@ -132,6 +132,83 @@ class systems extends plugin
}
+ /* Start CD-Creation */
+ if ((isset($_POST["cd_create"])) && !empty($this->dn)){
+ $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= stream_get_contents($pipes[2]);
+
+ 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;
+ }
+
+
/********************
Create new system ...
********************/
@@ -359,7 +436,7 @@ class systems extends plugin
"terminal" => array("CLASS"=>"TERMTABS", "TABCLASS" =>"termtabs", "ACL"=> "terminal/termgeneric"),
"workstation" => array("CLASS"=>"WORKTABS", "TABCLASS" =>"worktabs", "ACL"=> "workstation/workgeneric"),
"server" => array("CLASS"=>"SERVTABS", "TABCLASS" =>"servtabs", "ACL"=> "server/servgeneric"),
- "printer" => array("CLASS"=>"PRINTTABS", "TABCLASS" =>"printtabs", "ACL"=> "printer/printgenric"),
+ "printer" => array("CLASS"=>"PRINTTABS", "TABCLASS" =>"printtabs", "ACL"=> "printer/printgeneric"),
"phone" => array("CLASS"=>"PHONETABS", "TABCLASS" =>"phonetabs", "ACL"=> "phone/phoneGeneric"),
"winstation" => array("CLASS"=>"WINTABS", "TABCLASS" =>"wintabs", "ACL"=> "winworkstation/wingeneric"),
"component" => array("CLASS"=>"COMPONENTTABS","TABCLASS" =>"componenttabs", "ACL"=> "component/componentGeneric"));
@@ -416,7 +493,7 @@ class systems extends plugin
"terminal" => array("CLASS"=>"TERMTABS", "TABCLASS" =>"termtabs", "ACL"=> "terminal/termgeneric"),
"workstation" => array("CLASS"=>"WORKTABS", "TABCLASS" =>"worktabs", "ACL"=> "workstation/workgeneric"),
"server" => array("CLASS"=>"SERVTABS", "TABCLASS" =>"servtabs", "ACL"=> "server/servgeneric"),
- "printer" => array("CLASS"=>"PRINTTABS", "TABCLASS" =>"printtabs", "ACL"=> "printer/printgenric"),
+ "printer" => array("CLASS"=>"PRINTTABS", "TABCLASS" =>"printtabs", "ACL"=> "printer/printgeneric"),
"phone" => array("CLASS"=>"PHONETABS", "TABCLASS" =>"phonetabs", "ACL"=> "phone/phoneGeneric"),
"winstation" => array("CLASS"=>"WINTABS", "TABCLASS" =>"wintabs", "ACL"=> "winworkstation/wingeneric"),
"component" => array("CLASS"=>"COMPONENTTABS","TABCLASS" =>"componenttabs", "ACL"=> "component/componentGeneric"));
@@ -604,8 +681,25 @@ class systems extends plugin
function get_used_snapshot_bases()
{
$tmp = array();
- foreach(array("phones","servers","printers","terminals","netdevices","workstations") as $ent){
- $tmp[] = "ou=".$ent.",ou=systems,".$this->DivListSystem->selectedBase;
+
+ /* Check acls, if we are not allowed to create and write each plugin tab, skip this object */
+
+ $tabs = array(
+ "terminal" => "ou=terminals,ou=systems,",
+ "workstation" => "ou=workstations,ou=systems,",
+ "server" => "ou=servers,ou=systems,",
+ "printer" => "ou=printers,ou=systems,",
+ "phone" => "ou=phones,ou=systems,",
+ "winworkstation" => get_winstations_ou(),
+ "component" => "ou=netdevices,ou=systems,"
+ );
+
+ foreach($tabs as $acl_cat => $dn){
+
+ $acl_all = $this->ui->has_complete_category_acls($dn.$this->DivListSystem->selectedBase,$acl_cat);
+ if(preg_match("/(c.*w|w.*c)/",$acl_all)){
+ $tmp[] = $dn.$this->DivListSystem->selectedBase;
+ }
}
return($tmp);
}
@@ -679,14 +773,23 @@ class systems extends plugin
$userregex = "(gotoLastUser=".$this->DivListSystem->UserRegex.")";
}
+ /* Attributes to fetch */
+ $sys_attrs = array("cn", "description", "macAddress", "objectClass", "sambaDomainName");
+ $sys_categories = array("terminal", "workstation", "server", "phone" ,"printer");
+
+ /* Add FAIstate to attributes if FAI is activated */
+ $tmp = search_config($this->config->data,"faiManagement","CLASS");
+ if(!empty($tmp)){
+ $sys_attrs[] = "FAIstate";
+ }
+
/* Walk through all possible search combinations, and search for some objects if the checkbox is enabled */
foreach($objs as $checkBox => $oc){
if($this->DivListSystem->$checkBox){
if($this->DivListSystem->SubSearch){
if($oc['CLASS'] != ""){
$filter = "(|(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex.")))";
- $new_res = get_list($filter, array("terminal", "workstation", "server", "phone" ,"printer"), $base,
- array("cn", "description", "macAddress", "objectClass", "sambaDomainName", "FAIstate"), GL_NONE | GL_SUBSEARCH | GL_SIZELIMIT);
+ $new_res = get_list($filter, $sys_categories , $base,$sys_attrs, GL_NONE | GL_SUBSEARCH | GL_SIZELIMIT);
/* Remove all objects that are not in the expected sub department */
foreach($new_res as $key => $obj){
@@ -699,8 +802,7 @@ class systems extends plugin
/* User filter? */
if($oc['CLASS'] != ""){
$filter = "(|(&".$userregex."(objectClass=".$oc['CLASS'].")(cn=".$this->DivListSystem->Regex.")))";
- $res = array_merge($res,get_list($filter,array("terminal", "workstation", "server", "phone" ,"printer"),$oc['TREE'].$base,
- array("cn", "description", "macAddress", "objectClass", "sambaDomainName", "FAIstate"), GL_NONE | GL_SIZELIMIT));
+ $res = array_merge($res,get_list($filter,$sys_categories,$oc['TREE'].$base, $sys_attrs, GL_NONE | GL_SIZELIMIT));
}
}
}
@@ -708,8 +810,7 @@ class systems extends plugin
/* Search for incoming objects */
$filter = "(|(&".$userregex."(objectClass=goHard)(cn=".$this->DivListSystem->Regex.")))";
- $res = array_merge($res,get_list($filter,array("terminal", "workstation", "server", "phone" ,"printer"),"ou=incoming,".$base,
- array("cn", "description", "macAddress", "objectClass", "sambaDomainName"), GL_NONE | GL_SIZELIMIT));
+ $res = array_merge($res,get_list($filter,$sys_categories,"ou=incoming,".$base,$sys_attrs, GL_NONE | GL_SIZELIMIT));
/* Get all gotoTerminal's */
foreach ($res as $value){