Archivio tag per 'freebsd'

Gen
21

TorrentFlux: un client BitTorrent scritto in PHP ed utilizzabile via web

Qualche giorno fa, il mio collega Vittorio, mi aveva chiesto se conoscessi un client BitTorrent per sistemi *unix che si potesse amministrare via web.

A dir la verità , io avevo sempre utilizzato client BitTorrent testuali o, a limite, Azureus, quindi non ho saputo dargli una risposta, ma ho subito interrogato Google per capire se esistesse un software del genere. Ed ecco che è venuto fuori TorrentFlux: un client Bittorrent completamente open source (rilasciato sotto licenza GPL), multipiattaforma e sviluppato in PHP.

TorrentFlux, quindi, si distingue dagli altri client per queste caratteristiche:

  • è progettato in PHP e quindi gira su un webserver e non in locale come gli atri client;
  • si utilizza tramite browser (può essere quindi raggiunto e gestito da qualsiasi postazione remota tramite una interfaccia web abbastanza user friendly);
  • i torrent ed i files scaricati non vengono memorizzati in locale, ma sul server in cui è installato.

Cosa è richiesto per utilizzare TorrentFlux:

  • un sistema *unix like (Linux, BSD, Solaris, etc.);
  • un web server che supporti PHP (ad esempio Apache o Lighttpd);
  • un database SQL (MySQL, Postgres o Sqlite);
  • PHP 4.3.x o superiore;
  • Python 2.2 o superiore.

Incuriosito dalle potenzialità  di questo programma, ho deciso di installarlo sul mio server casalingo (utilizzando i comodissimi ports di FreeBSD), utilizzando Lighttpd come webserver e Sqlite come database, al fine di renderlo in più leggerlo possibile. Il risultato è stato davvero sorprendente: gestire un client BitTorrent via web è davvero comodissimo, l’interfaccia di TorrentFlux è essenziale, ma funziona bene. Ho rilevato velocità  di download mai viste prima con un minimissimo impatto sulle prestazioni del sistema.

Concludo l’articolo indicandovi un paio di links dove è descritto come installare TorrentFlux su Ubuntu e come farlo funzionare in accoppiata con Lighttpd e Sqlite.

Fonte immagine e di ispirazione: Wiki.Ubuntu-It.org.

Apr
02

Ecco a voi, il mio nuovo mini-server casalingo..

Approfittando di un’asta particolarmente conveniente su eBay e del parere positivo del mio amico Daniele (che ne possiede già  una), ho acquistato quello che è il mio nuovo server casalingo, mandando il pensione l’ottima Sun Ultra 5*, sebbene funzioni ancora benissimo.

Il sistema acquistato è composto da un Cabinet MINI-ITX, scheda madre VIA EPIA M1000 basata su processore C3 con frequenza di clock pari ad 1GHz (sebbene il vecchio proprietario era convinto fosse ad 800 MHz) sulla quale si trovano integrati: uscita VGA, scheda audio a 6 canali, scheda di rete, 4 porte USB 2.0 e 1 porta Firewire. Completano la dotazione 512 Mb 1 Gb (visto che il banco da 512 Mb era “buggato”) di RAM DDR, DVD-ROM 8x slim della IBM e un’altra scheda di rete Gigabit. L’unica periferica mancante era l’hard disk: ma ho recuperato subito la mancanza, reciclando un “vecchio” Maxtor da 80 Gb.

Ecco qualche foto del “gioiellino” nella fase di smontaggio/personalizzazione:

Mini-itx (1) Mini-itx (2) Mini-itx (3)

Mini-itx (4) Mini-itx (5)

Il sistema operativo che ho scelto di installarci è FreeBSD 7.0, che gira davvero divinamente. Il serverino resterà  sempre acceso e offrirà  i seguenti servizi: fileserver, download (…), centralino Asterisk, web server per prove e/o smanettamenti vari, dns server cache-only, monitoraggio con MRTG, varie ed eventuali..!

(*) dato l’inutilizzo, ho intenzione di vendere la Ultra 5 che è composta da: processore UltraSPARC-IIi 64 bit 360 MHz, ben 512 Mb di RAM (4×128 Mb), scheda video ATI Rage, hard disk Western Digital da 20 Giga, scheda audio integrata, 2 schede di rete, ecc.ecc. ad una 70ina di euro (tenete conto che solo la RAM vale il prezzo, dato che è introvabile e, oltre a funzionare sulle Ultra 5, funziona anche sulle Ultra 10 e su diverse Enterprise). Postate un commento o scrivetemi in privato se siete interessati all’acquisto e/o per avere ulteriori informazioni sulla macchina.

Ott
12

Come installare apache + php 5 + mysql + phpMyAdmin + bluefish su FreeBSD

Ciao, sono (finalmente!) tornato dall’università  (dove sono stato BEN 3 giorni senza internet!!) e mi sono messo subito al lavoro per installare apache, php 5, mysql, phpMyAdmin e bluefish (un editor web) su FreeBSD per svolgere il progetto di Tecnologie del Web e ho colto l’occasione per scrivere questo mini-howto sperando che possa tornare utile a qualcuno.

Iniziate con l’installazione di php5 (in modo che vi verrà  installato automaticamente anche apache 1.3.34 e tutte le relative dipendenze) con i comandi (grazie a Daniele per la segnalazione di questo port che evita l’editing manuale del file php.ini :-) ):

# cd /usr/ports/lang/php5-extensions (nelle opzioni selezionate per lo meno MYSQL, PCRE e SESSION oltre a quelle già  selezionate)
# make install clean

.. ed attendete che la compilazione termini.

Ora è necessario editare il file di conf di apache..:

# cd /usr/local/etc/apache
# ee httpd.conf
(riga 850 circa)

.. e aggiungere le seguenti righe:

Continua la lettura di ‘Come installare apache + php 5 + mysql + phpMyAdmin + bluefish su FreeBSD’

Set
18

Grave vulnerabilità  del plugin flash di Adobe: FreeBSD howto

Qualche giorno fa è stata scoperta una grave vulnerabilità  del plugin flash di Adobe delle versioni precedenti alla 7.0r68 (e precedenti alla 8.0.33.0 per quanto riguarda la versione 8.x), che permette l’esecuzione di codice maligno ad un attaccante malintenzionato.

Attualmente, il port /usr/ports/www/linux-flashplugin7/ di FreeBSD, è marcato come IGNORE quindi, se date provate ad aggiornare i ports con portupgrade, avrete come output qualcosa del genere:

** Port marked as IGNORE: www/linux-flashplugin7:
is forbidden: Arbitrary code execution vulnerabilities: http://vuxml.FreeBSD.org/7c75d48c-429b-11db-afae-000c6ec775d9.html

Io ho bypassato il problema, in modo da non essere vulnerabile da subito (senza aspettare l’aggiornamento del port): ho scaricato la versione aggiornata del flash plugin da qui, ho decompresso l’archivio con:

# tar xzvf install_flash_player_7_linux.tar.gz
# cd install_flash_player_7_linux

e spostato i 2 files del plugin nella directory appropriata..

# mv flashplayer.xpt /usr/X11R6/lib/browser_plugins/
# mv libflashplayer.so /usr/X11R6/lib/browser_plugins

Bene, ora, dando un about:plugin sul browser, ho come output..

File name: libflashplayer.so
Shockwave Flash 7.0 r68

.. il che vuol dire che non sono vulnerabile :-) Ovviamente la procedura di sopra, vale anche per gli utenti Linux, con la differenza che, la directory nella quale spostare i 2 files del plugin, sarà  probabilmente diversa rispetto a FreeBSD.

UPDATE DEL 22/09/2006

Se avete eseguito correttamente tutti i passi di cui sopra vi sarete accorti che, al primo sito che avesse una qualche animazione flash che avete navigato, Firefox si è improvvisamente chiuso!
Ecco come risolvere il problema:

# cd /usr/src
# fetch http://people.FreeBSD.org/~nork/rtld_dlsym_hack.diff
# patch < rtld_dlsym_hack.diff
# cd libexec/rtld-elf/
# make clean
# make obj
# make depend
# make && make install

Buona navigazione :-)

UPDATE DEL 24/09/2006

E’ ora disponibile il port aggiornato del plugin flash, quindi è possibile aggiornare direttamente dal port, senza eseguire la procedura indicata sopra.

Set
17

Come creare un cache DNS con BIND (in chroot) su FreeBSD

FreeBSD utilizza, di default, una versione di BIND (Berkeley Internet Name Domain), che è la più completa implementazione del protocollo DNS. DNS è il protocollo attraverso il quale nomi sono mappati ad indirizzi IP, e viceversa. Per esempio, una query per www.FreeBSD.org riceverà  una replica con l’indirizzo IP del web server del The FreeBSD Project, mentre una query per ftp.FreeBSD.org ritornerà  l’indirizzo IP della corrispondente macchina FTP. Allo stesso modo, può avvenire l’opposto. Una query per un indirizzo IP può risolvere il suo nome host. Non è necessario avere in esecuzione un name server per fare DNS lookups su un sistema.

DNS è coordinato su Internet attraverso un sistema alquanto complesso di name server autoritativi, ed altri name server di più piccola scala che ospitano e gestiscono cache di informazioni individuali sui domini.

Attualmente vengono usati due tipi di name server: un name server autoritativo, ed un name server cache.

Un name server autoritativo è necessario quando:

  • uno vuole servire informazioni DNS a tutto il mondo, rispondendo in maniera autoritativa alle query.
  • un dominio, tipo example.org, è registrato e gli indirizzi IP devono essere assegnati ad hostname sotto questo.
  • un blocco di indirizzi IP richiede entry di DNS inverso (da IP ad hostname).
  • un name server di backup, chiamato uno slave, deve rispondere alle query quando il primario è giù o inaccessibile.

Un name server cache è necessario quando:

  • un server locale DNS può tenere in cache e rispondere più velocemente rispetto ad effettuare query ad un name server all’esterno.
  • una riduzione nel traffico complessivo di rete è desiderato (è stato calcolato che il traffico DNS conta più del 5% sul traffico totale di Internet).

Quando uno fa una query per risolvere www.FreeBSD.org, il risolutore di solito fa una query al name server dell’ISP a cui si è connessi, ed ottiene una risposta. Con un server DNS locale, che fa cache, la query deve essere effettuata una volta sola dal server DNS che fa cache. Ogni query aggiuntiva non dovrà  cercare all’esterno della rete locale, dato che l’informazione è tenuta in cache localmente.

Vediamo ora come agire per ottenere un name server cache che gira in chroot.

Continua la lettura di ‘Come creare un cache DNS con BIND (in chroot) su FreeBSD’

Ago
22

Come far stampare una Samsung ML-1610 su FreeBSD usando apsfilter

Circa una settimana fa ho acquistato al MediaWorld una stampante laser monocromatica economica, precisamente una Samsung ML-1610 con interfaccia USB. Tornato a casa, l’ho provata subito con Windows e, in meno di 2 minuti, avevo già  stampato la prima pagina; il discorso è stato un attimo più complesso quando si è trattato di farla funzionare su FreeBSD.. Dopo diverse ore perse a farla funzionare (usando, senza successo, CUPS), questa sera, finalmente, sono riuscito nell’intento e ho deciso di postare qui un breve articolo dove riassumo le operazioni che ho effettuato per evitare che qualcun altro abbia le emicranie che ho avuto io nelle ore perse per farla funzionare :)

Allora, anzitutto installiamo apsfilter dai ports, con i comandi:

# cd /usr/ports/print/apsfilter/
# make install clean

(io ho abilitato le opzioni “A4” , “GS”, “PSUTILS”, “A2PS”, “ACROREAD7”,
“CONVERT” e “HTML2PS”)

ora effettuiamo la configurazione della stampante tramite l’interfaccia testuale di apsfilter:

# cd /usr/local/etc/apsfilter
# ./SETUP

Se tutto è andato a buon fine, riavviate lpd con il comando (attenzione, deve essere presente la riga lpd_enable=”YES” in /etc/rc.conf , altrimenti il demone non parte):

# /etc/rc.d/lpd restart

Ora la vostra stampante dovrebbe già  essere funzionante: per stampare, basta il semplicissimo comando:

$ lpr -P nome_stampante nome_file_da_stampare .

Se così non fosse, vi copio i miei file di configurazione (ah, dimenticavo, nell’interfaccia testuale non sono riuscito a selezionare il driver “gdi” delle Samsung, quindi l’ho aggiunto “a mano” nei file di conf a fine configurazione) in modo che possiate raffrontarli con i vostri e cercare di capire dov’è il problema:

cat /etc/printcap
lp|gdi;r=600×600;q=medium;c=gray;p=a4;m=auto:\
:lp=/dev/unlpt0:\
:if=/usr/local/etc/apsfilter/basedir/bin/apsfilter:\
:sd=/var/spool/lpd/ML1610:\
:lf=/var/spool/lpd/ML1610/log:\
:af=/var/spool/lpd/ML1610/acct:\
:mx#0:\
:sh:

cat /usr/local/etc/apsfilter/SETUP.cfg
PRINTER=’gdi’
RESOLUTION=’600×600′
COLOR=’gray’
PAPER=’a4′
METHOD=’auto’
QUALITY=’medium’
INTERFACE=’parallel’
DEVICE=’/dev/unlpt0′
BAUDRATE=”
HANDSHAKE=”
WORDLENGTH=”
PARITY=”
STARTBITS=”
STOPBITS=”
SMB_SERVER=”
SMB_IP=”
SMB_PRINTER=”
SMB_WORKGROUP=”
SMB_USER=”
SMB_PASSWD=”
NCP_SERVER=”
NCP_PRINTER=”
NCP_USER=”
NCP_PASSWD=”
rm=”
rp=”

cat /usr/local/etc/apsfilter/ML1610/apsfilterrc
PRINTER=’gdi’
PAPERSIZE=’a4′
METHOD=’auto’
QUALITY=’medium’
COLOR=’gray’
RESOLUTION=’600×600′
# apsfilter as jukebox
# important if audio playback device is a network print queue
# INTERFACE=’network’
INTERFACE=’parallel’

P.S. non è un errore se nei file di conf vedete come interfaccia “parallel”, pur essendo una stampante USB: apsfilter non fa distinzione tra USB e parallela!

Buona stampa a tutti! :-)

Lug
14

Implementazione del protocollo IPv6 su FreeBSD

Dopo aver finalmente sistemato quasi totalmente l’aspetto del blog, vi propongo un articolo che spiega passo passo come implementare il protocollo IPv6 sul sistema operativo FreeBSD (un sistema operativo opensource). Anzitutto vediamo cos’è e quali sono le novità  del protocollo IPv6: esso e stato ideato come evoluzione e non come rivoluzione di IPv4. I cambiamenti principali introdotti nel nuovo protocollo si possono raggruppare nelle seguenti categorie:

  • Capacità  di instradamento e indirizzamento espanso (dimensione dell’indirizzo IP da 32 a 128 bit).
  • Semplificazione del formato dell’header (anche se gli indirizzi IPv6 sono quattro volte più lunghi di quelli IPv4, l’header IPv6 è solo due volte più grande di quello IPv4).
  • Supporto migliorato per le opzioni.
  • Meccanismo di individuazione dei flussi.
  • Possibilità  di estensioni future per il protocollo.
  • Ottimizzazione delle funzioni di controllo.
  • Nuovo tipo di indirizzo chiamato indirizzo anycast.
  • Capacià  di autenticazione e privacy.
  • Allineamento su 64 bit anzichè su 32 bit.

Ora vediamo come configurare FreeBSD per supportare IPv6:
come prima cosa aggiungete, se non presenti, le seguenti righe al vostro kernel (se usate un’architettura x86, il file di conf potrete trovarlo su /usr/src/sys/i386/conf ; se non l’avete mai modificato il suo nome ‘di default’ e’ GENERIC).

options INET6
device gif

A questo punto ricompilate il kernel con il comando

# cd /usr/src && make kernel

… ed effettuate un riavvio della macchina.

Benissimo, ora non resta che iscrivervi ad un tunnel broker. Ecco alcuni dei tunnel broker più famosi:

Una volta effettuata l’iscrizione lanciare lo script per effettuare il tunnelling; ecco lo script che uso io ad esempio:

———————- cut here ———————-

#!/bin/sh

MYIPv4=”`ifconfig tun0 | awk ‘{if($1==”inet”) print $2}’`” # Prende automaticamente il vostro IPv4 se usate tun0 come interfaccia di connessione
TBIPv4=”1.2.3.4″ # IPv4 del tunnel broker
MYIPv6=”2001:15a8:xxxx::” # IPv6 client assegnatovi dal tunnel broker

TUNLIF=”gif0″

echo -n “Configuration gif0.. ”
ifconfig $TUNLIF create tunnel $MYIPv4 $TBIPv4 up
ifconfig
$TUNLIF inet6 $MYIPv6 prefixlen 128
route add -inet6 default -interface $TUNLIF

———————- cut here ———————-

… salvate questo script in file file chiamato (ad esempio) tunnel-broker.sh, rendetelo eseguibile e quindi eseguitelo:

# chmod 700 tunnel-broker.sh
# ./tunnel-broker.sh

Ora testate se effettivamente il tunnel broker funziona con un semplice ping6:

# ping6 www.6bone.net

… dovreste ottenere come output qualcosa del tipo:

one@freebsd:~> ping6 www.6bone.net
PING6(56=40+8+8 bytes) 2001:1418:100:41::2 –> 2001:5c0:0:2::24
16 bytes from 2001:5c0:0:2::24, icmp_seq=0 hlim=58 time=287.495 ms
16 bytes from 2001:5c0:0:2::24, icmp_seq=1 hlim=58 time=274.830 ms
16 bytes from 2001:5c0:0:2::24, icmp_seq=2 hlim=58 time=270.861 ms

se è così, complimenti, avete abilitato il protocollo IPv6 sulla vostra macchina :-)

Potete sfruttare il vostro tunnel IPv6 per navigare, connettervi ad irc, offrire servizi IPv6 (apache2, sshd, etc. etc.).




Hai bisogno di un sito web?

Web&Dintorni

Vuoi collaborare a questo blog?

Ogni tipo di collaborazione è benvenuta!


Scrivimi all'indirizzo paolo.gatti@gmail.com o invia un messaggio sulla pagina Facebook!