1
0
mirror of https://git.tartarus.org/simon/putty.git synced 2025-07-05 13:32:48 -05:00

Retired the #ifdef DUMP_PACKETS stuff in ssh.c because I'm utterly

sick of recompiling to enable packet dumps. SSH packet dumping is
now provided as a logging option, and dumps to putty.log like all
the other logging options. While I'm at it I cleaned up the format
so that packet types are translated into strings for easy browsing.
POSSIBLE SIDE EFFECT: in the course of this work I had to re-enable
the SSH1 packet length checks which it turns out hadn't actually
been active for some time, so it's possible things might break as a
result. If need be I can always disable those checks for the 0.52
release and think about it more carefully later.

[originally from svn r1493]
This commit is contained in:
Simon Tatham
2001-12-14 14:57:50 +00:00
parent 789bb1e727
commit 3ed0d44f16
11 changed files with 465 additions and 203 deletions

View File

@ -206,10 +206,6 @@ static void erase_lots(int, int, int);
static void swap_screen(int);
static void update_sbar(void);
static void deselect(void);
/* log session to file stuff ... */
static FILE *lgfp = NULL;
static void logtraffic(unsigned char c, int logmode);
static void xlatlognam(char *d, char *s, char *hostname, struct tm *tm);
/*
* Resize a line to make it `cols' columns wide.
@ -3630,138 +3626,3 @@ int from_backend(int is_stderr, char *data, int len)
*/
return 0;
}
/*
* Log session traffic.
*/
void logtraffic(unsigned char c, int logmode)
{
if (cfg.logtype > 0) {
if (cfg.logtype == logmode) {
/* deferred open file from pgm start? */
if (!lgfp)
logfopen();
if (lgfp)
fputc(c, lgfp);
}
}
}
void settimstr(char *ta, int no_sec);
char *subslfcode(char *dest, char *src, char *dstrt);
char *stpncpy(char *dst, const char *src, size_t maxlen);
char timdatbuf[20];
char currlogfilename[FILENAME_MAX];
/* open log file append/overwrite mode */
void logfopen(void)
{
char buf[256];
time_t t;
struct tm tm;
char writemod[4];
if (!cfg.logtype)
return;
sprintf(writemod, "wb"); /* default to rewrite */
time(&t);
tm = *localtime(&t);
/* substitute special codes in file name */
xlatlognam(currlogfilename,cfg.logfilename,cfg.host, &tm);
lgfp = fopen(currlogfilename, "r"); /* file already present? */
if (lgfp) {
int i;
fclose(lgfp);
i = askappend(currlogfilename);
if (i == 1)
writemod[0] = 'a'; /* set append mode */
else if (i == 0) { /* cancelled */
lgfp = NULL;
cfg.logtype = 0; /* disable logging */
return;
}
}
lgfp = fopen(currlogfilename, writemod);
if (lgfp) { /* enter into event log */
sprintf(buf, "%s session log (%s mode) to file : ",
(writemod[0] == 'a') ? "Appending" : "Writing new",
(cfg.logtype == LGTYP_ASCII ? "ASCII" :
cfg.logtype == LGTYP_DEBUG ? "raw" : "<ukwn>"));
/* Make sure we do not exceed the output buffer size */
strncat(buf, currlogfilename, 128);
buf[strlen(buf)] = '\0';
logevent(buf);
/* --- write header line into log file */
fputs("=~=~=~=~=~=~=~=~=~=~=~= PuTTY log ", lgfp);
strftime(buf, 24, "%Y.%m.%d %H:%M:%S", &tm);
fputs(buf, lgfp);
fputs(" =~=~=~=~=~=~=~=~=~=~=~=\r\n", lgfp);
}
}
void logfclose(void)
{
if (lgfp) {
fclose(lgfp);
lgfp = NULL;
}
}
/*
* translate format codes into time/date strings
* and insert them into log file name
*
* "&Y":YYYY "&m":MM "&d":DD "&T":hhmm "&h":<hostname> "&&":&
*/
static void xlatlognam(char *d, char *s, char *hostname, struct tm *tm) {
char buf[10], *bufp;
int size;
char *ds = d; /* save start pos. */
int len = FILENAME_MAX-1;
while (*s) {
/* Let (bufp, len) be the string to append. */
bufp = buf; /* don't usually override this */
if (*s == '&') {
char c;
s++;
if (*s) switch (c = *s++, tolower(c)) {
case 'y':
size = strftime(buf, sizeof(buf), "%Y", tm);
break;
case 'm':
size = strftime(buf, sizeof(buf), "%m", tm);
break;
case 'd':
size = strftime(buf, sizeof(buf), "%d", tm);
break;
case 't':
size = strftime(buf, sizeof(buf), "%H%M%S", tm);
break;
case 'h':
bufp = hostname;
size = strlen(bufp);
break;
default:
buf[0] = '&';
size = 1;
if (c != '&')
buf[size++] = c;
}
} else {
buf[0] = *s++;
size = 1;
}
if (size > len)
size = len;
memcpy(d, bufp, size);
d += size;
len -= size;
}
*d = '\0';
}