[Alba-desarrollo] SVN Alba r3975 - in prosistem/alba/trunk/installer: . dist/install

commits en pressenter.com.ar commits en pressenter.com.ar
Mie Ene 3 15:41:01 CET 2007


Author: josx
Date: 2007-01-03 11:41:00 -0300 (Wed, 03 Jan 2007)
New Revision: 3975

Added:
   prosistem/alba/trunk/installer/dist/install/alba_loader.txt
Modified:
   prosistem/alba/trunk/installer/HEADER.html
Log:
Agregue el alba_loader.txt para resolver el problema de la conf de apache que interpreta los .php.XXX 

Modified: prosistem/alba/trunk/installer/HEADER.html
===================================================================
--- prosistem/alba/trunk/installer/HEADER.html	2006-12-29 21:31:12 UTC (rev 3974)
+++ prosistem/alba/trunk/installer/HEADER.html	2007-01-03 14:41:00 UTC (rev 3975)
@@ -4,9 +4,9 @@
 Instalacion del Sistema ALBA
 ----------------------------
     
-Para instalar de forma automatica el sistema, descargue el programa de instalacion
-de <a href="dist/install/alba_loader.php.txt">dist/install/alba_loader.php.txt</a>.
-Luego debe subirlo al directorio web de su sitio (dejando como extension .php) 
+Para instalar de forma autom&aacute;tica el sistema, descargue el programa de instalacion
+de <a href="dist/install/alba_loader.txt">dist/install/alba_loader.txt</a>.
+Luego debe subirlo al directorio web de su sitio (renombrandolo con extension .php) 
 y llamar al loader con la url:
     
     http://su_servidor/alba_loader.php

Added: prosistem/alba/trunk/installer/dist/install/alba_loader.txt
===================================================================
--- prosistem/alba/trunk/installer/dist/install/alba_loader.txt	2006-12-29 21:31:12 UTC (rev 3974)
+++ prosistem/alba/trunk/installer/dist/install/alba_loader.txt	2007-01-03 14:41:00 UTC (rev 3975)
@@ -0,0 +1,511 @@
+<?php
+
+	#
+	# SPIP_LOADER recupere et installe la version stable de SPIP
+	#
+
+	######################### CONFIGURATION #
+	#
+	# URL du paquet de la version STABLE a telecharger
+    
+	#define('_URL_PAQUET_ZIP','http://prosistem.opensa.com.ar:3334/~ftoledo/alba-installer/dist/alba-dist.zip');
+	define('_URL_PAQUET_ZIP','http://www.proyectoalba.com.ar/alba-installer/dist/alba-dist.zip');
+
+	# Adresse des librairies necessaires a spip_loader
+	# (pclzip et fichiers de langue)
+	#define('_URL_LOADER_DL',"http://prosistem.opensa.com.ar:3334/~ftoledo/alba-installer/dist/install/");
+	define('_URL_LOADER_DL',"http://www.proyectoalba.com.ar/alba-installer/dist/install/");
+
+	# telecharger a travers un proxy
+	define('_URL_LOADER_PROXY', '');
+
+	# surcharger le script
+	define('_NOM_PAQUET_ZIP','ALBA');
+	define('_SPIP_LOADER_URL_RETOUR', "index.php");
+	define('_SPIP_LOADER_SCRIPT', "alba_loader.php");
+	#
+	#######################################################################
+
+	# langues disponibles
+	$langues = array (
+		'en' => 'English',
+		'es' => 'Espa&ntilde;ol',
+		'pt_br' => 'Portugu&#234;s do Brasil',
+	);
+
+	//
+	// Traduction des textes de SPIP
+	//
+	function _TT($code, $args=array()) {
+		global $lang;
+		$code = str_replace('tradloader:', '', $code);
+		$text = $GLOBALS['i18n_tradloader_'.$lang][$code];
+		while (list($name, $value) = @each($args))
+			$text = str_replace ("@$name@", $value, $text);
+		return $text;
+	}
+
+	//
+	// Ecrire un fichier de maniere un peu sure
+	//
+	function ecrire_fichierT ($fichier, $contenu) {
+
+		$fp = @fopen($fichier, 'wb');
+		$s = @fputs($fp, $contenu, $a = strlen($contenu));
+
+		$ok = ($s == $a);
+
+		@fclose($fp);
+
+		if (!$ok) {
+			@unlink($fichier);
+		}
+
+		return $ok;
+	}
+
+	function regler_langue_navigateurT() {
+		$accept_langs = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
+		if (is_array($accept_langs)) {
+			foreach($accept_langs as $s) {
+				if (eregi('^([a-z]{2,3})(-[a-z]{2,3})?(;q=[0-9.]+)?$', trim($s), $r)) {
+					$lang = strtolower($r[1]);
+					if (isset($GLOBALS['langues'][$lang])) return $lang;
+				}
+			}
+		}
+		return false;
+	}
+
+	function menu_languesT($lang) {
+		global $dir_base;
+		$r = '<div style="float:'.$GLOBALS['spip_lang_right'].';">';
+		$r .= '<form action="'.$dir_base._SPIP_LOADER_SCRIPT.'" method="get">';
+		if(preg_match(',action=([a-z_]+),', _SPIP_LOADER_SCRIPT, $m)) {
+			$r .= "<input type='hidden' name='action' value='".$m[1]."' />";
+			$sep = '&amp;';
+		}
+		else
+			$sep = '?';
+		$r .= '<select name="lang"
+			onchange="window.location=\''.$dir_base._SPIP_LOADER_SCRIPT.$sep.'lang=\'+this.value;">';
+		
+		foreach ($GLOBALS['langues'] as $l => $nom)
+			$r .= '<option value="'.$l.'"' . ($l == $lang ? ' selected' : '')
+				. '>'.$nom.'</option>';
+		$r .= '</select> <noscript><input type="submit" name="ok" value="ok" /></noscript></form>';
+		$r .= '</div>';
+		return $r;
+	}
+
+
+	//
+	// Gestion des droits d'acces
+	//
+	function tester_repertoire() {
+		global $chmod;
+		
+		$ok = false;
+		$self = basename($_SERVER['PHP_SELF']);
+		$uid = @fileowner('.');
+		$uid2 = @fileowner($self);
+		$gid = @filegroup('.');
+		$gid2 = @filegroup($self);
+		$perms = @fileperms($self);
+
+		// Comparer l'appartenance d'un fichier cree par PHP
+		// avec celle du script et du repertoire courant
+		@rmdir('test');
+		@unlink('test'); // effacer au cas ou
+		@touch('test');
+		if ($uid > 0 && $uid == $uid2 && @fileowner('test') == $uid)
+			$chmod = 0700;
+		else if ($gid > 0 && $gid == $gid2 && @filegroup('test') == $gid)
+			$chmod = 0770;
+		else
+			$chmod = 0777;
+		// Appliquer de plus les droits d'acces du script
+		if ($perms > 0) {
+			$perms = ($perms & 0777) | (($perms & 0444) >> 2);
+			$chmod |= $perms;
+		}
+		@unlink('test');
+
+		// Verifier que les valeurs sont correctes
+
+		@mkdir('test', $chmod);
+		@chmod('test', $chmod);
+		$f = @fopen('test/test.php', 'w');
+		if ($f) {
+			@fputs($f, '<'.'?php $ok = true; ?'.'>');
+			@fclose($f);
+			@chmod('test/test.php', $chmod);
+			include('test/test.php');
+		}
+		@unlink('test/test.php');
+		@rmdir('test');
+
+		return $ok;
+	}
+
+	//
+	// Demarre une transaction HTTP (s'arrete a la fin des entetes)
+	// retourne un descripteur de fichier
+	//
+	function init_http($get, $url, $refuse_gz=false) {
+		//global $http_proxy;
+		$fopen = false;
+		if (!eregi("^http://", _URL_LOADER_PROXY))
+			$http_proxy = '';
+		else
+			$http_proxy = _URL_LOADER_PROXY;
+
+		$t = @parse_url($url);
+		$host = $t['host'];
+		if ($t['scheme'] == 'http') {
+			$scheme = 'http'; $scheme_fsock='';
+		} else {
+			$scheme = $t['scheme']; $scheme_fsock=$scheme.'://';
+		}
+		if (!isset($t['port']) OR !($port = $t['port'])) $port = 80;
+		$query = isset($t['query'])?$t['query']:"";
+		if (!isset($t['path']) OR !($path = $t['path'])) $path = "/";
+
+		if ($http_proxy) {
+			$t2 = @parse_url($http_proxy);
+			$proxy_host = $t2['host'];
+			$proxy_user = $t2['user'];
+			$proxy_pass = $t2['pass'];
+			if (!($proxy_port = $t2['port'])) $proxy_port = 80;
+			$f = @fsockopen($proxy_host, $proxy_port);
+		} else
+			$f = @fsockopen($scheme_fsock.$host, $port);
+
+		if ($f) {
+			if ($http_proxy)
+				fputs($f, "$get $scheme://$host" . (($port != 80) ? ":$port" : "") . $path . ($query ? "?$query" : "") . " HTTP/1.0\r\n");
+			else
+				fputs($f, "$get $path" . ($query ? "?$query" : "") . " HTTP/1.0\r\n");
+
+			$version_affichee = isset($GLOBALS['spip_version_affichee'])?$GLOBALS['spip_version_affichee']:"xx";
+			fputs($f, "Host: $host\r\n");
+			fputs($f, "User-Agent: SPIP-$version_affichee (http://www.spip.net/)\r\n");
+
+			// Proxy authentifiant
+			if (isset($proxy_user) AND $proxy_user) {
+				fputs($f, "Proxy-Authorization: Basic "
+				. base64_encode($proxy_user . ":" . $proxy_pass) . "\r\n");
+			}
+
+		}
+		// fallback : fopen
+		else if (!$http_proxy) {
+			$f = @fopen($url, "rb");
+			$fopen = true;
+		}
+		// echec total
+		else {
+			$f = false;
+		}
+
+		return array($f, $fopen);
+	}
+
+	//
+	// Recupere une page sur le net
+	// et au besoin l'encode dans le charset local
+	//
+	// options : get_headers si on veut recuperer les entetes
+	function recuperer_page($url) {
+
+		// Accepter les URLs au format feed:// ou qui ont oublie le http://
+		$url = preg_replace(',^feed://,i', 'http://', $url);
+		if (!preg_match(',^[a-z]+://,i', $url)) $url = 'http://'.$url;
+
+		for ($i=0;$i<10;$i++) {	// dix tentatives maximum en cas d'entetes 301...
+			list($f, $fopen) = init_http('GET', $url);
+
+			// si on a utilise fopen() - passer a la suite
+			if ($fopen) {
+				break;
+			} else {
+				// Fin des entetes envoyees par SPIP
+				fputs($f,"\r\n");
+
+				// Reponse du serveur distant
+				$s = trim(fgets($f, 16384));
+				if (ereg('^HTTP/[0-9]+\.[0-9]+ ([0-9]+)', $s, $r)) {
+					$status = $r[1];
+				}
+				else return;
+
+				// Entetes HTTP de la page
+				$headers = '';
+				while ($s = trim(fgets($f, 16384))) {
+					$headers .= $s."\n";
+					if (eregi('^Location: (.*)', $s, $r)) {
+						$location = $r[1];
+					}
+					if (preg_match(",^Content-Encoding: .*gzip,i", $s))
+						$gz = true;
+				}
+				if ($status >= 300 AND $status < 400 AND $location)
+					$url = $location;
+				else if ($status != 200)
+					return;
+				else
+					break; # ici on est content
+				fclose($f);
+				$f = false;
+			}
+		}
+
+		// Contenu de la page
+		if (!$f) {
+			return false;
+		}
+
+		$result = '';
+		while (!feof($f))
+			$result .= fread($f, 16384);
+		fclose($f);
+
+		// Decompresser le flux
+		if ($gz = $_GET['gz'])
+			$result = gzinflate(substr($result,10));
+
+		return $result;
+	}
+
+	function telecharger_langue($lang, $droits) {
+		global $dir_base;
+		$fichier = 'tradloader_'.$lang.'.php';
+		$GLOBALS['idx_lang'] = 'i18n_tradloader_'.$lang;
+		if(!file_exists($dir_base.$fichier)) {
+			$contenu = recuperer_page(_URL_LOADER_DL.$fichier.".txt");
+			if ($contenu AND $droits) {
+				ecrire_fichierT($dir_base.$fichier, $contenu);
+				include($dir_base.$fichier);
+				return true;
+			} elseif($contenu AND !$droits) {
+				eval('?'.'>'.$contenu);
+				return true;
+			} else {
+				return false;
+			}
+		} else {
+			include($dir_base.$fichier);
+			return true;
+		}
+	}
+
+	function selectionner_langue($droits) {
+		global $langues; # langues dispo
+
+		if (isset($_COOKIE['spip_lang_ecrire'])) {
+			$lang = $_COOKIE['spip_lang_ecrire'];
+		}
+
+		if (isset($_GET['lang']))
+			$lang = $_GET['lang'];
+
+		# reglage par defaut selon les preferences du brouteur
+		if (!$lang OR !isset($langues[$lang]))
+			$lang = regler_langue_navigateurT();
+
+		# valeur par defaut
+		if (!isset($langues[$lang])) $lang = 'es';
+
+		# memoriser dans un cookie pour l'etape d'apres *et* pour l'install
+		setcookie('spip_lang_ecrire', $lang);
+
+		# RTL
+		if ($lang == 'ar' OR $lang == 'he' OR $lang == 'fa') {
+			$GLOBALS['spip_lang_right']='left';
+			$GLOBALS['spip_lang_dir']='rtl';
+		} else {
+			$GLOBALS['spip_lang_right']='right';
+			$GLOBALS['spip_lang_dir']='ltr';
+		}
+
+		# code de retour = capacite a telecharger le fichier de langue
+		$GLOBALS['idx_lang'] = 'i18n_tradloader_'.$lang;
+		return telecharger_langue($lang,$droits) ? $lang : false;
+	}
+
+	function debut_html() {
+		?>
+		<HTML <?php echo "dir='".$GLOBALS['spip_lang_dir']."'";?>>
+		<HEAD>
+		<TITLE><?php echo _TT('tradloader:titre', array('paquet'=>_NOM_PAQUET_ZIP)); ?></TITLE>
+		<META HTTP-EQUIV="Expires" CONTENT="0">
+		<META HTTP-EQUIV="cache-control" CONTENT="no-cache,no-store">
+		<META HTTP-EQUIV="pragma" CONTENT="no-cache">
+		<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=utf-8">
+
+
+		<style>
+		<!--
+			a {text-decoration: none; }
+			A:Hover {color:#FF9900; text-decoration: underline;}
+			.forml {width: 100%; background-color: #FFCC66; background-position: center bottom; float: none; color: #000000}
+			.formo {width: 100%; background-color: #970038; background-position: center bottom; float: none; color: #FFFFFF}
+			.fondl {background-color: #FFCC66; background-position: center bottom; float: none; color: #000000}
+			.fondo {background-color: #970038; background-position: center bottom; float: none; color: #FFFFFF}
+			.fondf {background-color: #FFFFFF; border-style: solid ; border-width: 1; border-color: #E86519; color: #E86519}
+		-->
+		</style>
+		</HEAD>
+
+		<body bgcolor="#FFFFFF" text="#000000" link="#E86519" vlink="#6E003A" alink="#FF9900" TOPMARGIN="0" LEFTMARGIN="0" MARGINWIDTH="0" MARGINHEIGHT="0">
+
+		<BR><BR><BR>
+		<CENTER>
+		<TABLE WIDTH=450>
+		<TR><TD WIDTH=450>
+		<?php echo menu_languesT($GLOBALS['lang']); ?>
+
+		<FONT FACE="Verdana,Arial,Helvetica,sans-serif" SIZE=4 COLOR="#970038"><B><?php
+			echo _TT('tradloader:titre', array('paquet'=>_NOM_PAQUET_ZIP));
+		?></B></FONT>
+		<FONT FACE="Georgia,Garamond,Times,serif" SIZE=3>
+		<?php
+	}
+
+
+	function fin_html() {
+		?>
+		</FONT>
+		</TD></TR></TABLE>
+		</CENTER>
+		</BODY>
+
+		</HTML>
+		<?php
+	}
+
+	function nettoyer_racine($fichier) {
+		global $dir_base;
+		@unlink($dir_base.$fichier);
+		@unlink($dir_base.'pclzip.php');
+		$d = opendir($dir_base);
+		while (false !== ($f = readdir($d))) {
+			if(preg_match('/^tradloader_(.+).php$/', $f)) @unlink($dir_base.$f);
+		}
+		closedir($d);
+		return true;
+	}
+
+///////////////////////////////////////////////
+// debut du process
+//
+
+	error_reporting(E_ALL ^ E_NOTICE);
+
+	$dir_base = './'; //repertoire d'installation
+
+	$droits = tester_repertoire();
+
+	if ($lang = selectionner_langue($droits)) {
+		if(!$droits) {
+			//on ne peut pas ecrire
+			debut_html();
+			echo _TT('tradloader:texte_preliminaire', array('paquet'=>_NOM_PAQUET_ZIP, 'chmod'=>$chmod));
+			fin_html();
+			exit;
+		}
+		else {
+			//on telecharge, on ecrit, au fait, on peut dezipper ?
+			//
+			// Verifier si la ZLib est utilisable
+			//
+			$gz = function_exists("gzopen");
+			if ($gz) {
+				if(!file_exists($dir_base."pclzip.php")) {
+					$contenu = recuperer_page(_URL_LOADER_DL."pclzip.php.txt");
+					if ($contenu) {
+						ecrire_fichierT($dir_base."pclzip.php", $contenu);
+						include($dir_base."pclzip.php");
+					}
+				} else {
+					include($dir_base."pclzip.php");
+				}
+			}
+			else
+				die ('fonctions zip non disponibles');
+
+			$fichier = basename(_URL_PAQUET_ZIP);
+			$paquet = (isset($_GET['paquet']) AND preg_match(',[a-zA-Z0-9_]+,', $_GET['paquet'])) ? $_GET['paquet'] : '';
+
+			//
+			// deploiement de l'archive
+			//
+			if ($_GET['fichier'] == 'oui'
+			AND file_exists($dir_base.$fichier)) {
+				$zip = new PclZip($dir_base.$fichier);
+				$ok = $zip->extract(
+					PCLZIP_OPT_PATH, $dir_base,
+					PCLZIP_OPT_SET_CHMOD, $chmod,
+					PCLZIP_OPT_REPLACE_NEWER,
+					PCLZIP_OPT_REMOVE_PATH, "spip/");
+				if ($zip->error_code<0) {
+					debut_html();
+					echo _TT('tradloader:donnees_incorrectes',
+						array('erreur' => $zip->errorInfo()));
+					fin_html();
+					exit;
+				}
+				nettoyer_racine($fichier);
+				header("Location: ".$dir_base._SPIP_LOADER_URL_RETOUR);
+				exit;
+			}
+			//
+			// Si pas encore fait, afficher la page de presentation
+			//
+			if ($_GET['charger'] != 'oui') {
+				debut_html();
+				echo _TT('tradloader:texte_intro', array('paquet'=>_NOM_PAQUET_ZIP));
+				echo "<DIV ALIGN='".$GLOBALS['spip_lang_right']."'>";
+				echo "<FORM ACTION='".$dir_base._SPIP_LOADER_SCRIPT."' METHOD='get'>";
+				if(preg_match(',action=([a-z_]+),', _SPIP_LOADER_SCRIPT, $m))
+					echo "<input type='hidden' name='action' value='".$m[1]."' />";
+				if($paquet != '')
+					echo "<INPUT TYPE='hidden' NAME='paquet' VALUE='$paquet'>";
+				if(file_exists($dir_base.$fichier))
+					echo "<INPUT TYPE='hidden' NAME='fichier' VALUE='oui'>";
+				else
+					echo "<INPUT TYPE='hidden' NAME='charger' VALUE='oui'>";
+				echo "<INPUT TYPE='submit' NAME='Valider' VALUE=\""._TT('tradloader:bouton_suivant')."\">";
+				echo "</FORM>";
+
+				fin_html();
+				exit;
+			}
+
+			$contenu = recuperer_page(_URL_PAQUET_ZIP);
+
+			if(!($contenu AND ecrire_fichierT($dir_base.$fichier, $contenu))) {
+				debut_html();
+				echo _TT('tradloader:echec_chargement');
+				fin_html();
+				exit;
+			}
+
+			// Passer a l'etape suivante (desarchivage)
+			$sep = strpos(_SPIP_LOADER_SCRIPT, '?') ? '&' : '?';
+			header("Location: ".$dir_base._SPIP_LOADER_SCRIPT.$sep."fichier=oui".($paquet?"&paquet=".$paquet:''));
+			exit;
+		}
+	}
+	else {
+		//on ne peut pas telecharger, c'est foutu.
+		$lang = 'es'; //francais par defaut
+		$GLOBALS['i18n_tradloader_es']['titre'] = 'Descarga de ALBA';
+		$GLOBALS['i18n_tradloader_es']['echec_chargement'] = '<h4>No es posible descargar archivos del instalador. <br>Deber&aacute; realizar la instalaci&oacute;n manualmente.</h4>';
+		debut_html();
+		echo _TT('tradloader:echec_chargement');
+		fin_html();
+		exit;
+	}
+
+?>
\ No newline at end of file




Más información sobre la lista de distribución Alba-desarrollo