X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=plugins%2Fadmin%2Ffai%2Fclass_faiPackage.inc;h=e98f721e431ccb79c58dc616c9e22bde87661b0f;hb=6cb5be59b017449b99265b7ab8dead4eeab15b19;hp=6eb8a52c5a26c06da0e4e8f31f45c74e9876bc24;hpb=97d6b4fdc5cae264c2a49a4c3886d01a1cdb3237;p=gosa.git diff --git a/plugins/admin/fai/class_faiPackage.inc b/plugins/admin/fai/class_faiPackage.inc index 6eb8a52c5..e98f721e4 100644 --- a/plugins/admin/fai/class_faiPackage.inc +++ b/plugins/admin/fai/class_faiPackage.inc @@ -11,7 +11,7 @@ class faiPackage extends plugin var $ignore_account = TRUE; /* Attributes for this Object */ - var $attributes = array("cn","description","FAIpackage","FAIdebianRelease","FAIdebianSection","FAIdebianMirror"); + var $attributes = array("cn","description","FAIpackage","FAIdebianRelease","FAIdebianSection", "FAIinstallMethod"); /* ObjectClasses for this Object*/ var $objectclasses = array("top","FAIclass","FAIpackageList","FAIrepository"); @@ -38,7 +38,7 @@ class faiPackage extends plugin var $FAIdebianRelease = ""; // The selected release var $FAIdebianSection = ""; // selected section - var $FAIdebianMirror = ""; // selected mirror + var $FAIinstallMethod = "aptitude"; // hard coded var $mirror = ""; // selected mirror var $servers = array(); // All available servers @@ -79,23 +79,25 @@ class faiPackage extends plugin $ldap = $this->config->get_ldap_link(); foreach($this->usedPackages as $name){ - $ldap->search("(&(objectClass=FAIdebconfInfo)(FAIpackage=".$name."))"); + $ldap->search("(&(objectClass=FAIdebconfInfo)(FAIpackage=".$name."))",array("FAIvariable","FAIvariableType","FAIvariableContent","FAIpackage","FAIdebianSection","")); while($attr = $ldap->fetch()){ $tmp =array(); $tmp['Name'] = $attr['FAIvariable'][0]; $tmp['Type'] = $attr['FAIvariableType'][0]; - if(!in_array($attr['FAIvariableType'],array("multiselect"))){ - $tmp['Value'] = $attr['FAIvariableContent'][0]; - }else{ - $content = array(); - unset($attr['FAIvariableContent']['count']); - foreach($attr['FAIvariableContent'] as $attr){ - $tmp['Value'][] = $attr; + if (isset($attr['FAIvariableContent'][0])){ + if(!in_array($attr['FAIvariableType'],array("multiselect"))){ + $tmp['Value'] = $attr['FAIvariableContent'][0]; + }else{ + $content = array(); + unset($attr['FAIvariableContent']['count']); + foreach($attr['FAIvariableContent'] as $attr){ + $tmp['Value'][] = $attr; + } } + $this->ConfiguredPackages[$attr['FAIpackage'][0]][$attr['FAIvariable'][0]]=$tmp; } - $this->ConfiguredPackages[$attr['FAIpackage'][0]][$attr['FAIvariable'][0]]=$tmp; } } @@ -114,9 +116,6 @@ class faiPackage extends plugin } $this->confDir = CONFIG_DIR."/fai/"; $this->FAIpackage = array(); - - /* Extract mirror location */ - $this->mirror= preg_replace("!^[^/]+//([^/]+).*$!", '$1', $this->FAIdebianMirror); } function execute() @@ -129,8 +128,6 @@ class faiPackage extends plugin $smarty= get_smarty(); $display= ""; - $this->genMirror(); - /* Check if we exist already - no need to ask for revisions, etc. then */ if ($this->dn != "new"){ $this->newDialogShown= true; @@ -143,23 +140,16 @@ class faiPackage extends plugin $this->is_dialog =true; } - /* alert possible missconfigurations */ - if((count($this->releases)==0)||(count($this->servers)==0)||(count($this->sections)==0)){ - print_red(_("There is no useable package list defined.")); - } - /* Assign posible changes, for mirror combinations */ $this->dialog->save_object(); - $this->dialog->releases = $this->releases; - $this->dialog->servers = $this->servers; - $this->dialog->sections = $this->sections; - $this->dialog->mirrors = $this->mirrors; /* Assign Repository settings*/ if(isset($_POST['SaveObjectNew'])){ - $this->FAIdebianRelease = $this->dialog->FAIdebianRelease; - $this->FAIdebianSection = $this->dialog->FAIdebianSection; - $this->FAIdebianMirror = $this->dialog->FAIdebianMirror; + $obj = $this->dialog->save(); + + $this->FAIdebianSection = $obj['FAIdebianSection']; + $this->FAIdebianRelease = $obj['FAIdebianRelease']; + unset($this->dialog); $this->dialog = false; $this->is_dialog=false; @@ -178,27 +168,6 @@ class faiPackage extends plugin $smarty->assign($attrs,$this->$attrs); } - /* Set mirror if changed */ - if((isset($_POST['FAIdebianMirrorS']))&&(!empty($_POST['FAIdebianMirrorS']))){ - $this->FAIdebianMirror = $_POST['FAIdebianMirrorS']; - } - - /* check servers matching release and section settings */ - $availableServer = array(); - foreach($this->mirrors as $mir){ - if($mir['release'] == $this->FAIdebianRelease){ - $pass = true; - foreach($this->FAIdebianSection as $sec){ - if($sec != $mir['section']){ - $pass = false; - } - if($pass){ - $availableServer[$mir['mirror']]=$mir['mirror']; - } - } - } - } - /* Generate package list */ $this->list=$this->genPkgs(); @@ -210,7 +179,11 @@ class faiPackage extends plugin /* Delte selected package */ if(isset($_POST['Delpkg'])){ - unset($this->usedPackages[$_POST['usedPackages']]); + foreach($_POST['usedPackages'] as $del){ + if(isset($this->usedPackages[$del])){ + unset($this->usedPackages[$del]); + } + } } /* Abort package selection dialog */ @@ -237,13 +210,15 @@ class faiPackage extends plugin /* Configuration dialog open*/ if((isset($_POST['Conpkg']))&&(isset($_POST['usedPackages']))&&(!empty($_POST['usedPackages']))){ - $path = "/etc/gosa/fai/".preg_replace("#^[^/]+//([^/]+).*$#","\\1",$this->FAIdebianMirror)."/".$this->FAIdebianRelease."/".$sec; + $path = "/etc/gosa/fai/".$this->FAIdebianRelease."/debconf.d"; $pkg_config = array(); - if(isset($this->ConfiguredPackages[$_POST['usedPackages']])){ - $pkg_config = $this->ConfiguredPackages[$_POST['usedPackages']]; + $pkg = $_POST['usedPackages'][0]; + + if(isset($this->ConfiguredPackages[$pkg])){ + $pkg_config = $this->ConfiguredPackages[$pkg]; } - $this->dialog = new faiPackageConfiguration($this->config, $this->dn,$_POST['usedPackages'], $path, $pkg_config); + $this->dialog = new faiPackageConfiguration($this->config, $this->dn,$pkg, $path, $pkg_config); $this->is_dialog =true; } @@ -272,12 +247,7 @@ class faiPackage extends plugin } $smarty->assign("OptionsACL",""); - if(empty($this->FAIdebianMirror)){ - $smarty->assign("OptionsACL"," disabled "); - } - $smarty->assign("mirrors" ,$availableServer); - $smarty->assign("mirror" ,$this->FAIdebianMirror); $smarty->assign("releases",$this->releases); $smarty->assign("release" ,$this->FAIdebianRelease); $smarty->assign("sections",$this->sections); @@ -287,60 +257,6 @@ class faiPackage extends plugin return($display); } - function genMirror(){ - $confDir = $this->confDir; - if(!is_readable($confDir)){ - print_red(sprintf(_("Can't read configuration folder '%s'."),$confDir)); - }else{ - - /* Try to catch all available mirrors - Possibly check if each server is reachable - */ - - $this->servers= array(); - $this->releases=array(); - $this->sections=array(); - $this->mirrors= array(); - $fd = opendir($confDir); - while($mirror = readdir($fd)){ - if((is_dir($confDir.$mirror."/"))&&(($mirror != "." )&&($mirror!=".."))){ - - $mirrorDir = $confDir.$mirror."/"; - - $fe = opendir($mirrorDir); - while($release = readdir($fe)){ - if((is_dir($mirrorDir.$release))&&(($release != "." )&&($release!=".."))){ - - $releaseDir = $mirrorDir.$release."/"; - - $ff = opendir($releaseDir); - while($section = readdir($ff)){ - if((is_file($releaseDir.$section))&&(($section != "." )&&($section!="..")&&(!preg_match("/.*\.in$/",$section)))){ - - $this->servers[$mirror]=$mirror; - $this->releases[$release]=$release; - $this->sections[$section]=$section; - - $arr=array(); - $arr['mirror'] = $mirror; - $arr['release']= $release; - $arr['section']= $section; - - $this->mirrors[] = $arr ; - } - } - fclose($ff); - } - } - fclose($fe); - } - } - fclose($fd); - } - - - } - /* Delete me, and all my subtrees */ function remove_from_parent() @@ -375,7 +291,7 @@ class faiPackage extends plugin $message[]=_("Please select a least one Package."); } - if((empty($this->FAIdebianRelease))||(empty($this->FAIdebianSection))||(empty($this->FAIdebianMirror))){ + if((empty($this->FAIdebianRelease))||(empty($this->FAIdebianSection))){ $message[]=_("Please choose a valid combination for your repository setup."); } @@ -418,11 +334,10 @@ class faiPackage extends plugin $this->buffer=array(); $a_ret = array(); foreach($this->FAIdebianSection as $sec){ - $strID= "/etc/gosa/fai/".preg_replace("#^[^/]+//([^/]+).*$#","\\1",$this->FAIdebianMirror)."/".$this->FAIdebianRelease."/".$sec; + $strID= "/etc/gosa/fai/".$this->FAIdebianRelease."/".$sec; if(!is_file($strID)){ print_red(sprintf(_("Package file '%s' does not exist."),$strID)); - $this->FAIdebianMirror=""; unset($this->buffer); return(array()); } @@ -465,6 +380,8 @@ class faiPackage extends plugin $this->attrs['FAIdebianSection'][] = $sec; } + $this->attrs["FAIinstallMethod"]= "aptitude"; + $ldap->cat($this->dn); if($ldap->count()!=0){ /* Write FAIscript to ldap*/