Sha256: f362314227dd0e4f10d6f1f455446dd1529ae7a333873ad1852ee8784190401e

Contents?: true

Size: 1.65 KB

Versions: 16

Compression:

Stored size: 1.65 KB

Contents

module Mccloud
  module Provider
    module Core
      module VmCommand


        def ssh_forward(options=nil)
          return ssh_tunnel_start(@forwardings)
        end

        def ssh_tunnel_start(forwardings)
          unless forwardings.empty?
            @forward_threads<< Thread.new(self) { |vm|
              env=vm.env
              begin
                ssh_options={ :paranoid => false, :keys_only => true}
                ssh_options[:keys]= [ vm.private_key_path ] unless vm.private_key_path.nil?
                Net::SSH.start(vm.ip_address, vm.user, ssh_options) do |ssh_session|
                  vm.forwardings.each do |f|
                    begin
                      env.ui.info "Forwarding remote port #{f.remote} on #{vm.ip_address} from #{@name} to localhost port #{f.local}"
                      ssh_session.forward.local(f.local.to_i, "127.0.0.1",f.remote.to_i)
                      #ssh_session.forward.local(f.local.to_i, vm.ip_address,f.remote.to_i)
                    rescue Errno::EACCES
                      env.ui.error "Error - Access denied to forward remote port #{f.remote} from #{@name} to localhost port #{f.local}"
                    end
                  end
                  ssh_session.loop {true}
                end
              rescue IOError
                env.ui.error "IOError - maybe there is no listener on the port (yet?)"
              end
            }
          end
            return @forward_threads
          end

          def ssh_tunnel_stop
            @forward_threads.each do |thread|
              Thread.kill(thread)
            end
          end

        end #Module
      end #module
    end #Module
  end #module

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
mccloud-0.1.1 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.28 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.27 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.26 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.25 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.24 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.23 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.22 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.21 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.20 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.19 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.18 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.17 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.16 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.15 lib/mccloud/provider/core/vm/ssh_forward.rb
mccloud-0.0.14 lib/mccloud/provider/core/vm/ssh_forward.rb