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

📄 ssl.cpp

📁 mini http server,可以集成嵌入到程序中,实现简单的web功能
💻 CPP
📖 第 1 页 / 共 2 页
字号:

			/* --- validation depth, CA Certificate path and filename --- */
			pVal = AD_lookupValue( __pConfig, "SSL", "Depth" );
			::SendMessage( hWndDepth, WM_SETTEXT, 0, (LPARAM)pVal );
			pVal = AD_lookupValue( __pConfig, "SSL", "CaCertPath" );
			::SendMessage( hWndCaCertPath, WM_SETTEXT, 0, (LPARAM)pVal );
			pVal = AD_lookupValue( __pConfig, "SSL", "CaCertFile" );
			::SendMessage( hWndCaCertFile, WM_SETTEXT, 0, (LPARAM)pVal );

			/* --- List of ciphers --- */
			pVal = AD_lookupValue( __pConfig, "SSL", "Ciphers" );
			::SendMessage( hWndCiphers, WM_SETTEXT, 0, (LPARAM)pVal );

			AD_UnChanged( hDlg );
			};
			break;

		case WM_COMMAND:
			if ( GET_WM_COMMAND_CMD(wParam, lParam)==BN_CLICKED )
				{
				switch( GET_WM_COMMAND_ID( wParam, lParam) )
					{
					case IDC_SSL:
						Internal_updateSSL( ::SendMessage( hWndSsl, BM_GETCHECK,
							0, 0 ) == BST_CHECKED );
						Internal_updateURL( hDlg );
						break;
					case IDC_SSL2:
					case IDC_SSL3:
						::SendMessage( hWndTls1, BM_SETCHECK, (FALSE), 0 );
						break;
					case IDC_TLS1:
						::SendMessage( hWndSsl2, BM_SETCHECK, (FALSE), 0 );
						::SendMessage( hWndSsl3, BM_SETCHECK, (FALSE), 0 );
						break;
					case IDC_NONE:
						__iValidation = 0; break;
					case IDC_OPTIONAL:
						__iValidation = 1; break;
					case IDC_MANDATORY:
						__iValidation = 2; break;

					case IDC_NEW:
						{
						DlgData data;
						const char *pTmp = szBuf;

						// copy ssl servername
						data.pSslServername = pTmp;
						strcpy( (char *)pTmp, AD_lookupValue( __pConfig, "General", "Host" ) );
						pTmp = data.pSslServername + strlen(data.pSslServername);
						pTmp++;

						// copy ssl private key filename
						data.pSslKeyFilename = pTmp;
						SendMessage( hWndPkFile, WM_GETTEXT, BUF_SIZE,(LPARAM)pTmp );
						pTmp = data.pSslKeyFilename + strlen(data.pSslKeyFilename);
						pTmp++;

						// copy ssl certificate filename
						data.pSslCertFilename = pTmp;
						SendMessage( hWndCertFile, WM_GETTEXT, BUF_SIZE,(LPARAM)pTmp );
						pTmp = data.pSslCertFilename + strlen(data.pSslCertFilename);

						DialogBoxParam(
							::GetModuleHandle( NULL ),
							MAKEINTRESOURCE( IDD_GENKEYS ),
							hDlg,
							(DLGPROC)fnGenSslKeys,
							(LPARAM)&data
							);
						break;
						}

					default:;
					};

				/* --- mark property sheet as modified --- */
				AD_Changed( hDlg );
				}
			else if ( GET_WM_COMMAND_CMD(wParam, lParam)==EN_CHANGE )
				{
				switch( GET_WM_COMMAND_ID( wParam, lParam) )
					{
					case IDC_PORT:
						Internal_updateURL( hDlg );
						break;
					case IDC_PKEYFILE:
						EnableWindow( hWndKeygen,
							::SendMessage( hWndPkFile, EM_LINELENGTH, 0, 0 ) &&
							::SendMessage( hWndCertFile, EM_LINELENGTH, 0, 0 ) 
							);
						break;
					case IDC_CERTFILE:
						EnableWindow( hWndKeygen,
							::SendMessage( hWndPkFile, EM_LINELENGTH, 0, 0 ) &&
							::SendMessage( hWndCertFile, EM_LINELENGTH, 0, 0 )
							);
						break;
					default:;
						/* --- mark property sheet as modified --- */
						AD_Changed( hDlg );
					};
				};
			break;

		case WM_DESTROY:
			break;

		case WM_NOTIFY:
			switch( ((NMHDR *)lParam)->code )
				{
				case PSN_SETACTIVE:
					{
					int iSaveChanged = AD_IsChanged();
					SendMessage( hWndPort, WM_SETTEXT, 0, (LPARAM)
						AD_lookupValue( __pConfig, "General", "Port" ) );

					const char *pTest = AD_lookupValue( __pConfig, "Internal", \
						"ServerIOObjectLine" );
					SendMessage( hWndSsl, BM_SETCHECK, (WPARAM)strstr( pTest, "SSLIO" ), 0 );
					Internal_updateSSL( ::SendMessage( hWndSsl, BM_GETCHECK,
							0, 0 ) == BST_CHECKED );
					Internal_updateURL( hDlg );
					if ( !iSaveChanged ) { AD_UnChanged( hDlg ); };
					SetWindowLong( hDlg, DWL_MSGRESULT, FALSE );
					return (TRUE);
					}

				case PSN_QUERYCANCEL:
					return AD_cancel( hDlg );
				
				case PSN_KILLACTIVE:
					if ( AD_IsChanged() )
					{
					*szBuf = 0;
					SendMessage( hWndPort, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					int iPort = atoi( szBuf );
					if ( iPort<0 || iPort>65535 )
						{
						/*
						** Give message and abort change
						*/
						MessageBox( hDlg, "Port must be in the range [0..65536]",
							"Port Field Error", MB_OK );
						SetFocus( hWndPort );
						SendMessage( hWndPort, EM_SETSEL, 0, -1 );
						SetWindowLong( hDlg, DWL_MSGRESULT, PSNRET_INVALID_NOCHANGEPAGE );
						return (TRUE);
						};
					AD_replaceValue( __pConfig, "General", "Port", szBuf ); 
					SendMessage( hWndURL, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					AD_replaceValue( __pConfig, "Identity", "URL", szBuf );

					if ( ::SendMessage( hWndSsl, BM_GETCHECK, 0, 0 )==BST_CHECKED )
						{
						AD_replaceValue( __pConfig, "Internal", "ServerIOObjectLine", \
							"\tIOObject SSLIOObject" );
						}
					else
						{
						AD_replaceValue( __pConfig, "Internal", "ServerIOObjectLine", \
							"\tIOObject ServerIOObject" );
						}

					/* --- SSL version and options --- */
					int iIdx = 0;
					if ( ::SendMessage( hWndSsl2, BM_GETCHECK, 0, 0 )) { iIdx += 1; };
					if ( ::SendMessage( hWndSsl3, BM_GETCHECK, 0, 0 )) { iIdx += 2; };
					if ( ::SendMessage( hWndTls1, BM_GETCHECK, 0, 0 )) { iIdx += 4; };
					if ( ::SendMessage( hWndDebug, BM_GETCHECK, 0, 0 )) { iIdx += 8; };
					if ( ::SendMessage( hWndBug, BM_GETCHECK, 0, 0 )) { iIdx += 16; };
					if ( ::SendMessage( hWndHack, BM_GETCHECK, 0, 0 )) { iIdx += 32; };
					AD_replaceValue( __pConfig, "SSL", "Options", itoa( iIdx,szBuf,10 ));

					/* server Private Key and Certificate file path --- */
					if ( SendMessage( hWndPkFile, EM_LINELENGTH, 0, 0 )==0 )
						{
						/*
						** Give message and abort change
						*/
						MessageBox( hDlg, "Private key filename must not be empty.",
							"Configuration Error", MB_OK | MB_ICONEXCLAMATION );
						SetFocus( hWndPkFile );
						SendMessage( hWndPkFile, EM_SETSEL, 0, -1 );
						SetWindowLong( hDlg, DWL_MSGRESULT, PSNRET_INVALID_NOCHANGEPAGE );
						return (TRUE);
						};

					*szBuf = 0;
					::SendMessage( hWndPkFile, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					AD_replaceValue( __pConfig, "SSL", "PKeyFile", szBuf );

					if ( SendMessage( hWndCertFile, EM_LINELENGTH, 0, 0 )==0 )
						{
						/*
						** Give message and abort change
						*/
						MessageBox( hDlg, "Certificate key filename must not be empty.",
							"Configuration Error", MB_OK | MB_ICONEXCLAMATION );
						SetFocus( hWndCertFile );
						SendMessage( hWndCertFile, EM_SETSEL, 0, -1 );
						SetWindowLong( hDlg, DWL_MSGRESULT, PSNRET_INVALID_NOCHANGEPAGE );
						return (TRUE);
						};
					*szBuf = 0;
					::SendMessage( hWndCertFile, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					AD_replaceValue( __pConfig, "SSL", "CertFile", szBuf );

					/* --- User cert validation --- */
					AD_replaceValue( __pConfig, "SSL", "Validation",
						itoa( __iValidation,szBuf,10 ));

					/* --- validation depth, CA Certificate path and filename --- */
					*szBuf = 0;
					::SendMessage( hWndDepth, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					AD_replaceValue( __pConfig, "SSL", "Depth", szBuf );
					*szBuf = 0;
					::SendMessage( hWndCaCertPath, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					AD_replaceValue( __pConfig, "SSL", "CaCertPath", szBuf );
					*szBuf = 0;
					::SendMessage( hWndCaCertFile, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					AD_replaceValue( __pConfig, "SSL", "CaCertFile", szBuf );

					/* --- List of ciphers --- */
					*szBuf = 0;
					::SendMessage( hWndCiphers, WM_GETTEXT, BUF_SIZE, (LPARAM)szBuf );
					AD_replaceValue( __pConfig, "SSL", "Ciphers", szBuf );

					}
					SetWindowLong( hDlg, DWL_MSGRESULT, FALSE );
					return (TRUE);

				default:
					return (FALSE);
				};
			break;

		default:
			return (FALSE);
		};

	return (TRUE);
}

/*____________________________________________________________________________*\
 *
 Description:
	Definitions and global values
\*____________________________________________________________________________*/
DLGPROC fnSSL = (DLGPROC)DialogProc;

⌨️ 快捷键说明

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