115 lines
3.5 KiB
Bash
Executable File
115 lines
3.5 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright (c) Authors: https://www.armbian.com/authors
|
|
#
|
|
# This file is licensed under the terms of the GNU General Public
|
|
# License version 2. This program is licensed "as is" without any
|
|
# warranty of any kind, whether express or implied.
|
|
|
|
# Function calculates number of bit in a netmask
|
|
#
|
|
mask2cidr() {
|
|
nbits=0
|
|
IFS=.
|
|
for dec in $1 ; do
|
|
case $dec in
|
|
255) let nbits+=8;;
|
|
254) let nbits+=7;;
|
|
252) let nbits+=6;;
|
|
248) let nbits+=5;;
|
|
240) let nbits+=4;;
|
|
224) let nbits+=3;;
|
|
192) let nbits+=2;;
|
|
128) let nbits+=1;;
|
|
0);;
|
|
*) echo "Error: $dec is not recognised"; exit 1
|
|
esac
|
|
done
|
|
echo "$nbits"
|
|
}
|
|
|
|
do_firstrun_automated_user_configuration()
|
|
{
|
|
#-----------------------------------------------------------------------------
|
|
#Notes:
|
|
# - See /boot/armbian_first_run.txt for full list of available variables
|
|
# - Variable names here must here must match ones in packages/bsp/armbian_first_run.txt.template
|
|
|
|
#-----------------------------------------------------------------------------
|
|
#Config FP
|
|
local fp_config='/boot/armbian_first_run.txt'
|
|
|
|
#-----------------------------------------------------------------------------
|
|
#Grab user requested settings
|
|
if [[ -f $fp_config ]]; then
|
|
|
|
# Convert line endings to Unix from Dos
|
|
sed -i $'s/\r$//' "$fp_config"
|
|
|
|
# check syntax
|
|
bash -n "$fp_config" || return
|
|
|
|
# Load vars directly from file
|
|
source "$fp_config"
|
|
|
|
# Obtain backward configuration compatibility
|
|
FR_net_static_dns=${FR_net_static_dns// /,}
|
|
FR_net_static_mask=$(mask2cidr $FR_net_static_mask)
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# - Remove configuration file
|
|
if [[ $FR_general_delete_this_file_after_completion == 1 ]]; then
|
|
dd if=/dev/urandom of="$fp_config" bs=16K count=1
|
|
sync
|
|
rm "$fp_config"
|
|
else
|
|
mv "$fp_config" "${fp_config}.old"
|
|
fi
|
|
|
|
#-----------------------------------------------------------------------------
|
|
# Set Network
|
|
if [[ $FR_net_change_defaults == 1 ]]; then
|
|
# - Get name of 1st available ethernet and wifi adapter
|
|
eth_index="$(nmcli d | grep ethernet | cut -d ' ' -f 1 | head -n 1)"
|
|
wlan_index="$(nmcli d | grep wifi | cut -d ' ' -f 1 | head -n 1)"
|
|
|
|
# for static IP we only append settings
|
|
if [[ $FR_net_use_static == 1 ]]; then
|
|
local FIXED_IP_SETTINGS="ipv4.method manual ipv4.address ${FR_net_static_ip}/${FR_net_static_mask} ipv4.dns ${FR_net_static_dns} ipv4.gateway ${FR_net_static_gateway}"
|
|
fi
|
|
|
|
if [[ -n $eth_index || -n $wlan_index ]]; then
|
|
# delete all current connections
|
|
LC_ALL=C nmcli -t -f UUID,DEVICE connection show | awk '{print $1}' | cut -f1 -d":" | xargs nmcli connection delete
|
|
|
|
# - Wifi enable
|
|
if [[ $FR_net_wifi_enabled == 1 ]]; then
|
|
|
|
#Set wifi country code
|
|
iw reg set "$FR_net_wifi_countrycode"
|
|
|
|
nmcli con add con-name "Armbian wireless" type wifi ifname ${wlan_index} ssid "$FR_net_wifi_ssid" -- wifi-sec.key-mgmt wpa-psk wifi-sec.psk "$FR_net_wifi_key" ${FIXED_IP_SETTINGS}
|
|
nmcli con up "Armbian wireless"
|
|
|
|
#Enable Wlan, disable Eth
|
|
FR_net_ethernet_enabled=0
|
|
|
|
# - Ethernet enable
|
|
elif [[ $FR_net_ethernet_enabled == 1 ]]; then
|
|
|
|
nmcli con add con-name "Armbian ethernet" type ethernet ifname ${eth_index} -- ${FIXED_IP_SETTINGS}
|
|
nmcli con up "Armbian ethernet"
|
|
|
|
#Enable Eth, disable Wlan
|
|
FR_net_wifi_enabled=0
|
|
|
|
fi
|
|
fi
|
|
fi
|
|
fi
|
|
} #do_firstrun_automated_user_configuration
|
|
|
|
do_firstrun_automated_user_configuration
|
|
|
|
exit 0
|