Utilizar websockets con Apache

Creo que los websockets tienen futuro, aunque aún está un poco complicado el meterle mano a la hora de desarrollar. Para quienes quieran usarlo en sus proyectos junto a Apache tan solo tendrán que permitir ejecutar Python en Apache e instalar pywebshocket.

Primero es necesario indicar que Apache reconozca Python en nuestro virtual host:

Options Indexes FollowSymLinks MultiViews
AllowOverride None
Order allow,deny
allow from all
AddHandler mod_python .py
PythonHandler mod_python.publisher
PythonDebug On

Despues instalar pywebshocket:

sudo python setup.py build
sudo python setup.py install

Y por último indicar en el httpd.conf añadirlo al Apache:

PythonPath "sys.path+['/usr/local/lib/python2.6/dist-packages/mod_pywebsocket']"
PythonOption mod_pywebsocket.handler_root /home/travis/Desktop/websock_handlers
PythonHeaderParserHandler mod_pywebsocket.headerparserhandler

How to set up apache to serve html5 websocket applications with pywebsocket

|

Eliminar utm_source de la URL mediante htaccess

El otro día me preguntaba un amigo cómo quitar los parámetros que mete Google Reader en las URLs, ya que debido a ello algunos servicios que monitorizan referencias, consideraba las urls diferentes.

El truco es fácil, sólo hay que meter en el .htaccess lo siguiente:

RewriteCond %{QUERY_STRING} utm_source.*
RewriteRule (.*) $1? [R=301,L]
|

Redirigir iPhone, Blackberry y Palm desde .htaccess

Sencillo truco que nos puede ayudar a redireccionar nuestra web a la versión móvil cuando nos visite un usuario desde un iPhone, una Blackberry o una Palm

RewriteCond %{HTTP_USER_AGENT} ^.*iPhone.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*BlackBerry.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]
RewriteCond %{HTTP_USER_AGENT} ^.*Palm.*$
RewriteRule ^(.*)$ http://mobile.yourdomain.com [R=301]

Redirect iPhone, Blackberry, & Palm Requests With .htaccess

Vía / @jlantunez

| |

Añadir variables a CSS mediante PHP y htaccess

Curioso script que nos permite añadir variables a nuestras CSS usando para ello PHP y htaccess. No es algo que recomendaría hacer por tema de rendimiento, pero sí para proyectos en los que quienes realicen las páginas no tenga demasiado conocimiento de desarrollo web.
El proceso es sencillo, las css mediante Apache se redireccionan a un script PHP, en las CSS se crean variables del siguiente modo $color: #FFF; y luego el nombre de la variable se usa en cada estilo. El PHP parsea el fichero CSS y sustituye cada aparición de la variable por su correspondiente valor. Se cachea el resultado y se muestra.
Puede que haya modos más eficientes, como que el archivo CSS realmente no exista, y cuando sea así, se ejecute el script y se cachee, así la próxima vez que se acceda, no se pasa por el script PHP.
How to Add Variables to Your CSS Files
Vía / CSS Globe

Manual y ejemplos de mod_security

mod_security es un módulo de Apache que nos permitirá añadir seguridad a nuestro servidor web, detectando y previendo ataques. Para los que necesitemos usarlo, nos vendrá muy bien esta serie de tutoriales:

  • mod_security + mod_rewrite
  • Evitar spam en los campos POST de los formularios
  • Activar mod_security en DreamHost
  • Descativar mod_security para una determinada IP
  • Descativar mod_security con autorización en htaccess
  • Ejemplo de configuración para DreamHost
  • Bloquear spam
  • Forzar espera de ms en conexiones
  • Permitir ciertos REQUEST_METHODS
  • y más

mod_security Guide and Examples of use in .htaccess

mod_qos: prioridades para peticiones en Apache

QoS (calidad del servicio) se trata mecanismos de control para proveer diferentes prioridades a diferentes usuarios, aplicaciones y conexiones, realmente es más gestión de recursos que calidad del servicio. Cuando queremos limitar el uso de Apache y dar prioridades a diferentes peticiones podemos usar mod_qos.

Ofrece mecanismos para gestionar:

  • Número máximo de peticiones concurrentes a una URL o a un dominio virtual.
  • Limitación del ancho de banda, ya sea por número de peticiones por segundo o kilobytes por segundo.
  • Posibilidad de detectar usuarios especiales que no sufriran las restricciones o lo harán en menor grado.
  • Denegar operaciones no autorizadas
  • Limitaciones en el nivel TCP, por ejemplo el número máximo de conexiones permitidas desde una IP.

mod_qos

Vía / Apache-es

Evitar boots molestos mediante htaccess

La gente de AskApache nos ofrece un ejemplo de htaccess que nos permitirá evitar que nos lean boots molestos. La lista llega a más de 400 robots, lo cual puede suponer un enorme ahorro en ancho de banda y recursos.

ErrorDocument 403 /403.html
RewriteEngine On
RewriteBase /
# IF THE UA STARTS WITH THESE
RewriteCond %{HTTP_USER_AGENT} ^(aesop_com_spiderman|alexibot|backweb|bandit|batchftp|bigfoot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(black.?hole|blackwidow|blowfish|botalot|buddy|builtbottough|bullseye) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(cheesebot|cherrypicker|chinaclaw|collector|copier|copyrightcheck) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(cosmos|crescent|curl|custo|da|diibot|disco|dittospyder|dragonfly) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(drip|easydl|ebingbong|ecatch|eirgrabber|emailcollector|emailsiphon) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(emailwolf|erocrawler|exabot|eyenetie|filehound|flashget|flunky) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(frontpage|getright|getweb|go.?zilla|go-ahead-got-it|gotit|grabnet) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(grafula|harvest|hloader|hmview|httplib|httrack|humanlinks|ilsebot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(infonavirobot|infotekies|intelliseek|interget|iria|jennybot|jetcar) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(joc|justview|jyxobot|kenjin|keyword|larbin|leechftp|lexibot|lftp|libweb) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(likse|linkscan|linkwalker|lnspiderguy|lwp|magnet|mag-net|markwatch) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(mata.?hari|memo|microsoft.?url|midown.?tool|miixpc|mirror|missigua) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(mister.?pix|moget|mozilla.?newt|nameprotect|navroad|backdoorbot|nearsite) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(net.?vampire|netants|netcraft|netmechanic|netspider|nextgensearchbot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(attach|nicerspro|nimblecrawler|npbot|octopus|offline.?explorer) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(offline.?navigator|openfind|outfoxbot|pagegrabber|papa|pavuk) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(pcbrowser|php.?version.?tracker|pockey|propowerbot|prowebwalker) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(psbot|pump|queryn|recorder|realdownload|reaper|reget|true_robot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(repomonkey|rma|internetseer|sitesnagger|siphon|slysearch|smartdownload) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(snake|snapbot|snoopy|sogou|spacebison|spankbot|spanner|sqworm|superbot) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(superhttp|surfbot|asterias|suzuran|szukacz|takeout|teleport) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(telesoft|the.?intraformant|thenomad|tighttwatbot|titan|urldispatcher) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(turingos|turnitinbot|urly.?warning|vacuum|vci|voideye|whacker) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(wget|widow|wisenutbot|wwwoffle|xaldon|xenu|zeus|zyborg|anonymouse) [NC,OR]
# STARTS WITH WEB
RewriteCond %{HTTP_USER_AGENT} ^web(zip|emaile|enhancer|fetch|go.?is|auto|bandit|clip|copier|master|reaper|sauger|site.?quester|whack) [NC,OR]
# ANYWHERE IN UA -- GREEDY REGEX
RewriteCond %{HTTP_USER_AGENT} ^.*(craftbot|download|extract|stripper|sucker|ninja|clshttp|webspider|leacher|collector|grabber|webpictures).*$ [NC]
# ISSUE 403 / SERVE ERRORDOCUMENT
RewriteRule . - [F,L]

También nos ofrecen una alternativa con SetEnvIfNoCase

Blocking Bad Bots and Scrapers with .htaccess

|

Yahoo lanza la mayor aplicación Hadoop

Yahoo ha lanzado la mayor aplicación Hadoop existente. Yahoo! Search Webmap es una aplicación que se ejecuta en un cluster de más de 10.000 máquinas Linux, que produce datos para cada consulta que se hace en Yahoo! Web search query.

Entre los datos que maneja Webmap nos encontramos con:

  • Un trillón de elaces entre páginas.
  • 300 TB de datos de salida (comprimidos).
  • 5 Petabytes de disco.

El proceso no es nuevo, solo es nuevo el uso de Hadoop, el cual permite ahorrar un 66% de tiempo que la versión anterior.

Por si a alguien le interesa, unos comentarios de los desarrolladores de Yahoo.

Yahoo! Launches World’s Largest Hadoop Production Application

Vía / dzone

| | |

AROUNDMe: servidor de espacios colaborativos

AROUNDMe collaboration server es un sowfware que permite crear espacios sociales en la Web basados en la colaboración. Ofrece a la gente la posibilidad de juntarse con otras personas que compartan intereses comunes, ya sea en grupos públicos o privados. Mediante el uso de blogs, foros y wikis, los usuarios pueden compartir información o conocimientos, y aprender de otros.
Se trata de un software gratuito que permite crear múltiples páginas web, personalizadas usando CSS, XHTML y Javascript. Añadir herramientas como libros de visitas, blogs comunitarios, foros y wikis. Medir la actividad de un espacio, para así poder medir el estado o la repercusión.
Es necesario tener PHP5 en Apache o IIS y MySQL 4.1+, a la vez que disponer la posibilidad de modificar el dominio ya que los usuarios se crean con subdominios.
AROUNDMe collaboration server

Ejemplos de mod_security

La gente de Ask Apache nos ofrece una serie de ejemplos sobre el uso de mod_security, el cual da la posibilidad de escanear todos los mensajes recibidos en tu web, incluyendo POST, trackbacks, pings, Ajax, etc… y permite crear reglas que paren el spam y prevean ataques.

Algunos ejemplos están centrados en DreamHost, lo que es bueno para los usuarios de este hosting.

De los ejemplos que ofrece me gustaría destacar:

Bloquear el spam de WordPress


SecFilterSignatureAction deny,nolog,status:403
SecFilterSelective ARG_url "casino|ringtone|lyrics"
SecFilterSelective ARG_comment_post_ID "^$"
# reject blog spam from all POST and GET fields
SecFilterSelective ARGS "blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam \
blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam|blockspam \
nomorespam|nospam"

La directiva FilesMatch indica que solo ha de ejecutarse en esos ficheros. La línea ARG_url indica que se tomará como spam las peticiones con un campo en el form que tenga name o id como url alguno de los valores que se indican. Algo parecido pasa con la línea ARG_comment_post_ID, que tomará como spam los mensajes que no envie en campo comment_post_ID. Y la última línea busca en todos los get y post alguna de las palabras que se indican.

mod_security Guide and Examples of use in .htaccess