org.apache.sshd.common.PropertyResolverUtils Java Examples
The following examples show how to use
org.apache.sshd.common.PropertyResolverUtils.
You can vote up the ones you like or vote down the ones you don't like,
and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example #1
Source File: KeepAliveTest.java From termd with Apache License 2.0 | 6 votes |
@Test public void testClientWithHeartBeat() throws Exception { SshClient client = setupTestClient(); PropertyResolverUtils.updateProperty(client, ClientFactoryManager.HEARTBEAT_INTERVAL, HEARTBEAT); client.start(); try (ClientSession session = client.connect(getCurrentTestName(), TEST_LOCALHOST, port).verify(7L, TimeUnit.SECONDS).getSession()) { session.addPasswordIdentity(getCurrentTestName()); session.auth().verify(5L, TimeUnit.SECONDS); try (ClientChannel channel = session.createChannel(Channel.CHANNEL_SHELL)) { Collection<ClientChannelEvent> result = channel.waitFor(EnumSet.of(ClientChannelEvent.CLOSED), WAIT); assertTrue("Wrong channel state: " + result, result.contains(ClientChannelEvent.TIMEOUT)); } } finally { client.stop(); } }
Example #2
Source File: KeepAliveTest.java From termd with Apache License 2.0 | 6 votes |
@Test public void testClientWithHeartBeat() throws Exception { SshClient client = setupTestClient(); PropertyResolverUtils.updateProperty(client, ClientFactoryManager.HEARTBEAT_INTERVAL, HEARTBEAT); client.start(); try (ClientSession session = client.connect(getCurrentTestName(), TEST_LOCALHOST, port).verify(7L, TimeUnit.SECONDS).getSession()) { session.addPasswordIdentity(getCurrentTestName()); session.auth().verify(5L, TimeUnit.SECONDS); try (ClientChannel channel = session.createChannel(Channel.CHANNEL_SHELL)) { Collection<ClientChannelEvent> result = channel.waitFor(EnumSet.of(ClientChannelEvent.CLOSED), WAIT); assertTrue("Wrong channel state: " + result, result.contains(ClientChannelEvent.TIMEOUT)); } } finally { client.stop(); } }
Example #3
Source File: WelcomeBannerTest.java From termd with Apache License 2.0 | 5 votes |
@Before public void setUp() throws Exception { sshd = setupTestServer(); PropertyResolverUtils.updateProperty(sshd, ServerFactoryManager.WELCOME_BANNER, WELCOME); sshd.start(); port = sshd.getPort(); }
Example #4
Source File: ServerTest.java From termd with Apache License 2.0 | 5 votes |
@Test public void testAuthenticationTimeout() throws Exception { final long testAuthTimeout = TimeUnit.SECONDS.toMillis(5L); PropertyResolverUtils.updateProperty(sshd, FactoryManager.AUTH_TIMEOUT, testAuthTimeout); sshd.start(); client.start(); try (ClientSession s = client.connect(getCurrentTestName(), TEST_LOCALHOST, sshd.getPort()).verify(7L, TimeUnit.SECONDS).getSession()) { Collection<ClientSession.ClientSessionEvent> res = s.waitFor(EnumSet.of(ClientSession.ClientSessionEvent.CLOSED), 2L * testAuthTimeout); assertTrue("Session should be closed: " + res, res.containsAll(EnumSet.of(ClientSession.ClientSessionEvent.CLOSED, ClientSession.ClientSessionEvent.WAIT_AUTH))); } finally { client.stop(); } }
Example #5
Source File: ServerTest.java From termd with Apache License 2.0 | 5 votes |
@Test public void testFailAuthenticationWithFuture() throws Exception { final int maxAllowedAuths = 10; PropertyResolverUtils.updateProperty(sshd, ServerAuthenticationManager.MAX_AUTH_REQUESTS, maxAllowedAuths); sshd.start(); client.setServiceFactories(Arrays.asList( new ClientUserAuthServiceOld.Factory(), ClientConnectionServiceFactory.INSTANCE )); client.start(); try (ClientSession s = client.connect(getCurrentTestName(), TEST_LOCALHOST, sshd.getPort()).verify(7L, TimeUnit.SECONDS).getSession()) { int nbTrials = 0; AuthFuture authFuture; do { nbTrials++; assertTrue("Number of trials below max.", nbTrials < 100); authFuture = s.getService(ClientUserAuthServiceOld.class) .auth(new org.apache.sshd.deprecated.UserAuthPassword(s, "ssh-connection", "buggy")); assertTrue("Authentication wait failed", authFuture.await(5L, TimeUnit.SECONDS)); assertTrue("Authentication not done", authFuture.isDone()); assertFalse("Authentication unexpectedly successful", authFuture.isSuccess()); } while (authFuture.getException() == null); Throwable t = authFuture.getException(); assertNotNull("Missing auth future exception", t); assertTrue("Number trials (" + nbTrials + ") below min.=" + maxAllowedAuths, nbTrials > maxAllowedAuths); } finally { client.stop(); } }
Example #6
Source File: ServerTest.java From termd with Apache License 2.0 | 5 votes |
@Test public void testFailAuthenticationWithWaitFor() throws Exception { final int maxAllowedAuths = 10; PropertyResolverUtils.updateProperty(sshd, ServerAuthenticationManager.MAX_AUTH_REQUESTS, maxAllowedAuths); sshd.start(); client.setServiceFactories(Arrays.asList( new ClientUserAuthServiceOld.Factory(), ClientConnectionServiceFactory.INSTANCE )); client.start(); try (ClientSession s = client.connect(getCurrentTestName(), TEST_LOCALHOST, sshd.getPort()).verify(7L, TimeUnit.SECONDS).getSession()) { int nbTrials = 0; Collection<ClientSession.ClientSessionEvent> res = Collections.emptySet(); Collection<ClientSession.ClientSessionEvent> mask = EnumSet.of(ClientSession.ClientSessionEvent.CLOSED, ClientSession.ClientSessionEvent.WAIT_AUTH); while (!res.contains(ClientSession.ClientSessionEvent.CLOSED)) { nbTrials++; s.getService(ClientUserAuthServiceOld.class) .auth(new org.apache.sshd.deprecated.UserAuthPassword(s, "ssh-connection", "buggy")); res = s.waitFor(mask, TimeUnit.SECONDS.toMillis(5L)); assertFalse("Timeout signalled", res.contains(ClientSession.ClientSessionEvent.TIMEOUT)); } assertTrue("Number trials (" + nbTrials + ") below min.=" + maxAllowedAuths, nbTrials > maxAllowedAuths); } finally { client.stop(); } }
Example #7
Source File: KeyReExchangeTest.java From termd with Apache License 2.0 | 5 votes |
protected void setUp(long bytesLimit, long timeLimit, long packetsLimit) throws Exception { sshd = setupTestServer(); if (bytesLimit > 0L) { PropertyResolverUtils.updateProperty(sshd, FactoryManager.REKEY_BYTES_LIMIT, bytesLimit); } if (timeLimit > 0L) { PropertyResolverUtils.updateProperty(sshd, FactoryManager.REKEY_TIME_LIMIT, timeLimit); } if (packetsLimit > 0L) { PropertyResolverUtils.updateProperty(sshd, FactoryManager.REKEY_PACKETS_LIMIT, packetsLimit); } sshd.start(); port = sshd.getPort(); }
Example #8
Source File: KeepAliveTest.java From termd with Apache License 2.0 | 5 votes |
@Before public void setUp() throws Exception { sshd = setupTestServer(); PropertyResolverUtils.updateProperty(sshd, FactoryManager.IDLE_TIMEOUT, TIMEOUT); sshd.setShellFactory(new TestEchoShellFactory()); sshd.start(); port = sshd.getPort(); }
Example #9
Source File: WelcomeBannerTest.java From termd with Apache License 2.0 | 5 votes |
@Before public void setUp() throws Exception { sshd = setupTestServer(); PropertyResolverUtils.updateProperty(sshd, ServerFactoryManager.WELCOME_BANNER, WELCOME); sshd.start(); port = sshd.getPort(); }
Example #10
Source File: SinglePublicKeyAuthTest.java From termd with Apache License 2.0 | 5 votes |
@Before public void setUp() throws Exception { sshd = setupTestServer(); PropertyResolverUtils.updateProperty(sshd, ServerFactoryManager.AUTH_METHODS, UserAuthPublicKeyFactory.NAME); sshd.setPublickeyAuthenticator(new PublickeyAuthenticator() { @SuppressWarnings("synthetic-access") @Override public boolean authenticate(String username, PublicKey key, ServerSession session) { return delegate.authenticate(username, key, session); } }); sshd.start(); port = sshd.getPort(); }
Example #11
Source File: PortForwardingTest.java From termd with Apache License 2.0 | 5 votes |
protected ClientSession createNativeSession() throws Exception { client = setupTestClient(); PropertyResolverUtils.updateProperty(client, FactoryManager.WINDOW_SIZE, 2048); PropertyResolverUtils.updateProperty(client, FactoryManager.MAX_PACKET_SIZE, 256); client.setTcpipForwardingFilter(AcceptAllForwardingFilter.INSTANCE); client.start(); ClientSession session = client.connect(getCurrentTestName(), TEST_LOCALHOST, sshPort).verify(7L, TimeUnit.SECONDS).getSession(); session.addPasswordIdentity(getCurrentTestName()); session.auth().verify(11L, TimeUnit.SECONDS); return session; }
Example #12
Source File: SinglePublicKeyAuthTest.java From termd with Apache License 2.0 | 5 votes |
@Before public void setUp() throws Exception { sshd = setupTestServer(); PropertyResolverUtils.updateProperty(sshd, ServerFactoryManager.AUTH_METHODS, UserAuthPublicKeyFactory.NAME); sshd.setPublickeyAuthenticator(new PublickeyAuthenticator() { @SuppressWarnings("synthetic-access") @Override public boolean authenticate(String username, PublicKey key, ServerSession session) { return delegate.authenticate(username, key, session); } }); sshd.start(); port = sshd.getPort(); }
Example #13
Source File: PortForwardingTest.java From termd with Apache License 2.0 | 5 votes |
protected ClientSession createNativeSession() throws Exception { client = setupTestClient(); PropertyResolverUtils.updateProperty(client, FactoryManager.WINDOW_SIZE, 2048); PropertyResolverUtils.updateProperty(client, FactoryManager.MAX_PACKET_SIZE, 256); client.setTcpipForwardingFilter(AcceptAllForwardingFilter.INSTANCE); client.start(); ClientSession session = client.connect(getCurrentTestName(), TEST_LOCALHOST, sshPort).verify(7L, TimeUnit.SECONDS).getSession(); session.addPasswordIdentity(getCurrentTestName()); session.auth().verify(11L, TimeUnit.SECONDS); return session; }
Example #14
Source File: ServerTest.java From termd with Apache License 2.0 | 5 votes |
@Test public void testAuthenticationTimeout() throws Exception { final long testAuthTimeout = TimeUnit.SECONDS.toMillis(5L); PropertyResolverUtils.updateProperty(sshd, FactoryManager.AUTH_TIMEOUT, testAuthTimeout); sshd.start(); client.start(); try (ClientSession s = client.connect(getCurrentTestName(), TEST_LOCALHOST, sshd.getPort()).verify(7L, TimeUnit.SECONDS).getSession()) { Collection<ClientSession.ClientSessionEvent> res = s.waitFor(EnumSet.of(ClientSession.ClientSessionEvent.CLOSED), 2L * testAuthTimeout); assertTrue("Session should be closed: " + res, res.containsAll(EnumSet.of(ClientSession.ClientSessionEvent.CLOSED, ClientSession.ClientSessionEvent.WAIT_AUTH))); } finally { client.stop(); } }
Example #15
Source File: ServerTest.java From termd with Apache License 2.0 | 5 votes |
@Test public void testFailAuthenticationWithFuture() throws Exception { final int maxAllowedAuths = 10; PropertyResolverUtils.updateProperty(sshd, ServerAuthenticationManager.MAX_AUTH_REQUESTS, maxAllowedAuths); sshd.start(); client.setServiceFactories(Arrays.asList( new ClientUserAuthServiceOld.Factory(), ClientConnectionServiceFactory.INSTANCE )); client.start(); try (ClientSession s = client.connect(getCurrentTestName(), TEST_LOCALHOST, sshd.getPort()).verify(7L, TimeUnit.SECONDS).getSession()) { int nbTrials = 0; AuthFuture authFuture; do { nbTrials++; assertTrue("Number of trials below max.", nbTrials < 100); authFuture = s.getService(ClientUserAuthServiceOld.class) .auth(new org.apache.sshd.deprecated.UserAuthPassword(s, "ssh-connection", "buggy")); assertTrue("Authentication wait failed", authFuture.await(5L, TimeUnit.SECONDS)); assertTrue("Authentication not done", authFuture.isDone()); assertFalse("Authentication unexpectedly successful", authFuture.isSuccess()); } while (authFuture.getException() == null); Throwable t = authFuture.getException(); assertNotNull("Missing auth future exception", t); assertTrue("Number trials (" + nbTrials + ") below min.=" + maxAllowedAuths, nbTrials > maxAllowedAuths); } finally { client.stop(); } }
Example #16
Source File: ServerTest.java From termd with Apache License 2.0 | 5 votes |
@Test public void testFailAuthenticationWithWaitFor() throws Exception { final int maxAllowedAuths = 10; PropertyResolverUtils.updateProperty(sshd, ServerAuthenticationManager.MAX_AUTH_REQUESTS, maxAllowedAuths); sshd.start(); client.setServiceFactories(Arrays.asList( new ClientUserAuthServiceOld.Factory(), ClientConnectionServiceFactory.INSTANCE )); client.start(); try (ClientSession s = client.connect(getCurrentTestName(), TEST_LOCALHOST, sshd.getPort()).verify(7L, TimeUnit.SECONDS).getSession()) { int nbTrials = 0; Collection<ClientSession.ClientSessionEvent> res = Collections.emptySet(); Collection<ClientSession.ClientSessionEvent> mask = EnumSet.of(ClientSession.ClientSessionEvent.CLOSED, ClientSession.ClientSessionEvent.WAIT_AUTH); while (!res.contains(ClientSession.ClientSessionEvent.CLOSED)) { nbTrials++; s.getService(ClientUserAuthServiceOld.class) .auth(new org.apache.sshd.deprecated.UserAuthPassword(s, "ssh-connection", "buggy")); res = s.waitFor(mask, TimeUnit.SECONDS.toMillis(5L)); assertFalse("Timeout signalled", res.contains(ClientSession.ClientSessionEvent.TIMEOUT)); } assertTrue("Number trials (" + nbTrials + ") below min.=" + maxAllowedAuths, nbTrials > maxAllowedAuths); } finally { client.stop(); } }
Example #17
Source File: KeyReExchangeTest.java From termd with Apache License 2.0 | 5 votes |
protected void setUp(long bytesLimit, long timeLimit, long packetsLimit) throws Exception { sshd = setupTestServer(); if (bytesLimit > 0L) { PropertyResolverUtils.updateProperty(sshd, FactoryManager.REKEY_BYTES_LIMIT, bytesLimit); } if (timeLimit > 0L) { PropertyResolverUtils.updateProperty(sshd, FactoryManager.REKEY_TIME_LIMIT, timeLimit); } if (packetsLimit > 0L) { PropertyResolverUtils.updateProperty(sshd, FactoryManager.REKEY_PACKETS_LIMIT, packetsLimit); } sshd.start(); port = sshd.getPort(); }
Example #18
Source File: KeepAliveTest.java From termd with Apache License 2.0 | 5 votes |
@Before public void setUp() throws Exception { sshd = setupTestServer(); PropertyResolverUtils.updateProperty(sshd, FactoryManager.IDLE_TIMEOUT, TIMEOUT); sshd.setShellFactory(new TestEchoShellFactory()); sshd.start(); port = sshd.getPort(); }
Example #19
Source File: PortForwardingTest.java From termd with Apache License 2.0 | 4 votes |
@Before public void setUp() throws Exception { sshd = setupTestServer(); PropertyResolverUtils.updateProperty(sshd, FactoryManager.WINDOW_SIZE, 2048); PropertyResolverUtils.updateProperty(sshd, FactoryManager.MAX_PACKET_SIZE, 256); sshd.setTcpipForwardingFilter(AcceptAllForwardingFilter.INSTANCE); sshd.start(); if (!requestsQ.isEmpty()) { requestsQ.clear(); } final TcpipForwarderFactory factory = ValidateUtils.checkNotNull(sshd.getTcpipForwarderFactory(), "No TcpipForwarderFactory"); sshd.setTcpipForwarderFactory(new TcpipForwarderFactory() { private final Class<?>[] interfaces = {TcpipForwarder.class}; private final Map<String, String> method2req = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER) { private static final long serialVersionUID = 1L; // we're not serializing it... { put("localPortForwardingRequested", TcpipForwardHandler.REQUEST); put("localPortForwardingCancelled", CancelTcpipForwardHandler.REQUEST); } }; @Override public TcpipForwarder create(ConnectionService service) { Thread thread = Thread.currentThread(); ClassLoader cl = thread.getContextClassLoader(); final TcpipForwarder forwarder = factory.create(service); return (TcpipForwarder) Proxy.newProxyInstance(cl, interfaces, new InvocationHandler() { @SuppressWarnings("synthetic-access") @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = method.invoke(forwarder, args); String name = method.getName(); String request = method2req.get(name); if (GenericUtils.length(request) > 0) { if (requestsQ.offer(request)) { log.info("Signal " + request); } else { log.error("Failed to offer request=" + request); } } return result; } }); } }); sshPort = sshd.getPort(); NioSocketAcceptor acceptor = new NioSocketAcceptor(); acceptor.setHandler(new IoHandlerAdapter() { @Override public void messageReceived(IoSession session, Object message) throws Exception { IoBuffer recv = (IoBuffer) message; IoBuffer sent = IoBuffer.allocate(recv.remaining()); sent.put(recv); sent.flip(); session.write(sent); } }); acceptor.setReuseAddress(true); acceptor.bind(new InetSocketAddress(0)); echoPort = acceptor.getLocalAddress().getPort(); this.acceptor = acceptor; }
Example #20
Source File: LoadTest.java From termd with Apache License 2.0 | 4 votes |
@SuppressWarnings("checkstyle:nestedtrydepth") protected void runClient(String msg) throws Exception { try (SshClient client = setupTestClient()) { PropertyResolverUtils.updateProperty(client, FactoryManager.MAX_PACKET_SIZE, 1024 * 16); PropertyResolverUtils.updateProperty(client, FactoryManager.WINDOW_SIZE, 1024 * 8); client.setKeyExchangeFactories(Arrays.asList( ClientBuilder.DH2KEX.transform(BuiltinDHFactories.dhg1))); client.setCipherFactories(Arrays.<NamedFactory<Cipher>>asList(BuiltinCiphers.blowfishcbc)); client.start(); try (ClientSession session = client.connect(getCurrentTestName(), TEST_LOCALHOST, port).verify(7L, TimeUnit.SECONDS).getSession()) { session.addPasswordIdentity(getCurrentTestName()); session.auth().verify(5L, TimeUnit.SECONDS); try (ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream err = new ByteArrayOutputStream(); ClientChannel channel = session.createChannel(Channel.CHANNEL_SHELL)) { channel.setOut(out); channel.setErr(err); try { channel.open().verify(9L, TimeUnit.SECONDS); try (OutputStream pipedIn = channel.getInvertedIn()) { msg += "\nexit\n"; pipedIn.write(msg.getBytes(StandardCharsets.UTF_8)); pipedIn.flush(); } Collection<ClientChannelEvent> result = channel.waitFor(EnumSet.of(ClientChannelEvent.CLOSED), TimeUnit.SECONDS.toMillis(15L)); assertFalse("Timeout while waiting for channel closure", result.contains(ClientChannelEvent.TIMEOUT)); } finally { channel.close(false); } assertArrayEquals("Mismatched message data", msg.getBytes(StandardCharsets.UTF_8), out.toByteArray()); } } finally { client.stop(); } } }
Example #21
Source File: WindowTest.java From termd with Apache License 2.0 | 4 votes |
@Test public void testWindowConsumptionWithAsyncStreams() throws Exception { sshd.setShellFactory(new AsyncEchoShellFactory()); PropertyResolverUtils.updateProperty(sshd, FactoryManager.WINDOW_SIZE, 1024); PropertyResolverUtils.updateProperty(client, FactoryManager.WINDOW_SIZE, 1024); client.start(); try (ClientSession session = client.connect(getCurrentTestName(), TEST_LOCALHOST, port).verify(7L, TimeUnit.SECONDS).getSession()) { session.addPasswordIdentity(getCurrentTestName()); session.auth().verify(5L, TimeUnit.SECONDS); try (ChannelShell channel = session.createShellChannel()) { channel.setStreaming(ClientChannel.Streaming.Async); channel.open().verify(5L, TimeUnit.SECONDS); try (Channel serverChannel = sshd.getActiveSessions().iterator().next().getService(ServerConnectionService.class).getChannels().iterator().next()) { Window clientLocal = channel.getLocalWindow(); Window clientRemote = channel.getRemoteWindow(); Window serverLocal = serverChannel.getLocalWindow(); Window serverRemote = serverChannel.getRemoteWindow(); final String message = "0123456789\n"; final byte[] bytes = message.getBytes(StandardCharsets.UTF_8); final int nbMessages = 500; IoOutputStream output = channel.getAsyncIn(); IoInputStream input = channel.getAsyncOut(); for (int i = 0; i < nbMessages; i++) { Buffer buffer = new ByteArrayBuffer(bytes); output.write(buffer).verify(5L, TimeUnit.SECONDS); waitForWindowNotEquals(clientLocal, serverRemote, "client local", "server remote", TimeUnit.SECONDS.toMillis(3L)); Buffer buf = new ByteArrayBuffer(16); IoReadFuture future = input.read(buf); future.verify(5L, TimeUnit.SECONDS); assertEquals("Mismatched available data at line #" + i, message.length(), buf.available()); assertEquals("Mismatched data at line #" + i, message, new String(buf.array(), buf.rpos(), buf.available())); waitForWindowEquals(clientLocal, serverRemote, "client local", "server remote", TimeUnit.SECONDS.toMillis(3L)); waitForWindowEquals(clientRemote, serverLocal, "client remote", "server local", TimeUnit.SECONDS.toMillis(3L)); } } } } finally { client.stop(); } }
Example #22
Source File: WindowTest.java From termd with Apache License 2.0 | 4 votes |
@Test public void testWindowConsumptionWithDirectStreams() throws Exception { sshd.setShellFactory(new AsyncEchoShellFactory()); PropertyResolverUtils.updateProperty(sshd, FactoryManager.WINDOW_SIZE, 1024); PropertyResolverUtils.updateProperty(client, FactoryManager.WINDOW_SIZE, 1024); client.start(); try (ClientSession session = client.connect(getCurrentTestName(), TEST_LOCALHOST, port).verify(7L, TimeUnit.SECONDS).getSession()) { session.addPasswordIdentity(getCurrentTestName()); session.auth().verify(5L, TimeUnit.SECONDS); try (ChannelShell channel = session.createShellChannel(); PipedInputStream inPis = new PipedInputStream(); PipedOutputStream inPos = new PipedOutputStream(inPis); PipedInputStream outPis = new PipedInputStream(); PipedOutputStream outPos = new PipedOutputStream(outPis)) { channel.setIn(inPis); channel.setOut(outPos); channel.open().verify(7L, TimeUnit.SECONDS); try (Channel serverChannel = sshd.getActiveSessions().iterator().next().getService(ServerConnectionService.class).getChannels().iterator().next()) { Window clientLocal = channel.getLocalWindow(); Window clientRemote = channel.getRemoteWindow(); Window serverLocal = serverChannel.getLocalWindow(); Window serverRemote = serverChannel.getRemoteWindow(); final String message = "0123456789"; final int nbMessages = 500; try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(inPos)); BufferedReader reader = new BufferedReader(new InputStreamReader(outPis))) { for (int i = 0; i < nbMessages; i++) { writer.write(message); writer.write('\n'); writer.flush(); waitForWindowEquals(clientLocal, serverRemote, "client local", "server remote", TimeUnit.SECONDS.toMillis(3L)); String line = reader.readLine(); assertEquals("Mismatched message at line #" + i, message, line); waitForWindowEquals(clientLocal, serverRemote, "client local", "server remote", TimeUnit.SECONDS.toMillis(3L)); waitForWindowEquals(clientRemote, serverLocal, "client remote", "server local", TimeUnit.SECONDS.toMillis(3L)); } } } } } finally { client.stop(); } }
Example #23
Source File: WindowTest.java From termd with Apache License 2.0 | 4 votes |
@Test public void testWindowConsumptionWithInvertedStreams() throws Exception { sshd.setShellFactory(new AsyncEchoShellFactory()); PropertyResolverUtils.updateProperty(sshd, FactoryManager.WINDOW_SIZE, 1024); PropertyResolverUtils.updateProperty(client, FactoryManager.WINDOW_SIZE, 1024); client.start(); try (ClientSession session = client.connect(getCurrentTestName(), TEST_LOCALHOST, port).verify(7L, TimeUnit.SECONDS).getSession()) { session.addPasswordIdentity(getCurrentTestName()); session.auth().verify(5L, TimeUnit.SECONDS); try (ChannelShell channel = session.createShellChannel()) { channel.open().verify(5L, TimeUnit.SECONDS); try (Channel serverChannel = sshd.getActiveSessions().iterator().next().getService(ServerConnectionService.class).getChannels().iterator().next()) { Window clientLocal = channel.getLocalWindow(); Window clientRemote = channel.getRemoteWindow(); Window serverLocal = serverChannel.getLocalWindow(); Window serverRemote = serverChannel.getRemoteWindow(); final String message = "0123456789"; final int nbMessages = 500; try (BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(channel.getInvertedIn())); BufferedReader reader = new BufferedReader(new InputStreamReader(channel.getInvertedOut()))) { for (int i = 0; i < nbMessages; i++) { writer.write(message); writer.write("\n"); writer.flush(); waitForWindowNotEquals(clientLocal, serverRemote, "client local", "server remote", TimeUnit.SECONDS.toMillis(3L)); String line = reader.readLine(); assertEquals("Mismatched message at line #" + i, message, line); waitForWindowEquals(clientLocal, serverRemote, "client local", "server remote", TimeUnit.SECONDS.toMillis(3L)); waitForWindowEquals(clientRemote, serverLocal, "client remote", "server local", TimeUnit.SECONDS.toMillis(3L)); } } } } } finally { client.stop(); } }
Example #24
Source File: AsyncUserAuthService.java From termd with Apache License 2.0 | 4 votes |
public AsyncUserAuthService(Session s) throws SshException { ValidateUtils.checkTrue(s instanceof ServerSession, "Server side service used on client side"); if (s.isAuthenticated()) { throw new SshException("Session already authenticated"); } serverSession = (ServerSession) s; maxAuthRequests = PropertyResolverUtils.getIntProperty(s, ServerAuthenticationManager.MAX_AUTH_REQUESTS, ServerAuthenticationManager.DEFAULT_MAX_AUTH_REQUESTS); List<NamedFactory<UserAuth>> factories = ValidateUtils.checkNotNullAndNotEmpty( serverSession.getUserAuthFactories(), "No user auth factories for %s", s); userAuthFactories = new ArrayList<NamedFactory<UserAuth>>(factories); // Get authentication methods authMethods = new ArrayList<List<String>>(); String mths = PropertyResolverUtils.getString(s, ServerFactoryManager.AUTH_METHODS); if (GenericUtils.isEmpty(mths)) { for (NamedFactory<UserAuth> uaf : factories) { authMethods.add(new ArrayList<String>(Collections.singletonList(uaf.getName()))); } } else { if (log.isDebugEnabled()) { log.debug("ServerUserAuthService({}) using configured methods={}", s, mths); } for (String mthl : mths.split("\\s")) { authMethods.add(new ArrayList<String>(Arrays.asList(GenericUtils.split(mthl, ',')))); } } // Verify all required methods are supported for (List<String> l : authMethods) { for (String m : l) { NamedFactory<UserAuth> factory = NamedResource.Utils.findByName(m, String.CASE_INSENSITIVE_ORDER, userAuthFactories); if (factory == null) { throw new SshException("Configured method is not supported: " + m); } } } if (log.isDebugEnabled()) { log.debug("ServerUserAuthService({}) authorized authentication methods: {}", s, NamedResource.Utils.getNames(userAuthFactories)); } }
Example #25
Source File: Server.java From sftpserver with Apache License 2.0 | 4 votes |
private void hackVersion() { PropertyResolverUtils.updateProperty(sshd, ServerFactoryManager.SERVER_IDENTIFICATION, "SSHD"); }
Example #26
Source File: AsyncUserAuthService.java From termd with Apache License 2.0 | 4 votes |
public AsyncUserAuthService(Session s) throws SshException { ValidateUtils.checkTrue(s instanceof ServerSession, "Server side service used on client side"); if (s.isAuthenticated()) { throw new SshException("Session already authenticated"); } serverSession = (ServerSession) s; maxAuthRequests = PropertyResolverUtils.getIntProperty(s, ServerAuthenticationManager.MAX_AUTH_REQUESTS, ServerAuthenticationManager.DEFAULT_MAX_AUTH_REQUESTS); List<NamedFactory<UserAuth>> factories = ValidateUtils.checkNotNullAndNotEmpty( serverSession.getUserAuthFactories(), "No user auth factories for %s", s); userAuthFactories = new ArrayList<>(factories); // Get authentication methods authMethods = new ArrayList<>(); String mths = PropertyResolverUtils.getString(s, ServerFactoryManager.AUTH_METHODS); if (GenericUtils.isEmpty(mths)) { for (NamedFactory<UserAuth> uaf : factories) { authMethods.add(new ArrayList<>(Collections.singletonList(uaf.getName()))); } } else { if (log.isDebugEnabled()) { log.debug("ServerUserAuthService({}) using configured methods={}", s, mths); } for (String mthl : mths.split("\\s")) { authMethods.add(new ArrayList<>(Arrays.asList(GenericUtils.split(mthl, ',')))); } } // Verify all required methods are supported for (List<String> l : authMethods) { for (String m : l) { NamedFactory<UserAuth> factory = NamedResource.Utils.findByName(m, String.CASE_INSENSITIVE_ORDER, userAuthFactories); if (factory == null) { throw new SshException("Configured method is not supported: " + m); } } } if (log.isDebugEnabled()) { log.debug("ServerUserAuthService({}) authorized authentication methods: {}", s, NamedResource.Utils.getNames(userAuthFactories)); } }
Example #27
Source File: TestRemoteUploadTarget.java From datacollector with Apache License 2.0 | 4 votes |
@Test public void testConnectionRetry() throws Exception { FileRefTestUtil.writePredefinedTextToFile(testFolder.getRoot()); Record record = createRecord(); File targetFile = new File(testFolder.getRoot(), "target.txt"); path = testFolder.getRoot().getAbsolutePath(); setupServer(path, true); RemoteUploadTarget target = new RemoteUploadTarget(getBean( scheme.name() + "://localhost:" + port + "/", true, DataFormat.WHOLE_FILE, targetFile.getName(), WholeFileExistsAction.TO_ERROR )); TargetRunner runner = new TargetRunner.Builder(RemoteUploadDTarget.class, target).build(); // No connections at first if (scheme == Scheme.sftp) { Assert.assertEquals(0, opened.get()); Assert.assertEquals(0, closed.get()); } else if (scheme == Scheme.ftp) { Assert.assertEquals(0, ftpServer.getServerContext().getFtpStatistics().getCurrentConnectionNumber()); } runner.runInit(); // Now we've made one connection if (scheme == Scheme.sftp) { Assert.assertEquals(1, opened.get()); } else if (scheme == Scheme.ftp) { Assert.assertEquals(1, ftpServer.getServerContext().getFtpStatistics().getCurrentConnectionNumber()); } // Set timeout after being idle to be really quick (1ms) if (scheme == Scheme.sftp) { PropertyResolverUtils.updateProperty(sshd, FactoryManager.IDLE_TIMEOUT, 1); } else if (scheme == Scheme.ftp) { ftpServer.getServerContext().getListeners().get("default").getActiveSessions().iterator().next().setMaxIdleTime(1); } // Wait until that one connection has been closed if (scheme == Scheme.sftp) { await().atMost(10, TimeUnit.SECONDS).until(() -> Assert.assertEquals(1, closed.get())); Assert.assertEquals(1, closed.get()); } else if (scheme == Scheme.ftp) { await().atMost(10, TimeUnit.SECONDS).until( () -> Assert.assertEquals(0, ftpServer.getServerContext().getFtpStatistics().getCurrentConnectionNumber())); Assert.assertEquals(0, ftpServer.getServerContext().getFtpStatistics().getCurrentConnectionNumber()); } if (scheme == Scheme.sftp) { // Unset the timeout config for SFTP because it's global PropertyResolverUtils.updateProperty(sshd, FactoryManager.IDLE_TIMEOUT, FactoryManager.DEFAULT_IDLE_TIMEOUT); } runner.runWrite(Collections.singletonList(record)); // Now we've opened a new connection if (scheme == Scheme.sftp) { Assert.assertEquals(2, opened.get()); } else if (scheme == Scheme.ftp) { Assert.assertEquals(1, ftpServer.getServerContext().getFtpStatistics().getCurrentConnectionNumber()); Assert.assertEquals(2, ftpServer.getServerContext().getFtpStatistics().getTotalConnectionNumber()); } verifyTargetFile(targetFile); destroyAndValidate(runner); }
Example #28
Source File: TestRemoteDownloadSource.java From datacollector with Apache License 2.0 | 4 votes |
@Test public void testConnectionRetry() throws Exception { path = "remote-download-source/parseNoError"; setupServer(path, false); RemoteDownloadSource origin = new TestRemoteDownloadSourceBuilder(scheme, port).build(); SourceRunner runner = new SourceRunner.Builder(RemoteDownloadDSource.class, origin) .addOutputLane("lane") .build(); // No connections at first if (scheme == Scheme.sftp) { Assert.assertEquals(0, opened.get()); Assert.assertEquals(0, closed.get()); } else if (scheme == Scheme.ftp) { Assert.assertEquals(0, ftpServer.getServerContext().getFtpStatistics().getCurrentConnectionNumber()); } runner.runInit(); // Now we've made one connection if (scheme == Scheme.sftp) { Assert.assertEquals(1, opened.get()); } else if (scheme == Scheme.ftp) { Assert.assertEquals(1, ftpServer.getServerContext().getFtpStatistics().getCurrentConnectionNumber()); } // Set timeout after being idle to be really quick (1ms) if (scheme == Scheme.sftp) { PropertyResolverUtils.updateProperty(sshd, FactoryManager.IDLE_TIMEOUT, 1); } else if (scheme == Scheme.ftp) { ftpServer.getServerContext().getListeners().get("default").getActiveSessions().iterator().next().setMaxIdleTime(1); } // Wait until that one connection has been closed if (scheme == Scheme.sftp) { await().atMost(10, TimeUnit.SECONDS).until(() -> Assert.assertEquals(1, closed.get())); Assert.assertEquals(1, closed.get()); } else if (scheme == Scheme.ftp) { await().atMost(10, TimeUnit.SECONDS).until( () -> Assert.assertEquals(0, ftpServer.getServerContext().getFtpStatistics().getCurrentConnectionNumber())); Assert.assertEquals(0, ftpServer.getServerContext().getFtpStatistics().getCurrentConnectionNumber()); } if (scheme == Scheme.sftp) { // Unset the timeout config for SFTP because it's global PropertyResolverUtils.updateProperty(sshd, FactoryManager.IDLE_TIMEOUT, FactoryManager.DEFAULT_IDLE_TIMEOUT); } StageRunner.Output op = runner.runProduce(RemoteDownloadSource.NOTHING_READ, 1000); // Now we've opened a new connection if (scheme == Scheme.sftp) { Assert.assertEquals(2, opened.get()); } else if (scheme == Scheme.ftp) { Assert.assertEquals(1, ftpServer.getServerContext().getFtpStatistics().getCurrentConnectionNumber()); Assert.assertEquals(2, ftpServer.getServerContext().getFtpStatistics().getTotalConnectionNumber()); } List<Record> expected = getExpectedRecords(); List<Record> actual = op.getRecords().get("lane"); Assert.assertEquals(expected.size(), actual.size()); for (int i = 0; i < 2; i++) { Assert.assertEquals(expected.get(i).get(), actual.get(i).get()); } destroyAndValidate(runner); }
Example #29
Source File: LoadTest.java From termd with Apache License 2.0 | 4 votes |
@SuppressWarnings("checkstyle:nestedtrydepth") protected void runClient(String msg) throws Exception { try (SshClient client = setupTestClient()) { PropertyResolverUtils.updateProperty(client, FactoryManager.MAX_PACKET_SIZE, 1024 * 16); PropertyResolverUtils.updateProperty(client, FactoryManager.WINDOW_SIZE, 1024 * 8); client.setKeyExchangeFactories(Arrays.asList( ClientBuilder.DH2KEX.transform(BuiltinDHFactories.dhg1))); client.setCipherFactories(Arrays.<NamedFactory<Cipher>>asList(BuiltinCiphers.blowfishcbc)); client.start(); try (ClientSession session = client.connect(getCurrentTestName(), TEST_LOCALHOST, port).verify(7L, TimeUnit.SECONDS).getSession()) { session.addPasswordIdentity(getCurrentTestName()); session.auth().verify(5L, TimeUnit.SECONDS); try (ByteArrayOutputStream out = new ByteArrayOutputStream(); ByteArrayOutputStream err = new ByteArrayOutputStream(); ClientChannel channel = session.createChannel(Channel.CHANNEL_SHELL)) { channel.setOut(out); channel.setErr(err); try { channel.open().verify(9L, TimeUnit.SECONDS); try (OutputStream pipedIn = channel.getInvertedIn()) { msg += "\nexit\n"; pipedIn.write(msg.getBytes(StandardCharsets.UTF_8)); pipedIn.flush(); } Collection<ClientChannelEvent> result = channel.waitFor(EnumSet.of(ClientChannelEvent.CLOSED), TimeUnit.SECONDS.toMillis(15L)); assertFalse("Timeout while waiting for channel closure", result.contains(ClientChannelEvent.TIMEOUT)); } finally { channel.close(false); } assertArrayEquals("Mismatched message data", msg.getBytes(StandardCharsets.UTF_8), out.toByteArray()); } } finally { client.stop(); } } }
Example #30
Source File: PortForwardingTest.java From termd with Apache License 2.0 | 4 votes |
@Before public void setUp() throws Exception { sshd = setupTestServer(); PropertyResolverUtils.updateProperty(sshd, FactoryManager.WINDOW_SIZE, 2048); PropertyResolverUtils.updateProperty(sshd, FactoryManager.MAX_PACKET_SIZE, 256); sshd.setTcpipForwardingFilter(AcceptAllForwardingFilter.INSTANCE); sshd.start(); if (!requestsQ.isEmpty()) { requestsQ.clear(); } final TcpipForwarderFactory factory = ValidateUtils.checkNotNull(sshd.getTcpipForwarderFactory(), "No TcpipForwarderFactory"); sshd.setTcpipForwarderFactory(new TcpipForwarderFactory() { private final Class<?>[] interfaces = {TcpipForwarder.class}; private final Map<String, String> method2req = new TreeMap<String, String>(String.CASE_INSENSITIVE_ORDER) { private static final long serialVersionUID = 1L; // we're not serializing it... { put("localPortForwardingRequested", TcpipForwardHandler.REQUEST); put("localPortForwardingCancelled", CancelTcpipForwardHandler.REQUEST); } }; @Override public TcpipForwarder create(ConnectionService service) { Thread thread = Thread.currentThread(); ClassLoader cl = thread.getContextClassLoader(); final TcpipForwarder forwarder = factory.create(service); return (TcpipForwarder) Proxy.newProxyInstance(cl, interfaces, new InvocationHandler() { @SuppressWarnings("synthetic-access") @Override public Object invoke(Object proxy, Method method, Object[] args) throws Throwable { Object result = method.invoke(forwarder, args); String name = method.getName(); String request = method2req.get(name); if (GenericUtils.length(request) > 0) { if (requestsQ.offer(request)) { log.info("Signal " + request); } else { log.error("Failed to offer request=" + request); } } return result; } }); } }); sshPort = sshd.getPort(); NioSocketAcceptor acceptor = new NioSocketAcceptor(); acceptor.setHandler(new IoHandlerAdapter() { @Override public void messageReceived(IoSession session, Object message) throws Exception { IoBuffer recv = (IoBuffer) message; IoBuffer sent = IoBuffer.allocate(recv.remaining()); sent.put(recv); sent.flip(); session.write(sent); } }); acceptor.setReuseAddress(true); acceptor.bind(new InetSocketAddress(0)); echoPort = acceptor.getLocalAddress().getPort(); this.acceptor = acceptor; }