/[winpt]/trunk/Src/wptProxySettingsDlg.cpp
ViewVC logotype

Contents of /trunk/Src/wptProxySettingsDlg.cpp

Parent Directory Parent Directory | Revision Log Revision Log


Revision 22 - (show annotations)
Wed Aug 10 11:33:35 2005 UTC (19 years, 6 months ago) by twoaday
File size: 5266 byte(s)
2005-08-06  Timo Schulz  <twoaday@freakmail.de>
 
        * wptGPGME.cpp (keycache_update): Reload OpenPGP parts
        of the secret key.
        (keycache_init): cache name of secret keyring.
        * wptKeyList.cpp (keylist_upd_key): Do not add long keyid.
        (get_key_type): Do not assume 'ultimate' means key pair.
        * wptKeyEditDlgs.cpp (diff_time): New.
        (keyedit_addsubkey_dlg_proc): Changed design and use
        diff_time. Drop checks for invalid keylength (< 1024, > 4096)
        because the combo box automatically handles this.
        * wptKeyManager.cpp (km_set_implicit_trust): Return error code.
        * wptGPG.cpp (get_backup_name): New.
        (gnupg_backup_keyrings): Rotate backup names, from 0..3.
        * wptClipImportDialog.cpp (clip_import_dlg_proc): Free memory.
        * wptKeyManagerDlg.cpp (keymanager_dlg_proc): Use 0x short keyid and
        not the long keyid.


1 /* wptProxySettingsDlg.cpp - Dialog for the proxy settings
2 * Copyright (C) 2002-2005 Timo Schulz
3 *
4 * This file is part of WinPT.
5 *
6 * WinPT is free software; you can redistribute it and/or modify
7 * it under the terms of the GNU General Public License as published by
8 * the Free Software Foundation; either version 2 of the License, or
9 * (at your option) any later version.
10 *
11 * WinPT is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with WinPT; if not, write to the Free Software Foundation,
18 * Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
19 */
20 #include <windows.h>
21
22 #include "../resource.h"
23 #include "wptTypes.h"
24 #include "wptKeyserver.h"
25 #include "wptW32API.h"
26 #include "wptErrors.h"
27 #include "wptNLS.h"
28 #include "wptKeyserver.h"
29
30
31 static int
32 check_number (HWND dlg, int id)
33 {
34 char buf[32];
35 size_t i;
36
37 GetDlgItemText (dlg, id, buf, 31);
38 for (i=0; i < strlen (buf); i++) {
39 if (!isdigit (buf[i]))
40 return -1;
41 }
42 return 0;
43 }
44
45
46 static int
47 read_proxy (HWND dlg, keyserver_proxy_ctx * ctx)
48 {
49 char t[512];
50 int ncount = 0, pos = 0;
51
52 ncount = GetDlgItemText( dlg, IDC_PROXY_PWD, t, DIM (t)-1);
53 if( ncount )
54 ctx->pass = strdup( t );
55 ncount = GetDlgItemText( dlg, IDC_PROXY_USER, t, DIM (t)-1);
56 if( ncount )
57 ctx->user = strdup( t );
58 ncount = GetDlgItemText( dlg, IDC_PROXY_HOST, t, DIM (t)-1);
59 if (ncount) {
60 if (check_IP_or_hostname (t)) {
61 msg_box (dlg, _("Invalid host/IP address."), _("Proxy Settings"), MB_ERR);
62 return -1;
63 }
64 /* XXX: check prefix */
65 if (!strncmp (t, "http://", 7))
66 pos = 7;
67 ctx->host = strdup (t + pos);
68 }
69 if (check_number (dlg, IDC_PROXY_PORT)) {
70 msg_box (dlg, _("Invalid port number."), _("Proxy Settings"), MB_ERR);
71 return -1;
72 }
73
74 ctx->port = GetDlgItemInt( dlg, IDC_PROXY_PORT, NULL, FALSE );
75 if( ctx->port < 0 || ctx->port > 65535 ) {
76 msg_box( dlg, _("Please select a value from 0-65535 for the port"), _("Proxy Settings"), MB_INFO );
77 return -1;
78 }
79 if( ctx->user && !ctx->pass || !ctx->user && ctx->pass ) {
80 msg_box( dlg, _("When you want to use authentication, "
81 "please fill out both fields."), _("Proxy Settings"), MB_ERR );
82 return -1;
83 }
84 if( ctx->host && !ctx->port || !ctx->host && ctx->port ) {
85 msg_box( dlg, _("Please enter a host name and a port."), _("Proxy Settings"), MB_INFO );
86 return -1;
87 }
88 return 0;
89 } /* read_proxy */
90
91
92 static void
93 enable_proxy_auth (HWND dlg, int val)
94 {
95 int mode = val? TRUE : FALSE;
96 EnableWindow (GetDlgItem (dlg, IDC_PROXY_PWD), mode);
97 EnableWindow (GetDlgItem (dlg, IDC_PROXY_USER), mode);
98 }
99
100
101 BOOL CALLBACK
102 keyserver_proxy_dlg_proc (HWND dlg, UINT msg, WPARAM wparam, LPARAM lparam)
103 {
104 const char *proxy = NULL, *user=NULL, *pass = NULL;
105 int port = 0, auth = 0;
106 int rc = 0;
107
108 switch (msg) {
109 case WM_INITDIALOG:
110 proxy = kserver_get_proxy (&port);
111 if (proxy) {
112 SetDlgItemText( dlg, IDC_PROXY_HOST, proxy );
113 SetDlgItemInt( dlg, IDC_PROXY_PORT, port, FALSE );
114 user = kserver_get_proxy_info( PROXY_USER );
115 if (user) {
116 SetDlgItemText (dlg, IDC_PROXY_USER, user);
117 CheckDlgButton (dlg, IDC_PROXY_AUTH, BST_CHECKED);
118 auth++;
119 }
120 pass = kserver_get_proxy_info(PROXY_PASS);
121 if (pass) {
122 SetDlgItemText( dlg, IDC_PROXY_PWD, pass );
123 auth++;
124 }
125 }
126 enable_proxy_auth (dlg, auth);
127 center_window (dlg);
128 SetForegroundWindow (dlg);
129 break;
130
131 case WM_SYSCOMMAND:
132 if( LOWORD (wparam) == SC_CLOSE)
133 EndDialog (dlg, TRUE);
134 return FALSE;
135
136 case WM_COMMAND:
137 switch (HIWORD (wparam)) {
138 case BN_CLICKED:
139 switch( (int)LOWORD( wparam ) ) {
140 case IDC_PROXY_AUTH:
141 if (IsDlgButtonChecked (dlg, IDC_PROXY_AUTH))
142 enable_proxy_auth (dlg, 1);
143 else
144 enable_proxy_auth (dlg, 0);
145 break;
146 }
147 break;
148 }
149
150 switch( LOWORD( wparam ) ) {
151 case IDOK:
152 if (IsDlgButtonChecked (dlg, IDC_PROXY_AUTH) &&
153 item_get_text_length (dlg, IDC_PROXY_HOST) == 0 &&
154 item_get_text_length (dlg, IDC_PROXY_USER) == 0 &&
155 item_get_text_length (dlg, IDC_PROXY_PWD) == 0) {
156 msg_box (dlg, _("Please fill out all required fields for authentication."),
157 _("Proxy Settings"), MB_WARN);
158 return FALSE;
159 }
160 keyserver_proxy_ctx ctx;
161 memset (&ctx, 0, sizeof (ctx));
162 if (read_proxy (dlg, &ctx))
163 return FALSE;
164 kserver_change_proxy (&ctx);
165 proxy_release (&ctx);
166 EndDialog (dlg, TRUE);
167 return TRUE;
168
169 case IDCANCEL:
170 EndDialog (dlg, FALSE);
171 return FALSE;
172 }
173 break;
174 }
175
176 return FALSE;
177 } /* keyserver_proxy_dlg_proc */

[email protected]
ViewVC Help
Powered by ViewVC 1.1.26