#!/bin/bash
# tr_griduserproxy_send
# Send proxy to the TRANSP Grid computer

# Selects the optional designated proxy 
#  or otherwise the current active proxy
# Renews if proxy time less than seventy two hours
# Sends the proxy

# 2002.10.04 ler 
# 2007.08.13 clf: merge with /u/pshare/PFGS/bin/pfgs_relay

if [ -f /bin/basename ]; then
  pgm=`/bin/basename $0`
else
  pgm='tr_griduserproxy_send'   # mac has this in /usr/bin/basename
fi

V=

if [ -n "$TRANSPGRID_SERVER" ]; then
  srvnam="$TRANSPGRID_SERVER"
else
  srvnam="transpgrid.pppl.gov"
fi

serverid=${TRANSP_GRIDFTP_HOST:-$srvnam}   

TARGET=".globus/griduserproxy.x509"
os=`uname -s`
if [ "$os" == "SunOS" ]; then
   uid=`id -u`
else
   uid=`/usr/bin/id -u`
fi
  
usage="Usage ${pgm} [-V]
    [-help | --help]
    [--runid runid]
    [--serverid serverid]
    [--proxypath proxypath]

Default serverid is ${serverid}
Default proxypath is \$X509_USER_PROXY or /tmp/x509up_u${uid}
Default target is ~/$TARGET -or- ~/.globus/<runid>.x509 
"


while [ $# -gt 0 ] ; do
    case $1 in
    -V)              V="verbose"
                     ;;
    --runid)         shift; runid="$1"
                     TARGET=".globus/${runid}.x509"
                     ;;
    --serverid)      shift; serverid="$1"
                     ;;
    --proxypath)     shift; proxy="$1"
                     ;;
    -help | --help)  echo "$usage" 2>&1
                     exit 1
                     ;;
    -*)              echo "$pgm: Unrecognized switch or option (#1)" 2>&1
                     exit 1
                     ;;
    *)               break
                     ;;
    esac
    shift
done
server=$serverid

# Find proxy
if [ $# -eq 0 -o -z "$proxy" ]; then
  if [ "X$X509_USER_PROXY" != "X" ] ; then
    proxy="$X509_USER_PROXY" 
  else
    proxy="/tmp/x509up_u${uid}"
  fi
fi

if [ ! -f $proxy ]; then
    echo "$pgm: Error finding $proxy\n"  1>&2
    exit 1
fi
if [ -n "$V" ]; then
    echo  "$pgm: proxy = $proxy" 1>&2
fi

# check if valid proxy
tr_ckproxy $proxy
if [ $? != 0 ]; then
   exit 1
fi

# Send proxy
if [ -n "$V" ]; then
  echo "$pgm: Sending proxy
  globus-url-copy -nodcau file://$proxy gsiftp://$serverid/\~/$TARGET"
  1>&2
fi
msg=`globus-url-copy -nodcau file://$proxy gsiftp://$serverid/\~/$TARGET`
if [ $? -ne 0 ]; then
   echo "$pgm: Error sending proxy copy to server.
 Error message was:$msg
 Input file was: $proxy
 Target server was: $server
 Target proxy copy location was: ~/$TARGET" 1>&2
    exit 1
fi
if [ -n "$V" ]; then
   echo "$pgm: Proxy copy sent.
 Input file: $proxy
 Target server; $server
 Target proxy copy location: ~/$TARGET" 1>&2
fi
exit 0

