Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) SSH Tunnel with Dynamic Port ForwardingDemonstrates how to start a background thread that runs a portable SSH tunnel w/ dynamic port forwarding that the foreground thread can use for establishing connections through an SSH tunnel.
Use ChilkatAx-win32.pkg Procedure Test Handle hoChilkatGlob Boolean iSuccess Handle hoTunnel String sSshHostname Integer iSshPort String sUrl Handle hoHttp String sHtml Boolean iWaitForThreadExit String sTemp1 Boolean bTemp1 // Starting in v9.5.0.49, all Chilkat classes can be unlocked at once at the beginning of a program // by calling UnlockBundle. It requires a Bundle unlock code. Get Create (RefClass(cComChilkatGlobal)) To hoChilkatGlob If (Not(IsComObjectCreated(hoChilkatGlob))) Begin Send CreateComObject of hoChilkatGlob End Get ComUnlockBundle Of hoChilkatGlob "Anything for 30-day trial." To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoChilkatGlob To sTemp1 Showln sTemp1 Procedure_Return End // This example requires Chilkat version 9.5.0.50 or greater. Get Create (RefClass(cComChilkatSshTunnel)) To hoTunnel If (Not(IsComObjectCreated(hoTunnel))) Begin Send CreateComObject of hoTunnel End Move "sftp.example.com" To sSshHostname Move 22 To iSshPort // Connect to an SSH server and establish the SSH tunnel: Get ComConnect Of hoTunnel sSshHostname iSshPort To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoTunnel To sTemp1 Showln sTemp1 Procedure_Return End // Authenticate with the SSH server via a login/password // or with a public key. // This example demonstrates SSH password authentication. Get ComAuthenticatePw Of hoTunnel "mySshLogin" "mySshPassword" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoTunnel To sTemp1 Showln sTemp1 Procedure_Return End // Indicate that the background SSH tunnel thread will behave as a SOCKS proxy server // with dynamic port forwarding: Set ComDynamicPortForwarding Of hoTunnel To True // We may optionally require that connecting clients authenticate with our SOCKS proxy server. // To do this, set an inbound username/password. Any connecting clients would be required to // use SOCKS5 with the correct username/password. // If no inbound username/password is set, then our SOCKS proxy server will accept both // SOCKS4 and SOCKS5 unauthenticated connections. Set ComInboundSocksUsername Of hoTunnel To "chilkat123" Set ComInboundSocksPassword Of hoTunnel To "password123" // Start the listen/accept thread to begin accepting SOCKS proxy client connections. // Listen on port 1080. Get ComBeginAccepting Of hoTunnel 1080 To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoTunnel To sTemp1 Showln sTemp1 Procedure_Return End // Now that a background thread is running a SOCKS proxy server that forwards connections // through an SSH tunnel, it is possible to use any Chilkat implemented protocol that is SOCKS capable, // such as HTTP, POP3, SMTP, IMAP, FTP, etc. The protocol may use SSL/TLS because the SSL/TLS // will be passed through the SSH tunnel to the end-destination. Also, any number of simultaneous // connections may be routed through the SSH tunnel. // For this example, let's do a simple HTTPS request: Move "https://www.ethereum.org/" To sUrl Get Create (RefClass(cComChilkatHttp)) To hoHttp If (Not(IsComObjectCreated(hoHttp))) Begin Send CreateComObject of hoHttp End // Indicate that the HTTP object is to use our portable SOCKS proxy/SSH tunnel running in our background thread. Set ComSocksHostname Of hoHttp To "localhost" Set ComSocksPort Of hoHttp To 1080 Set ComSocksVersion Of hoHttp To 5 Set ComSocksUsername Of hoHttp To "chilkat123" Set ComSocksPassword Of hoHttp To "password123" Set ComSendCookies Of hoHttp To True Set ComSaveCookies Of hoHttp To True Set ComCookieDir Of hoHttp To "memory" // Do the HTTPS page fetch (through the SSH tunnel) Get ComQuickGetStr Of hoHttp sUrl To sHtml Get ComLastMethodSuccess Of hoHttp To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoHttp To sTemp1 Showln sTemp1 Procedure_Return End // Stop the background listen/accept thread: Move True To iWaitForThreadExit Get ComStopAccepting Of hoTunnel iWaitForThreadExit To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoTunnel To sTemp1 Showln sTemp1 Procedure_Return End // Close the SSH tunnel (would also kick any remaining connected clients). Get ComCloseTunnel Of hoTunnel iWaitForThreadExit To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoTunnel To sTemp1 Showln sTemp1 Procedure_Return End End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.