diff --git a/srv/http/assets/css/common.css b/srv/http/assets/css/common.css
index 8b1913797..9e844cc27 100644
--- a/srv/http/assets/css/common.css
+++ b/srv/http/assets/css/common.css
@@ -10,7 +10,7 @@
@font-face {
font-family : rern;
- src : url( '/assets/fonts/rern.woff2?v=1705839327' );
+ src : url( '/assets/fonts/rern.woff2?v=1705850359' );
}
@font-face {
font-family : Lato;
@@ -32,7 +32,6 @@ i {
}
.i-22 { font-size: 22px !important }
.i-30 { font-size: 30px !important }
-.i-accesspoint::before { content: '\F554' }
.i-add::before { content: '\F519' }
.i-addons::before { content: '\F50D' }
.i-airplay::before { content: '\F580' }
diff --git a/srv/http/assets/js/system.js b/srv/http/assets/js/system.js
index 4c5af285a..376faa8ae 100644
--- a/srv/http/assets/js/system.js
+++ b/srv/http/assets/js/system.js
@@ -306,22 +306,14 @@ $( '#setting-bluetooth' ).on( 'click', function() {
} );
} );
$( '#setting-wlan' ).on( 'click', function() {
- bash( [ 'regdomlist' ], list => {
- info( {
- icon : SW.icon
- , title : SW.title
- , list : [
- [ 'Country', 'select', list ]
- , [ 'Auto start Access Point', 'checkbox' ]
- ]
- , boxwidth : 250
- , values : S.wlanconf || default_v.wlan
- , checkchanged : S.wlan
- , beforeshow : () => selectText2Html( { '00': '00 (allowed worldwide)' } )
- , cancel : switchCancel
- , ok : switchEnable
- } );
- }, 'json' );
+ if ( V.regdomlist ) {
+ infoWlan();
+ } else {
+ bash( [ 'regdomlist' ], list => {
+ V.regdomlist = list;
+ infoWlan();
+ }, 'json' );
+ }
} );
$( '#divi2smodulesw' ).on( 'click', function() {
setTimeout( i2sOptionSet, 0 );
@@ -816,7 +808,7 @@ function infoMirrorList() {
function infoMount( nfs ) {
var nfs = nfs || false;
var shareddata = SW.id === 'shareddata';
- var values = default_v.mountcifs;
+ var values = nfs ? default_v.mountnfs : default_v.mountcifs;
values.IP = S.ipsub;
var tab = nfs ? [ infoMount, '' ] : [ '', () => infoMount( 'nfs' ) ];
if ( shareddata ) tab.push( infoMountRserver );
@@ -1097,6 +1089,23 @@ function infoRestore( reset ) {
} );
$( '#restore' ).prop( 'checked', 0 );
}
+function infoWlan() {
+ var autostart = 'Auto start Access Point
(if not connected)';
+ info( {
+ icon : SW.icon
+ , title : SW.title
+ , list : [
+ [ 'Country', 'select', V.regdomlist ]
+ , [ autostart, 'checkbox' ]
+ ]
+ , boxwidth : 250
+ , values : S.wlanconf || default_v.wlan
+ , checkchanged : S.wlan
+ , beforeshow : () => selectText2Html( { '00': '00 (allowed worldwide)' } )
+ , cancel : switchCancel
+ , ok : switchEnable
+ } );
+}
function renderPage() {
$( '#divsystem .value' ).html( S.system );
$( '#divstatus .value' ).html( S.status + S.warning );
diff --git a/srv/http/bash/settings/networks-data.sh b/srv/http/bash/settings/networks-data.sh
index 3d04c2a17..ee106df56 100644
--- a/srv/http/bash/settings/networks-data.sh
+++ b/srv/http/bash/settings/networks-data.sh
@@ -103,7 +103,7 @@ data='
, "ap" : '$( exists $dirsystem/ap )'
, "apconf" : '$apconf'
, "camilladsp" : '$( exists $dirsystem/camilladsp )'
-, "connectedwl" : '$( netctl list | grep -q -m1 ^* && echo true )'
+, "connectedwl" : '$( [[ $( iwgetid -r $wlandev ) ]] && echo true )'
, "gateway" : "'$gateway'"
, "hostname" : "'$( getContent $dirshm/avahihostname )'"
, "ipeth" : "'$ipeth'"
diff --git a/srv/http/bash/settings/networks.sh b/srv/http/bash/settings/networks.sh
index df8c4d52c..dd789365f 100644
--- a/srv/http/bash/settings/networks.sh
+++ b/srv/http/bash/settings/networks.sh
@@ -8,14 +8,11 @@ netctlSwitch() {
local active connected ssid wlandev
ssid=$1
wlandev=$( < $dirshm/wlan )
- connected=$( iwgetid $wlandev -r )
- # iwctl station $wlandev disconnect
- # iwctl station $wlandev connect "$ssid"
+ connected=$( iwgetid -r $wlandev )
ip link set $wlandev down
netctl switch-to "$ssid"
for i in {1..10}; do
sleep 1
- # if [[ $( iwgetid $wlandev -r ) == $connected ]]; then
if netctl is-active "$ssid" &> /dev/null; then
[[ $connected ]] && netctl disable "$connected"
netctl enable "$ssid"
@@ -27,7 +24,6 @@ netctlSwitch() {
$dirsettings/networks-data.sh pushwl
else
echo -1
- # [[ $connected ]] && iwctl station $wlandev connect "$connected"
[[ $connected ]] && netctl switch-to "$connected"
fi
}
@@ -102,15 +98,44 @@ Hidden=yes'
else
pushRefresh
fi
+
+# wlandev=$( < $dirshm/wlan )
+# iwctl station wlan0 scan "$SSID"
+# [[ $HIDDEN ]] && connect=connect-hidden || connect=connect
+# if [[ $ADDRESS ]]; then # static
+# file="/var/lib/iwd/$SSID."
+# if [[ $KEY ]]; then
+# file+=psk
+# data='[Security]
+#Passphrase="'$KEY'"'
+# else
+# file+=open
+# fi
+# data+="\
+#[IPv4]
+#Address=$ADRESS
+#Gateway=$GATEWAY
+#" > "$file"
+# iwctl station $wlandev $connect "$SSID"
+# elif [[ $KEY ]]; then
+# iwctl station $wlandev $connect "$SSID" --passphrase $KEY
+# else # open
+# iwctl station $wlandev $connect "$SSID"
+# fi
+# avahi-daemon --kill # flush cache and restart
+# pushRefresh
;;
disconnect )
wlandev=$( < $dirshm/wlan )
- connected=$( iwgetid $wlandev -r )
+ connected=$( iwgetid -r $wlandev )
netctl stop "$connected"
netctl disable "$connected"
systemctl stop wpa_supplicant
ip link set $wlandev up
$dirsettings/networks-data.sh pushwl
+
+# iwctl station $wlandev disconnect
+# $dirsettings/networks-data.sh pushwl
;;
lanedit )
if [[ $IP ]]; then
@@ -144,9 +169,24 @@ profileconnect )
sleep 2
fi
netctlSwitch "$SSID"
+
+# wlandev=$( < $dirshm/wlan )
+# [[ -e $dirsystem/ap ]] && rm -f $dirsystem/{ap,ap.conf} && systemctl restart iwd
+# file=$( ls "/var/lib/iwd/$SSID".* )
+# grep -q ^Hidden "$file" && connect=connect-hidden || connect=connect
+# iwctl station $wlandev $connect "$SSID"
;;
profileget )
conf2json "/etc/netctl/$SSID"
+
+# file=$( ls "/var/lib/iwd/$SSID".* )
+# . <( grep -E '^Add|^Hid|^Pas' "$file" )
+# echo '{
+# "Address" : "'$Address'"
+# , "Hidden" : "'$Hidden'"
+# , "type" : "'${file/*.}'"
+# , "Passphrase" : "'$Passphrase'"
+#}'
;;
profileremove )
netctl is-enabled "$SSID" && netctl disable "$SSID"
@@ -158,6 +198,9 @@ profileremove )
fi
rm "/etc/netctl/$SSID"
$dirsettings/networks-data.sh pushwl
+
+# iwctl known-networks "$SSID" forget
+# $dirsettings/networks-data.sh pushwl
;;
scankill )
killProcess networksscan
diff --git a/srv/http/bash/startup.sh b/srv/http/bash/startup.sh
index 29da4303d..5dd5f4d82 100644
--- a/srv/http/bash/startup.sh
+++ b/srv/http/bash/startup.sh
@@ -80,17 +80,10 @@ echo mpd > $dirshm/player
lsmod | grep -q -m1 brcmfmac && touch $dirshm/onboardwlan # initial status
-# wait for lan connection
-connectedCheck 5
-# if lan not connected and enabled wifi profile available, wait for wi-fi connection
-if [[ ! $ipaddress && $wlandev ]]; then
- readarray -t netctllist <<< $( netctl list | sed -E 's/^. //' )
- if [[ $netctllist ]]; then
- for profile in "${netctllist[@]}"; do
- [[ $( netctl is-enabled "$profile" ) == enabled ]] && enabledprofile=1 && break
- done
- [[ $enabledprofile ]] && connectedCheck 30
- fi
+# wait for connection
+connectedCheck 5 # lan
+if [[ ! $ipaddress && $wlandev ]]; then # if lan not connected and wlan exists
+ ls -d /etc/systemd/system/netctl* &> /dev/null && connectedCheck 30 # wlan
fi
[[ -e $dirsystem/ap ]] && ap=1
@@ -121,8 +114,9 @@ if [[ $ipaddress ]]; then
avahi-resolve -a4 $ipaddress | awk '{print $NF}' > $dirshm/avahihostname
$dirsettings/addons-data.sh &> /dev/null &
else
+ [[ -e $filebootwifi ]] && mv /boot/wifi{,X}
if [[ $wlandev && ! $ap ]]; then
- if [[ $netctllist ]]; then
+ if [[ $( netctl list ) ]]; then
[[ ! -e $dirsystem/wlannoap ]] && ap=1
else
ap=1
@@ -175,15 +169,11 @@ elif [[ -e $dirmpd/updating ]]; then
elif [[ -e $dirmpd/listing ]]; then
$dirbash/cmd-list.sh &> /dev/null &
fi
-# if no wlan // usb wlan // no access point and no connected wlan, disable wlan
+# usb wlan || no wlan || not ap + not connected
if (( $( rfkill | grep -c wlan ) > 1 )) \
|| ! rfkill | grep -q wlan \
- || ( [[ ! -e $dirsystem/ap ]] && ! netctl list | grep -q -m1 ^* ); then
- rmmod brcmfmac_wcc &> /dev/null
- rmmod brcmfmac &> /dev/null
- onboardwlan=false
-else
- onboardwlan=true
+ || [[ ! -e $dirsystem/ap && ! $( iwgetid -r $wlandev ) ]]; then
+ rmmod brcmfmac_wcc brcmfmac &> /dev/null
fi
if [[ $restorefailed ]]; then