From 6b2a8b55068f2621c6a689504035f329801982e1 Mon Sep 17 00:00:00 2001 From: Jordan Date: Tue, 29 Mar 2022 09:04:18 -0700 Subject: asn: catch unicode decode errors; bots make erroneous queries --- asn.py | 24 ++++++++++++++---------- location-database | 2 +- 2 files changed, 15 insertions(+), 11 deletions(-) diff --git a/asn.py b/asn.py index f92ccfa..42865c5 100755 --- a/asn.py +++ b/asn.py @@ -36,18 +36,22 @@ class Listener: if not recv_data: conn.close() - recv_data = str(recv_data, 'utf-8').strip() - log.info(f'{addr[0]} {recv_data}') - - announcements = self._get_announcements(recv_data) - if not announcements: - announcements = 'no valid hostname or IP discovered' + try: + recv_data = str(recv_data, 'utf-8').strip() + except UnicodeDecodeError: + resp = 'could not decode query to utf-8' else: - announcements = self._pretty(announcements) + log.info(f'{addr[0]} {recv_data}') - conn.sendall(bytes(announcements, 'utf-8')) - conn.shutdown(socket.SHUT_RDWR) - conn.close() + resp = self._get_announcements(recv_data) + if not resp: + resp = 'no valid hostname or IP discovered' + else: + resp = self._pretty(resp) + finally: + conn.sendall(bytes(resp, 'utf-8')) + conn.shutdown(socket.SHUT_RDWR) + conn.close() def _get_announcements(self, recv): db = DB() diff --git a/location-database b/location-database index f578806..7ad5449 160000 --- a/location-database +++ b/location-database @@ -1 +1 @@ -Subproject commit f57880612aff8d8454a5472fb04f8bc31f4fdae4 +Subproject commit 7ad544905562799b98ae99b3971d6db770ba0b47 -- cgit v1.2.3-54-g00ecf