1
0
Fork 0
mirror of https://github.com/iiab/iiab.git synced 2025-03-09 15:40:17 +00:00

Merge pull request #396 from iiab/master

sync from iiab:master
This commit is contained in:
A Holt 2020-05-09 14:22:47 -04:00 committed by GitHub
commit 1e3344f39e
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
22 changed files with 316 additions and 124 deletions

View file

@ -128,20 +128,18 @@
iiab_lan_iface: "{{ user_lan_iface }}" iiab_lan_iface: "{{ user_lan_iface }}"
when: not (user_lan_iface == "auto") when: not (user_lan_iface == "auto")
- name: Record IIAB_WAN_DEVICE to {{ iiab_env_file }} - name: Record IIAB_WAN_DEVICE={{ iiab_wan_iface }} to {{ iiab_env_file }}
lineinfile: lineinfile:
path: "{{ iiab_env_file }}" path: "{{ iiab_env_file }}"
regexp: '^IIAB_WAN_DEVICE=*' regexp: '^IIAB_WAN_DEVICE=*'
line: 'IIAB_WAN_DEVICE={{ iiab_wan_iface }}' line: 'IIAB_WAN_DEVICE={{ iiab_wan_iface }}'
when: not installing #REMOVE THIS LINE IF installing IS ALWAYS false AS SET IN roles/0-init/defaults/main.yml
- name: Record IIAB_LAN_DEVICE to {{ iiab_env_file }} - name: Record IIAB_LAN_DEVICE={{ iiab_lan_iface }} to {{ iiab_env_file }}
lineinfile: lineinfile:
path: "{{ iiab_env_file }}" path: "{{ iiab_env_file }}"
regexp: '^IIAB_LAN_DEVICE=*' regexp: '^IIAB_LAN_DEVICE=*'
line: 'IIAB_LAN_DEVICE={{ iiab_lan_iface }}' line: 'IIAB_LAN_DEVICE={{ iiab_lan_iface }}'
state: present state: present
when: not installing #REMOVE THIS LINE IF installing IS ALWAYS false AS SET IN roles/0-init/defaults/main.yml
- name: Add 'computed_network' variable values to {{ iiab_ini_file }} - name: Add 'computed_network' variable values to {{ iiab_ini_file }}
ini_file: ini_file:

View file

@ -19,22 +19,16 @@
host_channel: "{{ current_host_channel.stdout }}" host_channel: "{{ current_host_channel.stdout }}"
when: current_host_channel.stdout is defined and current_host_channel.stdout != "" and current_host_channel.stdout|int <= 13 when: current_host_channel.stdout is defined and current_host_channel.stdout != "" and current_host_channel.stdout|int <= 13
- name: Create /etc/hostapd/hostapd.conf from template - name: Create /etc/hostapd/hostapd.conf and backup .iiab from template
template: template:
src: hostapd/hostapd.conf.j2
dest: /etc/hostapd/hostapd.conf
owner: root
group: root
mode: 0644
when: discovered_wireless_iface != "none"
- name: Create backup /etc/hostapd/hostapd.conf.iiab from template
template:
src: hostapd/hostapd.conf.j2
dest: /etc/hostapd/hostapd.conf.iiab
owner: root owner: root
group: root group: root
mode: 0644 mode: 0644
src: "{{ item.src }}"
dest: "{{ item.dest }}"
with_items:
- { src: 'hostapd/hostapd.conf.j2', dest: '/etc/hostapd/hostapd.conf' }
- { src: 'hostapd/hostapd.conf.j2', dest: '/etc/hostapd/hostapd.conf.iiab' }
when: discovered_wireless_iface != "none" when: discovered_wireless_iface != "none"
- name: Generate new random mac address for ap0 - name: Generate new random mac address for ap0
@ -45,14 +39,19 @@
set_fact: set_fact:
ap0_mac_addr: "{{ ap0_mac.stdout }}" ap0_mac_addr: "{{ ap0_mac.stdout }}"
- name: Use custom 'hostapd' systemd service unit file using ap0 when wifi_up_down - name: Use custom 'hostapd' systemd service unit file using ap0
template: template:
src: hostapd/hostapd.service.j2
dest: /etc/systemd/system/hostapd.service
owner: root owner: root
group: root group: root
mode: 0644 src: "{{ item.src }}"
when: discovered_wireless_iface != "none" and wifi_up_down dest: "{{ item.dest }}"
mode: "{{ item.mode }}"
with_items:
- { src: 'hostapd/hostapd.service.j2', dest: '/etc/systemd/system/hostapd.service', mode: '0644' }
- { src: 'hostapd/clone-wifi.service.j2', dest: '/etc/systemd/system/clone-wifi.service', mode: '0644' }
- { src: 'hostapd/wifi-test.service.j2', dest: '/etc/systemd/system/wifi-test.service', mode: '0644'}
- { src: 'hostapd/test-wifi', dest: '/sbin/test-wifi', mode: '0755' }
when: discovered_wireless_iface != "none"
- name: Use custom 'hostapd' systemd service unit file for {{ discovered_wireless_iface }} when not wifi_up_down - name: Use custom 'hostapd' systemd service unit file for {{ discovered_wireless_iface }} when not wifi_up_down
template: template:
@ -120,7 +119,7 @@
with_items: with_items:
- { src: 'hostapd/netd-disp', dest: '/etc/networkd-dispatcher/carrier.d/iiab-wifi' } - { src: 'hostapd/netd-disp', dest: '/etc/networkd-dispatcher/carrier.d/iiab-wifi' }
- { src: 'hostapd/netd-disp', dest: '/etc/networkd-dispatcher/no-carrier.d/iiab-wifi' } - { src: 'hostapd/netd-disp', dest: '/etc/networkd-dispatcher/no-carrier.d/iiab-wifi' }
- { src: 'hostapd/netd-disp', dest: '/etc/networkd-dispatcher/routable.d/iiab-wifi' } - { src: 'hostapd/netd-disp2', dest: '/etc/networkd-dispatcher/routable.d/iiab-wifi2' }
when: systemd_networkd_active and discovered_wireless_iface != "none" and wifi_up_down when: systemd_networkd_active and discovered_wireless_iface != "none" and wifi_up_down
- name: Remove networkd-dispatcher hook wifi_up_down False - name: Remove networkd-dispatcher hook wifi_up_down False
@ -131,13 +130,35 @@
- { dest: '/etc/networkd-dispatcher/carrier.d/iiab-wifi' } - { dest: '/etc/networkd-dispatcher/carrier.d/iiab-wifi' }
- { dest: '/etc/networkd-dispatcher/no-carrier.d/iiab-wifi' } - { dest: '/etc/networkd-dispatcher/no-carrier.d/iiab-wifi' }
- { dest: '/etc/networkd-dispatcher/routable.d/iiab-wifi' } - { dest: '/etc/networkd-dispatcher/routable.d/iiab-wifi' }
- { dest: '/etc/networkd-dispatcher/routable.d/iiab-wifi2' }
when: systemd_networkd_active and discovered_wireless_iface != "none" and not wifi_up_down when: systemd_networkd_active and discovered_wireless_iface != "none" and not wifi_up_down
- name: Enable the Access Point 'hostapd' service - name: Enable the Access Point 'hostapd' service
systemd: systemd:
name: hostapd name: hostapd
enabled: yes enabled: yes
when: hostapd_enabled when: hostapd_enabled and not wifi_up_down
- name: Disable ap0 related services
systemd:
name: "{{ item }}"
enabled: no
daemon_reload: yes
with_items:
- clone-wifi.service
- wifi-test.service
when: not wifi_up_down
- name: Enable the Access Point 'hostapd' and ap0 related services
systemd:
name: "{{ item }}"
enabled: yes
daemon_reload: yes
with_items:
- hostapd.service
- clone-wifi.service
- wifi-test.service
when: hostapd_enabled and wifi_up_down
- name: Record HOSTAPD_ENABLED to {{ iiab_env_file }} - name: Record HOSTAPD_ENABLED to {{ iiab_env_file }}
lineinfile: lineinfile:

View file

@ -1,4 +1,5 @@
- include_tasks: detected_network.yml - name: detected_network
include_tasks: detected_network.yml
- name: IF WIFI IS PRIMARY GATEWAY, PLEASE RUN 'iiab-hotspot-on' MANUALLY - name: IF WIFI IS PRIMARY GATEWAY, PLEASE RUN 'iiab-hotspot-on' MANUALLY
set_fact: set_fact:
@ -11,25 +12,8 @@
# in hostapd.yml for later use by... # in hostapd.yml for later use by...
# /usr/libexec/iiab-startup.sh, iiab-hotspot-off & iiab-hotspot-on # /usr/libexec/iiab-startup.sh, iiab-hotspot-off & iiab-hotspot-on
# #
# Separate Idea, Not Without Risks: should WiFi-as-gateway detection logic - name: computed_network
# be encapsulated into roles/network/tasks/hostapd.yml in future? Whereas include_tasks: computed_network.yml
# today "./runtags hostapd" doesn't exist & "./runtags AP" is UNSUPPORTED!
#- name: RPi - reboot to AP post install - installed via wifi so the services are ready
# set_fact:
# iiab_lan_iface: br0
# iiab_wan_iface: "{{ discovered_wired_iface }}"
# iiab_wireless_lan_iface: "{{ discovered_wireless_iface }}"
# iiab_wired_lan_iface: ""
# when: is_raspbian and discovered_wireless_iface is defined and discovered_wireless_iface == iiab_wan_iface and reboot_to_AP
- include_tasks: computed_network.yml
#- name: RPi - don't reboot to AP post install - installed via wifi - don't blow away current network
# set_fact:
# no_net_restart: True
# hostapd_enabled: False
# when: is_raspbian and discovered_wireless_iface is defined and discovered_wired_iface != iiab_wan_iface
- name: Configure wondershaper - name: Configure wondershaper
include_tasks: wondershaper.yml include_tasks: wondershaper.yml
@ -53,42 +37,37 @@
when: is_ubuntu and not is_ubuntu_16 when: is_ubuntu and not is_ubuntu_16
#### Start services #### Start services
- name: avahi
- include_tasks: avahi.yml include_tasks: avahi.yml
- include_tasks: hostapd.yml - name: hostapd
- include_tasks: computed_services.yml include_tasks: hostapd.yml
- include_tasks: enable_services.yml - name: computed_services
include_tasks: computed_services.yml
- name: enable_services
include_tasks: enable_services.yml
#### End services #### End services
#### Start network layout #### Start network layout
#- name: Redhat networking
- name: Redhat networking # include_tasks: ifcfg_mods.yml
include_tasks: ifcfg_mods.yml # when: is_redhat | bool
when: is_redhat | bool
#and not installing
- name: NetworkManager in use - name: NetworkManager in use
include_tasks: NM-debian.yml include_tasks: NM-debian.yml
when: is_debuntu and network_manager_active when: is_debuntu and network_manager_active
#and not installing
- name: systemd-networkd in use - name: systemd-networkd in use
include_tasks: sysd-netd-debian.yml include_tasks: sysd-netd-debian.yml
when: is_debuntu and systemd_networkd_active when: is_debuntu and systemd_networkd_active
#and not installing
- name: Raspbian uses dhcpcd only with no N-M or SYS-NETD active - name: Raspbian uses dhcpcd only with no N-M or SYS-NETD active
include_tasks: rpi_debian.yml include_tasks: rpi_debian.yml
when: is_raspbian when: is_raspbian
#and not installing
- name: Not RPi, Not NetworkManager, Not systemd-networkd in use - name: Not RPi, Not NetworkManager, Not systemd-networkd in use
include_tasks: debian.yml include_tasks: debian.yml
when: (not is_raspbian and not network_manager_active and not systemd_networkd_active and is_debuntu) or is_ubuntu_16 when: (not is_raspbian and not network_manager_active and not systemd_networkd_active and is_debuntu) or is_ubuntu_16
#and not installing
#### end network layout #### end network layout
- include_tasks: restart.yml - name: Restart services
when: not installing # REMOVE THIS LINE IF installing IS ALWAYS false AS SET IN roles/0-init/defaults/main.yml include_tasks: restart.yml

View file

@ -1,14 +1,14 @@
#iiab_wireless_lan_iface(wlan0) - wifi_up_down False needs hw - name: Restart wpa_supplicant service
#iiab_wireless_lan_iface(ap0) - wifi_up_down True needs hw
#hostapd_enabled False - set in hostapd.yml to avoid the enable with wifi_up_down False
#no_net_restart: True - main.yml discovered_wireless_iface == iiab_wan_iface
- name: Restart hostapd when WiFi is present but not when using WiFi as gateway
systemd: systemd:
name: hostapd name: "{{ item }}"
state: restarted state: restarted
# when: iiab_wireless_lan_iface is defined and hostapd_enabled and discovered_wireless_iface != iiab_wan_iface with_items:
# when: hostapd_enabled and iiab_wireless_lan_iface is defined and discovered_wireless_iface == iiab_wireless_lan_iface - wpa_supplicant
when: hostapd_enabled and not no_net_restart when: wifi_up_down and hostapd_enabled
- name: Reload netplan for Wifi gateway on Ubuntu 18+
shell: netplan apply
when: wifi_up_down and is_ubuntu and netplan.stdout.find("yaml") != -1
- name: Start named service - name: Start named service
systemd: systemd:
@ -72,7 +72,8 @@
- name: Checking if WiFi slave is active - name: Checking if WiFi slave is active
shell: brctl show br0 | grep {{ iiab_wireless_lan_iface }} | wc -l shell: brctl show br0 | grep {{ iiab_wireless_lan_iface }} | wc -l
when: hostapd_enabled and discovered_wireless_iface != iiab_wan_iface and iiab_lan_iface == "br0" # when: hostapd_enabled and discovered_wireless_iface != iiab_wan_iface and iiab_lan_iface == "br0"
when: hostapd_enabled and iiab_lan_iface == "br0"
register: wifi_slave register: wifi_slave
- name: Restart hostapd if WiFi slave is inactive - name: Restart hostapd if WiFi slave is inactive
@ -82,12 +83,13 @@
when: hostapd_enabled and wifi_slave.stdout is defined and wifi_slave.stdout == 0 when: hostapd_enabled and wifi_slave.stdout is defined and wifi_slave.stdout == 0
#both interfaces.d and systemd-networkd should have br0 available and Appliance lacks br0 #both interfaces.d and systemd-networkd should have br0 available and Appliance lacks br0
#keep an eye on legacy wifi installs where br0 is present but not 'online' with an ip address
#due to hostapd didn't go to a carrier state. All others should get dnsmasq restarted
- name: User choice of dnsmasq or dhcpd - restarting {{ dhcp_service2 }} - name: User choice of dnsmasq or dhcpd - restarting {{ dhcp_service2 }}
systemd: systemd:
name: "{{ dhcp_service2 }}" name: "{{ dhcp_service2 }}"
state: restarted state: restarted
when: (not no_net_restart) or wifi_up_down when: (not no_net_restart or (is_ubuntu_20 and wifi_up_down)) or (iiab_stage|int == 9)
#when: (not no_net_restart or (is_ubuntu_20 and wifi_up_down))
#when: (iiab_network_mode != "Appliance") # Sufficient b/c br0 exists thanks to /etc/network/interfaces.d/iiab #when: (iiab_network_mode != "Appliance") # Sufficient b/c br0 exists thanks to /etc/network/interfaces.d/iiab
#when: iiab_network_mode != "Appliance" and iiab_wan_iface != discovered_wireless_iface #when: iiab_network_mode != "Appliance" and iiab_wan_iface != discovered_wireless_iface
#keep an eye on legacy wifi installs where br0 is present but not 'online' with an ip address
#due to hostapd didn't go to a carrier state. All others should get dnsmasq restarted

View file

@ -50,16 +50,28 @@
systemd: systemd:
daemon_reload: yes daemon_reload: yes
# now pick up denyinterfaces - name: Clone wifi if needed
- name: Restart dhcpcd systemd:
service: name: clone-wifi
name: dhcpcd state: started
state: restarted
- name: Restart the networking service if appropriate - name: Restart the networking service if appropriate
service: systemd:
name: networking name: networking
enabled: yes enabled: yes
state: restarted state: restarted
when: not nobridge is defined # less is better
#when: not nobridge is defined and not no_net_restart - name: Restart hostapd when WiFi is present but not when using WiFi as gateway
systemd:
name: hostapd
state: restarted
when: hostapd_enabled and (wifi_up_down or not no_net_restart)
#- name: Stop wpa_supplicant on Raspbian
# shell: killall wpa_supplicant
# now pick up denyinterfaces and respawn wpa_supplicant
- name: Restart dhcpcd on Raspbian
systemd:
name: dhcpcd
state: restarted

View file

@ -51,7 +51,18 @@
systemd: systemd:
daemon_reload: yes daemon_reload: yes
- name: Clone wifi if needed
systemd:
name: clone-wifi
state: started
- name: Restart the systemd-networkd service - name: Restart the systemd-networkd service
systemd: systemd:
name: systemd-networkd name: systemd-networkd
state: restarted state: restarted
- name: Restart hostapd when WiFi is present but not when using WiFi as gateway$
systemd:
name: hostapd
state: restarted
when: hostapd_enabled and (wifi_up_down or not no_net_restart)

View file

@ -6,13 +6,27 @@ if [ "$interface" = "wlan0" ]; then
# wpa_supplicant wants MHz for frequency= while hostapd wants channel..... whatever # wpa_supplicant wants MHz for frequency= while hostapd wants channel..... whatever
# FREQ=`iw wlan0 info|grep channel|cut -d' ' -f9` # FREQ=`iw wlan0 info|grep channel|cut -d' ' -f9`
FREQ=`iw wlan0 info|grep channel|cut -d' ' -f2` FREQ=`iw wlan0 info|grep channel|cut -d' ' -f2`
syslog info "40-iiab set channel $FREQ" FREQ2=""
sed -i -e "s/^channel.*/channel=$FREQ /" /etc/hostapd/hostapd.conf for result in $FREQ; do
# will need a reboot for hostapd if the channel changed echo "frequency is $result for carrier"
if [ $result -lt 13 ]; then
FREQ2=$result
fi
done
echo "Using $FREQ2 for carrier"
syslog info "50-iiab set channel $FREQ2"
HOSTAPD=`grep channel /etc/hostapd/hostapd.conf | awk -F = '{print $2}'`
echo "Hostapd set for $HOSTAPD"
if [ $FREQ2 -ne $HOSTAPD ] && [ ! -z $FREQ2 ]; then
echo "Editing Hostapd for channel $FREQ2"
cp /etc/hostapd/hostapd.conf.iiab /etc/hostapd/hostapd.conf
sed -i -e "s/^channel.*/channel=$FREQ /" /etc/hostapd/hostapd.conf
# systemctl restart hostapd
fi
fi fi
# spams the logging # spams the logging
#syslog info "50-iiab set ap0 spam $REASON" #syslog info "50-iiab set ap0 spam $REASON"
if [ -e /sys/class/net/ap0 ] && ! [ "$reason" = "ROUTERADVERT" ]; then if [ -e /sys/class/net/ap0 ] && [ "$reason" = "BOUND" ]; then
syslog info "50-iiab set ap0 up $REASON" syslog info "50-iiab set ap0 up $REASON"
# keeps ap0 up so hostapd works # keeps ap0 up so hostapd works
ip link set ap0 up ip link set ap0 up

View file

@ -0,0 +1,10 @@
start up order
# network-pre bridge is created
clone-wifi
wpa_supplicant #--dbus version does not start the interface directly
test-wifi # uses dbus to scan the network grabbing the channel alters hostapd.conf if needed
hostapd
# network
wpa_supplicant started by dhcpcd, wpa_supplicant@$IFACE netplan-wpa-$IFACE, or NetworkManager

View file

@ -0,0 +1,21 @@
[Unit]
Description=IIAB ap0 clone wifi device
Wants=network-pre.target
After=network-pre.target
Before=dhcpcd.service
Before=wpa_supplicant.service
Before=wpa_supplicant@{{ discovered_wireless_iface }}.service
Before=network-manager.service
Before=netplan-wpa@{{ discovered_wireless_iface }}.service
Before=hostapd.service
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStartPre=-/sbin/iw phy phy0 interface add ap0 type __ap
ExecStartPre=-/sbin/ip link set ap0 address {{ ap0_mac_addr }}
ExecStart=-/sbin/ip link set ap0 up
ExecStop=-/sbin/iw dev ap0 del
[Install]
WantedBy=multi-user.target

View file

@ -2,29 +2,21 @@
Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator Description=Hostapd IEEE 802.11 AP, IEEE 802.1X/WPA/WPA2/EAP/RADIUS Authenticator
Wants=network-pre.target Wants=network-pre.target
After=network-pre.target After=network-pre.target
{% if is_raspbian %} After=clone-wifi.service
Requires=clone-wifi.service
Before=dhcpcd.service Before=dhcpcd.service
{% endif %} Before=wpa_supplicant@{{ discovered_wireless_iface }}.service
Before=wpa_supplicant.service
Before=wpa_supplicant@{{ discovered_wireless_iface }}.service
{% if network_manager_active %}
Before=network-manager.service Before=network-manager.service
{% endif %} Before=netplan-wpa-{{ discovered_wireless_iface }}.service
{% if is_ubuntu and netplan.stdout.find("yaml") != -1 %}
Before=netplan-wpa-{{ discovered_wireless_iface }}.service
{% endif %}
Before=network.target Before=network.target
[Service] [Service]
Type=forking Type=forking
Restart=on-failure #Restart=on-failure
RestartSec=2 #RestartSec=2
PIDFile=/run/hostapd.pid PIDFile=/run/hostapd.pid
ExecStartPre=-/sbin/iw phy phy0 interface add ap0 type __ap
ExecStartPre=-/sbin/ip link set ap0 address {{ ap0_mac_addr }}
ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.pid /etc/hostapd/hostapd.conf ExecStart=/usr/sbin/hostapd -B -P /run/hostapd.pid /etc/hostapd/hostapd.conf
ExecStartPost=-/sbin/ip link set ap0 up ExecStartPost=-/sbin/ip link set ap0 up
ExecStopPost=-/sbin/iw dev ap0 del
[Install] [Install]
WantedBy=multi-user.target WantedBy=multi-user.target

View file

@ -1,5 +1,4 @@
#!/bin/bash #!/bin/bash
if [ "$IFACE" == "{{ discovered_wireless_iface }}" ]; then if [ "$IFACE" == "{{ discovered_wireless_iface }}" ]; then
echo "NET-DISP-WiFi $IFACE $STATE" echo "NET-DISP-WiFi $IFACE $STATE"
/usr/sbin/ip link set ap0 up /usr/sbin/ip link set ap0 up

View file

@ -0,0 +1,21 @@
#!/bin/bash
if [ "$IFACE" == "{{ discovered_wireless_iface }}" ]; then
echo "NET-DISP-WiFi $IFACE $STATE"
# If we are here we have a dhcp ip address
CHAN=`iw $IFACE info|grep channel|cut -d' ' -f2`
echo "Using channel $CHAN for carrier"
HOSTAPD=`grep channel /etc/hostapd/hostapd.conf | awk -F = '{print $2}'`
echo "Hostapd set for $HOSTAPD"
if [ $CHAN -ne $HOSTAPD ] && [ $CHAN -lt 14 ]; then
echo "Editing Hostapd for channel $CHAN"
cp /etc/hostapd/hostapd.conf.iiab /etc/hostapd/hostapd.conf
sed -i -e "s/^channel.*/channel=$CHAN/" /etc/hostapd/hostapd.conf
systemctl stop wpa_supplicant
systemctl restart hostapd
systemctl start wpa_supplicant
else
echo "Upstream Channel greater than 13 or is the same - not changing hostapd.conf"
fi
sleep 3
/usr/sbin/ip link set ap0 up
fi

View file

@ -0,0 +1,82 @@
#!/bin/bash
IFACE={{ discovered_wireless_iface }}
RASPBIAN=0
NETPLAN=0
SSID="NA"
# when we get here br0 should be available and dbus wpa_supplicant was started if enabled. None
# of the backends that use wpa_supplicant should be active yet based on the Before= After= lines
# in the wifi-test.service unit file.
# covers systemd-networkd
if [ -f /etc/wpa_supplicant/wpa_supplicant-$IFACE.conf ]; then
SSID=`grep ssid /etc/wpa_supplicant/wpa_supplicant-$IFACE.conf | awk -F = '{print $2}' | sed -r s/\"// | sed -r s/\"//`
fi
# covers raspbian
if [ -f /etc/wpa_supplicant/wpa_supplicant.conf ]; then
RASPBIAN=1
SSID=`grep ssid /etc/wpa_supplicant/wpa_supplicant.conf | awk -F = '{print $2}' | sed -r s/\"// | sed -r s/\"//`
fi
# covers netplan
if [ -f /run/netplan/wpa-$IFACE.conf ]; then
NETPLAN=1
SSID=`grep ssid /run/netplan/wpa-$IFACE.conf | awk -F = '{print $2}' | sed -r s/\"// | sed -r s/\"//`
echo "cover netplan lack of country="
sed -i 's|ctrl_interface=/run/wpa_supplicant|&\ncountry=US|' /run/netplan/wpa-$IFACE.conf
fi
# IIAB hint for NetworkManager
# could scrape /etc/NetworkManager/system-connections/ looking for ssid
if [ -f /etc/iiab/iiab.env ]; then
source /etc/iiab/iiab.env
if [ ! -z $CLIENT_SSID ]; then
SSID=$CLIENT_SSID
fi
fi
echo "ssid is $SSID"
if [[ $SSID == "" ]] || [[ $SSID == "NA" ]]; then
echo "Couldn't find ssid $SSID to use exiting"
if [ $NETPLAN -eq 1 ]; then
echo "Netplan1"
fi
exit 0
fi
wpa_cli -i $IFACE scan > /dev/null
sleep 2
FREQ=`wpa_cli -i $IFACE scan_results | grep $SSID | awk '{print $2}'`
for result in $FREQ; do
echo "frequency is $result for $SSID"
if [ $result -lt 2485 ] && [ $result -gt 2407 ]; then
FREQ2=$result
break
fi
done
echo "Using $FREQ2 for $SSID"
if [[ $FREQ2 == "" ]]; then
echo "Couldn't find frequency to use exiting"
if [ $NETPLAN -eq 1 ]; then
echo "Netplan2"
fi
exit 0
fi
# ubuntu on boot exits at this point timing - issue with wpa_cli and scanning
CHAN=$(($FREQ2 - 2407 ))
CHAN=$(($CHAN / 5 ))
echo "channel is $CHAN for $SSID"
HOSTAPD=`grep channel /etc/hostapd/hostapd.conf | awk -F = '{print $2}'`
echo "Hostapd set for $HOSTAPD"
if [ $CHAN -ne $HOSTAPD ]; then
echo "Editing Hostapd for channel $CHAN"
cp /etc/hostapd/hostapd.conf.iiab /etc/hostapd/hostapd.conf
sed -i -e "s/^channel.*/channel=$CHAN/" /etc/hostapd/hostapd.conf
fi
systemctl stop wpa_supplicant
systemctl stop hostapd
systemctl start hostapd
systemctl start wpa_supplicant
if [ $NETPLAN -eq 1 ]; then
echo "Netplan3"
# This is more of a netplan workaround should go away.
systemctl restart netplan-wpa-$IFACE.service
fi
exit 0

View file

@ -0,0 +1,19 @@
[Unit]
Description=IIAB find channel freq for ssid
After=wpa_supplicant.service
Wants=wpa_supplicant.service
Before=hostapd.service
Before=dhcpcd.service
Before=wpa_supplicant@{{ discovered_wireless_iface }}.service
Before=network-manager.service
Before=netplan-wpa-{{ discovered_wireless_iface }}.service
Before=network.target
[Service]
Type=oneshot
RemainAfterExit=yes
ExecStart=/sbin/test-wifi
[Install]
WantedBy=multi-user.target

View file

@ -1,4 +1,14 @@
#!/bin/bash #!/bin/bash
sed -i -e "s/^HOSTAPD_ENABLED.*/HOSTAPD_ENABLED=False/" {{ iiab_env_file }}
systemctl disable hostapd
systemctl stop hostapd
{% if wifi_up_down %}
systemctl disable clone-wifi.service
systemctl disable wifi-test.service
systemctl stop clone-wifi.service
echo " IIAB hotspot access point Disabled"
exit 0
{% else %}
{% if is_raspbian %} {% if is_raspbian %}
# hotspot-off before ap0_updown # hotspot-off before ap0_updown
sed -i -e "s/^denyinterfaces/#denyinterfaces/" /etc/dhcpcd.conf sed -i -e "s/^denyinterfaces/#denyinterfaces/" /etc/dhcpcd.conf
@ -9,7 +19,6 @@ systemctl stop hostapd
systemctl daemon-reload systemctl daemon-reload
systemctl restart dhcpcd systemctl restart dhcpcd
#systemctl restart networking 6/15/2019 TFM removed #systemctl restart networking 6/15/2019 TFM removed
sed -i -e "s/^HOSTAPD_ENABLED.*/HOSTAPD_ENABLED=False/" {{ iiab_env_file }}
# Temporary promiscuous-mode workaround for RPi's WiFi "10SEC disease" # Temporary promiscuous-mode workaround for RPi's WiFi "10SEC disease"
# Set wlan0 to promiscuous when AP's OFF (for possible WiFi gateway) # Set wlan0 to promiscuous when AP's OFF (for possible WiFi gateway)
# SEE ALSO iiab-hotspot-on + /usr/libexec/iiab-startup.sh # SEE ALSO iiab-hotspot-on + /usr/libexec/iiab-startup.sh
@ -18,15 +27,12 @@ sed -i -e "s/^HOSTAPD_ENABLED.*/HOSTAPD_ENABLED=False/" {{ iiab_env_file }}
# ip link set dev wlan0 promisc on # ip link set dev wlan0 promisc on
#fi #fi
{% else %} {% else %}
systemctl disable hostapd #ubuntu
systemctl stop hostapd if [ -f /etc/NetworkManager/conf.d/wifi-manage.conf ]
sed -i -e "s/^HOSTAPD_ENABLED.*/HOSTAPD_ENABLED=False/" {{ iiab_env_file }} sed -i -e "s|managed=0|managed=1|" /etc/NetworkManager/conf.d/wifi-manage.conf
echo " IIAB hotspot access point Disabled" fi
{% if wifi_up_down %}
exit 0
{% else %}
sed -i -e "s|managed=0|managed=1|" /etc/NetworkManager/conf.d/wifi-manage.conf
echo -e "\nPlease reboot to enable upstream WiFi access.\n" echo -e "\nPlease reboot to enable upstream WiFi access.\n"
exit 0 exit 0
{% endif %} {% endif %}
#wifi_up_down
{% endif %} {% endif %}

View file

@ -1,5 +1,12 @@
#!/bin/bash #!/bin/bash
sed -i -e "s/^HOSTAPD_ENABLED.*/HOSTAPD_ENABLED=True/" {{ iiab_env_file }}
{% if wifi_up_down %}
systemctl enable clone-wifi.service
systemctl enable hostapd
systemctl enable wifi-test.service
echo -e "\nPlease reboot to activate hostapd feature.\n"
exit 0
{% else %}
{% if is_raspbian %} {% if is_raspbian %}
# just do what we have always done in hotspot-on # just do what we have always done in hotspot-on
cp -f /etc/hostapd/hostapd.conf.iiab /etc/hostapd/hostapd.conf cp -f /etc/hostapd/hostapd.conf.iiab /etc/hostapd/hostapd.conf
@ -12,7 +19,6 @@ systemctl daemon-reload
systemctl restart dhcpcd systemctl restart dhcpcd
systemctl start hostapd systemctl start hostapd
systemctl start dnsmasq systemctl start dnsmasq
sed -i -e "s/^HOSTAPD_ENABLED.*/HOSTAPD_ENABLED=True/" {{ iiab_env_file }}
# Temporary promiscuous-mode workaround for RPi's WiFi "10SEC disease" # Temporary promiscuous-mode workaround for RPi's WiFi "10SEC disease"
# Disable "promiscuous" on wlan0 when AP (i.e. no WiFi gateway) # Disable "promiscuous" on wlan0 when AP (i.e. no WiFi gateway)
@ -21,16 +27,14 @@ sed -i -e "s/^HOSTAPD_ENABLED.*/HOSTAPD_ENABLED=True/" {{ iiab_env_file }}
#if grep -qi raspbian /etc/*release; then #if grep -qi raspbian /etc/*release; then
# ip link set dev wlan0 promisc off # ip link set dev wlan0 promisc off
#fi #fi
{% else %} {% else %}
#ubuntu
if [ -f /etc/NetworkManager/conf.d/wifi-manage.conf ]
sed -i -e "s|managed=1|managed=0|" /etc/NetworkManager/conf.d/wifi-manage.conf
fi
systemctl enable hostapd systemctl enable hostapd
sed -i -e "s/^HOSTAPD_ENABLED.*/HOSTAPD_ENABLED=True/" {{ iiab_env_file }}
{% if wifi_up_down %}
echo -e "\nPlease reboot to activate hostapd feature.\n"
exit 0
{% else %}
sed -i -e "s|managed=1|managed=0|" /etc/NetworkManager/conf.d/wifi-manage.conf
echo -e "\nPlease reboot to activate hostapd feature.\n" echo -e "\nPlease reboot to activate hostapd feature.\n"
exit 0 exit 0
{% endif %} {% endif %}
#wifi_up_down
{% endif %} {% endif %}

View file

@ -6,6 +6,7 @@ Name=br0
Address={{ lan_ip }}/19 Address={{ lan_ip }}/19
LinkLocalAddressing=no LinkLocalAddressing=no
ConfigureWithoutCarrier=yes ConfigureWithoutCarrier=yes
RequiredForOnline=degraded-carrier
# Commenting the below line as it has been causing race/looping issues between dnsmasq and systemd-resolved # Commenting the below line as it has been causing race/looping issues between dnsmasq and systemd-resolved
# IIAB ticket #1747 # IIAB ticket #1747
#DNS={{ lan_ip }} #DNS={{ lan_ip }}

View file

@ -45,7 +45,7 @@ nextcloud_admin_user: 'Admin'
nextcloud_admin_password: 'changeme' nextcloud_admin_password: 'changeme'
# 2019-09-04: UNUSED (due to changes in roles/nextcloud/templates/nextcloud.conf.j2) # 2019-09-04: UNUSED (due to changes in roles/nextcloud/templates/nextcloud.conf.j2)
nextcloud_required_ip: 10.0.0.0/8 192.168.0.0/16 # nextcloud_required_ip: 10.0.0.0/8 192.168.0.0/16
# 2020-02-15: UNUSED at the time. Legacy remains from Apache: # 2020-02-15: UNUSED at the time. Legacy remains from Apache:
# nextcloud_allow_public_ips: True # nextcloud_allow_public_ips: True

View file

@ -152,7 +152,7 @@ dns_jail_enabled: False
# July 2018 (https://github.com/iiab/iiab/pull/870) and that @georgejhunt # July 2018 (https://github.com/iiab/iiab/pull/870) and that @georgejhunt
# extensively later refined (PRs #1179, #1300, #1327, #2070). # extensively later refined (PRs #1179, #1300, #1327, #2070).
captiveportal_install: True captiveportal_install: True
captiveportal_enabled: True captiveportal_enabled: False
captiveportal_port: 9090 captiveportal_port: 9090
captiveportal_splash_page: / captiveportal_splash_page: /
# You might also want to set iiab_home_url (above!) # You might also want to set iiab_home_url (above!)

View file

@ -92,7 +92,7 @@ dns_jail_enabled: False
# July 2018 (https://github.com/iiab/iiab/pull/870) and that @georgejhunt # July 2018 (https://github.com/iiab/iiab/pull/870) and that @georgejhunt
# extensively later refined (PRs #1179, #1300, #1327, #2070). # extensively later refined (PRs #1179, #1300, #1327, #2070).
captiveportal_install: True captiveportal_install: True
captiveportal_enabled: True captiveportal_enabled: False
captiveportal_splash_page: / captiveportal_splash_page: /
# You might also want to set iiab_home_url (above!) # You might also want to set iiab_home_url (above!)
# In a pinch, disable Captive Portal using instructions in http://FAQ.IIAB.IO # In a pinch, disable Captive Portal using instructions in http://FAQ.IIAB.IO

View file

@ -92,7 +92,7 @@ dns_jail_enabled: False
# July 2018 (https://github.com/iiab/iiab/pull/870) and that @georgejhunt # July 2018 (https://github.com/iiab/iiab/pull/870) and that @georgejhunt
# extensively later refined (PRs #1179, #1300, #1327, #2070). # extensively later refined (PRs #1179, #1300, #1327, #2070).
captiveportal_install: True captiveportal_install: True
captiveportal_enabled: True captiveportal_enabled: False
captiveportal_splash_page: / captiveportal_splash_page: /
# You might also want to set iiab_home_url (above!) # You might also want to set iiab_home_url (above!)
# In a pinch, disable Captive Portal using instructions in http://FAQ.IIAB.IO # In a pinch, disable Captive Portal using instructions in http://FAQ.IIAB.IO

View file

@ -92,7 +92,7 @@ dns_jail_enabled: False
# July 2018 (https://github.com/iiab/iiab/pull/870) and that @georgejhunt # July 2018 (https://github.com/iiab/iiab/pull/870) and that @georgejhunt
# extensively later refined (PRs #1179, #1300, #1327, #2070). # extensively later refined (PRs #1179, #1300, #1327, #2070).
captiveportal_install: True captiveportal_install: True
captiveportal_enabled: True captiveportal_enabled: False
captiveportal_splash_page: / captiveportal_splash_page: /
# You might also want to set iiab_home_url (above!) # You might also want to set iiab_home_url (above!)
# In a pinch, disable Captive Portal using instructions in http://FAQ.IIAB.IO # In a pinch, disable Captive Portal using instructions in http://FAQ.IIAB.IO