예제 #1
0
    def __init__(self, coherence, tube_device,external_address):
        log.Loggable.__init__(self)
        self.device = tube_device
        self.coherence = coherence
        self.external_address = external_address
        self.uuid = self.device.get_id().split('-')
        self.uuid[1] = 'tube'
        self.uuid = '-'.join(self.uuid)
        self.friendly_name = self.device.get_friendly_name()
        self.device_type = self.device.get_friendly_device_type()
        self.version = int(self.device.get_device_type_version())

        self._services = []
        self._devices = []
        self.icons = []

        self.info("uuid: %s, name: %r, device type: %r, version: %r",
                  self.uuid, self.friendly_name, self.device_type, self.version)

        """ create the http entrypoint """

        self.web_resource = DeviceHttpRoot(self)
        self.coherence.add_web_resource( str(self.uuid)[5:], self.web_resource)


        """ create the Service proxy(s) """

        for service in self.device.services:
            self.debug("Proxying service %r", service)
            new_service = TubeServiceProxy(service, self)
            self._services.append(new_service)

        """ create a device description xml file(s) """

        version = self.version
        while version > 0:
            self.web_resource.putChild( 'description-%d.xml' % version,
                                    RootDeviceXML( self.coherence.hostname,
                                    str(self.uuid),
                                    self.coherence.urlbase,
                                    device_type=self.device_type, version=version,
                                    friendly_name=self.friendly_name,
                                    model_description='Coherence UPnP %s' % self.device_type,
                                    model_name='Coherence UPnP %s' % self.device_type,
                                    services=self._services,
                                    devices=self._devices,
                                    icons=self.icons))
            version -= 1


        """ and register with SSDP server """
        self.register()
예제 #2
0
    def __init__(self, coherence, tube_device, external_address):
        log.LogAble.__init__(self)
        self.device = tube_device
        self.coherence = coherence
        self.external_address = external_address
        self.uuid = self.device.get_id().split('-')
        self.uuid[1] = 'tube'
        self.uuid = '-'.join(self.uuid)
        self.friendly_name = self.device.get_friendly_name()
        self.device_type = self.device.get_friendly_device_type()
        self.version = int(self.device.get_device_type_version())

        self._services = []
        self._devices = []
        self.icons = []

        self.info(f'uuid: {self.uuid}, name: {self.friendly_name}, ' +
                  f'device type: {self.device_type}, version: {self.version}')
        ''' create the http entrypoint '''

        self.web_resource = DeviceHttpRoot(self)
        self.coherence.add_web_resource(str(self.uuid)[5:], self.web_resource)
        ''' create the Service proxy(s) '''

        for device_service in self.device.services:
            self.debug(f'Proxying service {device_service}')
            new_service = TubeServiceProxy(device_service, self)
            self._services.append(new_service)
        ''' create a device description xml file(s) '''

        version = self.version
        while version > 0:
            self.web_resource.putChild(
                f'description-{version:d}.xml',
                RootDeviceXML(
                    self.coherence.hostname,
                    str(self.uuid),
                    self.coherence.urlbase,
                    device_type=self.device_type,
                    version=version,
                    friendly_name=self.friendly_name,
                    # model_description=f'Coherence UPnP {self.device_type}',
                    # model_name=f'Coherence UPnP {self.device_type}',
                    services=self._services,
                    devices=self._devices,
                    icons=self.icons,
                ),
            )
            version -= 1
        ''' and register with SSDP server '''
        self.register()
예제 #3
0
파일: plugin.py 프로젝트: aitchala/enigma2
    def init_complete(self, backend):
        self.web_resource = DeviceHttpRoot(self)
        self.coherence.add_web_resource(str(self.uuid)[5:], self.web_resource)

        transport = "http" if config.plugins.Webinterface.http.enabled.value else "https"
        port = config.plugins.Webinterface.http.port.value
        if not config.plugins.Webinterface.http.enabled.value:
            port = config.plugins.Webinterface.https.port.value
        presentation_url = "%s://%s" % (transport, self.coherence.hostname)
        if (transport == "http" and port != 80) or (transport == "https"
                                                    and port != 443):
            presentation_url = "%s:%s" % (presentation_url, port)

        self.web_resource.putChild(
            'description-%d.xml' % self.version,
            RootDeviceXML(
                self.coherence.hostname,
                str(self.uuid),
                self.coherence.urlbase,
                device_type=self.device_type,
                device_uri_base=ManagedControlPoint.URI_BASE_DREAMBOX,
                version=self.version,
                friendly_name=self.device_name,
                services=[],
                devices=[],
                icons=self.icons,
                manufacturer='dreambox',
                manufacturer_url='http://www.dreambox.de',
                model_description=self.model_name,
                model_name=self.model_name,
                model_number=self.device_name,
                model_url='http://www.dreambox.de',
                presentation_url=presentation_url))

        self.register()
        self.warning("%s %s (%s) activated with id %s" %
                     (self.device_type, self.model_name, self.backend,
                      str(self.uuid)[5:]))