semesterprojekt-bluetooth-p.../scripts-pfc200/auto_conf.sh

321 lines
11 KiB
Bash

#!/bin/bash
eingabecheck(){
if ! [[ "$1" =~ ^[a-zA-Z0-9\/\.\:\-]+$ ]]
then
echo ERROR: at "$2": "$1" has bad characters
exit 1;
fi
case "$3" in
bool)
if [[ "$1" != 'true' && "$1" != 'false' ]];
then
echo ERROR at "$2": "$1" must be true or false
exit 1
fi
;;
cloud)
if [[ "$1" != 'Azure' && "$1" != 'ICloud' ]];
then
echo ERROR at "$2": "$1" is not a supported Cloud
exit 1
fi
;;
port)
if ! [[ "$1" = [0-9]* ]];
then
echo ERROR at "$2": "$1" ist not a valid Port
exit 1
fi
;;
path)
if ! [[ "$1" =~ .?\/.*\/*.+ ]];
then
echo ERROR at "$2": "$1" is not a valid Path
exit 1
fi
;;
pem)
if ! [[ "$1" =~ .*\/.*.pem ]];
then
echo ERROR at "$2": "$1" needs to be a .pem file
exit 1
fi
;;
esac
}
flagarray=("Enabled" "CloudType" "Host" "Port" "ClientId" "User" "Password" "TransportProtocol" "KeepAliveInterval" "CleanSession"
"AuthenticationMethod" "UseTLS" "CaFile" "CertFile" "KeyFile" "ProxyType" "HttpProxyHost" "HttpProxyPort" "HttpProxyUser"
"HttpProxyPassword" "LastWillEnabled" "LastWillTopic" "LastWillPayload" "LastWillQoS" "LastWillRetain" "MessagingProtocol"
"MessageProperty" "Compression" "StandardCommandsEnabled" "SendDeviceInfo" "SendDeviceStatus" "TelemetryStopped" "CacheMode")
length=${#flagarray[@]}
for(( i=0; i < ${length}; i++)); do
counter=$(grep -n -w -m 1 "${flagarray[i]}" /etc/dataagent/dataagent.config | cut -f1 -d:)
counter=$(grep -n -w -m 1 "${flagarray[i]}" /etc/dataagent/dataagent.config | cut -f1 -d:)
erase=1
if [[ $# -gt 0 ]];
then
checkflagarray=$(echo "${flagarray[i]}" | sed "s:.*:\L&:")
checkflagoption=$(echo "$1" | sed "s:-::")
if [[ "$checkflagarray" = "$checkflagoption" ]];
then
erase=0
case "$1" in
-enabled)
shift
eingabecheck "$1" "${flagarray[i]}" bool
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-cloudtype)
shift
eingabecheck "$1" "${flagarray[i]}" cloud
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-host)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-port)
shift
eingabecheck "$1" "${flagarray[i]}" port
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-clientid)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-user)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-password)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-transportprotocol)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-keepaliveinterval)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-cleansession)
shift
eingabecheck "$1" "${flagarray[i]}" bool
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-authenticationmethod)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-usetls)
shift
eingabecheck "$1" "${flagarray[i]}" bool
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-cafile)
shift
eingabecheck "$1" "${flagarray[i]}" path
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
shift
;;
-certfile)
shift
eingabecheck "$1" "${flagarray[i]}" path
eingabecheck "$1" "${flagarray[i]}" pem
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
shift
;;
-keyfile)
shift
eingabecheck "$1" "${flagarray[i]}" path
eingabecheck "$1" "${flagarray[i]}" pem
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
sed -i "$counter s+:\s\".*\"+: \""$(echo "$1" | sed 's:/:\\\\\\/:g')"\"+" /etc/dataagent/dataagent.config
shift
;;
-proxytype)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-httpproxyhost)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-httpproxyport)
shift
eingabecheck "$1" "${flagarray[i]}" port
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-httpproxyuser)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-httpproxypassword)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-lastwillenabled)
shift
eingabecheck "$1" "${flagarray[i]}" bool
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-lastwilltopic)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-lastwillpayload)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-lastwillqos)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-lastwillretain)
shift
eingabecheck "$1" "${flagarray[i]}" bool
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-messagingprotocol)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-messageproperty)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-compression)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-standardcommandsenabled)
shift
eingabecheck "$1" "${flagarray[i]}" bool
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-senddeviceinfo)
shift
eingabecheck "$1" "${flagarray[i]}" bool
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-senddevicestatus)
shift
eingabecheck "$1" "${flagarray[i]}" bool
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-telemetrystopped)
shift
eingabecheck "$1" "${flagarray[i]}" bool
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
-cachemode)
shift
eingabecheck "$1" "${flagarray[i]}"
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \""$1"\"/" /etc/dataagent/dataagent.config
shift
;;
esac
if [[ $i == $length-1 ]] && [[ "$checkflagarray" = "$checkflagoption" ]];
then
echo ERROR : FLAG: "$1" NOT FOUND
exit 1
fi
fi
fi
if [[ $erase = 1 ]];
then
sed -i "$counter s/:\s\".*\"/: \"\"/" /etc/dataagent/dataagent.config
sed -i "$counter s/:\s\".*\"/: \"\"/" /etc/dataagent/dataagent.config
fi
unset flagarray[i]
done