lunes, enero 22, 2007

Smaug, Parte I: Ideas y requerimientos

Hace un tiempo para el laburo comencé con un pequeño mini-proyecto que tenía como propósito hacernos más fácil una tarea que es muy rutinaria.

Cada tanto, alguna máquina se caga, y entonces hay que formatear, o pasar el disco a otra máquina, o mudar de sistema operativo.. etc... y no queda otra que andar anotando configuraciones, copiando archivos de un lado a otro y viendo que no falten correos, impresoras, favoritos de internet, documentos personales y un largo listado de etcéteras.

De esta manera, en mis tiempos libres (los cuales al comienzo eran bastantes, y ahora prácticamente inexistentes) comencé con un pequeño mini-proyecto que desarrollaba en mi propia máquina. Este proyecto permitiría automatizar todo ese backup de configuración. Eso como primer paso.

Una versión ampliada luego permitiría reestablecer esa configuración de manera automática. Lo dejé como un segundo paso porque son muchas las ocasiones en donde se hace un cambio de sistema operativo, y yo no disponía de herramientas necesarias para investigar lo suficiente.

Como ya habrán podido observar, estuve haciendo investigaciones extensas sobre las configuraciones internas de Outlook Express y de Microsoft Outlook, cosas que forman parte de la tarea común de nuestros usuarios, por lo tanto, allí hay mucha información para resguardar.

Luego postearé más información interna. Por lo pronto voy a informar sobre cómo estoy haciendo avanzar este proyecto.

Dado que mi máquina es una Compaq Deskpro con un procesador de 200 MHrz y 128 MBs de RAM, tengo un Windows 98 en un disco de 4 GBs, apretado junto a otro soft de bases de datos y prueba de un sistema, tengo bajos recursos para diseñar algún programa. Además, por supuesto, estoy totalmente atado a la legalidad puesto que en la empresa es altamente IMPOSIBLE que tenga algún soft pirateado o sin licencia original.

Primero pensé en diseñarlo en VB, que tenemos ahí. Desafortunadamente, esto tenía dos contras. Número 1: yo tendría que instalar el entorno de VB en mi máquina para poder programarlo, y número 2, esto significaba que iba a ser necesario la instalación de runtimes cada vez que se quisiera hacer un backup. Esto último resulta infactible, puesto que a veces los backups son de mucha urgencia, y a veces ni se puede hacer eso.

Entonces pensé en algo que el mismo Windows pudiera correr. Esto permitiría que funcione en cualquiera de las máquinas, independientemente de los recursos o cosas instaladas que tenga. Pensé en Windows Scripting, una herramienta que es la evolución de los batch de DOS. Tras averiguar y averiguar, me encontré con que eso no es tan verdad. Según las indicaciones de Microsoft, el componente de WSH (Windows Scripting Host) ya viene por defecto incluido en Win98. Desafortunadamente, no lo he visto en ninguna de las máquinas en las que probé.

Además, no me resultaba demasiado fácil el acceso al registro, de modo que lo descarté.

A la vez pensé en lenguajes más comunes, como C, C++ u algún otro del estilo, de libre distribución y compilables en un .exe. El problema era que para leer información del registro de Windows me iba a resultar muy complicado... puesto que no tengo mucho conocimiento de APIs en lenguajes de ese nivel. Era linda oportunidad para aprender pero sinceramente, andaba sin ganas... demasiada complicación para un programa que luego debería resultar extensible.

Otra posibilidad con la que me encontré, son los HTA's. Este acrónimo viene a significar "HTML Applications". Son básicamente aplicaciones standalone que pueden desarrollarse con código HTML, y tags especiales que Internet Explorer interpreta y ejecuta. Contra: por una cuestión de seguridad, no hay posibilidad de hacer que se acceda al registro de Windows.

En realidad si existe una, es un exploit que a través de un ActiveX permite con Javascript leer el registro. El código lo pueden encontrar aquí. Desafortunadamente, este uso de ActiveX para acceso al registro está reconocido como un virus o un malware por muchos antivirus. De modo que, quedó la opción descartada.

Pensando en qué otro elemento de bajos recursos y que fuera común en todas las máquinas que me permitiera automatizar tareas, me encontré con Office y sus macros. Parecía MUY trucho... pero sin embargo tiene todo lo que necesito. Sólo hace falta abrir un archivo de Office, aceptar el uso de macros y el programa estaría funcionando. Gracias a la facilidad que me otorgan las APIs de alto nivel, tengo accesos al registro, y gracias a objetos de Scripting que vienen inmersos en VBA, tengo maneras fáciles de manejar archivos.

Por tanto, el entorno estaba casi totalmente decidido. Sólo había que ponerse las pilas y hacerlo, puesto que tenía el semáforo verde desde uno de mis jefes.

Dado que este proyecto tiene como propósito la automatización de una tarea que privilegia lo que mueve nuestra empresa y tantas otras (la información), y que se percata de atesorar y guardar celosamente esa información para que no se pierda, decidí llamarlo Smaug.

Sus límites básicos:
  • Corre bajo Windows 98, con Internet Explorer 5.0+, SIN OTROS REQUISITOS DE SOFTWARE
  • Recuperación de carpetas de documentos
  • Recuperación de carpetas extras sueltas en el disco principal (el cual se formatea)
  • Recuperación de favoritos de internet
  • Recuperación de correo de Microsoft Outlook, PSTs y configuración de la cuenta, por cada perfil existente.
  • Recuperación de correo de Outlook Express, mensajes, libreta de direcciones y configuración de cuentas, por cada identidad existente.
  • Recuperación de impresoras: modelo, ubicación y nombre.
  • Recuperación de archivos en el escritorio, incluso accesos directos, para futura referencia de programas instalados.

Propósitos extendidos (a largo plazo y en versiones posteriores):
  • Re-configuración automática de todos los elementos recuperados
  • Soporte para Windows XP (con auto-detección del sistema operativo)
  • Soporte para otras versiones de Microsoft Office
  • Soporte para versiones anteriores de Internet Explorer 5.0
  • Extensibilidad para agregar compatibilidad con datos de otros programas
Con eso comienza mi travesía programando a Smaug.

Soy un zorrinito analista.