#!/bin/sh

confaddsection()
{
	configfile="$1"
	devnm=$2
	#cat "${configfile}"|grep -v "[ |    |        |\t]*#"|grep -q "[ |    |        |\t]*\[[ |    |        |\t]*${devnm}[ |    |        |\t]*\][ |    |        |\t]*"	
	retstr="$(busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$devnm[ |    |        |\t]*\].*/p" "${configfile}")"
	if [ ! -z "$retstr" ]
	then
		echo -1
		return 0	
	else	
		echo $devnm |awk '
		function confadddefault(devicename) 
		{
			printf "\n[%s]\nBONDSW=%s\nDHCP=%s\nMAC=%s\nIPADDRESS=%s\nNETMASK=%s\nGATEWAY=%s\nDNS1=%s\nMTU=%s\n",
			devicename,"NO","YES","","0.0.0.0","255.255.255.0","","","1500"
		} 
		BEGIN{FS="[\t ]"}{confadddefault($1)}' >> "${configfile}"
		if [ $? -eq 0 ]
		then
			echo 0
			return 0
		else
			echo -1
			return 1
		fi 
	fi

}


confdelsection()
{
	configfile="$1"
	devnm="$2"
	#cat "$1" |grep -q "[ |    |        |\t]*[[ |    |        |\t]*$devnm[ |    |        |\t]*]" 
	retstr="$(busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$devnm[ |    |        |\t]*\].*/p" "${configfile}")"
	if [ -z "$retstr" ]
	then
		echo -1
		return 0	
	else
		#nodeletename="$(busybox sed -n "/\[$devnm\]/,/\[.*\]/{/\[$devnm\]/d;p}" $configfile|grep "\[.*\].*")"
		nodeletename="$(busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$devnm[ |    |        |\t]*\].*/,/[ |    |        |\t]*\[.*\].*/{/[ |    |        |\t]*\[[ |    |        |\t]*$devnm[ |    |        |\t]*\].*/d;p}" $configfile|grep "\[.*\].*")"
		if [ ! -z "$nodeletename" ]
		then
			busybox sed -i  "/[ |    |        |\t]*\[[ |    |        |\t]*$devnm[ |    |        |\t]*\]/i$nodeletename" "$configfile"
		fi
		#busybox sed -i  "/\[$devnm\]/i$nodeletename" $configfile
		busybox sed -i "/[ |    |        |\t]*\[[ |    |        |\t]*${devnm}[ |    |        |\t]*\].*/,/[ |    |        |\t]*\[.*\].*/{
		d
		}"  "${configfile}"
		if [ $? -eq 0 ]
		then
			echo 0
			return 0
		else
			echo -1
			return 1
		fi
	fi
}


confcopysection()
{
	configfile="$1"
	devnm="$2"
	newdevnm="$3"
	tmpfile="/tmp/.network$$"

	retstr="$(busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$newdevnm[ |    |        |\t]*\].*/p" "${configfile}")"
	if [ ! -z "$retstr" ]
	then
		echo 0
		return 0	
	else
		busybox sed  -n "/[ |    |        |\t]*\[[ |    |        |\t]*${devnm}[ |    |        |\t]*\].*/,/[ |    |        |\t]*\[.*\].*/{
		
		/[ |    |        |\t]*\[.*\]/d
		/^$/d
		p
		}"  "${configfile}" > "$tmpfile"
		if [ $? -eq 0 ]
		then
			echo "[$newdevnm]" >> "$1"
			cat "$tmpfile" >> "$1"	
			rm -rf "$tmpfile"
			echo 0
			return 0
		else
			echo -1
			return 1
		fi
	fi

}

confadditem()
{
	if [ "$#" -le 4 ];then
		confdelitem "$1" "$2" "$3"  > /dev/null 2>&1
		if [ $? -ne 0 ]
		then
			echo -1
			return 0
		fi 
		busybox sed -i "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\][ |    |        |\t]*/a$3=$4" $1 
		if [ $? -eq 0 ]
		then
			echo 0
			return 0
		else
			echo -1
			return 1
		fi 
	else	
		confdelitem "$1" "$2" "$3"  > /dev/null 2>&1
		if [ $? -ne 0 ]
		then
			echo -1
			return 0
		fi 
		busybox sed -in "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\][ |    |        |\t]*/,/[ |    |        |\t]*\[.*\][ |    |        |\t]*/{
		/^[ |    |        |\t]*$3[ |    |        |\t]*=.*/a$4=$5
		}p" $1 
		if [ $? -eq 0 ]
		then
			echo 0
			return 0
		else
			echo -1
			return 1
		fi 
	fi
}


confdelitem()
{
	#cat $1|grep -v '[ |    |        |\t]*#'| busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\][ |    |        |\t]*/,/[ |    |        |\t]*\[.*\][ |    |        |\t]*/{
	busybox sed -ni "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\][ |    |        |\t]*/,/[ |    |        |\t]*\[.*\][ |    |        |\t]*/{
	/^[ |    |        |\t]*$3[ |    |        |\t]*=.*/d
	}p" $1 
	if [ $? -eq 0 ]
	then
		echo 0
		return 0
	else
		echo -1
		return 1
	fi 
}


confoper()
{
	tmpfile="/tmp/.sed$$"
	if [ $# -lt 2 ];then
		echo 'Usage:filename <section> [<key>] [<newvalue>]'
		return 1
	fi
	if [ "$3" = "" ];then
		#s/;.*$//
		#busybox sed -n "/\[$2\]/,/\[.*\]/{
		#cat $1|grep '^[^;#]'| busybox sed -n "/\[$2\]/,/\[.*\]/{
		ret="$(cat $1|grep -v '[ |    |        |\t]*#'| busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\][ |    |        |\t]*/,/[ |    |        |\t]*\[.*\][ |    |        |\t]*/{
		/[ |    |        |\t]*\[.*\]/d
		/^*$/d
		p
		}")"
		if [ $? -eq 0 ]
		then
			echo $ret
			return 0
		else
			echo -1
			return 1
		fi 
	elif [ "$4" = "" ];then
		ret="$(cat $1|grep -v '[ |    |        |\t]*#'| busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\][ |    |        |\t]*/,/[ |    |        |\t]*\[.*\][ |    |        |\t]*/{
		/[ |    |        |\t]*\[.*\]/d
		/^*$/d
		s/^[ |    |        |\t]*$3[ |    |        |\t]*=[ |    |        |\t]*\(.*\)[ |    |        |\t]*/\1/p
		}")"
		if [ $? -eq 0 ]
		then
			echo $ret
			return 0
		else
			echo -1
			return 1
		fi 
	else
		if [ "$4" = "#" ];then
			cat $1| busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\][ |    |        |\t]*/,/[ |    |        |\t]*\[.*\][ |    |        |\t]*/{
			s/^[ |    |        |\t]*$3[ |    |        |\t]*=.*/#&/
			}p" $1 > "$tmpfile"
			if [ $? -eq 0 ]
			then
				echo 0
				mv "$tmpfile" $1
				return 0
			else
				echo -1
				rm -rf "$tmpfile"
				return 1
			fi 
				
		elif [ "$4" = "##" ];then
			str="$(busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\]/,/\[.*\]/{/^\[.*\]/d;/^*$/d;s/[ |    |        |\t]*#[ |    |        |\t]*$3[ |    |        |\t]*=[ |    |        |\t]*\(.*\)[ |    |        |\t]*/\1/p}" $1)"	
			busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\]/,/\[.*\]/{
			s/^[ |    |        |\t]*#[ |    |        |\t]*$3[ |    |        |\t]*=.*/$3=$str/
			}p" $1  > /tmp/.sed$$
			if [ $? -eq 0 ]
			then
				echo 0
				mv "$tmpfile" $1
				return 0
			else
				echo -1
				rm -rf "$tmpfile"
				return 1
			fi 
		else
			#check the Keystr,if exist then modified it,or added it
			ret="$(cat $1|grep -v '[ |    |        |\t]*#'| busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\][ |    |        |\t]*/,/[ |    |        |\t]*\[.*\][ |    |        |\t]*/{
			/[ |    |        |\t]*\[.*\]/d
			/^*$/d
			/^[ |    |        |\t]*$3[ |    |        |\t]*=[ |    |        |\t]*\(.*\)[ |    |        |\t]*/p
			}")"
			if [ ! -z "$ret" ];then
				str="$(busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\]/,/\[.*\]/{/^\[.*\]/d;/^*$/d;s/[ |    |        |\t]*#[ |    |        |\t]*$3[ |    |        |\t]*=[ |    |        |\t]*\(.*\)[ |    |        |\t]*/\1/p}" $1)"	
				cat $1|grep -v '[ |    |        |\t]*#'| busybox sed -n "/[ |    |        |\t]*\[[ |    |        |\t]*$2[ |    |        |\t]*\][ |    |        |\t]*/,/[ |    |        |\t]*\[.*\][ |    |        |\t]*/{
				s/^[ |    |        |\t]*$3[ |    |        |\t]*=.*/$3=$4/
				}p" $1 > /tmp/.sed$$
				if [ $? -eq 0 ]
				then
					echo 0
					mv "$tmpfile" $1
					return 0
				else
					echo -1
					rm -rf "$tmpfile"
					return 1
				fi 
			else
				confadditem $1 $2 $3 $4 > /dev/null 2>&1
				if [ $? -eq 0 ]
				then
					echo 0
					return 0
				else
					echo -1
					return 1
				fi 
			fi
	       fi
	fi
}

