您的位置:首页 > 编程语言 > PHP开发

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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: