[2/4] Reconfigure fff-wireless for keyxchangev2

Submitted by Christian Dresel on Aug. 31, 2017, 6:56 p.m.

Details

Message ID 1504205801-1921-2-git-send-email-fff@chrisi01.de
State Superseded
Headers show

Commit Message

Christian Dresel Aug. 31, 2017, 6:56 p.m.
Need more parameters in wifiAddAP to add hidden AP
Need new function wifiAddSta to add a station and download hoodfile

Signed-off-by: Christian Dresel <fff@chrisi01.de>
---
 .../files/etc/uci-defaults/60-fff-wireless         | 43 ---------------------
 .../fff-wireless/files/lib/functions/fff/wireless  | 44 +++++++++++++++++++---
 2 files changed, 39 insertions(+), 48 deletions(-)
 delete mode 100644 src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless

Patch hide | download patch | download mbox

diff --git a/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless b/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
deleted file mode 100644
index 8e207a4..0000000
--- a/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
+++ /dev/null
@@ -1,43 +0,0 @@ 
-#!/bin/sh
-# Copyright 2016 Tim Niemeyer
-# License GPLv3
-
-. /lib/functions/fff/wireless
-
-. /etc/community.cfg
-
-if ! wifiDelAll; then
-	echo "Can't delete current wifi setup"
-	exit 1
-fi
-
-for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
-	if iw phy "$phy" info | grep -q -m1 "2... MHz"; then
-		echo "$phy is 2.4 GHz"
-		radio=$(wifiAddPhy "$phy" "$BATMAN_CHANNEL")
-		if [ -z "$radio" ]; then
-			echo "Can't create radio for $phy"
-			exit 1
-		fi
-	fi
-	if iw phy "$phy" info | grep -q -m1 "5... MHz"; then
-		echo "$phy is 5 GHz"
-		radio=$(wifiAddPhy "$phy" "$BATMAN_CHANNEL_5GHZ")
-		if [ -z "$radio" ]; then
-			echo "Can't create radio for $phy"
-			exit 1
-		fi
-	fi
-
-	if ! wifiAddAP "$radio" "$ESSID_AP"; then
-		echo "Can't add AP interface on $radio."
-		exit 1
-	fi
-
-	if ! wifiAddAdHocMesh "$radio" "$ESSID_MESH" "$BSSID_MESH"; then
-		echo "Can't add AdHocMesh interface on $radio."
-		exit 1
-	fi
-done
-
-# vim: set noexpandtab:tabstop=4
diff --git a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
index 59c8ce2..1d403a0 100644
--- a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
+++ b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
@@ -85,28 +85,32 @@  wifiAddAdHocMesh() {
 }
 
 wifiAddAP() {
-	if [ $# -ne "2" ]
+	if [ $# -ne "5" ]
 	then
-		echo "Usage: wifiAddAP <radio> <essid>"
+		echo "Usage: wifiAddAP <radio> <essid> <network> <iface> <hidden>"
 		return 1
 	fi
 
 	local radio=$1
 	local essid=$2
+	local network=$3
+	local inface=$4
+	local hidden=$5
 
 	local channel=$(uci get "wireless.${radio}.channel")
-	local iface="w2ap"
+	local iface="w2'${inface}'"
 	if [ "$channel" -gt "14" ]; then
-		iface="w5ap"
+		iface="w5'${inface}'"
 	fi
 	uci batch <<-__EOF__
 		set wireless.${iface}='wifi-iface'
 		set wireless.${iface}.device='${radio}'
-		set wireless.${iface}.network='mesh'
+		set wireless.${iface}.network='${network}'
 		set wireless.${iface}.ifname='${iface}'
 		set wireless.${iface}.mode='ap'
 		set wireless.${iface}.ssid='${essid}'
 		set wireless.${iface}.encryption='none'
+		set wireless.${iface}.hidden='${hidden}'
 
 		commit wireless
 	__EOF__
@@ -114,4 +118,34 @@  wifiAddAP() {
 	echo "${iface}"
 }
 
+wifiAddSta() {
+	if [ $# -ne "3" ]
+	then
+		echo "Usage: wifiAddSta <radio> <essid> <network>"
+		return 1
+	fi
+
+	local radio=$1
+	local essid=$2
+	local network=$3
+
+	local channel=$(uci get "wireless.${radio}.channel")
+	local iface="w2Sta"
+	if [ "$channel" -gt "14" ]; then
+		iface="w5Sta"
+	fi
+	uci batch <<-__EOF__
+		set wireless.${iface}='wifi-iface'
+		set wireless.${iface}.device='${radio}'
+		set wireless.${iface}.network='${network}'
+		set wireless.${iface}.ifname='${iface}'
+		set wireless.${iface}.mode='sta'
+		set wireless.${iface}.ssid='${essid}'
+
+		commit wireless
+	__EOF__
+	
+	echo "${iface}"
+}
+
 # vim: set noexpandtab:tabstop=4

Comments

Adrian Schmutzler Sept. 3, 2017, 12:26 p.m.
Hallo,

zwei Kommentare/Fragen inline.

Grüße

Adrian

> -----Original Message-----
> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
> Of Christian Dresel
> Sent: Donnerstag, 31. August 2017 20:57
> To: franken-dev@freifunk.net
> Subject: [PATCH 2/4] Reconfigure fff-wireless for keyxchangev2
> 
> Need more parameters in wifiAddAP to add hidden AP Need new function
> wifiAddSta to add a station and download hoodfile
> 
> Signed-off-by: Christian Dresel <fff@chrisi01.de>
> ---
>  .../files/etc/uci-defaults/60-fff-wireless         | 43
---------------------
>  .../fff-wireless/files/lib/functions/fff/wireless  | 44
> +++++++++++++++++++---
>  2 files changed, 39 insertions(+), 48 deletions(-)  delete mode 100644
> src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
> 
> diff --git
a/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
> b/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
> deleted file mode 100644
> index 8e207a4..0000000
> --- a/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
> +++ /dev/null
> @@ -1,43 +0,0 @@
> -#!/bin/sh
> -# Copyright 2016 Tim Niemeyer
> -# License GPLv3
> -
> -. /lib/functions/fff/wireless
> -
> -. /etc/community.cfg
> -
> -if ! wifiDelAll; then
> -	echo "Can't delete current wifi setup"
> -	exit 1
> -fi
> -
> -for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
> -	if iw phy "$phy" info | grep -q -m1 "2... MHz"; then
> -		echo "$phy is 2.4 GHz"
> -		radio=$(wifiAddPhy "$phy" "$BATMAN_CHANNEL")
> -		if [ -z "$radio" ]; then
> -			echo "Can't create radio for $phy"
> -			exit 1
> -		fi
> -	fi
> -	if iw phy "$phy" info | grep -q -m1 "5... MHz"; then
> -		echo "$phy is 5 GHz"
> -		radio=$(wifiAddPhy "$phy" "$BATMAN_CHANNEL_5GHZ")
> -		if [ -z "$radio" ]; then
> -			echo "Can't create radio for $phy"
> -			exit 1
> -		fi
> -	fi
> -
> -	if ! wifiAddAP "$radio" "$ESSID_AP"; then
> -		echo "Can't add AP interface on $radio."
> -		exit 1
> -	fi
> -
> -	if ! wifiAddAdHocMesh "$radio" "$ESSID_MESH" "$BSSID_MESH";
> then
> -		echo "Can't add AdHocMesh interface on $radio."
> -		exit 1
> -	fi
> -done
> -
> -# vim: set noexpandtab:tabstop=4
> diff --git
a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> index 59c8ce2..1d403a0 100644
> --- a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> +++ b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
> @@ -85,28 +85,32 @@ wifiAddAdHocMesh() {  }
> 
>  wifiAddAP() {
> -	if [ $# -ne "2" ]
> +	if [ $# -ne "5" ]
>  	then
> -		echo "Usage: wifiAddAP <radio> <essid>"
> +		echo "Usage: wifiAddAP <radio> <essid> <network> <iface>
> <hidden>"
>  		return 1
>  	fi
> 
>  	local radio=$1
>  	local essid=$2
> +	local network=$3
> +	local inface=$4
> +	local hidden=$5
> 
>  	local channel=$(uci get "wireless.${radio}.channel")
> -	local iface="w2ap"
> +	local iface="w2'${inface}'"
>  	if [ "$channel" -gt "14" ]; then
> -		iface="w5ap"
> +		iface="w5'${inface}'"
>  	fi
>  	uci batch <<-__EOF__
>  		set wireless.${iface}='wifi-iface'
>  		set wireless.${iface}.device='${radio}'
> -		set wireless.${iface}.network='mesh'
> +		set wireless.${iface}.network='${network}'
>  		set wireless.${iface}.ifname='${iface}'
>  		set wireless.${iface}.mode='ap'
>  		set wireless.${iface}.ssid='${essid}'
>  		set wireless.${iface}.encryption='none'
> +		set wireless.${iface}.hidden='${hidden}'
> 
>  		commit wireless
>  	__EOF__
> @@ -114,4 +118,34 @@ wifiAddAP() {
>  	echo "${iface}"
>  }
> 
> +wifiAddSta() {
> +	if [ $# -ne "3" ]
> +	then
> +		echo "Usage: wifiAddSta <radio> <essid> <network>"
> +		return 1
> +	fi
> +
> +	local radio=$1
> +	local essid=$2
> +	local network=$3
> +
> +	local channel=$(uci get "wireless.${radio}.channel")
> +	local iface="w2Sta"

Ich würde hier das "S" klein schreiben. Erstens wäre es dann konsistent zu
w2mesh etc. und 2. lese ich so immer erst "w25".

> +	if [ "$channel" -gt "14" ]; then
> +		iface="w5Sta"
> +	fi
> +	uci batch <<-__EOF__
> +		set wireless.${iface}='wifi-iface'
> +		set wireless.${iface}.device='${radio}'
> +		set wireless.${iface}.network='${network}'
> +		set wireless.${iface}.ifname='${iface}'
> +		set wireless.${iface}.mode='sta'
> +		set wireless.${iface}.ssid='${essid}'

Warum darf man hier Variablen in einfache Anführungszeichen schreiben?
Normal würde ich sagen, die werden dann nicht ausgewertet...

> +
> +		commit wireless
> +	__EOF__
> +
> +	echo "${iface}"
> +}
> +
>  # vim: set noexpandtab:tabstop=4
> --
> 2.1.4
> 
> --
> franken-dev mailing list
> franken-dev@freifunk.net
> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
Christian Dresel Sept. 4, 2017, 5:30 p.m.
hi

On 03.09.2017 14:26, mail@adrianschmutzler.de wrote:
> Hallo,
> 
> zwei Kommentare/Fragen inline.
> 
> Grüße
> 
> Adrian
> 
>> -----Original Message-----
>> From: franken-dev [mailto:franken-dev-bounces@freifunk.net] On Behalf
>> Of Christian Dresel
>> Sent: Donnerstag, 31. August 2017 20:57
>> To: franken-dev@freifunk.net
>> Subject: [PATCH 2/4] Reconfigure fff-wireless for keyxchangev2
>>
>> Need more parameters in wifiAddAP to add hidden AP Need new function
>> wifiAddSta to add a station and download hoodfile
>>
>> Signed-off-by: Christian Dresel <fff@chrisi01.de>
>> ---
>>  .../files/etc/uci-defaults/60-fff-wireless         | 43
> ---------------------
>>  .../fff-wireless/files/lib/functions/fff/wireless  | 44
>> +++++++++++++++++++---
>>  2 files changed, 39 insertions(+), 48 deletions(-)  delete mode 100644
>> src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
>>
>> diff --git
> a/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
>> b/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
>> deleted file mode 100644
>> index 8e207a4..0000000
>> --- a/src/packages/fff/fff-wireless/files/etc/uci-defaults/60-fff-wireless
>> +++ /dev/null
>> @@ -1,43 +0,0 @@
>> -#!/bin/sh
>> -# Copyright 2016 Tim Niemeyer
>> -# License GPLv3
>> -
>> -. /lib/functions/fff/wireless
>> -
>> -. /etc/community.cfg
>> -
>> -if ! wifiDelAll; then
>> -	echo "Can't delete current wifi setup"
>> -	exit 1
>> -fi
>> -
>> -for phy in $(iw phy | awk '/^Wiphy/{ print $2 }'); do
>> -	if iw phy "$phy" info | grep -q -m1 "2... MHz"; then
>> -		echo "$phy is 2.4 GHz"
>> -		radio=$(wifiAddPhy "$phy" "$BATMAN_CHANNEL")
>> -		if [ -z "$radio" ]; then
>> -			echo "Can't create radio for $phy"
>> -			exit 1
>> -		fi
>> -	fi
>> -	if iw phy "$phy" info | grep -q -m1 "5... MHz"; then
>> -		echo "$phy is 5 GHz"
>> -		radio=$(wifiAddPhy "$phy" "$BATMAN_CHANNEL_5GHZ")
>> -		if [ -z "$radio" ]; then
>> -			echo "Can't create radio for $phy"
>> -			exit 1
>> -		fi
>> -	fi
>> -
>> -	if ! wifiAddAP "$radio" "$ESSID_AP"; then
>> -		echo "Can't add AP interface on $radio."
>> -		exit 1
>> -	fi
>> -
>> -	if ! wifiAddAdHocMesh "$radio" "$ESSID_MESH" "$BSSID_MESH";
>> then
>> -		echo "Can't add AdHocMesh interface on $radio."
>> -		exit 1
>> -	fi
>> -done
>> -
>> -# vim: set noexpandtab:tabstop=4
>> diff --git
> a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
>> b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
>> index 59c8ce2..1d403a0 100644
>> --- a/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
>> +++ b/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless
>> @@ -85,28 +85,32 @@ wifiAddAdHocMesh() {  }
>>
>>  wifiAddAP() {
>> -	if [ $# -ne "2" ]
>> +	if [ $# -ne "5" ]
>>  	then
>> -		echo "Usage: wifiAddAP <radio> <essid>"
>> +		echo "Usage: wifiAddAP <radio> <essid> <network> <iface>
>> <hidden>"
>>  		return 1
>>  	fi
>>
>>  	local radio=$1
>>  	local essid=$2
>> +	local network=$3
>> +	local inface=$4
>> +	local hidden=$5
>>
>>  	local channel=$(uci get "wireless.${radio}.channel")
>> -	local iface="w2ap"
>> +	local iface="w2'${inface}'"
>>  	if [ "$channel" -gt "14" ]; then
>> -		iface="w5ap"
>> +		iface="w5'${inface}'"
>>  	fi
>>  	uci batch <<-__EOF__
>>  		set wireless.${iface}='wifi-iface'
>>  		set wireless.${iface}.device='${radio}'
>> -		set wireless.${iface}.network='mesh'
>> +		set wireless.${iface}.network='${network}'
>>  		set wireless.${iface}.ifname='${iface}'
>>  		set wireless.${iface}.mode='ap'
>>  		set wireless.${iface}.ssid='${essid}'
>>  		set wireless.${iface}.encryption='none'
>> +		set wireless.${iface}.hidden='${hidden}'
>>
>>  		commit wireless
>>  	__EOF__
>> @@ -114,4 +118,34 @@ wifiAddAP() {
>>  	echo "${iface}"
>>  }
>>
>> +wifiAddSta() {
>> +	if [ $# -ne "3" ]
>> +	then
>> +		echo "Usage: wifiAddSta <radio> <essid> <network>"
>> +		return 1
>> +	fi
>> +
>> +	local radio=$1
>> +	local essid=$2
>> +	local network=$3
>> +
>> +	local channel=$(uci get "wireless.${radio}.channel")
>> +	local iface="w2Sta"
> 
> Ich würde hier das "S" klein schreiben. Erstens wäre es dann konsistent zu
> w2mesh etc. und 2. lese ich so immer erst "w25".

ist notiert und änder ich in der nächsten Version.

> 
>> +	if [ "$channel" -gt "14" ]; then
>> +		iface="w5Sta"
>> +	fi
>> +	uci batch <<-__EOF__
>> +		set wireless.${iface}='wifi-iface'
>> +		set wireless.${iface}.device='${radio}'
>> +		set wireless.${iface}.network='${network}'
>> +		set wireless.${iface}.ifname='${iface}'
>> +		set wireless.${iface}.mode='sta'
>> +		set wireless.${iface}.ssid='${essid}'
> 
> Warum darf man hier Variablen in einfache Anführungszeichen schreiben?
> Normal würde ich sagen, die werden dann nicht ausgewertet...

gute Frage, keine Ahnung. Ich hab mir das einfach von hier C&P:

https://github.com/FreifunkFranken/firmware/blob/master/src/packages/fff/fff-wireless/files/lib/functions/fff/wireless

vielleicht kann es ja jemand anders beantworten?

mfg

Christian

> 
>> +
>> +		commit wireless
>> +	__EOF__
>> +
>> +	echo "${iface}"
>> +}
>> +
>>  # vim: set noexpandtab:tabstop=4
>> --
>> 2.1.4
>>
>> --
>> franken-dev mailing list
>> franken-dev@freifunk.net
>> http://lists.freifunk.net/mailman/listinfo/franken-dev-freifunk.net
>
Tim Niemeyer Sept. 8, 2017, 5:38 p.m.
Hi

Am Montag, den 04.09.2017, 19:30 +0200 schrieb Christian Dresel:
> > > +	if [ "$channel" -gt "14" ]; then
> > > +		iface="w5Sta"
> > > +	fi
> > > +	uci batch <<-__EOF__
> > > +		set wireless.${iface}='wifi-iface'
> > > +		set wireless.${iface}.device='${radio}'
> > > +		set wireless.${iface}.network='${network}'
> > > +		set wireless.${iface}.ifname='${iface}'
> > > +		set wireless.${iface}.mode='sta'
> > > +		set wireless.${iface}.ssid='${essid}'
> > 
> > Warum darf man hier Variablen in einfache Anführungszeichen
> > schreiben?
> > Normal würde ich sagen, die werden dann nicht ausgewertet...
> 
> gute Frage, keine Ahnung. Ich hab mir das einfach von hier C&P:
> 
> https://github.com/FreifunkFranken/firmware/blob/master/src/packages/
> fff/fff-wireless/files/lib/functions/fff/wireless
> 
> vielleicht kann es ja jemand anders beantworten?

Hier ist es gut erklärt:
https://stackoverflow.com/questions/27920806/how-to-avoid-heredoc-expanding-variables/27921346#27921346

Tim