#!/bin/sh
# download_oracle_patch.sh
# Script to download Oracle patches from updates.oracle.com  (authentication required)
# Version 1.0 

### Web-Proxy Configuration if neessary (and delete #-charaters)
#export http_proxy=//<Proxy_Server>:<port> 
#export https_proxy=//<Proxy_Server>:<port> 

export LANG=C
trap 'rm -f $COOKIE_FILE; exit 1' 1 2 3 6
echo " "
printf 'Enter complete Download URL: '; read DOWNLOAD_URL
export FILENAME=`echo $DOWNLOAD_URL | rev | cut -d'=' -f 1 | rev`
printf 'Enter Oracle Account Username: '; read SSO_USERNAME
echo -n "Enter Oracle Account Password: "
while IFS= read -p "$prompt" -r -s -n 1 char
do
    if [ "${char}" = $'\0' ] ; then
        break
    fi
    if [ "${char}" = $'\177' ] ; then
        prompt=$'\b \b'; SSO_PASSWORD="${SSO_PASSWORD%?}"
    else
        prompt='*'; SSO_PASSWORD+="$char"
    fi
done
WGET=/usr/bin/wget
LOGDIR=.
LOGFILE=$LOGDIR/download-wgetlog-$(date +%m-%d-%y-%H:%M).log
COOKIE_FILE=$(mktemp -t wget_sh_XXXXXX)>> "$LOGFILE" 2>&1
if [ $? -ne 0 ] || [ -z "$COOKIE_FILE" ]
then
 echo "Temporary cookie file creation failed. See $LOGFILE for more details." |  tee -a "$LOGFILE"
 exit 1
fi
echo "Created temporary cookie file $COOKIE_FILE">> "$LOGFILE"
OUTPUT_DIR=.
 $WGET  --secure-protocol=auto --save-cookies="$COOKIE_FILE" --keep-session-cookies  --http-user "$SSO_USERNAME" --http-password="$SSO_PASSWORD"  "https://updates.oracle.com/Orion/Services/download" -O /dev/null 2>> "$LOGFILE"
if [ $? -ne 0 ]
then
 echo "Authentication failed with the given credentials." | tee -a "$LOGFILE"
 echo "Please check logfile: $LOGFILE for more details."  | tee -a "$LOGFILE"
else
 echo -e "Authentication is successful. \nDownloading file $FILENAME" | tee -a "$LOGFILE"
 $WGET --progress=bar --load-cookies="$COOKIE_FILE" "$DOWNLOAD_URL" -O "$OUTPUT_DIR/$FILENAME" |  tee -a "$LOGFILE"
fi
rm -f "$COOKIE_FILE"
echo "Removed temporary cookie file $COOKIE_FILE">> "$LOGFILE"