X-Git-Url: http://git.linex4red.de/pub/USBasp.git/blobdiff_plain/16ea5aa7a2e5f326f8ff129e740a19bb3fb7829f..3b6987bca3ef746fd9a5d4baec6d40b65c9b4101:/Projects/Webserver/Lib/TELNETServerApp.c?ds=sidebyside diff --git a/Projects/Webserver/Lib/TELNETServerApp.c b/Projects/Webserver/Lib/TELNETServerApp.c index cabf52756..d1f1d7f97 100644 --- a/Projects/Webserver/Lib/TELNETServerApp.c +++ b/Projects/Webserver/Lib/TELNETServerApp.c @@ -31,22 +31,26 @@ /** \file * * TELNET Webserver Application. When connected to the uIP stack, - * this will serve out connection information to the client. + * this will serve out raw TELNET to the client on port 23. */ #define INCLUDE_FROM_TELNETSERVERAPP_C #include "TELNETServerApp.h" /** Welcome message to send to a TELNET client when a connection is first made. */ -char PROGMEM WelcomeHeader[] = "********************************************\r\n" - "* LUFA uIP Webserver (TELNET) *\r\n" - "********************************************\r\n"; +const char PROGMEM WelcomeHeader[] = "********************************************\r\n" + "* LUFA uIP Webserver (TELNET) *\r\n" + "********************************************\r\n"; /** Main TELNET menu, giving the user the list of available commands they may issue */ -char PROGMEM TELNETMenu[] = "\r\n" - " Available Commands:\r\n" - " c) List Active TCP Connections\r\n" - "\r\nCommand>"; +const char PROGMEM TELNETMenu[] = "\r\n" + " == Available Commands: ==\r\n" + " c) List Active TCP Connections\r\n" + " =========================\r\n" + "\r\n>"; + +/** Header to print before the current connections are printed to the client */ +const char PROGMEM CurrentConnectionsHeader[] = "\r\n* Current TCP Connections: *\r\n"; /** Initialization function for the simple HTTP webserver. */ void TELNETServerApp_Init(void) @@ -65,11 +69,13 @@ void TELNETServerApp_Callback(void) if (uip_connected()) { + /* New connection - initialize connection state values */ AppState->TELNETServer.CurrentState = TELNET_STATE_SendHeader; } if (uip_acked()) { + /* Progress to the next state once the current state's data has been ACKed */ AppState->TELNETServer.CurrentState = AppState->TELNETServer.NextState; } @@ -79,15 +85,15 @@ void TELNETServerApp_Callback(void) { case TELNET_STATE_SendHeader: /* Copy over and send the TELNET welcome message upon first connection */ - strncpy_P(AppData, WelcomeHeader, strlen_P(WelcomeHeader)); - uip_send(AppData, strlen_P(WelcomeHeader)); + strcpy_P(AppData, WelcomeHeader); + uip_send(AppData, strlen(AppData)); AppState->TELNETServer.NextState = TELNET_STATE_SendMenu; break; case TELNET_STATE_SendMenu: /* Copy over and send the TELNET menu to the client */ - strncpy_P(AppData, TELNETMenu, strlen_P(TELNETMenu)); - uip_send(AppData, strlen_P(TELNETMenu)); + strcpy_P(AppData, TELNETMenu); + uip_send(AppData, strlen(AppData)); AppState->TELNETServer.NextState = TELNET_STATE_GetCommand; break; @@ -106,7 +112,11 @@ void TELNETServerApp_Callback(void) { case 'c': TELNETServerApp_DisplayTCPConnections(); - break; + break; + default: + strcpy(AppData, "Invalid Command.\r\n"); + uip_send(AppData, strlen(AppData)); + break; } AppState->TELNETServer.NextState = TELNET_STATE_SendMenu; @@ -120,7 +130,7 @@ static void TELNETServerApp_DisplayTCPConnections(void) { char* const AppData = (char*)uip_appdata; - strcpy(AppData, "\r\n* Current TCP Connections: *\r\n"); + strcpy_P(AppData, CurrentConnectionsHeader); uint16_t ResponseLen = strlen(AppData); uint8_t ActiveConnCount = 0;