author | viric@llimona |
Mon, 24 Sep 2007 13:59:40 +0200 | |
changeset 38 | f1e581c862d5 |
parent 37 | b0588bddef91 |
child 53 | 07500c5c53cb |
permissions | -rw-r--r-- |
21 | 1 |
#include <unistd.h> |
2 |
#include <stdlib.h> |
|
3 |
#include <assert.h> |
|
36
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
4 |
#include <string.h> |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
5 |
#include <sys/socket.h> |
21 | 6 |
#include "main.h" |
7 |
||
8 |
char *stream_buffer = 0; |
|
34 | 9 |
char *ostream_buffer = 0; |
21 | 10 |
int stream_buffer_size; |
34 | 11 |
int ostream_buffer_size; |
21 | 12 |
|
34 | 13 |
void init_stream_buffers() |
21 | 14 |
{ |
15 |
if (stream_buffer == 0) |
|
16 |
{ |
|
17 |
assert(command_line.buffer_size > 0); |
|
18 |
stream_buffer_size = command_line.buffer_size; |
|
34 | 19 |
ostream_buffer_size = command_line.buffer_size; |
21 | 20 |
stream_buffer = (char *) malloc(stream_buffer_size); |
34 | 21 |
ostream_buffer = (char *) malloc(ostream_buffer_size); |
21 | 22 |
} |
23 |
} |
|
36
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
24 |
|
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
25 |
static void send_xterm_resize_string_to_socket(int s) |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
26 |
{ |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
27 |
char *term; |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
28 |
term = getenv("TERM"); |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
29 |
/* I prefer it to send the xterm string always. */ |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
30 |
if (1 || term == 0 || strcmp(term, "xterm") == 0) |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
31 |
{ |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
32 |
char *xterm_str; |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
33 |
xterm_str = get_xterm_resize_string(); |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
34 |
hex_dump("xterm_resize", xterm_str, strlen(xterm_str)); |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
35 |
send(s, xterm_str, strlen(xterm_str), 0); |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
36 |
} |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
37 |
} |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
38 |
|
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
39 |
static void telnet_send_noecho(int s) |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
40 |
{ |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
41 |
char seq[] = { 255 /*IAC*/, 251 /*WILL*/, 1 /*ECHO*/ }; |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
42 |
hex_dump("telnet_send_noecho", seq, sizeof seq); |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
43 |
send(s, seq, sizeof seq, 0); |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
44 |
} |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
45 |
|
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
46 |
static void telnet_send_suppress_go_ahead(int s) |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
47 |
{ |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
48 |
char seq[] = { 255 /*IAC*/, 251 /*WILL*/, 3 /*ECHO*/ }; |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
49 |
hex_dump("telnet_send_suppress_go_ahead", seq, sizeof seq); |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
50 |
send(s, seq, sizeof seq, 0); |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
51 |
} |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
52 |
|
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
53 |
void welcome_new_client_socket(int s) |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
54 |
{ |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
55 |
if (command_line.s_param.run_in_subterminal) |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
56 |
{ |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
57 |
telnet_send_noecho(s); |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
58 |
telnet_send_suppress_go_ahead(s); |
37
b0588bddef91
Option for xterm resizing. Over max connections, close() at once.
viric@llimona
parents:
36
diff
changeset
|
59 |
} |
b0588bddef91
Option for xterm resizing. Over max connections, close() at once.
viric@llimona
parents:
36
diff
changeset
|
60 |
if (command_line.s_param.send_xterm_resize) |
36
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
61 |
send_xterm_resize_string_to_socket(s); |
da427c23d755
Added dumps, telnet_filter, applied filters in tm, improved telnet experience.
viric@llimona
parents:
34
diff
changeset
|
62 |
} |