[Hackmeeting] Estensioni, sturie, dnshook

Delete this message

Reply to this message
Author: lesion
Date:  
To: hackmeeting
New-Topics: Re: [Hackmeeting] Estensioni, sturie, dnshook
Subject: [Hackmeeting] Estensioni, sturie, dnshook
Salve,
ad hackmeeting con alcuni si e' parlato di firefox ed estensioni,
e in questi giorni ho fatto un po' di giochi che voglio
condividere.

Alcune considerazioni prima di arrivare al dunque:
. Firefox E' un estensione (di xulrunner)
. Tutte le estensioni hanno lo stesso livello di accesso/funzionalita'
. Tutte le estensioni possono accedere a tutte le funzionalita' delle
altre estensioni
. Con le estensioni e' possibile fare ogni tipo di porcaio

Questo e' figo perche' io posso avere delle estensioni che in realta'
tolgono funzionalita' a Firefox, ad esempio l'estensione r-kiosk che
toglie i menu', le toolbar, e altre cosine.

Le estensioni possono poi creare dei componenti XPCOM.
Dei componenti XPCOM ne ha parlato un po' baku al suo seminario
sulle estensioni, si sappia pero' che sono una sorta di librerie
che mettono a disposizione componenti riutilizzabili le cui
funzionalita' sono di basso livello e multipiattaforma, e servono ad
ogni sviluppatore di estensioni per evitare di reimplementarsi le
solite cose da solo e in malo modo.

Componenti XPCOM usatissimi sono ad esempio @mozilla.org/preferences-
service;1 che ci permette di gestire le preferenze, o
@mozilla.org/network/dns-service;1 che risolve domini per noi su ogni
piattaforma, in maniera sincrona (resolve) o asyncrona (asyncResolve).
Di questi componenti ce ne sono un'infinita', se installate
l'estensione XPCOM Component Viewer potrete vedere per ogni componente,
le interfacce esportate, i metodi, ecc....

Ecco una cosa bellissima e' che oltre a poter dichiarare altri
componenti XPCOM dentro una mia estensione posso fare una sorta di
override di componenti gia' esistenti, ovvero sovrascrivere le loro
funzionalita'.
Questo mi permette di fare le peggio porcherie.

Ho scritto un'estensione di prova che utilizza questa tecnica per
@mozilla.org/network/dns-service;1 per fare uno switch veloce tra siti
web in produzione e in sviluppo cosi' da evitare ogni volta di sporcare
/etc/hosts o dio sa solo cosa su windows.

Uso un po' di cose interessanti nuove di FF3, ad esempio Application, e
un po' di cazzate in giro.

Il codice e' su http://code.autistici.org/p/dnshook

Se interessa possiamo continuare il giochino con @mozilla.org/security
/datasignatureverifier;1 un proxy in lussemburgo, e un hook su dei
domini interessanti ;)

bbaci