mirror of https://github.com/OpenIPC/composer.git
135 lines
4.1 KiB
Bash
Executable File
135 lines
4.1 KiB
Bash
Executable File
#!/bin/sh
|
|
|
|
readconfig() {
|
|
echo "=============------------ Read cofig --------------============"
|
|
rcfg
|
|
echo "================-------- Parse config -------------============"
|
|
ssid=`cat /tmp/config.txt | grep ssid | sed '/^#/d' | sed 's/ \{1,\}/ /g' | cut -d " " -f 2`
|
|
key=`cat /tmp/config.txt | grep ^key | sed '/^#/d' | sed 's/ \{1,\}/ /g' | cut -d: -d " " -f 2`
|
|
###########################
|
|
privkey=`cat /tmp/config.txt | grep PrivateKey | sed '/^#/d' | sed 's/ \{1,\}/ /g' | cut -d: -d " " -f 2`
|
|
addrcam=`cat /tmp/config.txt | grep Address | sed '/^#/d' | sed 's/ \{1,\}/ /g' | cut -d: -d " " -f 2`;addrcam="${addrcam%/*}"
|
|
gateway=`cat /tmp/config.txt | grep Gateway | sed '/^#/d' | sed 's/ \{1,\}/ /g' | cut -d: -d " " -f 2`;gateway="${gateway%<*}"
|
|
pubkey=`cat /tmp/config.txt | grep PublicKey | sed '/^#/d' | sed 's/ \{1,\}/ /g' | cut -d: -d " " -f 2`
|
|
allowips=`cat /tmp/config.txt | grep AllowedIPs | sed '/^#/d' | sed 's/ \{1,\}/ /g' | cut -d: -d " " -f 2`;allowips="${allowips%<*}"
|
|
endpoint=`cat /tmp/config.txt | grep Endpoint | sed '/^#/d' | sed 's/ \{1,\}/ /g' | cut -d: -d " " -f 2`;endpoint="${endpoint%<*}"
|
|
###########################
|
|
dumpconfig=`echo -n "$ssid$key"`
|
|
}
|
|
|
|
setconfig() {
|
|
echo "===========-------------- set wifi config ------------=========="
|
|
if [[ ! -z "$ssid" && ! -z "$key" ]]
|
|
then
|
|
cur=`sed -n '3p' /usr/bin/crCli`
|
|
new="wpa_passphrase $ssid $key >/tmp/wpa_supplicant.conf"
|
|
|
|
if [[ "$cur" == "$new" ]]
|
|
then
|
|
echo "Ok. ssid not replaced"
|
|
else
|
|
echo "Ok. Set new ssid, key"
|
|
sed -i '3d' /usr/bin/crCli
|
|
sed -i "3i \\$new" /usr/bin/crCli
|
|
fi
|
|
fi
|
|
|
|
if [[ ! -z "$privkey" && ! -z "$addrcam" && ! -z "$pubkey" && ! -z "$allowips" && ! -z "$endpoint" ]]
|
|
then
|
|
echo "=======---------- Not Null ------========"
|
|
corr=0
|
|
#########################################################################
|
|
addrcam="address ${addrcam%/*}"
|
|
gateway="gateway ${gateway%/*}"
|
|
privkey="PrivateKey = $privkey"
|
|
pubkey="PublicKey = $pubkey"
|
|
allowips="AllowedIPs = $allowips"
|
|
endpoint="Endpoint = $endpoint"
|
|
eaddrcam=`sed -n '48p' /etc/network/interfaces | sed 's/^ *//'`
|
|
egateway=`sed -n '50p' /etc/network/interfaces | sed 's/^ *//'`
|
|
|
|
eprivkey=`cat /etc/wireguard.conf | grep PrivateKey`
|
|
epubkey=`cat /etc/wireguard.conf | grep PublicKey`
|
|
eallowips=`cat /etc/wireguard.conf | grep AllowedIPs`
|
|
eendpoint=`cat /etc/wireguard.conf | grep Endpoint`
|
|
if [[ ! "$addrcam" == "$eaddrcam" ]]
|
|
then
|
|
sed -i '48d' /etc/network/interfaces
|
|
sed -i "48i \\$addrcam" /etc/network/interfaces
|
|
corr=1
|
|
echo "==========----------- correct addr in interfaces ---------========"
|
|
fi
|
|
|
|
if [[ ! "$gateway" == "$egateway" ]]
|
|
then
|
|
sed -i '50d' /etc/network/interfaces
|
|
sed -i "50i \\$gateway" /etc/network/interfaces
|
|
corr=1
|
|
echo "======------ correct gateway in interfaces -----====="
|
|
fi
|
|
|
|
if [[ ! "$privkey" == "$eprivkey" ]]
|
|
then
|
|
corr=1
|
|
fi
|
|
if [[ ! "$pubkey" == "$epubkey" ]]
|
|
then
|
|
corr=1
|
|
fi
|
|
if [[ ! "$allowips" == "$eallowips" ]]
|
|
then
|
|
corr=1
|
|
fi
|
|
if [[ ! "$endpoint" == "$eendpoint" ]]
|
|
then
|
|
corr=1
|
|
fi
|
|
if [[ $corr == 1 ]]
|
|
then
|
|
echo "===========--------------- Set WG ----------============"
|
|
echo "WG addr:: $addrcam"
|
|
if [[ ! "$addrcam" == "address xxx.xxx.xxx.xxx" ]]
|
|
then sed -i '46s/manual/auto/' /etc/network/interfaces
|
|
else sed -i '46s/auto/manual/' /etc/network/interfaces
|
|
fi
|
|
rm -f /etc/wireguard.conf
|
|
echo "[Interface]" >> /etc/wireguard.conf
|
|
echo "$privkey" >> /etc/wireguard.conf
|
|
echo "[Peer]" >> /etc/wireguard.conf
|
|
echo "$pubkey" >> /etc/wireguard.conf
|
|
echo "$allowips" >> /etc/wireguard.conf
|
|
echo "$endpoint" >> /etc/wireguard.conf
|
|
echo "PersistentKeepalive = 5" >> /etc/wireguard.conf
|
|
rm -f /sdcard/config.hex
|
|
rm -f /sdcard/config.txt
|
|
fi
|
|
fi
|
|
}
|
|
|
|
checkconfig() {
|
|
echo "check config"
|
|
if [ -f /sdcard/config.hex ]
|
|
then
|
|
echo "config exist"
|
|
readconfig
|
|
setconfig
|
|
else
|
|
echo "config not exist"
|
|
fi
|
|
|
|
if [ -f /sdcard/hardres ]
|
|
then
|
|
rm -f /sdcard/hardres
|
|
firstboot
|
|
fi
|
|
}
|
|
|
|
case "$1" in
|
|
start)
|
|
echo "read config on SDcard"
|
|
checkconfig
|
|
echo "set config done"
|
|
# commands to launch application
|
|
;;
|
|
esac
|