static void do_feat(session_t *sess) { ftp_lreply(sess, FTP_FEAT, "Feature:"); writen(sess->ctrl_fd, " EPRT\r\n", strlen(" EPRT\r\n")); writen(sess->ctrl_fd, " EPSV\r\n", strlen(" EPSV\r\n")); writen(sess->ctrl_fd, " MDTM\r\n", strlen(" MDTM\r\n")); writen(sess->ctrl_fd, " PASV\r\n", strlen(" PASV\r\n")); writen(sess->ctrl_fd, " REST STREAM\r\n", strlen(" STREAM\r\n")); writen(sess->ctrl_fd, " SIZE\r\n", strlen(" SIZE\r\n")); writen(sess->ctrl_fd, " UTF8\r\n", strlen(" UTF8\r\n")); ftp_reply(sess, FTP_FEAT, "end."); }
/** *do_feat - 回复服务器的特定 *@sess:会话结构体 */ void ftpproto::do_feat(session_t* sess) {//211 ftp_lreply(sess,FTP_FEAT,"Features:"); lcw_systools.writen(sess->ctrl_fd," EPRT\r\n",strlen(" EPRT\r\n")); lcw_systools.writen(sess->ctrl_fd," EPSV\r\n",strlen(" EPSV\r\n")); lcw_systools.writen(sess->ctrl_fd," NDTH\r\n",strlen(" NDTH\r\n")); lcw_systools.writen(sess->ctrl_fd," PASV\r\n",strlen(" PASV\r\n")); lcw_systools.writen(sess->ctrl_fd," REST STREAM\r\n",strlen(" REST STREAM\r\n")); lcw_systools.writen(sess->ctrl_fd," SIZE\r\n",strlen(" SIZE\r\n")); lcw_systools.writen(sess->ctrl_fd," TVFS\r\n",strlen(" TVFS\r\n")); lcw_systools.writen(sess->ctrl_fd," UTF8\r\n",strlen(" UTF8\r\n")); ftp_reply(sess,FTP_FEAT,"End\r\n"); }
// feat命令是用来请求FTP服务器列出它的所有的扩展命令与扩展功能的。属于主动模式命令! void do_cmd_feat(session_t *pses) { ftp_lreply(pses->ctrl_fd, FTP_FEAT, "Features:"); writen(pses->ctrl_fd, "EPRT\r\n", strlen("EPRT\r\n")); writen(pses->ctrl_fd, "EPSV\r\n", strlen("EPSV\r\n")); writen(pses->ctrl_fd, "MDTM\r\n", strlen("MDTM\r\n")); writen(pses->ctrl_fd, "PASV\r\n", strlen("PASV\r\n")); writen(pses->ctrl_fd, "REST STREAM\r\n", strlen("REST STREAM\r\n")); writen(pses->ctrl_fd, "SIZE\r\n", strlen("SIZE\r\n")); writen(pses->ctrl_fd, "TUFS\r\n", strlen("TUFS\r\n")); writen(pses->ctrl_fd, "UTF8\r\n", strlen("UTF8\r\n")); ftp_reply(pses->ctrl_fd, FTP_STATOK, "End"); //211 }
/** *do_help - 回复一些提示的信息 *@sess:会话结构体 */ void ftpproto::do_help(session_t* sess) { ftp_lreply(sess,FTP_HELP, "The following commands are recognized."); lcw_systools.writen(sess->ctrl_fd, " ABOR ACCT ALLO APPE CDUP CWD DELE EPRT EPSV FEAT HELP LIST MDTM MKD\r\n", strlen(" ABOR ACCT ALLO APPE CDUP CWD DELE EPRT EPSV FEAT HELP LIST MDTM MKD\r\n")); lcw_systools.writen(sess->ctrl_fd, " MODE NLST NOOP OPTS PASS PASV PORT PWD QUIT REIN REST RETR RMD RNFR\r\n", strlen(" MODE NLST NOOP OPTS PASS PASV PORT PWD QUIT REIN REST RETR RMD RNFR\r\n")); lcw_systools.writen(sess->ctrl_fd, " RNTO SITE SIZE SMNT STAT STOR STOU STRU SYST TYPE USER XCUP XCWD XMKD\r\n", strlen(" RNTO SITE SIZE SMNT STAT STOR STOU STRU SYST TYPE USER XCUP XCWD XMKD\r\n")); lcw_systools.writen(sess->ctrl_fd, " XPWD XRMD\r\n", strlen(" XPWD XRMDr\n")); ftp_reply(sess,FTP_HELP, "Help OK."); }