jueves, 12 de noviembre de 2015

PuTTY | con soporte de impresión a texto y visor

ACTUALIZADO:
Actualice el codigo en github, por favor mira este link para mas información


Bien en esta oportunidad y de mucho tiempo (escribiendo en el blog), finalmente conclui la modificación del famoso PuTTY desarrollado principalmente por Simon Tatham.  Que en su versión original no tiene el soporte de impresión a texto (print to file).

Para aburrirlos un poco (Antecedentes): 

Terminales de conexión hay cientos, pero la mayoría son de pago el caso del SecureNetTerm que es el mas usado en el medio financiero también es el mas caro llegando a costar la licencia de 1 a 5 terminales (usuarios) hasta 70 dolares.

Según normativa de la ASFI vigente para entidades de intermediación financiera en la circular 193 claramente especifica  lo siguiente en el articulo 3,sección 3,capitulo II,Titulo VII del Libro 3:

Artículo 3° - (Licencias de software) Todo software utilizado por la entidad supervisada debe contar con las licencias respectivas. 

Ante esto los mismos supervisores de la ASFI omiten la supervisión de este aspecto,el uso de la terminal de conexión.

Ante esto y temiendo a una sanción o multa por incumplir el articulo decidí en el 2011 hacer uso de la herramienta PuTTY, que es gratuita (No tiene costo) tal y como indica en su web principal:

The PuTTY executables and source code are distributed under the MIT licence, which is similar in effect to the BSD licence. (This licence is Open Source certified and complies with the Debian Free Software Guidelines.)

Luego de leer mucho allá por el 2011 encontré esta implementación de puttyclip
misma que se encargaba de imprimir las salidas convencionales a impresora al ClipBoard haciendo uso del API propia del sistema operativo. 
Basto aplicar el patch a src de putty 0.60 para que todo funcione compilando con Cygwin esta implementación trabaja bien y hasta ahora lo hace, pero con el tiempo paso a estar en segundo plano ya que no actualicé las fuentes de putty desde la versión 0.60, ademas que había uno que otro fallo que por falta de tiempo no se corrigió en dicha versión.

También tropecé por el inconveniente de que para sacar el clipboard a texto requería un programa adicional, aquel entonces por la premura del tiempo opte por usar el tal vez no tan conocido winclip finalmente esa implementación inicial funciona bastante bien por no decir super bien (ja ja ja).

Implementación 0.65:

Un 18 de octubre de 2015 me preocupo bastante que el programa oficial ya se encuentra en la versión 0.65b mientras mi modificación estaba basada en la version 0.60, decidí comenzar el upgrade inmediatamente.

Tropecé con algunos inconvenientes, uno de ellos, las fuentes de putty entre la 0.60 y 0.65 cambiaron bastante debido a una re-organización del código fuente (Decisión del autor Simon).

Debido a esto se comenzó de cero, prácticamente tuve que reusar código de puttyclip, pero a la vez adecuarlo a la versión 0.65.

El binario de winclip me pareció exagerado dado un momento ya que podía incluirse el mismo en el putty original, entonces decidí hacer un método propio de "clipboard to file" el mismo funciona razonablemente bien y se quitó la necesidad de incluir un binario extra o adicional(que venia por separado).

Resultados obtenidos:

Como les comente a algunos colegas de trabajo, publicaré el binario de la modificación que realicé y cuando se estabilice completamente, liberaré el código que por cierto esta completamente en ANSI C (C puro para los amigos) para que compilen y modifique el programa  bajo los términos de licencia del autor original, por github en https://github.com/garysan/.

Mientras aquí el detalle de lo que tiene esta entrega:

1. Impresión a texto.


Para mejorar la impresión opté por incluir la ruta de instalación de notepad++ y obviamente si no esta instalado usa el notepad del sistema operativo.

2. Impresión a visor.

Así también como puede apreciarse en la figura del punto 1, se tiene otra opción, enviar al visor misma que se detalla a continuación, Visor es un programa desarrollado por AXON SRL. pero lamentablemente el visor requiere de otro programa llamado Agente, para funcionar así también requiere la instalación manual de otra impresora (Virtual) para enviar documentos al visor, mis pruebas con el agente prácticamente fueron frustrantes al inicio, funciona pero requiere mucha configuración y para un entorno donde se administran mas de 200 equipos y usuarios es una tarea maratonica!.

Por este motivo el visor, debe estar instalado en c:\axon\visor\ para que putty lo reconozca y envié a imprimir con este programa (Caso para las facturas).


3. Impresión de pantalla a texto.
Esta función permite sacar una especie de screenshot pero de la pantalla actual en moto texto(no imagen) muy útil en casos específicos.

4. Funciones de hotkeys:

Esto para acelerar tareas que demorarn en cambio de propiedades de la sesion actual. las hotkeys funcionan de la siguiente forma:

alt+F10 Impresión de pantalla a texto.
alt+F9 Duplicar sesión actual.

alt+F7 Cambia el modo de impresión a "Enviar a texto"
alt+F6 Cambia el modo de impresión a "Enviar a visor"
alt+F5 Restaura la impresora por defecto.

En los casos de cambio de impresora o modo de impresión se muestra un mensaje como este:

Esto con el fin de notificar y no causar inconvenientes posteriores.

5. El binario (Lo que esperaban):

Por cuestiones de seguimiento subí una versión del programa a mi DropBox en:
Comentarios y sugerencias a:

gary.gsv (Skype) o por los comentarios en este blog :D


Finalmente un vídeo de su funcionamiento:


happy hacking!!!