X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=gosa-plugins%2Fgoto%2Fadmin%2Fsystems%2Fgoto%2Fclass_workstationStartup.inc;h=fc29543b07e6e34eb6ff4f57dfb75e50cec0f1b2;hb=a06c47716e539f260a3d19f5d8bb36dc80bf0e2d;hp=f8b151bebe47e93e90c7586ec96577f84a05a99b;hpb=ddc921fea45dcdd907f1a4f1a2436ae6dbebd6c1;p=gosa.git
diff --git a/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc b/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc
index f8b151beb..fc29543b0 100644
--- a/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc
+++ b/gosa-plugins/goto/admin/systems/goto/class_workstationStartup.inc
@@ -35,8 +35,8 @@ class workstartup extends plugin
/* FAI class selection */
var $FAIclass = array(); // The currently selected classes
- var $FAIrelease = "";
- var $FAIdebianMirror = "auto";
+ var $FAIrelease = "";
+ var $FAIdebianMirror = "auto";
var $si_active = FALSE;
var $si_fai_action_failed = FALSE;
@@ -102,7 +102,9 @@ class workstartup extends plugin
foreach($this->attrs['gotoLdapServer'] as $value){
$this->gotoLdapServers[] = preg_replace("/^[0-9]*:/","",$value);
}
- }
+ }
+ natcasesort($this->gotoLdapServerList);
+
if(!count($this->gotoLdapServers) && $this->member_of_ogroup){
$this->gotoLdap_inherit = TRUE;
}
@@ -261,35 +263,35 @@ class workstartup extends plugin
}
}
- /* Get list of boot kernels */
- if (isset($this->config->data['TABS'])){
- $command= $this->config->search(get_class($this), "KERNELS",array('tabs'));
- if (!check_command($command)){
- $message[]= sprintf(_("Command '%s', specified as KERNELS hook for plugin '%s' doesn't seem to exist."), $command,
- get_class($this));
- } else {
- $fh= popen($command, "r");
- while (!feof($fh)) {
- $buffer= trim(fgets($fh, 256));
- if(!empty($buffer)){
- $name=$value = $buffer;
- if(preg_match("/:/",$buffer)){
- $name = preg_replace("/:.*$/","",$buffer);
- $value= preg_replace("/^.*:/","",$buffer);
- $this->gotoBootKernels[$name]= $name.":".$value;
- }else{
- $this->gotoBootKernels[$name]= $value;
- }
- }
- }
- pclose($fh);
- }
- }
-
- /* Turn to default, if we've nothing to inherit */
- if (!isset($this->gotoBootKernels['default-inherited']) && $this->gotoBootKernel == "default-inherited"){
- $this->gotoBootKernel= "default";
- }
+# /* Get list of boot kernels */
+# if (isset($this->config->data['TABS'])){
+# $command= $this->config->search(get_class($this), "KERNELS",array('tabs'));
+# if (!check_command($command)){
+# $message[]= sprintf(_("Command '%s', specified as KERNELS hook for plugin '%s' doesn't seem to exist."), $command,
+# get_class($this));
+# } else {
+# $fh= popen($command, "r");
+# while (!feof($fh)) {
+# $buffer= trim(fgets($fh, 256));
+# if(!empty($buffer)){
+# $name=$value = $buffer;
+# if(preg_match("/:/",$buffer)){
+# $name = preg_replace("/:.*$/","",$buffer);
+# $value= preg_replace("/^.*:/","",$buffer);
+# $this->gotoBootKernels[$name]= $name.":".$value;
+# }else{
+# $this->gotoBootKernels[$name]= $value;
+# }
+# }
+# }
+# pclose($fh);
+# }
+# }
+#
+# /* Turn to default, if we've nothing to inherit */
+# if (!isset($this->gotoBootKernels['default-inherited']) && $this->gotoBootKernel == "default-inherited"){
+# $this->gotoBootKernel= "default";
+# }
}
@@ -329,7 +331,7 @@ class workstartup extends plugin
/* Do we represent a valid terminal? */
if (!$this->is_account && $this->parent === NULL){
- $display= "
".
+ $display= "
".
msgPool::noValidExtension(_("workstation"))."";
return ($display);
}
@@ -369,7 +371,7 @@ class workstartup extends plugin
}
if((isset($this->FAIclassInfo[$_POST['FAIclassesSel']]['FAIpartitionTable']))&&($found>0)){
- msg_dialog(_("Error"), _("There is already a profile containing a partition table in your configuration!") , ERROR_DIALOG);
+ msg_dialog::display(_("Error"), _("There is already a profile containing a partition table in your configuration!") , ERROR_DIALOG);
}else{
$this->FAIclass[$_POST['FAIclassesSel']]=$_POST['FAIclassesSel'];
}
@@ -477,7 +479,7 @@ class workstartup extends plugin
if((isset($_POST['gotoShareAdd'])) && ($this->acl_is_writeable("gotoShare"))) {
/* We assign a share to this user, if we don't know where to mount the share */
if((!isset($_POST['gotoShareMountPoint']))||(empty($_POST['gotoShareMountPoint']))||(preg_match("/[\|]/i",$_POST['gotoShareMountPoint']))){
- msg_dialog(_("Error"), msgPool::required(_("Mount point")), ERROR_DIALOG);
+ msg_dialog::display(_("Error"), msgPool::required(_("Mount point")), ERROR_DIALOG);
}else{
if(count($this->gotoAvailableShares)){
$a_share = $this->gotoAvailableShares[$_POST['gotoShareSelection']];
@@ -556,7 +558,7 @@ class workstartup extends plugin
}
/* Convert old style entry */
- if (!preg_match('%:ldap://%', $server)){
+ if (!preg_match('%:ldaps?://%', $server)){
$server= "ldap://".preg_replace('/^([^:]+):/', '\1/', $server);
/* Beautify new style entries */
@@ -567,9 +569,9 @@ class workstartup extends plugin
$SelectBoxLdapServer->AddEntry(
array(array("string" => $server),
array("string" =>
- " ".
- " ".
- "",
+ " ".
+ " ".
+ "",
"attach" => "style='text-align:right;width:40px;border-right:0px;'")));
}
@@ -584,7 +586,7 @@ class workstartup extends plugin
if(!in_array($entry,$this->gotoLdapServers)){
/* Convert old style entry */
- if (!preg_match('%:ldap://%', $entry)){
+ if (!preg_match('%:ldap[s]*://%', $entry)){
$entry= "ldap://".preg_replace('/^([^:]+):/', '\1/', $entry);
/* Beautify new style entries */
@@ -623,13 +625,23 @@ class workstartup extends plugin
$smarty->assign("FAIrelease" , $this->FAIrelease);
$smarty->assign("FAIclasses" , $this->selectable_classes());
+ /* Get classes for release from cache.
+ * Or build cache
+ */
+ if($this->FAIdebianMirror == "inherited"){
+ $release = $this->InheritedFAIrelease;
+ }else{
+ $release = $this->FAIrelease;
+ }
+
+ $smarty->assign("gotoBootKernels",$this->cache['KERNELS'][$release]);
$smarty->assign("InheritedFAIrelease",$this->InheritedFAIrelease);
$div = new divSelectBox("WSFAIscriptClasses");
$div -> SetHeight("110");
- $str_up = " ";
- $str_down = " ";
- $str_remove = " ";
+ $str_up = " ";
+ $str_down = " ";
+ $str_remove = " ";
$str_empty = "
";
/* Get classes */
@@ -870,19 +882,7 @@ class workstartup extends plugin
}
}
- /* Check if LDAP server has changed */
- $ldap_changed= false;
- if (isset($this->saved_attributes['gotoLdapServer'])){
- if (isset($this->attrs['gotoLdapServer']) && $this->attrs['gotoLdapServer'] != $this->saved_attributes['gotoLdapServer']){
- $ldap_changed= true;
- }
- } else {
- if (isset($this->attrs['gotoLdapServer'])){
- $ldap_changed= true;
- }
- }
-
- if (($this->attrs['gotoBootKernel'] == "default-inherited") || ($this->attrs['gotoBootKernel'] == "%default%")){
+ if ($this->attrs['gotoBootKernel'] == "default-inherited"){
$this->attrs['gotoBootKernel']= array();
}
@@ -906,8 +906,13 @@ class workstartup extends plugin
$this->attrs['FAIclass'] = array();
$this->attrs['FAIdebianMirror'] = array();
}
- }
+ }else{
+ /* Don't touch FAI objects if something went wrong with the si daemon.
+ */
+ if(isset($this->attrs['FAIclass'])) unset($this->attrs['FAIclass']);
+ if(isset($this->attrs['FAIdebianMirror'])) unset($this->attrs['FAIdebianMirror']);
+ }
/* prepare share settings */
$tmp = array();
@@ -917,7 +922,6 @@ class workstartup extends plugin
$tmp[] = $settings['server']."|".$name."|".$settings['mountPoint'];
}
$this->attrs['gotoShare']=$tmp;
-
$this->cleanup();
$ldap->modify ($this->attrs);
new log("modify","workstation/".get_class($this),$this->dn,array_keys($this->attrs),$ldap->get_error());
@@ -928,7 +932,7 @@ class workstartup extends plugin
$this->handle_post_events("modify");
/* Check if LDAP server has changed */
- if ($ldap_changed && class_available("DaemonEvent")){
+ if ((isset($this->attrs['gotoLdapServer']) && class_available("DaemonEvent")) || $this->gotoLdap_inherit){
$events = DaemonEvent::get_event_types(SYSTEM_EVENT | HIDDEN_EVENT);
$o_queue = new gosaSupportDaemon();
if(isset($events['TRIGGERED']['DaemonEvent_reload_ldap_config'])){
@@ -955,6 +959,14 @@ class workstartup extends plugin
if(!empty($mac)){
$macs[] = $mac;
}
+ }elseif(isset($this->parent->by_object['servgeneric']->netConfigDNS->macAddress)){
+
+ /* We are a server. Add current mac.
+ */
+ $mac = $this->parent->by_object['servgeneric']->netConfigDNS->macAddress;
+ if(!empty($mac)){
+ $macs[] = $mac;
+ }
}
/* Trigger event for all member objects
@@ -1077,10 +1089,13 @@ class workstartup extends plugin
function update_fai_cache($first_call = FALSE)
{
$force = FALSE;
- $this->si_fai_action_failed = FALSE;
if(!$this->si_active) return;
$start = microtime(TRUE);
+ if($this->si_fai_action_failed && !isset($_POST['fai_si_retry'])) return;
+
+ $this->si_fai_action_failed = FALSE;
+
/* Get the list of available servers and their releases.
*/
if($force || !isset($this->cache['SERVERS'])){
@@ -1184,7 +1199,22 @@ class workstartup extends plugin
}
}
}
-# echo sprintf("Took %.6f
",microtime(1) - $start);
+
+ /* Get list of available kernel for this release
+ */
+ if($force || !isset($this->cache['KERNELS'][$release])){
+ $o_queue = new gosaSupportDaemon();
+ $tmp = $o_queue->FAI_get_kernels($release);
+ $this->cache['KERNELS'][$release] = array();
+ foreach($this->gotoBootKernels as $name => $default){
+ $this->cache['KERNELS'][$release][$name] = $default;
+ }
+ foreach($tmp as $kernel){
+ if(empty($kernel)) continue;
+ $this->cache['KERNELS'][$release][$kernel]=$kernel;
+ }
+ }
+ ksort($this->cache['KERNELS'][$release]);
}
@@ -1295,9 +1325,9 @@ class workstartup extends plugin
$res = shell_exec($cmd);
$res2 = trim($res);
if((!$res)){
- msg_dialog(_("Configuration error"), msgPool::cmdexecfailed("REPOSITORY_HOOK", $cmd), ERROR_DIALOG);
+ msg_dialog::display(_("Configuration error"), msgPool::cmdexecfailed("REPOSITORY_HOOK", $cmd), ERROR_DIALOG);
}elseif(empty($res2)){
- msg_dialog(_("Configuration error"), _("REPOSITORY_HOOK returned no result!"), ERROR_DIALOG);
+ msg_dialog::display(_("Configuration error"), _("REPOSITORY_HOOK returned no result!"), ERROR_DIALOG);
}else{
$tmp = split("\n",$res);
foreach($tmp as $line){