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

📄 main.c

📁 PGP8.0源码 请认真阅读您的文件包然后写出其具体功能
💻 C
📖 第 1 页 / 共 2 页
字号:

				LoadString(g_hInstance, IDS_TITLE, szTitle, sizeof(szTitle));
				LoadString(g_hInstance, IDS_E_NOLDAP, szMsg, sizeof(szMsg));
			
				if (!Config.szLDAPServer) // !Config.bUpdateAdminPrefs ||
				{
					MessageBox(hwndDlg, szMsg, szTitle, MB_ICONEXCLAMATION);
					break;
				}

				err = PGPclGetPrefsFromServer(Config.pgpContext, 
						Config.tlsContext, hwndDlg, Config.prefRef,
						Config.prefRefNet);
				
				if (IsPGPError(err) && (err != kPGPError_UserAbort))
					PGPclErrorBox(hwndDlg, err);
				else
				{
					FreeAdminOptions(&Config);
					InitAdminOptions(g_pgpContext, &Config, FALSE);
					LoadAdminOptions(&Config);
					EnableWindow(GetDlgItem(hwndDlg, IDC_UPDATESERVER), TRUE);
					EnableWindow(GetDlgItem(hwndDlg, IDC_CREATEINSTALL), TRUE);
				}

				bReturn = TRUE;
			}
			break;

		case IDC_UPDATESERVER:
			{
				char szTitle[255];
				char szMsg[255];
				PGPPrefArray *pArray;
				char szRNG[_MAX_PATH];

				LoadString(g_hInstance, IDS_TITLE, szTitle, sizeof(szTitle));
				LoadString(g_hInstance, IDS_E_NOLDAP, szMsg, sizeof(szMsg));
			
				if (!Config.szLDAPServer) // !Config.bUpdateAdminPrefs || 
				{
					MessageBox(hwndDlg, szMsg, szTitle, MB_ICONEXCLAMATION);
					break;
				}

				if (!Config.bCopyNetHosts)
				{
					PGPGetPrefArray(Config.prefRefNet, kPGPNetPrefHostArray, 
						&pArray);
					PGPClearPrefData(Config.prefRefNet, kPGPNetPrefHostArray);
					PGPSavePrefFile(Config.prefRefNet);
					PGPWritePrefsHash(Config.pgpContext, Config.prefRefNet);
				}

				PGPGetPrefStringBuffer(Config.prefRef, kPGPPrefRNGSeedFile,
					_MAX_PATH, szRNG);
				PGPSetPrefString(Config.prefRef, kPGPPrefRNGSeedFile, "");
				PGPSavePrefFile(Config.prefRef);

				err = PGPclSendPrefsToServer(Config.pgpContext, 
						Config.tlsContext, hwndDlg, Config.prefRef, 
						Config.prefRefNet, Config.keyDB);

				PGPSetPrefString(Config.prefRef, kPGPPrefRNGSeedFile, szRNG);
				PGPSavePrefFile(Config.prefRef);

				if (!Config.bCopyNetHosts)
				{
					PGPSetPrefArray(Config.prefRefNet, kPGPNetPrefHostArray,
						pArray);
					PGPFreePrefArray(pArray);
					PGPSavePrefFile(Config.prefRefNet);
					PGPWritePrefsHash(Config.pgpContext, Config.prefRefNet);
				}
				
				if (IsPGPError(err) && (err != kPGPError_UserAbort))
					PGPclErrorBox(hwndDlg, err);
				else
					Config.bSave = FALSE;

				bReturn = TRUE;
			}
			break;

		case IDC_CREATEINSTALL:
			{
				PGPUInt32 nUserAccountStatus;
				PGPBoolean bFirstKeyGenerated;
				PGPPrefArray *pArray;
				char szRNG[_MAX_PATH];

				PGPGetPrefNumber(Config.prefRef, kPGPPrefUserAccountStatus,
					&nUserAccountStatus);
				PGPGetPrefBoolean(Config.prefRef, kPGPPrefFirstKeyGenerated,
					&bFirstKeyGenerated);

				if (Config.bPreselectInstall && 
					Config.bRemainSilentAfterInstall)
				{
					PGPSetPrefNumber(Config.prefRef, kPGPPrefUserAccountStatus,
						kPGPPrefPGPDisabled);
				}
				else
				{
					PGPSetPrefNumber(Config.prefRef, kPGPPrefUserAccountStatus,
						kPGPPrefPGPNotInitialized);
				}

				PGPSetPrefBoolean(Config.prefRef, kPGPPrefFirstKeyGenerated,
					FALSE);
				PGPGetPrefStringBuffer(Config.prefRef, kPGPPrefRNGSeedFile,
					_MAX_PATH, szRNG);
				PGPSetPrefString(Config.prefRef, kPGPPrefRNGSeedFile, "");
				PGPSavePrefFile(Config.prefRef);

				if (!Config.bCopyNetHosts)
				{
					PGPGetPrefArray(Config.prefRefNet, kPGPNetPrefHostArray, 
						&pArray);
					PGPClearPrefData(Config.prefRefNet, kPGPNetPrefHostArray);
					PGPSavePrefFile(Config.prefRefNet);
					PGPWritePrefsHash(Config.pgpContext, Config.prefRefNet);
				}

				SaveAdminOptions(&Config);
				DialogBoxParam(g_hInstance, MAKEINTRESOURCE(IDD_INSTALLER),
					hwndDlg, InstallerDlgProc, (LPARAM) &Config);
				Config.bSave = FALSE;

				PGPSetPrefBoolean(Config.prefRef, kPGPPrefFirstKeyGenerated,
					bFirstKeyGenerated);
				PGPSetPrefNumber(Config.prefRef, kPGPPrefUserAccountStatus,
					nUserAccountStatus);
				PGPSetPrefString(Config.prefRef, kPGPPrefRNGSeedFile, szRNG);
				PGPSavePrefFile(Config.prefRef);

				if (!Config.bCopyNetHosts)
				{
					PGPSetPrefArray(Config.prefRefNet, kPGPNetPrefHostArray,
						pArray);
					PGPFreePrefArray(pArray);
					PGPSavePrefFile(Config.prefRefNet);
					PGPWritePrefsHash(Config.pgpContext, Config.prefRefNet);
				}

				bReturn = TRUE;
				break;
			}
		}
		break;

	case WM_CLOSE:
		if (Config.bSave)
		{
			char szTitle[255];
			char szMsg[255];
			int nResult;

			LoadString(g_hInstance, IDS_TITLE, szTitle, 254);
			LoadString(g_hInstance, IDS_E_NOTSAVED, szMsg, 254);

			nResult = MessageBox(hwndDlg, szMsg, szTitle, MB_YESNO | 
						MB_ICONQUESTION);

			if (nResult == IDNO)
				break;
		}
		HtmlHelp(NULL, NULL, HH_CLOSE_ALL, 0);
		EndDialog(hwndDlg, 0);
		break;
	}

	return bReturn;
}


//-------------------------------------------------------------------|
// Load DIB bitmap and associated palette

static HPALETTE 
CreateDIBPalette (LPBITMAPINFO lpbmi, 
				  LPINT lpiNumColors) 
{
	LPBITMAPINFOHEADER lpbi;
	LPLOGPALETTE lpPal;
	HANDLE hLogPal;
	HPALETTE hPal = NULL;
	INT i;
 
	lpbi = (LPBITMAPINFOHEADER)lpbmi;
	if (lpbi->biBitCount <= 8) {
		*lpiNumColors = (1 << lpbi->biBitCount);
	}
	else
		*lpiNumColors = 0;  // No palette needed for 24 BPP DIB
 
	if (*lpiNumColors) {
		hLogPal = GlobalAlloc (GHND, sizeof (LOGPALETTE) +
                             sizeof (PALETTEENTRY) * (*lpiNumColors));
		lpPal = (LPLOGPALETTE) GlobalLock (hLogPal);
		lpPal->palVersion = 0x300;
		lpPal->palNumEntries = *lpiNumColors;
 
		for (i = 0;  i < *lpiNumColors;  i++) {
			lpPal->palPalEntry[i].peRed   = lpbmi->bmiColors[i].rgbRed;
			lpPal->palPalEntry[i].peGreen = lpbmi->bmiColors[i].rgbGreen;
			lpPal->palPalEntry[i].peBlue  = lpbmi->bmiColors[i].rgbBlue;
			lpPal->palPalEntry[i].peFlags = 0;
		}
		hPal = CreatePalette (lpPal);
		GlobalUnlock (hLogPal);
		GlobalFree (hLogPal);
   }
   return hPal;
}


static HBITMAP 
LoadResourceBitmap (HINSTANCE hInstance, 
					LPSTR lpString,
					HPALETTE FAR* lphPalette) 
{
	HRSRC  hRsrc;
	HGLOBAL hGlobal;
	HBITMAP hBitmapFinal = NULL;
	LPBITMAPINFOHEADER lpbi;
	HDC hdc;
    INT iNumColors;
 
	if (hRsrc = FindResource (hInstance, lpString, RT_BITMAP)) {
		hGlobal = LoadResource (hInstance, hRsrc);
		lpbi = (LPBITMAPINFOHEADER)LockResource (hGlobal);
 
		hdc = GetDC(NULL);
		*lphPalette =  CreateDIBPalette ((LPBITMAPINFO)lpbi, &iNumColors);
		if (*lphPalette) {
			SelectPalette (hdc,*lphPalette,FALSE);
			RealizePalette (hdc);
		}
 
		hBitmapFinal = CreateDIBitmap (hdc,
                   (LPBITMAPINFOHEADER)lpbi,
                   (LONG)CBM_INIT,
                   (LPSTR)lpbi + lpbi->biSize + iNumColors * sizeof(RGBQUAD),
                   (LPBITMAPINFO)lpbi,
                   DIB_RGB_COLORS );
 
		ReleaseDC (NULL,hdc);
		UnlockResource (hGlobal);
		FreeResource (hGlobal);
	}
	return (hBitmapFinal);
}


static void sNewPrefs()
{
	PFLFileSpecRef  prefFile;
	PGPPrefRef		prefRef = NULL;
	PGPPrefRef		prefRefNet = NULL;
	char			szPath[_MAX_PATH];

	InitAdminOptions(g_pgpContext, &Config, FALSE);
	Config.prefRef = NULL;
	Config.prefRefNet = NULL;

	GetTempPath(sizeof(Config.szClientPrefs), Config.szClientPrefs);
	strcpy(Config.szNetPrefs, Config.szClientPrefs);
	strcpy(Config.szDefaultKeys, Config.szClientPrefs);
	strcat(Config.szClientPrefs, "client.txt");
	strcat(Config.szNetPrefs, "net.txt");
	strcat(Config.szDefaultKeys, "keys.asc");

	CloseHandle(CreateFile(Config.szClientPrefs, GENERIC_WRITE, 0, NULL,
		OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL));
	CloseHandle(CreateFile(Config.szNetPrefs, GENERIC_WRITE, 0, NULL,
		OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL));
	CloseHandle(CreateFile(Config.szDefaultKeys, GENERIC_WRITE, 0, NULL, 
		OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL));

	PFLNewFileSpecFromFullPath(Config.memoryMgr, Config.szClientPrefs, 
		&prefFile);
	PGPOpenPrefFile(prefFile, clientDefaults, clientDefaultsSize, 
		&Config.prefRef);
	PFLFreeFileSpec(prefFile);
	PGPSavePrefFile(Config.prefRef);

	PFLNewFileSpecFromFullPath(Config.memoryMgr, Config.szNetPrefs, 
		&prefFile);
	PGPOpenPrefFile(prefFile, netDefaults, netDefaultsSize, 
		&Config.prefRefNet);
	PFLFreeFileSpec(prefFile);
	PGPSavePrefFile(Config.prefRefNet);

	PGPclPeekClientLibPrefRefs(&prefRef, &prefRefNet);
	PGPGetPrefStringBuffer(prefRef, kPGPPrefPublicKeyringFile, _MAX_PATH,
		szPath);
	PGPSetPrefString(Config.prefRef, kPGPPrefPublicKeyringFile, szPath);
	PGPGetPrefStringBuffer(prefRef, kPGPPrefPrivateKeyringFile, _MAX_PATH,
		szPath);
	PGPSetPrefString(Config.prefRef, kPGPPrefPrivateKeyringFile, szPath);
	PGPGetPrefStringBuffer(prefRef, kPGPPrefRNGSeedFile, _MAX_PATH,
		szPath);
	PGPSetPrefString(Config.prefRef, kPGPPrefRNGSeedFile, szPath);

	if (prefRefNet != NULL)
	{
		PGPGetPrefStringBuffer(prefRefNet, kPGPNetPrefPublicKeyringFile, 
			_MAX_PATH, szPath);
		PGPSetPrefString(Config.prefRefNet, kPGPNetPrefPublicKeyringFile, 
			szPath);
		PGPGetPrefStringBuffer(prefRefNet, kPGPNetPrefPrivateKeyringFile, 
			_MAX_PATH, szPath);
		PGPSetPrefString(Config.prefRefNet, kPGPNetPrefPrivateKeyringFile, 
			szPath);
	}

	return;
}


static void sSavePrefs(HWND hwndMain)
{
	OPENFILENAME openFile;
	char szFile[MAX_PATH];
	char szTitle[256];
				
	strcpy(szFile, "PGPPrefs.txt");
	LoadString(g_hInstance, IDS_SAVEPREFS, szTitle, 255);
				
	openFile.lStructSize = sizeof(OPENFILENAME);
	openFile.hwndOwner = hwndMain;
	openFile.lpstrFilter =	"Preference Files (*.txt)\0"
							"*.txt\0";
	openFile.lpstrCustomFilter = NULL;
	openFile.nFilterIndex = 1;
	openFile.lpstrFile = szFile;
	openFile.nMaxFile = MAX_PATH-1;
	openFile.lpstrFileTitle = NULL;
	openFile.lpstrInitialDir = NULL;
	openFile.lpstrTitle = szTitle;
	openFile.Flags = OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT | OFN_NOCHANGEDIR;
	openFile.lpstrDefExt = "txt";
				
	if (!GetSaveFileName(&openFile))
		return;

	CopyFile(Config.szClientPrefs, szFile, FALSE);

	strcpy(szFile, "PGPnetPrefs.txt");
	LoadString(g_hInstance, IDS_SAVENETPREFS, szTitle, 255);
	if (GetSaveFileName(&openFile))
		CopyFile(Config.szNetPrefs, szFile, FALSE);

	Config.bSave = FALSE;
	return;
}


static void sFreeData()
{
	FreeAdminOptions(&Config);
	
	if (Config.prefRef != NULL)
	{
		PGPFreePrefs(Config.prefRef);
		DeleteFile(Config.szClientPrefs);
	}

	if (Config.prefRefNet != NULL)
	{
		PGPFreePrefs(Config.prefRefNet);
		DeleteFile(Config.szNetPrefs);
	}

	if (strlen(Config.szDefaultKeys) > 0)
		DeleteFile(Config.szDefaultKeys);

	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 + -