home *** CD-ROM | disk | FTP | other *** search
- // DumpVars.c -> ISAPI sample to dump server variables
- // Wade A. Hilmo, August 1997
-
-
- #define _WIN32_WINNT 0x0400
-
-
- #include <windows.h>
- #include <httpext.h>
-
-
- BOOL WINAPI GetExtensionVersion(HSE_VERSION_INFO *pVer)
- {
- pVer->dwExtensionVersion = MAKELONG(HSE_VERSION_MINOR, HSE_VERSION_MAJOR);
-
- lstrcpyn(pVer->lpszExtensionDesc, "DumpVars ISAPI Sample", HSE_MAX_EXT_DLL_NAME_LEN);
-
- return TRUE;
- }
-
-
- DWORD WINAPI HttpExtensionProc(EXTENSION_CONTROL_BLOCK *lpEcb)
- {
- DWORD dwBuffSize, dwNumVars, dwError, x;
- char szServerVariable[][32] =
- {"APPL_MD_PATH", "APPL_PHYSICAL_PATH", "AUTH_PASSWORD",
- "AUTH_TYPE", "AUTH_USER", "CERT_COOKIE", "CERT_FLAGS",
- "CERT_ISSUER", "CERT_KEYSIZE", "CERT_SECRETKEYSIZE",
- "CERT_SERIALNUMBER", "CERT_SERVER_ISSUER",
- "CERT_SERVER_SUBJECT", "CERT_SUBJECT", "CONTENT_LENGTH",
- "CONTENT_TYPE", "HTTP_ACCEPT", "HTTPS", "HTTPS_KEYSIZE",
- "HTTPS_SECRETKEYSIZE", "HTTPS_SERVER_ISSUER",
- "HTTPS_SERVER_SUBJECT", "INSTANCE_ID", "INSTANCE_META_PATH",
- "PATH_INFO", "PATH_TRANSLATED", "QUERY_STRING",
- "REMOTE_ADDR", "REMOTE_HOST", "REMOTE_USER",
- "REQUEST_METHOD", "SCRIPT_NAME", "SERVER_NAME",
- "SERVER_PORT", "SERVER_PORT_SECURE", "SERVER_PROTOCOL",
- "SERVER_SOFTWARE", "URL"};
- char szOutput[2048], szValue[1024];
-
- dwNumVars = 38; // There are 38 documented server variables
-
- // Send back headers to the client
- lpEcb->ServerSupportFunction(lpEcb->ConnID, HSE_REQ_SEND_RESPONSE_HEADER, NULL, NULL, (LPDWORD)"Content-type: text/html\r\n\r\n");
-
- // Begin sending back HTML to the client
- wsprintf(szOutput, "<HTML>\r\n<h1>Server Variable Dump</h1>\r\n<hr>\r\n");
- dwBuffSize = strlen(szOutput);
- lpEcb->WriteClient(lpEcb->ConnID, szOutput, &dwBuffSize, 0);
-
- // Get the server variables and send them
- for (x = 0; x < dwNumVars; x++)
- {
- dwBuffSize = 1024;
- if (!lpEcb->GetServerVariable(lpEcb->ConnID, szServerVariable[x], szValue, &dwBuffSize))
- {
- switch (dwError = GetLastError())
- {
- case ERROR_INVALID_PARAMETER:
- wsprintf(szValue, "ERROR_INVALID_PARAMETER");
- break;
-
- case ERROR_INVALID_INDEX:
- wsprintf(szValue, "ERROR_INVALID_INDEX");
- break;
-
- case ERROR_INSUFFICIENT_BUFFER:
- wsprintf(szValue, "ERROR_INSUFFICIENT_BUFFER - %d bytes required.", dwBuffSize);
- break;
-
- case ERROR_MORE_DATA:
- wsprintf(szValue, "ERROR_MORE_DATA");
- break;
-
- case ERROR_NO_DATA:
- wsprintf(szValue, "ERROR_NO_DATA");
- break;
-
- default:
- wsprintf(szValue, "*** Error %d occured retrieving server variable ***");
- }
- }
-
- wsprintf(szOutput, "%s: %s<br>\r\n", szServerVariable[x], szValue);
- dwBuffSize = strlen(szOutput);
- lpEcb->WriteClient(lpEcb->ConnID, szOutput, &dwBuffSize, 0);
- }
-
- return HSE_STATUS_SUCCESS;
- }
-