Remove code for legacy AirDrop mode

This commit is contained in:
Milan Stute
2019-08-20 10:49:40 +02:00
parent 1de6f931ac
commit b5b21df47d
5 changed files with 12 additions and 59 deletions
+1 -2
View File
@@ -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
+2 -13
View File
@@ -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
+2 -4
View File
@@ -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:
+7 -23
View File
@@ -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
-17
View File
@@ -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):
"""