martedì 30 ottobre 2012

pillole linux: un semplice firewall

Cos'e' un firewall ?


Un firewall in ambito informatico è un meccanismo che filtra in una rete le operazioni e comunicazioni ammesse o negate, in pratica cosa può passare o cosa deve fermarsi e non andare oltre.... le possibilità e le esigenze sono infinite, noi prenderemo un caso più che semplice come esempio, senza scendere in dettagli o configurazioni professionali.

Generalmente, o per uso domestico non ne abbiamo particolare bisogno, a meno che non abbiamo un pc collegato in rete con un indirizzo ip pubblico.

Cos'e' un indirizzo ip pubblico ?
vedete il discorso fatto in un post precedente : http://tecnocchio.blogspot.it/2012/03/il-mio-server-internet-personale-perte.html

Il nostro firewall che filtra per funzionare bene deve avere diverse interfacce di rete, una collegata ad una rete, tipo alla nostra rete dei pc e l'altra scheda che va verso internet. In lunux le interfacce di rete ethernet in genere si chiamano eth ed un numero, noi cominciamo ad immaginare che eth0 è la nostra rete interna ed eth1 e la scheda che guarda verso la rete esterna, e che vogliamo proteggerci da ogni eventuale  accesso dall'esterno non autorizzato.
Per il nostro scopo suggerisco una distribuzione linux minimale in cui non installiamo l'interfaccia grafica tipo ubuntu-server.
Innanzi tutto andiamo a definire quelli che sono gli indirizzi che hanno le nostre reti:
sudo nano -w /etc/network/interfaces

dovrebbe avere una configurazione simile, ma ovviamente con gli indirizzi adatti alle vostre esigenze

auto lo
iface lo inet loopback

# rete INTERNA

auto eth0
iface eth0 inet static
address 192.168.0.254
netmask 255.255.255.0

# rete ESTERNA 

auto eth1
iface eth1 inet static

# indirizzo ip casomai pubblico
address 200.153.19.59
netmask 255.255.255.248
gateway 200.153.19.57


# dopo aver configurato la rete lancia questo script :
post-up /etc/regole_firewall.sh


a questo punto dovremo solo configurare le regole di firewall

sudo nano -w /etc/regole_firewall.sh

#!/bin/bash


#    PER INIZIARE CANCELLIAMO TUTTE LE REGOLE ESISTENTI


for table in nat mangle filter
do
    /sbin/iptables -t $table -F
    /sbin/iptables -t $table -X
    /sbin/iptables -t $table -Z
done

#
# DOPO DI CHE CHIUDIAMO TUTTO
#
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

#
# ABILITIAMO QUINDI L' IP Forwarding PER PERMETTERE CHE I DATI ATTRAVERSINO LE RETI
#
echo 1 > /proc/sys/net/ipv4/ip_forward

#
# IGNORA I PING DI BROADCAST
#
echo 1 > /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts

#
# ABILITA rp_filter PER EVITARE IP SPOOFING
#
for a in /proc/sys/net/ipv4/conf/*/rp_filter; do
    echo 1 > $a
done

# ACCETTA LE COMUNICAZIONE CHE SONO DELLE RISPOSTE A CONNESSIONI STABILITE

#

/sbin/iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

#
# QUESTA RIGA PERMETTE DI FARE IL NAT TRA LE DUE RETI, IL NAT È QUELLO CHE IN GENERE FA IL ROUTER, Nat sta per network addres translation
#
/sbin/iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE

# PERMESSI IN INGRESSO:


# ABILITIAMO L'ACCESSO SSH DALLA RETE INTERNA


/sbin/iptables -t filter -A INPUT -i eth0 -p tcp --dport ssh -j ACCEPT

# PERMESSI IN USCITA :


# QUESTA RIGA PERMETTE AI COMPUTER DELLA RETE INTERNA DI USCIRE PER AGGIORNARE L'ORA
/sbin/iptables -t filter -A OUTPUT -o eth0  -p udp --dport ntp -j ACCEPT

# QUESTA RIGA PERMETTE AI COMPUTER DELLA RETE INTERNA DI ANDARE SULLA RETE ESTERNA SUI DNS DI GOOGLE PER RISOLVCERE I NOMI
/sbin/iptables -t filter -A OUTPUT -o eth1 -d 8.8.8.8 -p udp --dport 53 -j ACCEPT
/sbin/iptables -t filter -A OUTPUT -o eth1 -d 8.8.4.4 -p udp --dport 53 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1 -d 8.8.8.8 -p udp --dport 53 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1 -d 8.8.4.4 -p udp --dport 53 -j ACCEPT

# QUESTE RIGHE PERMETTONO AI PC DELLA RETE INTERNA DI ANDARE SULLE PORTE PIÙ COMUNI DELLA RETE ESTERNA, COME IL WEB, LA POSTA...

 
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 80 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 443 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 21 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 22 -j ACCEPT

/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 465 -j ACCEPT
/sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 993 -j ACCEPT /sbin/iptables -t filter -A FORWARD -i eth0 -o eth1  -p tcp --dport 995 -j ACCEPT


sudo chmod +x /etc/regole_firewall.sh

Ora è sufficente riavviare e collegare le reti.

domenica 28 ottobre 2012

appunti linux, personalizzare unity

Esistono delle simpaticissime librerie di icone, ve ne mostro un paio, anche se sarebbero per kde, a me piacciono molto, scaricabile da :
http://ftp11.tw.freebsd.org/FreeBSD/distfiles/RESTRICTED/KDE/noia-kde-icons-1.00.tgz
ed un altro simile sempre trovato su kde-look.org ma scaricabile da http://ftp11.tw.freebsd.org/FreeBSD/distfiles/RESTRICTED/KDE/noiawarmkde095.tar.gz
Nota bene, se volete personalizzare il vostro desktop su gnome-look.org / kde-look.org trovate un mare di materiale, dalle icone ai widget agli sfondi, tutto disponibile per voi... ma la domanda fatidica resta: come lo installo ?
Ora che abbiamo  scaricato i pacchetti li dobbiamo installare, purtroppo mentre kde ha una interfaccia che prende i file compressi e li installa, non ho trovato la corrispettiva interfaccia per gnome/unity, quindi:
il tar gz scaricato contiene una cartella che va scompattata e copiata sotto usr/share/icons.
Per fare questo in maniera semplice:
apriamo il terminale di linux ( potete cercarlo tra le applicazioni installate )
con ottima approssimazione vi troverete nella cartella /home/utente, e sempre con ottima approssimazione avrete scaricato il file in /home/nomeutente/Scaricati, quindi spostiamoci in questa directory

cd Scaricati

ora dobbiamo scompattare il file e lo facciamo con questo comando :

tar -xzvf noiawarmkde095.tar.gz

questo creerà una cartella di nome Noia Warm KDE 0.95

bene è ora di spostarla nel percorso corretto:

sudo mv Noia\ Warm\ KDE\ 0.95/ /usr/share/icons/

nota bene: i simboli \ in linux indicano uno spazio, probabilmente vi basta scrivere la prima parte del nome e poi premere tab per far completare il percorso alla shell, io ho preso ad esempio il secondo file che sta sopra, ma basta cambiare i nomi per l'altro file o altri file in generale.

per applicare il tema di icone invece:
installare i tweak tool di gnome

sudo apt-get install gnome-tweak-tool 

quindi andare sulla dash e cercare "impostazioni avanzate" o ricercarlo nelle lingua della propria installazione.
Una volta lanciato il programma andate su tema e potete scegliere il tema delle icone, dell'ambiente o delle finestre... insomma potete sbizarrirvi come volete.

Non finisce di certo qui, perchè ora potete scegliere se quando inserite una penna usb appare l'icona sul desktop, oppure se mostrare sul desktop il cestino o l'icona computer o cambiare i font usati dal sistema.

buona pesonalizzazione del vostro desktop !!




martedì 16 ottobre 2012

Appunti di linux, wins e chmod 4755

Problema comune usando linux in una rete (haimè) mista è che non riesco a risolvere i nomi delle macchine winzoz (windows) da linux senza usare un server dns.
Stiamo parlando i piccole reti o di macchine virtuali, ma la comodità di scrivere il nome macchina anzichè l'ip va preservata....
girovagando nel web spunta fuori la soluzione, " winbind ".
non sono sicuro che serva avere samba installato, ma è probabile, io l'avevo e mi è bastato inserire nel file
/etc/nsswitch.conf la parola "wins" in fondo alla riga hosts:

hosts:         files mdns4_minimal [NOTFOUND=return] dns wins

et voilà il gioco è fatto! ora

ping nomemacchinawinzoz funziona!
o rdesktop nomemacchinawinzoz !

problema 2
per comodità voglio poter usare alcuni comandi senza usare sudo, sono consapevole di abbassare molto il livello di sicurezza del sistema, ma la mia comodità ha la precedenza.... vediamo come funziona il set uid
esempio: ho una macchina linux virtuale, ogni volta che si avvia voglio che sincronizzi forzatamente l'orario con un server nazionale.
ci assicuriamo di avere ntpdate installato
sudo apt-get install ntpdate
dopo di che
chmod 4755 /usr/bin/ntpdate
quindi possiamo mettere il comando :
ntpdate ntp1.inrim.it
nell'elenco dei comandi che ubuntu lancia all'avvio o al logon, avendo così l'ora aggiornata.
altra possibilità è
chmod 4755 /sbin/shutdown
così che quando decidiamo di lanciare shutdown da shell non c'e' nessuno che lo mantenga, ne che ci rallenti.

martedì 22 maggio 2012

Ludus Latrunculorum

Ludus Latrunculorum

https://play.google.com/store/apps/details?id=tecnocchio.games.latrunculi.android

è un gioco da tavolo praticato dagli antichi romani, di cui sono sopravvissute poche descrizioni .
Le regole sono state immaginate in base alle informazioni rinvenute.
Il gioco è costituito da un re e dalle pedine.
Regole :
Movimento : Re e Pedine si muovono in orizzontale e verticale senza poter scavalcare altri pezzi.
Condizioni di vittoria: Si vince catturando tutte le pedine dell\'avversario, oppure bloccando il re avversario sui 4 lati.
Condizioni di cattura: una pedina è catturata se viene accerchiata da 2 lati opposti dall\'avversario, se la pedina è nell\'angolo, viene catturata occupando i 2 lati liberi.
La versione per android offre la possibilità di giocare contro un altra persona o affrontare 2 diverse difficoltà di AI.
Nel menù delle opzioni è possibile giocare su una scacchiera 8 per 8 o 12 per 8.

Ovviamente come si può notare non sono un grafico, e nonostante i miei sforzi ho impiegato + tempo a curare la grafica che a sviluppare tutto il resto dell'applicazione.

Vi auguro buon divertimento e fatemi sapere se dopo qualche partita riuscite a vincere l'applicazione in modalità difficile :)

Latrunculi versione pre beta


Questo gioco potrebbe essere un lontano parente degli scacchi, in effetti molto lontano, è un gioco andato perduto nel tempo , sappiamo che veniva giocato nell'antica roma ma le regole non sono certe.
Le regole che al momento ho applicato sono :
1) pedine e re si muovono in orizzontale o verticale e non possono saltare altre pedine
2) una pedina viene mangiata se circondata da due lati opposti dall'avversario (non funziona il suicidio), nell'angolo la pedina viene mangiata se circondata ai 2 lati.
3) le condizioni di vittoria sono : re circondato (anche da proprie pedine) oppure fine delle pedine.
Ne ho trovato una versione opensource, anche per android, ma dato il fascino e data la possibilità di aggiungere varianti nuove in futuro ho cominciato a fare questo esperimento di sviluppo.
Quella che era la parte più difficile da implementare, ovvero l'intelligenza artificiale che sta dietro alle mosse del pc/smartphone/tablet l'ho relegata a mio fratello che con la matematica/logica ha un ottimo rapporto. Io mi sono limitato ad abbozzare quella che poteva essere l'interfaccia essenziale per visualizzare il gioco.
Così da poter provare a pensare in futuro di pubblicare qualcosa sul market android :).


Ecco una prima release instabile del programmino :


In effetti la grafica è abozzata, ma ho preferito fare png alla buona che scopiazzarle in giro, l'AI è ottima soprattutto se impostata a livello difficile (opzione ancora non disponibile all'utente) ma parecchio lenta, bisogna essere molto pazienti :) attualmente in hard mode si può anche aspettare 1 minuto e + per una mossa. Si parte in modalità contro l'ai ma c'e' il bottone per il 2 player.


Cercasi Beta Tester, ma anche alfa, gamma o delta... se trovate difetti o proponete idee lasciate un commento positivo o negativo, mi farà comunque piacere, sarete di grande aiuto e mi spronate a continuare.


18-04-2012 revisionata la versione , aggiunta modalità diffcile, tasto annulla mossa, barra di avanzamento quando il pc pensa la mossa. La modalità difficile sul mio smartphone è terribilmente lenta a rispondere.
19-04-2012 revisionata la grafica, le icone sono un pochino meno orrende, almeno a mio avviso :).
22-04-2012 (versione android) corretti i problemi di crash, introdotto delle icone diverse per la modalità selezionata, introdotta scacchiera da 8x8 dal menù.
23-04-2012 (versione android) corretti altri problemi di crash, corretto il bottone undo 
10-05-2012 (versione android rel 1.0.0 ) introdotto audio, gestita un po meglio la grafica, corretti i menu, aggiunto un help con le regole.
per android cercare ludus latrunculi nel google play
https://play.google.com/store/apps/details?id=tecnocchio.games.latrunculi.android


venerdì 13 aprile 2012

Il mio server internet personale parte 8 : Backup


"Salvami dalla rottura di un disco, sono il tuo lavoro e non voglio smarrirmi su una penna usb o nel disordine del tuo hd esterno."
Potrei mettere una copia del mio lavoro sul server google docs o sul server ubuntu one, ma dopo un po mi scordo sicuro.Forse potrei  istruire il mio server internet personale per farlo con una cadenza costante :), forse è più affidabile ... vediamo come.

all'inizio volevo montare una nuvola come un file system, ma non è stato possibile con google docs o ubuntu one, dopo di che ho cambiato la filosofia :)

Al momento urge fare una copia di sicurezza del lavoro, soprattutto dei sorgenti dei programmi scritti e conservati nel server svn.
Ho risolto usando ubuntu 1, vediamo come :
innanzi tutto ho acceduto in modalità grafica alla macchina, per farlo ho usato tightvncserver
dalla classica shell del server ho dato
apt-get install tightvncserver
quindi l'ho lanciato
tightvncserver
e mi ha chiesto di immettere la password.
a questo punto ho usato il comando
netstat
per controllare con certezza quale è la porta tcp su cui sta ascoltando e mi sono collegato dal mio pc su cui la tastiera funziona con un client tightvnc :).
ho installato ubuntu one e l'ho configurato con il mio account.
Ubuntu one ha creato una cartella Ubuntu One nella mia home e la terrà sincronizzata.
dentro questa cartella ho creato una cartella svn, e sono tornato alla shell.
da root come sempre ho creato un file cron.sh con il seguente contenuto e l'ho chiamato cron.sh:

#!/bin/bash
NOW=$(date +"%Y-%m-%d")
FILE="backup.$NOW.tar.bz2"
tar -cjvf /home/utente/Ubuntu\ One/svn/$FILE /var/svn/repository
chown utente:utente /home/utente/Ubuntu\ One/svn/$FILE

la prima riga dice che è uno script
la seconda crea una variabile che contiene la data odierna espressa come anno-mese-giorno
la terza specifica che il nome del file deve contenere la data
la quarta fa partire una compressione della cartella che contiene i repository svn dei miei progetti
e siccome è una operazione che fa root, risistema i permessi del file appena creato, così è pronto per il sync.

ultimo passaggio, dobbiamo ancora dire quando fare in automatico questo backup. per questo usiamo crontab e digitiamo
crontab -e
io scelgo di usare nano per editare il file e metto questa riga :)

 0 2 * * * /root/cron.sh

che fa partite lo script sopra tutti i giorni alle 2 di notte.
sostituendo l'ultimo asterisco con una cifra da 0 a 6 era possibile farlo settimanalmente.

e spiegato così sembra che ci vogliono 5 minuti per farlo :(

Nota bene nessuno dei metodi sotto avevano portato a risultati positivi !!

Questi sono stati i tentativi che sono andati male, li lascio per chi volesse leggere :)

Innanzi tutto se non ce l'ho già mi iscrivo ad ubuntu one e mi creo un account
ovviamente è gratuito se vi bastano 5 gb https://one.ubuntu.com/
abbiamo quindi il nostro account  e la nostra password, passiamo all'installazione del software necesario.
Su linux è possibile montare in una cartella una cartella webdav. Non sono parolacce, montare significa che possiamo dire che nella cartella /mnt/ubuntuone verrà collegato il contenuto della cartella che abbiamo sul server di ubuntu, così da poterci leggere e scrivere come se fosse in locale, il server di ubuntu usa una tecnologia chiamata webdav :). passiamo ai comandi.

da una ricerca approfondita esce fuori che ubuntu one non usa webdav come qualcuno suggeriva, quindi, se vogliamo montare il file system per accedervi dobbiamo cambiare piattaforma, proviamo google docs :
 A  questo punto il discorso sembra essere in discesa, perchè troviamo una semplice guida che proviamo a seguire... innanzi tutto andiamo qui: http://code.google.com/p/gdocsfs/
prendiamo il percorso per scaricare i file necessari che al momento in cui scrivo è http://gdocsfs.googlecode.com/files/gdocsfs-0.0.1.zip
e cominciamo a lavorare :)
a me piace lamerare e lavorare come root :)
sudo su
diamo password
cd /root
wget http://gdocsfs.googlecode.com/files/gdocsfs-0.0.1.zip
potrebbe salvarlo con un nome strano, nel caso rinominiamo lasciando solo  gdocsfs-0.0.1.zip
mv cosastranagdocsfs-0.0.1.zip gdocsfs-0.0.1.zip

unzip gdocsfs-x.y.z.zip
cd gdocsfs
ora dobbiamo scegliere dove installarlo... un buon linuxiano farebbe un ambiente
per il backup, un utente appostito o un gruppo con privilegi specifici ben
congegnato in maniera tale da preservare la sicurezza, ma noi siamo alle prime armi
e non vogliamo lanciare i missili, abbiamo bisogno di un modo semplice per fare il
backup quindi continuiamo a lamerare con il nostro utente root. sudo ./install /root/
nano -w /root/gdocsfs/conf/gdocsfs.proprerties
aggiungiamo utente e password
e non funziona neppure questo, evidentemente il progetto deve essere vecchio
perchè non si collega e cerca una connessione ssl.
abbiamo già perso 2 giornate, ma non ci fermiamo, e soprattutto non le perderete voi a fare le ricerche.

proviamo adesso con https://launchpad.net/google-docs-fs
procediamo quindi con aggiungere il repository mantenuto da questo italiano di nome Invernizzi :)
nano -w /etc/apt/sources.list
aggiungiamo 2 righe
deb http://ppa.launchpad.net/invernizzi/google-docs-fs/ubuntu VERSIONE_TUA_DI_UBUNTU main deb-src http://ppa.launchpad.net/invernizzi/google-docs-fs/ubuntu VERSIONE_TUA_DI_UBUNTU main
ricordate di cambiare VERSIONE_TUA_DI_UBUNTU con il nome della vostra
atp-get update
apt-get install google-docs-fs
ed abbiamo finito
lanciamo
gmount /mnt/gdocs nomeutente@gmail.com
mi chiede la password e non funziona :(


lunedì 9 aprile 2012

Il mio server internet personale parte 7 : Streaming video ed audio

Il software libero offre tantissime possibilità di sviluppare servizi. Stavo pensando che mi piacerebbe avere a disposizione la mia collezione di musica e video a portata di mano, un po come avere uno youtube personale da qualunque postazione internet e sui miei apparati android.
Dopo un po di ricerche ho trovato il progetto Subsonic e sembra svolgere abbastanza bene le cose che stavo cercando.
Subsonic permette di avere un proprio server web di contenuti con tanto di lettori multimediali alla "youtube", skin d personalizzazione ed autorizzazione per l'accesso, permette di caricare file audio e video  e preparare playlist, creare dei podcast, insomma, fa un bel po di cose simpatiche.
Unico inconveniente è che richiede una donazione dopo un po per continuare ad usare alcune funzioni, ma sono sicuro che troveremo il modo di contribuire al progetto anche senza donare per forza.
passiamo alla fase di installazione :
ovviamente partiamo da una connessione ssh al nostro server personale, una volta acceduto facciamo
sudo bash
andiamo nella nostra cartella di lavoro
cd /root
e scarichiamo il pacchetto necessario :
wget http://downloads.sourceforge.net/project/subsonic/subsonic/4.1/subsonic-4.1.deb
potete trovare l'ultima versione qui :
http://www.subsonic.org/pages/download.jsp
Installiamo prima i pacchetti necessari
apt-get install openjdk-6-jre lame flac faad vorbis-tools ffmpeg ed installiamo quindi subsonic
dpkg -i subsonic-*.deb

A questo punto il server partirà in automatico e si metterà in ascolto sulla porta 4040 per default
il file di configurazione è in /etc/default/subsonic

se volete potete cambiare il numero della porta, anche se a mio avviso va bene così
avendo a disposizione un altra porta a cui accedere, andiamo a settare il router adsl per abilitare il port forwarding anche sulla porta 4040 tcp.

.
ora accedete con il browser all'indirizzo  http://tuoserverinternet:4040


All'interno di subsonic 
1) impostiamo la password di admin
2) creiamo un utente
3) specifichiamo le directory da usare per i file multimediali
ed il gioco è fatto :)

una volta acceduto con l'utente creato andate nel menù "more" e caricate un file video o audio così lo avrete a disposizione.
Una cosa simpatica è che il lettore flash vi fa scegliere a che qualità volete riprodurre un video, in tal modo potete vedere in streaming video occupando diversi tipi di banda.
Per i file multimediali è presente un link per il download.

Nel mio caso ho un pc in rete con una partizione windows xp ed ho il backup dei miei film in un disco esterno usb da 2 tera con una cartella film condivisa per poterla vedere dalla nintendo wii per la riproduzione sulla tv.
Con subsonic posso utilizzare come sorgente questo disco esterno senza scollegarlo da quel pc, è sufficente :
installare un pacchetto per la gestione del file system di rete microzoz
apt-get install smbfs
creare una cartella per l'uopo
mkdir /mnt/filmsmb
quindi montare la cartella di rete :
mount -t cifs //pc-fisso/film -o username=administrator,password=myPassword /mnt/filmsmb
quindi andare nei settaggi di subsonic ed aggiungere il percorso /mnt/filmsmb.

possiamo fare lo stesso per i nostri mp3 :)

Android ed Ios :
Sono presenti dei client per Android ed IPhone che si chiamano subsonic e si collegano a questo tipo di server. Ovviamente io ho provato la versione android.

venerdì 6 aprile 2012

Eclipse e Subversion come funziona ?



Eclipse è uno splendido strumento di programmazione, ma un programmatore è un pò come lo scrittore di un libro, ha i suoi raptus di programmazione e vuole scrivere codice dal letto, dalla scrivania o addirittura consultarlo sul tablet mentre è concentrato comodamente sul bagno.
Insomma il lampo di genio non va mai sprecato, quindi se abbiamo il nostro server internet con tanto di subversion, possiamo prendere le nostre installazioni di eclipse ( non lavoriamo sempre e solo da 1 pc ) e:
dal menù "Help" scelgo la voce : Install new software
aggiungo
http://download.eclipse.org/technology/subversive/1.0/update-site/ 
 seleziono tutto e procedo, mi viene chiesto di riavviare eclipse, una volta riavviato mi viene proposto un elenco di moduli svn, scelgo l'svn kit che mi sta più simpatico (la versione + recente) e procedo.

Vecchio modo:
http://subclipse.tigris.org/update_1.4.x 
 ( se volete sapere quale è l'ultima versione disponibile andate qui http://subclipse.tigris.org/servlets/ProjectProcess?pageID=p4wYuA
, che è la pagina download del sito )
spunto javahl adapter , subeclipse e subeclipse client adapter
vado avanti.... al termine mi viene chiesto di riavviare eclipse ed io accetto di buon grado.
Una volta installato il plugin eclipse facciamo dal menù
new project
scegliamo dall'elenco
select a wizard svn checkout projects from svn 
bottone NEXT 
check su create a new repository location 
diamo il nostro url che per gli esempi precedenti sarà http://tecnocchio.dnsd.info/svn/esempio
selezioniamo la cartella e premiamo sul bottone FINISH 
partirà un processo che copia tutti i file del progetto sulla vostra macchina per permettervi di lavorarci sopra :).

Per agire su un file del progetto anche senza sapere i comandi SVN basta fare su un file del progetto nel package explorer :
bottone destro TEAM->e scegliere un operazione ad esempio.E' possibile mostrare lo storico delle modifiche o aggionare le proprie modifiche o....
Ovviamente Eclipse è disponibile per linux !
Scaricabile presso http://eclipse.org/ buon coding ;)!

Il mio server internet personale parte 6: subversion

"Subversion exists to be universally recognized and adopted as an open-source, centralized version control system characterized by its reliability as a safe haven for valuable data; the simplicity of its model and usage; and its ability to support the needs of a wide variety of users and projects, from individuals to large-scale enterprise operations."

Che  tradotto in parole povere Subversion è un software che permette la gestione delle varie fasi della programmazione tenendo il codice prodotto al sicuro da errori di versioni o modifiche contemporanee.
Facendo un esempio se io ed un amico lavoriamo allo stesso progetto software potremmo modificare per errore lo stesso documento/codice, cosicchè uno dei due potrebbe perdere il lavoro svolto, oppure potremmo accorgerci di dover tornare in dietro di qualche giorno per rimediare ad un errore...
Bene subversion permette questo e molto altro, potete leggere altro qui : http://subversion.apache.org/

Subversion è programma che serve oggetti ed accetta oggetti vediamo come installarlo e configurarlo:

intanto ci appoggiamo al nostro caro apache che altrimenti si annoia a servire solo pagine web, permettendoci in futuro di accedere al nostro progetto anche con un semplice browser.

sudo bash
apt-get install subversion libapache2-svn

Il modulo dovrebbe essere già caricato ma possiamo controllarlo con:

a2enmod dav_svn

passiamo alla configurazione: primo passo, istruiamo il modulo di apache in merito alla cartella che utilizzeremo

nano -w /etc/apache2/mods-available/dav_svn.conf




andiamo a togliere il commento dalle seguenti linee

<Location /svn>
  DAV svn
  SVNParentPath /var/svn/repository
  AuthType Basic
  AuthName "Subversion Repository"
  AuthUserFile /etc/apache2/dav_svn.passwd
    Require valid-user
</Location>

creiamo un utentenel mio caso "utente" ed assegnamo una password :

htpasswd -c /etc/apache2/dav_svn.passwd utente

New password:
Re-type new password:
Adding password for user utente


ora creiamo la cartella principale dove conservare i progetti e ne modifichiamo i permessi

mkdir /var/svn
mkdir /var/svn/repository
chown www-data:www-data -R /var/svn/repository
chmod 770 -R /var/svn/repository

cambiamo utente in maniera da creare direttamente il progetto con i diritti giusti
su www-data

svnadmin create /var/svn/repository/esempio

importiamo quindi il nostro progetto iniziale, nel mio caso c'e' solo un file nella cartella

svn import /home/asta/progetto1 file:///var/svn/repository/esempio/esempiov1 -m"initial import"


Aggiungo       /home/utenteme/progetto1/main.c

Commit della Revisione 1 eseguito.

exit

torniamo root e riavviamo apache2

/etc/init.d/apache2 restart


testiamo il nostro server svn

lynx http://192.168.1.47/svn/esempio/

A cosa sarà servito tutto ciò ?

scopriamolo nel prossimo articolo, eclipse incontra svn:

lunedì 26 marzo 2012

Il mio server internet personale : parte 5 Il sito

Quale è il modo più veloce e funzionale per creare un sito senza avere una conoscenza approfondita di quelle che sono le tecnologie necessarie a svilupparlo ? Se il nostro obiettivo è quello di concentrarci sui contenuti e non sull'aspetto, con voglia di imparare, ma senza dover studiare in maniera esagerata, possiamo caricare sul nostro "apache" servitore di pagine un CMS, ovvero un sistema di manutensione dei contenuti. Uno strumento "dinamico" che ci permette con una serie di menu e scelte di amministrare l'aspetto e le varie caratteristiche che deve avere il nostro sito, permettendoci di partire da una base già pronta con diversi look da scegliere.... vediamo come installarlo.
innanzi tutto scarichiamo il pacchetto opensource del wordpress:

wget http://wordpress.org/latest.tar.gz

scompattiamo nella cartella var/www
creiamo un database

mysqladmin -u root -p create nomedatabase

verrà chiesta la password inserita in fase di installazione di mysql
poi entriamo in mysql

mysql -u root -p

vi verrà richiesta la password
poi creiamo un untente e gli assegnamo tutti i diritti sul database wp ed assegnamo la password 'non si dice'

GRANT ALL ON wp.* TO utentewp@localhost identified by 'Non si dice';

bene ora siamo pronti a configurare il wordpress

cd /var/www

editiamo il file i configurazione di esempio inserendo i nomi utente , db e password scelti

nano -w wp-config-sample.php

rinominiamo il file togliendo sample

mv wp-config-sample.php wp-config.php

 apriamo il browser ed il gioco è fatto !

mercoledì 21 marzo 2012

il mio server internet personale parte 4: apache

Parliamo di Apache, ma in maniera semplice, a tratti banale per rendere l'idea di cosa stiamo parlando senza cadere nel lato nerd della cosa :).
Apache è un web server ovvero un programma che serve pagine web, tu le ordini e lui te le da, o meglio le ordina il tuo browser per te, lui le prende dal disco e le passa al tuo broser che le mostra, sembra banale ma se pensate a quanti milioni di pagine vengono richieste sulla rete ogni secondo capite che anche una cosa apparentemente semplice va gestita come si deve. Aggiungiamo un po di dinamicità alle pagine web ovvero, non limitiamoci a prendere roba dal disco, ma elaboriamola prima di passarla all'utente, così nasce l'esigenza di avere un linguaggio che ci permette di fare calcoli o leggere da un archivio di dati e vien fuori che aache si può integrare con php (il linguaggio per le pagine dinamiche) e mysql (il programma che si occupa di archiviare un numero consistente di informazioni)
Abbiamo visto già nell'articolo dei pacchetti interessanti cosa installare
sudo apt-get install apache2 mysql-server mysql-admin php5-common php5 libapache2-mod-php5 php5-mysql
Durante l'installazione di mysql vi verrà richiesta la password dell'utente root, si tratta della password dell'utente principale del server dei dati, quello con cui potrete creare archivi ed utenti per gli archivi.
a questo punto funzionava tutto ma non l'integrazione di mysql all'interno di php, quindi ho risolto editando il file di configurazione di php.ini

sudo nano -w  /etc/php5/apache2/php.ini

ho aggiunto :
extension=mysql.so

daccordo ho seguito i passi ed ho visto un sacco di scritte scorrere, ho messo la password ma ora ? vogliamo vedere il risultato...

abbiamo detto che apache legge le pagine che vengono richieste dal disco, nel file di configurazione di apache c'e' specificato quale deve essere il file da fornire di default in caso non venga specificato, ovvero se io scrivo http://www.pincopallino.it/ non specifico il file da caricare, apache è istruito nel file di configurazione per tirare fuori il fil index.html se esiste, ma anche index.php ed altri particolari che potete scoprire nel file di configurazione di apache...
torniamo a noi andiamo a dare uno sguardo nella cartella :
/var/www
troviamo un index.html che è il file che viene caricato. Ora sappiamo che i nostri file devono essere messi qui per poter essere pubblicati.
se volessimo ora installare un cms ovvero un contenitore di documenti dinamico come wordpress o joomla siamo sulla buona strada :) ma casomai ne riparliamo nella prossima puntata :).


Il mio server internet personale : perte 3 La visibilità

Torneremo poi singolarmente sui servizi, vediamo di capire ora, come faccio a raggiungere il mio server ?

se mi collego ad un router (telecom nel mio caso) il router assegna al mio pc un indirizzo del tipo 192.168.1.x che non è raggiungibile da internet, mentre il mio router apprende un indirizzo del tipo 87.15.23.120 (l'ip citato è inventato) dal provider a cui mi collego, che invece viene visto da internet. Ovvero è un indirizzo pubblico, mentre nella mia rete ho indirizzi privati (192.168.1.x).
I vari servizi utili che abbiamo visto in precedenza hanno un numero di porta su cui si mettono in ascolto, ed un protocollo (tcp) che è un altra informazione da conoscere oltre all'indirizzo ip.

Prendiamo il caso del web-server, l'apache ascolta di default sulla porta 80 tcp.

Usiamo questa informazione per fare il primo passo, ovvero se qualcuno interroga il nostro router, il nostro router deve girare la richiesta al nostro server.
cose necessarie 2:
il nostro server deve avere un indirizzo ip statico, non dinamico, poichè nel tempo la configurazione deve restare la stessa, quindi configuriamo l'interfaccia di rete per non richiedere un indirizzo ip dal server dhcp del router ma imposta un indirizzo ip statico.
Mi riservo di tornare in questo punto ed integrare i passaggi tecnici per cambiare il file di configurazione della rete in maniera testuale, ovvero da terminale.
In maniera grafica basta configurare la scheda di rete impostando i dati manualmente settando l'indirizzo ad esempio a 192.168.1.250. ( non dimenticatevi di riempire gli altri campi come subnet o server dns)
Ora andiamo nella pagina principale del router, troviamo "port forwarding" ed andiamo ad aggiungere la regola : tutte le interrogazioni che arrivano sulla porta 80 devono finire sulla porta 80 dell'indirizzo 192.168.1.250.
Ora abbiamo un server web pubblico ! ammesso che il nostro apache stia girando, chiunque metta nell'indirizzo del proprio browser il nostro ip pubblico es http://87.15.23.120 (l'ip citato è inventato) vedrà il contenuto delle nostre pagine che stanno sul nostro server.
Sembra ovvio chiedere si ok ma non posso andare in giro a dire 87.15.23.120 (l'ip citato è inventato) mi prenderanno per pazzo :). Ebbene quello che fa un server dns è convertire i numeri in nomi più umanamente accettabili.
Un server dns deve essere visibile, conosciuto ed affidabile, ed anche se avessimo un nostro dns abbiamo ancora un altro problema, l'indirizzo 87.15.23.120 (l'ip citato è inventato) spesso cambia ogni volta che si riavvia il router... allora... come facciamo ad avere un servizio gratuito fatto in casa ?
io ho usato dnsdynamic.org che mi sembrava semplice gratuito e veloce.
una volta iscritti e confermata l'iscrizione ( non mandano spam sulla posta ) si può scegliere il nome che vogliamo usare tra una serie abbastanza grande di domini primari..
scegliamo la voce di menù del sito manage ed aggiungiamo il nome che ci piace con l'estensione che ci piace es : tecnocchio.dnsd.info ne verifichiamo la disponibilità e salviamo.
Vi starete sicuramente chiedendo, ok per questa volta l'ip va bene, ma quando cambia chi lo cambia ?
sudo apt-get istall ddclient
in fase di installazione vi chiederà i parametri di configurazione, unica cosa che ho dovuto cambiare poi a mano perchè non mi era chiara è stata quando mi ha chiesto la scheda di rete, avevo messo eth0 ma non andava bene perchè assegnava 192.168.1.250, li ci vuole l'indirizzo ip pubblico che si ottiene tramite web quindi...
sudo nano -w /etc/ddclient.conf
editiamo la riga use:
 use=web, web=myip.dnsdynamic.com        # get ip from server.
come spiega qui : https://www.dnsdynamic.org/api.php

io fossi in voi romperei le scatole a qualche amico online e gli direi di aprire nel browser l'indirizzo tecnocchio.dnsd.info ovvero quello che avete scelto voi per vedere se il vostro server internet personale pubblico fatto in casa funziona!

il mio server internet personale parte 2: le potenzialità

Servizi interessanti da installare :

ssh :
Se vogliamo accedere al server da remoto con la potenza del terminale di linux e la sicurezza di un canale cifrato. Quello che si può fare con il server ssh riempirebbe parecchi libri, spero di postare un articolo in merito con il tempo :), per ora ci limitiamo a capire che con ssh mi trovo sul mio server anche quando sono lontano :).sudo apt-get install openssh-server

web:
Un server web è un programma che ti distribuisce le pagine che tu leggi navigando su internet. Generalmente è possibile affittare uno spazio online già configurato anche a prezzi bassi, tuttavia, tra i servizi che possiamo mettere sul nostro server personale, questo è il primo che vedremo. 
sudo apt-get install apache2 mysql-server mysql-admin php5-common php5 libapache2-mod-php5 php5-mysql
...

svn:
 Sviluppare programmi in compagnia è la cosa + bella che ci sia, per un gruppo di nerd, per un gruppo di amici invece è semplicemente una bella esperienza. Tuttavia c'e' bisogno di tenere a disposizione di tutti il lavoro e di tenere traccia di tutte le modifiche, considerando che i server su internet gratuiti limitano ad essere open, diventa interessante avere un proprio server fin che non si decide di rilasciare il progetto. Esistono vari strumenti per conservare i sorgenti, l'svn è solo 1, valuteremo con calma quale è il più opportuno da usare.


ftp:
Quale modo più semplice per avere la nostra "nuvola" programmi che permettono di prendere file o depositare file da server ftp esistono per i + disparati dispositivi. Se al nostro serverimo agganciamo un disco esterno usb da 2 tera abbiamo quei dati potenzialmente dovunque... è pur vero che è assurdo prentendere di far passare file di grandi dimensioni tramite l'adsl, ma se ci accontentiamo possiamo goderci la nostra nuvoletta privata.


Il mio server internet personale, parte 1 il server

Il mio server internet personale :

Prendiamo un pc, ( un mini pc o un ebook mezzo rotto una beagle board ) lo mettiamo dietro al router adsl (io ho telecom), installiamo linux ed i nostri server, configuriamo un dns dinamico. e possiamo raggiungere il nostro server internet personale da qualunque parte. Cioè da una qualunque postazione internet io scrivo mionome.serviziodns.xxx e mi appaiono i servizi del mio server.

Fase 1:
   Installazione di un sistema operativo Linux...
Per praticità scelgo una distribuzione ubuntu based, lubuntu è la scelta più appropriata per macchine non troppo prestanti, ma volendo possiamo salire a xubuntu.
scarichiamo dal sito di ubuntu il file iso del cd di installazione.
https://help.ubuntu.com/community/Lubuntu/GetLubuntu
oppure
http://www.ubuntu-it.org/derivate/xubuntu
volendo procedere con una penna usb scarichiamo unetbootin a meno che non abbiamo un lettore cd un cd vuoto ed un masterizzatore a portata di mano.
http://unetbootin.sourceforge.net/
con unetbootin creiamo una penna usb o una memory card autostartante con il disco di installazione scegliendo il file iso scaricato e la periferica scelta per l'uso.
Il pc dovrebbe avviarsi dalla periferica preparata, sia essa la penna usb sopra preparata o il cd masterizzato.
Durante l'installazione è comodo che la macchina sia già collegata ad internet in modo tale da scaricare direttamente i pacchetti di lingua e di aggiornamenti. Il cavo di rete è sempre il collegamento migliore. Non ci sono particolari cose a cui stare attenti durante l'installazione, soprattutto se il pc è dedicato solo a questo scopo come nel mio caso.
a termine installazione da terminale:
sudo apt-get update
sudo apt-get upgrade
aggiorneranno il sistema in uso con le ultime versioni dei pacchetti.

martedì 20 marzo 2012

root di uno smartphone android

Io ho un acer liquid, telefono abbastanza attempato ormai, con poca ram e processore pigro.
 Qualcomm Snapdragon 8250 a 768 MHz memoria interna: 512 Mb
Esce di serie con 1.6 ma esiste l'aggiornamento ufficiale alla 2.1, semi ufficiale 2.2

Root  e miui :

Molto spesso in giro si parla di root, di telefono rootato di permessi di root, ma poi , alla fine se sono root che vantaggi ho ?

Il processo per ottenere i permessi di root sul telefono varia da versione a versione di android e di telefono, ma basta cercare un po in rete per trovare metodi veloci per il proprio smart phone.

Una volta rootato il telefono spesso avete una applicazione che si chiama superuser, ma veniamo al dunque, cosa possiamo fare di utile:

1) Con i permessi di root è possibile cancellare applicazioni di default.
2) Installare un programma di recovery e backup delle rom.
3) Installare programmi che permettono di modificare i file del telefono.
4) installare programmi che permettono di gestire le autorizzazioni di tutte le app.

1) Dicevo che il mio smartphone è un pò datato, ha poca ram e di serie ci sono delle applicazioni che ha messo la acer di dubbia utilità, insomma l'acqua è poca e sprecarla è un peccato.
Ho installato una applicazione gratuita che siccome il telefono è rootato mi permette di disinstallare anche le app in (stok) ovvero di serie....
Tuttavia !!!!
State attenti a non cancellare cose di cui potreste pentirvi :) ovviamente potete fare danni in questo modo. Il mio consiglio è quello di avere il recovery ed un backup, così arrivaimo al punto

2) Ho trovato almeno un paio di programmi di recovery, di cui uno non funzionava, l'altro gira bene... di cosa parlo:
Un programma spartano che si mette potenzialmente prima del boot e che si avvia accendendo il telefono tenendo premuti tasto volume, accensione e fotocamera. ha un menù a tendina che si scorre con i tasti volume e permette di :
fare backup della rom sulla memoria sd
fare il ripristino di backup dalla memoria sd
installare rom cucinate tipo cyanogen o miui
In questo modo posso fare un backup del mio telefono, sperimentare il mondo e tornare indietro in ogni momento al punto da cui ero partito senza avere la paura di restare con un fermacarte costoso in mano.
A tal proposito ho sperimentato sul mio acer la rom MIUI. La versione di android è 2.3.7 quando parte appare lo screen di mee-go, non ha un menù con le applicazioni, ha parecchie applicazioni e funziona tutto, eccetto l'uso del telefono come modem per internet senza teetering. E' molto più fluido e l'interfaccia grafica è veramente bella. Ora sono in attesa che esca la 4 :) .

3) con i permessi di root si può montare in lettura e scrittura il file system andando a fare potenzialmente danni sul telefono o a cambiare una bitmap dell'avvio personalizzata o altre cose carine, purchè si abbia sotto controllo la situazione.

4) Ho installato un software che si chiama LBE. fa bene 3 cose :
 a) funziona da guardia avvisando le operazioni che il telefono effettua.
 b) visualizza il traffico del telefono e permette di impostare delle soglie di avviso mensili distinguendo tra wi-fi e rete telefonica
 c) permette di visualizzare dividendo per permessi tutte le app che hanno quel permesso specifico, e nel caso di negare, acconsentire o chiedere conferma per quel determinato permesso siano app preinstallate o no.
Ovviamente quando ho visto questa caratteristica mi è piaciuta tantissimo. Poter negare ad una applicazione permesso per permesso lo ritengo un grande guadagno per la privacy, secondo me, vale la pena fare il root al telefono anche solo per questo.

ICS ovvero android 4:
Il mio tablet asus tf101 ieri ha avuto l'onore di essere passato ufficialmente ad android 4.
Le novità rispetto alla versione 3 non sono tantissime, tuttavia sembra sempre stabile fluido e scorrevole. Se a qualcuno interessa sapere qualche particolare, me lo chieda pure.