====== 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