Secciones de la página

ftp. tol


Declaraciones


Time oriented language


Árbol de ficheros

Tol

Artículos del sitio

Presentación de Tol

Todos los programas

Simuladores visuales

Sitios que me gustan

Por categorías

Algoritmia

Búsqueda y ordenación

Computación fisiológica

Editorial y edición

Gráficos de datos

Herramientas y utilidades

Hipertexto

Informática forense

Lectura óptica de datos

Metaprogramación

No determinista

Ofimática

Recursión e iteración

Reglas y restricciones

Series y estadística









ftp.tol de Ink.Watercolor

Funciones para realizar ftp.

Declaraciones

Time oriented language

//////////////////////////////////////////////////////////////////////////////
// FILE    : ftp.tol
// AUTHOR  : http://www.asolver.com
// PURPOSE : Funciones para realizar ftp.
//////////////////////////////////////////////////////////////////////////////

//////////////////////////////////////////////////////////////////////////////
Real FtpDir(Text hostRootDir, // Directorio remoto
            Text localDir,    // Directorio local
            Text filPattern,  // Patron de los ficheros
            Text commandFile, // Fichero de salida con mandatos ftp
            Real toLower,     // Envio de nombre en minusculas
            Real casSen)      // Equiparacion sensible a mayus/minusculas
//////////////////////////////////////////////////////////////////////////////
{
  Set  getDir   = GetDir(localDir);
  Set  filSet   = getDir[1];
  Set  dirSet   = getDir[2];

  Set  filSend  = EvalSet(filSet, Text(Text fil)
  { 
    If(TextMatch(fil,filPattern,casSen),
    {
      Text filName = If(toLower, ToLower(fil), fil);
      "send "+fil+" "+filName+"\n"
    }, "")
  });
  
  Text filCmd = If(Card(filSend)==0, "", BinGroup("+",filSend));
  Text allCmd = If(filCmd=="", "",
  {
    Text WriteLn("ftp> "+localDir);

    Text AppendFile(commandFile,"mkdir "+hostRootDir+"\n");
    Text AppendFile(commandFile,"cd "+hostRootDir+"\n");
    Text AppendFile(commandFile,"lcd "+localDir+"\n");
    Text AppendFile(commandFile,filCmd)
  });

  Set  dirSend  = EvalSet(dirSet, Real(Text subDir)
  {
    Text dirName = If(toLower, ToLower(subDir), subDir);
    FtpDir(hostRootDir+"/"+dirName, localDir+"/"+dirName, filPattern,
           commandFile, toLower,  casSen)
  });

  Card(filSend)+Card(dirSend)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Agrega de formar recursiva a un fichero de nombre commandFile las
instrucciones necesarias  para enviar todos los ficheros que hacen match con
filPattern de un directorio local (localDir) y de sus subdirectorios.
Hay que proporcionarle el directorio remoto (hostRootDir) bajo el cual se
requiere hace la copia.
Si toLower es minuscula todos los nombres de ficheros y subdirectorios son
enviados en minusculas, esto es clasico para sistemas UNIX.
Si casSen es TRUE el math de fichero se realizar sensible a mayusculas y
minusculas.",
FtpDir);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Real FtpBuild(Text hostRootDir, // Directorio remoto
              Text localDir,    // Directorio local
              Text filPattern,  // Patron de los ficheros
              Text commandFile, // Fichero de salida con mandatos ftp
              Text host,        // Nombre del host remoto
              Real toLower,     // Envio de ficheros en minusculas
              Real casSen,      // Equiparacion sensible a mayus/minusculas
              Real bin)         // Envio binario
//////////////////////////////////////////////////////////////////////////////
{
  Text WriteLn("ftp> call as: ftp -n -s:"+commandFile);
  Text WriteLn("ftp> searching...");

  Text WriteFile(commandFile,"open "+host+"\n");
  Text AppendFile(commandFile,"user "+FtpHUs+" "+FtpHPa+"\n");
  Text AppendFile(commandFile,"cd "+hostRootDir+"\n");
  Text AppendFile(commandFile,"lcd "+localDir+"\n");
  Text If(bin,AppendFile(commandFile,"binary"+"\n"), 
              AppendFile(commandFile,"ascii" +"\n"));

  Set  getDir   = GetDir(localDir);
  Set  filSet   = getDir[1];
  Set  dirSet   = getDir[2];

  Set  filSend  = EvalSet(filSet, Text(Text fil)
  { 
    If(TextMatch(fil,filPattern,casSen),
    {
      Text filName = If(toLower, ToLower(fil), fil);
      AppendFile(commandFile,"send "+filName+"\n")
    }, "")
  });

  Set  dirSend  = EvalSet(dirSet, Real(Text subDir)
  {
    Text dirName = If(toLower, ToLower(subDir), subDir);
    FtpDir(hostRootDir+"/"+dirName, localDir+"/"+dirName, filPattern,
           commandFile, toLower,  casSen)
  });

  Text AppendFile(commandFile,"close"+"\n");
  Text AppendFile(commandFile,"quit"+"\n");
  Text WriteLn("ftp> done");

  Card(filSend)+Card(dirSend)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Crea un fichero de nombre commandFile con las instrucciones necesarias para
enviar todos los ficheros que hacen match con filPattern de un directorio
local (localDir) y de sus subdirectorios.
Hay que proporcionarle el nombre del host y el nombre del directorio remoto
(hostRootDir) bajo el cual se requiere hacer la copia.
        localDir        hostRootDir
       /   |    \  ->  /     |     \
      a    b     c    a      b      c
Si toLower es minuscula todos los nombres de ficheros y subdirectorios son
enviados en minusculas, esto es clasico para sistemas UNIX.
Si casSen es TRUE el math de fichero se realizar sensible a mayusculas y
minusculas.
Sin bin es TRUE la transmision se hace en modo binario.
En Windows se ejecuta como ftp -n -s:commandFile
Retorna el numero de ordenes de transmision dadas.",
FtpBuild);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Real FtpAll(Text localDir)    // Directorio local
//////////////////////////////////////////////////////////////////////////////
{

  Text host = "www.inkwatercolor.com";           // Host remoto
  Text cmdF = "ftp/"+PagGal+".bat";
  Text WriteFile(cmdF, "cd \\Asc\\Web\\Ink.Watercolor\\ftp\n"+
                       "copy "+PagGal+".bat "+PagGal+".log\n");

  Real ftp(Text dir, Text filPattern, Text sufix, Real bin)
  {
    Text commandFile = PagGal+sufix+".ftp";
    Real do = FtpBuild(FtpHDi+"/"+dir, localDir+"/"+dir, filPattern, 
                       "ftp/"+commandFile,
                       host, TRUE,   // To lower
                             TRUE,   // case sensitive
                             bin);   // binary / ASCII
    Text AppendFile(cmdF, "ftp -n -s:"+commandFile+" >> "+PagGal+".log\n");
    do
  };

  Set ftpSet =
  [[
     [["",                   "index.html", "inx",        FALSE]],  // ASCII

     [["common/css",         "*.css",      "cmmcss",     FALSE]],  // ASCII
     [["common/gif",         "*.gif",      "cmmgif",     TRUE]],   // Binary
     [["common/src",         "*.js",       "cmmsrc",     FALSE]],  // ASCII

     [[PagGal+"/page",       "inf*",       "galinfeng",  FALSE]],  // ASCII
     [[PagGal+"/page",       "sad*",       "galsadeng",  FALSE]],  // ASCII
     [[PagGal+"/page",       "upd*",       "galupdeng",  FALSE]],  // ASCII
     [[PagGal+"/pags",       "inf*",       "galinfspa",  FALSE]],  // ASCII
     [[PagGal+"/pags",       "sad*",       "galsadspa",  FALSE]],  // ASCII
     [[PagGal+"/pags",       "upd*",       "galupdspa",  FALSE]],  // ASCII

     [[PagGal+"/image/tiny", "*.jpg",      "galtin",     TRUE]],   // Binary
     [[PagGal+"/image/zoom", "*.jpg",      "galzom",     TRUE]],   // Binary

     [["download",           "*.*",        "dwn",        TRUE]]    // Binary
  ]];



  Set ftpCic = EvalSet(ftpSet, Real(Set ftpReg)
  {
    ftp(ftpReg[1], ftpReg[2], ftpReg[3], ftpReg[4])
  });

  Card(ftpCic)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Funcion principal para la construccion de ficheros de mandatos de FTP.",
FtpAll);
//////////////////////////////////////////////////////////////////////////////


//////////////////////////////////////////////////////////////////////////////
Real FtpRecovery(Text ftpDir,
                 Text inpLog,
                 Text outFil)
//////////////////////////////////////////////////////////////////////////////
{
  Text outFtp = ftpDir+"/"+outFil+".ftp";
  Text WriteFile(outFtp, "");
  Text WriteFile(ftpDir+"/"+outFil+".bat",
                 "cd /sw/inkwatercolor/ftp\n"+
                 "copy "+outFil+".bat "+outFil+".log\n"+
                 "ftp -n -s:"+outFil+".ftp >> "+outFil+".log\n");

  Text txtLog = ReadFile(ftpDir+"/"+inpLog);
  Set  setLog = Tokenizer(txtLog,"\n");
  Real maxLin = Card(setLog);
  Real sendCk = 0;
  Set  cicLog = For(1, maxLin, Real(Real linPos)
  {
    Text step   = "ftp recovery> "+FormatReal(linPos,"%4.0lf")+
                             " / "+FormatReal(maxLin,"%4.0lf");
    Real lin003 = Min(maxLin, linPos+3);
    Real sendOk = TextBeginWith(setLog[lin003], "226 Transfer complete.");
    Text linTxt = setLog[linPos];
    Text linCls = If(TextBeginWith(linTxt, "ftp> "),
                     Sub(linTxt, 6, TextLength(linTxt)),
                     linTxt)+"\n";
    Text If(Or(  TextBeginWith(linCls, "open "),
                 TextBeginWith(linCls, "user "), 
                 TextBeginWith(linCls, "mkdir "), 
                 TextBeginWith(linCls, "cd /"), 
                 TextBeginWith(linCls, "lcd /"), 
                 TextBeginWith(linCls, "ascii"), 
                 TextBeginWith(linCls, "binary"), 
                 TextBeginWith(linCls, "close")),
                                                 AppendFile(outFtp,linCls),
          If(And(TextBeginWith(linCls, "send "),
                 Not(sendOk)),
                                          { Real(sendCk:=sendCk+1);
                                            Text AppendFile(outFtp,linCls) },
                                                 WriteLn(step)));
    TRUE
  });
  Text AppendFile(outFtp, "quit\n");
  Text WriteLn(FormatReal(sendCk,"%.0lf")+" files to resend");
  Card(cicLog)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Funcion para poder continuar por donde iba una transmision por FTP que
se ha caido o se ha quedado bloqueada.",
FtpRecovery);
//////////////////////////////////////////////////////////////////////////////

Árbol de ficheros

Ink.Watercolor construye las páginas del sitio web inkwatercolor.com

  • make.tol proceso principal de generación de contenidos del sitio web
  • tol directorios de código fuente en lenguaje de programación Tol
    • cmm funciones comunes de textos, fechas, conjuntos, ficheros, etc.
      • txt.tol funciones de manejo de textos
      • set.tol funciones de manejo de conjuntos
      • tab.tol funciones de tablas como set of sets
      • ser.tol funciones de series temporales
      • fil.tol funciones de gestión de ficheros
      • zip.tol compresor de ficheros en línea de mandatos
      • apa.tol proceso de ficheros de log de Apache
      • dir.tol funciones de gestión de directorios
    • app funciones especificas de Ink.Watercolor
      • pdb.tol funciones de la base de datos de pinturas
      • pag.tol funciones para generar páginas web Html
      • sed.tol semillas, templates, de páginas web Html
      • ftp.tol funciones para generar mandatos para hacer Ftp
      • xml.tol funciones históricas para sitemaps en Xml
      • alc.tol alchemy para la transformación de imágenes
      • ink.tol funciones auxiliares de InkWatercolor
    • inc.tol inclusión de los ficheros Tol básicos y de aplicación
  • agenda directorio destinado a albergar los ficheros de agendas de posts
    • chpphodb01.txt ejemplo con las 4 primeras obras artísticas que se incluyeron
  • web directorio destinado a las paginas web generadas automáticamente
    • common directorio de recursos comunes a todas las galerías
      • css directorio para ficheros de estilo
        • common.css fichero de estilo para las paginas Html del sitio web
      • seed trozos de código Html para construir templates
        • strseed.htm estructura básica de página Html de inkwatercolor.com
        • pi1lowseed.htm estructura para albergar información sobre una obra
        • pi4cntseed.htm estructura para albergar 4 pinturas en una página
      • src directorio para ficheros javascript
    • chppho directorio para la galería principal de Inkwatercolor
      • index.html ejemplo de página Html generada automáticamente
    • download directorio para material extra para descargas
      • chppho0129.jpg ejemplo de imagen de obra artística para descargar
      • chppho0143.jpg ejemplo de imagen de obra artística para descargar
    • sitemap.xml mapa del sitio web generado en Xml de forma automática
  • history archivo de registro histórico del programa Ink.Watercolor
  • ink_watercolor.pdf documento resumen de funciones del programa de generación Html

2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio

Tol