Author: Oriol Rius

Poques ganes de treballar…

Reading time: 2 – 2 minutes

godspeedyoublackemperor.jpg

Suposo que és normal sent el dia que és deu ser normal que no tingui ganes de treballar. Però volia aprofitar que la Daphne no arriba fins ben tard per fer mil coses que tinc pendents. Però la veritat a vegades estas espès i no tens ganes de posar-te a fer res. És curiós perquè ni ganes de mirar una pel·lícula tens. Malgrat això he aconseguit trobar un grup que em venien ganes d’escoltar mentre escribia aquesta extranya sensació que m’omple en aquesta tarda de diumenge.

Es tracta de Godspeed you! Black Emperor fa molt de temps que tinc música d’aquest grup, el vaig descobrir gràcies a l’Aurora una de les germanes de la Daphne i de veritat que fan una música molt especial no sabria ni per on començar a descriure-la. Això si és capaç de fer-te sentir coses molt especials. Et fa submergir per sota l’aigua i de cop et fa fer un sal que t’aixeca centenars de metres fins a barrejar-te en els núvols i notes com vas planejant pel cel.

Ja ho sabeu doncs, una bona tearapia per dies grisos i solitaris com aquest diumenge. A vegades no saps què és el que més t’agobia si que sigui diumenge o que demà hagis d’anar a treballar perquè és dilluns així doncs potser millor no pensar-hi, millor oblidar les dues coses i només buscar alguna cosa que et faci sentir viu!!!

i 3!!!!

Reading time: < 1 minute

Apa ja són tres!!! si nois si… ja va tres anys que vaig tornar a neixer. Així doncs avui és el meu segon aniversari que sempre es dona dos dies abans que el meu primer aniversari… hi hi hi! enrabassat eh!!!

pastis.gif

Per no perdre la costum, aquí teniu l’enllaç del fet que em va fer re-eneixer. Ara com ja dic cada any el que toca és no oblidar la sort que tinc i el bé que em va tot. Així que A VIURE!!!

llibre: La Buena Suerte

Reading time: 2 – 4 minutes

labuenasuerte.jpg

Un dels llibres que em varen regalar aquest St. Jordi va ser La Buena Suerte (ISBN: 84-95787-55-5). El llibre esta força bé, de fet es fa una mica massa llarg per les poques coses que diu. Però la lectura és amena i ràpida en molt poc temps me l’he pogut acabar (lletra grossa i unes 100 i poque pàgines). El que volia no oblidar és els consells que dona per la bona sort. És important fixar-se en que no és el mateix la bona sort que la sort. Seria la moraleja del llibre, realment són bons consells així que no us els perdeu:

  • 1a regla: la sort no dura gaire temps perquè no depèn de tu. La bona sort la crea un mateix, per això dura sempre.
  • 2a regla: molts decideixen tenir bona sort, però pocs els que decideixen anar a buscar.
  • 3a regla: si ara no tens bona sort potser és perquè les circumstàncies són les de sempre. Perquè la bona sort arribi les circumstàncies han de canviar.
  • 4a regla: preparar circumstàncies per la bona sort no significa buscar només el benefici propi. Crear circumstàncies perquè els altres també hi guanyin atrau la bona sort.
  • 5a regla: Si deixes per demà la preparació de les circumstàncies, la bona sort potser no arribi mai. Crear circumstàncies requereix fer el primer pas… Fes-lo avui!
  • 6a regla: fins hi tot sota les circumstàncies aparenment necessaries, a vegades la bona sort no arriba. Busca en els petits detalls circumstàncies aparenment innecessaries…, però imprescindibles!
  • 7a regla: als que només creuen en l’atzar crear circumstàncies els resulta absurd. Als que es dediquen a crear circumstàncies l’atzar no els preocupa.
  • 8a regla: ningú pot vendre sort. La bona sort no es ben. Desconfia dels que venen sort.
  • 9a regla: quan ja hagis creat totes les circumstàncies tingues paciència, no abandonis. Perquè la bona sort arribi has de confiar.
  • 10a regla: crear bona sort és preparar les circumstàncies a l’oportunitat. Per+ò l’oportunitat no és qüestió de sort o atzar, sempre hi és.

Una bona sintesis de les regles: crear bona sort és crear circumstàncies. Si voleu passar una estona agradable i aprendre quatre cosetes quí us queda la referència del llibre.

mailgateway: postfix+amavisd+clamav+spamassassin+sasl

Reading time: 3 – 5 minutes

Algunes empreses disposen de servidors de correu amb infraestructures internes realment complexes i que seguint la màxima de la informàtica el millor que podem fer és: si alguna cosa va no la toquis. El problema és que sovint aquestes estructures tan complexes no disposen de filtres de correu mailiciós. O sigui, no són capaces de passar antivirus al correu, filtrar l’spam i controlar altres enviaments maliciosos de correu. A més intentar afegir un software dins el propi servidor que ens fassi aquestes funcions sobre l’Mail Transport Agent (MTA) que ja tenim corrent és un risc innecessari i poc rentable moltes vegades.

diagrama-xarxa.png

Una solució que s’usa sovint és afegir un servidor només per filtrar el correu que entre i surt de l’empresa i intentar eliminar amb aquest mail-gateway tots els correus no dessitjats. Bàsicament doncs el que fem és col·locar l’SMTP (Simple Mail Transport Protocol) del mail-gateway com a porta d’entrada del correu extern. Després modifiquem el servidor intern de correu perquè tots els correus que hagi d’enviar cap a fora ho fassi a través del mail-gateway. O sigui, posem com a servidor de relay fix del servidor intern la direcció del MTA del gateway.

Amb aquest escenari els usuaris no han de canviar res de res, ja que només estem intervenint el port 25/tcp, o sigui, l’SMTP. A més al servidor intern de correu podem crear una compte de gestió de correo mailiciós, per exemple mailgateway@exemple.com (sent exemple.com el nostre domini). En aquest compte li creem dues carpetes una que es digui spam i l’altre que es digui ham. El que farem és sincronitzar el correu d’aquestes comptes amb una carpeta del mail-gateway (si les comptes són IMAP és bona idea sincronitzar-les amb l’offlineimap). Quan tinguem aquests correus al mail-gateway li direm als filtres bayessians de l’antispam que aprenguin com és el correu maliciós que no és capaç de filtrar i com és el correu que ha filtrat i que era legítim.

Aquesta compte de correu (mailgateway@exemple.com) que hem creat al servidor intern, la podem configurar com a compte de correu secundaria a un administrador de la xarxa. Així aquest podrà gestionar el manteniment sense haver de tocar el mail-gateway. En cas de que hi hagi algún usuari de la xarxa que vulgui localitzar un correu que s’ha filtrat l’administrador ho podrà fer des d’aquesta compte.

A més pels usuaris que estan fora de l’empresa, delegacions o d’altres similars ens pot interessar autenticar l’SMTP per tal de que aquests usuaris puguin usar l’SMTP del mailgateway per enviar correu. Així doncs, aprofitarem el servei d’IMAP (Internet Message Access Protocol) del servidor intern per validar l’autenticació en l’SMTP. Sona una mica extrany però el mètode és ben senzill. Es tracta d’aprofitar la compte l’usuari i clau que tenen els usuaris en el servidor IMAP intern, llavors es configura el MUA perquè usi aquestes dades com a informació per autenticar l’SMTP i el servidor d’MTA quan rep una autenticació via SMTP el que fa és obrir una connexió IMAP contra el servidor intern i provar l’usuari i clau que el client l’hi ha enviat a l’SMTP si això és correcte l’MTA permet enviar correu al MUA amb l’origen i destí que vulgui.

La documentació d’aquest projecte la podeu trobar al wiki:

mail-gateway_amb_amavisd-new

Tenir-la al wiki em permet anar-a millorant i esta sempre localitzada.

Si teniu alguna cosa que no esta clara, petició o demanda del tipus que sigui sobre aquesta documentació podeu penjar els comentaris en aquest post.

La comanda EHLO (del SMTP) no funciona en remot amb un Postfix

Reading time: 2 – 2 minutes

Just el problema que descric al títol m’ha fet perdre una bona estona aquest matí, de fet, m’ha fet anar de cul. M’estava tornant boig connectava al port 25 des de dintre de la LAN:

$ telnet IP_XARXA_LOCAL 25
Trying IP_XARXA_LOCAL...
Connected to IP_XARXA_LOCAL.
Escape character is '^]'.
220 ESMTP
ehlo prova
250-nom_servidor
250-PIPELINING
250-SIZE 20480000
250-ETRN
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250 8BITMIME
quit
221 Bye
Connection closed by foreign host.

Si connectava des d’una IP de fora de la xarxa local:

$ telnet IP_PUBLICA 25
Trying IP_PUBLICA...
Connected to IP_PUBLICA.
Escape character is '^]'.
220 ******************
ehlo prova
502 Error: command not implemented
quit
221 Bye
Connection closed by foreign host.

M’he repassat tropocientes vegades la documentació del postfix a veure quina opció era la que feia comportar al servidor SMTP de forma diferent si estava en una IP de la xarxa local o una IP externa a la xarxa. Però no he trobat res de res, al final he trobat en un fòrum la inspiració divina. El problema era del coi de Cisco PIX que tenia entremig. El molt cabron m’estava filtrant la connexió!!!

Així que m’he hagut de connectar al PIX i dir-li que deixes de tractar el tràfic del port 25 com a tràfic SMTP, perquè no l’hi apliqués cap filtre:

pix # show fixup
fixup protocol dns maximum-length 512
fixup protocol ftp 21
fixup protocol h323 h225 1720
fixup protocol h323 ras 1718-1719
fixup protocol http 80
fixup protocol rsh 514
fixup protocol rtsp 554
fixup protocol sip 5060
fixup protocol sip udp 5060
fixup protocol skinny 2000
fixup protocol smtp 25
fixup protocol sqlnet 1521
fixup protocol tftp 69
pix # conf te
pix(config)# no fixup protocol smtp 25

Només amb aquest tonteria ja podia saludar al postfix (servidor SMTP) amb la comanda EHLO que em permet cursar autenticacions i d’altres comandes avançades de l’SMTP (ESMTP).

Boot-up Services Ubuntu (ncurses)

Reading time: < 1 minute

Una eina xorra basada en ncurses per Ubuntu per poder controlar quins serveis s’inicien al re-iniciar la màquina. De fet, tothom que treballa en X’s parla del BUM però és clar en mode text no trobava res i per no oblidar el tema el paquet ideal és el sysv-rc-conf.

No és res de l’altre dijous però fa el que ha de fer.

En setmanes com aquesta…

Reading time: < 1 minute

… me’n recordo de lo bé que vivia a Panamà.

bocas-del-toro-panama.jpg

Quines ganes que tinc de tornar!

Ampliació de RAM al portàtil i el Murci se’n va Xina 2 mesos

Reading time: 1 – 2 minutes

Què té que veure una cosa amb l’altre? doncs res de res. Simplement dues coses que varen passar ahir de les moltes. Va ser un dia molt intens ahir sort que no tots són així. Diguem que de les 6.00 a les 0.00 va ser un no parar. Com que no tot es pot explicar per un blog, aquí teniu dues coses importants.

ram400300.jpg

Finalment he decidit ampliar la memòria del portàtil a 1Gb de RAM. Així doncs, ara tinc una bona màquina amb 1Gb de RAM i 100Gb de disc dur. Que amb els 1.2GHz del Pentium Mobile això va prou bé.

Ara la notícia de veritat, ahir a la Daphne li van donar la beca per anar dos mesos a estudiar xinès a Pequin durant dos mesos aquest estiu. Així doncs, em quedaré dos mesos solet :'( però bueno diguem que per una bona causa i així podré anar-la a veure a Xina i m’escapo uns quants dies de tan treballar.

cookbook: importar projecte de symfony al subversion

Reading time: 2 – 2 minutes

Petit cookbook de com hem d’importar un projecte que estiguem programant amb el framework symfony. Primer creem el directori del repositori on volem pujar el projecte, anem al directori del projecte. Borrem els directoris log i cache del qual no ens interessa mantenir un control de versions. I després importem el projecte.

svn mkdir -m "NOTA: Creem directori on hi posarem projecte" http://exemple.com/svn/repos/projecte/dev
cd directori_projecte_symfony
rm -rf log
rm -rf cache
svn import -m "NOTA: importem primera versio del projecte" . http://exemple.com/svn/repos/projecte/dev

Ara movem el directori actual del projecte i en creem un de nou, que ja tindrà control de versions. Fem un checkout (co) de la versió que em importat abans i defenim que els directoris log i cache no s’importaràn mai quan fem un commit (ci). Després creem els directoris en qüestió i els assignem un propietari igual al del procés d’apache perquè aquest el pugui escriure-hi mentre esta execucutant el nostre projecte symfony.

mv directori_projecte_symfony directori_projecte_symfony.bak
mkdir directori_projecte_symfony_amb_svn
cd directori_projecte_symfony_amb_svn
svn co http://exemple.com/svn/repos/projecte/dev .
svn propedit svn:ignore .
log
cache
mkdir log
mkdir cache
chown apache:apache log
chown apache:apache cache

PHP5: passant objectes com a paràmetre en una crida SOAP

Reading time: 2 – 3 minutes

Update: LES CONCLUSIONS D’AQUEST ARTICLE SÓN ERRONEES MIREU: PHP5: passant i tornant objectes com a paràmetre en una crida SOAP (Part II)

Treballant en un projecte que estem programant en PHP5 em va sortir aquest dubte, sobretot després de llegir les limitacions dels servidors SOAP que implementa PHP5. El tema finalment té una resposta positiva: SI, PERO…. A continuació us poso un exemple de com funciona aquest tema amb el PHP5 i quines limitacions té.

Definim el servidor SOAP que com podeu veure és senzillissim, l’únic que fa el servidor és re-enviar el mateix objecte que ha rebut.

<php
class SOAPservice {
        function peticion($per) {
                return $per;
  }
}
$server = new SoapServer("server.wsdl");
$server->setClass("SOAPservice");
$server->handle();
?>

A continuació podeu veure el codi del client, és un codi molt senzill de només dues línies. Com podem veure primer definim la classe persona i abans de cridar el client SOAP instanciem la classe, després usem aquest objecte com a paràmetre a la crida SOAP. Capturem l’objecte que ens retorna el servidor SOAP i a continuació mostrem el seu contingut amb l’ordre print_r.

<?php
/*
 definim classe persona
*/
class persona {
        public $nom;
        function setNom($nom) {
                $this->nom=$nom;
        }
        function setCognom($cognom) {
                $this->cognom=$cognom;
        }
        function getNom() {
                return $this->nom;
        }
        function getCognom() {
                return $this->cognom;
        }
}
/*
 creem objecte tipus persona
*/
$myPersona=new persona;
$myPersona->setNom("el_nom");
$myPersona->setCognom("el_cognom");
/*
 fem una crida SOAP amb un objecte com a parametre
*/
$client = new SoapClient("server.wsdl");
$myObj=$client->peticion($myPersona);
/*
 mostrem objecte generic que retorna la crida SOAP
*/
print_r($myObj);
?>

Si mirem la sortida que ens dona quan cridem el client podem veure que l’objecte que torna no és del tipus persona sinó d’un tipus intern del PHP5 anomenat stdClass. Aquest objecte només disposa dels atributs públics. No podem accedir als atributs privats o protegits i hem perdut tots els mètodes siguin del tipus que siguin.

stdClass Object
(
    [nom] => el_nom
    [cognom] => el_cognom
)

Això és tot el que he pogut aconseguir, no és gaire però com a mínim a mi m’ha estat suficient.

Scroll to Top