From dca7dec91b7c182b33a200e97b6a89a7f7499082 Mon Sep 17 00:00:00 2001 From: golnazads <28757512+golnazads@users.noreply.github.com> Date: Tue, 25 May 2021 08:55:41 -0400 Subject: [PATCH] fixed a bug in redirect url verify --- .../tests/unittests/test_resolver_gateway.py | 9 +++++++++ resolverway/views.py | 17 +++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/resolverway/tests/unittests/test_resolver_gateway.py b/resolverway/tests/unittests/test_resolver_gateway.py index 99588c4..16e158b 100644 --- a/resolverway/tests/unittests/test_resolver_gateway.py +++ b/resolverway/tests/unittests/test_resolver_gateway.py @@ -182,5 +182,14 @@ def test_adsws_call(self): self.assertEqual(account['hashed_user_id'], "ec43c30b9a81ed89765a2b8a04cac38925058eeacd5b5264389b1d4a7df2b28c") + def test_verify_url(self): + """ + + :return: + """ + header = {'Referer': 'https://dev.adsabs.harvard.edu/abs/1987gady.book.....B/abstract'} + r = self.client.get('/link_gateway/1987gady.book.....B/ABSTRACT/https://dev.adsabs.harvard.edu/abs/1987gady.book.....B/ABSTRACT', headers=header) + self.assertEqual(r.status_code, 302) + if __name__ == '__main__': unittest.main() diff --git a/resolverway/views.py b/resolverway/views.py index c424484..868a475 100644 --- a/resolverway/views.py +++ b/resolverway/views.py @@ -192,19 +192,16 @@ def verify_url(self, referrer): # if full url in-house link detected if url.netloc.split('.',1)[-1] == referred_ads: return True + # outside link, see if originated from ads + referrer_url = urllib.parse.urlparse(referrer) + if all([referrer_url.scheme, referrer_url.netloc]): + if referrer_url.netloc.split('.', 1)[-1] == referred_ads: + return True + # TODO: check back with resolver servcie, make sure the redirect link is from there except: - try: - # if a valid outside link, see if originated from ads - referrer_url = urllib.parse.urlparse(referrer) - if all([referrer_url.scheme, referrer_url.netloc]): - if referrer_url.netloc.split('.',1)[-1] == referred_ads: - return True - except: - # TODO: check back with resolver servcie, make sure it is from there - pass pass - # for now do not redirect if outside link and did not originate from BBB + # do not redirect if outside link and did not originate from BBB return False def process_request(self):