2016-04-27 2 views
0

Je crée un module apache qui crypte les données avec AES. Mon but final est d'utiliser une clé AES différente pour chaque requête, générant une nouvelle clé de 16 octets utilisée pour AES crypter le fichier et envoyer la clé (cryptée avec RSA) comme un en-tête personnaliséDéfinition de l'en-tête personnalisé à la réponse apache dans un module

Le problème est que je peux Vous ne trouverez aucune documentation pour définir par programme un en-tête personnalisé.

J'attends quelque chose comme ap_set_handler("HeaderName","content")

Je ne ai trouvé ce fichier qui utilisent une telle fonction: http://opensource.apple.com/source/apache/apache-643/apache/src/modules/proxy/proxy_ftp.c

Le problème est que l'inclure dans mon code source me donne une erreur implicit declaration of function 'ap_set_header' même si je inclus les mêmes fichiers .h de ce fichier.

Je suis assez sûr que cela peut être fait, mais je ne sais vraiment pas où chercher

Répondre

1

Après 2 jours de lutte que j'ai trouvé comment le faire regardant le code source de mod_headers (sinon il est presque impossible de trouver dans la documentation sans le savoir déjà)

En fait, l'instance request_rec *r d'Apache vous donne dans le gestionnaire un champ très utile r->headers_out.

vous pouvez trouver la 'documentation' ici: https://ci.apache.org/projects/httpd/trunk/doxygen/structrequest__rec.html#afecc56ea8fb015aa52477dba471a6612

r->headers_out est un apr_table_t afin que vous puissiez le modifier en utilisant des fonctions appropriées:

/* Add header at the end of table */ 
ap_table_mergen(r->headers_out, "NameField", "value"); 
/* Overwrite value of "NameField" header or add it (if not existing) */ 
ap_table_setn(r->headers_out, "NameField", "value"); 
/* Unset header */ 
ap_table_unset(r->headers_out, "NameField");