diff --git a/src/mqtt/hasp_mqtt_pubsubclient.cpp b/src/mqtt/hasp_mqtt_pubsubclient.cpp index 229e02be..93da72f6 100644 --- a/src/mqtt/hasp_mqtt_pubsubclient.cpp +++ b/src/mqtt/hasp_mqtt_pubsubclient.cpp @@ -342,7 +342,8 @@ void mqttSetup() IRAM_ATTR void mqttLoop(void) { - if(mqttEnabled) mqttClient.loop(); + // if(mqttEnabled) + mqttClient.loop(); } void mqttEvery5Seconds(bool networkIsConnected) diff --git a/src/sys/svc/hasp_telnet.cpp b/src/sys/svc/hasp_telnet.cpp index 647395ad..4001dd3a 100644 --- a/src/sys/svc/hasp_telnet.cpp +++ b/src/sys/svc/hasp_telnet.cpp @@ -44,8 +44,8 @@ void telnetClientDisconnect() LOG_TRACE(TAG_TELN, F(D_TELNET_CLOSING_CONNECTION), telnetClient.remoteIP().toString().c_str()); telnetLoginState = TELNET_UNAUTHENTICATED; telnetLoginAttempt = 0; // Initial attempt - // delete telnetConsole; - // telnetConsole = NULL; + delete telnetConsole; + telnetConsole = NULL; telnetClient.stop(); } @@ -215,11 +215,16 @@ static void telnetProcessLine(const char* input) break; } default: - if(strcasecmp_P(input, PSTR("exit")) == 0) { + if(strcasecmp_P(input, PSTR("exit")) == 0 || strcasecmp_P(input, PSTR("quit")) == 0 || + strcasecmp_P(input, PSTR("bye")) == 0) { telnetClientDisconnect(); } else if(strcasecmp_P(input, PSTR("logoff")) == 0) { - telnetClient.println(F("\r\n" D_USERNAME " ")); - telnetLoginState = TELNET_UNAUTHENTICATED; + if(strcmp(input, http_config.password) == 0) { + telnetClient.println(F("\r\n" D_USERNAME " ")); + telnetLoginState = TELNET_UNAUTHENTICATED; + } else { + telnetClientDisconnect(); + } } else { dispatch_text_line(input); } @@ -245,15 +250,16 @@ void telnetSetup() telnetServer->setNoDelay(true); telnetServer->begin(); - telnetConsole = new ConsoleInput(&telnetClient, HASP_CONSOLE_BUFFER); - if(telnetConsole != NULL) { - telnetConsole->setLineCallback(telnetProcessLine); - LOG_INFO(TAG_TELN, F(D_TELNET_STARTED)); - return; - } + // telnetConsole = new ConsoleInput(&telnetClient, HASP_CONSOLE_BUFFER); + // if(telnetConsole != NULL) { + // telnetConsole->setLineCallback(telnetProcessLine); + // LOG_INFO(TAG_TELN, F(D_TELNET_STARTED)); + // return; + // } + LOG_INFO(TAG_TELN, F(D_TELNET_STARTED)); + } else { + LOG_ERROR(TAG_TELN, F(D_TELNET_FAILED)); } - - LOG_ERROR(TAG_TELN, F(D_TELNET_FAILED)); #endif } } @@ -290,6 +296,31 @@ IRAM_ATTR void telnetLoop() } } #else + + /* Active Client: Process user input */ + if(telnetClient.connected()) { + if(telnetConsole) { + int16_t keypress = telnetConsole->readKey(); + } else { + telnetConsole = new ConsoleInput(&telnetClient, HASP_CONSOLE_BUFFER); + if(telnetConsole) { + telnetConsole->setLineCallback(telnetProcessLine); + } else { + telnetClientDisconnect(); + LOG_ERROR(TAG_TELN, F(D_TELNET_FAILED)); + } + } + } + +#endif +} + +void telnetEverySecond(void) +{ + if(!telnetClient.connected() && telnetLoginState != TELNET_UNAUTHENTICATED) { + telnetClientDisconnect(); // active client disconnected + } + if(telnetServer && telnetServer->hasClient()) { // a new client has connected if(!telnetClient.connected()) { // nobody is already connected telnetAcceptClient(); // allow the new client @@ -297,22 +328,7 @@ IRAM_ATTR void telnetLoop() LOG_WARNING(TAG_TELN, F(D_TELNET_CLIENT_REJECTED)); telnetServer->available().stop(); // already have a client, block new connections } - } else { - if(!telnetClient.connected() && telnetLoginState != TELNET_UNAUTHENTICATED) { - telnetClientDisconnect(); // active client disconnected - } else { - - /* Active Client: Process user input */ - if(telnetConsole && telnetClient.connected()) { - int16_t keypress = telnetConsole->readKey(); - switch(keypress) { - case ConsoleInput::KEY_PAUSE: - break; - } - } - } } -#endif } #if HASP_USE_CONFIG > 0