aboutsummaryrefslogtreecommitdiffstats
path: root/src/extras/rh-upload
diff options
context:
space:
mode:
Diffstat (limited to 'src/extras/rh-upload')
-rwxr-xr-xsrc/extras/rh-upload283
1 files changed, 0 insertions, 283 deletions
diff --git a/src/extras/rh-upload b/src/extras/rh-upload
deleted file mode 100755
index 75a86f43..00000000
--- a/src/extras/rh-upload
+++ /dev/null
@@ -1,283 +0,0 @@
-#!/bin/bash
-
-#################################################################################
-# #
-# rh-upload #
-# Version - 0.3 #
-# Copyright (c) 2007 Red Hat, Inc. All rights reserved. #
-# #
-# #
-# Written by David Mair #
-# Cleanup and generalized for any kind of file by Olivier Arsac #
-# Idea stolen from Chris Snook :-) #
-# #
-# Purpose - To help in the automatic upload of files. #
-# Specifically, this script will compress, encrypt, md5sum, #
-# and upload the file automatically when invoked. #
-# Items are optional and specified by command line switch. #
-# ###############################################################################
-
-
-## Global directives
-umask 0077
-
-## Declare some variables
-Date=`/bin/date -u +%G%m%d%k%M%S | /usr/bin/tr -d ' '`
-Destination="dropbox.redhat.com"
-
-function usage {
-cat <<EOF
-rh-upload [-cehnNq] [-s size of hunks in MB] -f filename
- rh-upload automates the upload of files to the Red Hat ftp.
- The script helps the user to compress, checksum, encrypt and upload a file.
- -c|--checksum : perform an md5 checksum on the file
- -e|--encrypt : encrypt the file
- -f|--file : file to act on (required)
- -h|--help : show this usage help
- -z|--compress : compress the file
- -n|--noupload : Do NOT upload
- -q|--quiet : Do everything I ask and do it quietly
- -s|--split : split file into small hunks
-
-EOF
-}
-
-
-# echo to stderr
-function echoe(){
- echo -e "$@" 1>&2
-}
-
-# echo unless in verbosity is too low
-function echov(){
- local level="$1"
- shift
- if [[ $Verbose -ge "$level" ]]; then echo -e "$@"; fi
-}
-
-# Parse command line options (and perform some checks)
-function parse(){
- if [ $# == 0 ]; then
- usage
- exit 0
- fi
-
- TEMP=`getopt -o heuczqs:f:n --long help,encrypt,quiet,noupload,checksum,compress,split:,file: -n 'rh-upload' -- "$@"`
-
- if [ $? != 0 ]; then
- echo "Options error -- Terminating..." >&2
- usage
- exit 1
- fi
-
- eval set -- "$TEMP"
- Upload=1
- Split=0
- Verbose=1
- Compress=0
- Encrypt=0
- Force=0
- while true; do
- case "$1" in
- -h|--help) usage; exit 0;;
- -e|--encrypt) Encrypt=1; shift;;
- -N|--noupload) Upload=0; shift;;
- -c|--checksum) Checksum=1; shift;;
- -q|--quiet) Verbose=0; shift;;
- -z|--compress) Compress=1; shift;;
- -s|--split)
- case $2 in
- "") echoe "You must specify a hunk size."; exit 1 ;;
- *) Split=$2; shift 2;;
- esac ;;
- -F|--force) Force=1; shift;;
- -f|--file)
- case "$2" in
- "") echoe "You must specify a file name."; exit 1 ;;
- *) File=$2; shift 2;;
- esac ;;
- --) shift; break ;;
- *) echoe "Wrong options or flag specified"; usage; exit 1;;
- esac
- done
-
- # Ensure the -f||--file flag was passed or die
- if [ -z "$File" ]; then
- echoe "The -f or --file flag is required! Terminating."
- usage
- exit 1
- fi
-
- # Validate the file exists or die
- if [ ! -f "$File" ]; then
- echoe "Invalid filename or file not found. Terminating."
- exit 1
- fi
- File_dirname=${File%/*}
- File_basename=${File##*/}
- File_ext=${File_basename##*.}
- Src_file="$File"
- Dst_file="$File_basename"
-}
-
-function ticket(){
- echov 1
- echov 1 "We'll need to use your issue-tracker ticket number for a couple of things."
- echo -n "Please enter ticket number: "
- read Ticket_number
- Dst_file="${Ticket_number}-${Date}-${File_basename}"
-}
-
-# Compress the file
-function compress(){
- if [ "$Compress" != 0 ]; then
- echov 1 "Starting file compression. This may take some time."
- # Begin compression of file
- if [ ! -x /usr/bin/gzip ]; then
- echoe "Cannot find gzip in /usr/bin/. Terminating."
- exit 1
- else
- /usr/bin/gzip --fast "$Src_file"
- fi
- Src_file="${Src_file}.gz"
- Dst_file="${Dst_file}.gz"
- fi
-}
-
-# Encrypt the file
-function encrypt(){
- if [ "$Encrypt" != 0 ]; then
- echov 1 "Encrypting file. This should only take a few minutes."
- if [ ! -x /usr/bin/openssl ]; then
- echoe "Cannot find openssl in /usr/bin. Terminating."
- exit 1
- fi
- # Use the ticket number as the ssl keyfile name
- Key_file="${Ticket_number}-${Date}.key"
- /usr/bin/openssl rand -out "$Key_file" -base64 48
- echov 1 "You have chosen to encrypt your file. Your passkey file is: $Key_file"
- echov 1 "Please attach this key to your ticket."
- /usr/bin/openssl aes-128-cbc -in $Src_file -out $Src_file.aes -pass file:"$Key_file"
- Src_file="$Src_file.aes"
- Dst_file="$Dst_file.aes"
- fi
-}
-
-function checksum(){
- if [ "$Checksum" != 0 ]; then
- echov 1 "Cheksuming $Src_file... (This should only take a few minutes)"
- if [ ! -x /usr/bin/md5sum ]; then
- echoe "Cannot find md5sum in /usr/bin. Terminating."
- exit 1
- fi
- MD5_file="${Ticket_number}-${Date}-checksum.out"
- MD5_result=`/usr/bin/md5sum "$Src_file" | awk '{print $1}'`
- echo "$MD5_result" > "$MD5_file"
- echov 1 "The MD5 checksum is $MD5_result (in $MD5_file)."
- fi
-}
-
-function split(){
- if [ "$Split" -eq 0 ]; then
- return
- fi
- local hunk_size="$Split"
- if [[ "$hunk_size" -gt 0 ]] && [[ "$hunk_size" -lt 1001 ]]; then
- if [ ! -x /usr/bin/split ]; then
- echoe "Cannot find split in /usr/bin. Terminating."
- exit 1
- fi
- Split_dir="${Ticket_number}-${Date}"
- # We need to make a directory to keep things sane
- echov 1 "Creating directory $Split_dir to house file hunks..."
- /bin/mkdir "$Split_dir"
- echov 1 "Splitting $Src_file..."
- /usr/bin/split -b "$hunk_size"m -d "$Src_file" "${Split_dir}/${Dst_file}"
- else
- echoe "Invalid hunk size argument. Please enter a number greater than 0 and less than 1001. Terminating."
- exit 1
- fi
-}
-
-function upload(){
- if [ "$Upload" -eq 0 ]; then
- echov 1 "All file operations are complete. The file(s) is ready to upload at your convenience."
- return
- fi
- echov 1 "The file(s) will now be uploaded."
- echo -n "Please enter the destination host (default is $Destination): "
- local destination_input
- read destination_input
- if [ "$destination_input" != "" ]; then
- Destination=$destination_input
- fi
- echov 1
- echov 1 "Uploading to $Destination... (This could take quite a while)."
- if [ ! -x /usr/bin/lftp ]; then
- # No lftp installed
- echov 1 "lftp could not be found in /usr/bin. The file(s) will need to be uploaded manually."
- Ftp_res=255
- else
- # Make the lftp script first
- local script="/tmp/rh-upload-lftp.$$"
- echo "lftp $Destination <<EOF" > $script
- echo "cd incoming" >> $script
- if [ "$Split" != 0 ]; then
- echo "lcd $Split_dir" >> $script
- echo "mirror -R" >> $script
- else
- echo "put $Src_file -o $Dst_file" >> $script
- fi
- echo "exit" >> $script
- echo "EOF" >> $script
- /usr/bin/lftp -f $script
- Ftp_res=$?
- fi
-}
-
-function closure(){
- if [ "$Encrypt" != 0 ]; then
- echov 1 "## File was encrypted with key $Key_file."
- echov 1 "Please upload this key file to Issue Tracker or send it to your support representative for decryption after upload."
- fi
-
- if [ "$Checksum" != 0 ]; then
- echov 1 "## A checksum was performed on your file."
- echov 1 "The MD5 checksum is $MD5_result (in $MD5_file)."
- echov 1 "Please include this when updating your ticket so your support representative can verify the copy uploaded."
- fi
-
- if [ "$Split" != 0 ]; then
- echov 1 "## Your file was split and the hunks are in: $Split_dir/ "
- fi
-
- if [ -n "$Ftp_res" ] && [ "$Ftp_res" -eq 0 ]; then
- echov 1 "This script has completed successfully the upload."
- if [ "$Compress" != 0 ] || [ "$Split" != 0 ]; then
- echov 1 "You performed file encryption and/or file splitting."
- echov 1 "You may consider removing those temporary files."
- fi
- else
- echoe "Sorry unable to upload the files to $Destination. You may want to retry or do it manually."
- fi
-
- if [ "$Compress" != 0 ]; then
- echov 1 "It is NOT recommended to remove the gzipped copy of the file."
- echov 1 "This is the only remaining copy of the file on your system."
- echov 1 "It is recommended to retain the file until your support representative indicates that the problem has been identified and/or resolved."
- fi
-}
-
-function main(){
- # Run through the functions
- parse $@
- ticket
- compress
- encrypt
- checksum
- split
- upload
- closure
-}
-
-main $@