Realizzare un motore di ricerca web per documenti PDF con Linux


… basta usare HTdig !

yum install htdig*
yum install xpdf

Per potere indicizzare i documenti di Microsoft Word (.doc) o i PDF (.pdf) occorre utilizzare un parser esterno scaricabile da qui e da mettere in /usr/local/bin/.

cd /usr/local/bin
wget http://www.htdig.org/files/contrib/parsers/doc2html.tar.gz
tar -zxvf doc2html.tar.gz

Per il corretto funzionamento occorre, altresì, modificare il file /usr/local/bin/doc2html/pdf2html.pl in questo modo …

my $PDFTOTEXT = “/usr/bin/pdftotext”;
my $PDFINFO = “/usr/bin/pdfinfo”;

… ed il file /usr/local/bin/doc2html/doc2html.pl in questo modo:

# PDF to HTML conversion script
# Full pathname of Perl script pdf2html.pl
##my $PDF2HTML = ”;
my $PDF2HTML = ‘/usr/local/bin/doc2html/pdf2html.pl’;

In ultimo occorre editare il file htdig.conf (percorso completo: /etc/htdig/htdig.conf) ed aggiungere:

external_parsers: application/msword->text/html /usr/local/bin/doc2html/doc2html.pl \
application/postscript->text/html /usr/local/bin/doc2html/doc2html.pl \
application/pdf->text/html /usr/local/bin/doc2html/doc2html.pl

Per lanciare la prima indicizzazione digitare:

rundig -v -s

Per le indicizzazioni successiva:

rundig -a

Inserire un PC con Windows XP/7 in un dominio realizzato con Samba


Una volta realizzato un dominio seguendo questo post occorre annettere i vari PC al dominio.
Per farlo più semplicemente esistono delle chiavi di registro da variare:

… per Windows XP realizzare un file chiamato “win_xp.reg” con le seguenti voci:


Windows Registry Editor Version 5.00

;
; This registry key is needed for a Windows XP Client to join
; and logon to a Samba domain. Note: Samba 2.2.3a contained
; this key in a broken format which did nothing to the registry -
; however XP reported “registry key imported”. If in doubt
; check the key by hand with regedit.

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters]
“requiresignorseal”=dword:00000000
“signsecurechannel”=dword:00000000

… per Windows 7 realizzare un file chiamato “win_7.reg” con le seguenti voci:


Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\LanmanWorkstation\Parameters]
; Enable NT-Domain compatibility mode
; Default:
; [value not present]
; “DomainCompatibilityMode”=-
“DomainCompatibilityMode”=dword:00000001

; Disable required DNS name resolution
; Default:
; [value not present]
; “DNSNameResolutionRequired”=-
“DNSNameResolutionRequired”=dword:00000000

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]
; Disable requirement of signed communication
; My Samba (3.0.33) works with signed communication enabled, so no need to disable it.
; Default:
; “RequireSignOrSeal”=dword:00000001
; Disable the usage of strong keys
; Default:
; “RequireStrongKey”=dword:00000001
“RequireStrongKey”=dword:000000001

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Netlogon\Parameters]
“RequireSignOrSeal”=dword:00000001

I files sono in ogni caso scaricabili dai seguenti link:
- registro per Windows XP
- registro per Windows 7

Come bloccare la chat web di GMAIL con Dansguardian


La webmail di Gmail offre, al suo interno, la possibilità di “chattare” con altri utenti Gmail.
In pratica ha all’interno un piccolo client Google Talk.
DansGuardian permette di bloccare la chat di Gmail in modo semplice. Basta aggiungere al file “bannedsitelist” (la path completa è: /etc/dansguardian/bannedsitelist) le seguenti URL:

# Blocca la chat di google
chatenabled.mail.google.com
talkgadget.google.com
talk.google.com
talkx.l.google.com

Riferimento: http://www.google.com/support/chat/bin/answer.py?hl=it&answer=161980

Script per la comunicazione agli utenti della scadenza dell’account su un server basato su LDAP


Uno dei problemi più annosi nella gestione di server è quello della scadenza delle utenze.
In molti contesti vengono creati utenti temporanei (magari dipendenti a tempo determinato o stagisti).
LDAP molto agevolemente permette di gestire la scadenza dell’account.
Il problema resta quello di notificare all’utente che il suo account sta per scadere.
Questo è possibile effettuarlo tramite uno script da mettere in crontab …

#!/bin/bash

########################################################
#
# Script per la comunicazione via mail agli utenti
# della scadenza dell’account
#
# BoB 20-01-2010
# Rel. 1.200
########################################################

#############################
# Variabili
#############################
# A chi invio la mail per conoscenza (bcc) ?
bcc=”area-ict@dominio.it”

# variables for LDAP search
ldapHost=”localhost”
ldapContext=”dc=dominio,dc=it”
ldapUser=”cn=admin,dc=dominio,dc=it”
ldapPasswd=”password_server_ldap”
checkTime=”7 days”
checkTimeITA=”7 giorni”
expireDate=”8 days”

# Files di appoggio temporanei
tmpMsg=/root/passwordsToExpireMsg
tmpLdapResult=/root/passwordsToExpire

# Calcolo delle date
# datenow = data odierna + il checktime in formato gg/mm/aa
datenow=`date -d “$checkTime” “+%d/%m/%y”`
# unixtime_datenow = data odierna + il checktime in formato Unix
unixtime_datenow=`date -d “$checkTime” +%s`
# epoch = data di partenza dello UnixTime
epoch=’01/01/1970′
# unixtime_epoch = data di partenza dello UnixTime in formato Unix
unixtime_epoch=`date -d ‘Jan 01 1970 01:00:00′ +%s`

# Inizio della procedura di calcolo delle date
# e stampa a video delle informazioni
clear
echo “Epoch in data (data di nascita dello UNIXtime): “$epoch
echo “Epoch in UNIXtime (data di nascita dello UNIXtime): “$unixtime_epoch
echo “Data odierna: “$datenow
echo “Data odierna in UNIXtime: “$unixtime_datenow
echo “”
echo “Calcolo della differenze tra le date:”
echo “————————————-”
datediff=”$(( ($unixtime_datenow-$unixtime_epoch)/( 60*60*24) ))”
echo “Data arrivo:”$unixtime_epoch “- Data partenza:”$unixtime_datenow
echo “Risultato in giorni: ” $(( ($unixtime_datenow-$unixtime_epoch)/( 60*60*24) ))
echo “Data di riferimento della scadenza password: “$datediff

# Ricerca della data di scandenza delle utenze
# con riferimento ai parametri CN e UID
# cn = common name
# uid = user id
ldapsearch -x -D $ldapUser -w $ldapPasswd -b $ldapContext “(&(objectclass=posixAccount)(shadowExpire=$datediff))” cn uid > $tmpLdapResult

# Estrazione delle informazioni dal file di appoggio
# tmpLdapResult=/root/passwordsToExpire
# Estrai i dati UID e CN.
# Nel caso di “ldap_mail” aggiunge il dominio di riferimento
ldap_uid=`less $tmpLdapResult | gawk ‘/uid:/’`
ldap_mail=`less $tmpLdapResult | gawk ‘/uid:/ {print $2″@dominio.it”}’`
ldap_cn=`/usr/bin/less $tmpLdapResult | gawk ‘/cn:/ {print $2″ ” $3″ ” $4″ ” $5″ “}’`

# Per ogni UID trovato nel file manda una email all’utente
# ed una mail in ccn all’utenza definita come BCC all’inizio del file
for user in $ldap_mail; do
echo;
echo “Gentile utente,” >>$tmpMsg;
echo “si comunica che il tuo account di posta elettronica: $user scadra’ il giorno $datenow.”>>$tmpMsg;
echo “Si prega contattare l’Area servizi ICT aziendale entro $checkTimeITA dal `date +%d/%m/%y` per maggiori informazioni.” >>$tmpMsg;
echo “In caso contrario l’account sara’ sospeso a partire dalle ore 00:00 del `date -d “$expireDate” +%d/%m/%y`.”>>$tmpMsg;
echo “Cordiali saluti.”>>$tmpMsg;
echo>>$tmpMsg;
echo “Questa e’ una mail generata automaticamente dal sistema”>>$tmpMsg;
echo “———————————————————–”>>$tmpMsg;
echo “Area servizi ICT – famosa azienda informatica …”>>$tmpMsg;
echo “Riferimenti telefonici: 091/xxxxxxxxx – 335/xxxxxxxx”>>$tmpMsg;
echo “———————————————————–”>>$tmpMsg;
# Invia la mail preparata e manda una copia in BCC …
cat $tmpMsg | /bin/mail -s “Comunicazione scadenza account [Area ICT/$user]” $user -b $bcc;
# Rimuove il messaggio …
rm $tmpMsg
# Stampa a video le informazioni sugli account scaduti
echo $ldap_uid “- Nome utente: “$ldap_cn;
done

# Rimuove i risultati …
rm $tmpLdapResult

exit 0

Recovery di OpenLDAP se il db bdb si corrompe/è in sola lettura


Può capitare che, riavviando il servizio LDAP di un server, compaia questo messaggio di errore:

Controllo file di configurazione per slapd: bdb_db_open: unclean shutdown detected; attempting recovery.
bdb_db_open: Recovery skipped in read-only mode. Run manual recovery if errors are encountered.
config file testing succeeded

In questo caso basta digitare:

cp /etc/openldap/DB_CONFIG.example DB_CONFIG
service ldap restart

… e il problema scompare !

Backup e restore di MailMan


Mailman è il più famoso gestore di mailing list sotto Linux.
Per effettuare il backup/restore della configurazione e delle mailing list da un server ad un altro server basta un semplicissimo:

scp -rv indirizzo_ip_del_vecchio_server:/var/lib/mailman/ /var/lib/mailman

Backup e restore di OTRS


Ci sono due tipi di backup in OTRS: il backup dell’applicazione ed il backup dei dati.
In OTRS è disponibile uno script che si chiama “backup.pl” (la path completa è: /opt/otrs/scripts/backup.pl).

Per creare un backup digitare il comando:

mkdir -p /root/otrs-backup
/opt/otrs/scripts/backup.pl -d /root/otrs-backup

Backup /root/otrs-backup/2011-01-12_21-43/Config.tar.gz … done
Backup /root/otrs-backup/2011-01-12_21-43/Application.tar.gz … done
Dump MySQL rdbms … done
Compress SQL-file… done

Come si può intuire i files creati sono 2: uno per la configurazione (Config.tar.gz) ed uno per l’applicazione (Application.tar.gz).

Per effettuare il restore, invece, utilizzeremo lo script “restore.pl” (la path completa è: /opt/otrs/scripts/restore.pl).
Occorre precisare una cosa: il database MySQL “otrs” presente sul sistema sul quale viene effettuato il restore deve essere vuoto.

/opt/otrs/scripts/restore.pl -b /root/otrs-backup/2011-01-12_21-43/ -d /opt/otrs/

Restore /root/otrs-backup/2011-01-12_21-43//Config.tar.gz …
Restore /root/otrs-backup/2011-01-12_21-43//Application.tar.gz …
create MySQL
decompresses SQL-file …
cat SQL-file into MySQL database
compress SQL-file…

Conversione delle mail da MBOX a MAILDIR


Durante la migrazione di un server ho avuto la necessità di trasformare le caselle di posta da MAILBOX a Maildir.
Per fare questo ho utilizzato mb2md (nella versione 3.20 scaricabile qui). Per i più curiosi la home page di riferimento è questa
In seguito mi sono realizzato uno script bash che converte tutto quello che trova in /var/spool/mail e lo mette in /home/$user/Maildir
Questo lo script:

#!/bin/bash
set -x
MAILBOX_DIR=”/var/spool/mail”
#MAILDIR_DIR=”/home/maildir-oldserver”
MAILDIR_DIR=”/home”
[ -d $MAILDIR_DIR ] || mkdir -p $MAILDIR_DIR
cd $MAILBOX_DIR
for user in *; do
mkdir -p $MAILDIR_DIR/$user/Maildir
done

for user in *; do
perl /root/mb2md-3.20.pl -s $MAILBOX_DIR/$user -d $MAILDIR_DIR/$user/Maildir
done

for user in *; do
perl /root/mb2md-3.20.pl -s /home/$user/mail/ -d $MAILDIR_DIR/$user/Maildir
done

for user in *; do
chown -R $user.users $MAILDIR_DIR/$user/
done

Non ho grande esperienza negli script bash … Pertanto si accettano suggerimenti per il miglioramento dello script !

Creazione di un trunk Messagenet con FreePBX


Trunk Description: Messagenet

Outgoing Settings
Trunk Name: Messagenet_OUT

authname=5369xxx
authuser=5369xxx
canreinvite=no
dtmfmode=rfc2833
fromdomain=sip.messagenet.it
fromuser=5369xxx
host=sip.messagenet.it
insecure=very
nat=yes
port=5061
regexten=5369xxx
secret=password
type=peer
username=5369xxx
qualify=yes

Registration
Register String:
5369xxx:password@sip.messagenet.it:5061/5369xxx

Creazione di un trunk VoipBuster (Betamax) su FreePBX


Trunk Description: VoipBuster
Maximum Channels: 2


Outgoing Settings

Trunk Name: VoipBuster_OUT
username=user
type=friend
srvlookup=yes
secret=password
qualify=yes
nat=yes
insecure=very
host=sip1.voipbuster.com
fromuser=0039091987654
fromdomain=sip1.voipbuster.com
dtmfmode=inband
disallow=all
context=from=pstn
allow=alaw&ulaw&gsm

Registration
Register String:
user:password@sip1.voipbuster.com/user

Iscriviti

Get every new post delivered to your Inbox.

Join 35 other followers