From a77c7ac455aea4d7d7f49d7bc9313a2ecc9cfec3 Mon Sep 17 00:00:00 2001 From: Patrick J Cherry Date: Wed, 14 May 2014 14:09:07 +0100 Subject: bytemark: Added debian packaging --- debian/byteback/usr/sbin/byteback-receive | 54 +++++++++++++++++++++++++++++++ 1 file changed, 54 insertions(+) create mode 100755 debian/byteback/usr/sbin/byteback-receive (limited to 'debian/byteback/usr/sbin/byteback-receive') diff --git a/debian/byteback/usr/sbin/byteback-receive b/debian/byteback/usr/sbin/byteback-receive new file mode 100755 index 0000000..05e6a7c --- /dev/null +++ b/debian/byteback/usr/sbin/byteback-receive @@ -0,0 +1,54 @@ +#!/usr/bin/ruby +# +# Program to receive backups and run rsync in receive mode. Must check that +# user as authorised by SSH is allowed to access particular directory. + +#STDERR.print ARGV.inspect + "\n" + +require 'trollop' + +def error(message) + STDERR.print "*** #{message}\n" + exit 1 +end + +#STDERR.print "ARGV=#{ARGV.inspect}\nSSH_ORIGINAL_COMMAND=#{ENV['SSH_ORIGINAL_COMMAND']}\n" + +if ENV['SSH_ORIGINAL_COMMAND'] + ARGV.concat(ENV['SSH_ORIGINAL_COMMAND'].split(" ")) +end + +#STDERR.print "after ARGV=#{ARGV.inspect}\n" + +byteback_host = ENV['BYTEBACK_HOST'] +error("BYTEBACK_HOST environment not set") unless byteback_host + +byteback_root = ENV['HOME'] + "/" + ENV["BYTEBACK_HOST"] +error("#{byteback_root} does not exist") unless File.directory?(byteback_root) + +# force destination to be where we expect +# +if ARGV[0] == 'rsync' + ARGV[-1] = "#{byteback_root}/current" + exec(*ARGV) +elsif ARGV[0] == 'byteback-snapshot' || (ARGV[0] == 'sudo' && ARGV[1] == 'byteback-snapshot') + ARGV.concat(["--root", "#{byteback_root}"]) + exec(*ARGV) +end + +opts = Trollop::options do + opt :verbose, "Print diagnostics" + opt :ping, "Check connection parameters and exit" + opt :complete, "Mark current backup as complete" +end + +error("Please only choose one mode") if opts[:ping] && opts[:complete] +if opts[:complete] + system("byteback-snapshot", byteback_root) +elsif opts[:ping] + exit 0 +else + STDERR.print "byteback-receive failed\n" + exit 9 +end + -- cgit v1.2.3