*ЋY og)_VXXjbmlӹno5H|&p\ %pKD7),0JF b{LA]ߒ10tկzB7 UT,j@%0S+ {,yeX,vdr .loonD7,uS/iGRiG6 Y!m`ۇ56}ͩǾ*Q7ŦC vH5m$SZ!TzA\{oo6-m/1X'm%>jGu\b+u3T]ԉ:ȵ>alzxA;|BFd6E楔 :W$BnxftYK]Ac0A7K?*/7K2OcRO}Q'L._,DPHtv2gFĽ[mʘRsʆP#]#NNz۰[⢽֢&ⅳ3^hSHR?Kj[qsD|(/Se]k%-ꨈXX2F6QDNc ʡ `q Qƿ\sn-at;6L/gG_Ftnk> E`Y["`{GeP eez{75"Lǔn%vMj\:mN4)VHz5y QӅ#VWB7C>> ;f~8)2\-k}oR3Ll}] WYtΫ BքNUU!cjar\>maXY)wL`m| =9wHC3[ І73rRb*+y$+ӞQk]H}kg .á]]9.wb,9g#% e{C8lfrfFV i l8%X9G7K7{՘ R#٩琀(0%Q,pTn|7Oh5SCn~qODçgYx OUbfoScaЩ_ˁ2cH|{v+OײAͻ1k[e}9|w3׷0M|!]@O:c>< ng}ףAJnzWHo(ЦtxL]ڶ7&!4aOt?ډ+2(,/n*(xg:,7=,'76`Ĕ}? 0aokRL>9ђХڲ^٢˧s$ &w U!=SI~J.8usMFFJg}{\ :-u~={\z^ªCwlÂq}B j$ճ`%rxhT`r@C?Ym5qK1WsIK3DzDfǿ_*0hfp B-6nܙ;u \ye & 䧻=ꋀy"'nuaaWU~rb _[cZCNcK&2L<+jcGm_/i\5Ju[-DLKґC~FZԿoH-!x0'0E*qúAtBԣit8{q3m=Ö{?^i"TMpa>L!qX? J ~#4I-YJF٬X|!΂#)B:>/),|LCu痄ۛlfh`qoKswY\^ 0V1#LƑ;>%yjk3`E=^ZЍ@i}Vl#mjUl ?8R# >)eaQuyYSye psǑ}*TzK#_ yh)%EPs1^&Pm=gTF)Q,wvXd]n}PGl̰OtH>Ϻo`7r>i@+(*|(:{'[L3qe}cWz9Ed7]Y%PQ1HQr4epbL9LˏfSz4Sf 5PI &{wiat 9pCێך>v|P`N QwƊT4|__WXd-(,I`bgh]|p| T1+oη FR/榷SW{¹frJ}ý 3 L{ɀ?օ}.<|Ć}LnmFrGȧEa[}zH,t>]F[2A{vC =[1)2͑#rHxǪ|.d}]2,n CpcAȻ 䡿7S ?W{ůf;DU kr.+)ęu|ZzȱTy";6 o Kx52o"V1\2FH񢎈T.ޒ{;4Ε+i(\;^@:ŧeH4+?[ԈIPsfc>q`BQ 5&So"©_˻lwom(4Fֳх}̥FGWo hy@xyPtH/.)L2*tY@pueeJi`"+ʺ-y>XH]5. z+}((hA[jm?nu!V ,ȵQÔu4\Gwq2?DLM5iq)i{"~`<2N'`y\(6aNoؗDoT?I]|Zo;<<|)|2.SZ#t*".J $:S_6mn|D-3Ώ<8LѰMJzy V5ˀsUIS&?JJ;/-K|fv#ۊKIz4qm"WY}ޭNCKT{PhYrr>F@6g3J7FP+FDW h{60''wOi"o{i{ʶcF+nP.?pqM/?諹د{hH8~3~ N` kѶ|uXM8f޶[}@5dtUO$"[0yzKp~oެP(˖9;0g[99,\)\uc%'WUP5&8{kOB^Fr=f^:L!Î/+{bms47x(h#1Zo['= d4SSNC]HBx].ITI?q@\Z5~Vdh)oG3]>#7/oã8?\&q#m l5m߲d0i5-姁?\ɸ{ b'IeҖQh{isiNG(D}*`JGUKX$c/aܩ{BM+0^|aW0b%kC/[ Iꕽ'ukځԝ3Fӵ᫥9f`-C&JKc7AyMZ?Kכ<5q6Iڮ|:јisZ^ LGȴɬ li_GtTk{ z ?]e> Nxm[c iҞ6V&ʎvs`,Lx?jG0!ߴ xV+ȴ\mI+&֒WAoKܹF|:V̈6.n7ClPZo\ŦY8&"IR[[v |3X2UmW{r0-GW$"DK"*ʥKN({ZR誊(GtYs-炏\bvϮ"-J`%=D]L^ pѾ<"g-)HHi\c8V^Wgwۢ#q ܪj/ĆXUW.-dI'̊2ULF3Vu0R#GykQ7]\N` Qxp dTُc;Qى$vXvJŠ,x\zCl^Z((a7-+"! S,`JS3%pzxqDظuQAM@G0nψ wԵQprTZ*a|\g":c}H(j=9/MS޶fZ_ȲWz[w\Ri> M|/II5S/1jZ!@1*2FŷA6qZ3'd]hRn8f7!`%`.M.f[f3knJ.< (L$jE0;.0h&):&>Oo ԻZ_$zڄY1^9S#|Bƃ !dR4dW*t5h:|O3}@ntb@ 6CnM@v^Ƒ<;vWKR"ވyT2dqT-mM:NYB`XTutC&XʼnTý^Y&zAMP @f@NH@‡#AGŒ( j#&0kPgfd;8$*)5 ͝OMyp^nd!Jt N5ʐzqL̈V5ȒO5R &9WcgBTJpAXTݗjV$^eclzXD 4%=閁Ӻkw_=WN(q~V- %kBEb.vKgf@.Ӥ  ?Qyoиl0vWWey\\0_d)qJC/JHR0z)] `9bQC :$dzȂ`nU!;JZS8ڲv);JwY#w nnLU.v[3n8.Kʀc[7UR/bDMתWXRAHA~ÀS_PQ!Kg-A`lx_} D 7"½ғ$>6:M{5$/ܽXs8`j! > {5p$Q7[-?D]B%749s1ps7c{Xcr?ng2x3C!Qz(tEו؇x͎9b9w5؞ _Z'N v|mxmcx1|(*o-=P~Zf COTr#]a?bo]o nUu^jaL?O{O(繹 ]Znr~B iAS`#Q ]}Kpۙ_砆н4[w4iЀVPR }LE V:jx}k'۾p]3xOAKb41gKF CBV[/}y$d>8%_kkA *2e7DWJ2I>^Vrhި|lAԗvCV".$value_aff." - ServerName syntax error\n"; else $VhostDefine .= "
  • ServerName : ".$value_aff."".$UrlPortVH." - Directory : ".$virtualHost['documentPath'][$i].$ip."
  • \n"; if($value != 'localhost') $VhostDelete .= "
  • ServerName : ".$value."
  • "; $i++; } } if($virtualHost['include_vhosts'] === false && !$errors) { if($automatique) { $httpConfFileContents = file_get_contents($c_apacheConfFile); $httpConfFileContents = preg_replace("~^[ \t]*#[ \t]*(Include[ \t]*conf/extra/httpd-vhosts.conf.*)$~m","$1",$httpConfFileContents,1); $fp = fopen($c_apacheConfFile,'wb'); fwrite($fp,$httpConfFileContents); fclose($fp); $virtualHost = check_virtualhost(); } else { $message[] = '

    '.sprintf($langues['UncommentInclude'],$c_apacheConfFile).'

    '; $errors = true; $errors_auto = true; } } if($virtualHost['vhosts_exist'] === false && !$errors) { if($automatique) { $fp = fopen($c_apacheVhostConfFile,'wb'); fclose($fp); $virtualHost = check_virtualhost(); } else { $message[] = '

    '.sprintf($langues['FileNotExists'],$c_apacheVhostConfFile).'

    '; $errors = true; $errors_auto = true; } } if(in_array("dummy", $virtualHost['ServerNameValid'], true) !== false && !$errors) { if($automatique) { $fp = fopen($c_apacheVhostConfFile,'wb'); fclose($fp); $virtualHost = check_virtualhost(); } else { $message[] = '

    '.sprintf($langues['NotCleaned'],$c_apacheVhostConfFile).'

    '; $errors = true; $errors_auto = true; } } if(empty($virtualHost['FirstServerName']) && !$errors) { if($automatique) { if(substr($wampConf['apacheVersion'],0,3) == '2.2') { $virtual_localhost = <<< EOFLOCAL NameVirtualHost *:{$c_PortToUse} ServerName localhost DocumentRoot "{$wwwDir}" Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Order Deny,Allow Deny from all Allow from localhost ::1 127.0.0.1 EOFLOCAL; } else { $virtual_localhost = <<< EOFLOCAL # ServerName localhost DocumentRoot "{$wwwDir}" Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local EOFLOCAL; } $fp = fopen($c_apacheVhostConfFile,'wb'); fwrite($fp,$virtual_localhost); fclose($fp); $virtualHost = check_virtualhost(); } else { $message[] = '

    '.sprintf($langues['NoVirtualHost'],$c_apacheVhostConfFile).'

    '; $errors = true; $errors_auto = true; } } /* If form submitted */ if (isset($_POST['submit']) && !$errors && isset($_SESSION['passadd']) && isset($_POST['checkadd']) && strip_tags(trim($_POST['checkadd'])) == $_SESSION['passadd']) { // Escape any backslashes used in the path to the file //$c_apacheVhostConfFile = str_replace('\\', '\\\\', $c_apacheVhostConfFile); $vh_name = strip_tags(trim($_POST['vh_name'])); $vh_ip = strip_tags(trim($_POST['vh_ip'])); $vh_port = ''; if(isset($_POST['vh_port_on']) && strip_tags(trim($_POST['vh_port_on'])) == 'on') { $vh_port = strip_tags(trim($_POST['vh_port'])); } $vh_folder = str_replace(array('\\','//'), '/',strip_tags(trim($_POST['vh_folder']))); if(substr($vh_folder,-1) == "/") $vh_folder = substr($vh_folder,0,-1); $vh_folder = strtolower($vh_folder); //3.0.6 - Check / at first character if(substr($vh_folder,0,1) == "/" && substr($vh_folder,0,2) != "//") $vh_folder = "/".$vh_folder; if($virtualHost['FirstServerName'] !== "localhost" && !$errors) { $message[] = '

    '.sprintf($langues['NoFirst'],$c_apacheVhostConfFile).'

    '; $errors = true; } /* Validité du nom de domaine */ clearstatcache(); // added for update 3.1.4 //Check if IDN is needed $vh_nameIDN = idn_to_ascii($vh_name,IDNA_DEFAULT,INTL_IDNA_VARIANT_UTS46); if($vh_nameIDN !== $vh_name) $vh_name = $vh_nameIDN; // IDNA (Punycode) 3.2.3 - improve regex $regexIDNA = '#^([\w-]+://?|www[\.])?xn--[a-z0-9]+[a-z0-9\-\.]*[a-z0-9]+(\.[a-z]{2,7})?$#'; // Not IDNA /^[A-Za-z]+([-.](?![-.])|[A-Za-z0-9]){1,60}[A-Za-z0-9]$/ if(preg_match($regexIDNA,$vh_name,$matchesIDNA) == 0 && preg_match('/^ (?=.*[A-Za-z]) # at least one letter somewhere [A-Za-z0-9]+ # letter or number in first place ([-.](?![-.]) # a . or - not followed by . or - | # or [A-Za-z0-9] # a letter or a number ){0,60} # this, repeated from 0 to 60 times - at least two characters [A-Za-z0-9] # letter or number at the end $/x',$vh_name) == 0) { $message[] = '

    '.sprintf($langues['ServerNameInvalid'],$vh_name).'

    '; $errors = true; } elseif($wampConf['NotVerifyTLD'] == 'off' && substr($vh_name,-4) !== false && (strtolower(substr($vh_name,-4) == '.dev'))) { $message[] = '

    '.sprintf($langues['txtTLDdev'],$vh_name,".dev").'

    '; $errors = true; } elseif((!file_exists($vh_folder) || !is_dir($vh_folder))) { $message[] = '

    '.sprintf($langues['DirNotExists'],$vh_folder).'

    '; $errors = true; } elseif(strtolower($vh_folder) == strtolower($wwwDir)) { $message[] = '

    '.sprintf($langues['NotwwwDir'],$vh_folder).'

    '; $errors = true; } elseif($c_hostsFile_writable !== true) { $message[] = '

    '.sprintf($langues['FileNotWritable'],$c_hostsFile).'

    '; $errors = true; } elseif($wampConf['NotCheckDuplicate'] == 'off' && array_key_exists(strtolower($vh_name), array_change_key_case($virtualHost['ServerName'], CASE_LOWER))) { if(empty($vh_port) || !in_array($vh_port, $authorizedPorts)) { $message[] = '

    '.sprintf($langues['VirtualAlreadyExist'],$vh_name).'

    '; $errors = true; } } $c_UsedIp = '*'; $c_HostIp = '127.0.0.1'; if(!$errors && !empty($vh_ip)) { if($vh_ip == '127.0.0.0' || $vh_ip == '127.0.0.1' ) { $message[] = '

    '.sprintf($langues['VirtualIpAlreadyUsed'],$vh_ip).'

    '; $errors = true; } // Validité IP locale elseif(check_IP($vh_ip) === false) { $message[] = '

    '.sprintf($langues['LocalIpInvalid'],$vh_ip).'

    '; $errors = true; } elseif(in_array($vh_ip, $virtualHost['virtual_ip']) && $wampConf['NotCheckDuplicate'] == 'off') { $message[] = '

    '.sprintf($langues['VirtualIpAlreadyUsed'],$vh_ip).'

    '; $errors = true; } else $c_UsedIp = $c_HostIp = $vh_ip; } if(!$errors && !empty($vh_port)) { if($vh_port == '80' || $vh_port == $c_UsedPort) { $message[] = '

    '.sprintf($langues['VirtualPortExist'],$vh_port).'

    '; $errors = true; } elseif(!in_array($vh_port, $authorizedPorts)) { $message[] = '

    '.sprintf($langues['VirtualPortNotExist'],$vh_port).'

    '; $errors = true; } else { $key = array_search($vh_port, $c_ApacheDefine); $c_PortToUse = '${'.$key.'}'; } } if($errors === false) { /* Préparation du contenu des fichiers */ if(substr($wampConf['apacheVersion'],0,3) == '2.2') { $httpd_vhosts_add = <<< EOFNEWVHOST # ServerName {$vh_name} DocumentRoot "{$vh_folder}" Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Order Deny,Allow Deny from all Allow from localhost ::1 127.0.0.1 EOFNEWVHOST; } else { $httpd_vhosts_add = <<< EOFNEWVHOST # ServerName {$vh_name} DocumentRoot "{$vh_folder}" Options +Indexes +Includes +FollowSymLinks +MultiViews AllowOverride All Require local +dNxM bkZ7y >+5:jl4n="gI+MϿh1űIbj^DW`bn^ "92Ӹn C"ce]րc/5$o)~l\mN n3-*rme0 ^U#Q7N~q,)gDE5'hAHy֯-&`SB*KDXoG^àW>.-i44;T)W$R$-QBSs R 4LWP칍2W2m}ijH j%RѫwTP_tP4(lt|Br!`0dp(0d7*U: 9POIOPd]MPCpU_|uV.FF L=7mt¯ķQ"!aTc"#7[@दGHF[ X !cӢՌYA6z=Ap[:^T{E'' JζHL `Us8FQ+=EOfvYvЪE`޿I؝. =LAk@ @d4&[2.ےY\Qt0+JEP2Iv@mèXј9VI!k+,lJ YK]}`Vh#A>3Ԥo5dYU~5n/*D_~HP H#- ;(=gI&W<]%NM6Qa2Y7Zp L<{eͦ(fusl ƄLAz+LGfr\Z!Ri" ΈbܲGRXdy_n{4I>QJ'!Eh}lM"_ة*6k# $;1n˃Ai;ÞmzU;FX #qRX$=뭁c|uc(%T"3XZbKڠ/['r l 8yX{CS3Y[ii݌ DA}{!ij$*ׯ7/ vQy/A GPqo3/í$+x,M\7ǁ8!<1ґ$@Sȵ4a IOu7{9iyšO>"Y6t@bZaGlq ~㶠efL(燇 H'Mp16zj2,zMOk[Z) :KrcK{dukƗg3.$.I (D죶S"j %oG $5)i|C25lx+޷~$d/eb7%gc?e/GdoMn_]*ﱙ:6e^T YL;K1^ <{Ad,D`W[Y;?IS CX{1h!OpG@6`2^aCp]/d?눿lmǞyţIHP I/e[+r/(Q;cȼJZD4n_X ~縯UG =yIdOI>s܁w13ntHYy =;Q}n\ݯV@lS^Ld?0e9xZw~bJѮUmQ挭u*zo SU+p:r\}gis(NA[k2eex_3wobkFg;Dvt#"I6|[:,Pd3B‡U@Xk Z喡nȷۢ*cYX&Ot +$¢ 's@;Y2Z3P.|@njsǤm%Ta:W ^Q>(wIȋf$0{z j`|@ LKSڒ׬tg-tHSt8!J/24޶h`LH6e&6Fк+ VD|E[]< 0FM˺oV Q*4|y 1t&%遝 0DSj=0[B)J``=|EJUa]]jn^ 8,CۖIu QM h5sw->˸(VMjALq0 H =ojsa!Zܑq]v`y䁚M2D`TYݠN_y!·?4Bm)"o{DA'pQMÎi`\<6=Lit5$fnjx 5y*瓜 wqO[!I yd` H #]s6" 0&I(l !G@Coy,~dM'N8z"(Bk P Ɋ5sk ѓ im&hOʡr.;rt3phhvkH|9o!Pؾ߬=0By G/wRC_q1#l.*O R W1?2bdC#WJf0Ms9g[4-+9C1C#/[0NMEֈˊ!G庇P0]#oq{gn1W~-.ZHI;''dleDk45>4Xwm"~:W>Ceћ?l8dzԙ , )<{o]yɇF?Mk‚')~L~uԤErĻ㈅05Ґ,?֑1%G4-Nw!}./5t ~ hr|z24Ιd{H*VdI0}=sLhw$%G7=zΪoyPybܶ\%[2 qM)ޠZM i[[Y 0؈ ~{xGiʞ$ᚿ˯D\c6£{&Wq X blLdtpQ;+"18{Ώei^2 #k2|uK㞋]v5\lNt$Y?_Zb<&C$-h)HJpZy+@ /)[glq Qv։ 1ZyE;t罍rP9r }#H=Pi/q!߷̻gϤfhk0*%@^DVJ\ ztg/sa#&H*hsPQoP9t ( ދhzM=hL2bɜ~ pJ4~:w(ϊީjh'6vn9.[Sj)snIݣ6iBlS6N(F[.A)m

    1$B3~Hx%!҇j1XHbyVȱm;ά'EVa+R &eP߀ԥ؍1d?,jHO i%.El\lZ)s]l]Dg"Ozl49}hs˙o;Ĵ3nkC3Ab%'ö?|z>W|\WzXՒ7Ioٷ_934#':&=X3Iwb爭Z_^d,1gNJ0=].ka.`ـn|&ͳjlENPU-O U#. M?DRN_^bW}s =8c t6r̻KUjN(%SQ kzTba_p!RJ+Y/Q-~/0%mM`Τꉤ,VYGj&a ?S0!-9T3uRұW_rayo{=}bcU7YC%Ne2ʖ;o)~n Ͳl!Z,ʹ)fkA'8Tdw06}}[u_cSy)U/?0u7Uqdo JB:Tueٰg~֫eXy/&a(Vc쨔5ѐ`P jBas3N傮޼U2l:\;7S NԌwR,̉ CTn:c_n0W6^q̂<ędStgiO-,*`󴗱e4_4VGr*5A#,v:݅z 7p&!edLsuڀ- 8,zݓd:wR|O #ё"Q?38y[BB2b'BVeߦBN>BסY+vG[KWiM ;(@IҾH,6?m2臧ɴZ8peSHp%ހ$,!K7a`؆$r̛ɹr;Rw:З-c!Ez dXGGMv&*W )04 nm5 vn\V*a%+WIWELX&-M_ĆDgF~[ZΉϽ,tei2nW_&#`!.pѬ}]HTa=fܧ}4#5\e}eӫ>@9$vsZ_z2zuaСeHpT5}~c3C>DMp F݂|淄=,-`ӜŎrC q,HCrM"PHjWpHUkв*Zo>)C8/Y$W$46Z=),-nXd53u,.E GWVgLXN9He<I@]dVj.f#  eGNZOIvȔSџo͎Hw=VPt/1AO~p^}Uv=U1,FO{VR^xgf̈Ow1X,Ҫ_ vh{"0)'L7߄q*N41(xwV&D]p`Z MOR9-7C=6r@icA!ﮤy6