From c138effe83fe68234d9f630b62b52c3fdfdaca6a Mon Sep 17 00:00:00 2001 From: Matthew Bloch Date: Mon, 6 Jan 2014 02:19:54 +0000 Subject: First commit of working code, needs a lot more writing and testing --- byteback-setup-client-receive | 42 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 42 insertions(+) create mode 100644 byteback-setup-client-receive (limited to 'byteback-setup-client-receive') diff --git a/byteback-setup-client-receive b/byteback-setup-client-receive new file mode 100644 index 0000000..35a3b65 --- /dev/null +++ b/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 -- cgit v1.2.3