X-Git-Url: https://git.tokkee.org/?a=blobdiff_plain;f=vhost-apache2%2Fsystems%2Fapache2%2Fclass_servApacheEditVhost.inc;fp=vhost-apache2%2Fsystems%2Fapache2%2Fclass_servApacheEditVhost.inc;h=1b0b61725d81536553b024d773ef41923e661077;hb=d151c184a5d2f251891ebadbde9bc664522516ba;hp=0000000000000000000000000000000000000000;hpb=e7f157ba8e9b2052338570efdf767a6fdde19749;p=gosa.git diff --git a/vhost-apache2/systems/apache2/class_servApacheEditVhost.inc b/vhost-apache2/systems/apache2/class_servApacheEditVhost.inc new file mode 100644 index 000000000..1b0b61725 --- /dev/null +++ b/vhost-apache2/systems/apache2/class_servApacheEditVhost.inc @@ -0,0 +1,454 @@ +OldApacheServerName = ""; + $this->isNew = true; + + $this->InitialApacheServerName = "";//$attrs['InitialApacheServerName']; + }else{ + $this->VhostObject = $attrs; + + $this->OldApacheServerName = $attrs['apacheServerName']; + + $this->InitialApacheServerName = $attrs['InitialApacheServerName']; + + $this->isNew = false; + + foreach($this->attributes as $value){ + if(isset($attrs[$value])){ + $this->$value = $attrs[$value]; + } + } + + if(!isset($attrs['apacheServerAlias'])) $this->apacheServerAlias = array(); + if(!isset($attrs['apacheScriptAlias'])) $this->apacheScriptAlias = array(); + + } + } + + /* Transports the given Arraykey one position up*/ + function ArrayUp($atr,$attrs) + { + $ret = $attrs; + $pos = $atr ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == 1)||($pos >$cn))){ + $before = array_slice($attrs,0,($pos-2)); + $mitte = array_reverse(array_slice($attrs,($pos-2),2)); + $unten = array_slice($attrs,$pos); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + + /* Transports the given Arraykey one position down*/ + function ArrayDown($atr,$attrs) + { + $ret = $attrs; + $pos = $atr ; + $cn = count($attrs); + if(!(($pos == -1)||($pos == $cn))){ + $before = array_slice($attrs,0,($pos-1)); + $mitte = array_reverse(array_slice($attrs,($pos-1),2)); + $unten = array_slice($attrs,($pos+1)); + $ret = array(); + $ret = $this->combineArrays($before,$mitte,$unten); + } + return($ret); + } + + /* Combine new array */ + function combineArrays($ar0,$ar1,$ar2) + { + $ret = array(); + if(is_array($ar0)) + foreach($ar0 as $ar => $a){ + $ret[]=$a; + } + if(is_array($ar1)) + foreach($ar1 as $ar => $a){ + $ret[]=$a; + } + if(is_array($ar2)) + foreach($ar2 as $ar => $a){ + $ret[]=$a; + } + return($ret); + } + + function getpos($atr,$attrs) + { + $i = 0; + foreach($attrs as $attr => $name) { + $i++; + if($attr == $atr){ + return($i); + } + } + return(-1); + } + + + function execute() + { + /* Call parent execute */ + plugin::execute(); + + + /* Fill templating stuff */ + $smarty= get_smarty(); + $display= ""; + + /* Open Vhost Entry Edit Dialog + */ + if(!count($this->VhostObject)){ + $smarty->assign("AllowVhostEdit" , false); + }else{ + $smarty->assign("AllowVhostEdit" , true); + if(isset($_POST['EditVhostEntries'])){ + $this->dialog= new apacheVhostEditEntries($this->config,$this->dn,$this->VhostObject); + } + } + + /* Save Vhost Entry Edit Dialog + */ + if(isset($_POST['SaveVhostEntryChanges'])){ + $this->dialog->save_object(); + if(count($this->dialog->check())){ + $msgs = $this->dialog->check(); + foreach($msgs as $msg){ + print_red($msg); + } + }else{ + $this->dialog->save(); + $this->dialog = false; + } + } + + /* Cancel Vhost Entrie Edit Dialog + */ + if(isset($_POST['CancelVhostEntryChanges'])){ + $this->dialog = false; + } + + /* Display any type of open dialogs + */ + if($this->dialog){ + $this->dialog->save_object(); + return($this->dialog->execute()); + } + + $once =true; + foreach($_POST as $name => $value){ + if((preg_match("/^SAup_/",$name)) && ($once)){ + $once = false; + + $id = preg_replace("/^SAup_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + + $this->apacheServerAlias = $this->ArrayUp(($id+1),$this->apacheServerAlias); + } + if((preg_match("/^SAdown_/",$name)) && ($once)){ + $once = false; + + $id = preg_replace("/^SAdown_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + + $this->apacheServerAlias = $this->ArrayDown(($id+1),$this->apacheServerAlias); + } + if((preg_match("/^SAdel_/",$name)) && ($once)){ + $once = false; + + $id = preg_replace("/^SAdel_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + + unset($this->apacheServerAlias[$id]); + + $tmp =array(); + foreach($this->apacheServerAlias as $entry){ + $tmp[] = $entry; + } + + $this->apacheServerAlias = $tmp; + } + + if((preg_match("/^SCup_/",$name)) && ($once)){ + $once = false; + + $id = preg_replace("/^SCup_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + + $this->apacheScriptAlias = $this->ArrayUp(($id+1),$this->apacheScriptAlias); + } + if((preg_match("/^SCdown_/",$name)) && ($once)){ + $once = false; + + $id = preg_replace("/^SCdown_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + + $this->apacheScriptAlias = $this->ArrayDown(($id+1),$this->apacheScriptAlias); + } + if((preg_match("/^SCdel_/",$name)) && ($once)){ + $once = false; + + $id = preg_replace("/^SCdel_/","",$name); + $id = preg_replace("/_.*$/","",$id); + $id = base64_decode($id); + + unset($this->apacheScriptAlias[$id]); + + $tmp =array(); + foreach($this->apacheScriptAlias as $entry){ + $tmp[] = $entry; + } + + $this->apacheScriptAlias = $tmp; + } + + } + + if((isset($_POST['AddSARecord'])) && (!empty($_POST['StrSAAlias'])) && (!empty($_POST['StrSADir']))){ + $this->apacheServerAlias[] = trim($_POST['StrSAAlias']." ".$_POST['StrSADir']); + } + + if((isset($_POST['AddSCRecord'])) && (!empty($_POST['StrSCAlias'])) && (!empty($_POST['StrSCDir']))){ + $this->apacheScriptAlias[] = trim($_POST['StrSCAlias']." ".$_POST['StrSCDir']); + } + + /* Handle Post events */ + $once = true; + foreach($_POST as $name => $value){ + + /* Delete vhosts if requested */ + if((preg_match("/RemoveRecord_/",$name))&&($once)){ + $once = false; + $id= preg_replace("/RemoveRecord_/","",$name); + unset($this->Records[$id]); + } + } + + /* Add new Vhostrecord */ + /* if(isset($_POST['AddNewRecord'])){ + $this->Records[] = array("type"=>"aRecord","value"=>""); + }*/ + + /* Fill in values */ + foreach($this->attributes as $name){ + $smarty->assign($name,$this->$name); + } + + /* Set apacheServerNames without server suffix */ + $smarty->assign("apacheServerName",$this->apacheServerName); + + $div = new DivSelectBox("apacheServerAlias"); + $div->setHeight(120); + $recs = $this->apacheServerAlias; + + $oneup = " "; + $onedown = " "; + $onedel = " + "; + foreach($recs as $key => $rec){ + $div ->AddEntry(array( + array("string"=>$rec), +/* array("string"=>$key, + "attach"=>"style='width:20px;'"),*/ + array("string"=>str_replace("%s",base64_encode($key),$oneup.$onedown.$onedel), + "attach"=>"style='width:70px;border-right:0px;'") + )); + } + + $smarty->assign("NotNew", false); + + $smarty->assign("apacheServerAlias", $div->DrawList()); + + $div = new DivSelectBox("apacheScriptAlias"); + $div->setHeight(120); + $recs = $this->apacheScriptAlias; + + $oneup = " "; + $onedown = " "; + $onedel = " + "; + + foreach($recs as $key => $rec){ + $div ->AddEntry(array( + array("string"=>$rec), +/* array("string"=>$key, + "attach"=>"style='width:20px;'"),*/ + array("string"=>str_replace("%s",base64_encode($key),$oneup.$onedown.$onedel), + "attach"=>"style='width:70px;border-right:0px;'") + )); + } + + $smarty->assign("NotNew", false); + + $smarty->assign("apacheScriptAlias", $div->DrawList()); + + /* Display template */ + $display.= $smarty->fetch(get_template_path('servApacheVhostEdit.tpl', TRUE)); + return($display); + } + + function remove_from_parent() + { + } + + /* Save data to object */ + function save_object() + { + //plugin::save_object(); + foreach($this->attributes as $attr){ + if(isset($_POST[$attr])){ + $this->$attr = $_POST[$attr]; + } + } + + } + + + /* Check supplied data */ + function check() + { + /* Call common method to give check the hook */ + $message= plugin::check(); + + /* Check if apacheServerName is already in use */ + $usedVhosts = $this->getUsedServerNames(); + if(($this->isNew == true)||($this->apacheServerName != $this->InitialApacheServerName)){ +/* if((isset($usedVhosts[$this->apacheServerName]))&&($this->apacheServerName != $this->InitialApacheServerName)){ + $message[] =_("This apacheServerName is already in use"); + } +*/ + } + + if(!GetVhostsDomain($this->apacheServerName) || empty($this->apacheServerName)){ + $message[] =sprintf(_("Please choose a valid Virtual Host Name.")); + } + + if(!is_path($this->apacheDocumentRoot) || empty($this->apacheDocumentRoot)){ + $message[] = _("Please choose a valid Path as Virtual Host Document Root."); + } + + if(!is_email($this->apacheServerAdmin) || empty($this->apacheServerAdmin)){ + $message[] = _("Please choose a valid Email Account as Admin Mail address."); + } + + if($this->apacheServerName != strtolower($this->apacheServerName)){ + $message[] = _("Only lowercase strings are allowed as Virtual Host Name."); + } + + if($this->apacheDocumentRoot != strtolower($this->apacheDocumentRoot)){ + $message[] = _("Only lowercase strings are allowed as Virtual Host Document Root."); + } + + if($this->apacheServerAdmin != strtolower($this->apacheServerAdmin)){ + $message[] = _("Only lowercase strings are allowed as Admin Mail address."); + } + + foreach($this->apacheServerAlias as $key => $line){ + $apacheServerAlias_ar=split(" ",$line); + $url=$apacheServerAlias_ar[0]; + if(!is_path($url)){ + $message[] = sprintf(_("Please choose a valid Path as URL Alias Path in line: %s"),$line); + } + } + + foreach($this->apacheScriptAlias as $key => $line){ + $apacheScriptAlias_ar=split(" ",$line); + $url=$apacheScriptAlias_ar[0]; + if(!is_path($url)){ + $message[] = sprintf(_("Please choose a valid Path as URL Alias Path in line: %s"),$line); + } + } + + return ($message); + } + + /* This funtion returns all used apacheServerNames */ + function getUsedServerNames() + { + $ret = array(); + $ldap = $this->config->get_ldap_link(); + $ldap->cd($this->config->current['BASE']); + $ldap->search("(&(objectClass=apacheConfig)(apacheServerName=*))",array("apacheServerName")); + while($attr = $ldap->fetch()){ + $ret[$attr['apacheServerName'][0]]=""; + } + return($ret); + } + + /* Save to LDAP */ + function save() + { + $ret =array(); + foreach($this->attributes as $name){ + $ret[$name] = $this->$name; + } + + /* Create SA records + */ + foreach($this->apacheServerAlias as $key => $rec){ + $rec['value']= $key." ".$rec['value']; + $this->Records [] = $rec; + } + + /* Create SC records + */ + foreach($this->apacheScriptAlias as $key => $rec){ + $rec['value']= $key." ".$rec['value']; + $this->Records [] = $rec; + } + + $ret['RECORDS'] = $this->Records; + + $ret['InitialApacheServerName'] = $this->InitialApacheServerName; + + return($ret); + } + +} + +?>