Funciones para realizar Ftp (versión independiente del web). No realiza el Ftp sino que crea todos los ficheros de mandatos que permiten realizarlo de forma automatica.
Funciones
Real FtpDir(Text hstDir, Text locDir, Text extPat, Text cmdFil, Real toLowe, Real casSen, Text dtePth)Real FtpBuild(Text hstDir, Text locDir, Text extPat, Text cmdFil, Text hstNam, Real toLowe, Real casSen, Real binCtr, Text dtePth)Real FtpAll(Text webNam, Text hstDom, Text locDir, Text dtePth, Set ftpSet)//////////////////////////////////////////////////////////////////////////////
Real FtpDir(Text hstDir, // Directorio remoto
Text locDir, // Directorio local
Text extPat, // Patron de extension de fichero
Text cmdFil, // Fichero de salida con mandatos ftp
Real toLowe, // Envio de nombre en minusculas
Real casSen, // Equiparacion sensible a mayus/minusculas
Text dtePth) // File path to obtain a update date
//////////////////////////////////////////////////////////////////////////////
{
Set getDir = GetDir(locDir);
Set filSet = getDir[1];
Set dirSet = getDir[2];
Set filSnd = EvalSet(filSet, Text(Text filNam)
{
If(!FilCheckExtension(filNam, extPat, casSen), "", // Does not match
{
Real filNew = If(dtePth=="", TRUE, // There is not a file to compare
FileTime(locDir+"/"+filNam) >= FileTime(dtePth));
If(! filNew, "", // Is not a recent update file
{
Text filLow = If(toLowe, ToLower(filNam), filNam);
"send "+filNam+" "+filLow+"\n"
})
})
});
Text filCmd = If(Card(filSnd)==0, "", BinGroup("+",filSnd));
Text allCmd = If(filCmd=="", "",
{
Text WriteLn("ftp> "+locDir);
Text AppendFile(cmdFil, "mkdir "+hstDir+"\n");
Text AppendFile(cmdFil, "cd "+hstDir+"\n");
Text AppendFile(cmdFil, "lcd "+locDir+"\n");
Text AppendFile(cmdFil, filCmd)
});
Set dirSnd = EvalSet(dirSet, Real(Text subDir)
{
Text dirName = If(toLowe, ToLower(subDir), subDir);
FtpDir(hstDir+"/"+dirName, locDir+"/"+dirName, extPat,
cmdFil, toLowe, casSen, dtePth)
});
Card(filSnd)+Card(dirSnd)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Agrega de formar recursiva a un fichero de nombre cmdFil las instrucciones
necesarias para enviar todos los ficheros con extension extPat de un
directorio local (locDir) y de sus subdirectorios.
Hay que proporcionarle el directorio remoto (hstDir) bajo el cual se requiere
hacer la copia.
Si toLowe es minuscula todos los nombres de ficheros y subdirectorios son
enviados en minusculas, esto es clasico para sistemas Unix o Linux.
Si casSen es TRUE el math de fichero se realizar sensible a mayusculas y
minusculas.
Si se le proporciona el nombre de un fichero que indica una fecha dtePth,
entonces solo transmite los ficheros mas recientes que dicho fichero,
este fichero señal de fecha puede ser el fichero de log del ftp.",
FtpDir);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Real FtpBuild(Text hstDir, // Directorio remoto
Text locDir, // Directorio local
Text extPat, // Patron de extension de fichero
Text cmdFil, // Fichero de salida con mandatos ftp
Text hstNam, // Nombre del host remoto
Real toLowe, // Envio de ficheros en minusculas
Real casSen, // Equiparacion sensible a mayusculas/minusculas
Real binCtr, // Si TRUE envio en binario, si FALSE en Ascii
Text dtePth) // Fichero de señal de fecha de actualizacion
//////////////////////////////////////////////////////////////////////////////
{
Text WriteLn("ftp> call as: ftp -n -s:"+cmdFil);
Text WriteLn("ftp> searching...");
Text WriteFile (cmdFil, "open "+hstNam+"\n");
Text AppendFile(cmdFil, "user "+FtpHUs+" "+FtpHPa+"\n");
Text AppendFile(cmdFil, "cd "+hstDir+"\n");
Text AppendFile(cmdFil, "lcd "+locDir+"\n");
Text If(binCtr, AppendFile(cmdFil, "binary"+"\n"),
AppendFile(cmdFil, "ascii" +"\n"));
Set getDir = GetDir(locDir);
Set filSet = getDir[1];
Set dirSet = getDir[2];
Set filSnd = EvalSet(filSet, Text(Text filNam)
{
If(!FilCheckExtension(filNam, extPat, casSen), "", // Doesn't match
{
Real filNew = If(dtePth=="", TRUE, // There is not a file to compare
FileTime(locDir+"/"+filNam) >= FileTime(dtePth));
If(! filNew, "", // Is not a recent update file
{
Text filLow = If(toLowe, ToLower(filNam), filNam);
AppendFile(cmdFil,"send "+filNam+" "+filLow+"\n")
})
})
});
Set dirSnd = EvalSet(dirSet, Real(Text subDir)
{
Text dirNam = If(toLowe, ToLower(subDir), subDir);
FtpDir(hstDir+"/"+dirNam, locDir+"/"+dirNam, extPat,
cmdFil, toLowe, casSen, dtePth)
});
Text AppendFile(cmdFil,"close"+"\n");
Text AppendFile(cmdFil,"quit"+"\n");
Text WriteLn("ftp> done");
Card(filSnd)+Card(dirSnd)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Crea un fichero de nombre cmdFil con las instrucciones necesarias para enviar
todos los ficheros de extension extPat de un directorio local (locDir)
y de sus subdirectorios.
Hay que proporcionar el nombre del host y el nombre del directorio remoto
(hstDir) bajo el cual se requiere hacer la copia:
locDir hstDir
/ | \ -> / | \
a b c a b c
Si toLowe es minuscula todos los nombres de ficheros y subdirectorios son
enviados en minusculas, esto es clasico para sistemas Unix o Linux.
Si casSen es TRUE el math de fichero se realizar sensible a mayusculas y
minusculas.
Sin binCtr es TRUE la transmision es en modo binario y en otro caso en Ascii.
Si se le proporciona el nombre de un fichero que indica una fecha dtePth,
entonces solo transmite los ficheros mas recientes que dicho fichero, este
fichero señal de fecha puede ser el fichero de log del ftp.
En Windows se ejecuta como ftp -n -s:cmdFil.
Retorna el numero de ordenes de transmision dadas.",
FtpBuild);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Real FtpAll(Text webNam, // Web name
Text hstDom, // Dominio del host remoto
Text locDir, // Directorio local
Text dtePth, // Fichero de señal de fecha de actualizacion
Set ftpSet) // Tabla de transporte ftp
//////////////////////////////////////////////////////////////////////////////
{
Text cmdFtp = "ftp/"+webNam+".bat";
Text WriteFile(cmdFtp, W("cd "+Replace(locDir,"/web","/ftp")+"\n")+
"copy "+webNam+".bat "+webNam+".log\n");
Real ftp(Text dirNam, Text extPat, Text filTyp, Real binCtr)
{
Text cmdFil = webNam + filTyp + ".ftp";
Real bldFtp = FtpBuild(
If(dirNam!="", FtpHDi+"/"+dirNam, FtpHDi),
If(dirNam!="", locDir+"/"+dirNam, locDir),
extPat,
"ftp/"+cmdFil,
hstDom, // Host domain
FALSE, // To lower all
TRUE, // Case sensitive
binCtr , // binary or Ascii
dtePth); // File to obtain a update date
Text AppendFile(cmdFtp, "ftp -n -s:"+cmdFil+" >> "+webNam+".log\n");
bldFtp
};
Set ftpCic = EvalSet(ftpSet, Real(Set ftpReg)
{
ftp(ftpReg[1], ftpReg[2], ftpReg[3], ftpReg[4])
});
Card(ftpCic)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Funcion principal que crea todos los mandatos para la realizacion del ftp.
Realiza un ciclo creando ficheros de mandatos para todos los elementos de
la tabla ftpSet.",
FtpAll);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// FILE : ftp.tol
// AUTHOR : http://www.asolver.com
// PURPOSE : Funciones para realizar Ftp (versión independiente del web).
// No realiza el Ftp sino que crea todos los ficheros de mandatos que
// permiten realizarlo de forma automatica.
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
// FUNCTIONS
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Real FtpDir(Text hstDir, // Directorio remoto
Text locDir, // Directorio local
Text extPat, // Patron de extension de fichero
Text cmdFil, // Fichero de salida con mandatos ftp
Real toLowe, // Envio de nombre en minusculas
Real casSen, // Equiparacion sensible a mayus/minusculas
Text dtePth) // File path to obtain a update date
//////////////////////////////////////////////////////////////////////////////
{
Set getDir = GetDir(locDir);
Set filSet = getDir[1];
Set dirSet = getDir[2];
Set filSnd = EvalSet(filSet, Text(Text filNam)
{
If(!FilCheckExtension(filNam, extPat, casSen), "", // Does not match
{
Real filNew = If(dtePth=="", TRUE, // There is not a file to compare
FileTime(locDir+"/"+filNam) >= FileTime(dtePth));
If(! filNew, "", // Is not a recent update file
{
Text filLow = If(toLowe, ToLower(filNam), filNam);
"send "+filNam+" "+filLow+"\n"
})
})
});
Text filCmd = If(Card(filSnd)==0, "", BinGroup("+",filSnd));
Text allCmd = If(filCmd=="", "",
{
Text WriteLn("ftp> "+locDir);
Text AppendFile(cmdFil, "mkdir "+hstDir+"\n");
Text AppendFile(cmdFil, "cd "+hstDir+"\n");
Text AppendFile(cmdFil, "lcd "+locDir+"\n");
Text AppendFile(cmdFil, filCmd)
});
Set dirSnd = EvalSet(dirSet, Real(Text subDir)
{
Text dirName = If(toLowe, ToLower(subDir), subDir);
FtpDir(hstDir+"/"+dirName, locDir+"/"+dirName, extPat,
cmdFil, toLowe, casSen, dtePth)
});
Card(filSnd)+Card(dirSnd)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Agrega de formar recursiva a un fichero de nombre cmdFil las instrucciones
necesarias para enviar todos los ficheros con extension extPat de un
directorio local (locDir) y de sus subdirectorios.
Hay que proporcionarle el directorio remoto (hstDir) bajo el cual se requiere
hacer la copia.
Si toLowe es minuscula todos los nombres de ficheros y subdirectorios son
enviados en minusculas, esto es clasico para sistemas Unix o Linux.
Si casSen es TRUE el math de fichero se realizar sensible a mayusculas y
minusculas.
Si se le proporciona el nombre de un fichero que indica una fecha dtePth,
entonces solo transmite los ficheros mas recientes que dicho fichero,
este fichero señal de fecha puede ser el fichero de log del ftp.",
FtpDir);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Real FtpBuild(Text hstDir, // Directorio remoto
Text locDir, // Directorio local
Text extPat, // Patron de extension de fichero
Text cmdFil, // Fichero de salida con mandatos ftp
Text hstNam, // Nombre del host remoto
Real toLowe, // Envio de ficheros en minusculas
Real casSen, // Equiparacion sensible a mayusculas/minusculas
Real binCtr, // Si TRUE envio en binario, si FALSE en Ascii
Text dtePth) // Fichero de señal de fecha de actualizacion
//////////////////////////////////////////////////////////////////////////////
{
Text WriteLn("ftp> call as: ftp -n -s:"+cmdFil);
Text WriteLn("ftp> searching...");
Text WriteFile (cmdFil, "open "+hstNam+"\n");
Text AppendFile(cmdFil, "user "+FtpHUs+" "+FtpHPa+"\n");
Text AppendFile(cmdFil, "cd "+hstDir+"\n");
Text AppendFile(cmdFil, "lcd "+locDir+"\n");
Text If(binCtr, AppendFile(cmdFil, "binary"+"\n"),
AppendFile(cmdFil, "ascii" +"\n"));
Set getDir = GetDir(locDir);
Set filSet = getDir[1];
Set dirSet = getDir[2];
Set filSnd = EvalSet(filSet, Text(Text filNam)
{
If(!FilCheckExtension(filNam, extPat, casSen), "", // Doesn't match
{
Real filNew = If(dtePth=="", TRUE, // There is not a file to compare
FileTime(locDir+"/"+filNam) >= FileTime(dtePth));
If(! filNew, "", // Is not a recent update file
{
Text filLow = If(toLowe, ToLower(filNam), filNam);
AppendFile(cmdFil,"send "+filNam+" "+filLow+"\n")
})
})
});
Set dirSnd = EvalSet(dirSet, Real(Text subDir)
{
Text dirNam = If(toLowe, ToLower(subDir), subDir);
FtpDir(hstDir+"/"+dirNam, locDir+"/"+dirNam, extPat,
cmdFil, toLowe, casSen, dtePth)
});
Text AppendFile(cmdFil,"close"+"\n");
Text AppendFile(cmdFil,"quit"+"\n");
Text WriteLn("ftp> done");
Card(filSnd)+Card(dirSnd)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Crea un fichero de nombre cmdFil con las instrucciones necesarias para enviar
todos los ficheros de extension extPat de un directorio local (locDir)
y de sus subdirectorios.
Hay que proporcionar el nombre del host y el nombre del directorio remoto
(hstDir) bajo el cual se requiere hacer la copia:
locDir hstDir
/ | \ -> / | \
a b c a b c
Si toLowe es minuscula todos los nombres de ficheros y subdirectorios son
enviados en minusculas, esto es clasico para sistemas Unix o Linux.
Si casSen es TRUE el math de fichero se realizar sensible a mayusculas y
minusculas.
Sin binCtr es TRUE la transmision es en modo binario y en otro caso en Ascii.
Si se le proporciona el nombre de un fichero que indica una fecha dtePth,
entonces solo transmite los ficheros mas recientes que dicho fichero, este
fichero señal de fecha puede ser el fichero de log del ftp.
En Windows se ejecuta como ftp -n -s:cmdFil.
Retorna el numero de ordenes de transmision dadas.",
FtpBuild);
//////////////////////////////////////////////////////////////////////////////
//////////////////////////////////////////////////////////////////////////////
Real FtpAll(Text webNam, // Web name
Text hstDom, // Dominio del host remoto
Text locDir, // Directorio local
Text dtePth, // Fichero de señal de fecha de actualizacion
Set ftpSet) // Tabla de transporte ftp
//////////////////////////////////////////////////////////////////////////////
{
Text cmdFtp = "ftp/"+webNam+".bat";
Text WriteFile(cmdFtp, W("cd "+Replace(locDir,"/web","/ftp")+"\n")+
"copy "+webNam+".bat "+webNam+".log\n");
Real ftp(Text dirNam, Text extPat, Text filTyp, Real binCtr)
{
Text cmdFil = webNam + filTyp + ".ftp";
Real bldFtp = FtpBuild(
If(dirNam!="", FtpHDi+"/"+dirNam, FtpHDi),
If(dirNam!="", locDir+"/"+dirNam, locDir),
extPat,
"ftp/"+cmdFil,
hstDom, // Host domain
FALSE, // To lower all
TRUE, // Case sensitive
binCtr , // binary or Ascii
dtePth); // File to obtain a update date
Text AppendFile(cmdFtp, "ftp -n -s:"+cmdFil+" >> "+webNam+".log\n");
bldFtp
};
Set ftpCic = EvalSet(ftpSet, Real(Set ftpReg)
{
ftp(ftpReg[1], ftpReg[2], ftpReg[3], ftpReg[4])
});
Card(ftpCic)
};
//////////////////////////////////////////////////////////////////////////////
PutDescription(
"Funcion principal que crea todos los mandatos para la realizacion del ftp.
Realiza un ciclo creando ficheros de mandatos para todos los elementos de
la tabla ftpSet.",
FtpAll);
//////////////////////////////////////////////////////////////////////////////
Omr.Forms construye las páginas web Html del sitio web omrforms.es
2015 asolver.com | Aviso legal | XHTML | Δ Θ Ξ | Creative Commons | Mapa y funciones del sitio