#!/bin/bash
# VERSION=6
# CHANGES="small fixes"

PREFIX="[beroAvahi_update]"

BEROAVAHI_SERVICES=/var/run/beroAvahi/publish/services

## functions ##

function add_service {

	add_line="${2}:${3};${4};"
	if [ ! -z ${5} ]; then
		add_line="${add_line}${5}"
	fi

	tmp=$(grep ${2} ${1})
	if [ -z ${tmp} ]; then
		echo "${add_line}" >> ${1}
	fi

	chmod 0666 ${1}
}

function rem_service {

	if [ ! -f ${1} ]; then
		return
	fi

	# remove service entry
	cp ${1} ${1}.cpy
	rem_line="s/${2}:.*//g"
	sed ${rem_line} ${1}.cpy > ${1}
	rm -f ${1}.cpy

	# remove double newlines
	cp ${1} ${1}.cpy
	sed '/^$/d' ${1}.cpy > ${1}
	rm -f ${1}.cpy

	chmod 0666 ${1}
}

function chk_params {

	if [ -z ${1} ] || [ -z ${2} ] || [ -z ${3} ]; then
		echo "${PREFIX} parameters incomplete, leaving."
		exit 1
	fi
}


## main ##

action=${1}

service_name=${2}
service_type=${3}
service_port=${4}
service_data=${5}

case "${action}" in
	add)
		chk_params ${service_name} ${service_type} ${service_port}

		echo -n "${PREFIX} Adding Service ${service_name}: "
		add_service ${BEROAVAHI_SERVICES} ${service_name} ${service_type} ${service_port} ${service_data}
		echo "Done."
		;;
	rem)
		chk_params ${service_name} "a" "b"

		echo -n "${PREFIX} Removing Service ${service_name}: "
		rem_service ${BEROAVAHI_SERVICES} ${service_name}
		echo "Done."
		;;
	upd)
		chk_params ${service_name} ${service_type} ${service_port}

		echo -n "${PREFIX} Updating Service ${service_name}: "
		rem_service ${BEROAVAHI_SERVICES} ${service_name}
		add_service ${BEROAVAHI_SERVICES} ${service_name} ${service_type} ${service_port} ${service_data}
		echo "Done."
		;;
	*)
		echo "Usage: ${0} <action> <service_name> <service_type> <service_port> <service_data>" >&2
		exit 1
		;;
esac

exit 0
