lakshya1210 opened a new issue, #881:
URL: https://github.com/apache/mina-sshd/issues/881

   So I am trying to make sftp connection via proxy host and port, but could 
not able to do it
   getConnectionTimeout() = 60 seconds
   
   `
   
           public Response validateWithMinaEngine(long partnerId, 
SftpCredentials sftpCredentials) {
   
           SshClient client = null;
           ClientSession session = null;
           SftpClient sftp = null;
   
           try {
   
               ProxyConfig proxyConfig = getProxyConfigMina(true);
   
               client = createMinaClient(sftpCredentials, proxyConfig);
   
               if (proxyConfig != null) {
                   client.setClientProxyConnector(new 
HttpProxyConnector(proxyConfig.host, proxyConfig.port, getConnectionTimeout()));
               }
   
               client.start();
   
               HostConfigEntry host = new HostConfigEntry(
                   "",
                   sftpCredentials.getHost(),
                   sftpCredentials.getPort(),
                   sftpCredentials.getUser()
               );
   
               session = client.connect(host).verify(getConnectionTimeout(), 
TimeUnit.MILLISECONDS).getSession();
   
               if (StringUtils.isNotEmpty(sftpCredentials.getPassword())) {
                   session.addPasswordIdentity(sftpCredentials.getPassword());
               }
   
               session.auth().verify(getConnectionTimeout(), 
TimeUnit.MILLISECONDS);
   
               sftp = SftpClientFactory.instance().createSftpClient(session);
   
               String directory = sftpCredentials.getPathPrefix();
               if (!directory.endsWith("/")) {
                   directory += "/";
               }
               sftp.stat(directory);
   
               return Response.ok(Collections.singletonMap("valid", 
true)).build();
   
           } catch (IOException e) {
               logger.error("MINA I/O exception", 
PIILogMaskingUtils.maskExceptionPII(logger, e));
               throw new 
ExternalFileException(ExternalFileException.DATABUS_SFTP_FOLDER_ERROR);
   
           } finally {
               if (sftp != null) try { sftp.close(); } catch (Exception ignore) 
{}
               if (session != null) try { session.close(); } catch (Exception 
ignore) {}
               if (client != null) client.stop();
               UserContextProvider.setContext(userContext);
           }
       }
   
       private static SshClient createMinaClient(SftpCredentials c, ProxyConfig 
proxyConfig) {
        
           SshClient client = SshClient.setUpDefaultClient();
           if ("no".equalsIgnoreCase(NO_STRICT_HOST_KEY_CHECK)) {
               client.setServerKeyVerifier(AcceptAllServerKeyVerifier.INSTANCE);
           }
   
           CoreModuleProperties.AUTH_TIMEOUT.set(client, 
Duration.ofMillis(getConnectionTimeout()));
           SftpModuleProperties.SFTP_CHANNEL_OPEN_TIMEOUT.set(client, 
Duration.ofMillis(getConnectionTimeout()));
   
           return client;
       }
   
       public class HttpProxyConnector implements ClientProxyConnector {
       
               private final String proxyHost;
               private final int proxyPort;
               private final int timeout;
       
               public HttpProxyConnector(String proxyHost, int proxyPort, int 
timeout) {
                   this.proxyHost = proxyHost;
                   this.proxyPort = proxyPort;
                   this.timeout = timeout;
               }
       
               @Override
               public void sendClientProxyMetadata(ClientSession clientSession) 
throws IOException {
                   // For HTTP CONNECT proxy, metadata is sent during connect 
phase
                   // No additional metadata needs to be sent after SSH session 
is established
                   // This method can be empty for HTTP proxies
                   logger.error("sendClientProxyMetadata called - no action 
needed for HTTP proxy");
               }
           }
   
   `
   
   > org.apache.sshd.common.SshException: [ssh-connection]: Failed to get 
operation result within specified timeout: 60000 msec
   >    at 
org.apache.sshd.common.future.AbstractSshFuture.lambda$verifyResult$1(AbstractSshFuture.java:114)
   >    at 
org.apache.sshd.common.future.AbstractSshFuture.formatExceptionMessage(AbstractSshFuture.java:206)
   >    at 
org.apache.sshd.common.future.AbstractSshFuture.verifyResult(AbstractSshFuture.java:114)
   >    at 
org.apache.sshd.client.future.DefaultAuthFuture.verify(DefaultAuthFuture.java:56)
   >    at 
org.apache.sshd.client.future.DefaultAuthFuture.verify(DefaultAuthFuture.java:35)
   >    at 
org.apache.sshd.common.future.VerifiableFuture.verify(VerifiableFuture.java:84)
   >    at 
org.apache.sshd.common.future.VerifiableFuture.verify(VerifiableFuture.java:69)
   >    at 
com.spr.rest.http.dataflow.DataFlowRestrictedRestApi.validateWithMinaEngine(DataFlowRestrictedRestApi.java:849)
   
   error stack trace, please help here.
   Any alternative method to connect via proxy only with proxy host and proxy 
port. (there is no proxy Username)


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to