From b5b21df47dcdc2b55c8e89201e2c6ea75a865e69 Mon Sep 17 00:00:00 2001 From: Milan Stute Date: Tue, 20 Aug 2019 10:47:59 +0200 Subject: [PATCH] Remove code for legacy AirDrop mode --- opendrop/cli.py | 3 +-- opendrop/client.py | 15 ++------------- opendrop/config.py | 6 ++---- opendrop/server.py | 30 +++++++----------------------- opendrop/util.py | 17 ----------------- 5 files changed, 12 insertions(+), 59 deletions(-) diff --git a/opendrop/cli.py b/opendrop/cli.py index 229be5a..56c1212 100644 --- a/opendrop/cli.py +++ b/opendrop/cli.py @@ -49,7 +49,6 @@ class AirDropCli: parser.add_argument('-p', '--phone', nargs='*', help='User\'s phone numbers (currently unused)') parser.add_argument('-n', '--name', help='Computer name (displayed in sharing pane)') parser.add_argument('-m', '--model', help='Computer model (displayed in sharing pane)') - parser.add_argument('-l', '--legacy', help='Enable legacy mode', action='store_true') parser.add_argument('-d', '--debug', help='Enable debug mode', action='store_true') parser.add_argument('-i', '--interface', help='Which AWDL interface to use', default='awdl0') args = parser.parse_args(args) @@ -61,7 +60,7 @@ class AirDropCli: # TODO put emails and phone in canonical form (lower case, no '+' sign, etc.) - self.config = AirDropConfig(email=args.email, phone=args.phone, legacy=args.legacy, + self.config = AirDropConfig(email=args.email, phone=args.phone, computer_name=args.name, computer_model=args.model, debug=args.debug, interface=args.interface) self.server = None diff --git a/opendrop/client.py b/opendrop/client.py index e149a04..4fb2d3a 100644 --- a/opendrop/client.py +++ b/opendrop/client.py @@ -38,22 +38,14 @@ logger = logging.getLogger(__name__) class AirDropBrowser: def __init__(self, config): - self.legacy_mode = config.legacy - if self.legacy_mode: - self.useIPv6 = False - else: - self.useIPv6 = True self.ip_interface_name = config.interface - self.ip_addr, self.byte_address = AirDropUtil.get_ip_for_interface(self.ip_interface_name, ipv6=self.useIPv6) + self.ip_addr, self.byte_address = AirDropUtil.get_ip_for_interface(self.ip_interface_name, ipv6=True) if self.ip_addr is None: raise RuntimeError('Interface {} does not have IP(v6) address'.format(self.ip_interface_name)) - if self.legacy_mode: - self.zeroconf = Zeroconf() - else: - self.zeroconf = Zeroconf(interfaces=[self.ip_addr], ipv6_interface_name=self.ip_interface_name) + self.zeroconf = Zeroconf(interfaces=[self.ip_addr], ipv6_interface_name=self.ip_interface_name) self.callback_add = None self.callback_remove = None @@ -143,9 +135,6 @@ class AirDropClient: 'SenderID': self.config.service_id, 'ConvertMediaFormats': False, } - if self.config.legacy: - ask_body['SenderEmailHash'] = AirDropUtil.doubleSHA1Hash(self.config.email) - ask_body['SenderPhoneHash'] = AirDropUtil.doubleSHA1Hash(self.config.phone) if self.config.record_data: ask_body['SenderRecordData'] = self.config.record_data diff --git a/opendrop/config.py b/opendrop/config.py index 99c9426..ef73fef 100644 --- a/opendrop/config.py +++ b/opendrop/config.py @@ -48,7 +48,7 @@ class AirDropConfig: def __init__(self, host_name=None, computer_name=None, computer_model=None, server_port=8771, airdrop_dir='~/.opendrop', service_id=None, - email=None, phone=None, legacy=False, debug=False, interface=None): + email=None, phone=None, debug=False, interface=None): self.airdrop_dir = os.path.expanduser(airdrop_dir) self.discovery_report = os.path.join(self.airdrop_dir, 'discover.last.json') @@ -71,10 +71,8 @@ class AirDropConfig: self.debug = debug self.debug_dir = os.path.join(self.airdrop_dir, 'debug') - self.legacy = legacy - if interface is None: - interface = 'awdl0' if not self.legacy else 'en0' + interface = 'awdl0' self.interface = interface if email is None: diff --git a/opendrop/server.py b/opendrop/server.py index 8e3c2f7..579780e 100644 --- a/opendrop/server.py +++ b/opendrop/server.py @@ -43,33 +43,22 @@ class AirDropServer: def __init__(self, config): self.config = config - if self.config.legacy: - self.useIPv6 = False - else: - self.useIPv6 = True self.ip_interface_name = self.config.interface - if self.useIPv6: - self.address_family = socket.AF_INET6 - self.serveraddress = ('::', self.config.port) - self.ServerClass = HTTPServerV6 - else: - self.address_family = socket.AF_INET - self.serveraddress = ('0.0.0.0', self.config.port) - self.ServerClass = HTTPServer + # Use IPv6 + self.address_family = socket.AF_INET6 + self.serveraddress = ('::', self.config.port) + self.ServerClass = HTTPServerV6 self.ServerClass.allow_reuse_address = False - self.ip_addr, self.byte_address = AirDropUtil.get_ip_for_interface(self.ip_interface_name, ipv6=self.useIPv6) + self.ip_addr, self.byte_address = AirDropUtil.get_ip_for_interface(self.ip_interface_name, ipv6=True) self.Handler = AirDropServerHandler self.Handler.config = self.config - if self.config.legacy: - self.zeroconf = Zeroconf() - else: - self.zeroconf = Zeroconf(interfaces=[self.ip_addr], ipv6_interface_name=self.ip_interface_name, - apple_mdns=True) + self.zeroconf = Zeroconf(interfaces=[self.ip_addr], ipv6_interface_name=self.ip_interface_name, + apple_mdns=True) self.http_server = self._init_server() self.service_info = self._init_service() @@ -115,11 +104,6 @@ class AirDropServer: def get_properties(self): properties = {b'flags': str(self.config.flags).encode('utf-8')} - if self.config.legacy: - properties[b'phash'] = AirDropUtil.doubleSHA1Hash(self.config.phone).encode('utf-8') - properties[b'nhash'] = False - properties[b'ehash'] = AirDropUtil.doubleSHA1Hash(self.config.email).encode('utf-8') - properties[b'cname'] = self.config.computer_name.encode('utf-8') return properties diff --git a/opendrop/util.py b/opendrop/util.py index 87af69e..9f0eca6 100644 --- a/opendrop/util.py +++ b/opendrop/util.py @@ -153,23 +153,6 @@ class AirDropUtil: return signed_data - @staticmethod - def doubleSHA1Hash(toHash): - """ - This method gets an array of strings as input and creates a double SHA-1 Hash formatted in BASE64 from it. - It will return a comma seperated list of SHA-1 hashes in BASE64 - - :param toHash: An iterable which contains one or many str - """ - - single_hashed = [SHA.new(to_hash.encode('utf-8')).digest() for to_hash in toHash] - double_hashed = [SHA.new(single).digest() for single in single_hashed] - - double_hashed_base64 = [base64.b64encode(h).decode('utf-8') for h in double_hashed] - hash_string = ','.join(double_hashed_base64) - - return hash_string - @staticmethod def pem2der(s): """