Tunneling-SMTP-over-SSH - WeOnlyDo Software example code



All

wodCrypt (12)
wodSSH (10)
wodSFTP (23)
wodSSHServer (1)
wodSSHTunnel (11)
wodSSHpackage
wodSFTPdll

wodSSH.NET (10)
wodSFTP.NET (24)
wodFtpDLX.NET (22)
wodWebServer.NET (10)

wodAppUpdate (13)
wodHttpDLX (8)
wodFtpDLX (22)
wodTelnetDLX
wodFTPServer (3)
wodWebServer (10)
wodVPN
wodXMPP (13)
All ** [Visual Basic] ** [C#] ** [VB.NET] **

Tunneling SMTP over SSH
VB code
Dim WithEvents wodSSHTunnel1 As wodTunnelCom
Private Sub Form_Load()
    Set wodSSHTunnel1 = New wodTunnelCom

    'Authenticate with SSH server using hostname, login, password.
    wodSSHTunnel1.HostName = "your_hostname"
    wodSSHTunnel1.Login = "your_login"
    wodSSHTunnel1.Password = "your_password"
    wodSSHTunnel1.Connect
End Sub

'Connected Event fires when wodSSHTunnel connects to a remote server.
Private Sub wodSSHTunnel1_Connected()
    'wodSSHTunnel will create secure encrypted tunnel from your computer to your SSH server.
    'No one between your computer and your SSH server will be able to listen (sniff) connection data.
    'Sending emails using your SMTP account should be safe even if you use it from some insecure places like public computers or Internet cafes for example.

    'Inside your SMTP client settings you should use local IP: 127.0.0.1 and port 25 instead real SMTP hostname.
    'In this example SMTP server is on same machine where SSH server is.  However instead using 0.0.0.0 inside Add Method line you can use some external SMTP hostname.
    wodSSHTunnel1.Channels.Add LocalListen, "127.0.0.1", 25, "0.0.0.0", 25
    wodSSHTunnel1.Channels.StartAll 'Start channels
End Sub

'Disconnected Event fires when wodSSHTunnel disconnects from the server.
Private Sub wodSSHTunnel1_Disconnected(ByVal ErrorCode As Integer, ByVal ErrorText As String)
    If ErrorCode <> 0 Then
        MsgBox "DISCONNECTED: " & ErrorText 'Connection error is received here
    End If
End Sub

'ChannelStop Event fires when a specific channel has stopped.
Private Sub wodSSHTunnel1_ChannelStop(ByVal Chan As wodSSHTunnelCOMLib.IChannel, ByVal ErrorCode As Integer, ByVal ErrorText As String)
    Debug.Print "Channel stop " & ErrorText 'Channel error is received here
End Sub

'UserConnected Event fires when a user connects to the listening channel.
Private Sub wodSSHTunnel1_UserConnected(ByVal Chan As wodSSHTunnelCOMLib.IChannel, ByVal User As wodSSHTunnelCOMLib.IUser, ByVal ErrorCode As Integer, ByVal ErrorText As String)
    Debug.Print "User from " & User.HostName & " connected"
End Sub

'UserDisconnected Event fires when a user disconnects from a channel.
Private Sub wodSSHTunnel1_UserDisconnected(ByVal Chan As wodSSHTunnelCOMLib.IChannel, ByVal User As wodSSHTunnelCOMLib.IUser, ByVal ErrorCode As Integer, ByVal ErrorText As String)
    Debug.Print "User from " & User.HostName & " left " & ErrorText
End Sub
VB.NET code
Dim WithEvents wodSSHTunnel1 As wodSSHTunnelCOMLib.wodTunnelCom
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    wodSSHTunnel1 = New wodSSHTunnelCOMLib.wodTunnelCom

    'Authenticate with SSH server using hostname, login, password.
    wodSSHTunnel1.Hostname = "your_hostname"
    wodSSHTunnel1.Login = "your_login"
    wodSSHTunnel1.Password = "your_password"
    wodSSHTunnel1.Connect()
End Sub

'Connected Event fires when wodSSHTunnel connects to a remote server.
Private Sub wodSSHTunnel1_Connected() Handles wodSSHTunnel1.Connected
    'wodSSHTunnel will create secure encrypted tunnel from your computer to your SSH server.
    'No one between your computer and your SSH server will be able to listen (sniff) connection data.
    'Sending emails using your SMTP account should be safe even if you use it from some insecure places like public computers or Internet cafes for example.

    'Inside your SMTP client settings you should use local IP: 127.0.0.1 and port 25 instead real SMTP hostname.
    'In this example SMTP server is on same machine where SSH server is.  However instead using 0.0.0.0 inside Add Method line you can use some external SMTP hostname.
    wodSSHTunnel1.Channels.Add(wodSSHTunnelCOMLib.ForwardTypesEnum.LocalListen, "127.0.0.1", 25, "0.0.0.0", 25)
    wodSSHTunnel1.Channels.StartAll() 'Start channels
End Sub

'Disconnected Event fires when wodSSHTunnel disconnects from the server.
Private Sub wodSSHTunnel1_Disconnected(ByVal ErrorCode As Short, ByVal ErrorText As String) Handles wodSSHTunnel1.Disconnected
    If ErrorCode <> 0 Then
        MsgBox("DISCONNECTED: " & ErrorText) 'Connection error is received here
    End If
End Sub

'ChannelStop Event fires when a specific channel has stopped.
Private Sub wodSSHTunnel1_ChannelStop(ByVal Chan As wodSSHTunnelCOMLib.Channel, ByVal ErrorCode As Short, ByVal ErrorText As String) Handles wodSSHTunnel1.ChannelStop
    Console.WriteLine("Channel stop " & ErrorText) 'Channel error is received here
End Sub

'UserConnected Event fires when a user connects to the listening channel.
Private Sub wodSSHTunnel1_UserConnected(ByVal Chan As wodSSHTunnelCOMLib.Channel, ByVal User As wodSSHTunnelCOMLib.User, ByVal ErrorCode As Short, ByVal ErrorText As String) Handles wodSSHTunnel1.UserConnected
    Console.WriteLine("User from " & User.Hostname & " connected")
End Sub

'UserDisconnected Event fires when a user disconnects from a channel.
Private Sub wodSSHTunnel1_UserDisconnected(ByVal Chan As wodSSHTunnelCOMLib.Channel, ByVal User As wodSSHTunnelCOMLib.User, ByVal ErrorCode As Short, ByVal ErrorText As String) Handles wodSSHTunnel1.UserDisconnected
    Console.WriteLine("User from " & User.Hostname & " left " & ErrorText)
End Sub
C# code
wodSSHTunnelCOMLib.wodTunnelCom wodSSHTunnel1;
private void Form1_Load(System.Object sender, System.EventArgs e)
{
    wodSSHTunnel1 = new wodSSHTunnelCOMLib.wodTunnelCom();
    wodSSHTunnel1.Connected += new wodSSHTunnelCOMLib._IwodTunnelComEvents_ConnectedEventHandler(wodSSHTunnel1_Connected);
    wodSSHTunnel1.Disconnected += new wodSSHTunnelCOMLib._IwodTunnelComEvents_DisconnectedEventHandler(wodSSHTunnel1_Disconnected);
    wodSSHTunnel1.ChannelStop += new wodSSHTunnelCOMLib._IwodTunnelComEvents_ChannelStopEventHandler(wodSSHTunnel1_ChannelStop);
    wodSSHTunnel1.UserConnected += new wodSSHTunnelCOMLib._IwodTunnelComEvents_UserConnectedEventHandler(wodSSHTunnel1_UserConnected);
    wodSSHTunnel1.UserDisconnected += new wodSSHTunnelCOMLib._IwodTunnelComEvents_UserDisconnectedEventHandler(wodSSHTunnel1_UserDisconnected);

    //Authenticate with SSH server using hostname, login, password.
    wodSSHTunnel1.Hostname = "your_hostname";
    wodSSHTunnel1.Login = "your_login";
    wodSSHTunnel1.Password = "your_password";
    wodSSHTunnel1.Connect(wodSSHTunnel1.Hostname, wodSSHTunnel1.Port, wodSSHTunnel1.Protocol);
}

//Connected Event fires when wodSSHTunnel connects to a remote server.
private void wodSSHTunnel1_Connected()
{
    //wodSSHTunnel will create secure encrypted tunnel from your computer to your SSH server.
    //No one between your computer and your SSH server will be able to listen (sniff) connection data.
    //Sending emails using your SMTP account should be safe even if you use it from some insecure places like public computers or Internet cafes for example.

    //Inside your SMTP client settings you should use local IP: 127.0.0.1 and port 25 instead real SMTP hostname.
    //In this example SMTP server is on same machine where SSH server is.  However instead using 0.0.0.0 inside Add Method line you can use some external SMTP hostname.
    wodSSHTunnel1.Channels.Add(wodSSHTunnelCOMLib.ForwardTypesEnum.LocalListen, "127.0.0.1", 25, "0.0.0.0", 25);
    wodSSHTunnel1.Channels.StartAll(); //Start channels
}

//Disconnected Event fires when wodSSHTunnel disconnects from the server.
private void wodSSHTunnel1_Disconnected(short ErrorCode, string ErrorText)
{
    if (ErrorCode != 0)
    {
        MessageBox.Show("DISCONNECTED: " + ErrorText); //Connection error is received here
    }
}

private void wodSSHTunnel1_ChannelStop(wodSSHTunnelCOMLib.Channel Chan, short ErrorCode, string ErrorText)
{
    Console.WriteLine("Channel stop " + ErrorText); //Channel error is received here
}

//UserConnected Event fires when a user connects to the listening channel.
private void wodSSHTunnel1_UserConnected(wodSSHTunnelCOMLib.Channel Chan, wodSSHTunnelCOMLib.User User, short ErrorCode, string ErrorText)
{
    Console.WriteLine("User from " + User.Hostname + " connected");
}

//UserDisconnected Event fires when a user disconnects from a channel.
private void wodSSHTunnel1_UserDisconnected(wodSSHTunnelCOMLib.Channel Chan, wodSSHTunnelCOMLib.User User, short ErrorCode, string ErrorText)
{
    Console.WriteLine("User from " + User.Hostname + " left " + ErrorText);
}