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 |