文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>twisted构建简易ftp服务器

twisted构建简易ftp服务器

时间:2010-04-01  来源:sdau

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()


相关阅读 更多 +
排行榜 更多 +
找茬脑洞的世界安卓版

找茬脑洞的世界安卓版

休闲益智 下载
滑板英雄跑酷2手游

滑板英雄跑酷2手游

休闲益智 下载
披萨对对看下载

披萨对对看下载

休闲益智 下载