#!/bin/bash
#
# Guralp Configuration System
#   Copyright (c) 2009-2010 Guralp Systems Ltd. All rights reserved.
#
#   SEEDlink server configuration

# Handle the navbar query without loading anything
if [ "X$1" == "X--navbar" ]
then
	echo "servicestop	Services"
	echo "servicessub/seedlink-out	seedlink-out"
	echo "seedlink-out/$3	$3"
	exit 0
fi

# Load support functions
script_dir=$(dirname $0)
. $script_dir/functions.sh
. $script_dir/svc_funcs.sh
. $script_dir/gdi2miniseed_link.sh


name="$2"
sel="$3"

CFGFILE="$CONFIGDIR/$name/${sel}.local"
CTLFILE="$CONFIGDIR/$name/${sel}.ctl.local"
SRVBASE="$SERVDIR/$name"


do_read() {
    local i entry line reject

    # Standard control info
    gcs_svc_read || return 1

    # Now the service type dependant variables

    gcs_var "d_bind_host"	""
    gcs_var "d_bind_service"	"seedlink"
    gcs_var "d_organization"	""

    if [ -r "$CFGFILE" ]
    then
	gcs_var_o "bind_host"
	gcs_var_o "bind_service"
	gcs_var_o "organization"

	gcs_gdi2miniseed_iselect "$(gcs_get_varcf "miniseedout_dbdir" "${CFGFILE}")"
    else
	gcs_gdi2miniseed_iselect ""
    fi
}



do_check() {
    gcs_read_vars

    # Standard service control/info vars
    gcs_svc_check

    # Service dependant variables
    gcs_gdi2miniseed_dereference
    if [ "$miniseed_record_size" != "512" ]
    then
        gcs_err "msg" "MiniSEED record size must be 512 bytes; change gdi2miniseed configuration."
    fi
}



do_write() {
    local i line entry reject

    do_check
    if (( gcs_errors > 0 ))
    then
        return
    fi

    if gcs_truefalse "${new_delete:-false}"
    then
        gcs_svc_delete "$name" "$sel"
    fi

    # Standard service controls
    gcs_ensure_cfgfile_exists $CTLFILE
    gcs_set_varf DESC $CTLFILE "$desc"

    # Now the service type dependant variables
    gcs_ensure_cfgfile_exists "$CFGFILE"

    # Do the simple keywords in place
    gcs_set_varcf "application_description" "${CFGFILE}" "${new_desc}"
    gcs_set_varcf "bind_host"               "${CFGFILE}" "${new_bind_host}"
    gcs_set_varcf "bind_service"            "${CFGFILE}" "${new_bind_service}"
    gcs_set_varcf "organization"            "${CFGFILE}" "${new_organization}"
    gcs_set_varcf "miniseedout_dbdir"       "${CFGFILE}" "${new_miniseedout_dbdir}"

    # Update the service script
    gcs_update_svc "$name" "$sel" "$enable" "$desc" "$CFGFILE" "$CTLFILE" \
            "$SRVBASE"
    
    gcs_svc_reload "$name" "$sel"
}



case "X$1" in
X--check) do_check  ;;
X--write) do_write  ;;
X--read)  do_read   ;;
*)        exit 1    ;;
esac

gcs_cleanup
exit 0

# vim: ts=4:sw=4:expandtab
