Commit a7945373dad2c47677f2605f8a6ee98744fe15e7

Authored by perry.werneck@gmail.com
1 parent c3b9eff7

Ativação do SSL pelo diálogo não estava reajustando a URL

src/lib3270/host.c
@@ -208,7 +208,7 @@ static void update_host(H3270 *h) @@ -208,7 +208,7 @@ static void update_host(H3270 *h)
208 h->host.srvc 208 h->host.srvc
209 )); 209 ));
210 210
211 - trace("hosturl=[%s]",h->host.full); 211 + trace("hosturl=[%s] ssl=%s",h->host.full,(h->options&LIB3270_OPTION_SSL) ? "yes" : "no");
212 212
213 } 213 }
214 214
src/lib3270/options.c
@@ -83,6 +83,15 @@ LIB3270_EXPORT void lib3270_set_options(H3270 *hSession, LIB3270_OPTION opt) @@ -83,6 +83,15 @@ LIB3270_EXPORT void lib3270_set_options(H3270 *hSession, LIB3270_OPTION opt)
83 { 83 {
84 CHECK_SESSION_HANDLE(hSession); 84 CHECK_SESSION_HANDLE(hSession);
85 hSession->options = opt; 85 hSession->options = opt;
  86 +
  87 + Replace(hSession->host.full,
  88 + lib3270_strdup_printf(
  89 + "%s%s:%s",
  90 + hSession->options&LIB3270_OPTION_SSL ? "tn3270s://" : "tn3270://",
  91 + hSession->host.current,
  92 + hSession->host.srvc
  93 + ));
  94 +
86 } 95 }
87 96
88 LIB3270_EXPORT unsigned short lib3270_get_color_type(H3270 *hSession) 97 LIB3270_EXPORT unsigned short lib3270_get_color_type(H3270 *hSession)
src/pw3270/hostdialog.c
@@ -32,107 +32,6 @@ @@ -32,107 +32,6 @@
32 32
33 /*--[ Globals ]--------------------------------------------------------------------------------------*/ 33 /*--[ Globals ]--------------------------------------------------------------------------------------*/
34 34
35 -/*  
36 - static const struct _host_type  
37 - {  
38 - const gchar * name;  
39 - const gchar * description;  
40 - LIB3270_OPTION option;  
41 - } host_type[] =  
42 - {  
43 - { "S390", N_( "IBM S/390" ), LIB3270_OPTION_S390 },  
44 - { "AS400", N_( "IBM AS/400" ), LIB3270_OPTION_AS400 },  
45 - { "TSO", N_( "Other (TSO)" ), LIB3270_OPTION_TSO },  
46 - { "VM/CMS", N_( "Other (VM/CMS)" ), 0 }  
47 - };  
48 -  
49 - static const struct _colortable  
50 - {  
51 - unsigned short colors;  
52 - const gchar * description;  
53 - } colortable[] =  
54 - {  
55 - { 16, N_( "16 colors" ) },  
56 - { 8, N_( "8 colors" ) },  
57 - { 2, N_( "Monochrome" ) },  
58 - };  
59 -*/  
60 -  
61 -/*--[ Implement ]------------------------------------------------------------------------------------*/  
62 -  
63 -/*  
64 - LIB3270_OPTION pw3270_options_by_hosttype(const gchar *systype)  
65 - {  
66 - int f;  
67 -  
68 - for(f=0;G_N_ELEMENTS(host_type);f++)  
69 - {  
70 - if(!g_ascii_strcasecmp(host_type[f].name,systype))  
71 - return host_type[f].option;  
72 - }  
73 -  
74 - g_message("Unexpected system type: \"%s\"",systype);  
75 - return 0;  
76 - }  
77 -  
78 -#if GTK_CHECK_VERSION(3,0,0)  
79 - static void set_row(int row, GtkWidget *widget, GtkGrid *container, const gchar *text)  
80 - {  
81 - GtkWidget *label = gtk_label_new_with_mnemonic(text);  
82 -  
83 - gtk_misc_set_alignment(GTK_MISC(label),0,0.5);  
84 -  
85 - gtk_grid_attach(container,label,0,row,1,1);  
86 - gtk_grid_attach(container,widget,1,row,1,1);  
87 -  
88 - gtk_label_set_mnemonic_widget(GTK_LABEL(label),widget);  
89 - }  
90 -#else  
91 - static void set_row(int row, GtkWidget *widget, GtkTable *container, const gchar *text)  
92 - {  
93 - GtkWidget *label = gtk_label_new_with_mnemonic(text);  
94 -  
95 - gtk_misc_set_alignment(GTK_MISC(label),0,0.5);  
96 -  
97 - gtk_table_attach(container,label,0,1,row,row+1,GTK_FILL,0,5,0);  
98 - gtk_table_attach(container,widget,1,2,row,row+1,GTK_FILL,0,0,0);  
99 -  
100 - gtk_label_set_mnemonic_widget(GTK_LABEL(label),widget);  
101 - }  
102 -#endif // GTK_CHECK_VERSION  
103 -  
104 - static void systype_changed(GtkComboBox *widget, int *iHostType)  
105 - {  
106 - GValue value = { 0, };  
107 - GtkTreeIter iter;  
108 -  
109 - if(!gtk_combo_box_get_active_iter(widget,&iter))  
110 - return;  
111 -  
112 - gtk_tree_model_get_value(gtk_combo_box_get_model(widget),&iter,1,&value);  
113 -  
114 - *iHostType = g_value_get_int(&value);  
115 -  
116 - trace("Selected host type: %s",host_type[*iHostType].name);  
117 -  
118 - }  
119 -  
120 - static void color_changed(GtkComboBox *widget, int *iColorTable)  
121 - {  
122 - GValue value = { 0, };  
123 - GtkTreeIter iter;  
124 -  
125 - if(!gtk_combo_box_get_active_iter(widget,&iter))  
126 - return;  
127 -  
128 - gtk_tree_model_get_value(gtk_combo_box_get_model(widget),&iter,1,&value);  
129 -  
130 - *iColorTable = g_value_get_int(&value);  
131 -  
132 - trace("Selected color type: %d",(int) colortable[*iColorTable].colors);  
133 -  
134 - }  
135 -*/  
136 void hostname_action(GtkAction *action, GtkWidget *widget) 35 void hostname_action(GtkAction *action, GtkWidget *widget)
137 { 36 {
138 H3270 * hSession = v3270_get_session(widget); 37 H3270 * hSession = v3270_get_session(widget);
@@ -147,288 +46,5 @@ @@ -147,288 +46,5 @@
147 46
148 v3270_select_host(widget); 47 v3270_select_host(widget);
149 48
150 -/*  
151 - const gchar * title = g_object_get_data(G_OBJECT(action),"title");  
152 - gchar * ptr;  
153 - gboolean again = TRUE;  
154 - int iHostType = 0;  
155 - int iColorTable = 0;  
156 -#if GTK_CHECK_VERSION(3,0,0)  
157 - GtkGrid * grid = GTK_GRID(gtk_grid_new());  
158 -#else  
159 - GtkTable * table = GTK_TABLE(gtk_table_new(3,4,FALSE));  
160 -#endif // GTK_CHECK_VERSION  
161 - GtkEntry * host = GTK_ENTRY(gtk_entry_new());  
162 - GtkEntry * port = GTK_ENTRY(gtk_entry_new());  
163 - GtkToggleButton * sslcheck = GTK_TOGGLE_BUTTON(gtk_check_button_new_with_mnemonic( _( "_Secure connection" ) ));  
164 - GtkWidget * dialog = gtk_dialog_new_with_buttons(  
165 - gettext(title ? title : N_( "Select hostname" )),  
166 - GTK_WINDOW(gtk_widget_get_toplevel(widget)),  
167 - GTK_DIALOG_MODAL|GTK_DIALOG_DESTROY_WITH_PARENT,  
168 - GTK_STOCK_CONNECT, GTK_RESPONSE_ACCEPT,  
169 - GTK_STOCK_CANCEL, GTK_RESPONSE_REJECT,  
170 - NULL );  
171 -  
172 - gtk_window_set_icon_name(GTK_WINDOW(dialog),GTK_STOCK_HOME);  
173 - gtk_entry_set_max_length(host,0xFF);  
174 - gtk_entry_set_width_chars(host,50);  
175 -  
176 - gtk_entry_set_max_length(port,6);  
177 - gtk_entry_set_width_chars(port,7);  
178 -  
179 -  
180 -#if GTK_CHECK_VERSION(3,0,0)  
181 -  
182 - gtk_grid_set_column_spacing(grid,5);  
183 - gtk_grid_set_row_spacing(grid,3);  
184 -  
185 - {  
186 - // Host info - GtkGrid version  
187 - struct _line  
188 - {  
189 - const gchar * label;  
190 - GtkWidget * widget;  
191 - } line[] =  
192 - {  
193 - { N_( "_Hostname:" ), GTK_WIDGET(host) },  
194 - { N_( "_Port:" ), GTK_WIDGET(port) }  
195 - };  
196 -  
197 - int f;  
198 - int c = 0;  
199 -  
200 - for(f=0;f<G_N_ELEMENTS(line);f++)  
201 - {  
202 - GtkWidget * label = gtk_label_new_with_mnemonic( gettext(line[f].label) );  
203 - gtk_label_set_mnemonic_widget(GTK_LABEL(label),line[f].widget);  
204 -  
205 - gtk_grid_attach(grid,label,c,0,1,1);  
206 - gtk_grid_attach(grid,line[f].widget,c+1,0,3,1);  
207 - c += 4;  
208 - }  
209 -  
210 - gtk_grid_attach_next_to(grid,GTK_WIDGET(sslcheck),GTK_WIDGET(host),GTK_POS_BOTTOM,1,1);  
211 -  
212 - }  
213 -#else  
214 - {  
215 - // Host info - GtkTable version  
216 - struct _line  
217 - {  
218 - const gchar * label;  
219 - GtkWidget * widget;  
220 - GtkAttachOptions xoptions;  
221 - } line[] =  
222 - {  
223 - { N_( "_Hostname:" ), GTK_WIDGET(host), GTK_EXPAND|GTK_FILL },  
224 - { N_( "_Port:" ), GTK_WIDGET(port), GTK_FILL }  
225 - };  
226 -  
227 - int f;  
228 -  
229 - for(f=0;f<G_N_ELEMENTS(line);f++)  
230 - {  
231 - int col = f*3;  
232 -  
233 - GtkWidget * label = gtk_label_new_with_mnemonic( gettext(line[f].label) );  
234 - gtk_label_set_mnemonic_widget(GTK_LABEL(label),line[f].widget);  
235 - gtk_table_attach(table,label,col,col+1,0,1,0,0,2,2);  
236 - gtk_table_attach(table,line[f].widget,col+1,col+2,0,1,line[f].xoptions,0,2,2);  
237 - }  
238 -  
239 - gtk_table_attach(table,GTK_WIDGET(sslcheck),1,2,1,2,GTK_EXPAND|GTK_FILL,0,0,0);  
240 - }  
241 -#endif // GTK_CHECK_VERSION  
242 -  
243 - {  
244 - // Host options  
245 - const gchar * systype = g_object_get_data(G_OBJECT(action),"type");  
246 - const gchar * colortype = g_object_get_data(G_OBJECT(action),"colors");  
247 -  
248 - int row = 0;  
249 - GtkWidget * expander = gtk_expander_new_with_mnemonic(_( "_Host options"));  
250 -  
251 -#if GTK_CHECK_VERSION(3,0,0)  
252 - GtkGrid * container = GTK_GRID(gtk_grid_new());  
253 -  
254 - gtk_grid_set_column_spacing(container,5);  
255 - gtk_grid_set_row_spacing(container,3);  
256 -  
257 -#else  
258 - GtkTable * container = GTK_TABLE(gtk_table_new(3,2,FALSE));  
259 -#endif // GTK_CHECK_VERSION  
260 -  
261 -  
262 - if(!systype)  
263 - {  
264 - // No system type defined, ask user  
265 - gchar * str = get_string_from_config("host","systype",host_type[0].name);  
266 - GtkTreeModel * model = (GtkTreeModel *) gtk_list_store_new(2,G_TYPE_STRING,G_TYPE_INT);  
267 - GtkWidget * widget = gtk_combo_box_new_with_model(model);  
268 - GtkCellRenderer * renderer = gtk_cell_renderer_text_new();  
269 -  
270 - int f;  
271 -  
272 - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, TRUE);  
273 - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(widget), renderer, "text", 0, NULL);  
274 -  
275 - for(f=0;f<G_N_ELEMENTS(host_type);f++)  
276 - {  
277 - GtkTreeIter iter;  
278 -  
279 - gtk_list_store_append((GtkListStore *) model,&iter);  
280 - gtk_list_store_set((GtkListStore *) model, &iter, 0, gettext(host_type[f].description), 1, f, -1);  
281 -  
282 - if(!g_ascii_strcasecmp(host_type[f].name,str))  
283 - gtk_combo_box_set_active(GTK_COMBO_BOX(widget),iHostType=f);  
284 - }  
285 -  
286 - g_free(str);  
287 -  
288 - set_row(row++,widget,container,_( "System _type:" ));  
289 -  
290 - g_signal_connect(G_OBJECT(widget),"changed",G_CALLBACK(systype_changed),&iHostType);  
291 -  
292 - }  
293 - else  
294 - {  
295 - int f;  
296 -  
297 - iHostType = -1;  
298 - for(f=0;f<G_N_ELEMENTS(host_type);f++)  
299 - {  
300 - if(!g_ascii_strcasecmp(systype,host_type[f].name))  
301 - {  
302 - g_message("Host set to %s (%s) by action property",host_type[f].name,host_type[f].description);  
303 - iHostType = f;  
304 - break;  
305 - }  
306 - }  
307 -  
308 - if(iHostType == -1)  
309 - {  
310 - iHostType = 0;  
311 - g_message("Unexpected host type \"%s\", using defaults",systype);  
312 - }  
313 -  
314 - }  
315 -  
316 - if(!colortype)  
317 - {  
318 - // NO colortype defined, ask user  
319 - unsigned short colors = (unsigned short) get_integer_from_config("host","colortype",16);  
320 - GtkTreeModel * model = (GtkTreeModel *) gtk_list_store_new(2,G_TYPE_STRING,G_TYPE_INT);  
321 - GtkWidget * widget = gtk_combo_box_new_with_model(model);  
322 - GtkCellRenderer * renderer = gtk_cell_renderer_text_new();  
323 -  
324 - int f;  
325 -  
326 - gtk_cell_layout_pack_start(GTK_CELL_LAYOUT(widget), renderer, TRUE);  
327 - gtk_cell_layout_set_attributes(GTK_CELL_LAYOUT(widget), renderer, "text", 0, NULL);  
328 -  
329 - for(f=0;f<G_N_ELEMENTS(colortable);f++)  
330 - {  
331 - GtkTreeIter iter;  
332 -  
333 - gtk_list_store_append((GtkListStore *) model,&iter);  
334 - gtk_list_store_set((GtkListStore *) model, &iter, 0, gettext(colortable[f].description), 1, (int) f, -1);  
335 -  
336 - if(colortable[f].colors == colors)  
337 - gtk_combo_box_set_active(GTK_COMBO_BOX(widget),iColorTable=f);  
338 - }  
339 -  
340 - set_row(row++,widget,container,_("_Color table:"));  
341 -  
342 - g_signal_connect(G_OBJECT(widget),"changed",G_CALLBACK(color_changed),&iColorTable);  
343 -  
344 - }  
345 - else  
346 - {  
347 - #warning TODO: Configurar tabela de cores de acordo com colortype  
348 - }  
349 -  
350 - gtk_container_add(GTK_CONTAINER(expander),GTK_WIDGET(container));  
351 -  
352 -#if GTK_CHECK_VERSION(3,0,0)  
353 - gtk_grid_attach_next_to(grid,GTK_WIDGET(expander),GTK_WIDGET(sslcheck),GTK_POS_BOTTOM,1,1);  
354 -#else  
355 - gtk_table_attach(table,expander,1,2,2,3,GTK_EXPAND|GTK_FILL,0,0,0);  
356 -#endif // GTK_CHECK_VERSION  
357 -  
358 - }  
359 -  
360 -#if GTK_CHECK_VERSION(3,0,0)  
361 - gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),GTK_WIDGET(grid),FALSE,FALSE,2);  
362 - gtk_widget_show_all(GTK_WIDGET(grid));  
363 - gtk_container_set_border_width(GTK_CONTAINER(grid),5);  
364 -#else  
365 - gtk_container_set_border_width(GTK_CONTAINER(table),5);  
366 - gtk_box_pack_start(GTK_BOX(gtk_dialog_get_content_area(GTK_DIALOG(dialog))),GTK_WIDGET(table),FALSE,FALSE,2);  
367 - gtk_widget_show_all(GTK_WIDGET(table));  
368 -#endif  
369 -  
370 - {  
371 - H3270 *hSession = v3270_get_session(widget);  
372 - gchar *uri = get_string_from_config("host","uri","");  
373 -  
374 - if(uri && *uri)  
375 - lib3270_set_host(hSession,uri);  
376 -  
377 - g_free(uri);  
378 -  
379 - gtk_entry_set_text(host,lib3270_get_hostname(hSession));  
380 - gtk_entry_set_text(port,lib3270_get_srvcname(hSession));  
381 - gtk_toggle_button_set_active(sslcheck,(lib3270_get_options(hSession) & LIB3270_OPTION_SSL) ? TRUE : FALSE);  
382 - }  
383 -  
384 -  
385 - while(again)  
386 - {  
387 - gtk_widget_set_sensitive(dialog,TRUE);  
388 - switch(gtk_dialog_run(GTK_DIALOG(dialog)))  
389 - {  
390 - case GTK_RESPONSE_ACCEPT:  
391 - gtk_widget_set_sensitive(dialog,FALSE);  
392 -  
393 -#if GTK_CHECK_VERSION(2,18,0)  
394 - gtk_widget_set_visible(dialog,FALSE);  
395 -#else  
396 - gtk_widget_hide(dialog);  
397 -#endif  
398 - set_string_to_config("host","systype",host_type[iHostType].name);  
399 - set_integer_to_config("host","colortype",colortable[iColorTable].colors);  
400 -  
401 - v3270_set_session_color_type(widget,colortable[iColorTable].colors);  
402 -  
403 -// if(!lib3270_connect(v3270_get_session(widget),hostname,1))  
404 - if(!lib3270_connect_host( v3270_get_session(widget),  
405 - gtk_entry_get_text(host),  
406 - gtk_entry_get_text(port),  
407 - host_type[iHostType].option | (gtk_toggle_button_get_active(sslcheck) ? LIB3270_OPTION_SSL : LIB3270_OPTION_DEFAULTS)))  
408 - {  
409 - again = FALSE;  
410 - }  
411 - else  
412 - {  
413 -#if GTK_CHECK_VERSION(2,18,0)  
414 - gtk_widget_set_visible(dialog,TRUE);  
415 -#else  
416 - gtk_widget_show(dialog);  
417 -#endif  
418 - }  
419 -  
420 -// g_free(hostname);  
421 - break;  
422 -  
423 - case GTK_RESPONSE_REJECT:  
424 - again = FALSE;  
425 - break;  
426 - }  
427 - }  
428 -  
429 - gtk_widget_destroy(dialog);  
430 -  
431 -// g_free(cfghost);  
432 -*/  
433 } 49 }
434 50
src/pw3270/v3270/hostselect.c
@@ -433,6 +433,7 @@ LIB3270_EXPORT int v3270_host_select_apply(V3270HostSelectWidget *widget) @@ -433,6 +433,7 @@ LIB3270_EXPORT int v3270_host_select_apply(V3270HostSelectWidget *widget)
433 433
434 lib3270_set_hostname(widget->hSession,gtk_entry_get_text(widget->entry[ENTRY_HOSTNAME])); 434 lib3270_set_hostname(widget->hSession,gtk_entry_get_text(widget->entry[ENTRY_HOSTNAME]));
435 lib3270_set_srvcname(widget->hSession,gtk_entry_get_text(widget->entry[ENTRY_SRVCNAME])); 435 lib3270_set_srvcname(widget->hSession,gtk_entry_get_text(widget->entry[ENTRY_SRVCNAME]));
  436 +
436 lib3270_set_options(widget->hSession,widget->options); 437 lib3270_set_options(widget->hSession,widget->options);
437 438
438 return lib3270_connect(widget->hSession,0); 439 return lib3270_connect(widget->hSession,0);