免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1915 | 回复: 0
打印 上一主题 下一主题

我打算编写一个FTP服务器,考虑到众多FTP服务的实现,我至少应该支持多少FTP命令? [复制链接]

论坛徽章:
1
2015年辞旧岁徽章
日期:2015-03-03 16:54:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-09-06 10:27 |只看该作者 |倒序浏览
这是代码的一部分:

static struct {
        char        *name;
        int        index;
} ftp_cmds[] = {
        //RFC959
        {"USER", 0},        //[00]USER username\r\n
        {"PASS", 1},        //[01]PASS password\r\n
        {"ACCT", 2},        //[02]ACCT account-information\r\n
        {"CWD", 3},        //[03]CWD pathname\r\n
        {"CDUP", 4},        //[04]CDUP\r\n
        {"SMNT", 5},        //[05]SMNT pathname\r\n
        {"QUIT", 6},        //[06]QUIT\r\n
        {"REIN", 7},        //[07]REIN\r\n
        {"PORT", 8},        //[08]PORT h1,h2,h3,h4,h5,h6\r\n
        {"PASV", 9},        //[09]PASV\r\n
        {"TYPE", 10},        //[10]TYPE type-code\r\n
        {"STRU", 11},        //[11]STRU structure-code\r\n
        {"MODE", 12},        //[12]MODE mode-code\r\n
        {"RETR", 13},        //[13]RETR pathname\r\n
        {"STOR", 14},        //[14]STOR pathname\r\n
        {"STOU", 15},        //[15]STOU\r\n
        {"APPE", 16},        //[16]APPE pathname\r\n
        {"ALLO", 17},        //[17]ALLO decimal-integer R decimal-integer\r\n或ALLO decimal-integer\r\n
        {"REST", 18},        //[18]REST marker\r\n
        {"RNFR", 19},        //[19]RNFR pathname\r\n
        {"RNTO", 20},        //[20]RNTO pathname\r\n
        {"ABOR", 21},        //[21]ABOR\r\n
        {"DELE", 22},        //[22]DELE pathname\r\n
        {"RMD", 23},        //[23]RMD pathname\r\n
        {"MKD", 24},        //[24]MKD pathname\r\n
        {"PWD", 25},        //[25]PWD\r\n
        {"LIST", 26},        //[26]LIST pathname\r\n或LIST\r\n
        {"NLST", 27},        //[27]NLST pathname\r\n或NLST\r\n
        {"SITE", 28},        //[28]SITE stringr\r\n
        {"SYST", 29},        //[29]SYST\r\n
        {"STAT", 30},        //[30]STAT pathname\r\n或STAT\r\n
        {"HELP", 31},        //[31]HELP string\r\n或HELP\r\n
        {"NOOP", 32},        //[32]NOOP\r\n
        //扩展
        {"SIZE", 33},        //[33]SIZE pathname\r\n
        {"MDTM", 34},        //[33]MDTM pathname\r\n
        //别名
        {"XCUP", 4},        //[04]CDUP
        {"XCWD", 3},        //[03]CWD
        {"XMKD", 24},        //[24]MKD
        {"XPWD", 25},        //[25]PWD
        {"XRMD", 23},        //[23]RMD
        {NULL, -1}
};

2年前写代码时,主要参考了RFC959和VSFTPD的HELP命令输出以及Server-U最常用的SIZE和MDTM两个扩展命令的介绍
使用过程中发现没有支持IIS的OPTS命令造成一些混合字符集的困扰
SMNT命令由于安全问题没有实现

一时间心血来潮,感觉有必要改写一下,变成一个比较通用的FTP服务程序,

前一阵子看了下Server-U的介绍,加入HOST命令扩展用于多个主机域
我则倾向于常见MTA的多域处理方式,用user@host.domain作为用户名实现同一IP地址下FTP虚拟主机
(HTTP协议利用Host: 头域定位虚拟主机,我想Server-U用HOST的命令应该是这么来的)

当然,FTP协议实现的代码远没有管理界面来的多(如果HTTP管理界面也用C语言写的话)

就想到这么多,欢迎拍砖。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP