]> git.ipfire.org Git - people/stevee/network.git/blame - src/functions/functions.wpa_supplicant
Fix creating new configs
[people/stevee/network.git] / src / functions / functions.wpa_supplicant
CommitLineData
6d4eec4c
MT
1#!/bin/bash
2###############################################################################
3# #
4# IPFire.org - A linux based firewall #
5# Copyright (C) 2012 IPFire Network Development Team #
6# #
7# This program is free software: you can redistribute it and/or modify #
8# it under the terms of the GNU General Public License as published by #
9# the Free Software Foundation, either version 3 of the License, or #
10# (at your option) any later version. #
11# #
12# This program is distributed in the hope that it will be useful, #
13# but WITHOUT ANY WARRANTY; without even the implied warranty of #
14# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the #
15# GNU General Public License for more details. #
16# #
17# You should have received a copy of the GNU General Public License #
18# along with this program. If not, see <http://www.gnu.org/licenses/>. #
19# #
20###############################################################################
21
22a61046
MT
22WPA_SUPPLICANT_SOCKET_DIR="${RUN_DIR}/wpa_supplicant/ctrl"
23
f1b49125
MT
24wpa_supplicant_config_header() {
25 config_header "WPA supplicant configuration file"
26
27 # Set control socket directory.
28 print "ctrl_interface=${WPA_SUPPLICANT_SOCKET_DIR}"
29
30 # Honour country
b7ab3b4f 31 local country="$(wireless_get_reg_domain)"
f1b49125
MT
32 if isset country; then
33 print "country=${country}"
34 fi
8241d83a
MT
35 print
36
37 print "# Privacy"
38
39 # Use a random MAC address for any pre-association
40 # operations like scanning or ANQP
41 print "preassoc_mac_addr=1"
f1b49125
MT
42
43 print # end of header
44}
45
02807ad2
MT
46wpa_supplicant_config_destroy() {
47 local device="${1}"
48 assert isset device
49
231bce76 50 file_delete "${WPA_SUPPLICANT_CONF_DIR}/${device}.conf"
6d4eec4c
MT
51}
52
1c6a4e30 53wpa_supplicant_start() {
6d4eec4c 54 local device=${1}
22a61046 55 assert isset device
6d4eec4c 56
22a61046
MT
57 service_start "wpa_supplicant@${device}.service"
58}
6d4eec4c 59
1c6a4e30 60wpa_supplicant_stop() {
22a61046
MT
61 local device=${1}
62 assert isset device
6d4eec4c 63
22a61046
MT
64 service_stop "wpa_supplicant@${device}.service"
65}
66
1c6a4e30 67wpa_supplicant_client() {
22a61046
MT
68 local device=${1}
69 assert isset device
70 shift
6d4eec4c 71
22a61046
MT
72 local cmd="$@"
73 assert isset cmd
74
75 # Run the command and return the output.
76 cmd wpa_cli -p${WPA_SUPPLICANT_SOCKET_DIR} -i${device} ${cmd}
6d4eec4c
MT
77}
78
1c6a4e30 79wpa_cli_status() {
6d4eec4c 80 local device=${1}
22a61046
MT
81 assert isset device
82
83 wpa_supplicant_client ${device} status verbose
84}
6d4eec4c 85
1c6a4e30 86wpa_cli_status_get() {
22a61046 87 local device=${1}
6d4eec4c
MT
88 assert isset device
89
22a61046
MT
90 local arg=${2}
91 assert isset arg
6d4eec4c 92
22a61046
MT
93 local line key
94 while read -r line; do
95 key=$(cli_get_key ${line})
6d4eec4c 96
22a61046
MT
97 if [ "${key}" = "${arg}" ]; then
98 cli_get_val "${line}"
99 return ${EXIT_OK}
100 fi
101 done <<< "$(wpa_cli_status ${device})"
102
103 return ${EXIT_ERROR}
6d4eec4c
MT
104}
105
1c6a4e30 106wpa_cli_bss() {
6d4eec4c 107 local device=${1}
22a61046
MT
108 assert isset device
109
110 local bss=${2}
111 assert isset bss
6d4eec4c 112
22a61046
MT
113 wpa_supplicant_client ${device} bss ${bss}
114}
115
1c6a4e30 116wpa_cli_bss_get() {
22a61046 117 local device=${1}
6d4eec4c
MT
118 assert isset device
119
22a61046
MT
120 local bss=${2}
121 assert isset bss
6d4eec4c 122
22a61046
MT
123 local arg=${3}
124 assert isset arg
6d4eec4c 125
22a61046
MT
126 local line key
127 while read -r line; do
128 key=$(cli_get_key ${line})
129
130 if [ "${key}" = "${arg}" ]; then
131 cli_get_val "${line}"
132 return ${EXIT_OK}
133 fi
134 done <<< "$(wpa_cli_bss ${device} ${bss})"
135
136 return ${EXIT_ERROR}
6d4eec4c
MT
137}
138
1c6a4e30 139wpa_cli_bss_get_frequency() {
6d4eec4c 140 local device=${1}
6d4eec4c
MT
141 assert isset device
142
22a61046
MT
143 local bssid=${2}
144 assert isset bssid
6d4eec4c 145
22a61046
MT
146 wpa_cli_bss_get ${device} ${bssid} freq
147}
6d4eec4c 148
1c6a4e30 149wpa_cli_bss_get_noise() {
22a61046
MT
150 local device=${1}
151 assert isset device
152
153 local bssid=${2}
154 assert isset bssid
155
156 wpa_cli_bss_get ${device} ${bssid} noise
6d4eec4c
MT
157}
158
1c6a4e30 159wpa_cli_bss_get_quality() {
22a61046
MT
160 local device=${1}
161 assert isset device
6d4eec4c 162
22a61046
MT
163 local bssid=${2}
164 assert isset bssid
165
324c09bc
MT
166 local quality=$(wpa_cli_bss_get ${device} ${bssid} qual)
167
168 # Convert to percent
169 print $(( ${quality} * 100 / 70 ))
6d4eec4c
MT
170}
171
1c6a4e30 172wpa_cli_bss_get_flags() {
22a61046
MT
173 local device=${1}
174 assert isset device
175
176 local bssid=${2}
177 assert isset bssid
6d4eec4c 178
22a61046 179 wpa_cli_bss_get ${device} ${bssid} flags
6d4eec4c 180}