slitaz-tools annotate boxes/scp-box @ rev 939

tazbox: fix subox icon when ~/.local/share/applications is absent; fix working with freegeoip; write full list of icons used; all other files: 2015 and insert blank lines.
author Aleksej Bobylev <al.bobylev@gmail.com>
date Fri Apr 17 07:35:02 2015 +0300 (2015-04-17)
parents c79e656b37a5
children bffe37afb546
rev   line source
pankso@759 1 #!/bin/sh
pankso@759 2 #
pankso@759 3 # SCP Box - Small front end to the secure file copy utility.
pankso@759 4 #
al@939 5 # Copyright (C) 2008-2015 SliTaz GNU/Linux - BSD License
pankso@759 6 #
pankso@759 7 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@759 8 #
al@939 9
pankso@759 10 . /lib/libtaz.sh
al@813 11 export TEXTDOMAIN='slitaz-boxes' # i18n
pankso@759 12
pankso@759 13 [ "$file" ] || file="$HOME"
pankso@759 14 [ "$dir" ] || dir="$HOME"
pankso@759 15
al@939 16
pankso@759 17 # Internal variables (we need a space before options).
al@939 18
pankso@759 19 config=$HOME/.config/scpbox
al@813 20 term="terminal -geometry 80x16"
pankso@759 21 scpopts=" -r -P 22"
pankso@759 22
al@939 23
paul@763 24 # Make sure we have config files.
al@939 25
pankso@759 26 if [ ! -d "$config" ] || [ -f "$config/hosts" ]; then
pankso@759 27 mkdir -p $config
pankso@759 28 touch $config/hosts && chmod 0600 $config/hosts
pankso@759 29 fi
pankso@759 30
al@939 31
pankso@759 32 #
pankso@759 33 # Functions
pankso@759 34 #
pankso@759 35
al@939 36
pankso@759 37 # Help and usage
al@939 38
pankso@759 39 usage() {
pankso@759 40 cat << EOT
pankso@759 41
al@813 42 $(_ 'SCP Box - Small front end to the secure file copy utility.')
pankso@759 43
al@813 44 $(boldify "$(_ 'Usage:')")
al@813 45 $(basename $0) [$(_n 'command')|$(_n 'option')]
pankso@759 46
al@813 47 $(boldify "$(_ 'Commands:')")
al@813 48 list-hosts $(_n 'List all known hosts')
pankso@759 49
al@813 50 $(boldify "$(_ 'Options:')")
al@813 51 --file=$(_n '/path/to/file')
al@813 52 --dir=$(_n '/path/to/directory')
al@813 53
al@813 54 $(boldify "$(_ 'Examples:')")
al@813 55 $(basename $0) --file=$(_n '/path/to/file')
pankso@759 56
pankso@759 57 EOT
pankso@759 58 }
pankso@759 59
al@939 60
pankso@759 61 # List last used hosts.
al@939 62
pankso@759 63 list_hosts() {
al@813 64 for h in $(cat $config/hosts); do
pankso@759 65 echo -n "!$h"
pankso@759 66 done
pankso@759 67 }
pankso@759 68
al@939 69
pankso@759 70 # Main GUI box function with pure Yad spec
al@939 71
pankso@759 72 scpbox_main() {
al@939 73 icon='folder-remote'
al@813 74 yad --title="$(_n 'SCP Box')" --window-icon=$icon \
al@813 75 --width=400 \
al@813 76 --image=$icon --image-on-top \
al@813 77 --text="$(_n '<b>Secure copy</b> - Copy files remotely with scp')" \
al@813 78 --form \
al@813 79 --field="$(_n 'User name:')" "$USER" \
al@813 80 --field="$(_n 'Hostname:')" "" \
al@813 81 --field="$(_n 'Known hosts:'):CB" "$(list_hosts)" \
al@813 82 --field="$(_n 'Options:')" "$scpopts" \
al@813 83 --field="$(_n 'Local file:'):FL" "$file" \
al@813 84 --field="$(_n 'Local directory:'):DIR" "$dir" \
al@813 85 --field="$(_n 'Remote path:')" "" \
al@813 86 --button="$(_n 'Download'):2" \
al@813 87 --button="$(_n 'Upload'):0" \
al@813 88 --button="gtk-close:1"
pankso@759 89 }
pankso@759 90
al@939 91
pankso@759 92 # Main function
al@939 93
pankso@759 94 scpbox() {
pankso@759 95 # Store box results
pankso@759 96 main=$(scpbox_main)
pankso@759 97 ret=$?
pankso@759 98 [ "$debug" ] && echo "DEBUG: main=$main"
pankso@759 99
pankso@759 100 user=$(echo $main | cut -d "|" -f 1)
pankso@759 101 hostname=$(echo $main | cut -d "|" -f 2)
pankso@759 102 options=$(echo $main | cut -d "|" -f 4)
pankso@759 103 remote=$(echo $main | cut -d "|" -f 7)
pankso@759 104
pankso@759 105 # Use and store new hostname.
pankso@759 106 if [ "$hostname" ]; then
pankso@759 107 echo "$hostname" >> $config/hosts
pankso@759 108 host="$hostname"
pankso@759 109 else
pankso@759 110 host=$(echo $main | cut -d "|" -f 3)
pankso@759 111 fi
pankso@759 112 if [ "$host" == "(null)" ] || [ ! "$host" ]; then
al@813 113 echo "No host, exit"; exit 0
pankso@759 114 fi
pankso@759 115
pankso@759 116 # Deal with --button values
pankso@759 117 case $ret in
pankso@759 118 0)
pankso@759 119 # Upload: do we have a single file or a directory (skip $HOME)
pankso@759 120 file=$(echo $main | cut -d "|" -f 5)
pankso@759 121 dir=$(echo $main | cut -d "|" -f 6)
pankso@759 122 if [ -f "$file" ]; then
pankso@759 123 local="$file"
pankso@759 124 elif [ "$dir" != "$HOME" ]; then
pankso@759 125 local="$dir"
pankso@759 126 else
al@813 127 echo "No file, exit"; exit 0
pankso@759 128 fi
pankso@759 129 cmd="scp $options $local $user@$host:$remote"
pankso@759 130 [ "$debug" ] && echo "DEBUG: $cmd"
pankso@759 131 $term -e "$cmd" ;;
pankso@759 132 2)
paul@763 133 # Download: we need a remote file.
pankso@759 134 local=$(echo $main | cut -d "|" -f 6)
pankso@759 135 if [ ! "$remote" ]; then
al@813 136 echo "No remote file, exit"; exit 0
pankso@759 137 fi
pankso@759 138 cmd="scp $options $user@$host:$remote $local"
pankso@759 139 [ "$debug" ] && echo "DEBUG: $cmd"
pankso@759 140 $term -e "$cmd" ;;
pankso@759 141 *)
pankso@759 142 exit 0 ;;
pankso@759 143 esac
pankso@759 144 }
pankso@759 145
al@939 146
pankso@759 147 #
pankso@759 148 # Commands
pankso@759 149 #
pankso@759 150
pankso@759 151 case "$1" in
al@813 152 -h|--help) usage ;;
al@813 153 list-hosts) list_hosts ;;
al@813 154 ""|--*) scpbox ;;
al@813 155 *) usage ;;
pankso@759 156 esac
pankso@759 157
pankso@759 158 exit 0