~ntt-pf-lab/nova/monkey_patch_notification

« back to all changes in this revision

Viewing changes to vendor/Twisted-10.0.0/doc/core/examples/ftpserver.py

  • Committer: Jesse Andrews
  • Date: 2010-05-28 06:05:26 UTC
  • Revision ID: git-v1:bf6e6e718cdc7488e2da87b21e258ccc065fe499
initial commit

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
# Copyright (c) 2008 Twisted Matrix Laboratories.
 
2
# See LICENSE for details.
 
3
 
 
4
"""
 
5
An example FTP server with minimal user authentication.
 
6
"""
 
7
 
 
8
from twisted.protocols.ftp import FTPFactory, FTPRealm
 
9
from twisted.cred.portal import Portal
 
10
from twisted.cred.checkers import AllowAnonymousAccess, FilePasswordDB
 
11
from twisted.internet import reactor
 
12
 
 
13
#
 
14
# First, set up a portal (twisted.cred.portal.Portal). This will be used
 
15
# to authenticate user logins, including anonymous logins.
 
16
#
 
17
# Part of this will be to establish the "realm" of the server - the most
 
18
# important task in this case is to establish where anonymous users will
 
19
# have default access to. In a real world scenario this would typically
 
20
# point to something like '/pub' but for this example it is pointed at the
 
21
# current working directory.
 
22
#
 
23
# The other important part of the portal setup is to point it to a list of
 
24
# credential checkers. In this case, the first of these is used to grant
 
25
# access to anonymous users and is relatively simple; the second is a very
 
26
# primitive password checker.  This example uses a plain text password file
 
27
# that has one username:password pair per line. This checker *does* provide
 
28
# a hashing interface, and one would normally want to use it instead of
 
29
# plain text storage for anything remotely resembling a 'live' network. In
 
30
# this case, the file "pass.dat" is used, and stored in the same directory
 
31
# as the server. BAD.
 
32
#
 
33
# Create a pass.dat file which looks like this:
 
34
#
 
35
# =====================
 
36
#   jeff:bozo
 
37
#   grimmtooth:bozo2
 
38
# =====================
 
39
#
 
40
p = Portal(FTPRealm('./'),
 
41
           [AllowAnonymousAccess(), FilePasswordDB("pass.dat")])
 
42
 
 
43
#
 
44
# Once the portal is set up, start up the FTPFactory and pass the portal to
 
45
# it on startup. FTPFactory will start up a twisted.protocols.ftp.FTP()
 
46
# handler for each incoming OPEN request. Business as usual in Twisted land.
 
47
#
 
48
f = FTPFactory(p)
 
49
 
 
50
#
 
51
# You know this part. Point the reactor to port 21 coupled with the above factory,
 
52
# and start the event loop.
 
53
#
 
54
reactor.listenTCP(21, f)
 
55
reactor.run()