Files
RPAClaroLogin/rr.js
T
2025-04-03 08:51:40 -05:00

166 lines
8.0 KiB
JavaScript

const fs = require('fs');
const path = require('path');
// Especifica el nombre del archivo que deseas generar
const nombreArchivo = path.join('C:', 'RpaClaro', 'macrologin.mac');
// Función para verificar y eliminar el archivo
function verificarYEliminarArchivo(nombreArchivo) {
if (fs.existsSync(nombreArchivo)) {
try {
// fs.unlinkSync(nombreArchivo); // Descomentar para eliminar el archivo
console.log(`Se ha eliminado el archivo '${nombreArchivo}'.`);
} catch (e) {
console.log(`Error al eliminar el archivo '${nombreArchivo}': ${e}`);
}
} else {
console.log(`El archivo '${nombreArchivo}' no existe.`);
}
}
// Función para generar el archivo
function generarArchivo(nombreArchivo, contenido) {
try {
// Crea el archivo y escribe el contenido
fs.writeFileSync(nombreArchivo, contenido, 'utf8');
console.log(`Se ha generado el archivo '${nombreArchivo}' con éxito.`);
} catch (e) {
console.log(`Error al generar el archivo '${nombreArchivo}': ${e}`);
}
}
function rr(usuario, password) {
// Ahora, formateamos el texto para insertar el valor de "valor_variable" en el lugar correcto.
const texto = `<HAScript name="macrologin" description="" timeout="60000" pausetime="300" promptall="true" blockinput="true" author="Usuario" creationdate="19/07/2023 07:57:48 PM" supressclearevents="false" usevars="true" ignorepauseforenhancedtn="true" delayifnotenhancedtn="0" ignorepausetimeforenhancedtn="true" continueontimeout="false">
<screen name="Pantalla1" entryscreen="true" exitscreen="true" transient="false">
<description >
<oia status="NOTINHIBITED" optional="false" invertmatch="false" />
<numfields number="184" optional="true" invertmatch="false" />
<numinputfields number="6" optional="true" invertmatch="false" />
</description>
<actions>
<input value="'${usuario}[tab]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'${password}'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'[enter]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'[sysreq]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'1'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'[enter]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'${usuario}[tab]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'${password}'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'[enter]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'[sysreq]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'1'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
<input value="'[enter]'" row="0" col="0" movecursor="true" xlatehostkeys="true" encrypted="false" />
</actions>
<nextscreens timeout="0" >
</nextscreens>
</screen>
</HAScript>`;
// Llamada para verificar y eliminar el archivo si existe
verificarYEliminarArchivo(nombreArchivo);
// Llamada para generar el nuevo archivo
generarArchivo(nombreArchivo, texto);
async function runAS400Launcher() {
const autoit = require("node-autoit-koffi");
const koffi = require("koffi");
autoit.lib = koffi.load('C:/RpaClaro/AutoItX3_x64.dll');
await autoit.run('C:/Users/Public/IBM/ClientSolutions/Start_Programs/Windows_i386-32/acslaunch_win-32.exe C:/RpaClaro/AS400.hod');
try {
const result = await autoit.winWait("Iniciar sesión en IBM i", "", 35);
if (result) {
let ventana_error = 0;
let ventana_contrasena = 0;
let ventana_mensaje1 = 0;
let ventana_mensaje2 = 0;
console.log("El programa se ha abierto correctamente.");
await autoit.winActivate("Iniciar sesión en IBM i");
await autoit.winSetState("A - ", '', 3)
await autoit.controlSend("Iniciar sesión en IBM i", '', null, usuario);
await autoit.winActivate("Iniciar sesión en IBM i");
await autoit.controlSend("Iniciar sesión en IBM i", '', null, "{TAB}");
await autoit.winActivate("Iniciar sesión en IBM i");
await autoit.controlSend("Iniciar sesión en IBM i", '', null, password);
await autoit.controlSend("Iniciar sesión en IBM i", '', null, "{ENTER}");
ventana_error = await autoit.winWait("Mensaje de error", "", 8);
if (ventana_error == 1) {
console.log("Aparecio mensaje de error");
} else {
console.log("No aparecio mensaje de error");
}
ventana_contrasena = await autoit.winWait("Cambiar contraseña de IBM i", "", 1);
if (ventana_contrasena == 1) {
console.log("Aparecio mensaje de contrasena");
} else {
console.log("No aparecio mensaje de contrasena");
}
ventana_mensaje1 = await autoit.winWait("Mensaje de consulta", "", 1);
if (ventana_mensaje1 == 1) {
await autoit.controlSend("Mensaje de consulta", '', null, "{ENTER}");
console.log("Aparecio mensaje 1");
} else {
console.log("No aparecio mensaje 1");
}
ventana_mensaje2 = await autoit.winWait("Mensaje de consulta", "", 1);
if (ventana_mensaje2 == 1) {
await autoit.controlSend("Mensaje de consulta", '', null, "{ENTER}");
console.log("Aparecio mensaje 2");
} else {
console.log("No aparecio mensaje 2");
}
console.log(ventana_contrasena);
console.log(ventana_error);
if (ventana_contrasena == 0 && ventana_error == 0) {
console.log('diferentes');
await new Promise((resolve) => setTimeout(resolve, 3000));
let segundo_login = await autoit.winGetText('A - ');
console.log(segundo_login);
if (segundo_login == 128) {
console.log('Se encontro segundo login');
await autoit.winActivate("A - ");
await new Promise((resolve) => setTimeout(resolve, 2000));
try {
await autoit.controlSend("A - ", '', null, "+^w");
console.log('Se ejecuto hotkey');
await autoit.controlSend("A - ", '', null, usuario);
await autoit.winActivate("A - ");
await autoit.controlSend("A - ", '', null, "{TAB}");
await autoit.winActivate("A - ");
await autoit.controlSend("A - ", '', null, password);
await autoit.controlSend("A - ", '', null, "{ENTER}");
} catch (error) {
console.log('No se ejecuto hotkey: ' + error);
}
} else {
console.log('No se encontro segundo login');
}
}
} else {
console.log("El programa no se ha abierto dentro del tiempo de espera.");
}
} catch (error) {
console.error("Error:", error);
}
}
runAS400Launcher();
return 'test';
}
module.exports = { rr };