Chinaunix首页 | 论坛 | 博客
  • 博客访问: 160597
  • 博文数量: 16
  • 博客积分: 2000
  • 博客等级: 大尉
  • 技术积分: 195
  • 用 户 组: 普通用户
  • 注册时间: 2007-07-29 08:28
文章分类

全部博文(16)

文章存档

2015年(1)

2010年(15)

我的朋友

分类: Python/Ruby

2010-04-01 22:07:38

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


阅读(2636) | 评论(0) | 转发(0) |
0

上一篇:python操作word

下一篇:验证码识别

给主人留下些什么吧!~~