ssfs annotate ssfs @ rev 77

Small update to POT file
author Christophe Lincoln <pankso@slitaz.org>
date Mon Jun 13 23:23:07 2011 +0200 (2011-06-13)
parents 00d35dfe62e4
children 4937afb8ea05
rev   line source
pankso@3 1 #!/bin/sh
pankso@3 2 #
pankso@3 3 # SliTaz Secure File Storage. Fast live sync using: SSH, Rsync, Lsyncd.
pankso@3 4 # Configuration file is a LUA script in user space.
pankso@3 5 #
pankso@3 6 # Copyright (C) SliTaz GNU/Linux - BSD License
pankso@3 7 # Author: Christophe Lincoln <pankso@slitaz.org>
pankso@3 8 #
pankso@3 9
pankso@3 10 app=$(basename $0)
pankso@3 11 pid=$HOME/.local/var/run/$app.pid
pankso@3 12 logdir=$HOME/.local/var/log/$app
pankso@3 13 config=$HOME/.config/$app/client.lua
pankso@3 14
pankso@73 15 # Internationalization
pankso@73 16 . /usr/bin/gettext.sh
pankso@73 17 TEXTDOMAIN='ssfs'
pankso@73 18 export TEXTDOMAIN
pankso@73 19
pankso@3 20 # Parse cmdline options.
pankso@3 21 for opt in $@
pankso@3 22 do
pankso@3 23 case "$opt" in
pankso@3 24 --login=*)
pankso@3 25 login=${opt#--login=} ;;
pankso@3 26 --host=*)
pankso@3 27 host=${opt#--host=} ;;
pankso@3 28 *)
pankso@3 29 continue ;;
pankso@3 30 esac
pankso@3 31 done
pankso@3 32
pankso@3 33 #
pankso@3 34 # Functions
pankso@3 35 #
pankso@3 36
pankso@3 37 # Built-in usage.
pankso@3 38 help() {
pankso@3 39 cat << EOT
pankso@3 40
pankso@3 41 $(echo -e "\033[1m$(gettext "Usage:")\033[0m") $app [command] [--option=]
pankso@3 42
pankso@3 43 $(echo -e "\033[1m$(gettext "Commands:")\033[0m")
pankso@60 44 help $(gettext "Display this short help usage.")
pankso@3 45 info $(gettext "Display configuration settings.")
pankso@3 46 setup $(gettext "Setup client configuration and RSA key.")
pankso@3 47 sync $(gettext "Sync from server and start daemon.")
pankso@3 48 stop $(gettext "Stop monitoring ~/Sync folder.")
pankso@57 49 login $(gettext "Connect to remote host via SSH.")
pankso@3 50
pankso@3 51 $(echo -e "\033[1m$(gettext "Options:")\033[0m")
pankso@3 52 --login= $(gettext "Login name on remote host.")
pankso@3 53 --host= $(gettext "Server host name or IP.")
pankso@3 54
pankso@3 55 EOT
pankso@3 56 }
pankso@3 57
pankso@3 58 # Display config settings.
pankso@3 59 config_info() {
pankso@3 60 [ ! -f "$config" ] && exit 0
pankso@3 61 fgrep '=' $config | sed s'/^ //'
pankso@3 62 }
pankso@3 63
pankso@3 64 # Create a Lua configuration file for lsyncd.
pankso@3 65 gen_config() {
pankso@3 66 mkdir -p $(dirname $config)
pankso@3 67 cat > $config << EOT
pankso@73 68 -- Configuration file for SliTaz Secure File Storage lsyncd daemon.
pankso@3 69
pankso@3 70 sync {
pankso@3 71 default.rsyncssh,
pankso@3 72 source = "$HOME/Sync",
pankso@3 73 host = "$login@$host",
pankso@3 74 targetdir = "Sync/"
pankso@3 75 }
pankso@3 76 EOT
pankso@3 77 }
pankso@3 78
pankso@55 79 get_config() {
pankso@55 80 at=$(fgrep host $config | cut -d '"' -f 2)
pankso@55 81 login=${at%@*}
pankso@55 82 host=${at#*@}
pankso@55 83 }
pankso@55 84
pankso@3 85 #
pankso@3 86 # Commands
pankso@3 87 #
pankso@3 88
pankso@3 89 case "$1" in
pankso@3 90 info)
pankso@3 91 size=$(du -sh $HOME/Sync | awk '{print $1}')
pankso@3 92 echo "" && config_info && echo ""
pankso@3 93 gettext "RSA key :"; echo " $HOME/.ssh/id_rsa"
pankso@3 94 gettext "Sync size :"; echo " $size"
pankso@3 95 echo "" ;;
pankso@3 96 setup)
pankso@3 97 # We need a login and host name or IP.
pankso@3 98 if [ -z "$login" ] || [ -z "$host" ]; then
pankso@74 99 gettext "Usage:"; echo -e \
pankso@3 100 " $(basename $0) setup --login=user --host=server\n" && exit 0
pankso@3 101 fi
pankso@3 102 gen_config
pankso@3 103 mkdir -p $logdir $(dirname $pid)
pankso@3 104
pankso@3 105 # Configure passwordless login via RSA key.
pankso@3 106 if [ ! -f "$HOME/.ssh/id_rsa" ]; then
pankso@3 107 mkdir -p $HOME/.ssh
pankso@3 108 ssh-keygen -b 2048 -f $HOME/.ssh/id_rsa -P ''
pankso@3 109 fi
pankso@50 110 echo ""
pankso@3 111
pankso@3 112 # Upload key to the server.
pankso@3 113 gettext "Sending RSA secure key to:"; echo " $host"
paul@59 114 gettext "Please enter your Ssfs password."
pankso@50 115 echo -e "\n"
pankso@3 116 cat $HOME/.ssh/id_rsa.pub | \
pankso@18 117 ssh $login@$host 'cat - >> ~/.ssh/authorized_keys' || exit 1
pankso@18 118 gettext "Client is setup you can now sync"; echo ;;
pankso@3 119 sync)
pankso@3 120 # Sync can be called at session startup or from cmdline to retrive
pankso@3 121 # files from the server.
pankso@74 122 [ ! -f "$config" ] && gettext "Missing config file" && \
pankso@74 123 echo "" && exit 1
pankso@3 124 at=$(fgrep host $config | cut -d '"' -f 2)
pankso@3 125 login=${at%@*}
pankso@3 126 host=${at#*@}
pankso@74 127 echo "" && gettext "Syncing from:"; echo " $login@$host"
pankso@3 128
pankso@3 129 # First sync host with server.
pankso@3 130 rsync -r -a -v -h -z -u --delete \
pankso@3 131 --log-file=$logdir/rsync.log \
pankso@3 132 -e "ssh -l $login" $host:~/Sync/ ~/Sync/ | \
pankso@3 133 sed -e "/^$/"d -e "/^.\/$/"d
pankso@3 134
pankso@3 135 # Monitor local folder if not yet running.
pankso@71 136 killall lsyncd 2>/dev/null
pankso@68 137 gettext "Starting lsyncd daemon..."
pankso@68 138 lsyncd -pidfile $pid -log all -logfile $logdir/lsyncd.log $config
pankso@68 139 echo "" ;;
pankso@3 140 stop)
pankso@3 141 # Kill daemon and remove pidfile.
pankso@77 142 [ ! -s "$pid" ] && gettext "Daemon is not running" && \
pankso@74 143 echo "" && exit 0
pankso@70 144 kill=$(cat $pid)
pankso@43 145 gettext "Stopping"; echo " $app PID: $kill"
pankso@70 146 kill $kill 2>/dev/null
pankso@44 147 rm -f $pid ;;
pankso@57 148 login)
pankso@55 149 # Connect user to Ssfs server via SSH.
pankso@55 150 get_config
pankso@55 151 ssh $login@$host ;;
pankso@3 152 *)
pankso@3 153 help ;;
pankso@3 154 esac
pankso@3 155 exit 0