kopia lustrzana https://github.com/snarfed/bridgy-fed
/web-site: gracefully handle blocklisted domains
fixes https://console.cloud.google.com/errors/detail/CJbG4sGlnK7Jdw;time=P30D;refresh=true?project=bridgy-federatedpull/649/head
rodzic
1a003c8c5b
commit
c27404d681
|
@ -1839,14 +1839,23 @@ http://this/404s
|
||||||
|
|
||||||
def test_check_web_site_bad_url(self, _, __):
|
def test_check_web_site_bad_url(self, _, __):
|
||||||
got = self.client.post('/web-site', data={'url': '!!!'})
|
got = self.client.post('/web-site', data={'url': '!!!'})
|
||||||
self.assert_equals(200, got.status_code)
|
self.assert_equals(400, got.status_code)
|
||||||
self.assertEqual(['No domain found in !!!'], get_flashed_messages())
|
self.assertEqual(['!!! is not a valid or supported web site'],
|
||||||
|
get_flashed_messages())
|
||||||
self.assertEqual(1, Web.query().count())
|
self.assertEqual(1, Web.query().count())
|
||||||
|
|
||||||
def test_check_web_site_bridgy_fed_domain(self, _, __):
|
def test_check_web_site_bridgy_fed_domain(self, _, __):
|
||||||
got = self.client.post('/web-site', data={'url': 'https://fed.brid.gy/foo'})
|
got = self.client.post('/web-site', data={'url': 'https://fed.brid.gy/foo'})
|
||||||
self.assert_equals(200, got.status_code)
|
self.assert_equals(400, got.status_code)
|
||||||
self.assertEqual(['fed.brid.gy is a Bridgy Fed domain'],
|
self.assertEqual(
|
||||||
|
['https://fed.brid.gy/foo is not a valid or supported web site'],
|
||||||
|
get_flashed_messages())
|
||||||
|
self.assertEqual(1, Web.query().count())
|
||||||
|
|
||||||
|
def test_check_web_site_blocklisted(self, _, __):
|
||||||
|
got = self.client.post('/web-site', data={'url': 'https://t.co/'})
|
||||||
|
self.assert_equals(400, got.status_code)
|
||||||
|
self.assertEqual(['https://t.co/ is not a valid or supported web site'],
|
||||||
get_flashed_messages())
|
get_flashed_messages())
|
||||||
self.assertEqual(1, Web.query().count())
|
self.assertEqual(1, Web.query().count())
|
||||||
|
|
||||||
|
|
9
web.py
9
web.py
|
@ -464,12 +464,9 @@ def check_web_site():
|
||||||
url = request.values['url']
|
url = request.values['url']
|
||||||
# this normalizes and lower cases domain
|
# this normalizes and lower cases domain
|
||||||
domain = util.domain_from_link(url, minimize=False)
|
domain = util.domain_from_link(url, minimize=False)
|
||||||
if not domain:
|
if not domain or not is_valid_domain(domain):
|
||||||
flash(f'No domain found in {url}')
|
flash(f'{url} is not a valid or supported web site')
|
||||||
return render_template('enter_web_site.html')
|
return render_template('enter_web_site.html'), 400
|
||||||
elif domain in common.DOMAINS:
|
|
||||||
flash(f'{domain} is a Bridgy Fed domain')
|
|
||||||
return render_template('enter_web_site.html')
|
|
||||||
|
|
||||||
g.user = Web.get_or_create(domain, direct=True)
|
g.user = Web.get_or_create(domain, direct=True)
|
||||||
try:
|
try:
|
||||||
|
|
Ładowanie…
Reference in New Issue