Aun no tuve la suerte de poder visitar mi país por turismo, pero poco a poco por trabajo en representación de la UNQ, y ahora un poco también en mi rol de «doble agente» (UNQ/SIU … cuando no me calso el rol de UNAJ también) estoy conociendo varias de las principales ciudades de mi país por las distintas reuniones de comité y de trabajo que tenemos.
Archivo del Autor: Gustavo Pilla
Consumir Web Service del SIU-Mapuche desde SIU-Toba
Claramente lo primero que tengo que tener, es correctamente instalada la libreria WSF/PHP en el servidor del SIU-Mapuche, y tambien en el servidor en el cual estamos desarrollando la aplicación ya que es fundamental para el manejo de WS en SIU-Toba esta librería.
Generando el entorno (Seguridad)
Los WS service del SIU, por convención TODOS, menos los de prueba (eco y ping) deben funcionar «seguros», esto quiere decir que deben viajar encriptados y firmados (utilizando criptografía asimétrica). Para realizar esto es necesario utilizar dos pares de certificados (unos para el cliente, otros para el servidor).
Para crear los certificados debemos tener un archivo openssl.ini el cual vamos usar para facilitar el ejemplo y al cual le podemos editar las siguientes partes:
1 2 3 4 5 6 7 8 |
[ req_distinguished_name ] C = AR ST = Buenos Aires L = Quilmes O = SIU OU = Sistemas CN = Sistemas emailAddress = gpilla@siu.edu.ar |
y la parte:
1 2 3 4 5 |
[dir_sect] C=AR O=SIU OU=Sistemas CN=Gustavo Pilla |
con la información particular de la institución donde trabajan.
Para generar los certificados debemos ejecutar:
1 2 3 |
# openssl req -x509 -nodes -days 20000 -newkey rsa:1024 -keyout cliente.key.sign -config {ruta_al_archivo}/openssl.ini -out cliente.crt # openssl rsa -in cliente.key.sign -out cliente.key # rm cliente.key.sign |
Y repetir la operación para generar los certificados para el servidor:
1 2 3 |
# openssl req -x509 -nodes -days 20000 -newkey rsa:1024 -keyout server.key.sign -config {ruta_al_archivo}/openssl.ini -out server.crt # openssl rsa -in server.key.sign -out server.key # rm server.key.sign |
Configuración del servidor (SIU-Mapuche)
Primero que nada, hay que saber que los WS del SIU-Mapuche, tienen un sistema de seguridad por el cual se permite la activación y desactivación de los mismos
El sistema SIU-Mapuche por default trae desactivados todos los WS exepto 2 que son de prueba (echo y ping). Para activar los WS se debe ir a Configuración, una vez que estamos dentro de la operación Configuración se debe ingresar a Servicios Web -> General, ahí tildar los servicios que necesitamos, y guardar los cambios.
Una vez habilitados los WS, debemos configurar los certificados (3 de los 4 que creamos antes).
Debemos subir 3 certificados al servidor donde se encuentra el SIU-Mapuche
- server.crt (Certificado servidor)
- server.key (Clave servidor)
- cliente.crt (Certificado cliente)
Cuando se tengan estros tres archivos subidos al servidor, vamos a Configuración -> Servicios Web -> Seguridad, y llenamos con las 3 rutas completas a los archivos que acabamos de subir según corresponda y guardamos.
Configuración del cliente (nuestro proyecto en SIU-Toba)
Dentro de nuestro proyecto, debemos crear un nuevo «servicio web accesible», esto lo podemos realizar desde el toba_editor en la pestaña «Datos» -> «Servicios Web Accesibles», aquí hacemos click en el botón agregar.
En el ejemplo que voy a mostrar, vamos a trabajar con los WS de agentes.
1 2 |
<strong>Identificador:</strong> mapuche_agentes <strong>URL:</strong> http://<em>{ruta_al_mapuche}</em>/servicios.php/ServicioWebAgentes |
Y guardamos los cambios.
Nota: La URL siempre esta formada por el punto de acceso a los servicios web del SIU-Mapuche (http://{ruta_al_siu_mapuhce}/servicios.php) mas el nombre del WS que puede verse en el SIU-Mapuche en «Ayuda» -> «Servicios Web» (ServicioWebAgentes, ServicioWebCargos, ServicioWebPruebas, etc).
Lo próximo que tenemos que hacer es configurar el «certificado del servidor» en la «instancia cliente» (nuestro proyecto). Esto lo podemos hacer con un comando de consola de toba:
1 |
# toba servicios_web cli_configurar -c {ruta_fisica_al_certificado_del_server} -s mapuche_agentes -p {nombre_de_nuestro_proyecto} |
Con todo esto, ya deberíamos tener todo configurado y listo para poder trabajar (codear!).
NOTA: Tomo por sentado de que tienen conocimientos de como crear operaciones en SIU-Toba.
Para este ejemplo, creamos una operación la llamamos Legajo y le agregamos un CI, al CI le agregamos un cuadro con 3 columnas (legajo, nombre y apellido) y extendemos el CI.
agregamos el siguiente código:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
function conf__cuadro_agentes(mapuche_mini_ei_cuadro $cuadro) { //--1- Arma el mensaje $opciones = array('action' => 'getAgentes'); //En action se detalla la operacion a invocarse $filtro = array(); $filtro[] = array('campo'=>'apellido', 'operador' => 'contiene', 'valor'=> 'pilla'); $mensaje = new toba_servicio_web_mensaje(array('parametros' => array('filtro' => $filtro )) , $opciones); //--2- Arma el servicio $opciones = array(); $servicio = toba::servicio_web('mapuche_agentes', $opciones); //-- 3 - Muestra la respuesta try { $respuesta = $servicio->request($mensaje); $cuadro->set_datos($respuesta->get_array()); } catch (toba_error_servicio_web $e) { toba::notificacion()->info($e->get_mensaje().' (codigo "'.$e->get_codigo().'")'); } } |
FIN!
Proximamente voy a subir como hacer para consumir los WS del SIU-Mapuche desde afuera del SIU-Toba.
Pueden bajarse el proyecto demo que realice y poder utilizarlo de ejemplo, solo tienen que cargar el proyecto en un SIU-Toba 2.3.4 y cargarlo con el siguiente comando de toba:
1 |
toba proyecto cargar -p mapuche_mini -d <em>{ruta_a_donde_esta_el_proyecto}</em> |
Referencias:
- http://toba.siu.edu.ar/trac/toba/wiki/Referencia/ServiciosWeb
- Evento Anual en la UNLP curso de WS SIU-Toba
Links interesantes de la semana!
Lo que estuve taggeando en los últimos días
- Bootstrap Live Editor, pues eso, un editor live para Bootstrap –
- Cuidado con las apps de Android y los Wi-Fi poco seguros –
- Desarrollo de aplicaciones móviles con jQuery Mobile, Android SDK y PhoneGap (parte 2) | Blog | Molecularts | HTML5, Diseño Web, Moviles, Marketing, Arte y Creatividad –
- jQuery Mobile | jQuery Mobile –
- Project management software, online collaboration: Basecamp –
- Pocket (Formerly Read It Later) –
- Apache Cordova –
- Millones de programadores PHP ya pueden crear apps para Android « El Android Libre –
- Arduino – ArduinoBoardDue –
- Humans TXT: Somos humanos, No máquinas.. –
- Aviones robóticos autónomos que pueden volar sin GPS?log=out –
«Our Story in 1 Minute» un video sobre la historia de la tierra… Un buen resumen para fiacas
Internet + Google = Me ahorraron trabajo (Pero no como de costumbre).
Queria escribir, comentar … algo loco que me sucedio… y me alento a seguir posteando cosas en el blog…
Como dice el titulo, pero a diferencia de el 99,99% de las veces, internet y google no me ayudaron a conseguir información para solucionar un problema, sino que me ayudo brindando información a 3ros que yo habia publicado, ahorrandome el trabajo de tener que compartirla en lugares especificos (de eso realmente estoy trabajando)… aca va lo que paso:
Si alguien ve este blog, notaran que no soy un asiduo posteador, es mas… casi nunca lo hago… pero en uno de los trabajos que tengo, necesitaba investigar y probar algo entonces, habia realizado un post sobre como instalar una libreria media rara de Servicios Web que utiliza el SIU, realmente como un ayuda memoria para cuando lo necesite, para tenerlo en cualquier lugar asi de donde estaba conectado poder copiarlo y pegarlo, total… no era información sensible (se puede encontrar en otros lados googleando un poco).
Lo buena onda de todo esto, es que no tuve que postearlo en ningun lado, los usuarios del SIU, gracias a la magia de internet (Google!) llegaron solos a la información que estaba en mi blog, y la compartieron en un post de la comunidad SIU.
Realmente me resulto loco, gratificamente, y motivador para seguir posteando cosas.. (por eso el ultimo post) … no es totalmente al pedo 😛 … no es solo un ayudamemoria personal (hay un par de post que los mire y re mire un millon de veces, por que no me acordaba como hacerlo), tambien les sirver a terceros… como este post… o tambien este otro (este ultimo lejos!)… que aparecen como las paginas con mas visitas… algunas cosas son obvias (inclusive copias de la documentación oficial con algun tweak personal), otras cosas que me costaron encontrarlas (encontrar la versión que realmente funcione) y/o estaban en otro idioma…
Espero que le siga sirviendo a la gente…
PD: En el nuevo Debian que me instale aun no puse el corrector ortografico, asi que tengo un extra de faltas en los ultimos posts 😛
Compilación de PostgreSQL 8.3.* en Debian 6 (Squeeze)
Volvi… volvi a tener un escritorio Debian… Debian puro… y tengo que reinstalar el servidor PostgreSQL 8.3 para los sistemas SIU (esta es la versión recomendada para la mayoria de los sistemas).
Claramente no estoy inventando la rueda, solo es lo que dice la documentación oficial de postgres, sumado a la instalación de algunas cosas para Debian… pero bue… vi que mis posts fueron utiles para otros… ademas siempre me sirve de ayudamemoria.
Primero que nada me bajo los fuentes del postgres y lo descomprimo
1 2 3 |
# cd /usr/local/src # wget http://ftp.postgresql.org/pub/source/v8.3.20/postgresql-8.3.20.tar.gz # tar -xzf postgresql-8.3.20.tar.gz |
(Al dia de la fecha la versión 8.3.20 es la ultima versión estable de esta rama)
Una vez ahi, necesito compilarlos… pero tengo que bajarme las herramientas…
1 |
# apt-get install build-essential |
Y tambien es necesario instalar unas librerias/dependencias para compilar el postgres.
1 |
# apt-get install zlibg1-dev libreadline-dev |
Y empezamos el proceso de compilación, configurandolo… pasamos el parametro –prefix con la ruta donde queremos tener el postgres compilado, yo por costumbre lo dejo en /usr/local/postgres-{version}
1 2 |
# cd postgresql-8.3.20 # ./configure --prefix=/usr/local/postgresql-8.3.20 |
Corremos un make y un make install
1 2 |
# make # make install |
Luego de haber compilado, y tener el postgres instalado, debemos realizar alguntas tareas mas antes de arrancar el servicio
Una buena costumbre, es hacer un link simbolico con el nombre de la aplicación sin la versión y despues desde otros lugares llamar a la aplicación con este link simbolico… (ya van a ver ejemplos mas adelante) para que al hacer cambios de versión, el cambio sea menos traumaticos y no se tenga que ir cambiando rutas por todo el servidor.
1 |
# ln -s /usr/local/postgresql-8.3.15 /usr/local/postgresql |
Crear usuario para postgres
1 |
# adduser postgres |
Crear carpeta para la base de datos
1 2 3 |
# mkdir /usr/local/postgresql/data # chown postgres /usr/local/postgresql/data # exit |
Crear una instancia de la base de datos (cluster)
1 2 |
# su - postgres # /usr/local/postgresql/bin/initdb --no-locale -D /usr/local/postgresql/data |
Link a los binarios
1 |
# nano /etc/profile |
y agregar la siguiente linea antes de EXPORT_PATH
1 |
# PATH=/usr/local/postgresql/bin:$PATH |
Configurar el inicio automatico
1 2 3 |
# cp /usr/local/src/postgresql-8.3.20/contrib/start-scripts/linux /etc/init.d/postgresql # update-rc.d postgresql defaults # nano /etc/init.d/postgresql |
Y suplantar las siguientes lineas:
prefix=/usr/local/pgsql por prefix=/usr/local/postgresql
PGDATA=»/usr/local/pgsql/data» por «PGDATA=/usr/local/postgresql/data»
Arrancar el PostgreSQL
1 |
# /etc/init.d/postgresql start |
FIN… Ser feliz!
Lo ultimo interesante que encontre en la Web.
Ultimamente estuve flojo… y no lei mucho el Google Reader… asi que vengo… lento con links interantes…
- Comparación de ventanas modales js (osea popup 2.0)
- How to configure https for Apache2.2 and consume PHP web services over https
- Installing WSO2 WSF/PHP on Debian – Damien Bezborodov
- 8 Regular Expressions You Should Know – Nettuts+
- Compilación y empaquetado en GNU/Linux Debian y derivados | Phenobarbital con Soda!
- http://www.juanjoconti.com.ar/files/paquetes-debian.html – Conversacion con una Developer Debian sobre como empaquetar un .deb
- Brackets – Open Source Code Editor
Instalación de WSF/PHP en Debian Lenny
Antes que nada probé realizarlo en Ubuntu 12.04 sin ningún éxito con el README.INSTALL que esta en el paquete y no funciono, y probé instalarlo en Debian Lenny también con el mismo tutorial sin éxito.
Sobre Ubuntu, compilaba todo perfectamente pero al tratar de probar la librería me tiraba un error que tras googlear no se encontraba solución aparente y acusaban de que era un problema con Ubuntu desde la versión 11.04, en Debian Lenny, fue mucho mas grave, directamente no podía compilarlo. Según pude leer el ./configure no tiene los chequeos suficientes que debe tener.
Como realmente creo que muy pocas veces se valla a instalar sobre Ubuntu, mas que para pruebas, opte por avanzar con la investigación sobre una maquina virtual Debian instalada absolutamente desde 0 con solo el fin de probar la librería.
Y ahora… la magia en castellano!
1- Instalar prerrequisitos desde apt-get
1 |
# apt-get install php5 php5-dev php5-xsl build-essential libxml2-dev unzip libssl-dev pkg-config |
2- Compilar y instalar Apache Axis2/C
1 2 3 4 5 6 7 |
# cd /usr/local/src # wget http://apache.mirror.aussiehq.net.au//ws/axis2/c/1_6_0/axis2c-src-1.6.0.tar.gz # tar -xzvf axis2c-src-1.6.0.tar.gz # cd axis2c-src-1.6.0 # ./configure --enable-libxml2 # make # make install |
NOTA: Como ♪nada es para siempre♪, y no puedo asegurar la disponibilidad del link con el axis2c lo pueden descargar de mi blog ( axis2c-src-1.6.0.tar )… pero por las dudas siempre traten de bajar el de la URL anterior.
3- Bajar y descomprimir los fuentes de WSF/PHP
1 2 3 4 |
# cd /usr/src/local # wget http://dist.wso2.org/products/wsf/php/2.1.0/wso2-wsf-php-src-2.1.0.zip # unzip wso2-wsf-php-src-2.1.0.zip # cd wso2-wsf-php-src-2.1.0 |
EDITADO 11/11/2012: Un comentario interesante, en una instalación que estoy haciendo precisamente ahora, por alguna razón cuando hago el «wget» me dice que me lo prohíbe (Error 403), no se si le agregaron alguna restricción al servidor para que si el cliente es wget no permita descargas. Probé bajarlo con Firefox, y no hubo problemas, solo un comentario, para que nadie enloquezca.
Como tampoco confío cuanto tiempo va a estar publicada esta librería también les dejo mi propia descarga ( FALTA! )
4- Compilar y instalar WSF/PHP
1 2 3 4 |
# cd /usr/src/local/wso2-wsf-php-src-2.1.0 # env CPPFLAGS="-I/usr/local/axis2c/include/axis2-1.6.0/" LDFLAGS="-L/usr/local/axis2c/lib" ./configure # make # make install |
5- Configurar PHP
Agrego el modulo de wsf a los modulos que corren con php.
1 |
# echo "extension=wsf.so" > /etc/php5/conf.d/wso2.ini |
Configuro para que las librerias de wsf sean accesibles en el include_path de php. Para esto editar el php.ini y agregar una linea que se cambie de:
1 |
include_path = ".:/usr/share/php" |
y se transforme en:
1 |
include_path = ".:/usr/share/php;/usr/local/src/wso2-wsf-php-src-2.1.0/scripts" |
5- Verificar
1 |
# /etc/init.d/apache2 restart |
Crear un archivo phpinfo.php y verificar que «Additional .ini files parsed» contiene «wso2.ini». Chequear que las extensiones «wsf» y «xsl» esta instaladas.
Correr el siguiente test script.
6- Ser feliz!
Un nuevo laburo…
Links interesantes… peguenle una ojeada..
Lo que estuve taggeando en los últimos días … y hay algunos que están muy buenos…