apache2: obtenir une liste des gestionnaires enregistrés


10

Est-il possible d'obtenir une liste de tous les gestionnaires d'apache? Avec setHandler, il est possible de créer des gestionnaires.

Une utilisation possible serait d'ajouter un gestionnaire pour une extension de fichier spécifique ( addHandler ). La connaissance de tous les gestionnaires possibles et de leur identifiant faciliterait le processus de correspondance avec une extension de fichier (ou dans le cas de gestionnaires d'URL créant une liste d'URL possibles).

Les gestionnaires doivent être gérés dans apache core dans une sorte de liste - comment est-il possible de sortir cette liste?

Réponses:


2

Apache n'expose pas une liste de gestionnaires configurés. Ne pas utiliser apachectl, pas avec autre chose.

La meilleure méthode que j'ai pu trouver pour obtenir une liste des gestionnaires configurés est de simplement grep le dossier de configuration Apache pour Handlertout attraper AddHandleret les SetHandlerdéclarations.

Pour les hôtes basés sur 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

Pour les hôtes basés sur 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

Notez que tous les gestionnaires trouvés ne sont pas enregistrés! Recherchez dans mods-enabled(Debian) et ignorez les lignes commençant par #pour limiter uniquement les gestionnaires enregistrés.

Comme suggéré par Jenny dans les commentaires, les lignes commentées peuvent être supprimées en filtrant la sortie avec grep -Pv '^[^ ]*:\s*#'. Voici la commande finale pour les machines basées sur Debian:

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

Et pour les machines basées sur Redhat:

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

Dans les commentaires, l'utilisateur gogoud fournit un moyen supplémentaire de supprimer les gestionnaires commentés, renvoyant ainsi uniquement les gestionnaires enregistrés:

// 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
Pour vous débarrasser des gestionnaires commentés, utilisez un peu de magie find et grep:find /etc/httpd/ -type f -exec grep -H -v '#' {} \; | grep Handler
Jenny D

@JennyD: Je pense que cela supprimerait les lignes avec des commentaires après les déclarations, comme AddHandler cgi-script .cgi # Ben needs CGI.
dotancohen

1
Vrai. Vous pouvez le faire avec egrepune expression rationnelle appropriée, qui est laissée comme exercice pour le lecteur (car malheureusement, je dois faire un travail rémunéré en ce moment ...)
Jenny D

@JennyD: Défi accepté! J'ai ajouté un filtre grep pour les lignes commentées. Belle réflexion, merci!
dotancohen

Pourquoi les soudaines downvotes? Cette réponse répond directement à la question et inclut même des exemples pour les deux variantes Linux les plus courantes. Si la réponse pouvait être améliorée, j'apprécierais certaines critiques constructives .
dotancohen

0

Ce n'est pas tout à fait ce que vous voulez, mais si vous activez le server-infogestionnaire dans votre configuration, la sortie vous dira quels modules ont des gestionnaires et lesquels n'en ont pas, comme ceci:

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

C'était avec Apache 2.2, donc les versions ultérieures vous donneront peut-être une sortie plus utile.


Merci, mais je ne vois pas cette information. Cette page affiche la sortie de server-info. Notez cependant que la sortie est une page statique copiée à partir du vrai serveur et qui vous est servie via un Raspberry Pi.
dotancohen
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.