summaryrefslogtreecommitdiff
path: root/debian/byteback/usr/sbin/byteback-setup-client-receive
diff options
context:
space:
mode:
Diffstat (limited to 'debian/byteback/usr/sbin/byteback-setup-client-receive')
-rwxr-xr-xdebian/byteback/usr/sbin/byteback-setup-client-receive42
1 files changed, 42 insertions, 0 deletions
diff --git a/debian/byteback/usr/sbin/byteback-setup-client-receive b/debian/byteback/usr/sbin/byteback-setup-client-receive
new file mode 100755
index 0000000..35a3b65
--- /dev/null
+++ b/debian/byteback/usr/sbin/byteback-setup-client-receive
@@ -0,0 +1,42 @@
+#!/usr/bin/ruby
+#
+# Called by byteback-setup-client to set up a new byteback-setup-client
+
+require 'fileutils'
+
+def error(message)
+ STDERR.print "*** #{message}\n"
+ exit 1
+end
+
+@hostname = ARGV.shift
+@pubkey = ARGV.join(" ")
+
+error("You must call this from byteback-setup-client on remote host") unless
+ @hostname &&
+ /^ssh/.match(@pubkey) &&
+ ENV['SSH_CONNECTION']
+
+@client_ip = ENV['SSH_CONNECTION'].split(" ").first
+
+Dir.chdir(ENV['HOME']) # don't know why we wouldn't be here
+
+Dir.mkdir(@hostname)
+
+error("Couldn't create btrfs subvolume (needs sudo)") unless
+ system("sudo btrfs subvolume create #{@hostname}/current")
+
+FileUtils.mkdir_p(".ssh")
+
+error("This key already exists in .ssh/authorized_keys on server") if
+ File.exists?(".ssh/authorized_keys") &&
+ File.read(".ssh/authorized_keys").match(@pubkey.split(/\s+/)[1])
+
+File.open(".ssh/authorized_keys", "a+") do |fh|
+ fh.print <<-LINE.gsub(/\n/,"")
+command="byteback-receive",
+from="#{@client_ip}",
+environment="BYTEBACK_HOST=#{@hostname}"
+ #{@pubkey}
+ LINE
+end