void show_fun(int fd_client) { printf("+==========================================+\n"); printf("| Weclome to my ftp! |\n"); printf("+==========================================+\n"); printf("| Select function: |\n"); printf("| 1.cd + path |\n"); printf("| 2.upload: command: puts + filename |\n"); printf("| 3.download:command:gets + filename |\n"); printf("+==========================================+\n"); char send_buf[1024]; char file_name[20][32]; char command[64]; int len,re_len,file_num =0; char consle[64] = ""; memset(consle,0,1024); int consle_len; recv(fd_client,&consle_len,sizeof(int),0); recv(fd_client,&consle,consle_len,0); while(printf("%s "),fflush(stdout),memset(send_buf,0,1024),fgets(send_buf,1024,stdin)!=NULL) { if( send_buf[0] == '\n') continue; send_buf[strlen(send_buf)-1] = '\0'; len = strlen(send_buf); send(fd_client,&len,sizeof(len),0); send(fd_client,send_buf,strlen(send_buf),0); file_num = get_command(send_buf,file_name,command); // if( 0 == strncmp(command,"cd",3) ) { handle_ccd(fd_client,consle); }else if( 0 == strncmp(command,"ls",3) ) { ; }else if( 0 == strncmp(command,"gets",5) ) { handle_download(fd_client,file_num,file_name); }else if( 0 == strncmp(command,"puts",5) ) { handle_upload(fd_client,file_num,file_name); }else if( 0 == strncmp(command,"rm",3) ) { ; }else if( 0 == strncmp(command,"bye",4) ) { break; } else { printf("error command\n"); } } }
void driver_command_data_received(driver_command_t *driver, uint8_t *data, size_t length) { command_packet_t *in = NULL; command_packet_t *out = NULL; buffer_add_bytes(driver->stream, data, length); while((in = command_packet_read(driver->stream))) { /* TUNNEL_DATA commands are too noisy to print. */ if(in->command_id != TUNNEL_DATA) { printf("Got a command: "); command_packet_print(in); } switch(in->command_id) { case COMMAND_PING: out = handle_ping(driver, in); break; case COMMAND_SHELL: out = handle_shell(driver, in); break; case COMMAND_EXEC: out = handle_exec(driver, in); break; case COMMAND_DOWNLOAD: out = handle_download(driver, in); break; case COMMAND_UPLOAD: out = handle_upload(driver, in); break; case COMMAND_SHUTDOWN: out = handle_shutdown(driver, in); break; case COMMAND_DELAY: out = handle_delay(driver, in); break; case TUNNEL_CONNECT: out = handle_tunnel_connect(driver, in); break; case TUNNEL_DATA: out = handle_tunnel_data(driver, in); break; case TUNNEL_CLOSE: out = handle_tunnel_close(driver, in); break; case COMMAND_ERROR: out = handle_error(driver, in); break; default: LOG_ERROR("Got a command packet that we don't know how to handle!\n"); out = command_packet_create_error_response(in->request_id, 0xFFFF, "Not implemented yet!"); } /* Respond if and only if an outgoing packet was created. */ if(out) { uint8_t *data; size_t length; if(out->command_id != TUNNEL_DATA) { printf("Response: "); command_packet_print(out); } data = command_packet_to_bytes(out, &length); buffer_add_bytes(driver->outgoing_data, data, length); safe_free(data); command_packet_destroy(out); } command_packet_destroy(in); } }