c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornberger#!/usr/bin/env ruby
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornberger#
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornberger# Git shell, invoked from ~/.ssh/authorized_keys
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornberger#
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornberger
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornbergerunless ENV['SSH_CONNECTION']
f35e888435be4e803bf73937cb5f173050a172e6Tim Reddehase STDERR.puts "Only ssh allowed"
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornberger exit 1
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornbergerend
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornberger
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornbergerrequire File.expand_path('../../lib/init', __FILE__)
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehasebegin
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase require 'git_shell'
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornberger
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase key_id = ARGV[0]
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase command = ENV['SSH_ORIGINAL_COMMAND']
c3a6c336056933aaedbf12520434a95a9ce1ea5cJulian Kornberger
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase GitShell.new(key_id, command).exec
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehaserescue StandardError, ScriptError => error
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase Rails.logger.error do
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase <<-ERROR
ec61f6f64207b4168960fcd645b1362d86fdeccaTim ReddehaseCould not perform git push for
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase Key-Id:<#{key_id}> and command:<#{command}>.
ec61f6f64207b4168960fcd645b1362d86fdeccaTim ReddehaseWe also encountered this error:
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase <##{error.class}> <#{error.message}>
ec61f6f64207b4168960fcd645b1362d86fdeccaTim ReddehaseWith this stacktrace:
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase #{error.backtrace.join('\n')}
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase ERROR
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase end
f35e888435be4e803bf73937cb5f173050a172e6Tim Reddehase STDERR.puts <<-ERROR
ec61f6f64207b4168960fcd645b1362d86fdeccaTim ReddehaseWe encountered a system error while processing your
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehasegit-interaction attempt.
ec61f6f64207b4168960fcd645b1362d86fdeccaTim ReddehaseThe git command was not processed; your data
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehaseis safe. Please try again in a few minutes.
ec61f6f64207b4168960fcd645b1362d86fdeccaTim ReddehaseContact an admin if this issue persists.
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase ERROR
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehase exit 1
ec61f6f64207b4168960fcd645b1362d86fdeccaTim Reddehaseend