mirror of
https://github.com/SChernykh/p2pool.git
synced 2024-11-17 00:07:47 +00:00
306 lines
6.8 KiB
Python
306 lines
6.8 KiB
Python
# This file is part of the Monero P2Pool <https://github.com/SChernykh/p2pool>
|
|
# Copyright (c) 2021-2024 SChernykh <https://github.com/SChernykh>
|
|
#
|
|
# This program is free software: you can redistribute it and/or modify
|
|
# it under the terms of the GNU General Public License as published by
|
|
# the Free Software Foundation, version 3.
|
|
#
|
|
# This program is distributed in the hope that it will be useful, but
|
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
# General Public License for more details.
|
|
#
|
|
# You should have received a copy of the GNU General Public License
|
|
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
import sys
|
|
|
|
allowedAPIs = {
|
|
"getaddrinfo",
|
|
"freeaddrinfo",
|
|
"WSAPoll",
|
|
"WSACreateEvent",
|
|
"WSACloseEvent",
|
|
"WSARecvFrom",
|
|
"WSASend",
|
|
"WSARecv",
|
|
"WSADuplicateSocketW",
|
|
"WSASocketW",
|
|
"WSAIoctl",
|
|
"getnameinfo",
|
|
"WSASocketA",
|
|
"GetAdaptersAddresses",
|
|
"GetBestInterface",
|
|
"DnsFree",
|
|
"LoadLibraryExW",
|
|
"RtlPcToFileHeader",
|
|
"RtlUnwindEx",
|
|
"GetCPInfo",
|
|
"GetStringTypeW",
|
|
"GetDriveTypeW",
|
|
"DecodePointer",
|
|
"EncodePointer",
|
|
"FreeLibraryAndExitThread",
|
|
"SystemTimeToTzSpecificLocalTime",
|
|
"CreateThread",
|
|
"LCMapStringEx",
|
|
"ExitThread",
|
|
"GetModuleHandleExW",
|
|
"SetStdHandle",
|
|
"FlsFree",
|
|
"FlsSetValue",
|
|
"FlsGetValue",
|
|
"SetFilePointer",
|
|
"SetEndOfFile",
|
|
"UnmapViewOfFile",
|
|
"GetLastError",
|
|
"FlushViewOfFile",
|
|
"CreateFileA",
|
|
"CloseHandle",
|
|
"CreateFileMappingA",
|
|
"MapViewOfFile",
|
|
"FlushFileBuffers",
|
|
"GetStdHandle",
|
|
"WriteConsoleA",
|
|
"SetConsoleMode",
|
|
"GetConsoleMode",
|
|
"FormatMessageA",
|
|
"SetThreadPriority",
|
|
"GetCurrentThread",
|
|
"SetThreadPriorityBoost",
|
|
"IsDebuggerPresent",
|
|
"Sleep",
|
|
"RaiseException",
|
|
"InitializeCriticalSection",
|
|
"EnterCriticalSection",
|
|
"LeaveCriticalSection",
|
|
"DeleteCriticalSection",
|
|
"QueryPerformanceCounter",
|
|
"QueryPerformanceFrequency",
|
|
"GetTickCount",
|
|
"FreeLibrary",
|
|
"GetProcAddress",
|
|
"LoadLibraryA",
|
|
"SetHandleInformation",
|
|
"WaitForSingleObject",
|
|
"GetCurrentThreadId",
|
|
"TryEnterCriticalSection",
|
|
"GetCurrentProcessId",
|
|
"GetHandleInformation",
|
|
"SetLastError",
|
|
"CreateIoCompletionPort",
|
|
"GetQueuedCompletionStatusEx",
|
|
"InitializeSRWLock",
|
|
"ReleaseSRWLockExclusive",
|
|
"ReleaseSRWLockShared",
|
|
"AcquireSRWLockExclusive",
|
|
"AcquireSRWLockShared",
|
|
"InitOnceExecuteOnce",
|
|
"GetTickCount64",
|
|
"GetModuleHandleW",
|
|
"SetFileCompletionNotificationModes",
|
|
"WideCharToMultiByte",
|
|
"DuplicateHandle",
|
|
"TryAcquireSRWLockShared",
|
|
"InitializeConditionVariable",
|
|
"WakeConditionVariable",
|
|
"WakeAllConditionVariable",
|
|
"SleepConditionVariableCS",
|
|
"SetEvent",
|
|
"ReleaseSemaphore",
|
|
"CreateEventA",
|
|
"GetCurrentProcess",
|
|
"ResumeThread",
|
|
"TlsAlloc",
|
|
"TlsGetValue",
|
|
"TlsSetValue",
|
|
"TlsFree",
|
|
"GetNativeSystemInfo",
|
|
"CreateSemaphoreA",
|
|
"GetFileType",
|
|
"PostQueuedCompletionStatus",
|
|
"CreateFileW",
|
|
"ResetEvent",
|
|
"QueueUserWorkItem",
|
|
"GetFileAttributesExW",
|
|
"UnregisterWait",
|
|
"GetNumberOfConsoleInputEvents",
|
|
"ReadConsoleInputW",
|
|
"ReadConsoleW",
|
|
"WriteConsoleW",
|
|
"FillConsoleOutputCharacterW",
|
|
"FillConsoleOutputAttribute",
|
|
"GetConsoleCursorInfo",
|
|
"SetConsoleCursorInfo",
|
|
"GetConsoleScreenBufferInfo",
|
|
"SetConsoleCursorPosition",
|
|
"SetConsoleTextAttribute",
|
|
"WriteConsoleInputW",
|
|
"ReadFile",
|
|
"WriteFile",
|
|
"ConnectNamedPipe",
|
|
"SetNamedPipeHandleState",
|
|
"PeekNamedPipe",
|
|
"CreateNamedPipeW",
|
|
"CancelIoEx",
|
|
"CancelSynchronousIo",
|
|
"SwitchToThread",
|
|
"LocalFree",
|
|
"GetNamedPipeHandleStateA",
|
|
"GetNamedPipeClientProcessId",
|
|
"GetNamedPipeServerProcessId",
|
|
"MultiByteToWideChar",
|
|
"SetConsoleCtrlHandler",
|
|
"SetErrorMode",
|
|
"GetQueuedCompletionStatus",
|
|
"CreateDirectoryW",
|
|
"FindClose",
|
|
"FindFirstFileW",
|
|
"FindNextFileW",
|
|
"RtlUnwind",
|
|
"GetFileAttributesW",
|
|
"GetFileInformationByHandle",
|
|
"GetFileSizeEx",
|
|
"GetFinalPathNameByHandleW",
|
|
"GetFullPathNameW",
|
|
"RemoveDirectoryW",
|
|
"SetFilePointerEx",
|
|
"SetFileTime",
|
|
"DeviceIoControl",
|
|
"GetSystemInfo",
|
|
"GetSystemTimeAsFileTime",
|
|
"ReOpenFile",
|
|
"CopyFileW",
|
|
"MoveFileExW",
|
|
"CreateHardLinkW",
|
|
"GetFileInformationByHandleEx",
|
|
"CreateSymbolicLinkW",
|
|
"CancelIo",
|
|
"DebugBreak",
|
|
"GetCurrentDirectoryW",
|
|
"TerminateProcess",
|
|
"GetExitCodeProcess",
|
|
"UnregisterWaitEx",
|
|
"LCMapStringW",
|
|
"GetLongPathNameW",
|
|
"ReadDirectoryChangesW",
|
|
"GetEnvironmentStringsW",
|
|
"FreeEnvironmentStringsW",
|
|
"SetEnvironmentVariableW",
|
|
"GetModuleFileNameW",
|
|
"FileTimeToSystemTime",
|
|
"GetModuleHandleA",
|
|
"LoadLibraryExA",
|
|
"GetStartupInfoW",
|
|
"FormatMessageW",
|
|
"InitializeCriticalSectionEx",
|
|
"GetSystemDirectoryA",
|
|
"WaitForSingleObjectEx",
|
|
"GetEnvironmentVariableA",
|
|
"SleepEx",
|
|
"VerSetConditionMask",
|
|
"VerifyVersionInfoW",
|
|
"VirtualProtect",
|
|
"VirtualFree",
|
|
"VirtualAlloc",
|
|
"GetLargePageMinimum",
|
|
"HeapFree",
|
|
"HeapAlloc",
|
|
"GetProcessHeap",
|
|
"FlsAlloc",
|
|
"SleepConditionVariableSRW",
|
|
"GetExitCodeThread",
|
|
"InitializeSListHead",
|
|
"CreateEventW",
|
|
"InitializeCriticalSectionAndSpinCount",
|
|
"IsProcessorFeaturePresent",
|
|
"SetUnhandledExceptionFilter",
|
|
"UnhandledExceptionFilter",
|
|
"RtlVirtualUnwind",
|
|
"RtlLookupFunctionEntry",
|
|
"SetFileAttributesW",
|
|
"GetConsoleOutputCP",
|
|
"ExitProcess",
|
|
"GetCommandLineA",
|
|
"GetCommandLineW",
|
|
"GetDateFormatW",
|
|
"GetTimeFormatW",
|
|
"CompareStringW",
|
|
"GetLocaleInfoW",
|
|
"IsValidLocale",
|
|
"GetUserDefaultLCID",
|
|
"EnumSystemLocalesW",
|
|
"HeapReAlloc",
|
|
"HeapSize",
|
|
"FindFirstFileExW",
|
|
"IsValidCodePage",
|
|
"GetACP",
|
|
"GetOEMCP",
|
|
"GetTimeZoneInformation",
|
|
"RegisterWaitForSingleObject",
|
|
"GetDiskFreeSpaceW",
|
|
"RtlCaptureContext",
|
|
"GetMessageA",
|
|
"GetSystemMetrics",
|
|
"MapVirtualKeyW",
|
|
"DispatchMessageA",
|
|
"TranslateMessage",
|
|
"AdjustTokenPrivileges",
|
|
"LookupPrivilegeValueA",
|
|
"CryptDestroyHash",
|
|
"CryptHashData",
|
|
"CryptCreateHash",
|
|
"CryptGetHashParam",
|
|
"CryptReleaseContext",
|
|
"CryptAcquireContextA",
|
|
"SystemFunction036",
|
|
"OpenProcessToken",
|
|
"SetSecurityDescriptorDacl",
|
|
"InitializeSecurityDescriptor",
|
|
"BCryptGenRandom",
|
|
"GetConsoleCP",
|
|
"DeleteFileW",
|
|
"GetTempPathW",
|
|
"WSAConnect",
|
|
"WSAGetOverlappedResult",
|
|
"GetBestRoute2",
|
|
"FreeMibTable",
|
|
"GetUnicastIpAddressTable",
|
|
"SymFromAddr",
|
|
"RegEnumKeyExA",
|
|
"RegQueryValueExA",
|
|
"RegOpenKeyExA",
|
|
"RegGetValueA",
|
|
"RegCloseKey",
|
|
"GetLocaleInfoEx",
|
|
"ExpandEnvironmentStringsA",
|
|
"GetWindowsDirectoryA",
|
|
"GetVersionExA",
|
|
"LoadLibraryW",
|
|
"GetCurrentProcessorNumber",
|
|
"OutputDebugStringA",
|
|
"GetLogicalProcessorInformation",
|
|
"InitOnceComplete",
|
|
"InitOnceBeginInitialize",
|
|
"BCryptOpenAlgorithmProvider",
|
|
"BCryptCloseAlgorithmProvider",
|
|
}
|
|
|
|
f = open(sys.argv[1], 'r')
|
|
lines = f.readlines()
|
|
f.close()
|
|
|
|
exit_code = 0
|
|
count = 0
|
|
|
|
for line in lines:
|
|
count += 1
|
|
api = line[29:].strip()
|
|
if api not in allowedAPIs:
|
|
print('API call "{}" is not checked for Windows 7 compatibility. Check it and then add it to the list in tests/src/check_win7.py'.format(api))
|
|
exit_code = 1
|
|
|
|
if exit_code == 0:
|
|
print('{} imports checked successfully'.format(count))
|
|
|
|
sys.exit(exit_code)
|