Mostrando las entradas con la etiqueta cherokee. Mostrar todas las entradas
Mostrando las entradas con la etiqueta cherokee. Mostrar todas las entradas

domingo, agosto 19, 2012

Sobre grails y plugins


Por curiosas razones (ocupar cherokee como proxy server y no tener un módulo de AJP) tuvimos un bug con recursos protegidos por SSL, en concreto tomcat nos regresaba recursos con http en vez de https...

La primera aproximación fue excluir los recursos que daban problemas, lo cual no iba a prevenir que esto siguiera pasando, en la configuración se detalla como hacerlo, en concreto hay que usar grails.resources.adhoc.excludes para excluir los recursos que causan problemas.

Cuando volvió a producirse el error se investigó mejor y se analizó el código del plugin de  resurces, de lo cual se llego a un @todo que nos daba problemas... 


○ → find . -name "*.groovy"  | xargs grep -i todo | awk -F'/' '{out=$8; for(i=9;i<=NF;i++){out=out" "$i};print out}'

ResourceTagLib.groovy:               @todo where a module resource is bundled, need to satisfy deps of all resources in the bundle first!
ResourceTagLib.groovy:     * @todo Later, we implement ESP hooks here and add scope="user" or scope="shared"
ResourceTagLib.groovy:        def baseUrl = ''    @todo get from config
ResourceTagLib.groovy:               @todo do we need to toggle http https here based on current request protocol?
ResourceTagLib.groovy:     * @todo this currently won't work for absolute="true" invocations, it should just passthrough these

Navegando por las entrañables aguas del código fuente ajeno llegamos a la función que nos daba el error redirectToActualUrl, la solución fácil y para no esperar una actualización en el plugin fue  sustituir la función por medio de metaprogramación en groovy.


        ResourceProcessor.metaClass.redirectToActualUrl = {ResourceMeta res, request, response ->
            //... Codigo ...
            def u = (grailsApplication.config.grails.serverURL? grailsApplication.config.grails.serverURL.toString() : request.contextPath) + staticUrlPrefix+res.linkUrl
            //... Codigo ...

        }


Como moraleja no hay que confiar mucho en plugins ajenos, hay por todos lados @todo, uno de los que más me afectan son las pruebas unitarias, no toda la funcionalidad de GORM esta integrada, casi siempre se termina haciendo pruebas de integración para solventar este problema. Aún así grails es una herramienta excelente para programar aplicaciones web, no regresaría a java + frameworks para esto...


sábado, agosto 18, 2012

ssl y cherokee

Nadie va a negar que godaddy vende certificados muy baratos en comparación con verisign, así que  para empresas de nueva creación godaddy es la opción... Y por barato los problemas no tardan en aparecer.

Nuestro certificado marcó problemas con dispositivos móviles. En concreto no reconocía a la autoridad certificadora. Luego de investigar y de no tener idea en que parte había hecho las cosas mal descubrí en el siguiente blog la solución al problema... Y era tan simple como concatenar el archivo gd_bundle al certificado:

$cat gd_bundle.crt >> dominio.com.crt

powered by cherokee

Dejo la nota original.
http://fluidsurveys.com/cherokee-web-server-ssl-setup/

After trying many things, and contacting godaddy, who told me they did not support Cherokee, I finally managed to figure out how to get it to work. The answer is pretty simple, if you follow the rest of the directions about setting up SSL with Cherokee, pointing your virtual server to the correct ssl certificate (Ours was fluidsurveys.com.crt) and the proper key (fluidsurveys.com.key) there was no place to input the gd_bundle.crt (The inermediate certificate package that godaddy provided us). The solution is to combine your site certificate (fluidsurveys.com.key) with your bundle certificate, root certificate, or intermediate certificates. To do this, simply make a backup of your site certificate (fluidsurveys.com.crt), then cat the intermediate bundle with the original site certificate.  “cat gd_bundle.crt >> fluidsurveys.com.crt” This should now solve your issue with IE6 not recognizing the issuer of your SSL certificate.