return 0;\r
}\r
\r
+static void wf_peer_read_settings(freerdp_peer* client)\r
+{\r
+ HKEY hKey;\r
+ int length;\r
+ LONG status;\r
+ DWORD dwType;\r
+ DWORD dwSize;\r
+ TCHAR* PrivateKeyFile;\r
+ TCHAR* CertificateFile;\r
+ char* PrivateKeyFileA;\r
+ char* CertificateFileA;\r
+\r
+ PrivateKeyFile = CertificateFile = NULL;\r
+\r
+ status = RegOpenKeyEx(HKEY_LOCAL_MACHINE, _T("Software\\FreeRDP\\Server"), 0, KEY_READ | KEY_WOW64_64KEY, &hKey);\r
+\r
+ if (status != ERROR_SUCCESS)\r
+ return;\r
+\r
+ status = RegQueryValueEx(hKey, _T("CertificateFile"), NULL, &dwType, NULL, &dwSize);\r
+\r
+ if (status == ERROR_SUCCESS)\r
+ {\r
+ CertificateFile = (LPTSTR) malloc(dwSize + sizeof(TCHAR));\r
+ status = RegQueryValueEx(hKey, _T("CertificateFile"), NULL, &dwType, (BYTE*) CertificateFile, &dwSize);\r
+ }\r
+\r
+ status = RegQueryValueEx(hKey, _T("PrivateKeyFile"), NULL, &dwType, NULL, &dwSize);\r
+\r
+ if (status == ERROR_SUCCESS)\r
+ {\r
+ PrivateKeyFile = (LPTSTR) malloc(dwSize + sizeof(TCHAR));\r
+ status = RegQueryValueEx(hKey, _T("PrivateKeyFile"), NULL, &dwType, (BYTE*) PrivateKeyFile, &dwSize);\r
+ }\r
+\r
+ if (CertificateFile)\r
+ {\r
+#ifdef UNICODE\r
+ length = WideCharToMultiByte(CP_UTF8, 0, CertificateFile, lstrlenW(CertificateFile), NULL, 0, NULL, NULL);\r
+ CertificateFileA = (char*) malloc(length + 1);\r
+ WideCharToMultiByte(CP_UTF8, 0, CertificateFile, lstrlenW(CertificateFile), CertificateFileA, length, NULL, NULL);\r
+ CertificateFileA[length] = '\0';\r
+ free(CertificateFile);\r
+#else\r
+ CertificateFileA = (char*) CertificateFile;\r
+#endif\r
+ client->settings->cert_file = CertificateFileA;\r
+ }\r
+ else\r
+ {\r
+ client->settings->cert_file = _strdup("server.crt");\r
+ }\r
+\r
+ if (PrivateKeyFile)\r
+ {\r
+#ifdef UNICODE\r
+ length = WideCharToMultiByte(CP_UTF8, 0, PrivateKeyFile, lstrlenW(PrivateKeyFile), NULL, 0, NULL, NULL);\r
+ PrivateKeyFileA = (char*) malloc(length + 1);\r
+ WideCharToMultiByte(CP_UTF8, 0, PrivateKeyFile, lstrlenW(PrivateKeyFile), PrivateKeyFileA, length, NULL, NULL);\r
+ PrivateKeyFileA[length] = '\0';\r
+ free(PrivateKeyFile);\r
+#else\r
+ PrivateKeyFileA = (char*) PrivateKeyFile;\r
+#endif\r
+ client->settings->privatekey_file = PrivateKeyFileA;\r
+ }\r
+ else\r
+ {\r
+ client->settings->privatekey_file = _strdup("server.key");\r
+ }\r
+\r
+ RegCloseKey(hKey);\r
+}\r
+\r
static DWORD WINAPI wf_peer_main_loop(LPVOID lpParam)\r
{\r
DWORD nCount;\r
wf_peer_init(client);\r
\r
/* Initialize the real server settings here */\r
- client->settings->cert_file = xstrdup("server.crt");\r
- client->settings->privatekey_file = xstrdup("server.key");\r
+\r
+ wf_peer_read_settings(client);\r
\r
client->PostConnect = wf_peer_post_connect;\r
client->Activate = wf_peer_activate;\r