Changeset: 42865269de47 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB/rev/42865269de47 Modified Files: clients/odbc/winsetup/resource.h clients/odbc/winsetup/setup.c clients/odbc/winsetup/setup.rc Branch: default Log Message:
Improve positioning and sizes of group box, data entry fields. Added unit info text to dialog after timeout (milliseconds) and timezone (minutes) data entry fields. Improve some error message text. Add data validation and error reporting for the on/off fields: Autocommit and TLS. diffs (235 lines): diff --git a/clients/odbc/winsetup/resource.h b/clients/odbc/winsetup/resource.h --- a/clients/odbc/winsetup/resource.h +++ b/clients/odbc/winsetup/resource.h @@ -40,7 +40,6 @@ #define IDC_EDIT_CLIENTKEY 2024 #define IDC_EDIT_CLIENTCERT 2025 -//#define IDC_BUTTON_CANCEL 2031 #define IDC_BUTTON_TEST 2031 #define IDC_BUTTON_HELP 2032 diff --git a/clients/odbc/winsetup/setup.c b/clients/odbc/winsetup/setup.c --- a/clients/odbc/winsetup/setup.c +++ b/clients/odbc/winsetup/setup.c @@ -93,17 +93,17 @@ struct data { char *uid; char *pwd; char *host; - char *port; + char *port; /* positive integer */ char *database; char *schema; - char *logintimeout; - char *replytimeout; - char *replysize; - char *autocommit; - char *timezone; + char *logintimeout; /* empty, 0 or positive integer (millisecs) */ + char *replytimeout; /* empty, 0 or positive integer (millisecs) */ + char *replysize; /* empty, 0 or positive integer */ + char *autocommit; /* only on or off allowed */ + char *timezone; /* empty, 0 or signed integer (minutes) */ char *logfile; // TLS settings - char *use_tls; + char *use_tls; /* only on or off allowed */ char *servercert; char *servercerthash; char *clientkey; @@ -181,7 +181,7 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR if (datap->request != ODBC_ADD_DSN || datap->dsn == NULL || *datap->dsn == 0) { GetDlgItemText(hwndDlg, IDC_EDIT_DSN, buf, sizeof(buf)); if (!SQLValidDSN(buf)) { - MessageBox(hwndDlg, "Invalid Datasource Name", NULL, MB_ICONERROR); + MessageBox(hwndDlg, "Invalid or missing Data Source Name", NULL, MB_ICONERROR); return TRUE; } if (datap->dsn) @@ -264,6 +264,12 @@ DialogProc(HWND hwndDlg, UINT uMsg, WPAR case IDCANCEL: EndDialog(hwndDlg, LOWORD(wParam)); return TRUE; + case IDC_BUTTON_TEST: + MessageBox(hwndDlg, "Test Connection not yet implemented", NULL, MB_ICONERROR); + return TRUE; + case IDC_BUTTON_HELP: + MessageBox(hwndDlg, "Help not yet implemented", NULL, MB_ICONERROR); + return TRUE; } default: ODBCLOG("DialogProc 0x%x 0x%x 0x%x\n", uMsg, (unsigned) wParam, (unsigned) lParam); @@ -277,7 +283,7 @@ ConfigDSN(HWND parent, WORD request, LPC { struct data data; char *dsn = NULL; - BOOL rc; + BOOL rc = TRUE; /* we're optimistic: default return value */ ODBCLOG("ConfigDSN %d %s %s 0x%" PRIxPTR "\n", request, driver ? driver : "(null)", attributes ? attributes : "(null)", (uintptr_t) &data); @@ -419,9 +425,6 @@ ConfigDSN(HWND parent, WORD request, LPC data.clientkey ? data.clientkey : "(null)", data.clientcert ? data.clientcert : "(null)"); - /* we're optimistic: default return value */ - rc = TRUE; - if (parent) { switch (DialogBoxParam(instance, MAKEINTRESOURCE(IDD_SETUP_DIALOG), @@ -443,7 +446,7 @@ ConfigDSN(HWND parent, WORD request, LPC if (!SQLValidDSN(data.dsn)) { rc = FALSE; if (parent) - MessageBox(parent, "Invalid Datasource Name", NULL, MB_ICONERROR); + MessageBox(parent, "Invalid or missing Data Source Name", NULL, MB_ICONERROR); SQLPostInstallerError(ODBC_ERROR_INVALID_NAME, "Invalid driver name"); goto finish; } @@ -455,14 +458,14 @@ ConfigDSN(HWND parent, WORD request, LPC if (drv && *drv) { free(drv); if (parent && - MessageBox(parent, "Replace existing Datasource Name?", NULL, MB_OKCANCEL | MB_ICONQUESTION) != IDOK) { + MessageBox(parent, "Replace existing Data Source Name?", NULL, MB_OKCANCEL | MB_ICONQUESTION) != IDOK) { goto finish; } ODBCLOG("ConfigDSN removing dsn %s\n", data.dsn); if (!SQLRemoveDSNFromIni(data.dsn)) { rc = FALSE; - MessageBox(parent, "Failed to remove old Datasource Name", NULL, MB_ICONERROR); - SQLPostInstallerError(ODBC_ERROR_REQUEST_FAILED, "Failed to remove old Datasource Name"); + MessageBox(parent, "Failed to remove old Data Source Name", NULL, MB_ICONERROR); + SQLPostInstallerError(ODBC_ERROR_REQUEST_FAILED, "Failed to remove old Data Source Name"); goto finish; } } else if (drv) @@ -471,18 +474,38 @@ ConfigDSN(HWND parent, WORD request, LPC if (dsn && !SQLRemoveDSNFromIni(dsn)) { rc = FALSE; if (parent) - MessageBox(parent, "Failed to remove old Datasource Name", NULL, MB_ICONERROR); - SQLPostInstallerError(ODBC_ERROR_REQUEST_FAILED, "Failed to remove old Datasource Name"); + MessageBox(parent, "Failed to remove old Data Source Name", NULL, MB_ICONERROR); + SQLPostInstallerError(ODBC_ERROR_REQUEST_FAILED, "Failed to remove old Data Source Name"); goto finish; } if (!SQLWriteDSNToIni(data.dsn, driver)) { rc = FALSE; if (parent) - MessageBox(parent, "Failed to add new Datasource Name", NULL, MB_ICONERROR); - SQLPostInstallerError(ODBC_ERROR_REQUEST_FAILED, "Failed to add new Datasource Name"); + MessageBox(parent, "Failed to add new Data Source Name", NULL, MB_ICONERROR); + SQLPostInstallerError(ODBC_ERROR_REQUEST_FAILED, "Failed to add new Data Source Name"); goto finish; } } + /* some data validation on entered strings */ + if (data.autocommit) { + if (strcmp("on", data.autocommit) != 0 + && strcmp("off", data.autocommit) != 0) { + rc = FALSE; + if (parent) + MessageBox(parent, "Autocommit may only be set to on or off.", NULL, MB_ICONERROR); + goto finish; + } + } + if (data.use_tls) { + if (strcmp("on", data.use_tls) != 0 + && strcmp("off", data.use_tls) != 0) { + rc = FALSE; + if (parent) + MessageBox(parent, "TLS Encrypt may only be set to on or off.", NULL, MB_ICONERROR); + goto finish; + } + } + ODBCLOG("ConfigDSN writing values: DSN=%s UID=%s PWD=%s Host=%s Port=%s Database=%s Schema=%s LoginTimeout=%s ReplyTimeout=%s ReplySize=%s AutoCommit=%s TimeZone=%s LogFile=%s TLSs=%s Cert=%s CertHash=%s ClientKey=%s ClientCert=%s\n", data.dsn ? data.dsn : "(null)", data.uid ? data.uid : "(null)", @@ -572,6 +595,7 @@ ConfigDSN(HWND parent, WORD request, LPC free(data.clientkey); if (data.clientcert) free(data.clientcert); + ODBCLOG("ConfigDSN returning %s\n", rc ? "TRUE" : "FALSE"); return rc; } diff --git a/clients/odbc/winsetup/setup.rc b/clients/odbc/winsetup/setup.rc --- a/clients/odbc/winsetup/setup.rc +++ b/clients/odbc/winsetup/setup.rc @@ -109,13 +109,13 @@ STYLE DS_MODALFRAME | WS_CAPTION CAPTION "MonetDB ODBC Data Source Setup" FONT 8, "MS Shell Dlg", 0, 0, 0x0 BEGIN - EDITTEXT IDC_EDIT_DSN,80,40,128,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_DESC,80,56,128,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_UID,80,72,128,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_PWD,80,88,128,14,ES_AUTOHSCROLL | ES_PASSWORD - EDITTEXT IDC_EDIT_HOST,80,104,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_DSN,80,40,134,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_DESC,80,56,134,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_UID,80,72,134,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_PWD,80,88,134,14,ES_AUTOHSCROLL | ES_PASSWORD + EDITTEXT IDC_EDIT_HOST,80,104,134,14,ES_AUTOHSCROLL EDITTEXT IDC_EDIT_PORT,80,120,32,14,ES_AUTOHSCROLL | ES_NUMBER - EDITTEXT IDC_EDIT_DATABASE,80,136,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_DATABASE,80,136,134,14,ES_AUTOHSCROLL LTEXT "Data Source Name:",IDC_STATIC,7,42,63,8 LTEXT "Description:",IDC_STATIC,7,58,63,8 LTEXT "User Name:",IDC_STATIC,7,74,63,8 @@ -123,32 +123,35 @@ BEGIN LTEXT "Host:",IDC_STATIC,7,106,63,8 LTEXT "Port:",IDC_STATIC,7,122,63,8 LTEXT "Database:",IDC_STATIC,7,138,63,8 - GROUPBOX "Advanced settings",IDC_STATIC,7,154,214,132 + GROUPBOX "Advanced Settings",IDC_STATIC,7,154,214,130 LTEXT "Schema:",IDC_STATIC,12,170,63,8 LTEXT "Login Timeout:",IDC_STATIC,12,186,63,8 + LTEXT "milliseconds",IDC_STATIC,130,186,63,8 LTEXT "Reply Timeout:",IDC_STATIC,12,202,63,8 + LTEXT "milliseconds",IDC_STATIC,130,202,63,8 LTEXT "Reply Size:",IDC_STATIC,12,218,63,8 LTEXT "Autocommit on/off:",IDC_STATIC,12,234,63,8 LTEXT "Time Zone:",IDC_STATIC,12,250,63,8 + LTEXT "minutes East of UTC",IDC_STATIC,150,250,63,8 LTEXT "Log File:",IDC_STATIC,12,266,63,8 - EDITTEXT IDC_EDIT_SCHEMA,80,168,128,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_LOGINTIMEOUT,80,184,32,14,ES_AUTOHSCROLL | ES_NUMBER - EDITTEXT IDC_EDIT_REPLYTIMEOUT,80,200,32,14,ES_AUTOHSCROLL | ES_NUMBER - EDITTEXT IDC_EDIT_REPLYSIZE,80,216,32,14,ES_AUTOHSCROLL | ES_NUMBER + EDITTEXT IDC_EDIT_SCHEMA,80,168,134,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_LOGINTIMEOUT,80,184,44,14,ES_AUTOHSCROLL | ES_NUMBER + EDITTEXT IDC_EDIT_REPLYTIMEOUT,80,200,44,14,ES_AUTOHSCROLL | ES_NUMBER + EDITTEXT IDC_EDIT_REPLYSIZE,80,216,44,14,ES_AUTOHSCROLL | ES_NUMBER EDITTEXT IDC_EDIT_AUTOCOMMIT,80,232,24,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_TIMEZONE,80,248,128,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_LOGFILE,80,264,128,14,ES_AUTOHSCROLL - GROUPBOX "Secure Connection",IDC_STATIC,7,288,214,100 - LTEXT "TLS Encrypt on/off:",IDC_STATIC,12,304,66,8 - LTEXT "Server Certificate:",IDC_STATIC,12,320,66,8 - LTEXT "Server Cert. Hash:",IDC_STATIC,12,336,70,8 - LTEXT "Client Key:",IDC_STATIC,12,352,63,8 - LTEXT "Client Certificate:",IDC_STATIC,12,368,66,8 - EDITTEXT IDC_EDIT_USETLS,80,302,24,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_SERVERCERT,80,318,128,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_SERVERCERTHASH,80,334,128,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_CLIENTKEY,80,350,128,14,ES_AUTOHSCROLL - EDITTEXT IDC_EDIT_CLIENTCERT,80,366,128,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_TIMEZONE,80,248,64,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_LOGFILE,80,264,134,14,ES_AUTOHSCROLL + GROUPBOX "Secure Connection",IDC_STATIC,7,292,214,98 + LTEXT "TLS Encrypt on/off:",IDC_STATIC,12,308,66,8 + LTEXT "Server Certificate:",IDC_STATIC,12,324,66,8 + LTEXT "Server Cert. Hash:",IDC_STATIC,12,340,63,8 + LTEXT "Client Key:",IDC_STATIC,12,356,63,8 + LTEXT "Client Certificate:",IDC_STATIC,12,372,66,8 + EDITTEXT IDC_EDIT_USETLS,80,306,24,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_SERVERCERT,80,322,134,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_SERVERCERTHASH,80,338,134,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_CLIENTKEY,80,354,134,14,ES_AUTOHSCROLL + EDITTEXT IDC_EDIT_CLIENTCERT,80,370,134,14,ES_AUTOHSCROLL DEFPUSHBUTTON "OK",IDOK,7,397,50,14 PUSHBUTTON "Cancel",IDCANCEL,62,397,50,14 PUSHBUTTON "Test",IDC_BUTTON_TEST,117,397,50,14 _______________________________________________ checkin-list mailing list -- checkin-list@monetdb.org To unsubscribe send an email to checkin-list-le...@monetdb.org