@subsection apache_embperl Instalación del Embperl para la Intranet del MECON.
- Paquetes del Apache utilizados
+ Paquetes del Apache utilizados:
@verbatim
Nombre Versión
libapache-dbi-perl 0.92-0.1
libapache-mod-perl 1.29-1
libapache-session-perl 1.54-1
- libapache-tempfile-perl_0.04-1_all.deb -
@endverbatim
@note El último paquete de la lista fue escrito por la fundación
Otros paquetes de perl usados para la instalación de la Intranet
- Paquetes que están en el repositorio del apt de debian
+ Paquetes que están en el repositorio del apt de debian:
@verbatim
Nombre Versión
perl 5.8.1-2
libxml-dumper-perl 0.67-1
@endverbatim
- Archivos adicionales para el manejo de la sesión del usuario
+ Archivos adicionales para que funcione embperl:
+ Para el correcto funcionamiento del embperl son necesarios algunos
+ paquetes y archivos que no se encuentran en la distribución de
+ Debian. Los archivos se encuentran en un repositorio de subversion,
+ para obtenerlos:
@verbatim
- Nombre Ubicación
- SimpleXMLISO.pm /usr/share/perl5/Apache/Session/Serialize/
- DumperISO.pm /usr/share/perl5/XML/
- Php2Embperl_Session.epl /var/www/htdocs/ (raiz del Apache)
+ cd /tmp
+ svn co http://portal.mecon.ar/svn/scripts/embperl
+ @endverbatim
+ Si no está instalado el subversion, pueden obtener estos archivos
+ con cualquier cliente HTTP (navegador web) en
+ http://portal.mecon.ar/svn/scripts/embperl/.
+ Ahora en el directorio embperl se encuentran estos archivos que
+ deben ser copiados como se indica en el archivo README:
+ @verbatim
+ cp SimpleXMLISO.pm /usr/share/perl5/Apache/Session/Serialize/
+ cp DumperISO.pm /usr/share/perl5/XML/
+ mkdir /var/www/htdocs
+ cp Php2Embperl_Session.epl /var/www/htdocs/
+ dpkg -i libapache-tempfile-perl_0.04-1_all.deb
@endverbatim
Todos estos archivos sirven para compartir las sesiones de los
session.auto_start = 1
@endverbatim
+ Luego hay que crear el archivo de log con los permisos correctos:
+ @verbatim
+ touch /var/log/apache/php.log
+ chown www-data.www-data /var/log/apache/php.log
+ /etc/init.d/apache restart
+ @endverbatim
+
@section locales Configuración de locales.
@verbatim apt-get install locales @endverbatim
+++ /dev/null
-[#
-IMPORTANTE: ES NECESARIO QUE ESTE SCRIPT SE PONGA EN LA BARRA DE LA INTRANET NO
-EN SISTEMAS/INTRANET PORQUE LA COOKIE FUNCIONA A PARTIR DEL DIRECTORIO EN EL
-CUAL ESTE ESTE SCRIPT.
-#]
-[-
-use CGI qw/:standard/;
-use CGI::Cookie;
-
-
-if (!defined($fdat{'redirect'})) {
- $http_headers_out {Location} = 'http://bal747f.mecon.ar/sistemas/intranet';
- exit;
-}
-
-
-%cookies = fetch CGI::Cookie;
-$archivo = '/tmp/sess_'.$cookies{'PHPSESSID747F'}{'value'}[0];
-
-open (FILE, $archivo);
-$linea = join ('',<FILE>);
-
-$res = parseSession (linea => $linea);
-
-$udat{'user'} = $res->{'user'};
-$udat{'domain'} = $res->{'domain'};
-$udat{'nick'} = $res->{'nick'};
-$udat{'nro_doc'} = $res->{'nro_doc'};
-
-$http_headers_out {Location} = 'http://bal747f.mecon.ar/'.$fdat{'redirect'};
-
-exit;
-
-################# FIN SCRIPT
-
-sub parseSession
-{
- my %params = @_;
- my $op_value = $params{linea};
- my $pos = 0;
- my $name;
- my $type;
- my $type2;
- my $len;
- my $result;
-
-
-
- while ($pos < 2){
-
- #Obtengo el nombre del parametro
- $name = substr($op_value, 0, index($op_value, '|'));
- $op_value = substr($op_value, index($op_value, '|') + 1); #Depuro la linea
- #Obtengo el tipo
- $type = substr($op_value, 0, index($op_value, ':'));
- $type2 = substr($op_value, 0, index($op_value, ';'));
-
- #Caso particular
- if ($type2 eq 'N') {
- $type = 'N';
- $op_value = substr($op_value, index($op_value, ';') + 1); #Depuro la linea
- }
- else {
- $op_value = substr($op_value, index($op_value, ':') + 1); #Depuro la linea
- }
-
- if ($type eq 's') {
- #Obtengo la longitud
- $len = substr($op_value, 0, index($op_value, ':'));
- #Obtengo el resto de la linea
- $op_value = substr($op_value, index($op_value, ':') + 1);
- if ($name eq 'usuario') {
- $result->{'user'} = substr($op_value, 1, $len);
- ($result->{'nick'}, $result->{'domain'}) = split ('@', $result->{'user'});
- $op_value = substr($op_value, $len + 3);
- $pos++;
- }
- elsif ($name eq 'documento') {
- $result->{'nro_doc'} = substr($op_value, 1, $len);
- $pos++;
- }
- else {
- $op_value = substr($op_value, $len + 3);
- }
- }
- elsif ($type eq 'i') {
- $op_value = substr($op_value, index($op_value,';') + 1);
- }
- elsif ($type eq 'd') {
- $op_value = substr($op_value, index($op_value,';') + 1);
- }
- elsif ($type eq 'b') {
- $op_value = substr($op_value, index($op_value,';') + 1);
- }
- elsif ($type eq 'a') {
- $op_value = parseContenido (cont => $op_value);
- }
- elsif ($type eq 'O') {
- $len = substr($op_value, 0, index($op_value,':'));
- $op_value = substr($op_value, index($op_value,':') + 1);
- $op_value = substr($op_value, $len + 3);
- $op_value = parseContenido (cont => $op_value);
- }
-
- if (length($op_value) < 1) {
- $pos = 3;
- }
- }
- return $result;
-}
-
-#Devuelve la linea sin el contenido
-sub parseContenido {
- my %params = @_;
- my $op_value = $params{cont};
- my $type;
- my $type2;
- my $len;
- my $seguir = 1;
-
- #Elimino todo hasta el { inclusive
- $op_value = substr($op_value, index($op_value, ':') + 2);
-
-
- while ($seguir) {
- #Obtengo el tipo
- $type = substr($op_value, 0, index($op_value, ':'));
- $type2 = substr($op_value, 0, index($op_value, ';')); #Caso particular Null
-
- #Caso particular Null
- if ($type2 eq 'N') {
- $type = 'N';
- $op_value = substr($op_value, index($op_value, ';') + 1); #Depuro la linea
- }
- else {
- $op_value = substr($op_value, index($op_value, ':') + 1); #Depuro la linea
- }
- if ($type eq 's') {
- #Obtengo la longitud
- $len = substr($op_value, 0, index($op_value, ':'));
- #Obtengo el resto de la linea
- $op_value = substr($op_value, index($op_value, ':') + 1);
- $op_value = substr($op_value, $len + 3);
- }
- elsif ($type eq 'i') {
- $op_value = substr($op_value, index($op_value,';') + 1);
- }
- elsif($type eq 'd') {
- $op_value = substr($op_value, index($op_value,';') + 1);
- }
- elsif($type eq 'b') {
- $op_value = substr($op_value, index($op_value,';') + 1);
- }
- elsif($type eq 'a') {
- $op_value = parseContenido (cont => $op_value);
- }
- elsif($type eq 'O') {
- $op_value = parseContenido (cont => $op_value);
- }
-
- if (substr($op_value,0,1) eq '}') {
- $op_value = substr($op_value,1);
- $seguir = 0;
- }
- }
- return $op_value;
-}
-
--]
-1;