Rsyslog e slapd

Rsyslog permette di filtrare le righe.
Se voglio inviare alcune righe di log ad un file separato, si usano i filtri.

Per inviare il log di slapd al file /var/log/slapd.log basta creare un file in /etc/rsyslog.d (lo chiamo slapd.conf, qualunque nome va bene): verrà automaticamente incluso nella configurazione di rsyslog.
In esso scrivere le seguenti righe:

if $programname == 'slapd' then /var/log/slapd.log
& ~

Tutto il log di slapd verrà inviato nel file indicato.

PHPLdapAdmin: aggiornamento a 1.2

Passando da Debian Lenny a Squeeze, ho avuto problemi con schemi e templates di openldap e PhpLdapAdmin.

La soluzione è stata quella di cancellare (dopo un backup) i templates in /etc/phpldapadmin/templates , lasciando però le directory (che PLA cerca sempre).

Altro problema: configurare un database in PLA con il parametro $servers->setValue(‘login’,’auth_type’,’session’);

OpenLDAP: configurazione dinamica con cn=config

Con le ultime versioni, OpenLDAP può essere configurato in maniera dinamica, quindi senza stoppare il server.

La configurazione deve essere scritta in un database LDAP che slapd per default legge in /etc/ldap/slapd.d .

Un modo semplice per scrivere la configurazione di slapd è quello di usare un file tipo il “vecchio” slapd.conf.
Per prima cosa, arrestare slapd.
Poi scrivere la configurazione in slapd.conf e quindi trasformarla in un database LDAP con il comando

slaptest -f slapd.conf -F /etc/ldap/slapd.d

Ovviamente si possono modificare a piacimento i parametri:
se si vuole scrivere una configurazione di prova si può mettere -F tmp_slapd.d
o se si vuole usare un diverso file di origine si può mettere -f altro.conf .

Un mio errore ricorrente è quello di non verificare i permessi di slapd.d:
bisogna eventualmente dare il comando chown -R openldap.openldap /etc/ldap/slapd.d

Un altro problema si era verificato per rootdn e rootpw non corretti.
Accertarsi che il file /etc/ldap/slapd.d/cn=config/olcDatabase={0}config.ldif sia congruente con il file slapd.conf che lo ha generato.

Infine accertarsi che slapd.d e tutti i file in essa contenuti non sia accessibile dagli utenti diversi da openldap (per motivi di sicurezza, non si può lasciar leggere la configurazione a tutti).

A questo punto si può riavviare slapd, che per default leggerà la configurazione in slapd.d invece che dal file slapd.conf.

J.F.K.

26 giugno 1963

Two thousand years ago — Two thousand years ago, the proudest boast was “civis Romanus sum.” Today, in the world of freedom, the proudest boast is “Ich bin ein Berliner.”(I appreciate my interpreter translating my German.)

There are many people in the world who really don’t understand, or say they don’t, what is the great issue between the free world and the Communist world.

Let them come to Berlin.

There are some who say — There are some who say that communism is the wave of the future.

Let them come to Berlin.

And there are some who say, in Europe and elsewhere, we can work with the Communists.

Let them come to Berlin.

And there are even a few who say that it is true that communism is an evil system, but it permits us to make economic progress.

Lass’ sie nach Berlin kommen.

Let them come to Berlin.

Duemila anni fa — Duemila anni fa, il più grande orgoglio era dire “civis Romanus sum.” Oggi, nel mondo libero, il più grande orgoglio è dire “Ich bin ein Berliner.”(Apprezzo l’interprete che traduce il mio tedesco)

Ci sono molte persone al mondo che non capiscono, o che dicono di non capire, quale sia la grande differenza tra il mondo libero e il mondo comunista

Che vengano a Berlino

Ce ne sono alcune che dicono — ce ne sono alcune che dicono che il comunismo è l’onda del progresso

Che vengano a Berlino

Ce ne sono alcune che dicono, in Europa come altrove, che possiamo lavorare con i comunisti

Che vengano a Berlino

E ce ne sono anche certe che dicono che sì il comunismo è un sistema malvagio, ma permette progressi economici

Lass’ sie nach Berlin kommen.

Che vengano a Berlino

Chopin

… l’ estro festevole di Chopin non attaccava che i tasti superiori dello spirito, innamorato di atticismo come egli era, e ripugnante alla giovialità volgare, al riso grossolano, alla gaiezza comune, come dinanzi ad animali ancor più abbietti che velenosi, la cui vista provoca le più nauseabonde ripugnanze in certe nature sensitive e delicate.

Da “Vita di Chopin” di F. Liszt, pag. 111 (ed. 2010).

Eccezioni con PHP5

Variabili e metodi per le eccezioni in PHP 5

Tra le altre, consideriamo le seguenti proprietà:

  • Exception :: message: il messaggio di errore che verrà passato come argomento al costruttore della classe.
  • Exception :: line: il punto esatto del blocco di codice in cui viene generato l’errore.
  • Exception :: file:il nome del file PHP in cui a origine l’errore gestito tramite eccezione.

Le tre variabili appena descritte sono “protette”, non potranno quindi essere riscritte e ogni tentativo di modifica a loro carico non farà altro che generare la notifica di un errore.

Passiamo ora ai metodi. Questi ultimi sono pubblici e quindi accessibili in tutto il contesto appartenente alla classe in cui viene istanziato l’oggetto. Per la precisione possiamo distinguere 5 diversi metodi:

  • Exception :: getMessage(): lo abbiamo descritto in precedenza; esso è destinato a raccogliere come parametro la notifica di errore che viene generata dal controllo delle eccezioni. In pratica reinvia il messagio di errore come parametro al costruttore della classe di riferimento.
  • Exception :: getLine(): è il metodo che permette il reinvio alla riga di codice in cui si verifica l’errore.
  • Exception :: getTrace(): metodo che reinvia ad una tabella associtiva riguardante le caratteristiche dell’errore.
  • Exception :: getTraceAsString(): metodo che svolge una funzione similare all’Exception :: getTrace() ma crea una stringa con lo stesso contenuto di informazioni.

Exception :: getTrace() si presenta come il metodo più comlplesso in quanto contiene difffrenti tipi di informazioni riguardanti l’entità dell’errore gestito.
All’interno di quest’ultimo metodo rileviamo 6 differenti elementi costitutivi che potremo riassumere nell’elenco seguente:

  • file: il documento in cui si verifica l’errore.
  • line: la riga di codice in cui si verifica l’errore.
  • function: la funzione coinvolta nell’errore.
  • class: la classe coinvolta nell’errore.
  • type: il modo in cui viene richiamato il metodo che potrebbe essere statico o dinamico.
  • args: gli argomenti passati al metodo raccolti in una tabella associativa.