Chilkat HOME ASP Visual Basic VB.NET C# C C++ MFC Delphi FoxPro Java Perl Python Ruby SQL Server VBScript
SSH Tunnel using an HTTP proxyDemonstrates how to establish an SSH tunnel that uses an HTTP proxy. <?php $sshTunnel = new COM("Chilkat.SshTunnel"); $success = $sshTunnel->UnlockComponent('30-day trial'); if ($success != true) { print $sshTunnel->lastErrorText() . "\n"; exit; } // The DestHostname / DestPort is the server with which we // are ultimately communicating. $sshTunnel->DestPort = 1433; $sshTunnel->DestHostname = 'myServer.com'; // Provide information about the location of the SSH server, // and the authentication to be used with it. This is the // login information for the SSH server. $sshTunnel->SshHostname = '192.168.1.108'; $sshTunnel->SshPort = 22; $sshTunnel->SshLogin = 'mySshLogin'; $sshTunnel->SshPassword = 'mySshPassword'; // To connect through an HTTP proxy, set the HttpProxyHostname // and HttpProxyPort properties to the hostname (or IP address) // and port of the HTTP proxy. Typical port numbers used by // HTTP proxy servers are 3128 and 8080. $sshTunnel->HttpProxyHostname = 'www.my-http-proxy.com'; $sshTunnel->HttpProxyPort = 3128; // Important: Your HTTP proxy server must allow non-HTTP // traffic to pass. Otherwise this does not work. // Start accepting connections in a background thread. // The SSH tunnels are autonomously run in a background // thread. There is one background thread for accepting // connections, and another for managing the tunnel pool. $listenPort = 3316; $success = $sshTunnel->BeginAccepting($listenPort); if ($success != true) { print $sshTunnel->lastErrorText() . "\n"; exit; } // At this point you may write code to communicate with // the server at DestHostname/DestPort. This could be anything -- // it could be WinSock, ADO/ODBC code, Chilkat Socket, etc. // However, instead of connecting directly to DestHostname/DestPort, // your code would connect to localhost:3316 (because this // is the listenPort of the SSH Tunnel // This is what happens when you connect to localhost:3316 // 1) The connection is accepted by the SSH tunnel // background thread (which was started in the call to BeginAccepting). // 2) In the background thread, a connection to a remote SSH // server is established via an HTTP proxy. // 3) Port-forwarding is setup so that the remote SSH server connects // to the DestHostname/DestPort. // 4) Data sent by your application to localhost:3316 is ultimately forwarded to DestHostname/DestPort // 5) Data sent back from DestHostname/DestPort is forwarded back and received by your application // When you're finished with the connection, you may // stop the background tunnel threads: // Stop the background thread that accepts new connections: $success = $sshTunnel->StopAccepting(); if ($success != true) { print $sshTunnel->lastErrorText() . "\n"; exit; } // If any background tunnels are still in existence (and managed // by a single SSH tunnel pool background thread), stop them... $maxWaitMs = 1000; $success = $sshTunnel->StopAllTunnels($maxWaitMs); if ($success != true) { print $sshTunnel->lastErrorText() . "\n"; exit; } ?> |
Need a specific example? Send a request to support@chilkatsoft.com
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.