Exemplo n.º 1
0
			Expect(err).NotTo(HaveOccurred())

			permissions := &ssh.Permissions{
				CriticalOptions: map[string]string{
					"proxy-target-config": string(targetConfigJson),
					"log-message":         string(logMessageJson),
				},
			}
			proxyAuthenticator.AuthenticateReturns(permissions, nil)
		})

		JustBeforeEach(func() {
			sshProxy = proxy.New(logger.Session("proxy"), proxySSHConfig)
			proxyServer = server.NewServer(logger, "127.0.0.1:0", sshProxy)
			proxyServer.SetListener(proxyListener)
			go proxyServer.Serve()

			sshDaemon = daemon.New(logger.Session("sshd"), daemonSSHConfig, daemonGlobalRequestHandlers, daemonNewChannelHandlers)
			sshdServer = server.NewServer(logger, "127.0.0.1:0", sshDaemon)
			sshdServer.SetListener(sshdListener)
			go sshdServer.Serve()
		})

		AfterEach(func() {
			proxyServer.Shutdown()
			sshdServer.Shutdown()
		})

		Context("when a new connection arrives", func() {
			var clientConfig *ssh.ClientConfig
	BeforeEach(func() {
		logger = lagertest.NewTestLogger("test")

		echoHandler = &fake_server.FakeConnectionHandler{}
		echoHandler.HandleConnectionStub = func(conn net.Conn) {
			io.Copy(conn, conn)
			conn.Close()
		}

		echoListener, err := net.Listen("tcp", "127.0.0.1:0")
		Expect(err).NotTo(HaveOccurred())
		echoAddress = echoListener.Addr().String()

		echoServer = server.NewServer(logger.Session("echo"), "", echoHandler)
		echoServer.SetListener(echoListener)
		go echoServer.Serve()

		serverSSHConfig = &ssh.ServerConfig{
			NoClientAuth: true,
		}
		serverSSHConfig.AddHostKey(TestHostKey)

		testDialer = &fakes.FakeDialer{}
		testDialer.DialStub = net.Dial

		testHandler = handlers.NewDirectTcpipChannelHandler(testDialer)

		handler = &fake_handlers.FakeNewChannelHandler{}
		handler.HandleNewChannelStub = testHandler.HandleNewChannel

		newChannelHandlers := map[string]handlers.NewChannelHandler{
Exemplo n.º 3
0
			fakeListener.AcceptStub = func() (net.Conn, error) {
				cx := connectionCh
				select {
				case conn := <-cx:
					return conn, nil
				default:
					return nil, errors.New("fail")
				}
			}
		})

		JustBeforeEach(func() {
			srv = server.NewServer(logger, address, handler)
			srv.SetListener(fakeListener)
			srv.Serve()
		})

		It("accepts inbound connections", func() {
			Expect(fakeListener.AcceptCallCount()).To(Equal(2))
		})

		It("passes the connection to the connection handler", func() {
			Eventually(handler.HandleConnectionCallCount).Should(Equal(1))
			Expect(handler.HandleConnectionArgsForCall(0)).To(Equal(fakeConn))
		})

		Context("when accept returns a permanent error", func() {
			BeforeEach(func() {
				fakeListener.AcceptReturns(nil, errors.New("oops"))
			})