Category: Networking and Internet

Evolution ‘search folders’

Reading time: 2 – 4 minutes

Aquesta funcionalitat d’Evolution fa molt temps que la vaig veure, però no se m’havia mai acudit com treure-li rendiment amb la meva forma d’usar el correu. Com sabeu de fa molt de temps tinc les carpetes organitzades intentant seguir la idea de GTD. Doncs bé, malgrat això tenia certs problemes per seguir alguns llistes de correu i d’altres informacions que m’arriben al correu però que són de caire més secundari o personal. La solució l’he trobat gràcies a aquestes carpetes tan especials que em permeten agrupar correus en funcionar de paràmetres ben diferents.

Per si això de les search folders ni ús sona, jo ho definiria com carpetes amb continguts virtuals, és a dir, imagineu que teniu configurades diverses comptes de correu, llavors tindreu divers carpetes d’entrada de correu (inbox) si a més cada una de les comptes té diverses carpetes creades això farà que els diversos inbox no capiguen a la pantalla. Llavors sempre haureu d’estar fent scroll per estar al corrent dels nous correus que ús entren en les diverses comptes i diverses carpetes de cada compte.

Llista de carpetes de tipus search folder:

search-folders-001.png

La solució és tan senzilla com la de configurar, per exemple, un general inbox:

search-folders-002.png

Un altre search folder que tinc configurada és una que m’agrupa tots els missatges que tinc marcats com a importants, això ho acostumo a usar moltíssim per varies funcions. Per exemple, contestar correus en llistes de correu, saber tasques importants que esperant que es facin ja, o coses importants que espero que arribin fetes, etc.

search-folders-003.png

A més d’aquests dos exemples que he comentat tinc ues quantes carpetes més d’aquest tipus, com la de missatges no llegits, tasques a fer, tasques en espera, etc. a mi aquesta idea realment m’ha canviat la forma d’usar Evolution.

No oblideu que els missatges realment, no tenen perquè pertanyer a la mateix compte de correu i que la carpeta virtual no és una carpeta real. Així doncs, no s’hi poden arrossegar elements a dintre. De totes formes, si que es poden arrossegar correus de dintre cap a un altre carpeta, no virtual. Així doncs el focus de treball del meu Evolution ha canviat molt i ara treballo sempre amb la vista posada a la part on hi ha aquestes carpetes especials i a sobre tinc obertes totes les carpetes de la compte de correu principal. Així puc anar arrossegant i organitzant les tasques tal com feia abans.

Configurant una Atheros AR5212/5213 amb Ubuntu 6.06 Dapper

Reading time: 11 – 18 minutes

La base del MPK és una Ubuntu 6.06 Dapper, doncs bé ahir vaig tenir la necessitat de configurar-hi una targeta Wifi per primera vegada. La qüestió és que la cosa em va donar una mica més de feina de la esperada. Així doncs, aquí penjo quatre notes de com posar-la en solfa ben ràpid.

Al iniciar l’Ubuntu amb l’Atheros punxada els drivers de madwifi del kernel la detecten perfectament però malgrat no em donava cap error i després d’associar-me a diversos APs amb WEP i WPA-PSK no hi havia manera d’intercanviar tràfic, sempre donava l’error de que no trobava el destí del paquet. Finalment el que vaig fer va ser descarregar els drivers de madwifi, concretament la versió 0.9.3.3. Que ha compilat sense problemes i després de borrar els drivers que inclou l’Ubuntu per defecte, s’han instal·lat a la carpeta dels mòduls del kernel. Després de comprobar que amb un depmod -a no donen cap error he reiniciat i la targeta s’ha detectat sense problemes.

Amb les següents simples comandes:

iwconfig ath0 essid ssid_ap
iwconfig ath0 key codi_wep_en_hexadecimal
ifconfig ath0 up
dhclient ath0

Només amb això ja esta llesta la xarxa wifi per funcionar amb xifrat WEP, obviament no ús el recomano però hi ha gent que encara viu enganyada confiant-hi. En cas de voler-la configurar per WPA-PSK la cosa és tan senzilla com crear el següent fitxer /etc/wpa_supplicant.conf:

network={
        ssid="ssid_ap"
        scan_ssid=1
        proto=WPA
        key_mgmt=WPA-PSK
        psk="clau_psk"
}

Després des de la línia de comandes podem cridar el wpa_supplicant per provar-lo així:

wpa_supplicant -Dwext -iath0 -c/etc/wpa_supplicant.conf

Un cop veiem que s’ha associat podem anar a una altre consola i configurar la interficie de xarxa. Com sempre amb la comanda iwconfig podem observar si l’associació s’ha fet correctament, entre d’altres dades com el nivell de senyal.

Finalment si voleu posar en la seqüència d’arrencada la crida del wpa_supplicant podem afegir el següent a /etc/network/interfaces:

auto ath0
iface ath0 inet dhcp
pre-up wpa_supplicant -Bw -Dwext -iath0 -c/etc/wpa_supplicant.conf
post-down killall -q wpa_supplicant

Per automatitzar el WEP, el que he fet malgrat sigui una mica xapussa és fer un script que fa les dues comandes iwconfig i aquest script es crida a pre-up al fitxer /etc/network/interfaces.

Passant d’una Ubuntu real a una de Virtual (VMWare)

Reading time: 7 – 11 minutes

Aquesta setmana he clonat un sistema montat en Ubuntu, d’una màquina real a una màquina virtal corrent dins d’un VMWare Server. La veritat pensava tenir més problemes, però finalment la cosa ha estatm és senzilla del que pensava. Intentearé explicar-vos els passos que he seguit, espero no deixar-me cap detall important ja que ho faré de memòria.

    • Servidor nou
    • Creem una màquina virtual amb la VMWare Server Console.
    • Instal·lem una Ubuntu 6.06 LTS (la mateixa versió qu hi ha a la màquina que volem clonar)
    • A diferencia de la original aquesta la montem amb LVM, això va ser un capritxu meu no una necessitat
    • Un cop finalitzada la instal·lació estàndard i fetes les actualitzacions, instal·lem el servidor d’ssh
    • Servidor original
    • Creem un fitxer de text amb aquest contingut, l’anomenaré exclude.txt:
/proc
/sys
/dev
/mnt
/cdrom
/tmp
/etc/fstab
/etc/mtab
/boot
/etc/iftab
    • Ara ve l’hora de la veritat i usant rsync començo a clonar la màquina:
rsync -cavz --exclude-from=exclude.txt /* root@IP_NOVA_MAQUINA:/
  • Apaguem o desconnectem cable de xarxa
  • Server nou
  • Reiniciem la màquina, jo ho vaig fer a sac, o sigui… apretant botó reset de la màquina virtual. Digueu-me radical però vaig pensar que era el millor en aquest cas.

bar: linies de progrés per bash

Reading time: 1 – 2 minutes

Una eina senzilla i útil, a més programada totalment en shell script que encara té més merit. Servei per fer coses tan vistoses com un línia de progrés mentre fem un tar, cp, etc.

Una imatge val més que mil paraules…

bar.png

És fàcil i vistosa, oi que si? en l’exemple es veu com descomprimeixo la pròpia eixa amb una barra de progrés generada per ella mateixa.

Doneu un cop d’ull a la web, a mi m’ha agradat molt l’eina i l’he usat per fer un CD d’instal·lació d’una eina de la feina. Per si la web deixés d’existir, que això ja passa amb aquest tipus d’eines deixo una còpia del programa a l’article: bar-1.4.tar.bz2.

inotify, inotify-tools i incron: un gran descobriment per substituir dnotify

Reading time: 4 – 6 minutes

Fa forces anys, vaig parlar del dnotify és una eina que ens permetia saber quan hi havia un canvi en els fitxers d’un directori, llavors aprofitabem per llençar un procés al produir-se l’event. Com que l’arquitectura interna del programa comentat no era massa bona (controlava els canvis a base de fer pooling) i degut a les millores dels nous kernel, s’ha aprofitat el concepte de l’inotify: inotify is a Linux kernel subsystem that provides file system event notification..

Així doncs, les inotify-tools són les eines que ens permeten usar aquesta funcionalitat del kernel des de l’espai d’aplicacions d’usuari. Realment un passada. Permeten vigilar un fitxer, per generar-ne estadístiques, llençar processos associats quan es detecti un determinat canvi en el fitxer, etc. Però potser la funcionalitat que més m’ha interessat és la de la llibreria que ofereix per programar aplicacions usant les funcionalitats de l’inotify.

Concretament aquestes llibreries són les necessaries per compilar el incron. Per mi l’aplicació final més genial de totes: es tracta d’un ‘inotify cron’. Bàsicament l’eina es composa de dues parts d’un dameon i d’una taula d’accions. Aquesta taula s’usa d’una forma semblant al servei de cron. La diferència és que els events no són senyals horaris, sinó captures d’evenets del sistema de fitxers.

Un exemple d’especte que pot tenir el incrontab -l:

/var/mail IN_CLOSE_WRITE abc $@/$#

Això captura l’event cada cop que s’hagi canviat un fitxer (IN_CLOSE_WRITE) dins del directori /var/mail, després llença el programa abc passant com a paràmetre el path/file_name. Com podeu veure la potència és infinita i la simplicitat d’ús és impressionant. Potser el que més m’agrada és el fàcil que és tenir centrilitzats tots els directoris que estic controlant i les accions associades. Per exemple, és ideal per mantenir un RSS de les novetats de música, video, descàrregues, etc.

pfSense deixava de re-enviar paquets misteriosament…

Reading time: 10 – 16 minutes

Intentaré explicar-vos un ‘expedient X’ d’aquells que ja tinc resolts, però que no tinc una explicació al 100% del comportament que tenia el pfSense davant del problema. La conclusió és que el pfSense descartava paquets per tenir massa connexions concurrents, però al ser connexions UDP costava identificar-les. El problema és que de forma completament misteriosa el pfSense descartava els primers X’s paquets cap a qualsevol IP. Aquesta número indeterminat, podia ser des de 2, 3 o 4 paquets fins a 100 o 200. O sigui, que hi havia moments on donava la sensació que s’havia perdut l’enllaç. Com a pecualiaritat de la configuració del firewall (pfSense) comentar que la targeta WAN estava en mode bridge amb la targeta de servidors d’internet. O sigui, que la DMZ rep el tràfic de les IPs públiques que allà hi han filtrat a través d’un bridge d’aquestes dues targetes de xarxa que he comentat.

Exemple, de la pèrdua de paquets que comentava. Ping realitzat a una IP d’internet (la de oriol.joor.net) des del propi firewall. Realment això d’operation not permitted em va tenir molt i molt desoncertat.

# ping 80.35.31.228
PING 80.35.31.228 (80.35.31.228): 56 data bytes
ping: sendto: Operation not permitted
ping: sendto: Operation not permitted
ping: sendto: Operation not permitted
ping: sendto: Operation not permitted
ping: sendto: Operation not permitted
ping: sendto: Operation not permitted
ping: sendto: Operation not permitted
ping: sendto: Operation not permitted
ping: sendto: Operation not permitted
64 bytes from 80.35.31.228: icmp_seq=9 ttl=57 time=117.668 ms
64 bytes from 80.35.31.228: icmp_seq=10 ttl=57 time=86.728 ms

Des de qualsevol de les altres potes del firewall es patia el mateix efecte, fins hi tot si es feien els pings cap a la LAN. La solució vaig trigar quasi 48h en trobar-la, era una bogeria. Ja que al final per localitzar el problema varem aïllar el firewall d’internet i el fenòmen va deixar de passar.O sigui, ja mai passava això d’operation not permitted per molt tràfic que injectessim al firewall, no passava. Així doncs, gràcies a una molt bona idea del Manu varem tancar tot el tràfic des d’internet i varem anar obrint serveis cap a la DMZ, un per un. Fins que vaig descobrir que el servei d’NTP (123/upd) era el que probocava aquest extrany efecte al pfSense.

Després de diverses proves la conclusió, és que hi havia masses connexions concurrents contra el servei que comento. Així doncs, actualment el que he fet és filtrar el número de connexions que permeto contra aquest port:

pfsense.png
<div class="imatge" style="text-align: center;"></div>

Aquestes opcions les podeu trobar editant la Rule, concretament a la sección on posa Advaced Options. Com podeu veure podeu deixar ben limitat quines connexions i quines no deixeu passar cap a un servei.

Potser el més important que he aprés d’aquesta història és no montar mai un firewall que no acompleixi la regla d’or: by default block all. O sigui, tanqueu sempre tot i ja anireu obrint a mesura que faci falta. Però a vegades per voler ser una mica més transigent ho fem alrevés i al final això s’acaba pagant, com en aquest cas. A mi ja no em tornarà a passar, espero que a vosaltres tampoc.

Tip: canviar editor per defecte en Ubuntu

Reading time: 3 – 4 minutes

Una xorrada molt útil si no t’agrada el nano que és l’editor per defecte que porta l’Ubuntu:

update-alternatives --config editor

Amb això podem escollir quin serà l’editor per defecte, simple i molt útil pels amants del vim com jo.

L’últim descobriment: Pocket Controller Pro

Reading time: 1 – 2 minutes

Com que no són hores per estar escribint al blog i porto moltíssimes hores disfrutant amb el PC. O sigui, fent coses per passar-ho bé i al mateix temps productives, que no de feina. Ara no escriure res sobre l’última troballa que he fet pel meu juget.

El Pocket Controller Pro, quedeu-vos en la captura de pantalla des d’on es veu com faig control remot de la meva HTC com si es tractes d’un PC. De moment, ja li he trobat una aplicació genial només instal·lar-ho. Escriure SMS des del PC, sense haver d’usar la pantalla tàctil:

PocketControllerPro.png

Avui he descobert moltes altres eines, com la instal·lació que he fet per primera vegada d’una eina que em va dir l’Ernest fa molt de temps, el Synergy, ús el recomano és realment genial. De fet això ho estic escribint en un WinXP controlat per Synergy a un teclat i un ratolí amb el meu portàtil amb Linux. Realment genial.

Dies de compres… HTC P3300 i Dell XPC m1330

Reading time: 2 – 4 minutes

En aquesta foto podeu veure, com l’antic Siemens S65 que ja ha fet més guerra de la que podeu somiar ahir va deixar el seu lloc al HTC P3300 alias Artemis. Així que ja podem dir que he entrar al món dels Windows Mobile. Casum dena, quina ràbia i tot perquè té el GPS i la Radio que són les dues coses que més il·lusió em fan. Per no parlar de per fi, poder sincronitzar bé els contactes i el calendari de l’evolution que tan uso.

telefons.png

De fet, la HTC no l’he comprat nova. Li he comprat al Pof de segona mà per un preu molt raonable ja que a més, tampoc té WiFi…oooohhhh. El model que ell tenia és un model de O2 sense WiFi. Però bé, espero no trobar-lo gaire a faltar. De fet, com a PDA és molt lenta però no és la meva intenció treure-li el suc en aquest sentit sinó més aviat donar-li un ús semblant a la Blackberry. Això si amb dades de caire més personal i de passada solucionar un parell de problemes de gadgets que porto al damunt.

Ja sé que havia comentat que el meu proper mòbil seria el Nokia N95 però després de tenir-lo a les mans i toquetejar-lo una mica la veritat és que m’ha decebut molt. A més diversos coneguts el tenen i la bateria realment dura un suspir, tan és així que no coneixo ningú que l’utilitzi com a únic mòbil. Realment tot això i d’altres coses com el nyigui-nyogui que el noto, gruixut i moltes d’altre tonteries que no m’han fet el pes he decidit oblidar-me d’ell. Això si, s’ha de reoneixer que té la millor càmara que he vist mai.

Aquest matí, amb en Benja també ens hem comprat una mervalla de la tècnica que no rebrem fins a Setembre, moment en el que ja ús n’explicaré més detalls. Una meravella per cada un, és clar. Però per anar fent boca el portàtil és un Dell XPC m1330 amb Core Duo 2 2.2GHz, 4Gb de RAM, 200Gb SATA i moltíssimes pijades més. De moment però, tocarà tenir paciència fins a rebre la comanda.

Com que ja estava llençant fent compres avui també he comprat a pixmania una microSD de 2Gb per la HTC, uns cascos amb microfon HiFi per veure si m’animo a grabar algún que altre poadcast i screencast que tinc pendent, a més d’un ratolí pel portàtil ja que se m’ha fet malbé el que tenia. Ah! i amb els colors corporatius de movilpoint.com el ratolí.

Ubuntu LiveCD sense CDROM i amb mode persistent

Reading time: 52 – 86 minutes

El gener passat vaig escriure sobre com arrencar un LiveCD d’Ubuntu en mode persistent, és a dir, guardant la configuració en un pendrive o disc dur de forma que els ajustos que fem a la configuració del CD no es perdin. Bé doncs, ara del que es tracta és que fem el mateix però sense el LiveCD. M’explico, l’objectiu és tenir una partició de només lectura al nostre disc dur, o en un altre disc dur on hi hagi el LiveCD copiat. Llavors usem una altre partició per guardar les modifiacions que fem sobre el CD, o sigui, la informació persistent. Això ens permet al propi GRUB tenir modes de recuperació sense haver de posar el CD. A més sempre podrem tornar enrera i tenir una configuració bàsica. I podrem treballar exactament igual que si tinguessim un LiveCD però sense tenir-lo físicament.

La solució és ben senzilla, potser el problema més greu esta en que s’ha de modificar un arxiu de configuració que es diu /scripts/casper i que es troba dintre del fitxer /boot-live/initrd.gz cosa que fa una mica entretingut modificar-lo. A continuació faig un petit cookbook de tots els passos a seguir.

    • Arrenquem des del LiveCD.
    • Creem una nova partició al disc de tipus vfat i la formategem.
    • Montem la partició i hi creem el directori /casper.
    • Copiem el contingut del directori /casper del LiveCD d’Ubuntu dins del nou directori que hem creat a la partició.
    • Suposant que a la partició persistent hi tenim instal·lat el GRUB per arrancar des de LiveCD però cridant-lo des del disc dur la configuració seria semblant a aquesta:
default 0
timeout 30
hiddenmenu
color cyan/blue white/blue
# Calling LiveCD from hard drive
title           mpti
root            (hd0,0)
kernel          /boot-live/vmlinuz boot=casper initrd=new-initrd.gz ramdisk_size=1048576 root=/dev/ram rw quiet splash vga=791 -- persistent
initrd          /boot-live/new-initrd.gz
boot
# Calling LiveCD from hard drive in single user and persistent mode
title           mpti persistent (recovery mode)
root            (hd0,0)
kernel          /boot-live/vmlinuz boot=casper initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram ro single persistent
initrd          /boot-live/new-initrd.gz
boot
# Calling LiveCD from hard drive without persistent and single user mode
title           mpti w/o persistent (recovery mode)
root            (hd0,0)
kernel          /boot-live/vmlinuz boot=casper initrd=initrd.gz ramdisk_size=1048576 root=/dev/ram ro single
initrd          /boot-live/new-initrd.gz
boot
    • Ara toca modificar el fitxer /boot-live/new-initrd.gz que és el que conté la seqüència d’arrencada que ens interessa modificar. Així doncs, anem al directori /boot-live.
    • Per descomprimir el fitxer new-initrd.gz podem fer això:
mkdir new-initrd
cd new-initrd
gzip -dc /boot-live/new-initrd.gz | cpio -id
    • Dintre de /boot-live/new-initrd/scripts hi ha el fitxer casper que hem de modificar, així doncs l’editem.
    • A la línia 257 hi ha la funció is_usb_device que l’hem de deixar com segueix:
is_usb_device() {
#    sysfs_path="${1#/sys}"
#    if /lib/udev/path_id "${sysfs_path}" | grep -E -q "ID_PATH=(usb|pci-[^-]*-usb)"; then
        return 0
#    fi
#    return 1
}
    • Guardem el fitxer de configuració i tornem a crear el fitxer new-initrd, així:
# Fem una còpia l'antic new-initrd.gz per si les mosques
cd /boot-live
cp new-initrd.gz new-initrd.gz.old
# Creem el nou new-initrd.gz
cd new-initrd
find . | cpio --quiet --dereference -o -H newc | gzip -9 > ../new-initrd.gz
cd ..
rm -rf new-initrd
  • Ara ja podem reiniciar i treure el LiveCD ja que tot hauria d’arrencar com si el tinguessim posat.

Al fitxer casper és on es detecta si hi ha algún LiveCD posat a partir del qual es montarà el sistema de fitxers root. L’script busca a molts llocs si troba una unitat de CD, fins hi tot busca pendrives formatejats en vfat amb el contingut del CD, però abans d’intentar montar-los i buscar dintre seu el directori /casper i algún fitxer anomenat *.squashfs comproba que el dispositiu estigui connectat via USB.

Així doncs, la modificació que jo he fet només força que la comprobació d’USB sempre sigui certa, així també intentarà montar les pariticions dels possibles discs durs connectats o d’altres similars. Així doncs, després l’únic que faig és crear una partició vfat, crear-li el directori que busca i copiar el fitxer *.squashfs que és on hi ha el sistema de fitxers squashfs que conté l’arbre de directoris i fitxers del LiveCD.

Malgrat estic content en el resultat obtingut, m’hagués agradat aconseguir el mateix resultat sense haver de modificar els fitxers del initrd.gz ja que això fa que a l’actualitzar l’Ubuntu si hi ha modificacions en l’script casper hauré de mirar-me què ha canviat per actualitzar el meu sistema.

Scroll to Top