#!/bin/sh

# 
# Copyright 1999-2006 University of Chicago
# 
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
# 
# http://www.apache.org/licenses/LICENSE-2.0
# 
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
# 


# This is a simple shell script that acts like 
# the hostname command.  But is returns the FQN
# in all cases.  It also servers to return just the
# domainname

PROGRAM_NAME="$(basename $0)"
PROGRAM_VERSION="18.11"
PACKAGE="globus_common"
VERSION="18.11"
DIRT_TIMESTAMP="1629915172"
DIRT_BRANCH_ID="0"

prefix="${GLOBUS_LOCATION-/cvmfs/dirac.egi.eu/dirac/v8.0.47/Linux-x86_64}"
exec_prefix="${prefix}"
sbindir="${exec_prefix}/sbin"
bindir="${exec_prefix}/bin"
includedir="/cvmfs/dirac.egi.eu/dirac/v8.0.47/Linux-x86_64/include/globus"
datarootdir="${prefix}/share"
datadir="${datarootdir}"
libexecdir="/cvmfs/dirac.egi.eu/dirac/v8.0.47/Linux-x86_64/share/globus"
sysconfdir="${prefix}/etc"
sharedstatedir="${prefix}/com"
localstatedir="${prefix}/var"

PATH=${bindir}:${sbindir}:${PATH}

short_usage="${PROGRAM_NAME} [-help] [-version]"

long_usage()
{
   cat 1>&2 <<EOF

${short_usage}

EOF
  case "${PROGRAM_NAME}" in

    globus-hostname)
      echo "    ${PROGRAM_NAME} returns the system hostname and makes some" 1>&2
      echo "    additional checks to ensure a fully qualified hostname." 1>&2
      ;;

    globus-domainname)
		echo "    ${PROGRAM_NAME} tries to return the system domainname" 1>&2 
		;;
    *)
      echo "Configuration error"  1>&2
      exit 1
      ;;
    esac

cat 1>&2 <<EOF
    Setting the environment variable GLOBUS_HOSTNAME will cause
    ${PROGRAM_NAME} to return a value based on this variable.
    This is useful for specifying the use of certain network interfaces when
    communicating etc.

EOF
}

for arg in "$@"; do
    case "$arg" in
        -version|--version)
            if [ "X${PROGRAM_NAME}" != "X" -a \
                  "X${PROGRAM_VERSION}" != "X" ]; then
                echo "${PROGRAM_NAME}: ${PROGRAM_VERSION}"
            elif [ "X${PACKAGE}" != "X" -a \
                   "X${VERSION}" != "X" ]; then
                echo "${PACKAGE}: ${VERSION}"
            else
                echo "No version information available."
            fi
            exit 0
            ;;
        -versions|--versions)
            __AT=@
            if [ -n "${PACKAGE}" -a -n "${VERSION}" -a \
                 -n "${DIRT_TIMESTAMP}" -a -n "${DIRT_BRANCH_ID}" -a \
                 "X${DIRT_TIMESTAMP}" != "X${__AT}DIRT_TIMESTAMP${__AT}" -a \
                 "X${DIRT_BRANCH_ID}" != "X${__AT}DIRT_BRANCH_ID${__AT}" ];
            then
                echo "${PACKAGE}: ${VERSION} (${DIRT_TIMESTAMP}-${DIRT_BRANCH_ID})"
            else
                echo "No DiRT information available."
            fi
            exit 0;
            ;;
        *)
            echo "ERROR: option $arg : unrecognized option"
            echo "${short_usage}"
            exit 1;
            ;;
    esac
done

_hostname="${GLOBUS_HOSTNAME}"

# If the ENV variable is not set, determine its correct value
if [ -z "${GLOBUS_HOSTNAME}" ] ; then

  # Set the _fullname based upon Globus's hostname command
  if command -v "globus-libc-hostname" > /dev/null; then
    _fullname="$(globus-libc-hostname)"
  fi

  # if failed to set, use the system's hostname command
  if [ -z "${_fullname}" ] && command -v "hostname" > /dev/null; then
    _fullname=`hostname`
  fi

  _basename="${_fullname%%.*}"
 
  if [ "X$_fullname" = "X$_basename" -a ! -z "$GLOBUS_LOCALDOMAIN" ] ; then
    # Its not fully qualified
    _fullname="${_basename}.${GLOBUS_LOCALDOMAIN}"
  fi

  GLOBUS_HOSTNAME="`echo ${_fullname} | tr 'A-Z' 'a-z'`"
fi

if $(echo "$GLOBUS_HOSTNAME" | grep -Eq '^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$'); then
	GLOBUS_DOMAINNAME=""
else
	GLOBUS_DOMAINNAME="`echo $GLOBUS_HOSTNAME | cut -s -d '.' -f '2-'`"
fi

case "${PROGRAM_NAME}" in

  globus-hostname)
    echo $GLOBUS_HOSTNAME
    ;;
  globus-domainname)
    echo $GLOBUS_DOMAINNAME
    ;;

esac