apache2: ottiene un elenco di gestori registrati


10

È possibile ottenere un elenco di tutti i gestori da apache? Con setHandler è possibile creare gestori.

Un possibile utilizzo sarebbe quello di aggiungere un gestore per un'estensione di file specifica ( addHandler ). Conoscere tutti i possibili gestori e il loro identificatore faciliterebbe il processo di abbinamento a un'estensione di file (o nel caso in cui i gestori di URL creano un elenco di possibili URL).

I gestori devono essere gestiti in apache core in una sorta di elenco: come è possibile far uscire questo elenco?

Risposte:


2

Apache non espone un elenco di gestori configurati. Non usando apachectl, non con nient'altro.

Il metodo migliore che ho trovato per ottenere un elenco di gestori configurati è semplicemente grep nella cartella di configurazione di Apache per Handlercatturare tutto AddHandlere le SetHandlerdichiarazioni.

Per host basati su Debian (Ubuntu)

$ grep -ir "Handler" /etc/apache2/*
mods-enabled/php5.conf: SetHandler application/x-httpd-php
mods-enabled/php5.conf: SetHandler application/x-httpd-php-source
apache2.conf:           SetHandler server-status
mods-available/info.conf:    SetHandler server-info
mods-available/ldap.conf:    SetHandler ldap-status
mods-available/status.conf:  SetHandler server-status
mods-available/php5.conf:    SetHandler application/x-httpd-php
mods-available/php5.conf:    SetHandler application/x-httpd-php-source
sites-available/default:     AddHandler cgi-script .cgi
sites-enabled/000-default:   AddHandler cgi-script .cgi

Per host basati su Redhat (Fedora, CentOS)

$ grep -ir "Handler" /etc/httpd/*
conf.d/php.conf:  AddHandler php5-script .php
conf/httpd.conf:  #AddHandler cgi-script .cgi
conf/httpd.conf:  #AddHandler send-as-is asis
conf/httpd.conf:  AddHandler type-map var
conf/httpd.conf:  #ErrorDocument 404 "/cgi-bin/missing_handler.pl"
conf/httpd.conf:     AddHandler type-map var
conf/httpd.conf:#    SetHandler server-status
conf/httpd.conf:#    SetHandler server-info
conf.d/fcgid.conf:   AddHandler fcgid-script fcg fcgi fpl
conf.d/perl.conf:#   SetHandler perl-script
conf.d/perl.conf:#   SetHandler perl-script

Si noti che non tutti i gestori trovati sono effettivamente registrati! Cerca in mods-enabled(Debian) e ignora le righe che iniziano con #per restringere solo i gestori registrati.

Come suggerito da Jenny nei commenti, le righe commentate possono essere rimosse filtrando l'output con grep -Pv '^[^ ]*:\s*#'. Ecco il comando finale per le macchine basate su Debian:

$ grep -ir "Handler" /etc/apache2/* | grep -Pv '^[^ ]*:\s*#'

E per macchine basate su Redhat:

$ grep -ir "Handler" /etc/httpd/* | grep -Pv '^[^ ]*:\s*#'

Nei commenti l'utente gogoud fornisce un modo aggiuntivo per eliminare i gestori commentati, restituendo così solo i gestori registrati:

// Debian or Ubuntu
$ grep -R "Handler" /etc/apache2/*enabled* | sed 's/#.*//;/^[^:]*:\s*$/d'

// Redhat, CentoOS, Fedora
$ grep -R "Handler" /etc/httpd/*enabled* | sed 's/#.*//;/^[^:]*:\s*$/d'

2
Per sbarazzarsi dei gestori commentati, usa un po 'di magia per trovare e grep:find /etc/httpd/ -type f -exec grep -H -v '#' {} \; | grep Handler
Jenny D

@JennyD: Penso che eliminerebbe le righe con i commenti dopo le dichiarazioni, come ad esempio AddHandler cgi-script .cgi # Ben needs CGI.
dotancohen,

1
Vero. Potresti farlo con egrepuna regexp adatta, che viene lasciata come esercizio per il lettore (come sfortunatamente devo fare un po 'di lavoro retribuito in questo momento ...)
Jenny D

@JennyD: sfida accettata! Ho aggiunto un filtro grep per le righe commentate. Bel pensiero, grazie!
dotancohen,

Perché gli improvvisi downvotes? Questa risposta risponde direttamente alla domanda e include anche esempi per le due varianti Linux più comuni. Se la risposta potesse essere migliorata, apprezzerei alcune critiche costruttive .
dotancohen,

0

Questo non è esattamente quello che vuoi, ma se abiliti il server-infogestore nella tua configurazione, l'output ti dirà quali moduli hanno gestori e quali no, in questo modo:

Module Name: mod_negotiation.c
Content handlers: yes
....
Module Name: mod_mime.c
Content handlers: none
....

Questo era con Apache 2.2, quindi forse le versioni successive ti daranno un output più utile.


Grazie, tuttavia non vedo queste informazioni. Questa pagina mostra l'output di server-info. Si noti, tuttavia, che l'output è una pagina statica copiata dal server reale e fornita all'utente tramite un Raspberry Pi.
dotancohen,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.