sábado, octubre 27, 2007

Desaparecieron los programas del menu de kde!

Desde la salida de Gnome 2.20 que en archlinux desaparecieron algunos menús y asociaciones mime en mi sistema archlinux.
Como no solo uso aplicaciones kde/qt, me resultaba bastante molesta esta situación, pero gracias a un poco de investigación, logré dar con la solución

pacman -S archlinux-xdg-menu pyxdg

de nada.

sábado, octubre 20, 2007

Difusión de linux: ¿nueva estrategia?

Hay muchos motivos para convencer a las personas de que utilicen en sus computadores nuestro sistema operativo favorito. La palabra mas repetida es la estabilidad, que a muchas personas parece no importarles.

Otro motivo ignorado por muchos es la libertad. al menos en la situación de mi país, eso poco importa cuando puedes comprar un software en la calle con mil pesos. A la gente no le importa usar programas mal llamado piratas. No saben de licencias, ni les importa la propiedad intelectual.

Otra razón frecuente es la mal llamada "inexistencia de virus". Es cierto, la estructura de Linux y su sistema de permisos te hace poco vulnerable a virus. Eso es cierto, sin embargo, no debe faltar quien trabaje con su cuenta de root. O casi igual de mal, que tenga sudo sin contraseña.
Sin embargo no me gusta dar esta razón debido a que me siento algo mentiroso al darla. Me explico, un virus en espacio de usuario, puede perfectamente acabar con documentos personales, y cosas realmente valiosas para un usuario. Y para toda persona normal, lo valioso son los documentos, no la estabilidad del sistema, los datos importan, el sistema puede reinstalarse fácilmente. Sin embargo, durante años utilizando GNU/Linux nunca me he topado con uno de estos, gracias a la centralización de linux, que hace que prácticamente cada cosa que necesites esté en el repositorio de tu distribución, el que (se supone) es confiable.

Finalmente, el motivo de este artículo: de todas las razones que podemos aludir para convencer al mundo para el cambio, esta mañana en menéame encontré las mas original de todas. Luego de leer el artículo y sus comentarios pensé: Oh rayos! como no lo pensamos antes!, la transitividad es la respuesta a todo:

"if internet is for p0rn... and linux is for the internet.. then linux is for p0rn!"


Ahora, cuando me pregunten sobre linux, tendré que decirle que los virus de las páginas porno no afectan a este sistema operativo (por ahora). Así que podrán ver sus programas de ejercicio a toda hora sin preocuparse mucho por quedar infectados de algún troyano raro o spyware. El año de linux se viene ahora si que si, si, oh yes, o my god...

lunes, octubre 15, 2007

Pdfcube

OK, los escritorios 3D están de moda. Hoy en día compiz-fusion es conocido por muchos. Ahora, ¿Que sucede cuando los efectos mas populares se empiezan a aplicar en otras áreas?
Simple, podemos hacer presentaciones con bonitas transiciones gracias a pdfcube.

En el encuentro linux noté como está de moda realizar las diapositivas en formato pdf, en general cada expositor mostraba su material en este tipo de archivos, los que eran generados con latex. Si bien aún no sé utilizar este lenguaje, si puedo darme cuenta de lo práctico de realizar las diapositivas en este formato. Es muy portable, sólo requiere un visualizador de pdf, que hoy en día es casi un requisito de cualquier pc de escritorio. Y por último, no necesita inmensas cantidades de memoria, como es el caso de los software de ofimática.

Volviendo al encuentro, si bien todos utilizaban evince para mostrar sus diapositivas, un expositor en particular utilizó este software para su presentación, y de verdad que se veía muy bien. Luego de verlo me gustó bastante, motivo por el cual busqué el programa, di con su página, investigué sus dependencias y lo construí para mi sistema archlinux.

El programa se autodeclara en estado alpha. De hecho, posee una nula interfaz de usuario. Sin embargo con unas breves instrucciones se comprende como utilizarlo. Su uso es muy simple, y con el estado actual es suficiente para impresionar a mas de algún espectador.

Resumo algunas instrucciones del programa:

Para rotar el cubo desde una presentación a otra, basta presionar "c".
Si se desea realizar un acercamiento de entrada/salida, es necesario presionar las tecla "z", "j", "k", "l" y "h" según el área de la pantalla donde se desea acercar.

Pueden construirlo en archlinux, descargando este PKGBUILD que acabo de publicar en aur. En ubuntu y debian ya existen paquetes con este programa. De cualquier modo, las dependencias no son complicadas, así que debiera poder construirse fácilmente en cualquier distribución.

sábado, octubre 13, 2007

Nuestro viaje hacia arica

Como muchos saben, actualmente nos encontramos en el encuentro linux. Dejo las primeras líneas del artículo que estoy redactando. Por tiempo, lo completaré mas tarde, o quizás ya en santiago. La distribución de la universidad te obliga a estar moviendote constantemente, y la ausencia de internet en donde nos alojamos, nos obliga a usar el computador mientras se desarrollan las charlas.

Mientras estábamos en la sala de embarque para abordar el avión, luego de una foto que patudamente se la pedimos a una amable pasajera, nos llamó la atención un computador plomo, con un logo rojo en forma de espiral, que poseía en su parte superior, una cabellera larga, y una atractiva figura que adornaba a dicho computador. Correcto señor lector, ¡ERA UNA MUJER USANDO DEBIAN!.

Mas información acerca de la chica, de que hacía en el aeropuerto, hacia donde se dirigía, y a qué (con fotos :3 ) en un próximo reporte...

lunes, octubre 01, 2007

Creación de un webservice seguro mediante ssl

En mi curso de sistemas distribuidos tuve que explicar a mis compañeros como implementar un

webservice seguro. A pesar de unos imprevistos, gracias a Dios todo salio bien. Ahora que ya realicé la exposición, dejo a disposición del mundo cómo logre realizar un webservice
común y corriente, pero seguro gracias a la transmisión mediante la capa de socket seguro SSL.


Las herramientas utilizadas fueron las siguientes:


El primer paso, que no mencioné en la presentación fue la instalación del software. Para ello basta realizar

pacman -Sy jdk tomcat netbeans

así como descargar axis2. Yo opté por descargar el war. El que luego lo dejé en el directorio webapps de tomcat. Además, bajé la versión normal, sólo para tener acceso a los programas, pues es necesario uno en particular, tal como se verá mas adelante. La instalación de estos softwares es básica, por lo que no lo abordaré.


Luego de la instalación de las herramientas es la configuración de éstas. Tomcat se distribuye por defecto con la opción de ssl deshabilitada, por lo primero se explicará como habilitar ésta.


Creación de un certificado

La capa de socket seguro utiliza certificados para encriptar la información. Por lo que es necesario la creación de uno. Para lograrlo se utiliza la herramienta keytool, proveída junto con el sdk de java.


Su uso es simple, pues se debe indicar el archivo donde se almacenará el certificado. Ésto se realiza con el parámetro keystore. Además de esto, se deben indicar 4 parámetros adicionales que se enumeran a continuación:


El primer parámetro, llamado alias, indica el nombre que recibirá el certificado. Es importante que corresponda al nombre del host que proporcionará el web service.


Keypass y storepass indican la clave que se le asigna al certificado, en ambos parámetros las
contraseñas deben coincidir. Keytool exije que la contraseña tenga una longitud superior a 6 caracteres.


Keyalg indica el algoritmo de creación de la clave, se recomienda el uso de RSA, algoritmo que funciona mediante el sistema de clave pública y privada.


Un ejemplo de utilización es el siguiente.


keytool -genkey -alias localhost -keypass password -keystore /opt/tomcat/webapps/localhost.bin -storepass password -keyalg RSA


Habilitación de SSL

Para habilitar en el servidor Tomcat la conexión segura, basta descomentar la sección que
empieza con la etiqueta connector port=”8443”. Esta sección indica las directivas de como utilizar la seguridad SSL.


Es necesario indicarle cual es la llave que debe utilizar, así como la contraseña del certificado, y finalmente el alias de éste.


<Connector port="8443" maxHttpHeaderSize="8192"
maxThreads="150" minSpareThreads="25" maxSpareThreads="75"
enableLookups="true" disableUploadTimeout="true" acceptCount="100"

scheme="https" secure="true" clientAuth="false" sslProtocol="TLS"

keystoreFile="/home/tomcat/localhost.bin"

keystorePass="password" keyAlias="localhost" />


Al terminar de configurar esto, basta reiniciar el servicio tomcat para visualizar los datos. Se puede comprobar intentando conectarse al servidor mediante el protocolo https, y el puerto 8443.



Configuración de la aplicación

Cuando se habilita la seguridad en el servidor, esta permite acceder a las aplicaciones tanto de modo seguro como inseguro. Pero se busca que el servicio web funcione solamente mediante el primero. Para lograr que la aplicación encargada éste trabaje sólamente como SSL, en el caso
de tomcat hay que indicarselo en el archivo de configuración web.xml, el cual se encuentra en el directorio WEB-INF de la aplicación.


Para asegurar la aplicación, basta agregar el siguiente código dentro de la sección “web-app”


<security-constraint>

<web-resource-collection>

<web-resource-name>securedapp</web-resource-name>

<url-pattern>/*</url-pattern>

</web-resource-collection>

<user-data-constraint>

<transport-guarantee>CONFIDENTIAL</transport-guarantee>

</user-data-constraint>

</security-constraint>


Para que la aplicación utilice los cambios es necesario reiniciarla desde la interfaz de
administración de tomcat, o bien reiniciando este último. Así, el acceso a la aplicación que provea los webservice será exclusivamente mediante el protocolo de seguridad.


Creación del webservice

Para programar el servicio web se utilizó el framework axis2, el cual implementa el protocolo SOAP de acuerdo a lo especificado por la W3C. La gran ventaja de este framework es la facilidad para lograr esto, pues basta con programar clases jav comunes y corrientes tal como se verá a continuación.


El proceso empieza con la definición de una interfaz, la que se denominará contrato. En ella se
indicará cuales serán los servicios web disponibles.


Como ejemplo se utilizará la interfaz Matematica, la que define un método llamado
sumar, el cual posee dos parámetros de tipo entero.

package ejemplo;

public interface Matematica {

public int sumar(int a, int b);

}


Una vez definido el contrato, el siguiente paso es compilar la clase, y luego crear un archivo de
descripción del lenguaje, en adelante wsdl, el cual se crea mediante la utilidad proveída por axis2 mediante el siguiente comando:


java2wsdl.sh -cn ejemplo.Matematica


Éste comando crea un archivo llamado Matematica.wsdl, el cual se utilizará mas
adelante.


Así como axis nos puede funcionar sin tomcat, una interfaz es inutil sin una implementación.
Motivo por el cual es necesario realizar esta. Para ello se creó el archivo servicioMatematica.java, clase que se expone a continuación.


package ejemplo;


public class servicioMatematica implements Matematica{

public int sumar(int a, int b){

return a + b;}


}


Una vez compilada la implementación, sólo falta definir los servicios. Para realizar dicha
definición se crea un archivo llamado services.xml. En éste es necesario indicar el nombre de los servicios proporcionados por la clase, así como la clase que implementa de esta.


<?xml version="1.0"
encoding="UTF-8"?>

<service>

<description>

Servicio de ejemplo

</description>

<parameter
name="ServiceClass" >ejemplo.servicioMatematica</parameter>

<operation name="sumar">

<messageReceiver
class="org.apache.axis2.rpc.receivers.RPCMessageReceiver"/>

</operation>

</service>

Con esos cuatro archivos creados se está en condiciones de crear el webservice. Para que axis2 reconozca estos, es necesario crear un paquete jar, con la extensión cambiada por aar.


Para crear dicho paquete es necesario definir una estructura de archivos bastante simple. En ella debe existir un directorio META-INF que contenga los archivos xml. Y en la base se debe agregar las clases que componen el servicio web, respetando la jerarquía de paquetes.


El comando para crear dicho archivo se explica a continuación:


jar -cvf ejemplo.aar -C ejemplo.aar/ .


Donde los parámetros cvf indican que debe crear el paquete jar, y C define el directorio a agregar.


Para cargar el servicio web, en la interfaz de administración de axis2 existe una opción llamada “upload service”, la que permite instalar el web service de una manera sencilla. Cable señalar que para un correcto funcionamiento de esta, dentro del directorio de aplicaciones de tomcat debe existir uno llamado axis2/WEB-INF/services, lugar que debe tener permisos de escritura


Para verificar que todo ha funcionado, la dirección donde se debiera encontrar el lenguaje de
definición del servicio es la siguiente:


https://localhost:8443/axis2/services/ejemplo?wsdl

Donde localhost debe ser la dirección del servidor, y axis2 es el nombre del directorio que contiene el framework.


Consumo del web service utilizando netbeans

El entorno integrado de desarrollo proveído por sun, netbeans provee herramientas que simplican el consumo de los webservice.

Para utilizarlas, basta con agregar al proyecto un cliente webservice, e indicar como dirección del
wsdl la ruta del servicio seguro indicada anteriormente. Así netbeans interpreta la definición del webservice, y genera las referencias, que para usarlas deben ser arrastradas hacia el código.


Como se está utilizando un socket seguro, es necesario utilizar las definiciones terminadas en https.


Certificados para el cliente

Al utilizar certificados se tiene un gran inconveniente. Este problema nace debido al requerimiento de aceptar un certificado, único método para asegurar la validez de éste.


Java utiliza SSL, pero los certificados deben ser validados por una entidad certificadora. Para efectos del proyecto los certificados usados no están validados, motivo por el cual al intentar ejecutar el cliente arrojará una excepción. Para poder utilizar los certificados de prueba generados con keytool, es necesario agregarlos manualmente, para ello se utiliza la herramienta proveía por Andreas Sterbenz en su página personal


El uso es simple, basta ejecutar el programa con el comando

java InstallCert localhost:8443


Una vez creado el certificado, basta copiar jssecacerts al directorio /opt/java/jre/lib/security/. Luego, las aplicaciones reconocerán el certificado de prueba y
por lo tanto podrán usar el servicio web por ssl.