View difference between Paste ID: FsPCFvRG and A9pVsFxN
SHOW: | | - or go back to the newest paste.
1
diff -rup putty-src-orig\CMDLINE.C putty-src\CMDLINE.C
2
--- putty-src-orig\CMDLINE.C	Thu Dec 23 17:32:28 2010
3
+++ putty-src\CMDLINE.C	Fri Jun 22 20:23:55 2012
4
@@ -6,6 +6,9 @@
5
 #include <stdio.h>
6
 #include <assert.h>
7
 #include <stdlib.h>
8
+/***************Patch GNS3 PuTTY *******************/
9
+#include <time.h>
10
+/***************************************************/
11
 #include "putty.h"
12
 
13
 /*
14
@@ -165,6 +168,12 @@ static int cmdline_check_unavailable(int
15
 int cmdline_process_param(char *p, char *value, int need_save, Config *cfg)
16
 {
17
     int ret = 0;
18
+	/***************Patch GNS3 PuTTY *******************/
19
+    char       buf[80];
20
+    time_t     now = time(0);
21
+    struct tm  tstruct;
22
+    tstruct = *localtime(&now);
23
+	/***************************************************/
24
 
25
     if (!strcmp(p, "-load")) {
26
 	RETURN(2);
27
@@ -226,6 +235,73 @@ int cmdline_process_param(char *p, char 
28
 	strncpy(cfg->username, value, sizeof(cfg->username));
29
 	cfg->username[sizeof(cfg->username) - 1] = '\0';
30
     }
31
+	/***************Patch GNS3 PuTTY *******************/
32
+    if (!strcmp(p, "-wt")) {
33
+    RETURN(2);
34
+    SAVEABLE(0);
35
+    strncpy(cfg->wintitle, value, sizeof(cfg->wintitle));
36
+    cfg->wintitle[sizeof(cfg->wintitle) - 1] = '\0';
37
+    cfg->no_remote_wintitle = 1; //No remote title
38
+	cfg->win_name_always    = 1; //Don't change the title when is minimized
39
+    }
40
+	if (!strcmp(p, "-gns3")) {
41
+	RETURN(2);
42
+	SAVEABLE(0);
43
+	cfg->close_on_exit      = 1; //Never, Don't close the window
44
+	cfg->warn_on_close      = 0; //No warn before closing the window
45
+	cfg->beep               = 0; //No beeps (Iritating!)
46
+	cfg->alt_f4             = 1; //Allow Alt+F4 to close the window
47
+	cfg->alt_space          = 1; //Allow Alt+Space to display the system menu
48
+	cfg->blinktext          = 1; //Allow text blinking effect
49
+	cfg->no_remote_resize   = 1; //No remote resize
50
+	cfg->savelines          = 2500; //Scroll Lines Buffer
51
+	cfg->push_one_enter     = 1; //Push a enter key on telnet/serial console
52
+	cfg->no_annoying_msgbox = 1; //Replace MsgBox errors with a message in the title
53
+	cfg->reconnect_after_error = atoi(value); //Automatically reconnect a inactive session on error after x seconds
54
+	}
55
+    if (!strcmp(p, "-skin")) {
56
+    RETURN(2);
57
+    SAVEABLE(0);
58
+	switch(atoi(value))
59
+		{
60
+		case 1: //night theme
61
+			cfg->colours[0][0] = 15;  cfg->colours[0][1] = 15;  cfg->colours[0][2] = 15;  //Defauld Foreground
62
+			cfg->colours[2][0] = 255; cfg->colours[2][1] = 255; cfg->colours[2][2] = 255; //Defauld Background
63
+			break;
64
+		case 2: //desert theme
65
+			cfg->colours[0][0] = 255; cfg->colours[0][1] = 255; cfg->colours[0][2] = 255; //Defauld Foreground
66
+			cfg->colours[2][0] = 51;  cfg->colours[2][1] = 51;  cfg->colours[2][2] = 51;  //Defauld Background
67
+			break;
68
+		case 3: //matrix theme
69
+			cfg->colours[0][0] = 27;  cfg->colours[0][1] = 255; cfg->colours[0][2] = 27;  //Defauld Foreground
70
+			cfg->colours[2][0] = 30;  cfg->colours[2][1] = 30;  cfg->colours[2][2] = 30;  //Defauld Background
71
+			break;
72
+		case 4: //Gold theme
73
+			cfg->colours[0][0] = 255; cfg->colours[0][1] = 190; cfg->colours[0][2] = 27;  //Defauld Foreground
74
+			cfg->colours[2][0] = 51;  cfg->colours[2][1] = 51;  cfg->colours[2][2] = 51;  //Defauld Background
75
+			break;
76
+		default: //default theme
77
+			cfg->colours[0][0] = 187; cfg->colours[0][1] = 187; cfg->colours[0][2] = 187; //Defauld Foreground
78
+			cfg->colours[2][0] = 0;   cfg->colours[2][1] = 0;   cfg->colours[2][2] = 0;   //Defauld Background
79
+			break;
80
+		}
81
+	}
82
+	if (!strcmp(p, "-log")) { //don't use "/, \, |, *, ?, <, >, :" in -wt variable! :D
83
+    RETURN(2);
84
+    SAVEABLE(0);
85
+    strftime(buf, sizeof(buf), "%d.%b.%y_%H.%M.%S", &tstruct);
86
+	if(!strlen(cfg->wintitle)){
87
+		sprintf(cfg->logfilename.path, "%s\\%s_%s.log\0", value, buf, cfg->host);     // ex: C:\dir\14.Jun.12_21.40.29_127.0.0.1.log
88
+		}
89
+	else{
90
+		sprintf(cfg->logfilename.path, "%s\\%s_%s.log\0", value, buf, cfg->wintitle); // ex: C:\dir\14.Jun.12_21.40.29_R1.log
91
+	}
92
+	cfg->logtype  = 1; //printable output
93
+    cfg->logflush = 1; //flush log file
94
+    cfg->logxfovr = 0; //append (anyway the log is created with the current date/time and will be imposible to have a append event)
95
+    }
96
+	/***************************************************/
97
+
98
     if (!strcmp(p, "-loghost")) {
99
 	RETURN(2);
100
 	UNAVAILABLE_IN(TOOLTYPE_NONNETWORK);
101
diff -rup putty-src-orig\CONFIG.C putty-src\CONFIG.C
102
--- putty-src-orig\CONFIG.C	Fri Jan 14 19:57:00 2011
103-
+++ putty-src\CONFIG.C	Fri Jun 22 19:39:52 2012
103+
+++ putty-src\CONFIG.C	Thu Jul 12 00:52:53 2012
104-
@@ -2385,4 +2385,34 @@ void setup_config_box(struct controlbox 
104+
@@ -2385,4 +2385,39 @@ void setup_config_box(struct controlbox 
105
 			  sshbug_handler, I(offsetof(Config,sshbug_maxpkt2)));
106
 	}
107
     }
108
+	/***************Patch GNS3 PuTTY *******************/
109
+    /*
110
+     * The GNS3 panel.
111
+     */
112
+    str = dupprintf("Advanced options for GNS3 usage", appname);
113
+    ctrl_settitle(b, "GNS3", str);
114
+    sfree(str);
115
+	
116
+	s = ctrl_getset(b, "GNS3", "adv-options1", NULL);
117
+    ctrl_radiobuttons(s, "Push a enter key inside a telnet/serial console:", 'p', 2,
118
+			  HELPCTX(no_help),
119
+			  dlg_stdradiobutton_handler,
120
+			  I(offsetof(Config, push_one_enter)),
121
+			  "Yes", I(1),
122
+			  "No", I(0),
123
+			  NULL);
124
+	s = ctrl_getset(b, "GNS3", "adv-options2", NULL);
125
+    ctrl_radiobuttons(s, "Replace all MsgBox errors with a message in title bar:", 'm', 2,
126
+			  HELPCTX(no_help),
127
+			  dlg_stdradiobutton_handler,
128
+			  I(offsetof(Config, no_annoying_msgbox)),
129
+			  "Yes", I(1),
130
+			  "No", I(0),
131
+			  NULL);
132-
+	s = ctrl_getset(b, "GNS3", "adv-options3", "Seconds between auto-restarts (0 to turn off)");
132+
+	s = ctrl_getset(b, "GNS3", "adv-options3", "Seconds between auto-restarts ('0' to turn off)");
133
+    ctrl_editbox(s, "Automatically reconnect a inactive session after:", 'r', 11,
134
+			  HELPCTX(no_help),
135
+			  dlg_stdeditbox_handler, I(offsetof(Config,reconnect_after_error)),
136
+		     I(-1));
137
+	s = ctrl_getset(b, "GNS3", "adv-options4", "'0' is completely transparent, '255' is completely opaque");
138
+    ctrl_editbox(s, "Set the factor value for transparent window:", 't', 11,
139
+			  HELPCTX(no_help),
140
+			  dlg_stdeditbox_handler, I(offsetof(Config,transparent_factor)),
141-
+++ putty-src\PUTTY.H	Tue Jun 19 23:56:46 2012
141+
142
+	/***************************************************/
143
 }
144
diff -rup putty-src-orig\PUTTY.H putty-src\PUTTY.H
145
--- putty-src-orig\PUTTY.H	Sat Jun 25 18:37:32 2011
146
+++ putty-src\PUTTY.H	Wed Jul 11 21:23:42 2012
147
@@ -1,5 +1,6 @@
148
 #ifndef PUTTY_PUTTY_H
149-
@@ -523,6 +524,11 @@ struct config_tag {
149+
150
+#define SECURITY_WIN32
151
 
152
 #include <stddef.h>		       /* for wchar_t */
153
 
154
@@ -523,6 +524,12 @@ struct config_tag {
155
     char ssh_nc_host[512];	       /* host to connect to in `nc' mode */
156
     int ssh_nc_port;		       /* port to connect to in `nc' mode */
157
     /* Telnet options */
158
+	/***************Patch GNS3 PuTTY *******************/
159
+	int push_one_enter;            /* used to pust a '\r' inside the socket */
160
+	int no_annoying_msgbox;        /* used to replace msgbox errors with messages in title window */
161-
@@ -773,6 +779,9 @@ int char_width(Context ctx, int uc);
161+
162
+	int transparent_factor;        /* used to set the window transparent */
163
+	/***************************************************/
164
     char termtype[32];
165
     char termspeed[32];
166
     char ttymodes[768];		       /* MODE\tVvalue\0MODE\tA\0\0 */
167
@@ -773,6 +780,9 @@ int char_width(Context ctx, int uc);
168
 void do_scroll(Context, int, int, int);
169
 #endif
170
 void set_title(void *frontend, char *);
171
+/***************Patch GNS3 PuTTY *******************/
172
+void set_title_plus_error(void *frontend, char *error);
173-
+++ putty-src\SETTINGS.C	Sat Jun 30 15:20:53 2012
173+
174-
@@ -475,6 +475,11 @@ void save_open_settings(void *sesskey, C
174+
175
 void set_sbar(void *frontend, int, int, int);
176
 Context get_ctx(void *frontend);
177
diff -rup putty-src-orig\SETTINGS.C putty-src\SETTINGS.C
178
--- putty-src-orig\SETTINGS.C	Tue Sep 13 08:35:56 2011
179
+++ putty-src\SETTINGS.C	Wed Jul 11 21:28:20 2012
180
@@ -475,6 +475,12 @@ void save_open_settings(void *sesskey, C
181
     write_setting_s(sesskey, "WinTitle", cfg->wintitle);
182
     write_setting_i(sesskey, "TermWidth", cfg->width);
183
     write_setting_i(sesskey, "TermHeight", cfg->height);
184
+	/***************Patch GNS3 PuTTY *******************/
185
+    write_setting_i(sesskey, "GNS3PushOneEnter", cfg->push_one_enter); //Save the values in regs :D
186-
@@ -792,8 +797,13 @@ void load_open_settings(void *sesskey, C
186+
187
+    write_setting_i(sesskey, "GNS3AutoReconnect", cfg->reconnect_after_error);
188
+    write_setting_i(sesskey, "WinTransparent", cfg->transparent_factor);
189
+	/***************************************************/
190
     write_setting_fontspec(sesskey, "Font", cfg->font);
191
     write_setting_i(sesskey, "FontQuality", cfg->font_quality);
192
     write_setting_i(sesskey, "FontVTMode", cfg->vtmode);
193
@@ -792,8 +798,14 @@ void load_open_settings(void *sesskey, C
194
     gppi(sesskey, "DisableBidi", 0, &cfg->bidi);
195
     gppi(sesskey, "WinNameAlways", 1, &cfg->win_name_always);
196
     gpps(sesskey, "WinTitle", "", cfg->wintitle, sizeof(cfg->wintitle));
197
-    gppi(sesskey, "TermWidth", 80, &cfg->width);
198
+	/***************Patch GNS3 PuTTY *******************/
199
+    gppi(sesskey, "TermWidth", 110, &cfg->width); //default was 80
200
     gppi(sesskey, "TermHeight", 24, &cfg->height);
201
+	gppi(sesskey, "WinTransparent", 255, &cfg->transparent_factor); //default is normal window (opaque)
202
+    gppi(sesskey, "GNS3PushOneEnter", 0, &cfg->push_one_enter); //default is unused
203
+    gppi(sesskey, "GNS3NoMsgBoxError", 0, &cfg->no_annoying_msgbox); //default is unused
204
+    gppi(sesskey, "GNS3AutoReconnect", 0, &cfg->reconnect_after_error); //default is unused
205
+	/***************************************************/
206
     gppfont(sesskey, "Font", &cfg->font);
207
     gppi(sesskey, "FontQuality", FQ_DEFAULT, &cfg->font_quality);
208
     gppi(sesskey, "FontVTMode", VT_UNICODE, (int *) &cfg->vtmode);
209
diff -rup putty-src-orig\TELNET.C putty-src\TELNET.C
210
--- putty-src-orig\TELNET.C	Mon Nov 24 17:51:42 2008
211
+++ putty-src\TELNET.C	Mon Jun 18 20:10:54 2012
212
@@ -765,6 +765,16 @@ static const char *telnet_init(void *fro
213
      */
214
     update_specials_menu(telnet->frontend);
215
 
216
+	/***************Patch GNS3 PuTTY *******************/
217
+	/*
218
+	 * Push a enter key inside the telnet socket
219
+	 */
220
+    if (telnet->cfg.push_one_enter) {
221
+    logevent(telnet->frontend, "client:\t *** Press a '\\r' inside the Telnet socket ***");
222
+	telnet->bufsize = sk_write(telnet->s, "\r", 1);
223-
+++ putty-src\VERSION.C	Sat Jun 30 16:05:11 2012
223+
224
+	/***************************************************/
225
+
226
     /*
227
      * loghost overrides realhost, if specified.
228
      */
229
diff -rup putty-src-orig\VERSION.C putty-src\VERSION.C
230
--- putty-src-orig\VERSION.C	Sat Nov 26 17:45:52 2011
231
+++ putty-src\VERSION.C	Thu Jul 12 00:56:12 2012
232
@@ -34,9 +34,11 @@ char ver[] = "Custom build r" STR(SVN_RE
233
 char sshver[] = "PuTTY-Custom-r" STR(SVN_REV);
234
 
235
 #else
236
-
237
-char ver[] = "Unidentified build, " __DATE__ " " __TIME__;
238
-char sshver[] = "PuTTY-Local: " __DATE__ " " __TIME__;
239
+/***************Patch GNS3 PuTTY *******************/
240
+char ver[] = "GNS3 build 0.62.1, " __DATE__ " " __TIME__;
241-
+++ putty-src\WINDOWS\Putty.rc	Sat Jun 30 16:03:07 2012
241+
242
+char sshver[] = "PuTTY-GNS3-0.62.1";
243
+/***************************************************/
244
 
245
 #endif
246
 
247
diff -rup putty-src-orig\WINDOWS\PUTTY.RC putty-src\WINDOWS\Putty.rc
248
--- putty-src-orig\WINDOWS\PUTTY.RC	Tue Oct 04 15:13:28 2005
249
+++ putty-src\WINDOWS\Putty.rc	Wed Jul 11 00:48:50 2012
250
@@ -1,10 +1,247 @@
251
+// Microsoft Visual C++ generated resource script.
252
+//
253
+#include "resource.h"
254
+
255
+#define APSTUDIO_READONLY_SYMBOLS
256
+/////////////////////////////////////////////////////////////////////////////
257
+//
258
+// Generated from the TEXTINCLUDE 2 resource.
259
+//
260
 #include "rcstuff.h"
261
+#include "win_res.h"
262
+
263
+/////////////////////////////////////////////////////////////////////////////
264
+#undef APSTUDIO_READONLY_SYMBOLS
265
+
266
+/////////////////////////////////////////////////////////////////////////////
267
+// English (U.S.) resources
268
+
269
+#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
270
+#ifdef _WIN32
271
+LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
272
+#pragma code_page(1252)
273
+#endif //_WIN32
274
+
275
+/////////////////////////////////////////////////////////////////////////////
276
+//
277
+// Icon
278
+//
279
+
280
+// Icon with lowest ID value placed first to ensure application icon
281
+// remains consistent on all systems.
282
+IDI_MAINICON            ICON                    "putty.ico"
283
+IDI_CFGICON             ICON                    "puttycfg.ico"
284
+
285
+/////////////////////////////////////////////////////////////////////////////
286
+//
287
+// Dialog
288
+//
289
+
290
+IDD_ABOUTBOX DIALOGEX 140, 40, 309, 321
291
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | 
292-
+    CTEXT           "© 1997-2011 Simon Tatham. All rights reserved.\nModified by Piroi Ninel for the GNS3 project",
292+
293
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
294
+BEGIN
295
+    DEFPUSHBUTTON   "&Close",IDOK,253,303,48,14
296
+    PUSHBUTTON      "View &Licence",IDA_LICENCE,6,303,70,14
297
+    PUSHBUTTON      "Visit &PuTTY Site",IDA_WEB,89,303,70,14
298
+    PUSHBUTTON      "Visit &GNS3 Site",IDA_GNS3_WEB,171,303,70,14
299
+    CTEXT           "PuTTY",IDA_TEXT1,33,1,244,9
300
+    CTEXT           "© 1997-2012 Simon Tatham. All rights reserved.\nModified by Piroi Ninel for the GNS3 project",
301
+                    IDA_TEXT2,49,280,197,19
302
+    CTEXT           " Version Number",IDA_VERSION,16,13,283,10
303
+    LTEXT           "Usage [new options]:\nCLI:    putty -wt   R1   -gns3 5 -skin 3 -log ""C:\\Logs_Dir""\nGNS3: putty -wt ""%d"" -gns3 5 -skin 4 -telnet %h %p\n\n-wt ""New Title""  #Change the window title from command line\n*Will disable remote title",
304
+                    IDA_TEXT3,4,23,283,47
305-
+    LTEXT           " * Toggle ""Always on top"" mode from menu (Right click on title bar)",
305+
306-
+                    IDA_TEXT11,2,265,283,11
306+
307
+    LTEXT           " *Disable remote resize\n *Configure scroll lines to 2500 (default was 200)\n *Push a enter key on telnet/serial console (NEW!)\n *Replace all MessageBox errors with a message in the title bar (NEW!)",
308
+                    IDA_TEXT6,1,114,283,41
309
+    LTEXT           " *Automatically reconnect a inactive session on error after <NR> seconds (NEW!)\n    NR = Number of seconds to wait before restarting a inactive session\n    NR = 0 means no automatically restart!",
310
+                    IDA_TEXT9,2,147,283,26
311
+    LTEXT           "-log ""<DIR_PATH>"" #Enable logging to files (.log). Use it after the ""-wt"" option in CLI.\n*Will log all printable output\n*Ex: <DIR_PATH>\\14.Jun.12_21.48.17_R1.log\n*Warning: Do not use '/, \\, |, *, ?, <, >, "", :' in -wt variable!",
312
+                    IDA_TEXT10,3,228,284,33
313
+    LTEXT           " * Toggle ""Always on top / Transparent Window"" from menu (Right click on title bar)",
314
+                    IDA_TEXT11,2,265,288,11
315
+    LTEXT           "-skin <NR>      #Apply a color theme from 4 hard-coded options\n 1 - Night mode\n 2 - Desert theme\n 3 - Matrix theme :)\n 4 - Gold theme\n X - Default theme",
316
+                    IDA_TEXT5,3,176,283,48
317
+END
318
+
319
+IDD_MAINBOX DIALOG  0, 0, 300, 252
320
+STYLE DS_SETFONT | DS_MODALFRAME | WS_POPUP | WS_CAPTION | WS_SYSMENU
321
+CAPTION "PuTTY Configuration"
322
+CLASS "PuTTYConfigBox"
323
+FONT 8, "MS Shell Dlg"
324
+BEGIN
325
+END
326
+
327
+IDD_LOGBOX DIALOGEX 100, 20, 300, 118
328
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | 
329
+    WS_SYSMENU
330
+CAPTION "PuTTY Event Log"
331
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
332
+BEGIN
333
+    DEFPUSHBUTTON   "&Close",IDOK,135,102,44,14
334
+    PUSHBUTTON      "C&opy",IDN_COPY,81,102,44,14
335
+    LISTBOX         IDN_LIST,3,3,294,95,LBS_HASSTRINGS | LBS_USETABSTOPS | 
336
+                    LBS_EXTENDEDSEL | WS_VSCROLL
337
+END
338
+
339
+IDD_LICENCEBOX DIALOGEX 50, 50, 226, 263
340
+STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | 
341
+    WS_SYSMENU
342
+CAPTION "PuTTY Licence"
343
+FONT 8, "MS Shell Dlg", 0, 0, 0x0
344
+BEGIN
345
+    DEFPUSHBUTTON   "OK",IDOK,98,243,44,14
346
+    LTEXT           "Copyright © 1997-2012 Simon Tatham",1000,10,10,206,8
347
+    LTEXT           "Portions copyright Robert de Bath, Joris van Rantwijk, Delian",
348
+                    1001,10,26,206,8
349
+    LTEXT           "Delchev, Andreas Schultz, Jeroen Massar, Wez Furlong, Nicolas",
350
+                    1002,10,34,206,8
351
+    LTEXT           "Barry, Justin Bradford, Ben Harris, Malcolm Smith, Ahmad Khalifa,",
352
+                    1003,10,42,206,8
353
+    LTEXT           "Markus Kuhn, Colin Watson, and CORE SDI S.A.",1004,10,
354
+                    50,206,8
355
+    LTEXT           "Permission is hereby granted, free of charge, to any person",
356
+                    1005,10,66,206,8
357
+    LTEXT           "obtaining a copy of this software and associated documentation",
358
+                    1006,10,74,206,8
359
+    LTEXT           "files (the ""Software""), to deal in the Software without restriction,",
360
+                    1007,10,82,206,8
361
+    LTEXT           "including without limitation the rights to use, copy, modify, merge,",
362
+                    1008,10,90,206,8
363
+    LTEXT           "publish, distribute, sublicense, and/or sell copies of the Software,",
364
+                    1009,10,98,206,8
365
+    LTEXT           "and to permit persons to whom the Software is furnished to do so,",
366
+                    1010,10,106,206,8
367
+    LTEXT           "subject to the following conditions:",1011,10,114,206,8
368
+    LTEXT           "The above copyright notice and this permission notice shall be",
369
+                    1012,10,130,206,8
370
+    LTEXT           "included in all copies or substantial portions of the Software.",
371
+                    1013,10,138,206,8
372
+    LTEXT           "THE SOFTWARE IS PROVIDED ""AS IS"", WITHOUT",1014,10,
373
+                    154,206,8
374
+    LTEXT           "WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,",1015,10,162,
375
+                    206,8
376
+    LTEXT           "INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF",1016,10,
377
+                    170,206,8
378
+    LTEXT           "MERCHANTABILITY, FITNESS FOR A PARTICULAR",1017,10,178,
379
+                    206,8
380
+    LTEXT           "PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE",
381
+                    1018,10,186,206,8
382
+    LTEXT           "COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES",
383
+                    1019,10,194,206,8
384
+    LTEXT           "OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,",
385
+                    1020,10,202,206,8
386
+    LTEXT           "TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN",1021,10,
387
+                    210,206,8
388
+    LTEXT           "CONNECTION WITH THE SOFTWARE OR THE USE OR",1022,10,218,
389
+                    206,8
390
+    LTEXT           "OTHER DEALINGS IN THE SOFTWARE.",1023,10,226,206,8
391
+END
392
+
393
+
394
+/////////////////////////////////////////////////////////////////////////////
395
+//
396
+// Version
397
+//
398
+
399
+VS_VERSION_INFO VERSIONINFO
400
+ FILEVERSION 0,62,1,0
401
+ PRODUCTVERSION 0,62,1,0
402
+ FILEFLAGSMASK 0x3L
403
+#ifdef _DEBUG
404
+ FILEFLAGS 0x1L
405
+#else
406
+ FILEFLAGS 0x0L
407
+#endif
408
+ FILEOS 0x4L
409
+ FILETYPE 0x1L
410
+ FILESUBTYPE 0x0L
411
+BEGIN
412
+    BLOCK "StringFileInfo"
413
+    BEGIN
414
+        BLOCK "080904b0"
415
+        BEGIN
416
+            VALUE "Comments", "Modified by Piroi Ninel for the GNS3 project."
417
+            VALUE "CompanyName", "Simon Tatham"
418
+            VALUE "FileDescription", "SSH, Telnet and Rlogin client, GNS3 Build"
419
+            VALUE "FileVersion", "Release 0.62.1, GNS3 Build"
420
+            VALUE "InternalName", "PuTTY"
421
+            VALUE "LegalCopyright", "Copyright © 1997-2012 Simon Tatham."
422
+            VALUE "OriginalFilename", "PuTTY"
423
+            VALUE "ProductName", "PuTTY suite"
424
+            VALUE "ProductVersion", "Release 0.62.1, GNS3 Build"
425
+        END
426
+    END
427
+    BLOCK "VarFileInfo"
428
+    BEGIN
429
+        VALUE "Translation", 0x809, 1200
430
+    END
431
+END
432
+
433
+
434
+/////////////////////////////////////////////////////////////////////////////
435
+//
436
+// RT_MANIFEST
437
+//
438
+
439
+1                       RT_MANIFEST             "putty.mft"
440
+
441
+#ifdef APSTUDIO_INVOKED
442
+/////////////////////////////////////////////////////////////////////////////
443
+//
444
+// TEXTINCLUDE
445
+//
446
+
447
+1 TEXTINCLUDE 
448
+BEGIN
449
+    "resource.h\0"
450
+END
451
+
452
+2 TEXTINCLUDE 
453
+BEGIN
454
+    "#include ""rcstuff.h""\r\n"
455
+    "#include ""win_res.h""\r\n"
456
+    "\0"
457
+END
458
+
459
+3 TEXTINCLUDE 
460
+BEGIN
461
+    "\r\n"
462
+    "\0"
463
+END
464
+
465
+#endif    // APSTUDIO_INVOKED
466
+
467
+
468
+/////////////////////////////////////////////////////////////////////////////
469
+//
470
+// DESIGNINFO
471
+//
472
+
473
+#ifdef APSTUDIO_INVOKED
474
+GUIDELINES DESIGNINFO 
475
+BEGIN
476
+    IDD_ABOUTBOX, DIALOG
477
+    BEGIN
478
+        BOTTOMMARGIN, 317
479
+    END
480
+END
481
+#endif    // APSTUDIO_INVOKED
482
+
483
+#endif    // English (U.S.) resources
484
+/////////////////////////////////////////////////////////////////////////////
485
+
486
+
487
+
488
+#ifndef APSTUDIO_INVOKED
489
+/////////////////////////////////////////////////////////////////////////////
490
+//
491
+// Generated from the TEXTINCLUDE 3 resource.
492
+//
493
 
494
-#define APPNAME "PuTTY"
495
-#define APPDESC "SSH, Telnet and Rlogin client"
496
 
497
-#include "win_res.rc2"
498
+/////////////////////////////////////////////////////////////////////////////
499
+#endif    // not APSTUDIO_INVOKED
500
 
501
-#ifndef NO_MANIFESTS
502
-1 RT_MANIFEST "putty.mft"
503
-#endif /* NO_MANIFESTS */
504
diff -rup putty-src-orig\WINDOWS\VERSION.RC2 putty-src\WINDOWS\VERSION.RC2
505
--- putty-src-orig\WINDOWS\VERSION.RC2	Sat Dec 10 12:08:10 2011
506
+++ putty-src\WINDOWS\VERSION.RC2	Mon Jun 18 22:10:39 2012
507
@@ -79,7 +79,7 @@
508
 
509
 /* We can't reliably get the same date and time as version.c, so
510
  * we won't bother trying. */
511
-#define VERSION_TEXT "Unidentified build"
512
+#define VERSION_TEXT "0.62.1 GNS3 Build"
513
 #define BINARY_VERSION 0,0,0,0
514
 
515
 #endif
516
diff -rup putty-src-orig\WINDOWS\WIN_RES.H putty-src\WINDOWS\WIN_RES.H
517
--- putty-src-orig\WINDOWS\WIN_RES.H	Sun Apr 23 19:26:04 2006
518
+++ putty-src\WINDOWS\WIN_RES.H	Fri Jun 22 20:10:56 2012
519
@@ -23,6 +23,7 @@
520
 #define IDA_TEXT2       1004
521
 #define IDA_LICENCE     1005
522
 #define IDA_WEB         1006
523
+#define IDA_GNS3_WEB    1007
524
 
525
 #define IDC_TAB         1001
526
 #define IDC_TABSTATIC1  1002
527
diff -rup putty-src-orig\WINDOWS\WIN_RES.RC2 putty-src\WINDOWS\WIN_RES.RC2
528
--- putty-src-orig\WINDOWS\WIN_RES.RC2	Wed Jan 05 12:01:00 2011
529
+++ putty-src\WINDOWS\WIN_RES.RC2	Mon May 07 22:28:03 2012
530
@@ -25,7 +25,7 @@ BEGIN
531
     PUSHBUTTON "View &Licence", IDA_LICENCE, 6, 52, 70, 14
532
     PUSHBUTTON "Visit &Web Site", IDA_WEB, 84, 52, 70, 14
533
     CTEXT "PuTTY", IDA_TEXT1, 10, 6, 194, 8
534
-    CTEXT "", IDA_VERSION, 10, 16, 194, 16
535
+    CTEXT "0.62.1 GNS3 Build", IDA_VERSION, 10, 16, 194, 16
536
     CTEXT "\251 1997-2011 Simon Tatham. All rights reserved.",
537
           IDA_TEXT2, 10, 34, 194, 16
538
 END
539
diff -rup putty-src-orig\WINDOWS\WINDLG.C putty-src\WINDOWS\WINDLG.C
540
--- putty-src-orig\WINDOWS\WINDLG.C	Wed Dec 29 14:11:26 2010
541
+++ putty-src\WINDOWS\WINDLG.C	Fri Jun 22 21:33:07 2012
542
@@ -220,6 +220,14 @@ static int CALLBACK AboutProc(HWND hwnd,
543
 			 "http://www.chiark.greenend.org.uk/~sgtatham/putty/",
544
 			 0, 0, SW_SHOWDEFAULT);
545
 	    return 0;
546
+	/***************Patch GNS3 PuTTY *******************/
547
+	  case IDA_GNS3_WEB:
548
+	    /* Load web browser */
549
+	    ShellExecute(hwnd, "open",
550
+			 "http://www.gns3.net/putty/",
551-
+++ putty-src\WINDOWS\WINDOW.C	Sat Jun 30 16:07:49 2012
551+
552-
@@ -34,6 +34,9 @@
552+
553
+	/***************************************************/
554
 	}
555
 	return 0;
556
       case WM_CLOSE:
557
diff -rup putty-src-orig\WINDOWS\WINDOW.C putty-src\WINDOWS\WINDOW.C
558
--- putty-src-orig\WINDOWS\WINDOW.C	Sat Jul 16 12:26:20 2011
559
+++ putty-src\WINDOWS\WINDOW.C	Thu Jul 12 00:43:26 2012
560
@@ -34,6 +34,16 @@
561
  * attempt to store information in them. Hence all these identifiers have
562-
@@ -76,6 +79,10 @@
562+
563
 
564
+/***************Patch GNS3 PuTTY *******************/
565
+#define IDM_TOPMOST   0x0210
566
+#define IDM_TRANSPARENT_1 0x0220
567
+#define IDM_TRANSPARENT_2 0x0230
568
+#define IDM_TRANSPARENT_3 0x0240
569
+#define IDM_TRANSPARENT_4 0x0250
570
+#define IDM_TRANSPARENT_5 0x0260
571
+#define LWA_ALPHA 2 //for transparent
572
+#define WS_EX_LAYERED 0x00080000L //for transparent
573-
@@ -94,6 +101,9 @@ static int is_full_screen(void);
573+
574
 #define IDM_SHOWLOG   0x0010
575
 #define IDM_NEWSESS   0x0020
576
 #define IDM_DUPSESS   0x0030
577
@@ -76,6 +86,11 @@
578
 #define WHEEL_DELTA 120
579
 #endif
580
 
581
+/***************Patch GNS3 PuTTY *******************/
582
+HANDLE hThread1;
583-
@@ -236,60 +246,101 @@ static void start_backend(void)
583+
+static BOOL init_transparent = 0;
584
+/***************************************************/
585
+
586
 static Mouse_Button translate_button(Mouse_Button button);
587
 static LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM);
588
 static int TranslateKey(UINT message, WPARAM wParam, LPARAM lParam,
589
@@ -94,6 +109,10 @@ static int is_full_screen(void);
590
 static void make_full_screen(void);
591
 static void clear_full_screen(void);
592
 static void flip_full_screen(void);
593
+/***************Patch GNS3 PuTTY *******************/
594
+static void flip_top_most(void);
595
+static void flip_transparent(int factor);
596
+/***************************************************/
597
 static int process_clipdata(HGLOBAL clipdata, int unicode);
598
 
599
 /* Window layout information */
600
@@ -139,6 +158,9 @@ static struct {
601
 } popup_menus[2];
602
 enum { SYSMENU, CTXMENU };
603
 static HMENU savedsess_menu;
604
+/***************Patch GNS3 PuTTY *******************/
605
+static HMENU transparent_menu;
606
+/***************************************************/
607
 
608
 Config cfg;			       /* exported to windlg.c */
609
 
610
@@ -236,60 +258,101 @@ static void start_backend(void)
611
 		       cfg.host, cfg.port, &realhost, cfg.tcp_nodelay,
612
 		       cfg.tcp_keepalives);
613
     back->provide_logctx(backhandle, logctx);
614
+	/***************Patch GNS3 PuTTY *******************/
615
     if (error) {
616
-	char *str = dupprintf("%s Error", appname);
617
-	sprintf(msg, "Unable to open connection to\n"
618
-		"%.800s\n" "%s", cfg_dest(&cfg), error);
619
-	MessageBox(NULL, msg, str, MB_ICONERROR | MB_OK);
620
-	sfree(str);
621
-	exit(0);
622
-    }
623
-    window_name = icon_name = NULL;
624
-    if (*cfg.wintitle) {
625
-	title = cfg.wintitle;
626
-    } else {
627
-	sprintf(msg, "%s - %s", realhost, appname);
628
-	title = msg;
629
-    }
630
-    sfree(realhost);
631
-    set_title(NULL, title);
632
-    set_icon(NULL, title);
633
+		char *str = dupprintf("%s Error", appname);
634
+	
635
+		if(cfg.no_annoying_msgbox) {
636
+			sprintf(msg, "Unable to open: %.800s", cfg_dest(&cfg));
637
+			set_title_plus_error(NULL, msg);
638
+			logevent(NULL, msg);
639
+		}else{
640
+			sprintf(msg, "Unable to open connection to\n%.800s\n%s", cfg_dest(&cfg), error);
641
+			MessageBox(NULL, msg, str, MB_ICONERROR | MB_OK);
642
+			exit(0);
643
+		}
644
 
645
-    /*
646
-     * Connect the terminal to the backend for resize purposes.
647
-     */
648
-    term_provide_resize_fn(term, back->size, backhandle);
649
+		sfree(str);
650
+		must_close_session = TRUE;
651
+		session_closed = TRUE;
652
 
653
-    /*
654
-     * Set up a line discipline.
655
-     */
656
-    ldisc = ldisc_create(&cfg, term, back, backhandle, NULL);
657
+	} else {
658
+	
659
+		window_name = icon_name = NULL;
660
+		if (*cfg.wintitle) {
661
+		title = cfg.wintitle;
662
+		} else {
663
+		sprintf(msg, "%s - %s", realhost, appname);
664
+		title = msg;
665
+		}
666
+		sfree(realhost);
667
+		set_title(NULL, title);
668
+		set_icon(NULL, title);
669
 
670
-    /*
671
-     * Destroy the Restart Session menu item. (This will return
672
-     * failure if it's already absent, as it will be the very first
673
-     * time we call this function. We ignore that, because as long
674
-     * as the menu item ends up not being there, we don't care
675
-     * whether it was us who removed it or not!)
676
-     */
677
-    for (i = 0; i < lenof(popup_menus); i++) {
678
-	DeleteMenu(popup_menus[i].menu, IDM_RESTART, MF_BYCOMMAND);
679
-    }
680
+		/*
681
+		 * Connect the terminal to the backend for resize purposes.
682
+		 */
683
+		term_provide_resize_fn(term, back->size, backhandle);
684
 
685
-    must_close_session = FALSE;
686
-    session_closed = FALSE;
687
+		/*
688
+		 * Set up a line discipline.
689
+		 */
690
+		ldisc = ldisc_create(&cfg, term, back, backhandle, NULL);
691
+
692
+		/*
693
+		 * Destroy the Restart Session menu item. (This will return
694
+		 * failure if it's already absent, as it will be the very first
695
+		 * time we call this function. We ignore that, because as long
696
+		 * as the menu item ends up not being there, we don't care
697
+		 * whether it was us who removed it or not!)
698
+		 */
699
+		for (i = 0; i < lenof(popup_menus); i++) {
700
+		DeleteMenu(popup_menus[i].menu, IDM_RESTART, MF_BYCOMMAND);
701
+		}
702
+
703
+		must_close_session = FALSE;
704
+		session_closed = FALSE;
705
+	}
706
+	/**************************************************/
707
+}
708
+
709
+/***************Patch GNS3 PuTTY *******************/
710
+void WINAPI TimerRoutine(void)
711
+{
712
+	int i;
713
+	char morestuff[255], title[155];
714
+	GetWindowText(hwnd, title, sizeof(title));
715
+	for (i = cfg.reconnect_after_error; i >= 1; i--) {
716
+		sprintf(morestuff, "%s - [Restart in %ds]", title, i);
717
+		set_title(NULL, morestuff);
718
+		set_icon(NULL, morestuff);
719
+		Sleep(1000);
720
+		}
721
+
722
+	sprintf(morestuff, "%s - [Restarting...]", title, i);
723
+	set_title(NULL, morestuff);
724
+	set_icon(NULL, morestuff);
725
+	Sleep(250);
726
+
727-
@@ -320,6 +371,11 @@ static void close_session(void)
727+
728
 }
729
+/**************************************************/
730
 
731
 static void close_session(void)
732
 {
733
-    char morestuff[100];
734
     int i;
735
+	/***************Patch GNS3 PuTTY *******************/
736
+    char morestuff[255], title[155];
737
 
738
-    session_closed = TRUE;
739-
@@ -795,6 +851,9 @@ int WINAPI WinMain(HINSTANCE inst, HINST
739+
740
-    set_icon(NULL, morestuff);
741
-    set_title(NULL, morestuff);
742
+	session_closed = TRUE;
743
+	GetWindowText(hwnd, title, sizeof(title));
744
+    sprintf(morestuff, "%s - (inactive)", title);
745
 
746
+    set_icon(NULL, morestuff);
747
+	set_title(NULL, morestuff);	
748
+	//SetSysColors(2, COLOR_WINDOW, RGB(0x255, 0x0, 0x0));
749-
@@ -1082,8 +1141,16 @@ void connection_fatal(void *frontend, ch
749+
750
+	
751
     if (ldisc) {
752
 	ldisc_free(ldisc);
753
 	ldisc = NULL;
754
@@ -320,6 +383,11 @@ static void close_session(void)
755
      * window title change above.
756
      */
757
     must_close_session = FALSE;
758
+	/***************Patch GNS3 PuTTY *******************/	
759
+	if(cfg.reconnect_after_error) {
760
+		hThread1 = CreateThread (NULL, 0, (LPTHREAD_START_ROUTINE)TimerRoutine, NULL, 0, NULL);
761
+	}
762
+	/***************************************************/
763
 }
764
 
765
 int WINAPI WinMain(HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show)
766
@@ -777,6 +845,15 @@ int WINAPI WinMain(HINSTANCE inst, HINST
767
 	get_sesslist(&sesslist, TRUE);
768-
@@ -1969,9 +2036,16 @@ void notify_remote_exit(void *fe)
768+
 	update_savedsess_menu();
769
 
770
+	/***************Patch GNS3 PuTTY *******************/
771
+	transparent_menu = CreateMenu();
772
+	AppendMenu(transparent_menu, MF_ENABLED, IDM_TRANSPARENT_5, "Off");
773
+	AppendMenu(transparent_menu, MF_ENABLED, IDM_TRANSPARENT_4, "20%");
774
+	AppendMenu(transparent_menu, MF_ENABLED, IDM_TRANSPARENT_3, "40%");
775
+	AppendMenu(transparent_menu, MF_ENABLED, IDM_TRANSPARENT_2, "60%");
776
+	AppendMenu(transparent_menu, MF_ENABLED, IDM_TRANSPARENT_1, "80%");
777
+	/***************************************************/
778
+	
779
 	for (j = 0; j < lenof(popup_menus); j++) {
780
 	    m = popup_menus[j].menu;
781
 
782
@@ -795,6 +872,10 @@ int WINAPI WinMain(HINSTANCE inst, HINST
783
 	    AppendMenu(m, MF_SEPARATOR, 0, 0);
784
 	    AppendMenu(m, (cfg.resize_action == RESIZE_DISABLED) ?
785
 		       MF_GRAYED : MF_ENABLED, IDM_FULLSCREEN, "&Full Screen");
786
+		/***************Patch GNS3 PuTTY *******************/
787
+	    AppendMenu(m, MF_ENABLED, IDM_TOPMOST, "Alwa&ys on Top");
788-
@@ -2027,6 +2101,18 @@ static LRESULT CALLBACK WndProc(HWND hwn
788+
+	    AppendMenu(m, MF_POPUP | MF_ENABLED, (UINT) transparent_menu, "Transparent W&indow");
789
+		/***************************************************/
790
 	    AppendMenu(m, MF_SEPARATOR, 0, 0);
791
 	    if (has_help())
792
 		AppendMenu(m, MF_ENABLED, IDM_HELP, "&Help");
793
@@ -811,6 +892,10 @@ int WINAPI WinMain(HINSTANCE inst, HINST
794
      */
795
     set_input_locale(GetKeyboardLayout(0));
796
 
797
+	/***************Patch GNS3 PuTTY *******************/
798
+	flip_transparent(cfg.transparent_factor); //init transparent window
799
+	/***************************************************/
800
+
801
     /*
802
      * Finally show the window!
803
      */
804
@@ -1082,8 +1167,16 @@ void connection_fatal(void *frontend, ch
805
     va_start(ap, fmt);
806
     stuff = dupvprintf(fmt, ap);
807-
@@ -2116,11 +2202,13 @@ static LRESULT CALLBACK WndProc(HWND hwn
807+
808
-    sprintf(morestuff, "%.70s Fatal Error", appname);
809
-    MessageBox(hwnd, stuff, morestuff, MB_ICONERROR | MB_OK);
810
+
811
+	/***************Patch GNS3 PuTTY *******************/
812
+	if(cfg.no_annoying_msgbox) {
813
+		set_title_plus_error(NULL, stuff);
814
+	}else{
815
+		sprintf(morestuff, "%.70s Fatal Error", appname);
816
+		MessageBox(hwnd, stuff, morestuff, MB_ICONERROR | MB_OK);
817
+	}
818
+	/***************************************************/
819
+
820
     sfree(stuff);
821
 
822
     if (cfg.close_on_exit == FORCE_ON)
823
@@ -1969,9 +2062,16 @@ void notify_remote_exit(void *fe)
824-
@@ -2320,6 +2408,11 @@ static LRESULT CALLBACK WndProc(HWND hwn
824+
825
 	     * by a fatal error, so an error box will be coming our way and
826
 	     * we should not generate this informational one. */
827
-	    if (exitcode != INT_MAX)
828
-		MessageBox(hwnd, "Connection closed by remote host",
829
-			   appname, MB_OK | MB_ICONINFORMATION);
830
+		/***************Patch GNS3 PuTTY *******************/
831
+	    if (exitcode != INT_MAX) {
832
+			if(cfg.no_annoying_msgbox) {
833
+				set_title_plus_error(NULL, "Connection closed by remote host");
834
+				logevent(NULL, "Connection closed by remote host");
835
+			}else{
836-
@@ -4527,6 +4620,31 @@ void set_title(void *frontend, char *tit
836+
837
+			}
838
+		}
839
+		/***************************************************/
840
 	}
841
     }
842
 }
843
@@ -2027,6 +2127,18 @@ static LRESULT CALLBACK WndProc(HWND hwn
844
 	show_mouseptr(1);
845
 	PostQuitMessage(0);
846
 	return 0;
847
+	/***************Patch GNS3 PuTTY *******************/
848
+	  case IDM_RESTART:
849
+		if (!back) {
850
+			char morestuff[200];
851
+			sprintf(morestuff, "----- Session auto-restarted on error (every %ds) -----", cfg.reconnect_after_error);
852
+			logevent(NULL, morestuff);
853
+
854
+			if (cfg.protocol != PROT_SERIAL) { term_pwron(term, FALSE); }
855
+			start_backend();
856
+		}
857
+		break;
858
+	/***************************************************/
859
       case WM_INITMENUPOPUP:
860
 	if ((HMENU)wParam == savedsess_menu) {
861
 	    /* About to pop up Saved Sessions sub-menu.
862
@@ -2116,11 +2228,13 @@ static LRESULT CALLBACK WndProc(HWND hwn
863
 	    break;
864
 	  case IDM_RESTART:
865
 	    if (!back) {
866
-		logevent(NULL, "----- Session restarted -----");
867
-		term_pwron(term, FALSE);
868-
@@ -5504,6 +5622,24 @@ static void flip_full_screen()
868+
869
+		logevent(NULL, "----- Session restarted manually -----");
870
+		if (hThread1 != NULL) TerminateThread(hThread1, 0);
871
+		if (cfg.protocol != PROT_SERIAL) { term_pwron(term, FALSE); }
872
+		/***************************************************/
873
 		start_backend();
874
 	    }
875
-
876
 	    break;
877
 	  case IDM_RECONF:
878
 	    {
879-
+int i;
879+
@@ -2181,6 +2295,11 @@ static LRESULT CALLBACK WndProc(HWND hwn
880
 		if (back)
881
 		    back->reconfig(backhandle, &cfg);
882
 
883
+		/***************Patch GNS3 PuTTY *******************/
884
+		/* Change transparent settings if modified */
885
+		if (cfg.transparent_factor != prev_cfg.transparent_factor) flip_transparent(cfg.transparent_factor);
886
+		/***************************************************/
887
+
888
 		/* Screen size changed ? */
889
 		if (cfg.height != prev_cfg.height ||
890
 		    cfg.width != prev_cfg.width ||
891
@@ -2320,6 +2439,26 @@ static LRESULT CALLBACK WndProc(HWND hwn
892
 	  case IDM_FULLSCREEN:
893
 	    flip_full_screen();
894
 	    break;
895
+	/***************Patch GNS3 PuTTY *******************/
896
+	  case IDM_TOPMOST:
897
+	    flip_top_most();
898
+	    break;
899
+	  case IDM_TRANSPARENT_1:
900
+	    flip_transparent(50);
901
+	    break;
902
+	  case IDM_TRANSPARENT_2:
903
+	    flip_transparent(100);
904
+	    break;
905
+	  case IDM_TRANSPARENT_3:
906
+	    flip_transparent(150);
907
+	    break;
908
+	  case IDM_TRANSPARENT_4:
909
+	    flip_transparent(200);
910
+	    break;
911
+	  case IDM_TRANSPARENT_5:
912
+	    flip_transparent(255);
913
+	    break;
914
+	/***************************************************/
915
 	  default:
916
 	    if (wParam >= IDM_SAVED_MIN && wParam < IDM_SAVED_MAX) {
917
 		SendMessage(hwnd, WM_SYSCOMMAND, IDM_SAVEDSESS, wParam);
918
@@ -4527,6 +4666,31 @@ void set_title(void *frontend, char *tit
919
 	SetWindowText(hwnd, title);
920
 }
921
 
922
+/***************Patch GNS3 PuTTY *******************/
923
+void set_title_plus_error(void *frontend, char *error)
924
+{
925
+    char title[512];
926
+	
927
+	if (strlen(cfg.wintitle) >= 1) {
928
+		if (cfg.protocol == PROT_SERIAL) {
929
+			sprintf(title, "Serial Error (%s) - %s!\0", cfg.wintitle, error); //serial with title
930
+		} else {
931
+			sprintf(title, "%s:%d (%s) - %s!\0", cfg.host, cfg.port, cfg.wintitle, error); //telnet with title
932
+		}
933
+	} else {
934
+		if (cfg.protocol == PROT_SERIAL) {
935
+			sprintf(title, "Serial Error - %s!\0", error); //serial without title
936
+		} else {
937
+			sprintf(title, "%s:%d - %s!\0",      cfg.host, cfg.port, error); //telnet without title
938
+		}
939
+	}
940
+ sfree(window_name);
941
+ window_name = snewn(1 + strlen(title), char);
942
+ strcpy(window_name, title);
943
+ SetWindowText(hwnd, title);
944
+}
945
+/***************************************************/
946
+
947
 void set_icon(void *frontend, char *title)
948
 {
949
     sfree(icon_name);
950
@@ -5504,6 +5668,62 @@ static void flip_full_screen()
951
 	ShowWindow(hwnd, SW_MAXIMIZE);
952
     }
953
 }
954
+
955
+/***************Patch GNS3 PuTTY *******************/
956
+/*
957
+ * Toggle always on top mode.
958
+ */
959
+static void flip_top_most()
960
+{
961
+	int i;
962
+	if (!(GetWindowLong(hwnd, GWL_EXSTYLE) & WS_EX_TOPMOST)){
963
+		SetWindowPos(hwnd, HWND_TOPMOST,   0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
964
+		for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TOPMOST, MF_CHECKED); //Tick the menu item in the System and context menus.
965
+    }
966
+	else{
967
+		SetWindowPos(hwnd, HWND_NOTOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE);
968
+		for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TOPMOST, MF_UNCHECKED); //Untick the menu item in the System and context menus.
969
+	}
970
+}
971
+
972
+DECL_WINDOWS_FUNCTION(static, BOOL, SetLayeredWindowAttributes, (HWND, COLORREF, BYTE, DWORD));
973
+
974
+static void flip_transparent(int factor)
975
+{
976
+	int i;
977
+
978
+	if(!init_transparent) // do this once
979
+		{
980
+		HMODULE user32_module = load_system32_dll("user32.dll");
981
+		GET_WINDOWS_FUNCTION (user32_module, SetLayeredWindowAttributes);
982
+		init_transparent = 1;
983
+		}
984
+
985
+	factor = factor % 256;
986
+	cfg.transparent_factor = factor;
987
+	
988
+	for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TRANSPARENT_1, MF_UNCHECKED); //Untick all
989
+	for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TRANSPARENT_2, MF_UNCHECKED);
990
+	for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TRANSPARENT_3, MF_UNCHECKED);
991
+	for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TRANSPARENT_4, MF_UNCHECKED);
992
+	for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TRANSPARENT_5, MF_UNCHECKED);
993
+	
994
+	     if((factor >=   0) && (factor <=  50)) for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TRANSPARENT_1, MF_CHECKED); //Tick one of them
995
+	else if((factor >   50) && (factor <= 100)) for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TRANSPARENT_2, MF_CHECKED);
996
+	else if((factor >  100) && (factor <= 150)) for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TRANSPARENT_3, MF_CHECKED);
997
+	else if((factor >  150) && (factor <= 254)) for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TRANSPARENT_4, MF_CHECKED);
998
+	else if(factor ==  255)                     for (i = 0; i < lenof(popup_menus); i++) CheckMenuItem(popup_menus[i].menu, IDM_TRANSPARENT_5, MF_CHECKED);
999
+	
1000
+	if(factor != 255)
1001
+		{
1002
+		SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) | WS_EX_LAYERED); //enable layers for transparent (do this once per window that shall become transparent)
1003
+		p_SetLayeredWindowAttributes(hwnd, 0, factor, LWA_ALPHA);                           // do this everytime you want to change the transparency value
1004
+	}
1005
+	else{
1006
+		SetWindowLong(hwnd, GWL_EXSTYLE, GetWindowLong(hwnd, GWL_EXSTYLE) & ~WS_EX_LAYERED); //disable transparent
1007
+	}
1008
+}
1009
+/***************************************************/
1010
 
1011
 void frontend_keypress(void *handle)
1012
 {
1013
diff -rup putty-src-orig\WINDOWS\WINPGNTC.C putty-src\WINDOWS\WINPGNTC.C
1014
--- putty-src-orig\WINDOWS\WINPGNTC.C	Wed Jun 08 21:47:08 2011
1015
+++ putty-src\WINDOWS\WINPGNTC.C	Wed Jun 13 22:16:15 2012
1016
@@ -86,10 +86,13 @@ DECL_WINDOWS_FUNCTION(static, BOOL, Init
1017
 		      (PSECURITY_DESCRIPTOR, DWORD));
1018
 DECL_WINDOWS_FUNCTION(static, BOOL, SetSecurityDescriptorOwner,
1019
 		      (PSECURITY_DESCRIPTOR, PSID, BOOL));
1020
-DECL_WINDOWS_FUNCTION(, DWORD, GetSecurityInfo,
1021
+/***************Patch GNS3 PuTTY *******************/
1022
+// the word "static" was missing!
1023
+DECL_WINDOWS_FUNCTION(static, DWORD, GetSecurityInfo,
1024
 		      (HANDLE, SE_OBJECT_TYPE, SECURITY_INFORMATION,
1025
 		       PSID *, PSID *, PACL *, PACL *,
1026
 		       PSECURITY_DESCRIPTOR *));
1027
+/***************************************************/
1028
 int init_advapi(void)
1029
 {
1030
     advapi = load_system32_dll("advapi32.dll");
1031
@@ -100,6 +103,7 @@ int init_advapi(void)
1032
 	GET_WINDOWS_FUNCTION(advapi, InitializeSecurityDescriptor) &&
1033
 	GET_WINDOWS_FUNCTION(advapi, SetSecurityDescriptorOwner);
1034
 }
1035
+
1036
 
1037
 PSID get_user_sid(void)
1038
 {
1039
diff -rup putty-src-orig\WINDOWS\WINSER.C putty-src\WINDOWS\WINSER.C
1040
--- putty-src-orig\WINDOWS\WINSER.C	Tue Aug 10 18:21:26 2010
1041
+++ putty-src\WINDOWS\WINSER.C	Tue Jun 19 23:54:04 2012
1042
@@ -276,6 +276,14 @@ static const char *serial_init(void *fro
1043
      */
1044
     update_specials_menu(serial->frontend);
1045
 
1046
+	
1047
+	/***************Patch GNS3 PuTTY *******************/
1048
+	if (cfg->push_one_enter) {	
1049
+	    logevent(serial->frontend, "*** Press a '\\r' inside the serial port/pipe ***");
1050
+		serial->bufsize = handle_write(serial->out, "\r", 1); //press a enter on the serial
1051
+	}
1052
+	/***************************************************/
1053
+
1054
     return NULL;
1055
 }