📄 fshell.c
字号:
/* mark data to be send as soon */
FShellConnects.datainqueue = 1;
FShellConnects.shell_prompt_ready = 1;
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
/* String "info" */
if(!strncmp(info,
(const char *)FShellConnects.rx_buffer,
strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
FShellConnects.buffer_ptr >= 4)
{
telnetd_sendstring(disclaimer);
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
/* String "help" */
if(!strncmp(help,
(const char *)FShellConnects.rx_buffer,
strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
FShellConnects.buffer_ptr >= 4)
{
telnetd_sendstring(helptext);
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
/* String "ethstats" */
if(!strncmp(ethstats,
(const char *)FShellConnects.rx_buffer,
strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
FShellConnects.buffer_ptr >= 4)
{
/* Check if pointer is actually in use */
if(FShellConnects.tmem == NULL)
{
/* if not in use, get new mem from malloc() */
FShellConnects.tmem = (char*) malloc(sizeof(char)*290);
if(FShellConnects.tmem == NULL)
{
printf("NO MEM!\n");
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
sprintf(FShellConnects.tmem,"Ethernet Stats\r\n--------------\r\n Ethernet Packets received: %li\r\n Ethernet Packets sent: %li\r\n IP Packets received: %li\r\n IP Packets sent: %li\r\n TCP Packets received: %li\r\n TCP Packets sent: %li\r\n IP Checksum Errors: %li\r\n ICMP Checksum Errors: %li\r\n TCP Checksum Errors: %li\r\n", ShowRecETH(), ShowTransETH(), ShowRecIP(), ShowTransIP(), ShowRecTCP(), ShowTransTCP(), ShowIpCSE(), ShowIcmpCSE(), ShowTcpCSE());
/* mark data to be send as soon */
FShellConnects.datainqueue = 1;
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
else
{
printf("Operation not finished yet!\n");
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
}
/* String "httpses" */
if(!strncmp(httpses,
(const char *)FShellConnects.rx_buffer,
strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
FShellConnects.buffer_ptr >= 4)
{
/* Check if pointer is actually in use */
if(FShellConnects.tmem == NULL)
{
UINT8 httpsescount;
UINT16 txtlen = 0;
/* if not in use, get new mem from malloc() */
FShellConnects.tmem = (char*) malloc(sizeof(char)*350);
if(FShellConnects.tmem == NULL)
{
printf("NO MEM!\n");
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
/* Counter to store session data in string array */
for(httpsescount = 0; httpsescount<NO_OF_HTTP_SESSIONS; httpsescount++)
{
char statedef[20];
if(https[httpsescount].state == 1)
{
strcpy(statedef, "STATE_FREE");
}
if(https[httpsescount].state == 2)
{
strcpy(statedef, "STATE_RESERVED");
}
if(https[httpsescount].state == 3)
{
strcpy(statedef, "STATE_ACTIVE");
}
txtlen += sprintf(FShellConnects.tmem+txtlen, " Session Nr.: %i Session State: %s\r\n", httpsescount, statedef);
}
/* mark data to be send as soon */
FShellConnects.datainqueue = 1;
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
}
/* String "exit" */
if(!strncmp(closeconn,
(const char *)FShellConnects.rx_buffer,
strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
FShellConnects.buffer_ptr >= 4)
{
printf("you typed exit...\n");
shellcmd_exit();
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
/* String "ipclient" */
if(!strncmp(ipclient,
(const char *)FShellConnects.rx_buffer,
strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
FShellConnects.buffer_ptr >= 5)
{
/* Check if pointer is actually in use */
if(FShellConnects.tmem == NULL)
{
/* if not in use, get new mem from malloc() */
FShellConnects.tmem = (char*) malloc(sizeof(char)*60);
if(FShellConnects.tmem == NULL)
{
printf("NO MEM!\n");
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
sprintf(FShellConnects.tmem,"The Client IP is: %li.%li.%li.%li\r\n",(FShellConnects.ipaddr>>24), ((FShellConnects.ipaddr>>16)&0xff), ((FShellConnects.ipaddr>>8)&0xff), ((FShellConnects.ipaddr>>0)&0xff));
/* mark data to be send as soon */
FShellConnects.datainqueue = 1;
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
else
{
printf("Operation not finished yet!\n");
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
}
/* String "ipserver" */
if(!strncmp(ipserver,
(const char *)FShellConnects.rx_buffer,
strcspn((const char *)FShellConnects.rx_buffer, "\r")) &&
FShellConnects.buffer_ptr >= 5)
{
/* Check if pointer is actually in use */
if(FShellConnects.tmem == NULL)
{
/* if not in use, get new mem from malloc() */
FShellConnects.tmem = (char*) malloc(sizeof(char)*60);
if(FShellConnects.tmem == NULL)
{
printf("NO MEM!\n");
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
sprintf(FShellConnects.tmem,"The Server IP is: %li.%li.%li.%li\r\n",(localmachine.localip>>24), ((localmachine.localip>>16)&0xff), ((localmachine.localip>>8)&0xff), ((localmachine.localip>>0)&0xff));
/* mark data to be send as soon */
FShellConnects.datainqueue = 1;
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
else
{
printf("Operation not finished yet!\n");
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
}
else
{
telnetd_sendstring("Command not recognized!\r\n");
for (i=0; i<RX_BUFFER_SIZE; i++)
FShellConnects.rx_buffer[i] = 0;
FShellConnects.buffer_ptr = 0;
FShellConnects.shell_prompt_ready = 1;
return;
}
}
}
/*-----------------------------------------------------------------------------
void fshellclose(UINT32 ipaddr, UINT32 tport)
When the client would like to disconnect the close function is called from
the telnet server.
Return value: none
-----------------------------------------------------------------------------*/
void fshellclose(UINT32 ipaddr, UINT32 tport)
{
ipaddr = 0;
tport = 0;
FShellConnects.ipaddr = 0;
FShellConnects.port = 0;
FShellConnects.connected = 0;
FShellConnects.helloprompt = 0;
FShellConnects.shell_prompt_ready = 0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -