Leaked source code of windows server 2003
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

483 lines
21 KiB

  1. //Copyright (c) 1998 - 2001 Microsoft Corporation
  2. #include "precomp.h"
  3. #include "utils.h"
  4. #include <assert.h>
  5. #include "fonts.h"
  6. static DWORD g_dwAuthRetCode = ERROR_SUCCESS;
  7. DWORD WINAPI AuthThread(void *pData);
  8. LRW_DLG_INT CALLBACK
  9. AuthProc(
  10. IN HWND hwnd,
  11. IN UINT uMsg,
  12. IN WPARAM wParam,
  13. IN LPARAM lParam
  14. );
  15. DWORD WINAPI AuthThread(void *pData)
  16. {
  17. g_dwAuthRetCode = AuthenticateLS();
  18. ExitThread(0);
  19. return 0;
  20. }
  21. DWORD DetermineWelcomePage()
  22. {
  23. switch (GetGlobalContext()->GetWizAction()) {
  24. case (WIZACTION_REGISTERLS):
  25. case (WIZACTION_CONTINUEREGISTERLS):
  26. {
  27. return IDD_WELCOME_ACTIVATION;
  28. break;
  29. }
  30. case (WIZACTION_DOWNLOADLKP):
  31. case (WIZACTION_DOWNLOADLASTLKP):
  32. {
  33. return IDD_WELCOME_CLIENT_LICENSING;
  34. break;
  35. }
  36. case (WIZACTION_REREGISTERLS):
  37. {
  38. return IDD_WELCOME_REACTIVATION;
  39. break;
  40. }
  41. default:
  42. {
  43. return IDD_WELCOME;
  44. break;
  45. }
  46. }
  47. return IDD_WELCOME;
  48. }
  49. void DisplayAboutTSLicensingHelp()
  50. {
  51. TCHAR * pHtml = L"ts_lice_c_015.htm";
  52. HtmlHelp(AfxGetMainWnd()->m_hWnd, L"tslic.chm", HH_DISPLAY_TOPIC,(DWORD_PTR)pHtml);
  53. }
  54. //
  55. // Simple Welcome dialogs
  56. //
  57. LRW_DLG_INT SimpleWelcomeDlgProc(IN HWND hwnd,
  58. IN UINT uMsg,
  59. IN WPARAM wParam,
  60. IN LPARAM lParam)
  61. {
  62. DWORD dwRetCode = ERROR_SUCCESS;
  63. DWORD dwNextPage = 0;
  64. BOOL bStatus = TRUE;
  65. PageInfo *pi = (PageInfo *)LRW_GETWINDOWLONG( hwnd, LRW_GWL_USERDATA );
  66. switch (uMsg) {
  67. case WM_INITDIALOG:
  68. TCHAR szMsg[LR_MAX_MSG_TEXT];
  69. TCHAR szWelcomeTitle[LR_MAX_MSG_TEXT];
  70. pi = (PageInfo *)((LPPROPSHEETPAGE)lParam)->lParam;
  71. LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, (LRW_LONG_PTR)pi );
  72. SetControlFont( pi->hBigBoldFont, hwnd, IDC_BIGBOLDTITLE);
  73. GetGlobalContext()->ClearWizStack();
  74. switch (GetGlobalContext()->GetWizAction()) {
  75. case WIZACTION_REGISTERLS:
  76. LoadString(GetInstanceHandle(), IDS_MSG_UNREGISTERED,
  77. szMsg,LR_MAX_MSG_TEXT);
  78. LoadString(GetInstanceHandle(), IDS_ACTIVATION_WELCOME,
  79. szWelcomeTitle, LR_MAX_MSG_TEXT);
  80. break;
  81. case WIZACTION_CONTINUEREGISTERLS:
  82. LoadString(GetInstanceHandle(), IDS_MSG_CONTINUEREGISTRATION,
  83. szMsg,LR_MAX_MSG_TEXT);
  84. LoadString(GetInstanceHandle(), IDS_OTHER_WELCOME, szWelcomeTitle,
  85. LR_MAX_MSG_TEXT);
  86. break;
  87. }
  88. SetDlgItemText(hwnd, IDC_BIGBOLDTITLE, szWelcomeTitle);
  89. SetDlgItemText(hwnd, IDC_BOLDTITLE, szMsg);
  90. AddHyperLinkToStaticCtl(hwnd, IDC_HYPERLINK_MOREINFO);
  91. break;
  92. case WM_DESTROY:
  93. LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL );
  94. break;
  95. case WM_NOTIFY:
  96. {
  97. LPNMHDR pnmh = (LPNMHDR)lParam;
  98. switch ( pnmh->code ) {
  99. //Trap keystokes/clicks on the hyperlink
  100. case NM_CHAR:
  101. if ( ( ( LPNMCHAR )lParam )->ch != VK_SPACE )
  102. break;
  103. // else fall through
  104. case NM_RETURN:
  105. case NM_CLICK:
  106. DisplayAboutTSLicensingHelp();
  107. break;
  108. case PSN_SETACTIVE:
  109. {
  110. TCHAR szMsg[LR_MAX_MSG_TEXT];
  111. TCHAR szWelcomeTitle[LR_MAX_MSG_TEXT];
  112. PropSheet_SetWizButtons( GetParent( hwnd ), PSWIZB_NEXT );
  113. LoadString(GetInstanceHandle(), IDS_MSG_UNREGISTERED, szMsg,LR_MAX_MSG_TEXT);
  114. LoadString(GetInstanceHandle(), IDS_ACTIVATION_WELCOME, szWelcomeTitle, LR_MAX_MSG_TEXT);
  115. SetDlgItemText(hwnd, IDC_BIGBOLDTITLE, szWelcomeTitle);
  116. AddHyperLinkToStaticCtl(hwnd, IDC_HYPERLINK_MOREINFO);
  117. }
  118. break;
  119. case PSN_WIZNEXT:
  120. {
  121. dwNextPage = IDD_DLG_GETREGMODE;
  122. LRW_SETWINDOWLONG(hwnd, LRW_DWL_MSGRESULT, dwNextPage);
  123. if (dwNextPage != DetermineWelcomePage()) {
  124. LRPush(DetermineWelcomePage());
  125. }
  126. bStatus = -1;
  127. }
  128. break;
  129. default:
  130. bStatus = FALSE;
  131. break;
  132. }
  133. }
  134. break;
  135. default:
  136. bStatus = FALSE;
  137. break;
  138. }
  139. return bStatus;
  140. }
  141. //
  142. // Complex welcome dlg proc - contains license server settings
  143. //
  144. LRW_DLG_INT ComplexWelcomeDlgProc(IN HWND hwnd,
  145. IN UINT uMsg,
  146. IN WPARAM wParam,
  147. IN LPARAM lParam)
  148. {
  149. DWORD dwRetCode = ERROR_SUCCESS;
  150. DWORD dwNextPage = 0;
  151. BOOL bStatus = TRUE;
  152. PageInfo *pi = (PageInfo *)LRW_GETWINDOWLONG( hwnd, LRW_GWL_USERDATA );
  153. switch (uMsg) {
  154. case WM_INITDIALOG:
  155. pi = (PageInfo *)((LPPROPSHEETPAGE)lParam)->lParam;
  156. LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, (LRW_LONG_PTR)pi );
  157. SetControlFont( pi->hBigBoldFont, hwnd, IDC_BIGBOLDTITLE);
  158. GetGlobalContext()->ClearWizStack();
  159. if (GetGlobalContext()->GetWizAction() == WIZACTION_DOWNLOADLKP ||
  160. GetGlobalContext()->GetWizAction() == WIZACTION_DOWNLOADLASTLKP) {
  161. AddHyperLinkToStaticCtl(hwnd, IDC_HYPERLINK_MOREINFO);
  162. } else {
  163. AddHyperLinkToStaticCtl(hwnd, IDC_PRIVACY);
  164. }
  165. break;
  166. case WM_DESTROY:
  167. LRW_SETWINDOWLONG( hwnd, LRW_GWL_USERDATA, NULL );
  168. break;
  169. case WM_NOTIFY:
  170. {
  171. LPNMHDR pnmh = (LPNMHDR)lParam;
  172. switch ( pnmh->code ) {
  173. //Trap keystokes/clicks on the hyperlink
  174. case NM_CHAR:
  175. if ( ( ( LPNMCHAR )lParam )->ch != VK_SPACE )
  176. break;
  177. // else fall through
  178. case NM_RETURN:
  179. case NM_CLICK:
  180. {
  181. //
  182. // Figure out which type of help to display based
  183. // on the welcome dialog
  184. //
  185. DWORD dwWizAction = GetGlobalContext()->GetWizAction();
  186. if (WIZACTION_DOWNLOADLKP == dwWizAction ||
  187. WIZACTION_DOWNLOADLASTLKP == dwWizAction) {
  188. DisplayAboutTSLicensingHelp();
  189. } else {
  190. DisplayPrivacyHelp();
  191. }
  192. }
  193. case PSN_SETACTIVE:
  194. {
  195. TCHAR szMsg[LR_MAX_MSG_TEXT];
  196. TCHAR szWelcomeTitle[LR_MAX_MSG_TEXT];
  197. SetDlgItemText(hwnd, IDC_PRODUCTID, GetGlobalContext()->GetLicenseServerID());
  198. if (GetGlobalContext()->GetWizAction() != WIZACTION_REGISTERLS &&
  199. GetGlobalContext()->GetWizAction() != WIZACTION_CONTINUEREGISTERLS) {
  200. SetDlgItemText(hwnd, IDC_COMPANYNAME, GetGlobalContext()->GetContactDataObject()->sCompanyName);
  201. DWORD dwStringId;
  202. dwStringId =
  203. GetStringIDFromProgramName(
  204. GetGlobalContext()->GetContactDataObject()->sProgramName);
  205. LoadString(GetInstanceHandle(), dwStringId, szMsg, LR_MAX_MSG_TEXT);
  206. SetDlgItemText(hwnd, IDC_LICENSETYPE, szMsg);
  207. if (GetGlobalContext()->GetActivationMethod() == CONNECTION_INTERNET) {
  208. LoadString(GetInstanceHandle(),IDS_INTERNETMODE,szMsg,LR_MAX_MSG_TEXT);
  209. SetDlgItemText(hwnd, IDC_ACTIVATIONMETHOD, szMsg);
  210. }
  211. if (GetGlobalContext()->GetActivationMethod() == CONNECTION_WWW) {
  212. LoadString(GetInstanceHandle(),IDS_WWWMODE,szMsg,LR_MAX_MSG_TEXT);
  213. SetDlgItemText(hwnd, IDC_ACTIVATIONMETHOD, szMsg);
  214. }
  215. if (GetGlobalContext()->GetActivationMethod() == CONNECTION_PHONE) {
  216. LoadString(GetInstanceHandle(),IDS_TELEPHONEMODE,szMsg,LR_MAX_MSG_TEXT);
  217. SetDlgItemText(hwnd, IDC_ACTIVATIONMETHOD, szMsg);
  218. }
  219. }
  220. PropSheet_SetWizButtons( GetParent( hwnd ), PSWIZB_NEXT );
  221. switch (GetGlobalContext()->GetWizAction()) {
  222. case WIZACTION_DOWNLOADLKP:
  223. LoadString(GetInstanceHandle(), IDS_MSG_DOWNLOADLKP, szMsg,LR_MAX_MSG_TEXT);
  224. LoadString(GetInstanceHandle(), IDS_KEY_PACKS_WELCOME, szWelcomeTitle, LR_MAX_MSG_TEXT);
  225. AddHyperLinkToStaticCtl(hwnd, IDC_HYPERLINK_MOREINFO);
  226. break;
  227. case WIZACTION_REGISTERLS:
  228. LoadString(GetInstanceHandle(), IDS_MSG_UNREGISTERED, szMsg,LR_MAX_MSG_TEXT);
  229. LoadString(GetInstanceHandle(), IDS_ACTIVATION_WELCOME, szWelcomeTitle, LR_MAX_MSG_TEXT);
  230. AddHyperLinkToStaticCtl(hwnd, IDC_PRIVACY);
  231. break;
  232. case WIZACTION_CONTINUEREGISTERLS:
  233. LoadString(GetInstanceHandle(), IDS_MSG_CONTINUEREGISTRATION, szMsg,LR_MAX_MSG_TEXT);
  234. LoadString(GetInstanceHandle(), IDS_OTHER_WELCOME, szWelcomeTitle, LR_MAX_MSG_TEXT);
  235. AddHyperLinkToStaticCtl(hwnd, IDC_PRIVACY);
  236. break;
  237. case WIZACTION_REREGISTERLS:
  238. LoadString(GetInstanceHandle(), IDS_MSG_REREGISTRATION, szMsg,LR_MAX_MSG_TEXT);
  239. LoadString(GetInstanceHandle(), IDS_REACTIVATION_TITLE, szWelcomeTitle, LR_MAX_MSG_TEXT);
  240. AddHyperLinkToStaticCtl(hwnd, IDC_PRIVACY);
  241. break;
  242. case WIZACTION_UNREGISTERLS:
  243. LoadString(GetInstanceHandle(), IDS_MSG_UNREGISTRATION, szMsg,LR_MAX_MSG_TEXT);
  244. LoadString(GetInstanceHandle(), IDS_OTHER_WELCOME, szWelcomeTitle, LR_MAX_MSG_TEXT);
  245. AddHyperLinkToStaticCtl(hwnd, IDC_PRIVACY);
  246. break;
  247. case WIZACTION_DOWNLOADLASTLKP:
  248. LoadString(GetInstanceHandle(), IDS_MSG_DOWNLOADLASTLKP, szMsg,LR_MAX_MSG_TEXT);
  249. LoadString(GetInstanceHandle(), IDS_KEY_PACKS_WELCOME, szWelcomeTitle, LR_MAX_MSG_TEXT);
  250. AddHyperLinkToStaticCtl(hwnd, IDC_HYPERLINK_MOREINFO);
  251. break;
  252. }
  253. SetDlgItemText(hwnd, IDC_BIGBOLDTITLE, szWelcomeTitle);
  254. SetDlgItemText(hwnd, IDC_BOLDTITLE, szMsg);
  255. }
  256. break;
  257. case PSN_WIZNEXT:
  258. if (GetGlobalContext()->GetWizAction() == WIZACTION_DOWNLOADLASTLKP) {
  259. if (GetGlobalContext()->GetActivationMethod() == CONNECTION_INTERNET) {
  260. // Solve Bug 610 BEGIN
  261. dwRetCode = ShowProgressBox(hwnd, AuthThread, IDS_CALWIZ_TITLE, 0, 0);
  262. if (g_dwAuthRetCode == ERROR_SUCCESS) {
  263. //Previos code BEGIN
  264. dwRetCode = ShowProgressBox(hwnd, ProcessThread, IDS_CALWIZ_TITLE, 0, 0);
  265. if (dwRetCode == ERROR_SUCCESS) {
  266. dwRetCode = LRGetLastRetCode();
  267. }
  268. if (dwRetCode != ERROR_SUCCESS) {
  269. LRMessageBox(hwnd, dwRetCode,IDS_WIZARD_MESSAGE_TITLE);
  270. dwNextPage = DetermineWelcomePage();
  271. } else {
  272. dwNextPage = IDD_PROGRESS;
  273. }
  274. //Previous code END
  275. } else if (g_dwAuthRetCode == IDS_ERR_SPKBAD ||
  276. g_dwAuthRetCode == IDS_ERR_CERTREVOKED) {
  277. TCHAR szMsg[LR_MAX_MSG_TEXT];
  278. TCHAR szCaption[LR_MAX_MSG_CAPTION];
  279. LoadString(GetInstanceHandle(),g_dwAuthRetCode, szMsg,LR_MAX_MSG_TEXT);
  280. LoadString(GetInstanceHandle(),IDS_TITLE,szCaption,LR_MAX_MSG_CAPTION);
  281. if (MessageBox(hwnd,szMsg, szCaption, MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES) {
  282. SetCursor(LoadCursor(NULL,IDC_WAIT));
  283. g_dwAuthRetCode = ResetLSSPK();
  284. SetCursor(LoadCursor(NULL,IDC_ARROW));
  285. if (g_dwAuthRetCode == ERROR_SUCCESS) {
  286. // Start all over again
  287. GetGlobalContext()->SetLRState(LRSTATE_NEUTRAL);
  288. GetGlobalContext()->SetLSStatus(LSERVERSTATUS_UNREGISTER);
  289. GetGlobalContext()->SetWizAction(WIZACTION_REGISTERLS);
  290. GetGlobalContext()->ClearWizStack();
  291. dwNextPage = DetermineWelcomePage();
  292. } else {
  293. LRMessageBox(hwnd,g_dwAuthRetCode,NULL,LRGetLastError());
  294. dwNextPage = DetermineWelcomePage();
  295. }
  296. } else {
  297. dwNextPage = DetermineWelcomePage();
  298. }
  299. } else if (g_dwAuthRetCode == IDS_ERR_CERTBAD ||
  300. g_dwAuthRetCode == IDS_ERR_CERTEXPIRED) {
  301. TCHAR szMsg[LR_MAX_MSG_TEXT];
  302. TCHAR szCaption[LR_MAX_MSG_CAPTION];
  303. LoadString(GetInstanceHandle(), g_dwAuthRetCode, szMsg, LR_MAX_MSG_TEXT);
  304. LoadString(GetInstanceHandle(), IDS_TITLE, szCaption, LR_MAX_MSG_CAPTION);
  305. if (MessageBox(hwnd,szMsg, szCaption, MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES) {
  306. // Go to Reissue Cert
  307. GetGlobalContext()->SetLRState(LRSTATE_NEUTRAL);
  308. GetGlobalContext()->SetLSStatus(LSERVERSTATUS_REGISTER_INTERNET);
  309. GetGlobalContext()->SetWizAction(WIZACTION_REREGISTERLS);
  310. dwNextPage = IDD_DLG_CERTLOG_INFO;
  311. } else {
  312. dwNextPage = DetermineWelcomePage();
  313. }
  314. } else {
  315. LRMessageBox(hwnd,g_dwAuthRetCode,NULL,LRGetLastError());
  316. dwNextPage = DetermineWelcomePage();
  317. }
  318. } else {
  319. dwNextPage = GetGlobalContext()->GetEntryPoint();
  320. }
  321. // Solve Bug 610 END
  322. } else if (GetGlobalContext()->GetWizAction() == WIZACTION_REGISTERLS) {
  323. dwNextPage = IDD_DLG_GETREGMODE;
  324. } else if (GetGlobalContext()->GetWizAction() == WIZACTION_DOWNLOADLKP ||
  325. GetGlobalContext()->GetWizAction() == WIZACTION_UNREGISTERLS ||
  326. GetGlobalContext()->GetWizAction() == WIZACTION_REREGISTERLS) {
  327. if (GetGlobalContext()->GetActivationMethod() == CONNECTION_INTERNET) {
  328. BOOL fIsCalWizard = FALSE;
  329. if (GetGlobalContext()->GetWizAction() == WIZACTION_DOWNLOADLKP) {
  330. fIsCalWizard = TRUE;
  331. }
  332. dwRetCode = ShowProgressBox(hwnd, AuthThread,
  333. fIsCalWizard ? IDS_CALWIZ_TITLE : 0, 0, 0);
  334. if (g_dwAuthRetCode == ERROR_SUCCESS) {
  335. dwNextPage = GetGlobalContext()->GetEntryPoint();
  336. } else if (g_dwAuthRetCode == IDS_ERR_SPKBAD ||
  337. g_dwAuthRetCode == IDS_ERR_CERTREVOKED) {
  338. TCHAR szMsg[LR_MAX_MSG_TEXT];
  339. TCHAR szCaption[LR_MAX_MSG_CAPTION];
  340. LoadString(GetInstanceHandle(),g_dwAuthRetCode, szMsg,LR_MAX_MSG_TEXT);
  341. LoadString(GetInstanceHandle(),IDS_TITLE,szCaption,LR_MAX_MSG_CAPTION);
  342. if (MessageBox(hwnd,szMsg, szCaption, MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES) {
  343. SetCursor(LoadCursor(NULL,IDC_WAIT));
  344. g_dwAuthRetCode = ResetLSSPK();
  345. SetCursor(LoadCursor(NULL,IDC_ARROW));
  346. if (g_dwAuthRetCode == ERROR_SUCCESS) {
  347. // Start all over again
  348. GetGlobalContext()->SetLRState(LRSTATE_NEUTRAL);
  349. GetGlobalContext()->SetLSStatus(LSERVERSTATUS_UNREGISTER);
  350. GetGlobalContext()->SetWizAction(WIZACTION_REGISTERLS);
  351. GetGlobalContext()->ClearWizStack();
  352. dwNextPage = DetermineWelcomePage();
  353. } else {
  354. LRMessageBox(hwnd,g_dwAuthRetCode,NULL,LRGetLastError());
  355. dwNextPage = DetermineWelcomePage();
  356. }
  357. } else {
  358. dwNextPage = DetermineWelcomePage();
  359. }
  360. } else if (g_dwAuthRetCode == IDS_ERR_CERTBAD ||
  361. g_dwAuthRetCode == IDS_ERR_CERTEXPIRED) {
  362. TCHAR szMsg[LR_MAX_MSG_TEXT];
  363. TCHAR szCaption[LR_MAX_MSG_CAPTION];
  364. LoadString(GetInstanceHandle(), g_dwAuthRetCode, szMsg, LR_MAX_MSG_TEXT);
  365. LoadString(GetInstanceHandle(), IDS_TITLE, szCaption, LR_MAX_MSG_CAPTION);
  366. if (MessageBox(hwnd,szMsg, szCaption, MB_YESNO | MB_ICONQUESTION | MB_DEFBUTTON2) == IDYES) {
  367. // Go to Reissue Cert
  368. GetGlobalContext()->SetLRState(LRSTATE_NEUTRAL);
  369. GetGlobalContext()->SetLSStatus(LSERVERSTATUS_REGISTER_INTERNET);
  370. GetGlobalContext()->SetWizAction(WIZACTION_REREGISTERLS);
  371. dwNextPage = IDD_DLG_CERTLOG_INFO;
  372. } else {
  373. dwNextPage = DetermineWelcomePage();
  374. }
  375. } else {
  376. LRMessageBox(hwnd,g_dwAuthRetCode,NULL,LRGetLastError());
  377. dwNextPage = DetermineWelcomePage();
  378. }
  379. } else {
  380. dwNextPage = GetGlobalContext()->GetEntryPoint();
  381. }
  382. } else {
  383. dwNextPage = GetGlobalContext()->GetEntryPoint();
  384. }
  385. LRW_SETWINDOWLONG(hwnd, LRW_DWL_MSGRESULT, dwNextPage);
  386. if (dwNextPage != DetermineWelcomePage()) {
  387. LRPush(DetermineWelcomePage());
  388. }
  389. bStatus = -1;
  390. break;
  391. default:
  392. bStatus = FALSE;
  393. break;
  394. }
  395. }
  396. break;
  397. default:
  398. bStatus = FALSE;
  399. break;
  400. }
  401. return bStatus;
  402. }