// ZazouMiniWebServerDllTest.cpp : définit le point d'entrée pour l'application console. // #include "stdafx.h" #include // Penser à copier la bonne version de la Dll // dans le répertoire du projet pour tests // Test de ZMWSSAPIHandler:zmwssapi="ZMWSSAPITest" typedef struct _ZMWSSAPI_DATA { HANDLE hOUT; HANDLE hIN; void* ENV; } ZMWSSAPI_DATA; extern "C" { __declspec(dllexport) void ZMWSSAPITest (ZMWSSAPI_DATA* data) { DWORD nBytes; char msg[4096]; char *myenv; unsigned long content_length = 0; // Simple écriture strcpy(msg, "Content-Type: text/html\n\n"); WriteFile (data->hOUT, msg, strlen(msg), &nBytes, NULL); strcpy(msg, "

Test de la SAPI de ZMWS

\n"); WriteFile (data->hOUT, msg, strlen(msg), &nBytes, NULL); strcpy(msg, "Test html
\nsur 2 lignes\n"); WriteFile (data->hOUT, msg, strlen(msg), &nBytes, NULL); // Environnement strcpy (msg, "

Affichage de l'environnement CGI passé au handler :

\n"); WriteFile (data->hOUT, msg, strlen(msg), &nBytes, NULL); myenv = (char*)data->ENV; strcpy (msg, "
\n"); while (*myenv) { WriteFile(data->hOUT, myenv, strlen(myenv), &nBytes, NULL); WriteFile(data->hOUT, msg, strlen(msg), &nBytes, NULL); if (!strncmp(myenv, "CONTENT_LENGTH", strlen("CONTENT_LENGTH"))) { content_length = strtoul(myenv+strlen("CONTENT_LENGTH")+1, NULL, 10); ::MessageBox(NULL, "Posted DATA detected", "HTTP Sniffer ;)", MB_ICONINFORMATION); } myenv += strlen(myenv)+1; } // Récupération des données postées if (content_length) { char* postdata; strcpy (msg, "

Données postées

\n"); WriteFile (data->hOUT, msg, strlen(msg), &nBytes, NULL); postdata = (char*)malloc(content_length+1); if (!postdata) { strcpy (msg, "Pas assez de mémoire pour les voir ;)\n"); WriteFile (data->hOUT, msg, strlen(msg), &nBytes, NULL); } else { ReadFile (data->hIN, postdata, content_length, &nBytes, NULL); WriteFile (data->hOUT, postdata, nBytes, &nBytes, NULL); free (postdata); } } // TRES IMPORTANT !!! // Si cette fonction n'est pas appelée : // - Il y a des fuites de mémoire // - La navigation est bloquée zmws_sapi_data_cleanup(data); } } int main(int argc, char* argv[]) { CBaseZMWSConfig base_config; // Test de zmws_start_with_config_file // int res = zmws_start_with_config_file("C:\\Documents and Settings\\Zazou\\Mes documents\\_config.zmwsc"); // Test de zmws_get_config // zmws_get_config (&base_config); zmws_easy_start(); zmws_wait(); return 0; }