apache2: पंजीकृत हैंडलर की एक सूची प्राप्त करें


10

क्या यह संभव है, अपाचे से सभी हैंडलर की सूची प्राप्त करने के लिए? सेटहैंडलर के साथ हैंडलर बनाना संभव है।

एक संभावित उपयोग एक विशिष्ट फ़ाइल एक्सटेंशन ( एडहैंडलर ) के लिए एक हैंडलर जोड़ने के लिए होगा । सभी संभव हैंडलर और उनके पहचानकर्ता को जानने से उन्हें फ़ाइल एक्सटेंशन से मेल करने की प्रक्रिया आसान हो जाएगी (या URL हैंडलर संभव URL की सूची बनाने के मामले में)।

हैंडलर को किसी प्रकार की सूची में अपाचे कोर में प्रबंधित किया जाना चाहिए - इस सूची को बाहर निकालना कैसे संभव है?

जवाबों:


2

अपाचे कॉन्फ़िगर हैंडलर की सूची को उजागर नहीं करता है। उपयोग नहीं apachectl, किसी और चीज के साथ नहीं।

सबसे अच्छी विधि जो मुझे कॉन्फ़िगर हैंडलर की सूची प्राप्त करने के लिए मिल सकती है, वह है अपाचे कॉन्फ़िगरेशन फ़ोल्डर Handlerको सभी AddHandlerऔर SetHandlerघोषणाओं को पकड़ने के लिए ।

डेबियन-आधारित (उबंटू) मेजबानों के लिए

$ 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

रेडहैट-आधारित (फेडोरा, सेंटोस) होस्ट के लिए

$ 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

ध्यान दें कि नहीं पाए गए सभी हैंडलर वास्तव में पंजीकृत हैं! mods-enabled(डेबियन) में खोजें और #केवल पंजीकृत संचालकों को संकीर्ण करने के लिए शुरू होने वाली रेखाओं की उपेक्षा करें।

जैसा कि जेनी ने टिप्पणियों में सुझाया है, टिप्पणी वाली पंक्तियों को आउटपुट को फ़िल्टर करके हटाया जा सकता हैgrep -Pv '^[^ ]*:\s*#' । यहाँ डेबियन-आधारित मशीनों के लिए अंतिम कमांड है:

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

और रेडहैट आधारित मशीनों के लिए:

$ grep -ir "Handler" /etc/httpd/* | grep -Pv '^[^ ]*:\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
कमेंट-आउट हैंडलर से छुटकारा पाने के लिए, कुछ ढूंढे और जादू का उपयोग करें:find /etc/httpd/ -type f -exec grep -H -v '#' {} \; | grep Handler
जेनी डी

@ जेनीडी: मुझे लगता है कि घोषणाओं के बाद टिप्पणियों के साथ लाइनों को हटा दिया जाएगा, जैसे कि AddHandler cgi-script .cgi # Ben needs CGI
डॉटनचेन

1
सच। आप इसे egrepएक उपयुक्त रेगेक्स के साथ कर सकते हैं , जिसे पाठक के लिए एक अभ्यास के रूप में छोड़ दिया जाता है (दुर्भाग्य से मुझे अभी कुछ भुगतान किया जाना है ...)
जेनी डी

@ जेनीडी: चुनौती स्वीकार की! मैंने टिप्पणी लाइनों के लिए एक grep फ़िल्टर जोड़ा है। अच्छी सोच, धन्यवाद!
डॉटनकोहेन

अचानक गिरावट क्यों? यह उत्तर सीधे प्रश्न का उत्तर देता है और यहां तक ​​कि दो सबसे सामान्य लिनक्स वेरिएंट के लिए उदाहरण भी शामिल हैं। अगर जवाब में सुधार किया जा सकता है तो मैं कुछ रचनात्मक आलोचना की सराहना करूंगा ।
dotancohen

0

यह वह नहीं है जो आप चाहते हैं, लेकिन यदि आप server-infoअपने कॉन्फ़िगरेशन में हैंडलर को सक्षम करते हैं , तो आउटपुट आपको बताएगा कि किस मॉड्यूल में हैंडलर हैं और जो इस तरह से नहीं हैं:

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

यह अपाचे 2.2 के साथ था, इसलिए शायद बाद के संस्करण आपको अधिक उपयोगी आउटपुट देंगे।


धन्यवाद, हालाँकि मैं वह जानकारी नहीं देख रहा हूँ। यह पेज आउटपुट दिखाता है server-info। हालांकि, ध्यान दें कि आउटपुट वास्तविक सर्वर से कॉपी किया गया एक स्थैतिक पेज है और आपको रास्पबेरी पाई के माध्यम से परोसा जाता है।
डॉटनकोहेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.