50 #ifdef USE_CERT_PINNING 51 #define CERT_ISSUER_INFO "US\r\nLet's Encrypt\r\nLet's Encrypt Authority X3" 52 #define CERT_SUBJECT_INFO "rapps.reactos.org" 68 szString.LoadStringW(StatusParam);
76 :
szUrl(AppInfo.m_szUrlDownload),
szName(AppInfo.m_szName),
szSHA1(AppInfo.m_szSHA1)
100 :
public CWindowImpl<CDownloaderProgress, CWindow, CControlWinTraits>
132 WCHAR szProgressMax[100];
133 UINT uiPercentage = ((
ULONGLONG) ulProgress * 100) / ulProgressMax;
142 ProgressText.
Format(
L"%u%% \x2014 %ls / %ls",
167 UINT win_width, win_height;
227 RECT r = {10, 150, 320, 350};
261 Item.
iItem = ItemIndex;
288 #ifdef USE_CERT_PINNING 291 static BOOL CertGetSubjectAndIssuer(
HINTERNET hFile, CLocalPtr& subjectInfo, CLocalPtr& issuerInfo)
293 DWORD certInfoLength;
309 certInfoLength =
sizeof(certInfo);
335 if (szMsgText.LoadStringW(StringID))
421 szTempCaption = szCaption;
503 HWND hDlg = static_cast<DownloadParam*>(
param)->Dialog;
508 ULONG dwCurrentBytesRead = 0;
521 size_t urlLength, filenameLength;
524 LPCWSTR szCaption = static_cast<DownloadParam*>(
param)->szCaption;
535 for (iAppId = 0; iAppId < InfoArray.
GetSize(); ++iAppId)
562 szNewCaption.
Format(szCaption, InfoArray[iAppId].
szName.GetString());
572 p =
wcsrchr(InfoArray[iAppId].szUrl.GetString(),
L'/');
573 q =
wcsrchr(InfoArray[iAppId].szUrl.GetString(),
L'?');
584 if (
q &&
q >
p && (
q -
p) > 0)
634 memset(&urlComponents, 0,
sizeof(urlComponents));
637 urlLength = InfoArray[iAppId].szUrl.GetLength();
697 #ifdef USE_CERT_PINNING 704 bool bAskQuestion =
false;
713 strcmp(issuerName, CERT_ISSUER_INFO))
735 dwCurrentBytesRead = 0;
750 dwCurrentBytesRead += dwBytesRead;
751 UpdateProgress(hDlg, dwCurrentBytesRead, dwContentLen, 0, InfoArray[iAppId].szUrl.GetString());
765 dwContentLen = dwCurrentBytesRead;
766 UpdateProgress(hDlg, dwCurrentBytesRead, dwContentLen, 0, InfoArray[iAppId].szUrl.GetString());
771 if (!bCab && InfoArray[iAppId].szSHA1[0] != 0)
783 if (!
VerifyInteg(InfoArray[iAppId].szSHA1.GetString(),
Path.GetString()))
800 shExInfo.
cbSize =
sizeof(shExInfo);
842 delete static_cast<DownloadParam*>(
param);
897 DatabaseDLInfo.
szUrl = lpUrl;
#define HTTP_QUERY_CONTENT_LENGTH
BOOL WINAPI CreateDirectoryW(IN LPCWSTR lpPathName, IN LPSECURITY_ATTRIBUTES lpSecurityAttributes)
LPWSTR WINAPI StrFormatByteSizeW(LONGLONG llBytes, LPWSTR lpszDest, UINT cchMax)
BOOL WINAPI WriteFile(IN HANDLE hFile, IN LPCVOID lpBuffer, IN DWORD nNumberOfBytesToWrite OPTIONAL, OUT LPDWORD lpNumberOfBytesWritten, IN LPOVERLAPPED lpOverlapped OPTIONAL)
#define IDS_DL_DIALOG_DB_DOWNLOAD_DISP
VOID DownloadApplicationsDB(LPCWSTR lpUrl)
BOOL DownloadApplication(CAvailableApplicationInfo *pAppInfo, BOOL bIsModal)
#define APPLICATION_DATABASE_URL
#define IDS_STATUS_INSTALLED
BOOL VerifyInteg(LPCWSTR lpSHA1Hash, LPCWSTR lpFileName)
#define IDS_DL_DIALOG_DB_DISP
static VOID Download(const DownloadInfo &DLInfo, BOOL bIsModal=FALSE)
#define LVS_NOCOLUMNHEADER
#define IDD_DOWNLOAD_DIALOG
#define LVS_SHOWSELALWAYS
HBITMAP WINAPI CreateCompatibleBitmap(_In_ HDC hdc, _In_ INT cx, _In_ INT cy)
GLenum GLuint GLenum GLsizei const GLchar * buf
#define SEE_MASK_NOCLOSEPROCESS
static BYTE subjectName[]
GLdouble GLdouble GLdouble r
#define IDS_MISMATCH_CERT_INFO
#define INTERNET_OPTION_SECURITY_CERTIFICATE_STRUCT
LPSTR lpszEncryptionAlgName
_In_ ULONGLONG _In_ ULONGLONG _In_ BOOLEAN Enable
#define INTERNET_OPEN_TYPE_PROXY
HGDIOBJ WINAPI SelectObject(_In_ HDC, _In_ HGDIOBJ)
static VOID LaunchDownloadDialog(BOOL)
#define INVALID_HANDLE_VALUE
#define IDS_UNABLE_TO_WRITE
#define COLOR_CAPTIONTEXT
BOOL WINAPI DeleteObject(_In_ HGDIOBJ)
VOID SetProgress(ULONG ulProgress, ULONG ulProgressMax)
void __cdecl Format(UINT nFormatID,...)
BOOL WINAPI InternetCloseHandle(HINTERNET hInternet)
HDC WINAPI CreateCompatibleDC(_In_opt_ HDC hdc)
BOOL WINAPI InternetCanonicalizeUrlW(LPCWSTR lpszUrl, LPWSTR lpszBuffer, LPDWORD lpdwBufferLength, DWORD dwFlags)
#define IDS_STATUS_DOWNLOADING
BOOL WINAPI SetWindowTextW(_In_ HWND, _In_opt_ LPCWSTR)
void EndPaint(LPPAINTSTRUCT lpPaint)
#define IDS_STATUS_INSTALLING
#define IDS_UNABLE_TO_DOWNLOAD
BOOL WINAPI ShowWindow(_In_ HWND, _In_ int)
HWND Create(HWND hWndParent, _U_RECT rect, LPCTSTR szWindowName=NULL, DWORD dwStyle=0, DWORD dwExStyle=0, _U_MENUorID MenuOrID=0U, LPVOID lpCreateParam=NULL)
#define INTERNET_FLAG_DONT_CACHE
static VOID NTAPI BitBlt(IN ULONG Left, IN ULONG Top, IN ULONG Width, IN ULONG Height, IN PUCHAR Buffer, IN ULONG BitsPerPixel, IN ULONG Delta)
DownloadInfo(const CAvailableApplicationInfo &AppInfo)
DWORD WINAPI GetSysColor(_In_ int)
BOOL WINAPI EndDialog(_In_ HWND, _In_ INT_PTR)
LRESULT DefWindowProc(UINT uMsg, WPARAM wParam, LPARAM lParam)
LPSTR lpszSignatureAlgName
#define IDC_DOWNLOAD_STATUS
WCHAR szDownloadDir[MAX_PATH]
BOOL WINAPI SetDlgItemTextW(_In_ HWND, _In_ int, _In_ LPCWSTR)
HINTERNET WINAPI InternetOpenUrlW(HINTERNET hInternet, LPCWSTR lpszUrl, LPCWSTR lpszHeaders, DWORD dwHeadersLength, DWORD dwFlags, DWORD_PTR dwContext)
DWORD WINAPI WaitForSingleObject(IN HANDLE hHandle, IN DWORD dwMilliseconds)
DownloadParam(HWND dlg, const ATL::CSimpleArray< DownloadInfo > &info, LPCWSTR caption)
VOID MessageBox_LoadString(HWND hMainWnd, INT StringID)
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
BOOL SubclassWindow(HWND hWnd)
BOOL SetItemText(int i, int subItem, LPCWSTR text)
DWORD WINAPI FtpGetFileSize(HINTERNET hFile, LPDWORD lpdwFileSizeHigh)
DWORD WINAPI GetFileAttributesW(LPCWSTR lpFileName)
LONG WINAPI SetWindowLongW(_In_ HWND, _In_ int, _In_ LONG)
BOOL GetClientRect(LPRECT lpRect) const
static TAGREF LPCWSTR LPDWORD LPVOID lpBuffer
#define IDS_INTEG_CHECK_FAIL
BOOL WINAPI DeleteFileW(IN LPCWSTR lpFileName)
int WINAPI DrawShadowText(HDC hdc, LPCWSTR pszText, UINT cch, RECT *prc, DWORD dwFlags, COLORREF crText, COLORREF crShadow, int ixOffset, int iyOffset)
HANDLE WINAPI DECLSPEC_HOTPATCH CreateThread(IN LPSECURITY_ATTRIBUTES lpThreadAttributes, IN DWORD dwStackSize, IN LPTHREAD_START_ROUTINE lpStartAddress, IN LPVOID lpParameter, IN DWORD dwCreationFlags, OUT LPDWORD lpThreadId)
SETTINGS_INFO SettingsInfo
static const WCHAR szProgress[]
BOOL WINAPI InternetQueryOptionA(HINTERNET hInternet, DWORD dwOption, LPVOID lpBuffer, LPDWORD lpdwBufferLength)
_Check_return_ _CRTIMP _CONST_RETURN wchar_t *__cdecl wcsrchr(_In_z_ const wchar_t *_Str, _In_ wchar_t _Ch)
static CDowloadingAppsListView DownloadsListView
BOOL WINAPI DECLSPEC_HOTPATCH ShellExecuteExW(LPSHELLEXECUTEINFOW sei)
#define IDS_UNABLE_TO_INSTALL
VOID LoadList(ATL::CSimpleArray< DownloadInfo > arrInfo)
#define IDS_STATUS_FINISHED
#define DialogBoxW(i, t, p, f)
#define IDS_INTERRUPTED_DOWNLOAD
VOID SetDownloadStatus(INT ItemIndex, DownloadStatus Status)
int WINAPI MessageBoxW(_In_opt_ HWND, _In_opt_ LPCWSTR, _In_opt_ LPCWSTR, _In_ UINT)
HWND WINAPI GetDlgItem(_In_opt_ HWND, _In_ int)
HDC BeginPaint(LPPAINTSTRUCT lpPaint)
static const WCHAR szStatus[]
#define IDS_UNABLE_TO_QUERY_CERT
static const UCHAR Index[8]
#define IDS_STATUS_DOWNLOADED
VOID SetMarquee(BOOL Enable)
LRESULT OnSetText(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
_In_opt_ PFILE_OBJECT _In_opt_ PETHREAD Thread
BOOL GetStorageDirectory(ATL::CStringW &lpDirectory)
GLdouble GLdouble GLdouble GLdouble q
static INT_PTR CALLBACK DownloadDlgProc(HWND Dlg, UINT uMsg, WPARAM wParam, LPARAM lParam)
#define INVALID_FILE_ATTRIBUTES
#define IDS_UNABLE_TO_DOWNLOAD2
#define IDC_DOWNLOAD_PROGRESS
static VOID UpdateProgress(HWND hDlg, ULONG ulProgress, ULONG ulProgressMax, ULONG ulStatusCode, LPCWSTR szStatusText)
#define INTERNET_OPEN_TYPE_DIRECT
BOOL WINAPI HttpQueryInfoW(HINTERNET hHttpRequest, DWORD dwInfoLevel, LPVOID lpBuffer, LPDWORD lpdwBufferLength, LPDWORD lpdwIndex)
#define IDS_INTEG_CHECK_TITLE
int InsertItem(const LV_ITEM *pitem)
BOOL DownloadListOfApplications(const ATL::CSimpleArray< CAvailableApplicationInfo > &AppsList, BOOL bIsModal)
#define CreateDialogW(h, n, w, f)
static ATL::CSimpleArray< DownloadInfo > AppsToInstallList
#define SelectFont(hdc, hfont)
#define HTTP_QUERY_STATUS_CODE
LRESULT OnPaint(UINT uMsg, WPARAM wParam, LPARAM lParam, BOOL &bHandled)
#define IDS_STATUS_WAITING
int Replace(PCXSTR pszOld, PCXSTR pszNew)
#define INTERNET_FLAG_PASSIVE
_Check_return_ _CRTIMP int __cdecl wcscmp(_In_z_ const wchar_t *_Str1, _In_z_ const wchar_t *_Str2)
#define INTERNET_FLAG_PRAGMA_NOCACHE
WCHAR szProxyServer[MAX_PATH]
PRTL_UNICODE_STRING_BUFFER Path
#define INTERNET_OPEN_TYPE_PRECONFIG
int WINAPI GetWindowTextW(HWND hWnd, LPWSTR lpString, int nMaxCount)
BOOL WINAPI DeleteDC(_In_ HDC)
#define INTERNET_OPTION_SECURITY_FLAGS
HWND Create(HWND hwndParent)
BOOL ModifyStyle(DWORD dwRemove, DWORD dwAdd, UINT nFlags=0)
BOOL AddItem(INT ItemIndex, LPWSTR lpText)
HLOCAL NTAPI LocalFree(HLOCAL hMem)
BOOL WINAPI InternetReadFile(HINTERNET hFile, LPVOID lpBuffer, DWORD dwNumOfBytesToRead, LPDWORD pdwNumOfBytesRead)
ATL::CStringW m_szProgressText
LRESULT WINAPI SendMessageW(_In_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static DWORD WINAPI ThreadFunc(LPVOID Context)
#define HTTP_QUERY_FLAG_NUMBER
#define BEGIN_MSG_MAP(theClass)
#define MESSAGE_HANDLER(msg, func)
static VOID Add(DownloadInfo info)
BOOL WINAPI InternetCrackUrlW(const WCHAR *lpszUrl, DWORD dwUrlLength, DWORD dwFlags, URL_COMPONENTSW *lpUC)
BOOL WINAPI PostMessageW(_In_opt_ HWND, _In_ UINT, _In_ WPARAM, _In_ LPARAM)
static const WCHAR szName[]
ATL::CStringW LoadStatusString(DownloadStatus StatusParam)
LRESULT SendMessage(UINT message, WPARAM wParam=0, LPARAM lParam=0)
int strcmp(const char *String1, const char *String2)
int InsertColumn(int iCol, LV_COLUMN *pcol)
WCHAR szNoProxyFor[MAX_PATH]
#define SECURITY_FLAG_SECURE
#define MAKEINTRESOURCEW(i)
VOID AddRow(INT RowIndex, LPCWSTR szAppName, const DownloadStatus Status)
ATL::CSimpleArray< DownloadInfo > AppInfo
HINTERNET WINAPI InternetOpenW(LPCWSTR lpszAgent, DWORD dwAccessType, LPCWSTR lpszProxy, LPCWSTR lpszProxyBypass, DWORD dwFlags)
BOOL AddColumn(INT Index, INT Width, INT Format)
size_t __cdecl wcslen(_In_z_ const wchar_t *_Str)
static CDownloaderProgress ProgressBar
#define INTERNET_FLAG_KEEP_CONNECTION
ACPI_BUFFER *RetBuffer ACPI_BUFFER *RetBuffer char ACPI_WALK_RESOURCE_CALLBACK void *Context ACPI_BUFFER *RetBuffer UINT16 ACPI_RESOURCE **ResourcePtr ACPI_GENERIC_ADDRESS *Reg UINT32 *ReturnValue UINT8 UINT8 *Slp_TypB ACPI_PHYSICAL_ADDRESS PhysicalAddress64 UINT32 UINT32 *TimeElapsed UINT32 ACPI_STATUS const char * Format