📄 httpisapi.cpp
字号:
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "REQUEST_METHOD") == 0)
{
char* szVerb = T2A((LPTSTR) (LPCTSTR) pClient->m_Request.m_sVerb);
DWORD dwSize = strlen(szVerb) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szVerb);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "SERVER_NAME") == 0)
{
char* szServerName = NULL;
char szHostName[256];
if (pSettings->m_sBindAddress.GetLength())
szServerName = T2A((LPTSTR) (LPCTSTR) pSettings->m_sBindAddress);
else
{
if (gethostname(szHostName, 256) == 0)
szServerName = szHostName;
else
szServerName = "";
}
DWORD dwSize = strlen(szServerName) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szServerName);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "HTTPS") == 0)
{
char szHTTPS[10];
#ifdef W3MFC_SSL_SUPPORT
if (pSettings->m_SSLProtocol == CHttpServerSettings::SSL_NONE)
strcpy(szHTTPS, "off");
else
strcpy(szHTTPS, "on");
#else
strcpy(szHTTPS, "off");
#endif
DWORD dwSize = strlen(szHTTPS) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szHTTPS);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "AUTH_TYPE") == 0)
{
char szType[10];
if (pClient->m_Request.m_AuthorizationType == CHttpRequest::HTTP_AUTHORIZATION_PLAINTEXT)
strcpy(szType, "Basic");
else if (pClient->m_Request.m_AuthorizationType == CHttpRequest::HTTP_AUTHORIZATION_NTLM)
strcpy(szType, "NTLM");
else
strcpy(szType, "");
DWORD dwSize = strlen(szType) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szType);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else if ((strcmpi(lpszVariableName, "AUTH_PASSWORD") == 0) ||
(strcmpi(lpszVariableName, "REMOTE_PASSWORD") == 0))
{
if (pClient->m_Request.m_sPassword.GetLength())
{
char* szPassword = T2A((LPTSTR) (LPCTSTR) pClient->m_Request.m_sPassword);
DWORD dwSize = strlen(szPassword) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szPassword);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else
{
SetLastError(ERROR_NO_DATA);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "AUTH_REALM") == 0)
{
if (pClient->m_Request.m_AuthorizationType == CHttpRequest::HTTP_AUTHORIZATION_PLAINTEXT)
{
char* szRealm = T2A((LPTSTR) (LPCTSTR) pClient->m_Request.m_sURL);
DWORD dwSize = strlen(szRealm) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szRealm);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else
{
SetLastError(ERROR_NO_DATA);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "CONTENT_LENGTH") == 0)
{
if (pClient->m_Request.m_nContentLength)
{
char szContentLength[10];
sprintf(szContentLength, "%d", pClient->m_Request.m_nContentLength);
DWORD dwSize = strlen(szContentLength) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szContentLength);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else
{
SetLastError(ERROR_NO_DATA);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "CONTENT_TYPE") == 0)
{
if (pClient->m_Request.m_sContentType.GetLength())
{
char* szContentType = T2A((LPTSTR) (LPCTSTR) pClient->m_Request.m_sContentType);
DWORD dwSize = strlen(szContentType) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szContentType);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else
{
SetLastError(ERROR_NO_DATA);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "LOGON_USER") == 0)
{
if (pClient->m_Request.m_bLoggedOn)
{
char* szUser = T2A((LPTSTR) (LPCTSTR) pClient->m_Request.m_sUsername);
DWORD dwSize = strlen(szUser) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szUser);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else if (pSettings->m_sUsername.GetLength())
{
char* szUser = T2A((LPTSTR) (LPCTSTR) pSettings->m_sUsername);
DWORD dwSize = strlen(szUser) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szUser);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else
{
SetLastError(ERROR_NO_DATA);
bSuccess = FALSE;
}
}
else if ((strcmpi(lpszVariableName, "HTTPS_SERVER_SUBJECT") == 0) ||
(strcmpi(lpszVariableName, "CERT_SERVER_SUBJECT") == 0))
{
char* szSubject = NULL;
if (pClient->GetCertIssuerServerVariable(szSubject))
{
DWORD dwSize = strlen(szSubject) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szSubject);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else
{
SetLastError(ERROR_NO_DATA);
bSuccess = FALSE;
}
}
else if ((strcmpi(lpszVariableName, "HTTPS_SERVER_ISSUER") == 0) ||
(strcmpi(lpszVariableName, "CERT_SERVER_ISSUER") == 0))
{
char* szIssuer = NULL;
if (pClient->GetCertIssuerServerVariable(szIssuer))
{
DWORD dwSize = strlen(szIssuer) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szIssuer);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else
{
SetLastError(ERROR_NO_DATA);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "CERT_SERIALNUMBER") == 0)
{
long nSerialNumber = 0;
if (pClient->GetCertSerialNumberServerVariable(nSerialNumber))
{
char szSerialNumber[10];
sprintf(szSerialNumber, "%d", nSerialNumber);
DWORD dwSize = strlen(szSerialNumber) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szSerialNumber);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else
{
SetLastError(ERROR_NO_DATA);
bSuccess = FALSE;
}
}
else if ((strcmpi(lpszVariableName, "HTTPS_SECRETKEYSIZE") == 0) ||
(strcmpi(lpszVariableName, "CERT_SECRETKEYSIZE") == 0))
{
int nBits = 0;
if (pClient->GetServerKeySizeServerVariable(nBits))
{
char szBits[10];
sprintf(szBits, "%d", nBits);
DWORD dwSize = strlen(szBits) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szBits);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else
{
SetLastError(ERROR_NO_DATA);
bSuccess = FALSE;
}
}
else if ((strcmpi(lpszVariableName, "HTTPS_KEYSIZE") == 0) ||
(strcmpi(lpszVariableName, "CERT_KEYSIZE") == 0))
{
int nBits = 0;
if (pClient->GetKeySizeServerVariable(nBits))
{
char szBits[10];
sprintf(szBits, "%d", nBits);
DWORD dwSize = strlen(szBits) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szBits);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else
{
SetLastError(ERROR_NO_DATA);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "PATH_TRANSLATED") == 0)
{
LPTSTR pszFilePart;
TCHAR pszAbsolutePath[_MAX_PATH];
GetFullPathName(pClient->m_Request.m_sLocalFile, _MAX_PATH, pszAbsolutePath, &pszFilePart);
char* szAbsolutePath = T2A(pszAbsolutePath);
DWORD dwSize = strlen(szAbsolutePath) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szAbsolutePath);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "SCRIPT_NAME") == 0)
{
CString sScriptName = pClient->m_Request.m_sLocalFile;
sScriptName.Replace(_T('\\'), _T('/')); //Ensure we use unix directory separators
if (sScriptName.GetLength() && sScriptName.GetAt(0) != _T('/'))
sScriptName = _T("/") + sScriptName;
char* szScriptName = T2A((LPTSTR) (LPCTSTR) sScriptName);
DWORD dwSize = strlen(szScriptName) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szScriptName);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "REQUEST_LINE") == 0)
{
char* szRequest = T2A((LPTSTR) (LPCTSTR) pClient->m_Request.m_sRequest);
DWORD dwSize = strlen(szRequest) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, szRequest);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "ALL_HTTP") == 0)
{
CString sAllHeaders;
POSITION posMap = pClient->m_Request.m_HeaderMap.GetStartPosition();
while (posMap)
{
CString sKey;
CString sValue;
pClient->m_Request.m_HeaderMap.GetNextAssoc(posMap, sKey, sValue);
CString sLine;
if (posMap)
sLine.Format(_T("HTTP_%s=%s\n"), sKey, sValue);
else
sLine.Format(_T("HTTP_%s=%s"), sKey, sValue);
sAllHeaders += sLine;
}
char* pszAllHeaders = T2A((LPTSTR) (LPCTSTR) sAllHeaders);
DWORD dwSize = strlen(pszAllHeaders) + 1;
if (*lpdwBufferSize >= dwSize)
{
strcpy((char*) lpBuffer, pszAllHeaders);
*lpdwBufferSize = dwSize;
}
else
{
SetLastError(ERROR_INSUFFICIENT_BUFFER);
bSuccess = FALSE;
}
}
else if (strcmpi(lpszVariableName, "ALL_RAW") == 0)
{
DWORD dwSize = 0;
if (pClient->m_Request.m_pRawEntity)
dwSize = pClient->m_Request.m_pRawEntity - pClient->m_Request.m_pRawRequest + 1;
else
dwSize = pClient->m_Request.m_dwRawRequestSize;
if (*lpdwBufferSize >= dwSize)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -