#!/bin/bash
#
# Guralp Configuration System
#   Copyright (c) 2008-2010 Guralp Systems Ltd. All rights reserved.
#
#   gdi-base data multiplexor config

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

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

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

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


do_read() {
    # Standard control info
    gcs_svc_read || return 1

    # Now the service type dependant variables

    if [ "$sel" = "default" ]
    then
        default_metadir="/etc/gdi-base/metadata.local"
    else
        default_metadir="/etc/gdi-base/metadata.$sel"
    fi

    # Convert the config file into variable decls
    gcs_var "d_sink_socket_path"            "/var/run/gdi-base.$sel.sink"
    gcs_var "d_source_socket_path"          "/var/run/gdi-base.$sel.source"
    gcs_var "d_metadata_directory"          "${default_metadir}"

    if [ -r "$CFGFILE" ]
    then
        gcs_var_o "sink_socket_path"
        gcs_var_o "source_socket_path"
        gcs_var_o "metadata_directory"
    fi
}


do_check() {
    gcs_read_vars
    
    # Standard service control/info vars
    gcs_svc_check
}


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

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

    # Create the required directories
    gcs_ensure_cfgfile_exists "${CFGFILE}"

    # Standard service controls
    gcs_set_varf DESC "${CTLFILE}" "$desc"

    # Service specifics
    gcs_set_varcf   "sink_socket_path"          "${CFGFILE}"    "${new_sink_socket_path}"
    gcs_set_varcf   "sink_socket_mode"          "${CFGFILE}"    "0666"
    gcs_set_varcf   "source_socket_path"        "${CFGFILE}"    "${new_source_socket_path}"
    gcs_set_varcf   "source_socket_mode"        "${CFGFILE}"    "0660"
    gcs_set_varcf   "source_socket_group"       "${CFGFILE}"    "data"
    gcs_set_varcf   "metadata_directory"        "${CFGFILE}"    "${new_metadata_directory}"
    gcs_set_varcf   "metadata_directory_mode"   "${CFGFILE}"    "02775"
    gcs_set_varcf   "metadata_directory_group"  "${CFGFILE}"    "conf"
    gcs_set_varcf   "application_description"   "${CFGFILE}"    "${desc}"

    # 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
