Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(417)

Side by Side Diff: third_party/twisted_8_1/twisted/web/vhost.py

Issue 12261012: Remove third_party/twisted_8_1 (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/tools/build
Patch Set: Created 7 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
(Empty)
1
2 # Copyright (c) 2001-2004 Twisted Matrix Laboratories.
3 # See LICENSE for details.
4
5
6 """I am a virtual hosts implementation.
7 """
8
9 # System Imports
10 import string
11
12 # Twisted Imports
13 from twisted.python import roots
14
15 # Sibling Imports
16 import resource
17 import error
18
19 class VirtualHostCollection(roots.Homogenous):
20 """Wrapper for virtual hosts collection.
21
22 This exists for configuration purposes.
23 """
24 entityType = resource.Resource
25
26 def __init__(self, nvh):
27 self.nvh = nvh
28
29 def listStaticEntities(self):
30 return self.nvh.hosts.items()
31
32 def getStaticEntity(self, name):
33 return self.nvh.hosts.get(self)
34
35 def reallyPutEntity(self, name, entity):
36 self.nvh.addHost(name, entity)
37
38 def delEntity(self, name):
39 self.nvh.removeHost(name)
40
41
42 class NameVirtualHost(resource.Resource):
43 """I am a resource which represents named virtual hosts.
44 """
45
46 default = None
47
48 def __init__(self):
49 """Initialize.
50 """
51 resource.Resource.__init__(self)
52 self.hosts = {}
53
54 def listStaticEntities(self):
55 return resource.Resource.listStaticEntities(self) + [("Virtual Hosts", V irtualHostCollection(self))]
56
57 def getStaticEntity(self, name):
58 if name == "Virtual Hosts":
59 return VirtualHostCollection(self)
60 else:
61 return resource.Resource.getStaticEntity(self, name)
62
63 def addHost(self, name, resrc):
64 """Add a host to this virtual host.
65
66 This will take a host named `name', and map it to a resource
67 `resrc'. For example, a setup for our virtual hosts would be::
68
69 nvh.addHost('divunal.com', divunalDirectory)
70 nvh.addHost('www.divunal.com', divunalDirectory)
71 nvh.addHost('twistedmatrix.com', twistedMatrixDirectory)
72 nvh.addHost('www.twistedmatrix.com', twistedMatrixDirectory)
73 """
74 self.hosts[name] = resrc
75
76 def removeHost(self, name):
77 """Remove a host."""
78 del self.hosts[name]
79
80 def _getResourceForRequest(self, request):
81 """(Internal) Get the appropriate resource for the given host.
82 """
83 hostHeader = request.getHeader('host')
84 if hostHeader == None:
85 return self.default or error.NoResource()
86 else:
87 host = string.split(string.lower(hostHeader),':')[0]
88 return (self.hosts.get(host, self.default)
89 or error.NoResource("host %s not in vhost map" % repr(host)))
90
91 def render(self, request):
92 """Implementation of resource.Resource's render method.
93 """
94 resrc = self._getResourceForRequest(request)
95 return resrc.render(request)
96
97 def getChild(self, path, request):
98 """Implementation of resource.Resource's getChild method.
99 """
100 resrc = self._getResourceForRequest(request)
101 if resrc.isLeaf:
102 request.postpath.insert(0,request.prepath.pop(-1))
103 return resrc
104 else:
105 return resrc.getChildWithDefault(path, request)
106
107 class _HostResource(resource.Resource):
108
109 def getChild(self, path, request):
110 if ':' in path:
111 host, port = path.split(':', 1)
112 port = int(port)
113 else:
114 host, port = path, 80
115 request.setHost(host, port)
116 prefixLen = 3+request.isSecure()+4+len(path)+len(request.prepath[-3])
117 request.path = '/'+'/'.join(request.postpath)
118 request.uri = request.uri[prefixLen:]
119 del request.prepath[:3]
120 return request.site.getResourceFor(request)
121
122
123 class VHostMonsterResource(resource.Resource):
124
125 """
126 Use this to be able to record the hostname and method (http vs. https)
127 in the URL without disturbing your web site. If you put this resource
128 in a URL http://foo.com/bar then requests to
129 http://foo.com/bar/http/baz.com/something will be equivalent to
130 http://foo.com/something, except that the hostname the request will
131 appear to be accessing will be "baz.com". So if "baz.com" is redirecting
132 all requests for to foo.com, while foo.com is inaccessible from the outside,
133 then redirect and url generation will work correctly
134 """
135 def getChild(self, path, request):
136 if path == 'http':
137 request.isSecure = lambda: 0
138 elif path == 'https':
139 request.isSecure = lambda: 1
140 return _HostResource()
141
OLDNEW
« no previous file with comments | « third_party/twisted_8_1/twisted/web/util.py ('k') | third_party/twisted_8_1/twisted/web/widgets.py » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698