twisted搭建ftp server
2015-08-03 23:03
951 查看
from twisted.protocols import ftp from twisted.cred import portal,checkers from zope.interface import implements from twisted.python import filepath
# 关于的FTPRealm类的具体信息,请去C:\Python25\Lib\site-packages\twisted\cred\protal.py文件中寻找 class MyFTPRealm: implements(portal.IRealm) def __init__(self, anonymousRoot): self.anonymousRoot = filepath.FilePath(anonymousRoot) self.dir = {'lilei':'D:\\xls','username':'D:\\word-process'} def requestAvatar(self, avatarId, mind, *interfaces): for iface in interfaces: if iface is ftp.IFTPShell: if avatarId is checkers.ANONYMOUS: avatar = ftp.FTPAnonymousShell(self.anonymousRoot) else: user_dir = self.dir[avatarId] avatar = ftp.FTPShell(filepath.FilePath(user_dir)) return ftp.IFTPShell, avatar, \ getattr(avatar, 'logout', lambda: None) raise NotImplementedError(\ "Only IFTPShell interface is supported by this realm")
# 这个./表示本地路径,是匿名用户的默认文件夹
# 关于的
Portal
类的具体信息,请去C:\Python25\Lib\site-packages\twisted\cred\protal.py 文件中寻找
p = portal.Portal(MyFTPRealm('./')) p.registerChecker(checkers.AllowAnonymousAccess())
# user.db文件是所有非匿名用户的用户名和密码,格式如下
# lilei:password
# username:hanmeimei p.registerChecker(checkers.FilePasswordDB("user.db")) f = ftp.FTPFactory(p) from twisted.internet import reactor reactor.listenTCP(21, f) reactor.run()
相关文章推荐
- mac osx 搭建php开发环境
- Potplayer
- php模拟post请求发送文件
- PHP常量使用总结
- PHP计划任务之关闭浏览器后仍然继续执行的函数 ignore_user_abort
- yourphp
- php 淘宝、天猫店铺商品采集
- 利用PHP从淘宝采集评论和成交数据
- 利用PHP从淘宝采集评论和成交数据
- php使用函数--举例
- Windows下搭建PHP环境
- php扩展模块如何安装
- contentprovider实例总结
- thinkphp学习(一)
- PHP实例开发(3)PHP中MVC学习之ThinkPHP
- PHP中的CURL
- HDU1.1.2 A+B for Input-Output Practice (II)
- HDU1.1.1 A+B for Input-Output Practice (I)
- 加解密算法
- Yii2的安装及简单配置