G A C E T A   D E   L I N U X
...haciendo a Linux un poco más divertido!
Visualizando Faxes en la Web
Por Mark Nielsen
Traducción al español por Juan Carlos Orrego Diaz
el día 09 de Diciembre 2002, para La Gaceta de Linux

  1. Introducción
  2. Configurando Apache 2.0
  3. Sugerencias para usted
  4. Conclusión
  5. Referencias

Introducción

El propósito de este articulo, es describir un script de Perl que yo uso para administrar faxes en la web en mi servidor de fax. El método que empleo es muy básico, y sólo es usado por mi, y por otra persona en la compañía para la que trabajo. pero funciona para mi. Con muy poco esfuerzo, sería muy sencillo configurar scripts profesionales que administren faxes en empresas pequeñas o muy grandes. También creo que sería bastante sencillo construir interfaces web para otros sistemas de fax (si es que aún no la tienen). Personalmente, preferiría enviar y recibir faxes a través de la web, porque después podría acceder al sistema (y a los faxes) desde cualquier parte del mundo.

Para mi configuración, yo use efax, que no es muy fácil de conseguir. Para cualquier persona, yo recomiendo HylaFax o alguna otra alternativa (mgetty tiene alguna esperanza).

Por favor lean mi otro artículo de faxes en Linux Focus.

Configurando Apache 2.0

Primero, mire como yo compilé y luego configuré Apache 2.0. Esta es tan sólo una instalación, de muchas que hice. No, Php no está corriendo en my servidor web a pesar que el archivo de configuración dice lo contrario.

Tengo un directorio, /usr/local/apache2/htdocs/fax, donde coloqué mi script de Perl y los archivos .htaccess.

Bajo este directorio, tengo otros subdirectorios:

Yo coloqué un archivo .htaccess para restringir el acceso de personas. Un ejemplo de archivo .htaccess es
AuthName Test
AuthType Basic
AuthUserFile /usr/local/apache2/passwords/Passwords

order deny,allow
require user mark ted

Puede cambiar/agregar passwords con htpasswd.

Luego, lo siguiente a hacer es crear el script de Perl. Aqui está mi script de Perl básico. Si en algú momento hago algo más con él, lo convertiré en un script de Python, dado que Python es la nueva ola para la programación (eso espero). Python, Zope, Apache, Linux, y PostgreSQL son las elecciones principales para mi ambiente de programación. Guardelo como "fax.pl" y ejecute un "chmod 755 fax.pl" despues de guardarlo.

Usted puede descargarlo o simplemente verlo a continuación.

#!/usr/bin/perl

use CGI;

print "Content-type: text/html\n\n\n";

my $Home = "/usr/local/apache2/htdocs/fax";
my $Source = "$Home/source";
my $Archives = "$Home/archives";
my $AB_Archives = "$Home/ab";
my $Display = "$Home/display";
my $Home_Archives = "$Home/home";

`mkdir -p $Source`;
`mkdir -p $Archives`;
`mkdir -p $Display`;
`rsync -av /var/spool/fax/incoming/fax* $Source`;
`mkdir -p $AB_Archives`;

#------------------------------------
my @Files = <$Source/fax*>;
foreach my $File (@Files) 
  {
#  imprimir "$File\n";
  my (@Temp) = split(/\//, $File);
  my $File_Name = pop @Temp;
  if (!(-e "$Archives/$File_Name\.pdf"))
    {
    print "<br>Procesando nuevo fax: $File\n";
    my $Command = "tiff2ps $File > $Archives/$File_Name\.ps";
#    imprimir "$Command\n"; 
    `$Command`;
    my $Command = "/usr/bin/ps2pdf $Archives/$File_Name\.ps $Archives/$File_Name\.pdf";
#    imprimir "$Command\n";
    `$Command`;
    `cp $Archives/$File_Name\.pdf $Display/$File_Name\.pdf`;

    }
  }

#---------------------------------------
my $query = new CGI;
my $Action = $query->param('action');
my $File = $query->param('file');
$File =~ s/[^a-zA-Z0-9\_\.]//g;

if (!(-e "$Display/$File")) {}
elsif ($Action eq "archive") 
  {
  print "<br>Archivando $File\n";
  `rm -f $Display/$File`;
  }
elsif ($Action eq "archive2")
  {
  print "<br>Archivando $File\n";
  `cp $Display/$File $AB_Archives/`;
  `rm -f $Display/$File`;
  }
elsif ($Action eq "archive_home")
  {
  print "<br>Archivando $File\n";
  `cp $Display/$File $Home_Archives/`;
  `rm -f $Display/$File`;
  }


print qq(<hr><a href="archives/">Archivos</a> -- puede estar protegido por contraseña.
<br><a href="home/">Archivos de Home</a> -- puede estar protegido por contraseña.
<br><a href="ab/">Archivos de Audioboomerang</a>\n);

my $Table_Entries = "";
my @Files = <$Display/fax*>;
foreach my $File (sort @Files)
  {
  my (@Temp) = split(/\//, $File);
  my $File_Name = pop @Temp;
  my $Link = "<a href='display/$File_Name'>$File_Name</a>";
  my $Delete = "<a href='fax.pl?action=archive&file=$File_Name'>archivar</a>";
  my $AB ="<a href='fax.pl?action=archive2&file=$File_Name'>archivar a AB</a>";
  my $Home ="<a href='fax.pl?action=archive_home&file=$File_Name'>archivar para Home</a>";

  $Table_Entries .= qq(<tr><td>$Link</td><td>$Delete</td><td>$Home</td><td>$AB</td></tr>\n);
  }

print "<table border=1><tr><th>Ver Fax</th><th>Archivar Fax</th>
<th>Archivo a AudioBoomerang</th></tr>\n";
print $Table_Entries;
print "</table>\n";

if (@Files < 1) {print "<h1> No hay faxes o todos están archivados.</h1>\n";}






Sugerencias para usted.

  1. Por estos días, normalmente escribo en Python 2.2, en lo que debería reescribirse este script. Se me ocurrió usar Perl porque estaba probando mod_perl y Apache 2.0.
  2. Escriba un script de Python para permitir que la gente suba archivos PostScript, imágenes, u otros formatos de archivo que Linux pueda convertir a tiff para enviar como fax. Adicionalmente, el script de Python podría recibir el número telefónico, carta de portada, etc. para hacer al sistema más flexible.
  3. Cree un script de Python/TK o wxPython que actúe como un programa cliente para enviar y recibir faxes desde su servidor Apache 2.0. El truco aquí es que la gente necesita crear un arhivo postscript primero para cargar faxes o mejor aún, encontrar alguna manera de imprimir directamente al script de Python.
  4. Cuando tenga un fax de múltiples páginas, haga que el script de Perl/Python en el servidor web detecte y ordene las páginas y las mezcle en un archivo ps con psmerge u otra herramienta.
  5. Faxes pueden contener información muy sensible, asi que asegúrese de usar el servicio seguro de Apache 2.0 para ver o enviar sus faxes.

Conclusión

Yo creo que es muy bueno, y mi jefe opina lo mismo. Voy a cambiar a otro servicio de fax porque efax es muy díficil de manejar en el momento de enviar faxes. Mi siguiente meta es hacerlo de tal manera que pueda enviar faxes desde una página web. Debo configurarlo para que en primer lugar usted imprima el documento a un archivo postscript y luego lo cargue (o cargueuna imagen gráfica o algo mas que Linux pueda convertir usando una herramienta estándar).

No estoy seguro que otras configuraciones de fax utilizan la web, pero desde mi punto de vista, siempre desearé poder tener acceso a mis faxes y enviar un fax a traves de la web.

Referencias

  1. Si éste artículo cambia, estará disponible aquí http://www.tcu-inc.com/Articles/31/nielsen.html

Copyright © 2002, Mark Nielsen. Copying license http://www.linuxgazette.com/copying.html
Publicado en Edición 85 de Linux Gazette, Diciembre 2002