general: remove support for "iframe" mode (#29955)
This commit is contained in:
parent
423c17a425
commit
489c5124c8
File diff suppressed because it is too large
Load Diff
|
@ -251,12 +251,6 @@ def test_get_as_datetime():
|
|||
assert get_as_datetime('2017-04-25T12:00:00') == datetime_value
|
||||
assert get_as_datetime('25/04/2017 12:00') == datetime_value
|
||||
|
||||
def test_etld():
|
||||
pub = create_temporary_pub()
|
||||
pub.load_effective_tld_names()
|
||||
assert pub.etld.parse('www.example.net') == ('www.example', 'net')
|
||||
assert pub.etld.parse('www.example.rhcloud.com') == ('www.example', 'rhcloud.com')
|
||||
|
||||
def test_pagination():
|
||||
pub = create_temporary_pub()
|
||||
req = HTTPRequest(None, {'SERVER_NAME': 'example.net', 'SCRIPT_NAME': ''})
|
||||
|
|
|
@ -253,11 +253,6 @@ class WcsPublisher(StubWcsPublisher):
|
|||
z.close()
|
||||
return results
|
||||
|
||||
def init_publish(self, request):
|
||||
if request.get_header('X_WCS_IFRAME_MODE', '') in ('true', 'yes'):
|
||||
request.response.iframe_mode = True
|
||||
return QommonPublisher.init_publish(self, request)
|
||||
|
||||
def get_object_visitors(self, object_key):
|
||||
session_manager = self.session_manager_class(session_class=self.session_class)
|
||||
return session_manager.session_class.get_object_visitors(object_key)
|
||||
|
|
|
@ -35,7 +35,6 @@ class AfterJob(StorableObject):
|
|||
|
||||
|
||||
class HTTPResponse(quixote.http_response.HTTPResponse):
|
||||
iframe_mode = False
|
||||
javascript_scripts = None
|
||||
javascript_code_parts = None
|
||||
css_includes = None
|
||||
|
@ -47,16 +46,6 @@ class HTTPResponse(quixote.http_response.HTTPResponse):
|
|||
if not charset:
|
||||
self.charset = get_publisher().site_charset
|
||||
|
||||
def redirect(self, location, permanent=False):
|
||||
if not self.iframe_mode:
|
||||
return quixote.http_response.HTTPResponse.redirect(self, location, permanent)
|
||||
req = get_request()
|
||||
server_url = '%s://%s' % (req.get_scheme(), req.get_server())
|
||||
if location.startswith(server_url):
|
||||
iframe_server_url = '%s://%s' % (req.get_scheme(), req.get_server(clean=False))
|
||||
location = iframe_server_url + location[len(server_url):]
|
||||
return quixote.http_response.HTTPResponse.redirect(self, location, permanent)
|
||||
|
||||
def reset_includes(self):
|
||||
self.javascript_scripts = None
|
||||
self.javascript_code_parts = None
|
||||
|
|
|
@ -1058,12 +1058,6 @@ class IdPAuthMethod(AuthMethod):
|
|||
def login(self):
|
||||
idps = get_cfg('idp', {})
|
||||
|
||||
if get_response().iframe_mode and not get_request().form.get('next'):
|
||||
get_request().form = {'next': '%s://%s%s' % (
|
||||
get_request().get_scheme(),
|
||||
get_request().get_server(False),
|
||||
get_publisher().get_root_url())}
|
||||
|
||||
# there is only one visible IdP, perform login automatically on
|
||||
# this one.
|
||||
server = misc.get_lasso_server()
|
||||
|
|
|
@ -454,19 +454,6 @@ class QommonPublisher(Publisher, object):
|
|||
if request:
|
||||
if request.get_scheme() == 'https':
|
||||
self.config.session_cookie_secure = True
|
||||
canonical_hostname = request.get_server(clean = False).lower().split(':')[0].rstrip('.')
|
||||
if canonical_hostname.count('.') >= 2 and self.etld:
|
||||
try:
|
||||
socket.inet_aton(canonical_hostname)
|
||||
except socket.error:
|
||||
# not an IP address
|
||||
try:
|
||||
base_name = self.etld.parse(canonical_hostname)[1]
|
||||
except:
|
||||
pass
|
||||
else:
|
||||
self.config.session_cookie_domain = '.'.join(
|
||||
canonical_hostname.split('.')[-2-base_name.count('.'):])
|
||||
|
||||
md5_hash = hashlib.md5()
|
||||
md5_hash.update(self.app_dir)
|
||||
|
@ -492,7 +479,7 @@ class QommonPublisher(Publisher, object):
|
|||
Set the application directory, creating it if possible and authorized.
|
||||
'''
|
||||
canonical_hostname = request.get_server(clean = False).lower().split(':')[0].rstrip('.')
|
||||
for prefix in ['iframe', 'mobile', 'm']:
|
||||
for prefix in ['mobile', 'm']:
|
||||
if canonical_hostname.startswith(prefix + '.') or \
|
||||
canonical_hostname.startswith(prefix + '-'):
|
||||
canonical_hostname = canonical_hostname[len(prefix)+1:]
|
||||
|
@ -501,8 +488,6 @@ class QommonPublisher(Publisher, object):
|
|||
self.app_dir = os.path.join(self.APP_DIR, canonical_hostname)
|
||||
|
||||
if script_name:
|
||||
if script_name.startswith('iframe.'):
|
||||
script_name = script_name[7:]
|
||||
script_name = script_name.replace('/', '+')
|
||||
self.app_dir += '+' + script_name
|
||||
|
||||
|
@ -549,23 +534,15 @@ class QommonPublisher(Publisher, object):
|
|||
|
||||
self.initialize_app_dir()
|
||||
|
||||
# possibility to enable iframe mode via SCRIPT_NAME
|
||||
script_name = request.get_header('SCRIPT_NAME', '').strip('/')
|
||||
if script_name.startswith('iframe.'):
|
||||
request.response.page_template_key = 'iframe'
|
||||
|
||||
# determine appropriate theme variant
|
||||
canonical_hostname = request.get_server(False).lower().split(':')[0].rstrip('.')
|
||||
override_template_keys = {'m': 'mobile'}
|
||||
for prefix in ['iframe', 'mobile', 'm']:
|
||||
for prefix in ['mobile', 'm']:
|
||||
if canonical_hostname.startswith(prefix + '.') or \
|
||||
canonical_hostname.startswith(prefix + '-'):
|
||||
request.response.page_template_key = override_template_keys.get(prefix, prefix)
|
||||
break
|
||||
|
||||
if request.response.page_template_key == 'iframe':
|
||||
request.response.iframe_mode = True
|
||||
|
||||
self.set_config(request)
|
||||
|
||||
if request.get_cookie('mobile') == 'false':
|
||||
|
@ -732,17 +709,6 @@ class QommonPublisher(Publisher, object):
|
|||
except OSError:
|
||||
pass
|
||||
|
||||
@classmethod
|
||||
def load_effective_tld_names(cls):
|
||||
if hasattr(cls, 'etld') and cls.etld:
|
||||
return
|
||||
filename = os.path.join(cls.DATA_DIR, 'vendor', 'effective_tld_names.dat')
|
||||
if not os.path.exists(filename):
|
||||
cls.etld = None
|
||||
return
|
||||
from vendor import etld
|
||||
cls.etld = etld.etld(filename)
|
||||
|
||||
@classmethod
|
||||
def register_cronjobs(cls):
|
||||
cls.register_cronjob(CronJob(cls.clean_sessions, minutes=range(0, 60, 5)))
|
||||
|
@ -750,8 +716,6 @@ class QommonPublisher(Publisher, object):
|
|||
cls.register_cronjob(CronJob(cls.clean_afterjobs, hourly=True))
|
||||
cls.register_cronjob(CronJob(cls.clean_tempfiles, hourly=True))
|
||||
|
||||
register_tld_names = False
|
||||
|
||||
_initialized = False
|
||||
@classmethod
|
||||
def init_publisher_class(cls):
|
||||
|
@ -760,9 +724,6 @@ class QommonPublisher(Publisher, object):
|
|||
cls._initialized = True
|
||||
cls.load_extra_dirs()
|
||||
|
||||
if cls.register_tld_names:
|
||||
cls.load_effective_tld_names()
|
||||
|
||||
@classmethod
|
||||
def create_publisher(cls, **kwargs):
|
||||
publisher = cls(cls.root_directory_class(),
|
||||
|
|
|
@ -1,65 +0,0 @@
|
|||
#!/usr/bin/python
|
||||
|
||||
# Copyright (c) 2009 Michael Still
|
||||
# Released under the terms of the GNU GPL v2
|
||||
|
||||
# Mozilla publishes a rule file which may be used to calculate effective TLDs
|
||||
# at:
|
||||
#
|
||||
# http://mxr.mozilla.org/mozilla-central/source/netwerk/dns/src/
|
||||
# effective_tld_names.dat?raw=1
|
||||
#
|
||||
# Use that file to take a domain name and return a (domain, etld) tuple.
|
||||
# Documentation for the rule file format is at:
|
||||
#
|
||||
# https://wiki.mozilla.org/Gecko:Effective_TLD_Service
|
||||
|
||||
import re
|
||||
import sys
|
||||
import time
|
||||
|
||||
class etld(object):
|
||||
"""Helper to determine the effective TLD portion of a domain name."""
|
||||
|
||||
def __init__(self, datafile='effective_tld_names.dat'):
|
||||
"""Load the data file ready for lookups."""
|
||||
|
||||
self.rules = {}
|
||||
|
||||
file = open(datafile)
|
||||
line = file.readline()
|
||||
while line:
|
||||
line = line.rstrip()
|
||||
if line and not line.startswith('//'):
|
||||
tld = line.split('.')[-1]
|
||||
self.rules.setdefault(tld, [])
|
||||
self.rules[tld].append(re.compile(self.regexpize(line)))
|
||||
|
||||
line = file.readline()
|
||||
file.close()
|
||||
|
||||
def regexpize(self, line):
|
||||
"""Convert a rule to regexp syntax."""
|
||||
|
||||
line = line[::-1].replace('.', '\\.').replace('*', '[^\\.]*').replace('!', '')
|
||||
return '^(%s)\.(.*)$' % line
|
||||
|
||||
def parse(self, hostname):
|
||||
"""Parse a hostanme into domain and etld portions."""
|
||||
|
||||
hostname = hostname.lower()
|
||||
tld = hostname.split('.')[-1]
|
||||
hostname = hostname[::-1]
|
||||
domain = ''
|
||||
etld = ''
|
||||
|
||||
for rule in self.rules[tld]:
|
||||
m = rule.match(hostname)
|
||||
if m and m.group(1) > etld:
|
||||
domain = m.group(2)[::-1]
|
||||
etld = m.group(1)[::-1]
|
||||
|
||||
if not etld:
|
||||
raise Exception('Parse failed')
|
||||
|
||||
return (domain, etld)
|
|
@ -29,9 +29,7 @@
|
|||
{{ workflow_form.render|safe }}
|
||||
{% endif %}
|
||||
|
||||
{% if not response.iframe_mode %}
|
||||
<div class="back-home-button">
|
||||
<a href="{{ publisher.get_root_url }}">{% trans "Back Home" %}</a>
|
||||
</div>
|
||||
{% endif %}
|
||||
{% endblock %}
|
||||
|
|
Loading…
Reference in New Issue