Exemplo n.º 1
0
def get_device_id():
    """\
        Retrieves the Device ID from the Digi device.
    """
    value = ""
    query_base = '<rci_request version="1.1"><%s><%s/>' \
                 '</%s></rci_request>'
    try:
        query = query_base % ('query_setting', 'mgmtglobal', 'query_setting')
        raw_data = process_rci_request(query)
        setting_tree = ElementTree().parsestring(raw_data)
        device_id = setting_tree.find('deviceId')
        value = device_id.text
    except AttributeError:
        # PLATFORM: this might be an x2e
        query = query_base % ('query_state', 'device_info', 'query_state')
        raw_data = process_rci_request(query)
        setting_tree = ElementTree().parsestring(raw_data)
        device_id = setting_tree.find('deviceid')
        value = device_id.text

        # normalize to the old NDS format
        if not value.startswith('0x'):
            value = ''.join(('0x', value))
        value = value.replace('-', '')
    except:
        _tracer.error("get_device_id(): Unable to retrieve Device ID")
        raise

    return value
Exemplo n.º 2
0
def get_device_id():
    """\
        Retrieves the Device ID from the Digi device.
    """
    value = ""
    query_base = '<rci_request version="1.1"><%s><%s/>' \
                 '</%s></rci_request>'
    try:
        query = query_base % ('query_setting', 'mgmtglobal', 'query_setting')
        raw_data = process_rci_request(query)
        setting_tree = ElementTree().parsestring(raw_data)
        device_id = setting_tree.find('deviceId')
        value = device_id.text
    except AttributeError:
        # PLATFORM: this might be an x2e
        query = query_base % ('query_state', 'device_info', 'query_state')
        raw_data = process_rci_request(query)
        setting_tree = ElementTree().parsestring(raw_data)
        device_id = setting_tree.find('deviceid')
        value = device_id.text

        # normalize to the old NDS format
        if not value.startswith('0x'):
            value = ''.join(('0x', value))
        value = value.replace('-', '')
    except:
        _tracer.error("get_device_id(): Unable to retrieve Device ID")
        raise

    return value
Exemplo n.º 3
0
def simple_rci_query(query_string):
    """\
    Perform an RCI query and return raw RCI response.

    This query uses only socket operations to POST the HTTP request,
    it does not rely on any other external libraries.
    """

    return process_rci_request(query_string)
Exemplo n.º 4
0
def simple_rci_query(query_string):
    """\
    Perform an RCI query and return raw RCI response.

    This query uses only socket operations to POST the HTTP request,
    it does not rely on any other external libraries.
    """

    return process_rci_request(query_string)
Exemplo n.º 5
0
def get_ethernet_mac_string():
    """\
        Returns the Ethernet MAC address as a string, using RCI 'device_info'
        
        Example: "00:40:9D:6A:72:F6"
    """

    if sys.platform == 'digiconnect':
        # in Connect/ConnectPort, looking for:
        # <device_info>
        #    <mac>00:40:9d:52:1d:6e</mac>
        # </device_info>
        info = query_state("device_info")
        for item in info:
            mac = item.find('mac')
            if mac != None:
                return mac.text

    elif sys.platform == 'linux2':
        # in X2e ZB/3G, looking for
        # <interface_info name="eth0">
        #    <mac>00:40:9d:52:1d:6e</mac>
        # </interface_info>

        response = process_rci_request(
            '<rci_request version="1.1"><query_state /></rci_request>')

        # there may be a cleaner method, but we have multiple possible nodes
        # like <interface_info name="eth0"> and <interface_info name="wlan0">
        # I couldn't find a cleaner way to find <interface_info name="eth0"> if
        # it is NOT the first interface_info
        root = ElementTree().parsestring(response)
        inf_list = root.findall('interface_info')

        interface_node = None
        for node in inf_list:
            if interface_node is None:
                # save the very first 'interface_info' we find, but keep going
                interface_node = node

            if node.attrib['name'] in ('eth0'):
                # break and use this one
                interface_node = node
                break

        # this will return string like '00:40:9d:5c:1b:05" or None
        if interface_node is not None:
            return interface_node.findtext('mac')

    return None
 def get_address(self):
     """\
         Retrieves the current iDigi SMS phone number from the Digi device.
     """
     phnum = ""
     try:
         query = '<rci_request version="1.1"><query_setting><idigisms/>' \
             '</query_setting></rci_request>'
         raw_data = process_rci_request(query)
         setting_tree = ElementTree().parsestring(raw_data)
         phnum = setting_tree.find("phnum")
         phnum = phnum.text
     except Exception, e:
         self.__tracer.error(e)
         pass
Exemplo n.º 7
0
 def get_address(self):
     """\
         Retrieves the current SMS phone number from the Digi device.
     """
     phnum = ""
     try:
         query = '<rci_request version="1.1"><query_setting><idigisms/>' \
             '</query_setting></rci_request>'
         raw_data = process_rci_request(query)
         setting_tree = ElementTree().parsestring(raw_data)
         phnum = setting_tree.find("phnum")
         phnum = phnum.text
     except Exception, e:
         sms_idigi_client_tracer.error(e)
         pass
def get_device_id():
    """\
        Retrieves the Device ID from the Digi device.
    """
    value = ""
    try:
        query = '<rci_request version="1.1"><query_setting><mgmtglobal/>' \
                '</query_setting></rci_request>'
        raw_data = process_rci_request(query)
        setting_tree = ElementTree().parsestring(raw_data)
        device_id = setting_tree.find("deviceId")
        value = device_id.text
    except:
        _tracer.error("get_device_id(): Unable to retrieve Device ID")
        raise

    return value