Blog

  • OpenWRT su Mikrotik RouterBoard 133c3

    Scheda Mikrotik 133c3

    Ecco i passaggi da fare per installare OpenWRT su una scheda Mikrotik RouterBORAD 133C3

    Il processore della scheda 133C3 e’ un Infineon ADM5120 percio’ abbiamo bisogno di questi files:

    http://www.wifiextreme.com.au/files/openwrt/openwrt-adm5120-2.6-vmlinux.elf
    http://www.wifiextreme.com.au/files/openwrt/openwrt-adm5120-2.6-rootfs.tgz
    http://www.wifiextreme.com.au/files/openwrt/kernel (nome completo openwrt-adm5120-2.6-rb1xx-vmlinux)

    Per caricare questi files abbiamo bisogno di un server di appoggio con i servizi dhcpd, tcpd e httpd

    Illustrero’ le prodedure adottate utilizzando un server di appoggio linux (debian) e quelle adottate utilizzando un comune pc con windows XP.

    Debian

    Ho scaricato l’immagine minimale di debian: http://cdimage.debian.org/debian-cd/6.0.1a/i386/iso-cd/debian-6.0.1a-i386-businesscard.iso ed installata (nel mio caso in un pc virtuale)

    Ho assegnato alla macchina debian l’ip statico 192.168.1.100 (supponendo che il router di rete abbia ip 192.168.1.2):

    in /etc/network/interfaces:

    auto lo
    iface lo inet loopback
    
    iface eth0 inet static
    address 192.168.1.100
    netmask 255.255.255.0
    network 192.168.1.0
    broadcast 192.168.1.255
    gateway 192.168.1.2
    auto eth0

    Installo i pacchetti che mi servono:

    aptitude install apache2 tftpd dhcp3-server screen

    ho creato la dir /srv/tftp

    mkdir /srv/tftp; cd /srv/tftp

    e scaricato qui dentro il file http://www.wifiextreme.com.au/files/openwrt/openwrt-adm5120-2.6-vmlinux.elf che rinominero’ in linuxrc

    wget -O /srv/tftp/linuxrc http://www.wifiextreme.com.au/files/openwrt/openwrt-adm5120-2.6-vmlinux.elf

    perche’ tftp funzioni assegno i permessi 777 alla cartella e al suo contenuto:

    chmod -R 777 /srv/tftp

    configuro il server dhcp in questo modo (/etc/dhcp/dhcpd.conf):

    option domain-name "example.com";
    option domain-name-servers 4.2.2.3, 8.8.8.8, ns1.example.com;
    option subnet-mask 255.255.255.0;
    default-lease-time 600;
    max-lease-time 7200;
    server-name "servername";
    
    subnet 192.168.1.0 netmask 255.255.255.0 {
      range 192.168.1.200 192.168.1.250;
      option routers 192.168.1.2;
    }
    
    host clientname {
      filename "/srv/tftp/linuxrc";
      server-name "servername";
      next-server 192.168.1.100;
      hardware ethernet 01:23:45:67:89:AB;
      fixed-address 192.168.1.90;
    }

    01:23:45:67:89:AB va sostituito con il mac address della scheda Mikrotik. Vedi dopo come ricavarlo da console seriale.

    nella cartella /var/www scarico gli altri file che serviranno in seguito:

    cd /var/www; wget http://www.wifiextreme.com.au/files/openwrt/openwrt-adm5120-2.6-rootfs.tgz; wget -O /var/www/openwrt-adm5120-2.6-rb1xx-vmlinux http://www.wifiextreme.com.au/files/openwrt/kernel

    ho rinominato il file kernel con il suo nome completo perche’ poi lo script di OpenWRT richiedera’ quel nome.

    riavvio i servizi per applicare le modifiche:

    /etc/init.d/isc-dhcp-server restart; /etc/init.d/openbsd-inetd restart

    Passiamo ora alla scheda Mikrotik:
    Colleghiamo un cavo null-modem tra la scheda e il pc (un adattatore usb-seriale puo’ tornar comodo).
    Dalla mio pc la nuova seriale rilevata (tramite l’adattatore USB) si chiama /dev/ttyUSB0
    Collego anche un cavo di rete direttamente tra la scheda ed il pc (la rete della mia macchina virtuale e’ impostata in bridge)

    Dal mio pc apro una console seriale tramite screen

    screen /dev/ttyUSB0 115200

    (nel vostro pc potete scegliere la vostra console seriale preferita)

    Diamo alimentazione alla scheda Mikrotik
    Sulla console seriale comparira’ la scritta:
    Press any key within 2 seconds to enter setup

    Entro 2 secondi dovremo premere un tasto per accedere al bios della scheda Mikrotik

    per avere informazioni sulla nostra scheda scegliamo “i” (i – board info):

    Board Info:
    
            Board type: 133C3
         Serial number: 12270CCBBAAD
      Firmware version: 2.11
         CPU frequency: 175 MHz
           Memory size: 16 MB
      eth1 MAC address: 01:23:45:67:89:AB

    formattiamo la memoria NAND (salutate prima per l’ultima volta il firmware originale..)

    scegliamo “e” (e – format nand) e confermiamo con “yes”

    scegliamo “o” (o – boot device) e poi “1” (1 – boot Ethernet once, then NAND)

    ora scegliamo “p” (p – boot protocol) e poi “2” (2 – dhcp protocol)

    ora possiamo uscire con “x” (x – exit setup)

    e vedere se la scheda tramite dhcp riesce a ricevere il file linuxrc dalla macchina debian

    Premendo invio alla fine del primo caricamento di openwrt ci ritroveremo una shell linux

    ora per installare OpenWRT diamo il comando:

    wget2nand http://192.168.1.100

    Lo script wget2nand automaticamente effettua questi passaggi

    mount /dev/mtdblock2 /mnt; cd /mnt; wget -O /mnt/kernel http://192.168.1.100/openwrt-adm5120-2.6-rb1xx-vmlinux;
    cd /; umount /mnt; mount /dev/mtdblock3 /mnt; cd /mnt;
    wget http://192.168.1.100/openwrt-adm5120-2.6-rootfs.tgz
    gzip -d openwrt-adm5120-2.6-rootfs.tgz; tar xvf openwrt-adm5120-2.6-rootfs.tar
    rm openwrt-adm5120-2.6-rootfs.tar
    cd /; umount /mnt; sync

    ora possiamo riavviare tramite il comando “reboot” e verificare nel bios che il boot device (opzione “o”) sia impostato su “n” (n – boot from NAND, if fail then Ethernet).

    Ora l’installazione e’ finita.
    OpenWRT rispondera’ via telnet all’indirizzo 192.168.1.1 e dopo aver cambiato la password di root potremo accedere tramite ssh.

    Windows

    Utilizzo Windows come pc di supporto per i servizi:
    creo la cartella c:\wrt
    scarico all’interno di questa cartella questo files:
    http://tftpd32.jounin.net/download/tftpd32.400.zip
    http://smallsrv.com/shttp3.exe
    http://www.wifiextreme.com.au/files/openwrt/kernel
    http://www.wifiextreme.com.au/files/openwrt/openwrt-adm5120-2.6-rootfs.tgz

    creo la cartella c:\wrt\tftp
    scarico all’interno di questa cartella questo file:
    http://www.wifiextreme.com.au/files/openwrt/openwrt-adm5120-2.6-vmlinux.elf
    e lo rinomino in linuxrc

    installo il programma shttp3.exe nella cartella c:\wrt ed ottengo:
    – la cartella del server http c:\wrt\shttps
    – la cartella dove mettere i files che saranno accessibili da wget:
    c:\wrt\shttps\www
    sposto dentro la cartella c:\wrt\shttps\www i due files “kernel” e
    “openwrt-adm5120-2.6-rootfs.tgz”

    scompatto il programma tftpd32.400.zip
    ottengo la cartella tftpd32.400
    entro dentro e lancio il programma tftpd32 e lo configuro come segue:

    Server interface: 192.168.1.100
    Settings ->
           Global ->
                   Start services: TFTP Server, DHCP Server
           TFTP ->
                   Base dir: c:\wrt\tftp
                   Security: standard
                   tftp configuration: Timeout: 3, Max retrasmit: 6, TFTP port: 69
                   Advanced TFTP Opions: PXE Compatibility, Allow '\' ad virtual root,
    translate unix file names
           DHCP ->
                   IP pool start. add.: 192.168.1.50
                   Size of pool: 10
                   Boot file: linuxrc
                   Default router: 192.168.1.100
                   Mask: 255.255.255.0
                   DHCP Options: (no, no, no)

    Chiudere e riaprire il programma tftpd32

    collego il cavo seriale (cross) alla scheda mikrotik c133c
    configuro il mio pc con l’ip di rete statico 192.168.1.100 netmask 255.255.255.0
    collego il cavo di rete direttamente alla scheda mikrotik c133c

    avvio un terminale con queste impostazioni: 115200 N,8,1
    attacco l’alimentazione alla scheda mikrotik c133c

    appena compare il messaggio “Press any key within 2 seconds to enter
    setup” premere un tasto
    dal menu principale entro in “boot device” (o) e scelgo l’opzione “1 –
    boot Ethernet once, then NAND” (1)
    entro ora nella sezione “boot protocol” (p) e scelgo “2 – dhcp protocol” (2)
    alla fine esco dal menu del bios (x)

    La sceda dovrebbe acquisire un indirizzo dinamico dal pc windows e
    scaricare automaticamente il file linurc
    Alla fine ci troveremo in console seriale il prompt dei comandi di openwrt

    Posso vede le partizioni presenti con

    cat /proc/mtd

    ed ottengo una cosa del tipo:

    dev:    size   erasesize  name
    mtd0: 00010000 00001000 "booter"
    mtd1: 00010000 00001000 "firmware"
    mtd2: 00400000 00004000 "RouterBoard NAND Boot"
    mtd3: 03c00000 00004000 "rootfs"
    mtd4: 04000000 00004000 "NAND 64MiB 3,3V 8-bit"

    Ora procedo all’installazione vera e propria:

    Nel pc windows avvio il server web lanciando dalla cartella
    c:\wrt\shttp il programma “http”

    Dalla console seriale do i comandi:

    mount /dev/mtdblock2 /mnt; cd /mnt; wget http://192.168.1.100/kernel
    
    cd /; umount /mnt; mount /dev/mtdblock3 /mnt; cd /mnt;
    wget http://192.168.1.100/openwrt-adm5120-2.6-rootfs.tgz
    
    gzip -d openwrt-adm5120-2.6-rootfs.tgz; tar xvf openwrt-adm5120-2.6-rootfs.tar
    rm openwrt-adm5120-2.6-rootfs.tar
    cd /; umount /mnt; sync; reboot

    L’installazione di OpenWRT e’ terminata.

    Possiamo cancellare dal pc windows tutta la cartella c:\wrt

    Da console seriale impostiamo la password di root per disabilitare
    telnet e abilitare automaticamente ssh
    l’ip di default e’ 192.168.1.1 e l’utente e’ “root”

  • Installare pure-ftpd con utenti virtuali

    Scrivo questo post giusto per ricorarmi i passaggi nel caso dovessi ripetere l’operazone nel futuro, personalmente preferisco utilizzare sftp e scp per trasferire files da e per i server Linux, ma in qualche occasione viene richiesto ftp e quindi ecco come fare.

    Sto utilizzando la distribuzione Debian, versione 6.0.2

    Installo i pacchetti necessari:

    aptitude install pure-ftpd pure-ftpd-common openssl

    Controllo che sia impostata la modalita’ “standalone” nel file di configurazione /etc/default/pure-ftpd-common:

    grep "STANDALONE_OR_INETD" /etc/default/pure-ftpd-common

    Dovrei ottenere questo risultato:

    STANDALONE_OR_INETD=standalone

    ..eventualmente vado a modificare il file.

    Vado a modificare la configurazione di default:

    cd /etc/pure-ftpd/conf

    Abilito la modalita’ passiva. 121.134.156.178 e’ l’IP pubblico del server ed e’ necessario che il firewall consenta l’accesso alle porte da 4500 a 4600

    echo ,21 > Bind
    echo 121.134.156.178 > ForcePassiveIP
    echo 4500 4600 > PassivePortRange

    Applico alcuni accorgimenti di sicurezza:

    echo yes > ChrootEveryone
    echo yes > NoChmod
    echo yes > BrokenClientsCompatibility
    echo 4 > MaxClientsPerIP
    echo 10 > MaxClientsNumber
    echo 1 > TLS

    Disabilito tutti i tipi di autenticazione e abilito l’autenticazione tramite database (testuale) di utenti virtuali

    echo no > PAMAuthentication
    echo no > UnixAuthentication
    echo /etc/pure-ftpd/pureftpd.pdb > PureDB
    ln -s /etc/pure-ftpd/conf/PureDB ../auth/50pure

    Creo un gruppo ed un utente di sistema (reale) apposito a cui associare gli utenti virtuali. Questo utente non avra’ ne’ shell ne’ home directory

    groupadd -g 2001 ftpgroup
    useradd -u 2001 -s /bin/false -d /bin/null -c "pureftpd user" -g ftpgroup ftpuser

    Ora posso iniziare a creare gli utenti virtuali tramite il comando pure-pw adduser

    pure-pw useradd myfirstuser -u ftpuser -d /var/ftp/public/myfirstuser
    pure-pw mkdb

    Dopo ogni modifica al database testuale degli utenti virtuali (/etc/pure-ftpd/pureftpd.passwd) e’ necessario rigenerare il database binario utilizzato da pure-ftpd (/etc/pure-ftpd/pureftpd.pdb). Il comando pure-pw mkdb fa proprio questo.
    Se pero’ aggiungiamo al primo comando il parametro -m, si dira’ a pure-pw di aggiornare automaticamente anche il database binario. In questo modo non servira’ il secondo comando pure-pw mkdb.

    Creo ora la directory principale dell’utente virtuale (questa operazione puo’ essere ommessa se il server pure-ftpd viene lanciato con l’opzione -j che permettera’ la generazione automatica della directory al primo login dell’utente, personalmente preferisco generare manualmente le directory)

    mkdir -p /var/ftp/public/myfirstuser
    chown ftpuser:ftpgroup /var/ftp/public/myfirstuser

    Genero ora un certificato ssl per il support TLS/SSL (vedi sopra il comando “echo 1 > TLS”)

    openssl req -x509 -nodes -newkey rsa:1024 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pem
    chmod 600 /etc/ssl/private/pure-ftpd.pem

    Riavvio il server e posso provare l’accesso ftp

    /etc/init.d/pure-ftpd restart

    Alcuni utili comandi:
    Lista degli utenti virtuali

    pure-pw list

    Modifica della password di un utente

    pure-pw passwd myfirstuser

    Visualizzo i dettagli di un utente

    pure-pw show myfirstuser

    Modifico dei dettagli di un utente

    pure-pw usermod myfirstuser -n 1000 -N 100
    pure-pw mkdb

    Elimino un utente virtuale e aggiorno subito il database binario (-m)

    pure-pw userdel myfirstuser -m

    Per monitorare gli utenti virtuali fpt collegati, posso utilizzare il comando

    pure-ftpwho

    La lista delle direttive di configurazione per Pure-FTPd su Debian/Ubuntu:

    Flag Filename Value
    -W AllowAnonymousFXP
    -z AllowDotFiles
    -w AllowUserFXP
    -O %s AltLog string
    -t %s AnonymousBandwidth range
    -M AnonymousCanCreateDirs
    -i AnonymousCantUpload
    -e AnonymousOnly
    -q %d:%d AnonymousRatio range
    -s AntiWarez
    -r AutoRename
    -S %s Bind string
    -b BrokenClientsCompatibility
    -o CallUploadScript
    -A ChrootEveryone
    -j CreateHomeDir
    -Z CustomerProof
    -B Daemonize
    -D DisplayDotFiles
    -H DontResolve
    -P %s ForcePassiveIP IP-number
    -F %s FortunesFile string
    -4 IPV4Only
    -6 IPV6Only
    -K KeepAllFiles
    -L %d:%d LimitRecursion range
    -1 LogPID
    -c %d MaxClientsNumber
    -C %d MaxClientsPerIP integer
    -k %d MaxDiskUsage integer
    -I %d MaxIdleTime integer
    -m %d MaxLoad integer
    -u %d MinUID integer
    -N NATmode
    -E NoAnonymous
    -R NoChmod
    -G NoRename
    -0 NoTruncate
    -p %d:%d PassivePortRange range
    -y %d:%d PerUserLimits range
    -X ProhibitDotFilesRead
    -x ProhibitDotFilesWrite
    -n %d:%d Quota range
    -f %s SyslogFacility string
    -Y %d TLS integer
    -a %d TrustedGID integer
    -V %s TrustedIP IP-number
    -U %s:%s Umask file:dir
    -T %s UserBandwidth range
    -Q %d:%d UserRatio range
    -d VerboseLog
  • Proxmox firewall e router con un solo ip pubblico

    Ecco come ho impostato il server proxmox per avere un firewall e il routing tramite un unico ip pubblico.

    Dal pannello di controllo web abilitare eth0 con l’ip pubblico senza bridge e vmbr0 con un ip locale:

    ...
    auto eth0
    iface eth0 inet static
             address 91.11.22.33
             netmask 255.255.255.0
             broadcast 91.11.22.255
             gateway 91.11.22.254
    
    auto vmbr0
    iface vmbr0 inet static
            address 10.254.254.254
            netmask 255.0.0.0
            broadcast 10.255.255.255
            bridge_ports none
            bridge_stp off
            bridge_fd 0
    
    ...
    ...

    Ora install shorewall

    sudo aptitude install shorewall

    Creo il file /etc/shorewall/zones e ci scrivo:

    #ZONE   TYPE            OPTIONS         IN                      OUT
    #                                       OPTIONS                 OPTIONS
    fw      firewall
    net     ipv4
    dmz     ipv4

    Creo il file /etc/shorewall/interfaces e ci scrivo:

    #ZONE   INTERFACE       BROADCAST       OPTIONS
    net     eth0            detect          blacklist,nosmurfs
    dmz     venet0          detect          routeback
    dmz     vmbr0           detect          routeback,bridge

    Creo il file /etc/shorewall/policy e ci scrivo:

    #SOURCE DEST    POLICY          LOG     LIMIT:          CONNLIMIT:
    #                               LEVEL   BURST           MASK
    
    # From Firewall Policy
    fw      fw      ACCEPT
    fw      net     ACCEPT
    fw      dmz     ACCEPT
    
    # From DMZ Policy
    
    dmz     dmz     ACCEPT
    dmz     net     ACCEPT
    dmz     fw      DROP            info
    
    # From Net Policy
    net     fw      DROP            info
    net     dmz     DROP            info
    
    # THE FOLLOWING POLICY MUST BE LAST
    #
    all     all     REJECT          info

    Creo il file /etc/shorewall/rules e ci scrivo:

    #ACTION          SOURCE     DEST       PROTO   DEST        SOURCE     ORIGINAL    RATE
    
    # Permit access to SSH
    SSH/ACCEPT       net        fw         -       -            -          -        
      6/min:5
    
    # Permit access to Proxmox Manager and Console
    ACCEPT           net        fw         tcp     443,5900:5999
    
    # PING Rules
    Ping/ACCEPT      all        all
    
    # LAST LINE -- DO NOT REMOVE

    Alla fine la cartella /etc/shorewall dovrebbe contenere i seguenti file:

    drwxr-xr-x  2 root root 4096 Apr 14 15:15 .
    drwxr-xr-x 77 root root 4096 Apr 14 13:15 ..
    -rw-r--r--  1 root root  453 Nov  8  2007 Makefile
    -rw-r--r--  1 root root  214 Apr 14 15:03 interfaces
    -rw-r--r--  1 root root  494 Apr 14 15:10 policy
    -rw-r--r--  1 root root  517 Apr 14 15:15 rules
    -rw-r--r--  1 root root 4004 Apr 14 13:18 shorewall.conf
    -rw-r--r--  1 root root  183 Apr 14 13:19 zones

    Controllo ora il funzionamento di shorewall:

    shorewall try /etc/shorewall 60

    in questo minuto di prova posso provare se risponde il pannello di controllo web di proxmox e se riesco a loggarmi in ssh al server.

    Se tutto funziona posso abilitare proxmox all’avvio automatico: modifico il file /etc/default/shorewall e cambio:

    startup=0

    in

    startup=1

    Posso ora avviare shorewall manualmente col comando

    shorewall start

    oppure riavviarlo al bisogno con

    shorewall restart

    Per permettere alle macchine virtuali di uscire in internet creo il file /etc/shorewall/masq e sccrivo:

    #INTERFACE      SOURCE          ADDRESS         PROTO   PORT(S) IPSEC   MARK
    eth0            10.0.0.0/8
    
    # LAST LINE -- DO NOT REMOVE

    per dirottare il traffico web (porta 80) su una macchina virtuale inserisco nel file /etc/shorewall/rules questa regola:

    DNAT                    net     dmz:10.0.1.101          tcp     80

    Posso anche cambiare porta di destinazione nella macchina virtuale con la regola:

    DNAT                    net     dmz:10.0.1.103:8180     tcp     80

    Le macchine virtuali potranno avere degli indirizzi privati del tipo 10.xxx.yyy.zzz (es 10.0.1.101) ed essere gestiti semplicemente con un’interfaccia venet.

    Shorewall ha alcune opzioni comode e interessanti:

    safe-restart

    salva la configurazione attuale, quindi applica quella nuova e chiede conferma per mantenere le nuove regole; se la conferma non è data entro 60 secondi sono riapplicate le regole precedenti;

    try configuration-directory [timeout]

    riavvia shorewall utilizzando la configurazione presente nella directory specificata e se sono rilevati errori o se il timeout è raggiunto, le regole precedenti sono riapplicate;

    show check

    esegue la validazione sintattica della configurazione;

    logwatch

    simile a tail -f $LOGFILE;

    ipcalc [<address> <mask> | <address/vlsm>]

    dato un indirizzo di rete, mostra i corrispondenti indirizzi di network, broadcast e netmask.

    (per questo post ho preso pesantemente spunto dal seguente: http://www.myatus.co.uk/2009/08/31/guide-firewall-and-router-with-proxmox/)

  • Installazione xvd in Plone 4

    XVD e’ un “nuovo” metodo di personalizzare i template di Plone, per maggiori info vedi http://plone.org/products/collective.xdv/documentation/reference-manual/theming.

    Per l’nstallazione su Plone 4 su server debian 6.0.2 ho eseguito i seguenti passaggi:

    Installo i pacchetti debian: build-essential e libxslt1-dev, in precedenza avevo gia installato python 2.7.1 da sorgenti (vedi il post http://www.carinato.net/linux/installazione-di-plone-4-su-debian-6-0-2)

    sudo aptitude install build-essential libxslt1-dev

    Modifico il file buildout.cfg in questo modo:

    Nella sezione [buildout] cerco la variabile extends ed aggiungo

    http://good-py.appspot.com/release/collective.xdv/1.0?plone=4.0.4

    ottengo in questo modo (la seconda e terza riga devo essere identate):

    extends =
      versions.cfg
      http://good-py.appspot.com/release/collective.xdv/1.0?plone=4.0.4

    Inoltre come per i comuni prodotti aggiuntivi aggiungo il prodotto nella variabile eggs

    eggs =
        Plone
        ...
        ...
        collective.xdv

    A questo punto rilancio il buildout

    ./bin/buildout

    Creo nella cartella principlae di Plone (dove si trova il file buildout.cfg) una cartella themes e ci metto dentro il tema statico di riferimento ed il file xml con le regole. Un test minimale puo’ essere fatto come spiegato qui

    Avvio l’istanza Plone per testare il risultato

    ./bin/instance fg

    e attivo xdv dall’apposito pannello di controllo, vedi sempre qui

    Buon “theming” !!

  • Installazione di Plone 4.0.4

    In questi giorni ho provato l’installazione di Plone 4.0.4 ed ho avuto qualche problema.
    Dopo aver generato il buildout tramite il comando

    paster create -t plone4_buildout plone404 plone_version=4.0.4 expert_mode=easy

    sono entarto nella cartella, lanciato bootstrap.py

    cd plone404
    python ./bootstrap.py

    e avviato il buildout

    .bin/buildout

    A questo punto ottengo un erore del tipo:

    Getting distribution for 'mechanize==0.1.11'
    ...
    ValueError: invalid literal for int() with base 10: '241357, 241357'

    Per risolvere ho modificato il file buildout.cfg in questo modo:
    ho aggiunto nella sezione [buildout]

    allow-hosts =
      *.plone.org
      *.python.org
    find-links = http://dist.plone.org/thirdparty/elementtree-1.2.7-20070827-preview.zip

    Speriamo in un aggiornamento a breve che risolva questo problema.
    Buon lavoro !

  • Come rimuovere i Credits da Phoca Gallery

    Usate Joomla, magari la versione nuova 1.6 e avete installato la galleria di immagini Phoca Gallery 3.0 rc3 ?

    Magari vorreste anche togliere dalle pagine della galleria la scritta “Powered by Phoca Gallery” che compare in ogni pagina della gallery.

    Bene allora questo vi può esser utile:

    Dalla cartella principale del vostro sito entrate nella cartella

    administrator/components/com_phocagallery/libraries/phocagallery/utils/

    ed editate il file utils.php

    cercate la funzione footer() e mettete un cancelletto (#) davanti alla riga che inizia per echo base64_decode

    Otterrete così:

    public function footer() {
      #echo base64_decode('PGRpdiBzdHlsZT0idGV4dC1hbGlnbjogY2VudGVyOyBjb2xvcjojZDNkM2QzOyI+UG93ZXJlZCBieSA8YSBocmVmPSJodHRwOi8vd3d3LnBob2NhLmN6IiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJQaG9jYS5jeiI+UGhvY2E8L2E+IDxhIGhyZWY9Imh0dHA6Ly93d3cucGhvY2EuY3ovcGhvY2FnYWxsZXJ5IiBzdHlsZT0idGV4dC1kZWNvcmF0aW9uOiBub25lOyIgdGFyZ2V0PSJfYmxhbmsiIHRpdGxlPSJQaG9jYSBHYWxsZXJ5Ij5HYWxsZXJ5PC9hPjwvZGl2Pg0K');
     }
    

    Funziona ?

  • Nuovo ZopeSkel

    E’ stata appena rilasciata la nuova versione di ZopeSkel

    La nuova versione rende ora possibile creare un buildout apposito per Plone 4

    I sorgenti si trovano su pypi e plone.org

    per aggiornare o installare ZopeSkel:

    sudo easy_install -U ZopeSkel

    e per creare un buildout di Plone 4

    paster create -t plone4_buildout
  • Creazione di un tema personalizzato per Plone 4

    Nell’articolo precedente abbiamo visto come installare Plone in un server Ubuntu 10.04, ora vediamo come creare un tema personalizzato per Plone 4.

    Dalla cartella principale dove abbiamo installato Plone 4, entrimo nella cartella src:

    cd plone402/src

    Utilizziamo paster per generare il template:

    paster create -t plone3_theme

    Alle richieste rispondiamo in questo modo:

    Enter project name: plonetheme.testplone4
    Variables:
     egg:      plonetheme.testplone4
     package:  plonethemetestplone4
     project:  plonetheme.testplone4
    Expert Mode? (What question mode would you like? (easy/expert/all)?) ['easy']:
    Skin Name (Name of the theme (human facing, added to portal_skins)) ['']: Tema Test Plone4
    Empty Styles? (Override default public stylesheets with empty ones?) [False]:
    Include Documentation? (Include in-line documentation in generated code?) [True]:
    Version (Version number for project) ['1.0']:
    Description (One-line description of the project) ['An installable theme for Plone 3']:
    

    Note:

    • Il nome così formato corrisponde al namespace tipico dei prodotti Plone
    • Lo Skin Name e’ il nome che poi sarà visibile
    • Empty styles: impostando su yes verranno generati automaticamente dei fogli di stile vuoti che avranno la precedenza su quelli standard di Plone. Risulta piu’ semplice però lasciar attivi i CSS originali e andar a sovrascrivere solo le parti da modificare

    Il tema è stato ora generato ma dovremo farlo riconoscere a Plone4

    cd ..

    editiamo il file buildout.cfg e lo modifichiamo in questo modo:

    Originale Modificato
    develop =
    develop =
     src/plonetheme.testplone4
    eggs =
     Zope2
     Plone
     ${buildout:eggs}
    eggs =
     Zope2
     Plone
     ${buildout:eggs}
     plonetheme.testplone4
    zcml =
    zcml =
     plonetheme.testplone4

    Salviamo le modifiche e rilanciamo lo script buildout

    ./bin/buildout -v

    Il parametro -v aumenta la verbosità

    Riavviamo il server:

    ./bin/instance fg

    (per stoppare il server utilizzeremo la combinazione di tasti ctrl+c)

    Col browser puntiamo al pannello di configurazione di Plone4: http://192.168.1.203:8080/Plone/plone_control_panel

    e selezioniamo il link Prodotti Aggiuntivi

    in alternativa possiamo puntare direttamente all’indirizzo: http://192.168.1.203:8080/Plone/prefs_install_products_form

    Selezioniamo il tema che abbiamo creato e attiviamolo con l’apposito tasto

    Ora vedremo il sito Plone spogliato di tutti i fogli di stile:

    Brutta sorpresa direte, visto che prima abbiamo scelto di non sovrascrivere i css originari.

    Con Plene 3 avrei avuto il risultato voluto ma con Plone 4 c’è ancora un passaggio da fare.

    Il tema che abbiamo trovato inizialmente su Plone 4 si chiama Sunburst Theme ma in Plone 3 il tema di default si chiamava Plone Default. Il vecchio tema è ancora disponibile ma ora in Plone 4 si chiama Plone Classic Theme.

    Il tema che abbiamo creato dunque va adattato a Plone 4.

    Basta modificare il file che troviamo in src/plonetheme.testplone4/plonetheme/testplone4/profiles/default/skins.xml in questo modo:

    Originale
    <skin-path name="Tema Test Plone4" based-on="Plone Default">
    Modificato
    <skin-path name="Tema Test Plone4" based-on="Sunburst Theme">

    Una volta salvata la modifica dovremo riavviare il server Zope per vederne l’effetto.

    Ora vediamo come personalizzare il tema che abbiamo creato.

    Gli strumenti che ci servono sono:

    • Firefox ed il plugin Firebug
    • Un buon editor (Komodo per esempio), magari che supporti l’editazione di file remoti
    • Eventualmente un Grid System (deco.gs per esempio) per aiutarci nello sviluppo

    Il primo lavoro che dovremo fare e’ copiare brutalmente i fogli di stile utilizzati dal tema SunBurst nel nostro tema, per poterli poi modificare a piacere.

    Per fare questo in modo semplice creiamo in ubuntu 2 variabili di sistema temporanee partendo dalla directory principale di Plone4 (nel nostro caso ~/plone402):

    cd ~/plone402
    orig=`cat bin/instance | grep "plonetheme.sunburst" | cut -d \' -f2`/plonetheme/sunburst/skins/sunburst_styles
    dest=src/plonetheme.testplone4/plonetheme/testplone4/skins/plonetheme_testplone4_styles/

    Verifichiamo i valori memorizzati con:

    echo $orig
    echo $dest

    e copiamo i file da modificare:

    cp $orig/ploneCustom.css.dtml $dest
    cp $orig/public.css $dest

    Ora col nostro editor di testo possiamo modificare a piacere questi files.

    Possiamo pensare di modificare public.css quando volgiamo modificare dei tag esistenti e inserire eventuali tag nuovi nel file ploneCustom.css.dtml ma questa scelta è arbitraria. L’importante è sapere che ploneCustom.css.dtml ha la precedenza su public.css.

    (work in progress….)

  • Installazione Plone 4.0.2 su Ubuntu server 10.04LTS

    Ecco come installare l’ultima versione di Plone (4.0.2) in un sistema Ubuntu minimale (installato in una virtual machine tramite l’immagine mini.iso ver 10.04 a 32bit).

    Inizia l’installazione di Ubuntu

    Scelgo la lingua:

    Do un nome al server:

    Partiziono come consigliato:

    Nel nostro caso bastano le partizioni essenziali:

    Imposto gli aggiornamenti automatici relativi alla sicurezza:

    Scelgo di installare solo i componenti essenziali e il servizio ssh

    Termino la procedura con l’installazione di Grub

    Una volta che il server ha terminato l’installazione e si sarà riavviato, scopriamo l’indirizzo ip assegnato dinamicamente dal server DHCP:

    ifconfig eth0
    

    Ora dal nostro PC possiamo accedere al server virtuale tramite ssh:

    ssh fc@192.168.1.203
    

    (anche Putty va bene se abbiamo solo Windows a disposizione)

    Ora possiamo installare i pacchetti che serviranno a Plone4.
    Nota bene: tutti i comandi vanno eseguiti come utente normale, non quindi da root, quando serviranno i privilegi di root verrà specificato di eseguirli tramite sudo

    sudo aptitude install build-essential python-dev python-pip python-pastescript python-setuptools python-imaging subversion
    

    Installiamo ora i componenti che ci servono per installare rapidamente i progetti Zope

    sudo pip install zopeskel

    Possiamo ora utilizzare paster per installare Plone. Diamo un’occhiata per vedere quali template sono disponibili:

    paster create --list-templates
    
    Available templates:
     archetype:          A Plone project that uses Archetypes content types
     basic_namespace:    A basic Python project with a namespace package
     basic_package:      A basic setuptools-enabled package
     basic_zope:         A Zope project
     kss_plugin:         A project for a KSS plugin
     nested_namespace:   A basic Python project with a nested namespace (2 dots in name)
     paste_deploy:       A web application deployed through paste.deploy
     plone:              A project for Plone products
     plone2.5_buildout:  A buildout for Plone 2.5 projects
     plone2.5_theme:     A theme for Plone 2.5
     plone2_theme:       A theme for Plone 2.1
     plone3_buildout:    A buildout for Plone 3 installation
     plone3_portlet:     A Plone 3 portlet
     plone3_theme:       A theme for Plone 3
     plone_app:          A project for Plone products with a nested namespace (2 dots in name)
     plone_hosting:      Plone hosting: buildout with ZEO and Plone versions below 3.2
     plone_pas:          A project for a Plone PAS plugin
     recipe:             A recipe project for zc.buildout
     silva_buildout:     A buildout for Silva projects
    

    Utilizziamo il template plone3_buildout visto che non c’e’ ancora un template specifico per Plone4

    paster create -t plone3_buildout
    

    Alle domande che ci vengono poste rispondiamo nel modo seguente

    Enter project name: plone402
    Expert Mode? (What question mode would you like? (easy/expert/all)?) ['easy']: easy
    Plone Version (Plone version # to install) ['3.3.5']: 4.0.2
    Zope2 Install Path (Path to Zope2 installation; leave blank to fetch one!) ['']:
    Plone Products Directory (Path to Plone products; leave blank to fetch [Plone 3.0/3.1 only]) ['']:
    Initial Zope Username (Username for Zope root admin user) ['admin']: admin
    Initial User Password (Password for Zope root admin user) ['']: admin
    HTTP Port (Port that Zope will use for serving HTTP) ['8080']:
    Debug Mode (Should debug mode be "on" or "off"?) ['off']: on
    Verbose Security? (Should verbose security be "on" or "off"?) ['off']: off

    Per il passaggio successivo ci servirà anche il pacchetto distribute

    sudo easy_install distribute==0.6.14
    

    Entriamo nella cartella creata in precedenza:

    cd plone402/
    

    Lanciamo lo script bootstrap.py

    python bootstrap.py
    

    Alla fine otterremo la risposta: Generated script ‘/home/fc/plone402/bin/buildout’.

    Ora scarichiamo tutti i pacchetti e le dipendenze indicate nel file buildout.cfg col comando:

    ./bin/buildout
    

    Questo è il passaggio più lungo ma anche l’ultimo 😉

    Ora avviamo il server Zope

    ./bin/instance console

    Nota: è ancora possibile avviare il server tramite il comando ./bin/instance fg ma dalla versione 4 si consiglia di utilizzare ./bin/instance console

    Se vogliamo avviare il server in modalità background scriveremo: ./bin/instance start

    e col nostro Browser verifichiamo il funzionamento di Plone puntando all’indirizzo: http://192.168.1.203:8080 (sostituite all’occorrenza il numero IP con quello del vostro server):

    Questo post è stato riadattato dall’originale di Noe Misael Nieto Arroyo

    Nel prossimo articolo vedremo come creare un nostro tema per Plone 4

  • Installazione Python e Plone 4 da sorgenti

    Ecco un video di 5 minuti che mostra come installare in un sistema Unix-like Python e Plone 4 da file sorgenti:

    [youtube]DtYwZOedlcI[/youtube]

    I requisiti di sistema sono:

    • Strumenti per la compilazione (il pacchetto build-essential per Linux Debian o Ubuntu per esempio)
    • Subversion per il download da repository svn

    La procedura da linea di comando:

    Creo una cartella dove metto tutto il necessario (in questo modo non modifico minimamente le impostazione del sistema e posso fare tutto senza i permessi di root)

    cd ~
    mkdir plone
    cd plone

    Scarico Python e una libreria necessaria a Plone per la gestione delle immagini

    wget http://www.python.org/ftp/python/2.7/Python-2.7.tgz
    wget http://effbot.org/downloads/Imaging-1.1.7.tar.gz

    Scompatto Python e PIL

    tar xvzf Python-2.7.tgz
    tar xvzf Imaging-1.1.7.tar.gz

    Creo una cartella dove installare Python

    mkdir -p ~/plone/python/2.7

    Configuro Python per l’installazione nella cartella predisposta (specificare il percorso assoluto)

    cd ~/plone/Python-2.7
    ./configure --prefix=/Users/fc/plone/python/2.7/

    Compilo e installo Python

    make
    make install

    Installo PIL

    cd ~/plone/Imaging-1.1.7
    ~/plone/python/2.7/bin/python2.7 setup.py install
    cd ~/plone/

    Scarico il buildout di Plone 4 dal repository svn

    svn co http://svn.plone.org/svn/plone/buildouts/plone-coredev/branches/4.0/ plone4

    Installo Plone 4

    cd plone4
    ~/plone/python/2.7/bin/python2.7 ./bootstrap.py

    Modifico eventualmente il file buildout.cfg

    vi ./buildout.cfg

    Scarico tutti i pacchetti necessari

    ./bin/buildout

    Avvio il server Zope per generare l’instanza Plone

    ./bin/instance.fg

    Dal mio Browser visito la pagina: http://localhost:8080