再识ProFTPD

volkswageos 2011-01-28 07:27:16
ProFTPD对大家来说是非常熟悉的,它对我们来说是FTP服务器,提供文件传输服务。之所以取名为“再识”,就是想向大家介绍它鲜为人知的一面。在介绍之前我们先来看一些事实:
任意登录到一台机器进入proftpd的程序目录执行./proftpd --help,可以发现它带-l参数,可以列出所有编译进程序的模块。


背景
我相信,ProFTPD对大家来说是非常熟悉的,因为所有的服务器上都默认安装了系统部提供的ProFTPD。
它对我们来说是FTP服务器,提供文件传输服务。
之所以取名为“再识”,就是想向大家介绍它鲜为人知的一面。在介绍之前我们先来看一些事实:
• 任意登录到一台机器进入proftpd的程序目录执行./proftpd --help,可以发现它带-l参数,可以列出所有编译进程序的模块。



• 执行./proftpd -l 可以获得它所编译的模块列表。


从上面列出的内容可以看出ProFTPD是高度模块化的,类似apache,也是由core模块和各个基本功能模块以及扩展模块组合而成的。ProFTPD 是开源的软件,以GPL许可发布的。 这意味着ProFTPD的功能是可自行定制化的,非常灵活;加上它已被我们广泛地部署和使用,是重要的数据传输软件。这两个特性使得ProFTPD具有了其他传输软件难以比拟的优势。
平时大家在使用它的时候总会觉得它如果支持这样的或者那样的功能就完美了,转念想自己开发难度又大了一点,不免放弃自己开发,但是仍然渴望有人能开发出来让自己使用。 实际上,已经有大量的牛人想过,做过了,并且分享了出来。下面我就对我认为比较有应用价值的ProFTPD模块进行介绍:

因长度受限:http://hi.baidu.com/ops_bd/blog/item/5a5bc62339b58020c9955971.html
...全文
311 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
guet_sj 2011-10-22
  • 打赏
  • 举报
回复

void Set_GPIO(uint8 port,uint8 GPIO_port, uint8 GPIO_port_num)
{
uint8 sfr_bak;

sfr_bak = SFR_BANK;
SFR_BANK = BANK_GPIO;
MFPSEL6 &=~(1<<7);
if(port == I2CDAT)
{
switch (GPIO_port)
{
case 0:
GPIOCOUTEN |= (0x01 << GPIO_port_num);
break;
case 1:
GPIOCINEN |= (0x01 << GPIO_port_num);
break;
case 2:
GPIOCDAT |= (0x01 << GPIO_port_num);
break;
default:
break;
}
}
else
{
switch (GPIO_port)
{
case 0:
GPIOBOUTEN |= (0x01 << GPIO_port_num);
break;
case 1:
GPIOBINEN |= (0x01 << GPIO_port_num);
break;
case 2:
GPIOBDAT |= (0x01 << GPIO_port_num);
break;
default:
break;
}
}
SFR_BANK = sfr_bak;
}





guet_sj 2011-10-22
  • 打赏
  • 举报
回复
C/C++ code
void Set_GPIO(uint8 port,uint8 GPIO_port, uint8 GPIO_port_num)
{
uint8 sfr_bak;

sfr_bak = SFR_BANK;
SFR_BANK = BANK_GPIO;
MFPSEL6 &=~(1<<7);
if(port == I2CDAT)
{
switch (GPIO_port)
{
case 0:
GPIOCOUTEN |= (0x01 << GPIO_port_num);
break;
case 1:
GPIOCINEN |= (0x01 << GPIO_port_num);
break;
case 2:
GPIOCDAT |= (0x01 << GPIO_port_num);
break;
default:
break;
}
}
else
{
switch (GPIO_port)
{
case 0:
GPIOBOUTEN |= (0x01 << GPIO_port_num);
break;
case 1:
GPIOBINEN |= (0x01 << GPIO_port_num);
break;
case 2:
GPIOBDAT |= (0x01 << GPIO_port_num);
break;
default:
break;
}
}
SFR_BANK = sfr_bak;
}





3,286

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 实用资料发布区
社区管理员
  • 实用资料发布区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧