1 | ## Script (Python) "rewritePurgeUrls" |
---|
2 | ##bind container=container |
---|
3 | ##bind context=context |
---|
4 | ##bind namespace= |
---|
5 | ##bind script=script |
---|
6 | ##bind subpath=traverse_subpath |
---|
7 | ##parameters=relative_urls,domains |
---|
8 | ##title=Custom rewrite of purge url paths |
---|
9 | |
---|
10 | # Rewrite the purge URLs in case the request paths passed to the cache proxy |
---|
11 | # are different than the relative URLs in the Zope virtual host context. |
---|
12 | # We put this here to make it easier to adjust this behavior for custom |
---|
13 | # cache proxy setups. Two example rewrite behaviors are provided below. |
---|
14 | # |
---|
15 | # Example 1: Legacy CacheFu 1.0 Squid-Apache config |
---|
16 | # |
---|
17 | # For those who haven't yet updated their old-style squid-apache configs. |
---|
18 | # The old default "squid_behind_apache" setup assumed URLs passed |
---|
19 | # to Squid from Apache are of the form: |
---|
20 | # [squid_url]/[protocol]/[host]/[port]/[path] |
---|
21 | # |
---|
22 | # Example 2: VirtualHostMonster-style URLs in the 'inside-out' configuration |
---|
23 | # |
---|
24 | # For those using the special _vh_ option for VHM URLs where the root url of |
---|
25 | # the plone site is configured as a subfolder of the domain. The URLs passed |
---|
26 | # to the proxy cache server are of the form: |
---|
27 | # [squid_url]/VirtualHostBase/[protocol]/[host]:[port]/[zopepath] \ |
---|
28 | # /VirtualHostRoot/_v_[subfolder]/[path] |
---|
29 | # See http://plone.org/documentation/tutorial/plone-apache/vhm for details |
---|
30 | |
---|
31 | |
---|
32 | # Example 1 |
---|
33 | def rewrite_legacy(relative_urls, domains): |
---|
34 | prefixes = [] |
---|
35 | for d in domains: |
---|
36 | protocol = d[0] |
---|
37 | host = d[1] |
---|
38 | split_host = host.split(':') |
---|
39 | host = split_host[0] |
---|
40 | port = split_host[1] |
---|
41 | prefixes.append('%s/%s/%s/' % (protocol, host, port)) |
---|
42 | relative_urls = [prefix+url for prefix in prefixes for url in relative_urls] |
---|
43 | return relative_urls |
---|
44 | |
---|
45 | |
---|
46 | # Example 2 |
---|
47 | def rewrite_insideout(relative_urls, domains): |
---|
48 | subfolder = 'folder/subfolder' # change this to match your config. |
---|
49 | from Products.CMFCore.utils import getToolByName |
---|
50 | url_tool = getToolByName(context, 'portal_url') |
---|
51 | portal_path = '/'.join(url_tool.getPortalObject().getPhysicalPath()) |
---|
52 | prefixes = [] |
---|
53 | for d in domains: |
---|
54 | protocol = d[0] |
---|
55 | host = d[1] |
---|
56 | split_host = host.split(':') |
---|
57 | host = split_host[0] |
---|
58 | port = split_host[1] |
---|
59 | prefixes.append('VirtualHostBase/%s/%s:%s%s/VirtualHostRoot/_vh_%s' % (protocol, host, port, portal_path, subfolder)) |
---|
60 | relative_urls = [prefix+url for prefix in prefixes for url in relative_urls] |
---|
61 | return relative_urls |
---|
62 | |
---|
63 | |
---|
64 | # The default case is example 1 |
---|
65 | return rewrite_legacy(relative_urls, domains) |
---|
66 | |
---|
67 | |
---|