Tuntun, Snul ed altro

E’ passata una buona settimana dall’ultimo post e nonostante il lavoro, la mia facilità nel distrarmi e qualche bug di vala, Tuntun è progredito e sta giungendo quasi l’ora di un primo rilascio.

Questo è lo stato dell’applet al momento:

  • internazionalizzazione
  • finestra di log come in ovpClient
  • new: supporto la richiesta di eventuali username / password (sia per il metodo di autenticazione Auth, che Private Key)
  • debug, debug e debug

Quindi, dato che sono rimasti solo “2 debug”, mi devo affrettare a trovare uno spazio web dove poter uploadare questo piccolo progetto.

Ed ecco come appare (da notare che la gestione delle connessioni è totalmente asincrona, mentre perSbaglio è bloccato nella fase di autenticazione, Morph effettua con successo il suo collegamento) :

Tuntun preview 2

Ovviamente insieme a Tuntun anche Snul ha subito dei ritocchi e principalmente le novità sono:

  1. Risoluzione asincrona degli indirizzi
  2. Bug fixing

Sono quindi lieto di annunciare una nuova versione di Snul – “The Gollum Child”, non scaricatela perchè scotta!

Ed ora veniamo ad altro! Preso dall’entusiamo di Alessandro che combatteva con perl sotto windows per scrivere un utile plugin per pidgin mi son detto: perchè non scriverne uno uguale in vala per xchat-gnome?

Beh il plugin non l’ho scritto (ti sto aspettando Alex, poi io farò il porting del tuo da pidgin ad xchat 😉 ), ma i bindings e un Hello World li ho fatti!

Siori e siore ecco xchat-helloworld (sempre in “The vala experiments”)!

Novità su Tuntun

Tuntun si sta quasi trasformando in un programma finito. Ormai le funzionalità principali sono state implementate ed offre già qualche utile servigio.

Ecco i vantaggi rispetto a ovpnClient:

  1. scritto in vala e quindi un minimo più maneggevole rispetto al corrispondente in C
  2. dipendenze esterne ridotte: tolta libglade (rimpiazzata da gtkbuilder) e gnet (rimpiazzata da snul)

Mancano tuttavia ancora una serie di funzionalità prima di portelo definire pronto per un rilascio:

  • internazionalizzazione
  • finestra di log come in ovpClient
  • debug, debug e debug

Inoltre prima di parlare di una versione pubblica vorrei implementare qualche nuova funzione anche per “l’utente non programmatore”, come il supporto per la richiesta di nome utente e password durante la connessione.

Non si può che finire con uno screenshot:

tuntunt in action

Snul 0.0.2 aka “il fluido che uccide” released!

Insomma, mi è toccato… una nuova fiammante ed entusiasmante versione di snul.

I cambiamenti sono pochi, ma derivati da un minimo utilizzo sul campo con Tuntun. Da questa sera ho finalmente un sostituto funzionante e minimamente testato delle 4 chiamate di gnet che utilizzavo!

Dal canto suo anche Tuntun inizia a prender forma, manca ancora tutta la parte di interfaccia, ma ad oggi riesce a:

  1. installarsi come applet nel panel senza crashare mezzo mondo (fino a poche ore fa bloccava tutto il pannello di gnome)
  2. leggere il file config con le connessioni definite (stesso formato di ovpnClient)
  3. presentare un menu’ popup con i collegamenti
  4. determinare lo stato attuale della connessione
  5. aprirla
  6. e chiuderla

Snul

Beh… alla fine non ne potevo più di gnet, scrivere i bindings per vala è veramente, come dire, poco gratificante ed e’ una libreria praticamente non mantenuta da anni.

Avendo bisogno di implementare un client Tcp dalle funzionalita’ veramente minime per Tuntun, mi son messo giù e l’ho fatto direttamente in vala interfacciandomi solo con le funzioni del s.o (BSD sockets).

Il risultato non è il massimo, ma alla fine raggiunge lo scopo e funziona, quindi ho pensato che potrebbe essere utile anche a qualche altra anima informatica se non altro come esempio di come (non!) programmare in vala.

Ecco quindi Snul una semplice libreria da utilizzare con il copia & incolla. (Sì lo so la paginetta è scritta in inglese, che dici? Ah è maccheronico? Beh sono apprezzati aiuti e commenti al riguardo…)

P.s.

Perchè snul? Oltre al simple network utility library penso che si addica ancor meglio questa definizione… rimanendo comunque in attesa di una persona dai modi migliori: GIO.

Tuntun: una scusa per cambiare i propri strumenti di lavoro

Diversi cambiamenti nella mia vita da programmatore “hobbista” tutti scaturiti dalla malsana idea di riscrivere ovpnClient in vala.

Prima difficoltà: non esistono i binding per gnet e gnet stessa sembra una libreria destinata all’oblio.

Seconda difficoltà: anjuta, seppur un bel IDE è ancora un po’ immaturo e per me è arrivato il momento di fare una scelta con la quale convivere per un po’ di tempo (intanto continuero’ a tenerlo sott’occhio).

E per non farmi mancare nulla perche’ non cambiare anche il ben amato svn con il più indicato (in questo caso) git?

Bene 2 settimane di test, ritest, letture di manuali tutorial ed howto.
Inoltre ho mosso qualche timido passo nella comunità #vala nonostante il mio inglese non sia certamente fra i migliori.

Il risultato?

GNet: primi binding per vala e qualche patch inviata a Juerg per vapigen (di sicuro ho scritto del pessimo codice, ma ho individuato almeno quello che manca in vapigen per gestire librerie cosi’ “difficili” come gnet)

Editor o meglio IDE: emacs. Per configurarlo ho penato un po’ soprattutto per i caratteri e l’indentazione, ma inizio ad ambientarmi e mi piace (qui c’è il mio .emacs).

GIT: ho solo scalfito la superficie, ma per ora clono, tengo traccia delle modifiche nel repository svn di vala, riapplico le mie patch riesco a far diff e quant’altro senza troppe difficoltà e sinceramente, anche se git presenta alcuni lati oscuri, non mi è sembrato troppo complicato e soprattutto mi ha agevolato non poco nel mantere il mio “patchset” personale da applicare a vapigen.

Tornando al titolo del post: tuntun sarà una lenta riscrittura di ovpnClient in Vala, con qualche “minima” miglioria e nulla di piu’.

Perche’ lo sto facendo? Beh per divertimento, per avere una scusa per stravolgere il mio modo di programmare con linux, piu’ semplicemente per riprendere un po’ di confidenza con Vala dato che ne sono cambiate di cose ed inoltre perchè io sono il primo e forse unico utente di ovpnClient e vorrei avere qualche cosa di piu’ maneggevole da modificare.

P.S.
Non ho intenzione di installare network manager solo per gestire qualche (una) vpn su questo povero P-IV 1.4GHz, che già di cose ne fa troppe.

ovpnClient

Novità per ovpnClient, la mia piccola Client GUI per Open Vpn. Ho aggiunto un’animazione nell’icona visualizzata nel pannello di GNOME per indicare una qualche attività su una o più VPN (es. durante la connessione).

Inoltre ho attivato un repository SVN all’indirizzo:

http://persbaglio.it/svn/ovpnclient/

da web è più comodo visitarlo con questo stupendo tool:

http://persbaglio.it/websvn/

ovpnClient 0.0.2 (alpha)

Da qualche tempo ho ripreso lo sviluppo di ovpnClient e dopo qualche colpo di mola una limatella qua e là, un aggiusto qui, un taglietto lì, posso considerare questa versione features complete…

Ovviamente da bravo masochista ragazzo quale sono, ho riscritto tutto il programma apportando non pochi cambiamenti rispetto al giocattolo precedente:

  • La comunicazione con il server avviene tramite l’interfaccia OpenVPN Management Interface (niente piu’ spawn di processi, pipe ed inutili richieste di password)
  • E’ possibile gestire piu’ connessioni OpenVPN
  • Il cambiamento di stato di una connessione è visualizzato tramite libnotify
  • E’ disponibile una rudimentale finestra di log, con la possibilità di inviare stringhe di comando al server OpenVPN
  • Il tutto scritto secondo le regole ferree della programmazione ai g-oggetti… (non è vero in questo campo sono un neofita!)

Prima di rilasciare il ovpnClient al pubblico ludibrio devo sistemare un po’ i sorgenti (per ora veramente impresentabili) ed assicurarmi che il make check non dia errore. Ed ora ecco com’è la nuova creatura.

Connessione avvenuta
Connessione!

Modifica delle proprietà di connessione
Proprietà

Visualizzazione log e finestra dei comandi
Log

GoVPN!

Finalmente dopo qualche tentativo, make distcheck è stato eseguito con successo:

....

make[2]: Leaving directory `/home/andrea/Documenti/src/anjuta/govpn/govpn-0.1/_build'
rm -f config.status config.cache config.log configure.lineno configure.status.lineno
rm -f Makefile
make[1]: Leaving directory `/home/andrea/Documenti/src/anjuta/govpn/govpn-0.1/_build'
{ test ! -d govpn-0.1 || { find govpn-0.1 -type d ! -perm -200 -exec chmod u+w {} ';' && rm -fr govpn-0.1; }; }
===========================================
govpn-0.1 archives ready for distribution:
govpn-0.1.tar.gz
===========================================

Sono quindi molto orgoglioso di annunciare l'uscita di GoVPN! E mi raccomando andateci piano è la prima applet che scrivo ed è la prima volta che mi cimento con auto... beep. Oops sono stato censurato....