На этом шаге мы дополним созданный фильтр.
На этом шаге мы реализуем простую функцию MyFilter::OnReadRawData(). Она вызывает функцию CHttpFilterContext::GetServerVariable() для получения IP-адреса подключенного в текущий момент удаленного сервера и записи этих сведений в журнал.
DWORD CMyFilterFilter::OnReadRawData(CHttpFilterContext* pCtxt, PHTTP_FILTER_RAW_DATA pRawData) { char pchVar[64]; DWORD dwSize = 64; CStdioFile logfile("C:\\iislog.txt", CFile::modeCreate | CFile::modeWrite); BOOL bRet = pCtxt->GetServerVariable( "REMOTE_HOST", pchVar, &dwSize); if(bRet) logfile.Write(pchVar, dwSize); logfile.Close(); return SF_STATUS_REQ_NEXT_NOTIFICATION; }
Созданное приложение можно взять здесь (12,1 Кб).
На следующем шаге мы установим и протестируем созданный фильтр.