====== mod_python per Apache ======
Si installa il pacchetto Debian **libapache2-mod-python**, quindi in un VirtualHost si abilita l'esecuzione del Python:
SetHandler mod_python
PythonPath "sys.path+['/etc/apache2/']"
#PythonHandler mod_python.testhandler
PythonHandler mptest
PythonDebug On
Con **SetHandler** si dice di passare ogni richiesta al Python, se si desidera passare solo le richieste di file .py si può usare la direttiva **AddHandler**. L'handler predefinito è contenuto nel file **''/etc/apache2/mptest.py''**, il cui percorso è stato aggiunto alla sys.path con la direttiva **PythonPath**. Eventuali errory Python saranno mostrati nel browser grazie alla direttiva **PythonDebug**.
Per verificare le impostazioni si può attivare provvisoriamente l'handler **''mod_python.testhandler''**.
Questo è un esempio di handler **''mptest.py''**:
from mod_python import apache
def handler(req):
req.content_type = 'text/plain'
req.write("Hello World!")
return apache.OK
===== Autenticazione con PythonAuthenHandler =====
Per delegare l'autenticazione Basic di Apache ad una procedura Python è possibile usare queste direttive:
AuthType Basic
AuthName "Protetto con Python"
AuthUserFile /dev/null
AuthBasicAuthoritative Off
PythonAuthenHandler authpippo
Require valid-user
L'autenticazione su file **AuthUserFile** viene dichiarata non autoritativa, si aggiunge un handler Python che deve essere soddisfatto. Nell'esempio verrà eseguito il file **''authpippo.py''** cercato nella sys.path. Ecco un esempio:
from mod_python import apache
def authenhandler(req):
pw = req.get_basic_auth_pw()
user = req.user
if user == "pippo" and pw == "pippo":
return apache.OK
else:
return apache.HTTP_UNAUTHORIZED