Пример #1
0
async def _start_relay(loop, args, zconf):
    _, protocol = await loop.create_connection(lambda: RemoteConnection(loop),
                                               args.remote_ip,
                                               args.remote_port)

    coro = loop.create_server(lambda: RelayConnection(loop, protocol),
                              "0.0.0.0")
    server = await loop.create_task(coro)
    port = server.sockets[0].getsockname()[1]

    props = dict({(prop.split("=")[0], prop.split("=")[1])
                  for prop in args.properties})

    unpublisher = await mdns.publish(
        asyncio.get_event_loop(),
        mdns.Service(args.service_type, args.name, IPv4Address(args.local_ip),
                     port, props),
        zconf,
    )

    print("Press ENTER to quit")
    await loop.run_in_executor(None, sys.stdin.readline)

    server.close()
    return unpublisher
Пример #2
0
async def publish_mrp_zeroconf(loop, zconf, address, port):
    """Publish MRP Zeroconf service."""
    props = {
        "ModelName": "Apple TV",
        "AllowPairing": "YES",
        "macAddress": "40:cb:c0:12:34:56",
        "BluetoothAddress": False,
        "Name": DEVICE_NAME,
        "UniqueIdentifier": SERVER_IDENTIFIER,
        "SystemBuildVersion": "17K499",
        "LocalAirPlayReceiverPairingIdentity": AIRPLAY_IDENTIFIER,
    }
    return await mdns.publish(
        loop,
        mdns.Service("_mediaremotetv._tcp.local", DEVICE_NAME,
                     IPv4Address(address), port, props),
        zconf,
    )
Пример #3
0
async def publish_airplay_zeroconf(loop, zconf, address, port):
    """Publish AirPlay Zeroconf service."""
    props = {
        "deviceid": "00:01:02:03:04:05",
        "model": "AppleTV3,1",
        "pi": "4EE5AF58-7E5D-465A-935E-82E4DB74385D",
        "flags": "0x44",
        "vv": "2",
        "features": "0x5A7FFFF7,0xE",
        "pk": "3853c0e2ce3844727ca0cb1b86a3e3875e66924d2648d8f8caf71f8118793d98",  # pylint: disable=line-too-long # noqa
        "srcvers": "220.68",
    }
    return await mdns.publish(
        loop,
        mdns.Service(
            "_airplay._tcp.local", DEVICE_NAME, IPv4Address(address), port, props
        ),
        zconf,
    )
Пример #4
0
async def publish_companion_zeroconf(loop, zconf, address, port):
    """Publish Companion Zeroconf service."""
    props = {
        "rpMac": "1",
        "rpHA": "9948cfb6da55",
        "rpHN": "88f979f04023",
        "rpVr": "230.1",
        "rpMd": "AppleTV6,2",
        "rpFl": "0x36782",
        "rpAD": "657c1b9d3484",
        "rpHI": "91756a18d8e5",
        "rpBA": "9D:19:F9:74:65:EA",
    }
    return await mdns.publish(
        loop,
        mdns.Service("_companion-link._tcp.local", DEVICE_NAME,
                     IPv4Address(address), port, props),
        zconf,
    )
Пример #5
0
async def publish_mrp_service(loop: asyncio.AbstractEventLoop, zconf: Zeroconf,
                              address: str, port: int, name: str):
    """Publish zeroconf service for ATV proxy instance."""
    properties = {
        "ModelName": "Apple TV",
        "AllowPairing": "YES",
        "macAddress": "40:cb:c0:12:34:56",
        "BluetoothAddress": "False",
        "Name": name,
        "UniqueIdentifier": SERVER_IDENTIFIER,
        "SystemBuildVersion": "17K499",
        "LocalAirPlayReceiverPairingIdentity": AIRPLAY_IDENTIFIER,
    }

    return await mdns.publish(
        loop,
        mdns.Service("_mediaremotetv._tcp.local", name, IPv4Address(address),
                     port, properties),
        zconf,
    )
Пример #6
0
async def publish_dmap_zeroconf(loop, zconf, address, port):
    """Publish DMAP Zeroconf service."""
    props = {
        "DFID": "2",
        "PrVs": "65538",
        "hG": HSGID,
        "Name": DEVICE_NAME,
        "txtvers": "1",
        "atSV": "65541",
        "MiTPV": "196611",
        "EiTS": "1",
        "fs": "2",
        "MniT": "167845888",
    }
    return await mdns.publish(
        loop,
        mdns.Service("_appletv-v2._tcp.local", DEVICE_NAME,
                     IPv4Address(address), port, props),
        zconf,
    )
Пример #7
0
    async def _publish_service(self, address, port):
        props = {
            "DvNm": self._name,
            "RemV": "10000",
            "DvTy": "iPod",
            "RemN": "Remote",
            "txtvers": "1",
            "Pair": self._pairing_guid,
        }

        await mdns.publish(
            self._loop,
            mdns.Service(
                "_touch-remote._tcp.local",
                "{0:040d}".format(int(address)),
                address,
                port,
                props,
            ),
            self._zeroconf,
        )
Пример #8
0
async def publish_raop_zeroconf(loop, zconf, address, port):
    """Publish RAOP Zeroconf service."""
    props = {
        "et": "0",
        "ss": "16",
        "am": "AppleTV6,2",
        "md": "0,1,2",
        "ch": "2",
        "sr": "44100",
        "cn": "1",
    }
    return await mdns.publish(
        loop,
        mdns.Service(
            "_raop._tcp.local",
            f"AA:BB:CC:DD:EE:FF@{DEVICE_NAME}",
            IPv4Address(address),
            port,
            props,
        ),
        zconf,
    )