guacamole-spice-protocol/bin/guacctl
2013-10-28 09:38:10 -07:00

118 lines
2.9 KiB
Bash
Executable File

#!/bin/sh
#
# ***** BEGIN LICENSE BLOCK *****
# Version: MPL 1.1/GPL 2.0/LGPL 2.1
#
# The contents of this file are subject to the Mozilla Public License Version
# 1.1 (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.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
# for the specific language governing rights and limitations under the
# License.
#
# The Original Code is guacamole-server.
#
# The Initial Developer of the Original Code is
# Michael Jumper.
# Portions created by the Initial Developer are Copyright (C) 2010
# the Initial Developer. All Rights Reserved.
#
# Contributor(s):
#
# Alternatively, the contents of this file may be used under the terms of
# either the GNU General Public License Version 2 or later (the "GPL"), or
# the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
# in which case the provisions of the GPL or the LGPL are applicable instead
# of those above. If you wish to allow use of your version of this file only
# under the terms of either the GPL or the LGPL, and not to allow others to
# use your version of this file under the terms of the MPL, indicate your
# decision by deleting the provisions above and replace them with the notice
# and other provisions required by the GPL or the LGPL. If you do not delete
# the provisions above, a recipient may use your version of this file under
# the terms of any one of the MPL, the GPL or the LGPL.
#
# ***** END LICENSE BLOCK *****
#
# guacctl
#
# Utility for sending Guacamole-specific console codes for controlling the SSH
# session, such as:
#
# * Downloading files
# * Setting the destination directory for uploads
#
fullpath() {
FILENAME="$1"
DIR=`dirname "$FILENAME"`
FILE=`basename "$FILENAME"`
(cd "$DIR" && echo "$PWD/$FILE")
}
send_download_file() {
FILENAME="$1"
printf "\033]482200;%s\007" "$FILENAME"
}
send_set_directory() {
FILENAME="$1"
printf "\033]482201;%s\007" "$FILENAME"
}
error() {
echo "$NAME:" "$@" >&2
}
usage() {
cat >&2 <<END
Usage:
guacctl --download FILENAME
guacctl --set-directory FILENAME
END
}
download_files() {
for FILENAME in "$@"; do
if [ -e "$FILENAME" ]; then
send_download_file `fullpath $FILENAME`
else
error "$FILENAME: File does not exist."
fi
done
}
set_directory() {
FILENAME="$1"
if [ -e "$FILENAME" ]; then
send_set_directory `fullpath "$FILENAME"`
else
error "$FILENAME: File does not exist or is not a directory."
fi
}
NAME=`basename "$0"`
# Parse options
if [ "x$NAME" = "xguacget" ]; then
download_files "$@"
elif [ "x$1" = "x--download" ]; then
shift
download_files "$@"
elif [ "x$1" = "x--set-directory" ]; then
shift
set_directory "$@"
else
usage
exit 1
fi