def parse_addr_reservation_list(html): """ Entries look like this: {status?}, {mac}, {ip_last_part}, {optional description} "1","00-11-11-11-11-11","52","", "1","00-11-11-11-11-11","52","R_user-cc5c756950", The status in front (0 or 1) is not important. It's 0 for all entries, when the list is empty, and 1 when there's at least one real entry. The IP prefix is always 192.168.1. The optional description only appears in entries not added manually, but automatically via a 'Reserve' checkbox in the connected clients list """ regex = re.compile('^"0|1","(.+?)","([0-9]+)","(?:.*?)",\n') reservation_list = DHCPReservationList() reservation_list.set_reboot_requirement_status(False) for mac, ip_last_part in regex.findall(html): if ip_last_part == "0": continue ip = "192.168.1.%s" % ip_last_part item = DHCPReservationListItem() item.set_mac(converter.normalize_mac(mac)) item.set_ip(ip) item.set_enabled_status(True) reservation_list.append(item) return reservation_list
def parse_addr_reservation_list(html): """ Entries look like this: {status?}, {mac}, {ip_last_part}, {optional description} "1","00-11-11-11-11-11","52","", "1","00-11-11-11-11-11","52","R_user-cc5c756950", The status in front (0 or 1) is not important. It's 0 for all entries, when the list is empty, and 1 when there's at least one real entry. The IP prefix is always 192.168.1. The optional description only appears in entries not added manually, but automatically via a 'Reserve' checkbox in the connected clients list """ regex = re.compile('^"0|1","(.+?)","([0-9]+)","(?:.*?)",\n') reservation_list = DHCPReservationList() reservation_list.set_reboot_requirement_status(False) for mac, ip_last_part in regex.findall(html): if ip_last_part == '0': continue ip = '192.168.1.%s' % ip_last_part item = DHCPReservationListItem() item.set_mac(converter.normalize_mac(mac)) item.set_ip(ip) item.set_enabled_status(True) reservation_list.append(item) return reservation_list
def _parse_addr_reservations(html): regex = re.compile('name="smac[0-9]+" value="(.+?)"(?:.+?)name="sip[0-9]+" value="(.+?)">', re.DOTALL) reservation_list = DHCPReservationList() reservation_list.set_reboot_requirement_status(False) for mac, ip in regex.findall(html): item = DHCPReservationListItem() item.set_mac(converter.normalize_mac(mac)) item.set_ip(ip) item.set_enabled_status(True) reservation_list.append(item) return reservation_list
def _parse_addr_reservations(html): regex = re.compile('name="smac[0-9]+" value="(.+?)"(?:.+?)name="sip[0-9]+" value="(.+?)">', re.DOTALL) reservation_list = DHCPReservationList() reservation_list.set_reboot_requirement_status(False) for mac, ip in regex.findall(html): item = DHCPReservationListItem() item.set_mac(converter.normalize_mac(mac)) item.set_ip(ip) item.set_enabled_status(True) reservation_list.append(item) return reservation_list
def _parse_addr_reservation_list(html): reservations = re.compile('var StaticList = new Array\((.*)\);').search(html) if reservations is None: raise RouterParseError('Cannot find reservations list.') reservations_list = reservations.group(1) results = re.compile(';(.+?);(.+?);([12]);(\d+)').findall(reservations_list) reservation_list = DHCPReservationList() reservation_list.set_reboot_requirement_status(False) for ip, mac, mac_bind, _time in results: item = DHCPReservationListItem() item.set_mac(converter.normalize_mac(mac)) item.set_ip(ip) item.set_enabled_status(mac_bind == '1') reservation_list.append(item) return reservation_list
def _parse_addr_reservation_list(contents): array_name = 'dhcpList' result = _extract_js_array_data(contents, array_name) result = result[:-2] # the last 2 elements are not needed # each 3 subsequent items are related (mac_address, ip, is_enabled) list_raw = split_in_groups(result, 3) reservation_list = DHCPReservationList() for mac, ip, is_enabled in list_raw: item = DHCPReservationListItem() item.set_mac(converter.normalize_mac(mac)) item.set_ip(ip) item.set_enabled_status(is_enabled == 1) reservation_list.append(item) return reservation_list
def _parse_addr_reservation_list(contents): array_name = 'dhcpList' result = _extract_js_array_data(contents, array_name) result = result[:-2] # the last 2 elements are not needed # each 3 subsequent items are related (mac_address, ip, is_enabled) list_raw = split_in_groups(result, 3) reservation_list = DHCPReservationList() for mac, ip, is_enabled in list_raw: item = DHCPReservationListItem() item.set_mac(converter.normalize_mac(mac)) item.set_ip(ip) item.set_enabled_status(is_enabled == 1) reservation_list.append(item) return reservation_list