From 17c181ac74aefa2bf3e43f8e945895e6105feec2 Mon Sep 17 00:00:00 2001 From: lejeune quentin Date: Tue, 25 Feb 2020 11:16:00 +0000 Subject: [PATCH] [FIX] hw_drievrs: Replace SSID on the first boot We replace the SSID of the IoTBox with a unique SSID closes odoo/odoo#46255 X-original-commit: c847c1cb149e386331ff2e5b19a58862e1b66714 Signed-off-by: Quentin Lejeune (qle) --- addons/hw_drivers/drivers/DisplayDriver.py | 2 ++ addons/hw_drivers/drivers/PrinterDriver.py | 9 +-------- addons/hw_drivers/tools/helpers.py | 3 +++ addons/hw_drivers/views/pos_display.html | 2 +- .../tools/posbox/configuration/wireless_ap.sh | 10 ++++++++++ 5 files changed, 17 insertions(+), 9 deletions(-) diff --git a/addons/hw_drivers/drivers/DisplayDriver.py b/addons/hw_drivers/drivers/DisplayDriver.py index aed483fc5ea..cdaf1659c93 100644 --- a/addons/hw_drivers/drivers/DisplayDriver.py +++ b/addons/hw_drivers/drivers/DisplayDriver.py @@ -196,10 +196,12 @@ class DisplayController(http.Controller): if 'wlan' in iface_id or 'eth' in iface_id: iface_obj = ni.ifaddresses(iface_id) ifconfigs = iface_obj.get(ni.AF_INET, []) + essid = helpers.get_ssid() for conf in ifconfigs: if conf.get('addr'): display_ifaces.append({ 'iface_id': iface_id, + 'essid': essid, 'addr': conf.get('addr'), 'icon': 'sitemap' if 'eth' in iface_id else 'wifi', }) diff --git a/addons/hw_drivers/drivers/PrinterDriver.py b/addons/hw_drivers/drivers/PrinterDriver.py index 72919dd4cf0..e47df2b61a2 100644 --- a/addons/hw_drivers/drivers/PrinterDriver.py +++ b/addons/hw_drivers/drivers/PrinterDriver.py @@ -233,15 +233,8 @@ class PrinterDriver(Driver): mac = '' homepage = '' - hosting_ap = os.system('pgrep hostapd') == 0 ssid = helpers.get_ssid() - if hosting_ap: - with open('/root_bypass_ramdisks/etc/hostapd/hostapd.conf') as config_file: - lines = config_file.readlines() - ssid = lines[1].split("=")[1].replace("\n", "") - wlan = '\nWireless network:\n%s\n\n' % ssid - elif ssid: - wlan = '\nWireless network:\n%s\n\n' % ssid + wlan = '\nWireless network:\n%s\n\n' % ssid interfaces = ni.interfaces() ips = [] diff --git a/addons/hw_drivers/tools/helpers.py b/addons/hw_drivers/tools/helpers.py index f59de214d9d..0be09086e4d 100644 --- a/addons/hw_drivers/tools/helpers.py +++ b/addons/hw_drivers/tools/helpers.py @@ -129,6 +129,9 @@ def get_mac_address(): return netifaces.ifaddresses('wlan0')[netifaces.AF_LINK][0]['addr'] def get_ssid(): + ap = subprocess.call(['systemctl', 'is-active', 'hostapd']) # if service is active return 0 else inactive + if not ap: + return subprocess.check_output(['grep', '-oP', '(?<=ssid=).*', '/etc/hostapd/hostapd.conf']).decode('utf-8').rstrip() process_iwconfig = subprocess.Popen(['iwconfig'], stdout=subprocess.PIPE, stderr=subprocess.STDOUT) process_grep = subprocess.Popen(['grep', 'ESSID:"'], stdin=process_iwconfig.stdout, stdout=subprocess.PIPE) return subprocess.check_output(['sed', 's/.*"\\(.*\\)"/\\1/'], stdin=process_grep.stdout).decode('utf-8').rstrip() diff --git a/addons/hw_drivers/views/pos_display.html b/addons/hw_drivers/views/pos_display.html index 4177462f072..cfe848f6645 100644 --- a/addons/hw_drivers/views/pos_display.html +++ b/addons/hw_drivers/views/pos_display.html @@ -60,7 +60,7 @@ {% for display_iface in display_ifaces -%} - + {{ display_iface.essid }} {{ display_iface.addr }} {%- endfor %} diff --git a/addons/point_of_sale/tools/posbox/configuration/wireless_ap.sh b/addons/point_of_sale/tools/posbox/configuration/wireless_ap.sh index 2dbe31b938a..00d9814f758 100755 --- a/addons/point_of_sale/tools/posbox/configuration/wireless_ap.sh +++ b/addons/point_of_sale/tools/posbox/configuration/wireless_ap.sh @@ -21,6 +21,16 @@ if [ -z "${WIRED_IP}" ] ; then else logger -t posbox_wireless_ap "Starting AP" + SSID=$(grep -oP '(?<=ssid=).*' /etc/hostapd/hostapd.conf) + + if [ "${SSID}" = "IoTBox" ] + then + # override SSID to get a unique SSID + MAC=$(ip link show wlan0 | tail -n 1 | awk '{print $2}' | sed 's/\://g') + NEWSSID="${SSID}-${MAC}" + sed -ie "s/$(echo ${SSID})/$(echo ${NEWSSID})/g" /etc/hostapd/hostapd.conf + fi + service hostapd restart ip addr add 10.11.12.1/24 dev wlan0