<?xml version="1.0" encoding="utf-8"?>
        <?xml-stylesheet type="text/css" href="http://www.orvtech.com/styles/feed.css"?>
<rss version="2.0"
 xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
 xmlns:dc="http://purl.org/dc/elements/1.1/"
 xmlns:admin="http://webns.net/mvcb/"
 xmlns:atom="http://www.w3.org/2005/Atom"
>
<channel>
<title>Categorizado como: IRC | Linux y el NSLU2</title>
<atom:link href="http://www.orvtech.com/archives/irc/index-rss.xml" rel="self" type="application/rss+xml" />
<link>http://www.orvtech.com</link>
<description></description>
<dc:language>es-ve</dc:language>
<dc:creator>orvtech</dc:creator>
<dc:date>2010-09-02T18:22:06-04:00</dc:date>
<admin:generatorAgent rdf:resource="http://nanoblogger.sourceforge.net" />
<image><link>http://www.orvtech.com</link><url>http://www.orvtech.com/images/feedicon.png</url><title>Categorizado como: IRC | Linux y el NSLU2</title></image>
<item>
<link>http://www.orvtech.com/archives/2010/04/16/script_de_arranque_para_znc_bouncer/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2010/04/16/script_de_arranque_para_znc_bouncer/index.html</guid>
<title>Script de arranque para ZNC Bouncer.</title>
<dc:date>2010-04-16T16:06:45-04:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, Scripts, NSLU2, Apple, IRC</dc:subject>
<description><![CDATA[<p>
Hace un par de artículos publique como tener el servicio de push desde un canal de <a href="http://www.orvtech.com/archives/2010/03/03/el_nslu2_como_puente_para_tener_push_de_un_servidor_irc_en_el_iphone/index.html">IRC para el iPhone</a>. Después de esa instalación quede inconforme con la forma en que hay que arrancar y parar ZNC en el servidor así que decidí crear un script de arranque. 
</p>
<p>
El siguiente script permite arrancar, parar, recargar la configuración y reiniciar el servicio. Echemosle una ojeada a /etc/init.d/zncd
</p>
<textarea class="bashcode">
#!/bin/bash

ZNC_FOLDER="/usr/bin"
ZNC_OWNR="orvtech"

if [ ! -f $ZNC_FOLDER/znc -o ! -d $ZNC_FOLDER ]
then
        echo "ZNC startup: cannot start, it appears that it is not installed"
        exit 1
fi

case "$1" in
    start)
            echo -n "Starting ZNC: "
            su - $ZNC_OWNR -c "$ZNC_FOLDER/znc"
            touch /var/lock/subsys/ZNC
            echo "OK"
            ;;
    stop)
        echo -n "Shutdown ZNC: "
        kill -9 `ps -C znc | awk '{print $1}' | grep ^[0-9]`
        rm -f /var/lock/subsys/ZNC
        echo "OK"
        ;;
    reload)
        echo -n "Reloading ZNC:"
	kill -HUP `ps -C znc | awk '{print $1}' | grep ^[0-9]`
	echo "OK"
    	;;
    status)
        if ps -C znc > /dev/null
	then 
	  echo "ZNC Bouncer is running"
	else 
	  echo "ZNC Bouncer is not running"
	fi
        ;;
    restart)
            $0 stop
	    sleep 2
            $0 start
            ;;
        *)
        echo "Usage: $0 start|stop|restart|reload|status"
        exit 1
esac
exit 0</textarea>
<p>
Si su NSLU2/Servidor esta corriendo gentoo pueden agregar el servicio así:
</p>
<textarea style="height: 18px" class="bashcode">
rc-update add zncd default</textarea>


<p>El output debería de ser algo parecido a esto</p>

<textarea style="height: 18px" class="bashcode"> * zncd added to runlevel default</textarea>]]></description>

</item>
<item>
<link>http://www.orvtech.com/archives/2010/03/03/el_nslu2_como_puente_para_tener_push_de_un_servidor_irc_en_el_iphone/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2010/03/03/el_nslu2_como_puente_para_tener_push_de_un_servidor_irc_en_el_iphone/index.html</guid>
<title>El NSLU2 como puente para tener PUSH de un servidor IRC en el iPhone.</title>
<dc:date>2010-03-03T12:52:14-04:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, Scripts, NSLU2, Apple, IRC</dc:subject>
<description><![CDATA[<p>
Tengo que reconocerlo, soy adicto a la internet y mi debilidad es el IRC,
anterior mente tenia en el iPhone un cliente que se llama LimeChat que
funciona muy bien pero carece de alertas vía PUSH y por tanto no puedo estar
conectado siempre.
</p>
<p>
El problema con PUSH es que necesita pasar por un servidor central autorizado
por apple para estas alertas. Así que si uno cierra la aplicación aun queda
una conexión abierta entre el servidor central y la infraestructura al que uno se esta
conectando (por ejemplo una conexión del servidor de beejive a la infraestructura de
gtalk para alertas de gTalk).
</p>
<p>
La solución es que uno pueda tener un servidor que se mantenga conectado al
servidor de IRC y actualice ese servidor central pero entonces encontramos
otro problema, apple no va a autorizar todos estos servidors personales.
<br />
El equipo de Colloquy consiguió una solución para esto, ellos permiten que su
cliente para el iPhone se conecte a través de bouncers a el servidor que uno
quiera y han desarrollado un plugin para ZNC (entre otros bouncers) el cual
actualiza su servidor (que esta autorizado) permitiéndonos recibir alertas
cuando se menciona nuestro nick, recibimos mensajes privados, etc mientras
tenemos la aplicación cerrada. 
</p>
<br />
<p>
<b>Instalación y configuración del bouncer.</b>
<br />
Busquemos si lo tenemos disponible en nuestro repositorio:
<!-- <textarea style="height: 35px" class="bashcode" readonly> //-->
<pre>apt-cache search znc
znc - an advanced IRC bouncer</pre>
<!-- </textarea> //-->
<br />

OK, podemos instalarlo, luego de instalarlo ejecutamos los siguientes comandos
para configurarlo y habilitar PUSH para lo cual tendremos que descargar el
plugin de colloquy.

<!-- <textarea style="height: 80px" class="bashcode" readonly> //-->
<pre>
 znc --makecon
 cd ~
 curl -LO http:&#47;&#47;github.com&#47;wired&#47;colloquyPUSH&#47;raw&#47;master&#47;znc&#47;colloquy.cpp
 znc-buildmod colloquy.cpp
 mv colloquy.so ~&#47;.znc&#47;modules&#47;
</pre>
<!-- </textarea>  //-->
<br />

El primer comando deberia de iniciar un dialogo que nos ayudara a crear nuestro archivo de configuracion, deberian de ver algo como esto:<br />
<img src=/images/iphone/znc_configuration.png>
</p>
<br />
<p>
<b>
Configuración del cliente en el teléfono.</b><br />
Para configurar el Mobile Colloquy en nuestro iPhone solo tenemos que abrir el cliente, pinchar el botón "<b>+</b>" en la seccion de conexiones, y seleccionar "IRC Connection", de allí seguiremos estos pasos:
 <!-- <div align="left"><img src="/images/iphone/colloquy_add.png"></div> -->
 <br />

<ol>
  <br /><li>En 'Address' pones el FQDN o dirección IP del servidor.
  <!-- <div align=left><img src="/images/iphone/colloquy_irc.png"></div> -->
  </li>
  
  <br /><li>Habilita  "Push Notifications".</li>
  
  <br /><li>Entra en "Advanced" y cambia lo necesario.
  
  <!-- <div align="left"><img src="/images/iphone/colloquy_advanced.png"></div> -->
  </li>

  <br /><li>Ahora agrega un "Colloquy Boucer"  usando los datos del servidor bouncer que configuramos (znc) incluyendo el puerto, si en ZNC habilitaste SSL entonces habilita en el cliente también.
  
  <!-- <div align="left"><img src="/images/iphone/colloquy_bouncer.png"></div> -->
  </li>

  <br /><li>Introduce los datos de la cuenta que creaste en ZNC, en el 'Account Name' pones tu Username y en el Password pones tu Password, no te confundas con los datos de tu nick (Nick Pass).</li>
  
  <br /><li>Regresa y pincha "Connect".</li>
 
</ol>
<br />
<table summary="Galeria de orvtech.com creada con el NSLU2 y Linux">
<td width=25%>
<div class="picture">
<a href="http://www.orvtech.com/images/galleries/El_NSLU2_como_puente_para_PUSH_de_IRC_en_el_iPhone/index.html">
<img src="http://www.orvtech.com/images/galleries/El_NSLU2_como_puente_para_PUSH_de_IRC_en_el_iPhone/thumbs/colloquy_add.gif" height=150 width=150 alt="El NSLU2 como puente para el servicio PUSH desde un servidor IRC en el iPhone.">
</a>
</div>
</td>

<td width=25%>
<div class="picture">
<a href="http://www.orvtech.com/images/galleries/El_NSLU2_como_puente_para_PUSH_de_IRC_en_el_iPhone/index.html">
<img src="http://www.orvtech.com/images/galleries/El_NSLU2_como_puente_para_PUSH_de_IRC_en_el_iPhone/thumbs/colloquy_advanced.gif" height=150 width=150 alt="El NSLU2 como puente para el servicio PUSH desde un servidor IRC en el iPhone.">
</a>
</div>
</td>

<td width=25%>
<div class="picture">
<a href="http://www.orvtech.com/images/galleries/El_NSLU2_como_puente_para_PUSH_de_IRC_en_el_iPhone/index.html">
<img src="http://www.orvtech.com/images/galleries/El_NSLU2_como_puente_para_PUSH_de_IRC_en_el_iPhone/thumbs/colloquy_bouncer.gif" height=150 width=150 alt="El NSLU2 como puente para el servicio PUSH desde un servidor IRC en el iPhone.">
</a>
</div>
</td>

<td width=25%>
<div class="picture">
<a href="http://www.orvtech.com/images/galleries/El_NSLU2_como_puente_para_PUSH_de_IRC_en_el_iPhone/index.html">
<img src="http://www.orvtech.com/images/galleries/El_NSLU2_como_puente_para_PUSH_de_IRC_en_el_iPhone/thumbs/colloquy_irc.gif" height=150 width=150 alt="El NSLU2 como puente para el servicio PUSH desde un servidor IRC en el iPhone.">
</a>
</div>
</td>
</table>

</p>]]></description>

</item>
<item>
<link>http://www.orvtech.com/archives/2009/11/30/el_nslu2_como_un_puente_de_last_fm_a_twitter/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2009/11/30/el_nslu2_como_un_puente_de_last_fm_a_twitter/index.html</guid>
<title>El NSLU2 como un puente de last.fm a twitter.</title>
<dc:date>2009-11-30T16:57:10-04:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, Scripts, NSLU2, Twitter, last_fm, IRC</dc:subject>
<description><![CDATA[<p>Este script nació de la necesidad (ocio?) de actualizar mi estado en <a href="http://twitter.com/m1n1m3">twitter</a> con la canción que estaba escuchando en mi iPhone. El detalle esta en que solo actualizara mi perfil si la canción esta marcada como 'loved' en last.fm también detecta que día de la semana es y evalúa si es necesario agregar el hash tag <a href="http://twitter.com/#search?q=%23mm"><i>#mm</i></a>.</p>

<!-- <textarea class="bashcode" readonly>twitter_user="<your_twitter_user_here>" //-->
<pre lang="CC">
twitter_passwd=&#34;your_twitter_password_here&#34;&#39;
URL=&#34;http:&#47;&#47;twitter.com&#47;statuses&#47;update.xml&#34;&#39;
tags=&#34;#lastfm&#34;&#39;
lastfm_api=&#34;&lt;your_api_from_lastfm_here&gt;&#34;&#39;
lastfm_user=&#34;&lt;your_lastfm_user_here&gt;&#34;&#39;
bit_ly_user=&#34;&lt;your_bit.ly_user_here&gt;&#34;&#39;
bit_ly_apikey=&#34;&lt;your_bit.ly_api_key_here&gt;&#34;&#39;
&#39;
fmtwitted=`cat &#47;tmp&#47;lastfm2twitter.tmp | \&#39;
sed -e 's&#47;status=Just played: &#47;&#47;g' -e 's&#47;#.*&#47;&#47;g' | \&#39;
grep '&#91;a-z&#93;'|sed -e 's&#47;\ &#47;&#47;g' -e 's&#47;\-&#47;.&#47;g'`&#39;
&#39;
fmcurrent=`curl -s &#34;http:&#47;&#47;ws.audioscrobbler.com&#47;2.0&#47;?method=user.getrecenttracks&limit=1&user=$lastfm_user&api_key=$lastfm_api&#34; | \&#39;
grep -E '&lt;name&gt;|&lt;&#47;name&gt;|&lt;artist\ |&lt;&#47;artist&gt;' |\&#39;
head -n2| sed -e 's&#47;&lt;&#91;^&gt;&#93;*&gt;&#47;&#47;g' | tr '\n' '.' |\&#39;
sed -e 's&#47;\ &#47;&#47;g' -e 's&#47;.$&#47;&#47;g'`&#39;
&#39;
&#39;
lastfm_song_url=`curl -s &#34;http:&#47;&#47;ws.audioscrobbler.com&#47;2.0&#47;?method=user.getrecenttracks&limit=1&user=$lastfm_user&api_key=$lastfm_api&#34; |\&#39;
grep -E '&lt;url&gt;|&lt;&#47;url&gt;' | sed -e 's&#47;&lt;&#91;^&gt;&#93;*&gt;&#47;&#47;g' |\&#39;
head -n1| tr '\n' '.' | sed -e 's&#47;\ &#47;&#47;g' -e 's&#47;.$&#47;&#47;g'`&#39;
bit_ly_url=`curl -s &#34;http:&#47;&#47;api.bit.ly&#47;shorten?version=2.0.1&longUrl=$lastfm_song_url&login=$bit_ly_user&apiKey=$bit_ly_apikey&#34; | \&#39;
grep shortUrl | sed -e 's&#47;\&#34;&#47;\ &#47;g' | awk '{print $3}'`&#39;
&#39;
today_mm=`date +%A`&#39;
if &#91;&#91; $today_mm == &#34;Monday&#34;  &#93;&#93; &#39;
  then tags=&#34;$tags #mm&#34;&#39;
fi&#39;
&#39;
&#39;
if grep $fmcurrent &#47;tmp&#47;lastfm_loved.tmp  &gt; &#47;dev&#47;null&#39;
  then if &#91;&#91; &#34;$fmtwitted&#34; == &#34;$fmcurrent&#34; &#93;&#93;&#39;
      then exit 0&#39;
        else curl -s &#34;http:&#47;&#47;ws.audioscrobbler.com&#47;2.0&#47;?method=user.getrecenttracks&limit=1&user=$lastfm_user&api_key=$lastfm_api&#34; | \&#39;
	grep -E '&lt;name&gt;|&lt;&#47;name&gt;|&lt;artist\ |&lt;&#47;artist&gt;' |\&#39;
	head -n2| sed -e 's&#47;&lt;&#91;^&gt;&#93;*&gt;&#47;&#47;g' | tr '\n' '-' | \&#39;
	sed -e 's&#47;^&#91; \t&#93;*&#47;&#47;' -e 's&#47;-&#47;\ -\ &#47;g' -e 's&#47;- $&#47;&#47;g' -e 's&#47;\ $&#47;&#47;g' |\&#39;
	awk '{print &#34;status=Just played: &#34;$0}' &gt; &#47;tmp&#47;lastfm2twitter.tmp&#39;
	lastfm2twitter=`cat &#47;tmp&#47;lastfm2twitter.tmp; &#39;
	echo $bit_ly_url &#39;
	echo $tags | tr '\n' ' '`&#39;
	echo $lastfm2twitter &gt; &#47;tmp&#47;lastfm2twitter.tmp&#39;
	curl -s -u $twitter_user:$twitter_passwd -d @&#47;tmp&#47;lastfm2twitter.tmp $URL &gt; &#47;dev&#47;null&#39;
	  fi&#39;
	  else exit 0&#39;
fi&#39;
</pre>
<!-- </textarea> //-->
<br />
<p>Como se pueden dar cuenta estoy usando bit.ly para acortar las URLs de last.fm para lo cual tendrán que obtener una API Key. Aun tengo que optimizar el script guardando las peticiones de curl en un archivo y formar algo así como un cache o base de datos local de last.fm a bit.ly.
</p><p>
El script detecta si el mensaje sobrepasa el limite de 140 caracteres permitido por twitter y acorta el mensaje antes de enviarlo. 
</p> ]]></description>

</item>
<item>
<link>http://www.orvtech.com/archives/2009/11/03/script_para_monitorear_recursos_del_sistema_en_el_nslu2/index.html</link>
<guid isPermaLink="true">http://www.orvtech.com/archives/2009/11/03/script_para_monitorear_recursos_del_sistema_en_el_nslu2/index.html</guid>
<title>Script para monitorear recursos del sistema en el NSLU2</title>
<dc:date>2009-11-03T11:37:17-04:00</dc:date>
<dc:creator>orvtech</dc:creator>
<dc:subject> Linux, Scripts, NSLU2, IRC</dc:subject>
<description><![CDATA[<p>
Este script muestra la utilización de recursos en el NSLU2 siempre y cuando este corriendo algún firmware de la comunidad (basado en Linux claro). La salida del script produce código HTML simple. Esta hecho en BASH y algo de JavaScript para poder mostrar la información. Esto seria el producto del script:
<br /><br />
<script src="http://www.orvtech.com/resources.js" type="text/javascript"></script>
</p>

<br /><p>Código fuente de resources.sh:</p>
<textarea class="bashcode" readonly>

#GETTING THE DAYS OF UPTIME
let UP_TIME=`uptime | awk '{print $3" "$5}' | sed 's/:/ /g' |\
awk '{print "("$1"*24)+"$2}'`

#CALCULATING FREE RAM PERCENTAGE
mem_total=`grep MemTotal /proc/meminfo|awk '{print $2}'`
mem_free=`grep MemFree /proc/meminfo|awk '{print $2}'`
percent=$(echo "scale=2; $mem_free/$mem_total*100" | bc -l)

#GETTING THE AVERAGE LOAD OF THE SERVER 
load_10=`uptime | awk '{print $11}'|sed 's/,//g'`

#BUILDING THE *.js FILE
echo "var resources=\"<b>Last Updated: </b> `date`<br /><b>UP Days: 
</b>$UP_TIME<br /><b>Free RAM:</b> $percent% ($mem_free kB)<br />
<b>Load: </b>$load_10<br />\";"
echo "document.write(resources);"</textarea>

<p>Luego puedes redirigir la salida de el script a un archivo en tu RootDirectory. En mi caso estoy usando /resources.js y lo ejecuto cada 5 minutos usando un cronjob.</p>
<br /><p>Código fuente de resources.js:</p>

<textarea style="height: 55px" class="bashcode" readonly>var resources="<b>Last Updated: </b> Tue Nov  3 12:00:02 EST 2009<br />
<b>UP Days: </b>2549<br /><b>Free RAM:</b> 5.00% (1552 kB)<br /><b>Load: 
</b>0.21<br />";
document.write(resources);</textarea>

<p>Luego uso el siguiente código para mostrar la información:</p>
<textarea style="height: 35px" class="bashcode" readonly>
<script src="http://www.orvtech.com/resources.js" type="text/javascript"><
/script></textarea>]]></description>

</item>
</channel>
</rss>
