STDMETHODIMP CRegistrator::Fiscalization(BSTR FirmID, LONG OldPassword, LONG NewPassword, ULONGLONG MachineRegNum, ULONGLONG TaxpayerIndNum, LONG* ErrorCode) { *ErrorCode = E_SUCCESS; CRegistratorInfo* regInfo = m_RegistratorList.GetInfo(FirmID); if(!regInfo) { *ErrorCode = E_NOT_FOUND; return S_OK; } BYTE nSentMessage[MESSAGE_SIZE], nReceivedMessage[MESSAGE_SIZE]; DWORD dwMessageLen = 0; CHAR lpStr[13]; // формируем текст команды memset(nSentMessage, 0, MESSAGE_SIZE); // текущий пароль memset(lpStr, 0, 13); _itoa(OldPassword, lpStr, 10); memcpy(nSentMessage + dwMessageLen, lpStr, strlen(lpStr)); dwMessageLen += (DWORD)strlen(lpStr); nSentMessage[dwMessageLen++] = FS; // регистрационный номер ККМ memset(lpStr, 0, 13); _ui64toa(MachineRegNum, lpStr, 10); memcpy(nSentMessage + dwMessageLen, lpStr, strlen(lpStr)); dwMessageLen += (DWORD)strlen(lpStr); nSentMessage[dwMessageLen++] = FS; // ИНН memset(lpStr, 0, 13); _ui64toa(TaxpayerIndNum, lpStr, 10); memcpy(nSentMessage + dwMessageLen, lpStr, strlen(lpStr)); dwMessageLen += (DWORD)strlen(lpStr); nSentMessage[dwMessageLen++] = FS; // новый пароль memset(lpStr, 0, 13); _itoa(NewPassword, lpStr, 10); memcpy(nSentMessage + dwMessageLen, lpStr, strlen(lpStr)); dwMessageLen += (DWORD)strlen(lpStr); PassCommand(regInfo->hCommPort, (LPBYTE) "08", nSentMessage, dwMessageLen, nReceivedMessage, ErrorCode); return CheckPaperStatus(regInfo, ErrorCode); }
// convert number to a string in any base in range 2-36 (written by Nick Gammon) // eg. s = bit.tostring (281474976710656, 16) static int bit_tostring (lua_State *L) { Integer n = luaL_checknumber (L, 1); UInteger un = n; int base = luaL_optint(L, 2, 10); char s [70] = "-"; char *p = s; if (n < 0) { un = -n; p++; } if (base != 10) luaL_argcheck(L, 2 <= base && base <= 36, 2, "base out of range"); // The largest mantissa a double can have it 52 bits if (un >= 4503599627370496) // 2^52 luaL_error (L, "Number too big"); _ui64toa (un, p, base); // make upper case to be consistent with utils.tohex for (p = s; *p; p++) *p = toupper (*p); lua_pushstring (L, s); return 1; // number of result fields } // end of bit_tostring
void CInifile::w_u64 ( LPCSTR S, LPCSTR L, u64 V, LPCSTR comment ) { string128 temp; #ifndef _EDITOR _ui64toa_s (V, temp, sizeof(temp), 10); #else _ui64toa (V, temp, 10); #endif w_string (S,L,temp,comment); }
string::string(const uint64_t & ui64Number) { char tmp[32]; #ifdef _WIN32 _ui64toa(ui64Number, tmp, 10); stralloc(tmp, strlen(tmp)); #else int iLen = sprintf(tmp, "%" PRIu64, ui64Number); stralloc(tmp, iLen); #endif }
std::string str(uint64_t value) { char buf[128]; #ifdef USING_VISUAL_2005 if (_i64toa_s(value, buf, sizeof(buf), 10) == 0) return buf; else return ""; #else return _ui64toa(value, buf, 10); #endif //USING_VISUAL_2005 }
void CPageDisk::SetDlgItemInt64(int nID, __int64 nValue, BOOL bSigned, int nRadix) { CString dlgCString; LPSTR lpString = dlgCString.GetBuffer(32); // preallocate enough space unsigned __int64 unValue = (unsigned __int64) nValue; // setup an unsigned version if (bSigned) _i64toa(nValue, lpString, nRadix); else _ui64toa(unValue, lpString, nRadix); SetDlgItemText(nID, lpString); dlgCString.ReleaseBuffer(); }
void perft(char dep) { int start_time, end_time; char num[65]; float time; /*char p0[]="r3k2r/p1ppqpb1/bn2pnp1/3PN3/1p2P3/2N2Q1p/PPPBBPPP/R3K2R w KQkq - 0 1"; char p0[]="8/PPP4k/8/8/8/8/4Kppp/8 w - - ";*/ /*8/2p5/3p4/KP5r/1R3p1k/6P1/4P3/8 b - - 0 1*/ /*char p0[]="8/2p5/3p4/KP5r/1R3p1k/6P1/4P3/8 b - - 0 1";*/ /*8/5kpp/2K5/p5q1/6P1/5P2/8/2q5 w - - 0 53*/ /*char p0[]="8/5kpp/2K5/p5q1/6P1/5P2/8/2q5 w - - 0 53"; char p0[]="8/2p5/3p4/KP5r/1R3p1k/8/4P1P1/8 w - -"; char p0[]="8/2p5/K2p4/1P5r/1R3p1k/8/4P1P1/8 b - - 0 1";//15 char p0[]="8/2p5/3p4/1P5r/KR3p1k/8/4P1P1/8 b - - 0 1";//15----30 char p0[]="8/2p5/3p4/KP5r/R4p1k/8/4P1P1/8 b - - 0 1";//15 char p0[]="8/2p5/3p4/KP5r/5p1k/1R6/4P1P1/8 b - - 0 1";//15 char p0[]="8/2p5/3p4/KP5r/5p1k/8/1R2P1P1/8 b - - 0 1";//16 char p0[]="8/2p5/3p4/KP5r/5p1k/8/4P1P1/1R6 b - - 0 1";//16 char p0[]="8/2p5/3p4/KP5r/2R2p1k/8/4P1P1/8 b - - 0 1";//15 char p0[]="8/2p5/3p4/KP5r/3R1p1k/8/4P1P1/8 b - - 0 1";//15 char p0[]="8/2p5/3p4/KP5r/4Rp1k/8/4P1P1/8 b - - 0 1";//15 char p0[]="8/2p5/3p4/KP5r/5R1k/8/4P1P1/8 b - - 0 1";//2-----109 char p0[]="8/2p5/3p4/KP5r/1R3p1k/4P3/6P1/8 b - - 0 1";//15 char p0[]="8/2p5/3p4/KP5r/1R2Pp1k/8/6P1/8 b - e3 0 1";//17----32 ERROR??? char p0[]="8/2p5/3p4/KP5r/1R3p1k/6P1/4P3/8 b - - 0 1";//4 char p0[]="8/2p5/3p4/KP5r/1R3pPk/8/4P3/8 b - g3 0 1";//18-----22 */ init_board(); /*set_position(p0);*/ init_data(); print_board(); print_bitboard(); start_time = time_elapsed(); perf_t(dep); end_time = time_elapsed(); _ui64toa(Nodes,num,10); time = ((end_time - start_time) / (float)1000); printf("\nmoves %s in %.3f sec.\n", num, time); }
wchar_t * __cdecl _ui64tow ( unsigned __int64 val, wchar_t *buf, int radix ) { char astring[I64_SIZE_LENGTH]; _ui64toa (val, astring, radix); #if defined(_NTSUBSET_) mbstowcs(buf, astring, I64_SIZE_LENGTH); #else MultiByteToWideChar (CP_ACP, MB_PRECOMPOSED, astring, -1, buf, I64_SIZE_LENGTH); #endif return (buf); }
char * SDL_ulltoa(Uint64 value, char *string, int radix) { #if defined(HAVE__UI64TOA) return _ui64toa(value, string, radix); #else char *bufp = string; if (value) { while (value > 0) { *bufp++ = ntoa_table[value % radix]; value /= radix; } } else { *bufp++ = '0'; } *bufp = '\0'; /* The numbers went into the string backwards. :) */ SDL_strrev(string); return string; #endif /* HAVE__UI64TOA */ }
static void ProcessPageOnNotify(WPARAM wParam, LPARAM lParam) { int idctrl; LPNMHDR pnmh; LPNMLISTVIEW pnmv; NMLVDISPINFO* pnmdi; LPNMHEADER pnmhdr; LVITEM lvitem; ULONG Index; ULONG ColumnIndex; IO_COUNTERS iocounters; TIME time; idctrl = (int) wParam; pnmh = (LPNMHDR) lParam; pnmv = (LPNMLISTVIEW) lParam; pnmdi = (NMLVDISPINFO*) lParam; pnmhdr = (LPNMHEADER) lParam; if (pnmh->hwndFrom == hProcessPageListCtrl) { switch (pnmh->code) { #if 0 case LVN_ITEMCHANGED: ProcessPageUpdate(); break; #endif case LVN_GETDISPINFO: if (!(pnmdi->item.mask & LVIF_TEXT)) break; ColumnIndex = pnmdi->item.iSubItem; Index = pnmdi->item.iItem; if (ColumnDataHints[ColumnIndex] == COLUMN_IMAGENAME) PerfDataGetImageName(Index, pnmdi->item.pszText, pnmdi->item.cchTextMax); if (ColumnDataHints[ColumnIndex] == COLUMN_PID) wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetProcessId(Index)); if (ColumnDataHints[ColumnIndex] == COLUMN_USERNAME) PerfDataGetUserName(Index, pnmdi->item.pszText, pnmdi->item.cchTextMax); if (ColumnDataHints[ColumnIndex] == COLUMN_SESSIONID) wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetSessionId(Index)); if (ColumnDataHints[ColumnIndex] == COLUMN_CPUUSAGE) wsprintf(pnmdi->item.pszText, _T("%02d"), PerfDataGetCPUUsage(Index)); if (ColumnDataHints[ColumnIndex] == COLUMN_CPUTIME) { DWORD dwHours; DWORD dwMinutes; DWORD dwSeconds; ULONGLONG secs; time = PerfDataGetCPUTime(Index); secs = time.QuadPart / 10000000; dwHours = secs / 3600; dwMinutes = (secs % 3600) / 60; dwSeconds = (secs % 3600) % 60; wsprintf(pnmdi->item.pszText, _T("%d:%02d:%02d"), dwHours, dwMinutes, dwSeconds); } if (ColumnDataHints[ColumnIndex] == COLUMN_MEMORYUSAGE) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetWorkingSetSizeBytes(Index) / 1024); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); _tcscat(pnmdi->item.pszText, _T(" K")); } if (ColumnDataHints[ColumnIndex] == COLUMN_PEAKMEMORYUSAGE) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetPeakWorkingSetSizeBytes(Index) / 1024); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); _tcscat(pnmdi->item.pszText, _T(" K")); } if (ColumnDataHints[ColumnIndex] == COLUMN_MEMORYUSAGEDELTA) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetWorkingSetSizeDelta(Index) / 1024); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); _tcscat(pnmdi->item.pszText, _T(" K")); } if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEFAULTS) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetPageFaultCount(Index)); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEFAULTSDELTA) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetPageFaultCountDelta(Index)); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_VIRTUALMEMORYSIZE) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetVirtualMemorySizeBytes(Index) / 1024); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); _tcscat(pnmdi->item.pszText, _T(" K")); } if (ColumnDataHints[ColumnIndex] == COLUMN_PAGEDPOOL) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetPagedPoolUsagePages(Index) / 1024); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); _tcscat(pnmdi->item.pszText, _T(" K")); } if (ColumnDataHints[ColumnIndex] == COLUMN_NONPAGEDPOOL) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetNonPagedPoolUsagePages(Index) / 1024); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); _tcscat(pnmdi->item.pszText, _T(" K")); } if (ColumnDataHints[ColumnIndex] == COLUMN_BASEPRIORITY) wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetBasePriority(Index)); if (ColumnDataHints[ColumnIndex] == COLUMN_HANDLECOUNT) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetHandleCount(Index)); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_THREADCOUNT) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetThreadCount(Index)); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_USEROBJECTS) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetUSERObjectCount(Index)); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_GDIOBJECTS) { wsprintf(pnmdi->item.pszText, _T("%d"), PerfDataGetGDIObjectCount(Index)); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_IOREADS) { PerfDataGetIOCounters(Index, &iocounters); /* wsprintf(pnmdi->item.pszText, _T("%d"), iocounters.ReadOperationCount); */ #ifdef UNICODE #define _ui64toa _ui64tow #else #endif _ui64toa(iocounters.ReadOperationCount, pnmdi->item.pszText, 10); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_IOWRITES) { PerfDataGetIOCounters(Index, &iocounters); /* wsprintf(pnmdi->item.pszText, _T("%d"), iocounters.WriteOperationCount); */ _ui64toa(iocounters.WriteOperationCount, pnmdi->item.pszText, 10); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_IOOTHER) { PerfDataGetIOCounters(Index, &iocounters); /* wsprintf(pnmdi->item.pszText, _T("%d"), iocounters.OtherOperationCount); */ _ui64toa(iocounters.OtherOperationCount, pnmdi->item.pszText, 10); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_IOREADBYTES) { PerfDataGetIOCounters(Index, &iocounters); /* wsprintf(pnmdi->item.pszText, _T("%d"), iocounters.ReadTransferCount); */ _ui64toa(iocounters.ReadTransferCount, pnmdi->item.pszText, 10); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_IOWRITEBYTES) { PerfDataGetIOCounters(Index, &iocounters); /* wsprintf(pnmdi->item.pszText, _T("%d"), iocounters.WriteTransferCount); */ _ui64toa(iocounters.WriteTransferCount, pnmdi->item.pszText, 10); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } if (ColumnDataHints[ColumnIndex] == COLUMN_IOOTHERBYTES) { PerfDataGetIOCounters(Index, &iocounters); /* wsprintf(pnmdi->item.pszText, _T("%d"), iocounters.OtherTransferCount); */ _ui64toa(iocounters.OtherTransferCount, pnmdi->item.pszText, 10); CommaSeparateNumberString(pnmdi->item.pszText, pnmdi->item.cchTextMax); } break; case NM_RCLICK: for (Index=0; Index<(ULONG)ListView_GetItemCount(hProcessPageListCtrl); Index++) { memset(&lvitem, 0, sizeof(LVITEM)); lvitem.mask = LVIF_STATE; lvitem.stateMask = LVIS_SELECTED; lvitem.iItem = Index; SendMessage(hProcessPageListCtrl, LVM_GETITEM, 0, (LPARAM) &lvitem); if (lvitem.state & LVIS_SELECTED) break; } if ((ListView_GetSelectedCount(hProcessPageListCtrl) == 1) && (PerfDataGetProcessId(Index) != 0)) { ProcessPageShowContextMenu(PerfDataGetProcessId(Index)); } break; } } else if (pnmh->hwndFrom == hProcessPageHeaderCtrl) { switch (pnmh->code) { case HDN_ITEMCLICK: /* * FIXME: Fix the column sorting * *ListView_SortItems(hApplicationPageListCtrl, ApplicationPageCompareFunc, NULL); *bSortAscending = !bSortAscending; */ break; case HDN_ITEMCHANGED: UpdateColumnDataHints(); break; case HDN_ENDDRAG: UpdateColumnDataHints(); break; } } }
const char *acl_ui64toa(acl_uint64 value, char *buf, size_t size) { if (size < 21) return (NULL); return (_ui64toa(value, buf, 10)); }
char* ltoa(unsigned int value, char* result, int base){_ui64toa(value, result, base);return result;}
char* itoa(int value, char* result, int base){_ui64toa(value, result, base);return result;}
char* ulltoa(unsigned long long _n, char * _c, int _i) { return _ui64toa (_n, _c, _i); }
void u32toa_vc(uint32_t value, char* buffer) { _ui64toa(value, buffer, 10); // No 32-bit unsigned version. }
char *Port::ull_to_string(char *buffer, ulonglong ull) { _ui64toa(ull, buffer, 10); return buffer; }
HRESULT Enumerate() { HRESULT hr; IBaseFilter *pSrc = NULL; CComPtr <IMoniker> pMoniker =NULL; ULONG cFetched; char str_tmp[MAX_PATH]; printf("Enumerating WDM device drivers...\n\n"); // Create the system device enumerator CComPtr <ICreateDevEnum> pDevEnum =NULL; hr = CoCreateInstance (CLSID_SystemDeviceEnum, NULL, CLSCTX_INPROC, IID_ICreateDevEnum, (void ** ) &pDevEnum); if (FAILED(hr)) { printf("Couldn't create system enumerator!\n"); return(hr); } // Create an enumerator for the video capture devices CComPtr <IEnumMoniker> pClassEnum = NULL; hr = pDevEnum->CreateClassEnumerator (CLSID_VideoInputDeviceCategory, &pClassEnum, 0); if (FAILED(hr)) { printf("Couldn't create system enumerator!\n"); return(hr); } // If there are no enumerators for the requested type, then // CreateClassEnumerator will succeed, but pClassEnum will be NULL. if (pClassEnum == NULL) { printf("No video capture hardware detected!\n"); return(E_FAIL); } while(S_OK == (pClassEnum->Next (1, &pMoniker, &cFetched))) { CComPtr<IPropertyBag> pProp; pMoniker->BindToStorage(0, 0, IID_IPropertyBag, (void **)&pProp); VARIANT varName; VariantInit(&varName); hr = pProp->Read(L"FriendlyName", &varName, 0); if(SUCCEEDED(hr)) { strcpy(str_tmp,_bstr_t(varName.bstrVal)); printf("--Device name: %s\n",str_tmp); // Bind Moniker to a filter object hr = pMoniker->BindToObject(0,0,IID_IBaseFilter, (void**)&pSrc); if(FAILED(hr)) { printf(" Error: could not bind to filter object.\n"); goto next; } // ----------------------------------------------------------------------- IAMExtDevice *pExtDev = NULL; //hr = pSrc->QueryInterface(IID_IAMExtDevice, (void**)&pExtDev); hr = 0; if(SUCCEEDED(hr)) { printf(" IAMExtDevice properties:\n"); long l; hr = pExtDev->get_DevicePort(&l); if(SUCCEEDED(hr)) { printf(" DevicePort: %i",l); switch(l) { case(DEV_PORT_1394): printf("IEEE 1394 Bus"); break; default : printf("(%i) non IEEE 1394\n",l); pExtDev->Release(); goto next; break; }; printf("\n"); } LPOLESTR ole_str = NULL; hr = pExtDev->get_ExternalDeviceID(&ole_str); if(SUCCEEDED(hr)) { unsigned __int64 msdv_id = *((unsigned __int64*) ole_str); printf(" ExternalDeviceID: %s (hexadecimal)\n",_ui64toa(msdv_id,str_tmp,16)); printf(" >> Unique 64-bit identifier, as defined by IEEE 1394.\n"); CoTaskMemFree(ole_str); } hr = pExtDev->get_ExternalDeviceVersion(&ole_str); if(SUCCEEDED(hr)) { strcpy(str_tmp,_bstr_t(ole_str)); printf(" ExternalDeviceVersion: %s\n",str_tmp); CoTaskMemFree(ole_str); } hr = pExtDev->get_DevicePower(&l); if(SUCCEEDED(hr)) { printf(" DevicePower: %i",l); switch(l) { case(ED_POWER_OFF): printf("off"); break; case(ED_POWER_ON): printf("on"); break; case(ED_POWER_STANDBY): printf("standby"); break; default : printf("unknown"); break; }; printf("\n"); } pExtDev->Release(); } else { printf(" IAMExtDevice not supported.\n"); } pSrc->Release(); } printf("\n"); next: // LABEL next: VariantClear(&varName); pMoniker = NULL; // Release for the next loop. } pClassEnum->Reset(); return hr; }
REQUEST_NOTIFICATION_STATUS CMyHttpModule::OnBeginRequest( IN IHttpContext * pHttpContext, IN IHttpEventProvider * pProvider ) { HRESULT hr = S_OK; IHttpRequest* pRequest = NULL; MODSECURITY_STORED_CONTEXT* pConfig = NULL; UNREFERENCED_PARAMETER ( pProvider ); EnterCriticalSection(&m_csLock); if ( pHttpContext == NULL ) { hr = E_UNEXPECTED; goto Finished; } pRequest = pHttpContext->GetRequest(); if ( pRequest == NULL ) { hr = E_UNEXPECTED; goto Finished; } hr = MODSECURITY_STORED_CONTEXT::GetConfig(pHttpContext, &pConfig ); if ( FAILED( hr ) ) { //hr = E_UNEXPECTED; hr = S_OK; goto Finished; } // If module is disabled, dont go any further // if( pConfig->GetIsEnabled() == false ) { goto Finished; } // every 3 seconds we check for changes in config file // DWORD ctime = GetTickCount(); if(pConfig->m_Config == NULL || (ctime - pConfig->m_dwLastCheck) > 3000) { char *path; USHORT pathlen; hr = pConfig->GlobalWideCharToMultiByte(pConfig->GetPath(), wcslen(pConfig->GetPath()), &path, &pathlen); if ( FAILED( hr ) ) { hr = E_UNEXPECTED; goto Finished; } WIN32_FILE_ATTRIBUTE_DATA fdata; BOOL ret; ret = GetFileAttributesEx(path, GetFileExInfoStandard, &fdata); pConfig->m_dwLastCheck = ctime; if(pConfig->m_Config == NULL || (ret != 0 && (pConfig->m_LastChange.dwLowDateTime != fdata.ftLastWriteTime.dwLowDateTime || pConfig->m_LastChange.dwHighDateTime != fdata.ftLastWriteTime.dwHighDateTime))) { pConfig->m_LastChange.dwLowDateTime = fdata.ftLastWriteTime.dwLowDateTime; pConfig->m_LastChange.dwHighDateTime = fdata.ftLastWriteTime.dwHighDateTime; pConfig->m_Config = modsecGetDefaultConfig(); PCWSTR servpath = pHttpContext->GetApplication()->GetApplicationPhysicalPath(); char *apppath; USHORT apppathlen; hr = pConfig->GlobalWideCharToMultiByte((WCHAR *)servpath, wcslen(servpath), &apppath, &apppathlen); if ( FAILED( hr ) ) { delete path; hr = E_UNEXPECTED; goto Finished; } if(path[0] != 0) { const char * err = modsecProcessConfig((directory_config *)pConfig->m_Config, path, apppath); if(err != NULL) { WriteEventViewerLog(err, EVENTLOG_ERROR_TYPE); delete apppath; delete path; goto Finished; } } delete apppath; } delete path; } conn_rec *c; request_rec *r; c = modsecNewConnection(); modsecProcessConnection(c); r = modsecNewRequest(c, (directory_config *)pConfig->m_Config); // on IIS we force input stream inspection flag, because its absence does not add any performance gain // it's because on IIS request body must be restored each time it was read // modsecSetConfigForIISRequestBody(r); REQUEST_STORED_CONTEXT *rsc = new REQUEST_STORED_CONTEXT(); rsc->m_pConnRec = c; rsc->m_pRequestRec = r; rsc->m_pHttpContext = pHttpContext; rsc->m_pProvider = pProvider; pHttpContext->GetModuleContextContainer()->SetModuleContext(rsc, g_pModuleContext); StoreIISContext(r, rsc); HTTP_REQUEST *req = pRequest->GetRawHttpRequest(); r->hostname = ConvertUTF16ToUTF8(req->CookedUrl.pHost, req->CookedUrl.HostLength / sizeof(WCHAR), r->pool); r->path_info = ConvertUTF16ToUTF8(req->CookedUrl.pAbsPath, req->CookedUrl.AbsPathLength / sizeof(WCHAR), r->pool); if(r->hostname == NULL) { if(req->Headers.KnownHeaders[HttpHeaderHost].pRawValue != NULL) r->hostname = ZeroTerminate(req->Headers.KnownHeaders[HttpHeaderHost].pRawValue, req->Headers.KnownHeaders[HttpHeaderHost].RawValueLength, r->pool); } int port = 0; char *port_str = NULL; if(r->hostname != NULL) { int k = 0; char *ptr = (char *)r->hostname; while(*ptr != 0 && *ptr != ':') ptr++; if(*ptr == ':') { *ptr = 0; port_str = ptr + 1; port = atoi(port_str); } } if(req->CookedUrl.pQueryString != NULL && req->CookedUrl.QueryStringLength > 0) r->args = ConvertUTF16ToUTF8(req->CookedUrl.pQueryString + 1, (req->CookedUrl.QueryStringLength / sizeof(WCHAR)) - 1, r->pool); #define _TRANSHEADER(id,str) if(req->Headers.KnownHeaders[id].pRawValue != NULL) \ {\ apr_table_setn(r->headers_in, str, \ ZeroTerminate(req->Headers.KnownHeaders[id].pRawValue, req->Headers.KnownHeaders[id].RawValueLength, r->pool)); \ } _TRANSHEADER(HttpHeaderCacheControl, "Cache-Control"); _TRANSHEADER(HttpHeaderConnection, "Connection"); _TRANSHEADER(HttpHeaderDate, "Date"); _TRANSHEADER(HttpHeaderKeepAlive, "Keep-Alive"); _TRANSHEADER(HttpHeaderPragma, "Pragma"); _TRANSHEADER(HttpHeaderTrailer, "Trailer"); _TRANSHEADER(HttpHeaderTransferEncoding, "Transfer-Encoding"); _TRANSHEADER(HttpHeaderUpgrade, "Upgrade"); _TRANSHEADER(HttpHeaderVia, "Via"); _TRANSHEADER(HttpHeaderWarning, "Warning"); _TRANSHEADER(HttpHeaderAllow, "Allow"); _TRANSHEADER(HttpHeaderContentLength, "Content-Length"); _TRANSHEADER(HttpHeaderContentType, "Content-Type"); _TRANSHEADER(HttpHeaderContentEncoding, "Content-Encoding"); _TRANSHEADER(HttpHeaderContentLanguage, "Content-Language"); _TRANSHEADER(HttpHeaderContentLocation, "Content-Location"); _TRANSHEADER(HttpHeaderContentMd5, "Content-Md5"); _TRANSHEADER(HttpHeaderContentRange, "Content-Range"); _TRANSHEADER(HttpHeaderExpires, "Expires"); _TRANSHEADER(HttpHeaderLastModified, "Last-Modified"); _TRANSHEADER(HttpHeaderAccept, "Accept"); _TRANSHEADER(HttpHeaderAcceptCharset, "Accept-Charset"); _TRANSHEADER(HttpHeaderAcceptEncoding, "Accept-Encoding"); _TRANSHEADER(HttpHeaderAcceptLanguage, "Accept-Language"); _TRANSHEADER(HttpHeaderAuthorization, "Authorization"); _TRANSHEADER(HttpHeaderCookie, "Cookie"); _TRANSHEADER(HttpHeaderExpect, "Expect"); _TRANSHEADER(HttpHeaderFrom, "From"); _TRANSHEADER(HttpHeaderHost, "Host"); _TRANSHEADER(HttpHeaderIfMatch, "If-Match"); _TRANSHEADER(HttpHeaderIfModifiedSince, "If-Modified-Since"); _TRANSHEADER(HttpHeaderIfNoneMatch, "If-None-Match"); _TRANSHEADER(HttpHeaderIfRange, "If-Range"); _TRANSHEADER(HttpHeaderIfUnmodifiedSince, "If-Unmodified-Since"); _TRANSHEADER(HttpHeaderMaxForwards, "Max-Forwards"); _TRANSHEADER(HttpHeaderProxyAuthorization, "Proxy-Authorization"); _TRANSHEADER(HttpHeaderReferer, "Referer"); _TRANSHEADER(HttpHeaderRange, "Range"); _TRANSHEADER(HttpHeaderTe, "TE"); _TRANSHEADER(HttpHeaderTranslate, "Translate"); _TRANSHEADER(HttpHeaderUserAgent, "User-Agent"); #undef _TRANSHEADER for(int i = 0; i < req->Headers.UnknownHeaderCount; i++) { apr_table_setn(r->headers_in, ZeroTerminate(req->Headers.pUnknownHeaders[i].pName, req->Headers.pUnknownHeaders[i].NameLength, r->pool), ZeroTerminate(req->Headers.pUnknownHeaders[i].pRawValue, req->Headers.pUnknownHeaders[i].RawValueLength, r->pool)); } r->content_encoding = apr_table_get(r->headers_in, "Content-Encoding"); r->content_type = apr_table_get(r->headers_in, "Content-Type"); const char *lng = apr_table_get(r->headers_in, "Content-Languages"); if(lng != NULL) { r->content_languages = apr_array_make(r->pool, 1, sizeof(const char *)); *(const char **)apr_array_push(r->content_languages) = lng; } switch(req->Verb) { case HttpVerbUnparsed: case HttpVerbUnknown: case HttpVerbInvalid: case HttpVerbTRACK: // used by Microsoft Cluster Server for a non-logged trace case HttpVerbSEARCH: default: r->method = "INVALID"; r->method_number = M_INVALID; break; case HttpVerbOPTIONS: r->method = "OPTIONS"; r->method_number = M_OPTIONS; break; case HttpVerbGET: case HttpVerbHEAD: r->method = "GET"; r->method_number = M_GET; break; case HttpVerbPOST: r->method = "POST"; r->method_number = M_POST; break; case HttpVerbPUT: r->method = "PUT"; r->method_number = M_PUT; break; case HttpVerbDELETE: r->method = "DELETE"; r->method_number = M_DELETE; break; case HttpVerbTRACE: r->method = "TRACE"; r->method_number = M_TRACE; break; case HttpVerbCONNECT: r->method = "CONNECT"; r->method_number = M_CONNECT; break; case HttpVerbMOVE: r->method = "MOVE"; r->method_number = M_MOVE; break; case HttpVerbCOPY: r->method = "COPY"; r->method_number = M_COPY; break; case HttpVerbPROPFIND: r->method = "PROPFIND"; r->method_number = M_PROPFIND; break; case HttpVerbPROPPATCH: r->method = "PROPPATCH"; r->method_number = M_PROPPATCH; break; case HttpVerbMKCOL: r->method = "MKCOL"; r->method_number = M_MKCOL; break; case HttpVerbLOCK: r->method = "LOCK"; r->method_number = M_LOCK; break; case HttpVerbUNLOCK: r->method = "UNLOCK"; r->method_number = M_UNLOCK; break; } if(HTTP_EQUAL_VERSION(req->Version, 0, 9)) r->protocol = "HTTP/0.9"; else if(HTTP_EQUAL_VERSION(req->Version, 1, 0)) r->protocol = "HTTP/1.0"; else r->protocol = "HTTP/1.1"; r->request_time = apr_time_now(); r->parsed_uri.scheme = "http"; r->parsed_uri.path = r->path_info; r->parsed_uri.hostname = (char *)r->hostname; r->parsed_uri.is_initialized = 1; r->parsed_uri.port = port; r->parsed_uri.port_str = port_str; r->parsed_uri.query = r->args; r->parsed_uri.dns_looked_up = 0; r->parsed_uri.dns_resolved = 0; r->parsed_uri.password = NULL; r->parsed_uri.user = NULL; r->parsed_uri.fragment = NULL; r->unparsed_uri = ZeroTerminate(req->pRawUrl, req->RawUrlLength, r->pool); r->uri = r->unparsed_uri; r->the_request = (char *)apr_palloc(r->pool, strlen(r->method) + 1 + req->RawUrlLength + 1 + strlen(r->protocol) + 1); strcpy(r->the_request, r->method); strcat(r->the_request, " "); strcat(r->the_request, r->uri); strcat(r->the_request, " "); strcat(r->the_request, r->protocol); HTTP_REQUEST_ID httpRequestID; char *pszValue = (char *)apr_palloc(r->pool, 24); httpRequestID = pRequest->GetRawHttpRequest()->RequestId; _ui64toa(httpRequestID, pszValue, 10); apr_table_setn(r->subprocess_env, "UNIQUE_ID", pszValue); PSOCKADDR pAddr = pRequest->GetRemoteAddress(); #if AP_SERVER_MAJORVERSION_NUMBER > 1 && AP_SERVER_MINORVERSION_NUMBER < 3 c->remote_addr = CopySockAddr(r->pool, pAddr); c->remote_ip = GetIpAddr(r->pool, pAddr); #else c->client_addr = CopySockAddr(r->pool, pAddr); c->client_ip = GetIpAddr(r->pool, pAddr); #endif c->remote_host = NULL; int status = modsecProcessRequest(r); if(status != DECLINED) { pHttpContext->GetResponse()->SetStatus(status, "ModSecurity Action"); pHttpContext->SetRequestHandled(); hr = E_FAIL; goto Finished; } Finished: LeaveCriticalSection(&m_csLock); if ( FAILED( hr ) ) { return RQ_NOTIFICATION_FINISH_REQUEST; } return RQ_NOTIFICATION_CONTINUE; }
void u64toa_vc(uint64_t value, char* buffer) { _ui64toa(value, buffer, 10); }