clprefsnetvpn.c
来自「PGP8.0源码 请认真阅读您的文件包然后写出其具体功能」· C语言 代码 · 共 472 行
C
472 行
/*____________________________________________________________________________
Copyright (C) 2002 PGP Corporation
All rights reserved.
CLprefsNetGen.c - handle PGPnet general preferences dialogs
$Id: CLprefsNetVPN.c,v 1.12 2002/08/06 20:09:19 dallen Exp $
____________________________________________________________________________*/
#include "pgpPFLConfig.h"
// project header files
#include "PGPclx.h"
#include "PGPvpnHelp.h"
#include "CLprefs.h"
#include "DurationControl.h"
// definitions
#define PHASE1_BYTE_EXPIRATION_GUI_ENABLED FALSE
#if PHASE1_BYTE_EXPIRATION_GUI_ENABLED
#define MINIKEMEGABYTES 4
#define MAXIKEMEGABYTES 4095
#define MAXIKEMEGABYTESDIGITS 4
#endif // PHASE1_BYTE_EXPIRATION_GUI_ENABLED
#define MINIPSECMEGABYTES 4
#define MAXIPSECMEGABYTES 4095
#define MAXIPSECMEGABYTESDIGITS 4
#if PGP_DEBUG
#define MINEXPIRESECONDS 60
#else
#define MINEXPIRESECONDS 600
#endif
// external globals
extern HINSTANCE g_hInst;
static DWORD aGeneralIds[] = { // Help IDs
IDC_ENABLEVPN, IDH_PGPCLPREF_ENABLEVPN,
IDC_ATTEMPTSECURE, IDH_PGPCLPREF_ATTEMPTSECURECOMM,
IDC_ALLOWSECURE, IDH_PGPCLPREF_ALLOWSECURECOMM,
IDC_REQUIRESECURE, IDH_PGPCLPREF_REQUIRESECURECOMM,
IDC_ENABLEIKETIMEEXPIRE, IDH_PGPCLPREF_IKETIMEEXPIREENABLE,
IDC_IKETIMEEXPIRE, IDH_PGPCLPREF_IKETIMEEXPIRETIME,
#if PHASE1_BYTE_EXPIRATION_GUI_ENABLED
IDC_ENABLEIKEBYTEEXPIRE, IDH_PGPCLPREF_IKEDATAEXPIREENABLE,
IDC_IKEBYTES, IDH_PGPCLPREF_IKEDATAEXPIREBYTES,
#endif // PHASE1_BYTE_EXPIRATION_GUI_ENABLED
IDC_ENABLEIPSECTIMEEXPIRE, IDH_PGPCLPREF_IPSECTIMEEXPIREENABLE,
IDC_IPSECTIMEEXPIRE, IDH_PGPCLPREF_IPSECTIMEEXPIRETIME,
IDC_ENABLEIPSECBYTEEXPIRE, IDH_PGPCLPREF_IPSECDATAEXPIREENABLE,
IDC_IPSECBYTES, IDH_PGPCLPREF_IPSECDATAEXPIREBYTES,
0,0
};
// ____________________________________
//
// general options dialog proc
LRESULT WINAPI
CLNetVPNPropDlgProc (
HWND hwnd,
UINT uMsg,
WPARAM wParam,
LPARAM lParam)
{
PPREFSDLGSTRUCT ppds;
switch (uMsg)
{
case WM_INITDIALOG :
{
PGPBoolean b;
RECT rc;
UINT u;
INT i;
CHAR sz[8];
PGPPrefRef prefrefNet;
SetWindowLong (hwnd, GWL_USERDATA, ((PROPSHEETPAGE*)lParam)->lParam);
ppds = (PPREFSDLGSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
if (ppds->bNeedsCentering)
{
PGPclCenterWindowOnMonitor (GetParent (hwnd), kPGPclWindowMonitor);
ppds->bNeedsCentering = FALSE;
}
prefrefNet = CLGetPrefRefNet (ppds);
// initialize Enable VPN controls
CLLoadCheckBoxPref (hwnd, IDC_ENABLEVPN,
ppds, prefrefNet, kPGPNetPrefEnableVPN);
// initialize Dynamic VPN controls
PGPGetPrefNumber (prefrefNet,
kPGPnetPrefUnconfiguredMode, &u);
switch (u) {
case kPGPnet_UM_Attempt: i = IDC_ATTEMPTSECURE; break;
case kPGPnet_UM_Allow: i = IDC_ALLOWSECURE; break;
default: i = IDC_REQUIRESECURE; break;
}
CheckRadioButton (hwnd, IDC_ATTEMPTSECURE, IDC_REQUIRESECURE, i);
CLDisablePrefControl (hwnd, IDC_ATTEMPTSECURE,
ppds, prefrefNet, kPGPnetPrefUnconfiguredMode);
CLDisablePrefControl (hwnd, IDC_ALLOWSECURE,
ppds, prefrefNet, kPGPnetPrefUnconfiguredMode);
CLDisablePrefControl (hwnd, IDC_REQUIRESECURE,
ppds, prefrefNet, kPGPnetPrefUnconfiguredMode);
// create and initialize IKE expiration date/time picker control
GetWindowRect (GetDlgItem (hwnd, IDC_IKETIMEEXPIRE), &rc);
MapWindowPoints (NULL, hwnd, (LPPOINT)&rc, 2);
ppds->net.hwndIKETimeExpire = CreateWindowEx (
WS_EX_CLIENTEDGE,
WC_PGPDURATION, "",
WS_CHILD|WS_TABSTOP|WS_VISIBLE,
rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top,
hwnd, (HMENU)IDC_IKETIMEEXPIRE, g_hInst, NULL);
SetWindowPos (ppds->net.hwndIKETimeExpire,
GetDlgItem (hwnd, IDC_ENABLEIKETIMEEXPIRE),
0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
LoadString (g_hInst, IDS_EXPIREDAYSTEXT, sz, sizeof(sz));
SendMessage (ppds->net.hwndIKETimeExpire, PGP_DCM_SETTEXT,
(WPARAM)DAYS, (LPARAM)sz);
LoadString (g_hInst, IDS_EXPIREHOURSTEXT, sz, sizeof(sz));
SendMessage (ppds->net.hwndIKETimeExpire, PGP_DCM_SETTEXT,
(WPARAM)HOURS, (LPARAM)sz);
LoadString (g_hInst, IDS_EXPIREMINSTEXT, sz, sizeof(sz));
SendMessage (ppds->net.hwndIKETimeExpire, PGP_DCM_SETTEXT,
(WPARAM)MINS, (LPARAM)sz);
SendMessage (ppds->net.hwndIKETimeExpire, PGP_DCM_SETMINDURATION, 0,
(LPARAM)MINEXPIRESECONDS);
PGPGetPrefNumber (prefrefNet,
kPGPNetPrefIKETimeExpiration, &u);
SendMessage (ppds->net.hwndIKETimeExpire, PGP_DCM_SETDURATION, 0, u);
// initialize IKE time expiration on/off
b = CLLoadCheckBoxPref (hwnd, IDC_ENABLEIKETIMEEXPIRE,
ppds, prefrefNet, kPGPNetPrefEnableIKETimeExpiration);
if (!CLDisablePrefControl (ppds->net.hwndIKETimeExpire, 0,
ppds, prefrefNet, kPGPNetPrefIKETimeExpiration))
{
EnableWindow (ppds->net.hwndIKETimeExpire, b);
}
// initialize IKE byte expiration controls
#if PHASE1_BYTE_EXPIRATION_GUI_ENABLED
SendDlgItemMessage (hwnd, IDC_IKEBYTESPIN, UDM_SETRANGE,
0, (LPARAM)MAKELONG (MAXIKEMEGABYTES, MINIKEMEGABYTES));
SendDlgItemMessage (hwnd, IDC_IKEBYTES, EM_SETLIMITTEXT,
MAXIKEMEGABYTESDIGITS, 0);
PGPGetPrefNumber (prefrefNet,
kPGPNetPrefIKEKByteExpiration, &u);
SendDlgItemMessage (hwnd, IDC_IKEBYTESPIN, UDM_SETPOS,
0, (LPARAM)MAKELONG (u/1024, 0));
b = CLLoadCheckBoxPref (hwnd, IDC_ENABLEIKEBYTEEXPIRE,
ppds, prefrefNet, kPGPNetPrefEnableIKEKByteExpiration);
EnableWindow (GetDlgItem (hwnd, IDC_IKEBYTES), b);
EnableWindow (GetDlgItem (hwnd, IDC_IKEBYTESPIN), b);
CLDisablePrefControl (hwnd, IDC_IKEBYTES,
ppds, prefrefNet, kPGPNetPrefIKEKByteExpiration);
#endif // PHASE1_BYTE_EXPIRATION_GUI_ENABLED
// create and initialize IPSEC expiration date/time picker control
GetWindowRect (GetDlgItem (hwnd, IDC_IPSECTIMEEXPIRE), &rc);
MapWindowPoints (NULL, hwnd, (LPPOINT)&rc, 2);
ppds->net.hwndIPSECTimeExpire = CreateWindowEx (
WS_EX_CLIENTEDGE,
WC_PGPDURATION, "",
WS_CHILD|WS_TABSTOP|WS_VISIBLE,
rc.left, rc.top, rc.right-rc.left, rc.bottom-rc.top,
hwnd, (HMENU)IDC_IPSECTIMEEXPIRE, g_hInst, NULL);
SetWindowPos (ppds->net.hwndIPSECTimeExpire,
GetDlgItem (hwnd, IDC_ENABLEIPSECTIMEEXPIRE),
0, 0, 0, 0, SWP_NOMOVE|SWP_NOSIZE);
LoadString (g_hInst, IDS_EXPIREDAYSTEXT, sz, sizeof(sz));
SendMessage (ppds->net.hwndIPSECTimeExpire, PGP_DCM_SETTEXT,
(WPARAM)DAYS, (LPARAM)sz);
LoadString (g_hInst, IDS_EXPIREHOURSTEXT, sz, sizeof(sz));
SendMessage (ppds->net.hwndIPSECTimeExpire, PGP_DCM_SETTEXT,
(WPARAM)HOURS, (LPARAM)sz);
LoadString (g_hInst, IDS_EXPIREMINSTEXT, sz, sizeof(sz));
SendMessage (ppds->net.hwndIPSECTimeExpire, PGP_DCM_SETTEXT,
(WPARAM)MINS, (LPARAM)sz);
SendMessage (ppds->net.hwndIPSECTimeExpire, PGP_DCM_SETMINDURATION, 0,
(LPARAM)MINEXPIRESECONDS);
PGPGetPrefNumber (prefrefNet,
kPGPNetPrefIPSECTimeExpiration, &u);
SendMessage (ppds->net.hwndIPSECTimeExpire, PGP_DCM_SETDURATION, 0, u);
// initialize IPSEC time expiration on/off
b = CLLoadCheckBoxPref (hwnd, IDC_ENABLEIPSECTIMEEXPIRE,
ppds, prefrefNet, kPGPNetPrefEnableIPSECTimeExpiration);
if (!CLDisablePrefControl (ppds->net.hwndIPSECTimeExpire, 0,
ppds, prefrefNet, kPGPNetPrefIPSECTimeExpiration))
{
EnableWindow (ppds->net.hwndIPSECTimeExpire, b);
}
// initialize IPSEC byte expiration controls
SendDlgItemMessage (hwnd, IDC_IPSECBYTESPIN, UDM_SETRANGE,
0, (LPARAM)MAKELONG (MAXIPSECMEGABYTES, MINIPSECMEGABYTES));
SendDlgItemMessage (hwnd, IDC_IPSECBYTES, EM_SETLIMITTEXT,
MAXIPSECMEGABYTESDIGITS, 0);
PGPGetPrefNumber (prefrefNet,
kPGPNetPrefIPSECKByteExpiration, &u);
SendDlgItemMessage (hwnd, IDC_IPSECBYTESPIN, UDM_SETPOS,
0, (LPARAM)MAKELONG (u/1024, 0));
b = CLLoadCheckBoxPref (hwnd, IDC_ENABLEIPSECBYTEEXPIRE,
ppds, prefrefNet, kPGPNetPrefEnableIPSECKByteExpiration);
EnableWindow (GetDlgItem (hwnd, IDC_IPSECBYTES), b);
EnableWindow (GetDlgItem (hwnd, IDC_IPSECBYTESPIN), b);
CLDisablePrefControl (hwnd, IDC_IPSECBYTES,
ppds, prefrefNet, kPGPNetPrefIPSECKByteExpiration);
return FALSE;
}
case WM_HELP :
case WM_CONTEXTMENU :
return PGPclHtmlHelp (hwnd, uMsg, wParam, lParam,
(char*)kPGPclNetHelpFile, aGeneralIds);
case WM_COMMAND :
{
PGPPrefRef prefrefNet;
ppds = (PPREFSDLGSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
switch (LOWORD (wParam)) {
case IDC_ENABLEIKETIMEEXPIRE :
prefrefNet = CLGetPrefRefNet (ppds);
if (!CLDisablePrefControl (ppds->net.hwndIKETimeExpire, 0, ppds,
prefrefNet, kPGPNetPrefIKETimeExpiration))
{
EnableWindow (ppds->net.hwndIKETimeExpire,
IsDlgButtonChecked (hwnd,
IDC_ENABLEIKETIMEEXPIRE) == BST_CHECKED);
}
break;
#if PHASE1_BYTE_EXPIRATION_GUI_ENABLED
case IDC_ENABLEIKEBYTEEXPIRE :
prefrefNet = CLGetPrefRefNet (ppds);
if (!CLDisablePrefControl (hwnd, IDC_IKEBYTES, ppds,
prefrefNet, kPGPNetPrefIKEKByteExpiration))
{
if (IsDlgButtonChecked (
hwnd, IDC_ENABLEIKEBYTEEXPIRE) == BST_CHECKED)
{
EnableWindow (GetDlgItem (hwnd, IDC_IKEBYTES), TRUE);
EnableWindow (GetDlgItem (hwnd, IDC_IKEBYTESPIN), TRUE);
}
else
{
EnableWindow (GetDlgItem (hwnd, IDC_IKEBYTES), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_IKEBYTESPIN), FALSE);
}
}
break;
#endif // PHASE1_BYTE_EXPIRATION_GUI_ENABLED
case IDC_ENABLEIPSECTIMEEXPIRE :
prefrefNet = CLGetPrefRefNet (ppds);
if (!CLDisablePrefControl (ppds->net.hwndIPSECTimeExpire, 0, ppds,
prefrefNet, kPGPNetPrefIPSECTimeExpiration))
{
EnableWindow (ppds->net.hwndIPSECTimeExpire,
IsDlgButtonChecked (hwnd,
IDC_ENABLEIPSECTIMEEXPIRE) == BST_CHECKED);
}
break;
case IDC_ENABLEIPSECBYTEEXPIRE :
prefrefNet = CLGetPrefRefNet (ppds);
if (!CLDisablePrefControl (hwnd, IDC_IPSECBYTES, ppds,
prefrefNet, kPGPNetPrefIPSECKByteExpiration))
{
if (IsDlgButtonChecked (
hwnd, IDC_ENABLEIPSECBYTEEXPIRE) == BST_CHECKED)
{
EnableWindow (GetDlgItem (hwnd, IDC_IPSECBYTES), TRUE);
EnableWindow (GetDlgItem (hwnd, IDC_IPSECBYTESPIN), TRUE);
}
else
{
EnableWindow (GetDlgItem (hwnd, IDC_IPSECBYTES), FALSE);
EnableWindow (GetDlgItem (hwnd, IDC_IPSECBYTESPIN), FALSE);
}
}
break;
}
break;
}
case WM_NOTIFY :
{
LPNMHDR pnmhdr = (LPNMHDR) lParam;
switch (pnmhdr->code) {
case PSN_HELP :
PGPclHtmlHelp (hwnd, kPGPclHelpContext, 0, 0,
(char*)kPGPclNetHelpFile,
(DWORD*)IDH_PGPCLPREF_NETVPNDIALOG);
break;
case PSN_KILLACTIVE :
{
INT iMegaBytes;
#if PHASE1_BYTE_EXPIRATION_GUI_ENABLED
iMegaBytes = GetDlgItemInt (hwnd, IDC_IKEBYTES, NULL, FALSE);
SetWindowLong (hwnd, DWL_MSGRESULT, FALSE);
if ((iMegaBytes < MINIKEMEGABYTES) ||
(iMegaBytes > MAXIKEMEGABYTES))
{
CHAR sz[128];
CHAR szMsg[128];
INT i;
LoadString (g_hInst,
IDS_INVALIDIKELIMIT, sz, sizeof(sz));
wsprintf (szMsg, sz,
MINIKEMEGABYTES, MAXIKEMEGABYTES);
LoadString (g_hInst,
IDS_CAPTIONINFO, sz, sizeof(sz));
MessageBox (hwnd, szMsg, sz, MB_OK|MB_ICONINFORMATION);
if (iMegaBytes < MINIKEMEGABYTES)
i = MINIKEMEGABYTES;
else
i = MAXIKEMEGABYTES;
SetDlgItemInt (hwnd, IDC_IKEBYTES, i, FALSE);
SetFocus (GetDlgItem (hwnd, IDC_IKEBYTES));
SendDlgItemMessage (hwnd,
IDC_IKEBYTES, EM_SETSEL, 0, -1);
SetWindowLong (hwnd, DWL_MSGRESULT, TRUE);
return TRUE;
}
#endif // PHASE1_BYTE_EXPIRATION_GUI_ENABLED
iMegaBytes = GetDlgItemInt (hwnd, IDC_IPSECBYTES, NULL, FALSE);
if ((iMegaBytes < MINIPSECMEGABYTES) ||
(iMegaBytes > MAXIPSECMEGABYTES))
{
CHAR sz[128];
CHAR szMsg[128];
INT i;
LoadString (g_hInst,
IDS_INVALIDIPSECLIMIT, sz, sizeof(sz));
wsprintf (szMsg, sz,
MINIPSECMEGABYTES, MAXIPSECMEGABYTES);
LoadString (g_hInst,
IDS_CAPTIONINFO, sz, sizeof(sz));
MessageBox (hwnd, szMsg, sz, MB_OK|MB_ICONINFORMATION);
if (iMegaBytes < MINIPSECMEGABYTES)
i = MINIPSECMEGABYTES;
else
i = MAXIPSECMEGABYTES;
SetDlgItemInt (hwnd, IDC_IPSECBYTES, i, FALSE);
SetFocus (GetDlgItem (hwnd, IDC_IPSECBYTES));
SendDlgItemMessage (hwnd,
IDC_IPSECBYTES, EM_SETSEL, 0, -1);
SetWindowLong (hwnd, DWL_MSGRESULT, TRUE);
}
return TRUE;
}
case PSN_APPLY :
{
UINT u;
ppds = (PPREFSDLGSTRUCT)GetWindowLong (hwnd, GWL_USERDATA);
if (ppds->bUseClientLibNetPrefs &&
!PGPPrefRefIsValid (ppds->prefrefNet))
{
PGPclPeekClientLibPrefRefs (NULL, &ppds->prefrefNet);
}
CLSaveCheckBoxPref (hwnd, IDC_ENABLEVPN,
ppds->prefrefNet, kPGPNetPrefEnableVPN);
if (IsDlgButtonChecked (hwnd, IDC_ATTEMPTSECURE) == BST_CHECKED)
u = kPGPnet_UM_Attempt;
else if (IsDlgButtonChecked (hwnd, IDC_ALLOWSECURE) == BST_CHECKED)
u = kPGPnet_UM_Allow;
else
u = kPGPnet_UM_Require;
PGPclErrorBox (hwnd, PGPSetPrefNumber (
ppds->prefrefNet, kPGPnetPrefUnconfiguredMode, u));
CLSaveCheckBoxPref (hwnd, IDC_ENABLEIKETIMEEXPIRE,
ppds->prefrefNet, kPGPNetPrefEnableIKETimeExpiration);
SendMessage (ppds->net.hwndIKETimeExpire,
PGP_DCM_GETDURATION, 0, (LPARAM)&u);
PGPSetPrefNumber (ppds->prefrefNet,
kPGPNetPrefIKETimeExpiration, u);
#if PHASE1_BYTE_EXPIRATION_GUI_ENABLED
CLSaveCheckBoxPref (hwnd, IDC_ENABLEIKEBYTEEXPIRE,
ppds->prefrefNet, kPGPNetPrefEnableIKEKByteExpiration);
u = GetDlgItemInt (hwnd, IDC_IKEBYTES, NULL, FALSE) * 1024;
PGPSetPrefNumber (ppds->prefrefNet,
kPGPNetPrefIKEKByteExpiration, u);
#endif // PHASE1_BYTE_EXPIRATION_GUI_ENABLED
CLSaveCheckBoxPref (hwnd, IDC_ENABLEIPSECTIMEEXPIRE,
ppds->prefrefNet, kPGPNetPrefEnableIPSECTimeExpiration);
SendMessage (ppds->net.hwndIPSECTimeExpire,
PGP_DCM_GETDURATION, 0, (LPARAM)&u);
PGPSetPrefNumber (ppds->prefrefNet,
kPGPNetPrefIPSECTimeExpiration, u);
CLSaveCheckBoxPref (hwnd, IDC_ENABLEIPSECBYTEEXPIRE,
ppds->prefrefNet, kPGPNetPrefEnableIPSECKByteExpiration);
u = GetDlgItemInt (hwnd, IDC_IPSECBYTES, NULL, FALSE) * 1024;
PGPSetPrefNumber (ppds->prefrefNet,
kPGPNetPrefIPSECKByteExpiration, u);
ppds->net.bPrefsModified = TRUE;
ppds->returnErr = kPGPError_NoErr;
SetWindowLong (hwnd, DWL_MSGRESULT, PSNRET_NOERROR);
return TRUE;
}
}
break;
}
}
return FALSE;
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?