Răsfoiți Sursa

telnet: disable command echo

Sergey Alirzaev 5 ani în urmă
părinte
comite
60c3416e77

+ 1 - 1
modules/SSH_Server/server.c

@@ -166,7 +166,7 @@ static void *server_worker(void* vArgs)
                 } while (rxSz == WS_WANT_READ || rxSz == WS_WANT_WRITE);
 
                 if (rxSz > 0) {
-                    cli_getchar(cli_state, buf[0]);    // TODO handle rxSz > 1
+                    cli_getchar(cli_state, buf[0], true);    // TODO handle rxSz > 1
                     if (buf[0] == 3 || buf[0] == 4 || cli_state->state == STATE_CLOSE) {
                         stop = 1;
                     }

+ 2 - 2
modules/Telnet_Server/telnet_server.c

@@ -482,7 +482,7 @@ static void newdata(telnetd_state_t *s)
 			s->state = TELNET_STATE_IAC;
 		} else {
 			// incoming user input
-			cli_getchar(s->cli_state, c);
+			cli_getchar(s->cli_state, c, type_term == 1);
 		}
 		break;
 	default:
@@ -715,7 +715,7 @@ void vBasicSocketsCommandInterpreterTask( void *pvParameters )
 									}
 									sendopt(&auth_tlnt_srvr_param[k], TELNET_DO, TELOPT_SUPPRESS_GO_AHEAD);
 									sendopt(&auth_tlnt_srvr_param[k], TELNET_DO, TELOPT_LINEMODE);
-									sendopt(&auth_tlnt_srvr_param[k], TELNET_DO, TELOPT_ECHO);
+									sendopt(&auth_tlnt_srvr_param[k], TELNET_DONT, TELOPT_ECHO);
 									vTaskDelay(50);
 									while(recv( new_sd, &auth_tlnt_srvr_param[k].buf[auth_tlnt_srvr_param[k].bufptr], 1,  MSG_DONTWAIT ) > 0){
 										newdata(&auth_tlnt_srvr_param[k]);

+ 1 - 3
modules/cli/cli.c

@@ -193,12 +193,10 @@ static void cli_input(cli_state_t *s)
 	}
 }
 
-void cli_getchar(cli_state_t *s, char incoming_char)
+void cli_getchar(cli_state_t *s, char incoming_char, bool echo_enabled)
 {
 	s->buf[s->bufptr] = incoming_char;
 
-	printf("got char: %x\r\n", (unsigned)incoming_char);
-	bool echo_enabled = true;	// FIXME
 	if(echo_enabled && s->input_state != CLI_AUTH_PASSW){
 		if (s->buf[s->bufptr] != ISO_etx && s->buf[s->bufptr] != ISO_del) {
 			s->send( s->num_connect, &s->buf[s->bufptr], 1);

+ 1 - 1
modules/cli/cli.h

@@ -53,7 +53,7 @@ extern const char pcWarningMessage[];
 extern const unsigned pcWarningMessageLen;
 
 void cli_init(void);
-void cli_getchar(cli_state_t *s, char incoming_char);
+void cli_getchar(cli_state_t *s, char incoming_char, bool echo_enabled);
 cli_state_t *alloc_state(void);
 void free_state(cli_state_t *state);
 void cli_hello(cli_state_t *cli_state);