⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serverupdates.c

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 C
字号:
/*____________________________________________________________________________
	Copyright (C) 2002 PGP Corporation
	All rights reserved.

	$Id: ServerUpdates.c,v 1.14 2002/11/01 20:45:12 wjb Exp $
____________________________________________________________________________*/

#include <windows.h>
#include "PGPadmin.h"
#include <commctrl.h>
#include "Utils.h"
#include "resource.h"

#include "PGPadminHelp.h"
#include "pgpClientLib.h"

static void sInitGUI(HWND hwndDlg, pgpConfigInfo *pConfig);

static DWORD aHelpIds[] = {
	IDC_UPDATEPREFS,	IDH_PGPADMIN_UPDATEPREFS,
	IDC_PREFDAYS,		IDH_PGPADMIN_PREFDAYS,
	IDC_UPDATEALL,		IDH_PGPADMIN_UPDATEALLKEYS,
	IDC_ALLDAYS,		IDH_PGPADMIN_KEYSDAYS,
	IDC_UPDATETRUSTED,	IDH_PGPADMIN_UPDATETRUSTED,
	IDC_TRUSTEDDAYS,	IDH_PGPADMIN_TRUSTEDDAYS,
	IDC_LDAPSERVER,		IDH_PGPADMIN_LDAPSERVER,
	IDC_PREFSPIN,		-1,
	IDC_ALLSPIN,		-1,
	IDC_TRUSTEDSPIN,	-1,
    0,0
};


BOOL CALLBACK ServerUpdatesDlgProc(HWND hwndDlg, 
								   UINT uMsg, 
								   WPARAM wParam, 
								   LPARAM lParam)
{
	BOOL			bReturnCode = FALSE;
	pgpConfigInfo *	pConfig		= NULL;

	g_hCurrentDlgWnd = hwndDlg;

	pConfig = (pgpConfigInfo *) GetWindowLong(hwndDlg, GWL_USERDATA);

	switch(uMsg)
	{
	case WM_INITDIALOG:
		CommonDlgProc(hwndDlg, uMsg, wParam, lParam);
		pConfig = (pgpConfigInfo *) GetWindowLong(hwndDlg, GWL_USERDATA);

		SendMessage(GetDlgItem(hwndDlg, IDC_ALLSPIN), UDM_SETRANGE, 0, 
			MAKELONG(999, 1));
		SendMessage(GetDlgItem(hwndDlg, IDC_TRUSTEDSPIN), UDM_SETRANGE, 0, 
			MAKELONG(999, 1));
		SendMessage(GetDlgItem(hwndDlg, IDC_PREFSPIN), UDM_SETRANGE, 0, 
			MAKELONG(999, 1));

		sInitGUI(hwndDlg, pConfig);
		break;

	case WM_HELP:
	case WM_CONTEXTMENU:
		return PGPclHtmlHelp (hwndDlg, uMsg, wParam, lParam, 
				(char *) kPGPclAdminHelpFile, aHelpIds);

	case WM_NOTIFY:
		{
			LPNMHDR pnmh;

			pnmh = (LPNMHDR) lParam;
			switch(pnmh->code)
			{
			case PSN_HELP:
				PGPclHtmlHelp (hwndDlg, kPGPclHelpContext, 0, 0, 
						(char *) kPGPclAdminHelpFile, 
						(DWORD *) IDH_PGPADMIN_SERVERUPDATESDIALOG);
				break;

			case PSN_KILLACTIVE:
				{
					char szErrorMsg[255];
					char szTitle[255];
					BOOL bError = FALSE;
					int nLength;
					HWND hwndCtrl;

					bReturnCode = TRUE;
					LoadString(g_hInstance, IDS_TITLE, szTitle, 254);

					// Check data validity

					if (pConfig->bUpdateAdminPrefs)
					{
						if ((pConfig->nDaysUpdatePrefs < 1) || 
							(pConfig->nDaysUpdatePrefs > 999))
						{
							LoadString(g_hInstance, IDS_E_DAYSRANGE, 
								szErrorMsg, 254);
							hwndCtrl = GetDlgItem(hwndDlg, IDC_PREFDAYS);
							bError = TRUE;
						}
					}

					if (pConfig->bUpdateAllKeys)
					{
						if ((pConfig->nDaysUpdateAllKeys < 1) || 
							(pConfig->nDaysUpdateAllKeys > 999))
						{
							LoadString(g_hInstance, IDS_E_DAYSRANGE, 
								szErrorMsg, 254);
							hwndCtrl = GetDlgItem(hwndDlg, IDC_ALLDAYS);
							bError = TRUE;
						}
					}

					if (pConfig->bUpdateTrustedIntroducers)
					{
						if ((pConfig->nDaysUpdateTrustedIntroducers < 1) || 
							(pConfig->nDaysUpdateTrustedIntroducers > 999))
						{
							LoadString(g_hInstance, IDS_E_DAYSRANGE, 
								szErrorMsg, 254);
							hwndCtrl = GetDlgItem(hwndDlg, IDC_TRUSTEDDAYS);
							bError = TRUE;
						}
					}

					if (pConfig->szLDAPServer)
					{
						PGPFreeData(pConfig->szLDAPServer);
						pConfig->szLDAPServer = NULL;
					}

					nLength = GetWindowTextLength(GetDlgItem(hwndDlg, 
								IDC_LDAPSERVER));

					if (nLength)
					{
						pConfig->szLDAPServer = (char *)
							PGPNewData(pConfig->memoryMgr,
							nLength + 1,
							kPGPMemoryMgrFlags_Clear);
						
						GetWindowText(GetDlgItem(hwndDlg, IDC_LDAPSERVER),
							pConfig->szLDAPServer, nLength + 1);
						
						pConfig->szLDAPServer[nLength] = 0;

						if (strlen(pConfig->szLDAPServer) <= strlen("ldap://"))
						{
							LoadString(g_hInstance, IDS_E_BADURL, 
								szErrorMsg, 254);
							hwndCtrl = GetDlgItem(hwndDlg, IDC_LDAPSERVER);
							bError = TRUE;
						}
						
						if (!strstr(pConfig->szLDAPServer, "ldap://") &&
							!strstr(pConfig->szLDAPServer, "ldaps://"))
						{
							LoadString(g_hInstance, IDS_E_BADURL, 
								szErrorMsg, 254);
							hwndCtrl = GetDlgItem(hwndDlg, IDC_LDAPSERVER);
							bError = TRUE;
						}
						
						
					}
					else if (pConfig->bUpdateAdminPrefs)
					{
						LoadString(g_hInstance, IDS_E_NEEDLDAP, szErrorMsg, 
							254);
						hwndCtrl = GetDlgItem(hwndDlg, IDC_LDAPSERVER);
						bError = TRUE;
					}

					if (bError)
					{
						MessageBox(hwndDlg, szErrorMsg, szTitle, MB_OK);
						SetFocus(hwndCtrl);
						SetWindowLong(hwndDlg, DWL_MSGRESULT, -1);
					}

					break;
				}

			default:
				bReturnCode = CommonDlgProc(hwndDlg, uMsg, wParam, lParam);
				break;
			}
			
			break;
		}

	case WM_COMMAND:
		if (pConfig == NULL)
			break;

		switch (LOWORD(wParam))
		{
		case IDC_UPDATEPREFS:
			if (IsDlgButtonChecked(hwndDlg, IDC_UPDATEPREFS) == BST_CHECKED)
			{
				pConfig->bUpdateAdminPrefs = TRUE;
				if (pConfig->nDaysUpdatePrefs == 0)
					pConfig->nDaysUpdatePrefs = 1;
			}
			else
				pConfig->bUpdateAdminPrefs = FALSE;

			sInitGUI(hwndDlg, pConfig);
			bReturnCode = TRUE;
			PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
			break;

		case IDC_UPDATEALL:
			if (IsDlgButtonChecked(hwndDlg, IDC_UPDATEALL) == BST_CHECKED)
			{
				pConfig->bUpdateAllKeys = TRUE;
				if (pConfig->nDaysUpdateAllKeys == 0)
					pConfig->nDaysUpdateAllKeys = 1;
			}
			else
				pConfig->bUpdateAllKeys = FALSE;

			sInitGUI(hwndDlg, pConfig);
			bReturnCode = TRUE;
			PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
			break;

		case IDC_UPDATETRUSTED:
			if (IsDlgButtonChecked(hwndDlg, IDC_UPDATETRUSTED) == BST_CHECKED)
			{
				pConfig->bUpdateTrustedIntroducers = TRUE;
				if (pConfig->nDaysUpdateTrustedIntroducers == 0)
					pConfig->nDaysUpdateTrustedIntroducers = 1;
			}
			else
				pConfig->bUpdateTrustedIntroducers = FALSE;

			sInitGUI(hwndDlg, pConfig);
			bReturnCode = TRUE;
			PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
			break;

		case IDC_PREFDAYS:
			{
				char szBuffer[4];

				GetWindowText(GetDlgItem(hwndDlg, IDC_PREFDAYS), 
					szBuffer, 4);
				pConfig->nDaysUpdatePrefs = atoi(szBuffer);
				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_ALLDAYS:
			{
				char szBuffer[4];

				GetWindowText(GetDlgItem(hwndDlg, IDC_ALLDAYS), 
					szBuffer, 4);
				pConfig->nDaysUpdateAllKeys = atoi(szBuffer);
				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_TRUSTEDDAYS:
			{
				char szBuffer[4];

				GetWindowText(GetDlgItem(hwndDlg, IDC_TRUSTEDDAYS), 
					szBuffer, 4);
				pConfig->nDaysUpdateTrustedIntroducers = atoi(szBuffer);
				bReturnCode = TRUE;
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}

		case IDC_LDAPSERVER:
			{
				PropSheet_Changed(GetParent(hwndDlg), hwndDlg);
				break;
			}
		}

		break;

	default:
		bReturnCode = CommonDlgProc(hwndDlg, uMsg, wParam, lParam);
		break;
	}

	return(bReturnCode);
}


static void sInitGUI(HWND hwndDlg, pgpConfigInfo *pConfig)
{
	char szBuffer[4];
	
	if (pConfig->bUpdateAdminPrefs)
		CheckDlgButton(hwndDlg, IDC_UPDATEPREFS, BST_CHECKED);
	else
		CheckDlgButton(hwndDlg, IDC_UPDATEPREFS, BST_UNCHECKED);
	
	EnableWindow(GetDlgItem(hwndDlg, IDC_PREFDAYS), 
		pConfig->bUpdateAdminPrefs);
	EnableWindow(GetDlgItem(hwndDlg, IDC_LDAPLABEL),TRUE); // Always enable
//		pConfig->bUpdateAdminPrefs);
	EnableWindow(GetDlgItem(hwndDlg, IDC_LDAPSERVER),TRUE); // Always enable
//		pConfig->bUpdateAdminPrefs);

	if (pConfig->bUpdateAllKeys)
		CheckDlgButton(hwndDlg, IDC_UPDATEALL, BST_CHECKED);
	else
		CheckDlgButton(hwndDlg, IDC_UPDATEALL, BST_UNCHECKED);
	
	EnableWindow(GetDlgItem(hwndDlg, IDC_ALLDAYS), pConfig->bUpdateAllKeys);

	if (pConfig->bUpdateTrustedIntroducers)
		CheckDlgButton(hwndDlg, IDC_UPDATETRUSTED, BST_CHECKED);
	else
		CheckDlgButton(hwndDlg, IDC_UPDATETRUSTED, BST_UNCHECKED);

	EnableWindow(GetDlgItem(hwndDlg, IDC_TRUSTEDDAYS), 
		pConfig->bUpdateTrustedIntroducers);

	wsprintf(szBuffer, "%d", pConfig->nDaysUpdatePrefs);
	SetWindowText(GetDlgItem(hwndDlg, IDC_PREFDAYS), szBuffer);
	
	wsprintf(szBuffer, "%d", pConfig->nDaysUpdateAllKeys);
	SetWindowText(GetDlgItem(hwndDlg, IDC_ALLDAYS), szBuffer);
	
	wsprintf(szBuffer, "%d", pConfig->nDaysUpdateTrustedIntroducers);
	SetWindowText(GetDlgItem(hwndDlg, IDC_TRUSTEDDAYS), szBuffer);

	if (pConfig->szLDAPServer != NULL)
		SetWindowText(GetDlgItem(hwndDlg, IDC_LDAPSERVER), 
			pConfig->szLDAPServer);
	else
		SetWindowText(GetDlgItem(hwndDlg, IDC_LDAPSERVER), "");
	
	if (!(GetInstalledProduct(pConfig->szProductKey) & 
		(Installer_PGPds | Installer_PGPdisk | Installer_PGPmail | 
		Installer_PGPvpn)))
	{
		EnableWindow(GetDlgItem(hwndDlg, IDC_UPDATEALL), FALSE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_ALLDAYS), FALSE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_UPDATETRUSTED), FALSE);
		EnableWindow(GetDlgItem(hwndDlg, IDC_TRUSTEDDAYS), FALSE);
	}

	if (pConfig->bActiveX)
	{
		RECT rcOrig;
		RECT rcNew;
		POINT *pOrig = (POINT *) &rcOrig;
		POINT *pNew = (POINT *) &rcNew;
		LONG lOffset;

		GetWindowRect(GetDlgItem(hwndDlg, IDC_UPDATEPREFS), &rcOrig);
		GetWindowRect(GetDlgItem(hwndDlg, IDC_UPDATEALL), &rcNew);
		ScreenToClient(hwndDlg, pOrig);
		ScreenToClient(hwndDlg, pNew);
		lOffset = pNew->y - pOrig->y;
		ShowWindow(GetDlgItem(hwndDlg, IDC_UPDATEPREFS), SW_HIDE);
		ShowWindow(GetDlgItem(hwndDlg, IDC_PREFDAYS), SW_HIDE);
		ShowWindow(GetDlgItem(hwndDlg, IDC_PREFSPIN), SW_HIDE);
		ShowWindow(GetDlgItem(hwndDlg, IDC_PREFDAYLABEL), SW_HIDE);
		ShowWindow(GetDlgItem(hwndDlg, IDC_LDAPLABEL), SW_HIDE);
		ShowWindow(GetDlgItem(hwndDlg, IDC_LDAPSERVER), SW_HIDE);
		SetWindowPos(GetDlgItem(hwndDlg, IDC_UPDATEALL), 0, pNew->x,
			pNew->y - lOffset, 0, 0, 
			SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);

		GetWindowRect(GetDlgItem(hwndDlg, IDC_ALLDAYS), &rcNew);
		ScreenToClient(hwndDlg, pNew);
		SetWindowPos(GetDlgItem(hwndDlg, IDC_ALLDAYS), 0, pNew->x,
			pNew->y - lOffset, 0, 0, 
			SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);

		GetWindowRect(GetDlgItem(hwndDlg, IDC_ALLSPIN), &rcNew);
		ScreenToClient(hwndDlg, pNew);
		SetWindowPos(GetDlgItem(hwndDlg, IDC_ALLSPIN), 0, pNew->x,
			pNew->y - lOffset, 0, 0, 
			SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);

		GetWindowRect(GetDlgItem(hwndDlg, IDC_ALLDAYLABEL), &rcNew);
		ScreenToClient(hwndDlg, pNew);
		SetWindowPos(GetDlgItem(hwndDlg, IDC_ALLDAYLABEL), 0, pNew->x,
			pNew->y - lOffset, 0, 0, 
			SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);

		GetWindowRect(GetDlgItem(hwndDlg, IDC_UPDATETRUSTED), &rcNew);
		ScreenToClient(hwndDlg, pNew);
		SetWindowPos(GetDlgItem(hwndDlg, IDC_UPDATETRUSTED), 0, pNew->x,
			pNew->y - lOffset, 0, 0, 
			SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);

		GetWindowRect(GetDlgItem(hwndDlg, IDC_TRUSTEDDAYS), &rcNew);
		ScreenToClient(hwndDlg, pNew);
		SetWindowPos(GetDlgItem(hwndDlg, IDC_TRUSTEDDAYS), 0, pNew->x,
			pNew->y - lOffset, 0, 0, 
			SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);

		GetWindowRect(GetDlgItem(hwndDlg, IDC_TRUSTEDSPIN), &rcNew);
		ScreenToClient(hwndDlg, pNew);
		SetWindowPos(GetDlgItem(hwndDlg, IDC_TRUSTEDSPIN), 0, pNew->x,
			pNew->y - lOffset, 0, 0, 
			SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);

		GetWindowRect(GetDlgItem(hwndDlg, IDC_TRUSTEDDAYLABEL), &rcNew);
		ScreenToClient(hwndDlg, pNew);
		SetWindowPos(GetDlgItem(hwndDlg, IDC_TRUSTEDDAYLABEL), 0, pNew->x,
			pNew->y - lOffset, 0, 0, 
			SWP_NOOWNERZORDER | SWP_NOSIZE | SWP_SHOWWINDOW);
	}

	return;
}


/*__Editor_settings____

	Local Variables:
	tab-width: 4
	End:
	vi: ts=4 sw=4
	vim: si
_____________________*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -