Methods
Classes and Modules
Class Net::SSH::Service::Forward::DriverClass Net::SSH::Service::Forward::LocalNetworkHandler
Class Net::SSH::Service::Forward::RemoteNetworkHandler
Public Instance methods
Register the services pertaining to port forwarding.
[ show source ]
# File lib/net/ssh/service/forward/services.rb, line 23
23: def register_services( container )
24:
25: # All port forwarding services go in the :forward namespace.
26: container.namespace_define :forward do |ns|
27:
28: # The :driver service manages all port forwarding. It is declared
29: # as deferred so that it is not actually instantiated until it is
30: # used--otherwise, it would be instantiated as soon as it was added
31: # to the list of available services, whether it was ever used or
32: # not.
33: ns.driver :model => :singleton_deferred do |c,p|
34: require 'net/ssh/service/forward/driver'
35: Driver.new( c[:connection][:driver],
36: c[:transport][:buffers],
37: c[:log_for, p],
38: :local => c[:local_network_handler],
39: :remote => c[:remote_network_handler] )
40: end
41:
42: # A constant service, used to indicate the maximum block size to be
43: # passed over a forwarded connection.
44: ns.read_block_size { 64 * 1024 }
45:
46: # The :local_network_handler service returns a proc object that
47: # creates new LocalNetworkHandler instances for a given client
48: # connection. This is used for forwarding ports on the local host.
49: ns.local_network_handler :model => :singleton_deferred do |c,p|
50: require 'net/ssh/service/forward/local-network-handler'
51: log = c[:log_for, p]
52: block_size = c[:read_block_size]
53: lambda do |client|
54: LocalNetworkHandler.new( log, block_size, client )
55: end
56: end
57:
58: # The :remote_network_handler service returns a proc object that
59: # creates new RemoteNetworkHandler instances for a given port and
60: # host. This is used for forwarding ports on a remote host.
61: ns.remote_network_handler :model => :singleton_deferred do |c,p|
62: require 'net/ssh/service/forward/remote-network-handler'
63: log = c[:log_for, p]
64: block_size = c[:read_block_size]
65: lambda do |port, host|
66: RemoteNetworkHandler.new( log, block_size, port, host )
67: end
68: end
69: end
70: end