📄 ssl.cpp
字号:
/* --- 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 + -