mirror of
https://github.com/mRemoteNG/mRemoteNG.git
synced 2026-02-17 14:07:46 +08:00
* removed unneeded Imports * renamed namespace to mRemoteNG * changed Logfile path to %USERPROFILE%\AppData\Local\mRemoteNG\mRemoteNG.log * fixed mRemoteNG.exe.config * added more ignores to .gitignore
198 lines
8.6 KiB
VB.net
198 lines
8.6 KiB
VB.net
Imports System.Windows.Forms
|
|
Imports mRemoteNG.App.Runtime
|
|
Imports System.ComponentModel
|
|
|
|
Namespace Connection
|
|
Namespace Protocol
|
|
Public Class HTTPBase
|
|
Inherits Connection.Protocol.Base
|
|
|
|
#Region "Private Properties"
|
|
Private wBrowser As Control
|
|
Public httpOrS As String
|
|
Public defaultPort As Integer
|
|
Private tabTitle As String
|
|
#End Region
|
|
|
|
#Region "Public Methods"
|
|
Public Sub New(ByVal RenderingEngine As RenderingEngine)
|
|
Try
|
|
If RenderingEngine = RenderingEngine.Gecko Then
|
|
Me.Control = New MiniGeckoBrowser.MiniGeckoBrowser
|
|
TryCast(Me.Control, MiniGeckoBrowser.MiniGeckoBrowser).XULrunnerPath = My.Settings.XULRunnerPath
|
|
Else
|
|
Me.Control = New WebBrowser
|
|
End If
|
|
|
|
NewExtended()
|
|
Catch ex As Exception
|
|
mC.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn't create new Connection.Protocol.HTTPBase" & vbNewLine & ex.Message, True)
|
|
End Try
|
|
End Sub
|
|
|
|
Public Overridable Sub NewExtended()
|
|
End Sub
|
|
|
|
Public Overrides Function SetProps() As Boolean
|
|
MyBase.SetProps()
|
|
|
|
Try
|
|
Dim objTabPage As Crownwood.Magic.Controls.TabPage = TryCast(Me.InterfaceControl.Parent, Crownwood.Magic.Controls.TabPage)
|
|
Me.tabTitle = objTabPage.Title
|
|
Catch ex As Exception
|
|
Me.tabTitle = ""
|
|
End Try
|
|
|
|
Try
|
|
Me.wBrowser = Me.Control
|
|
|
|
If InterfaceControl.Info.RenderingEngine = RenderingEngine.Gecko Then
|
|
Dim objMiniGeckoBrowser As MiniGeckoBrowser.MiniGeckoBrowser = TryCast(wBrowser, MiniGeckoBrowser.MiniGeckoBrowser)
|
|
|
|
AddHandler objMiniGeckoBrowser.TitleChanged, AddressOf wBrowser_DocumentTitleChanged
|
|
AddHandler objMiniGeckoBrowser.LastTabRemoved, AddressOf wBrowser_LastTabRemoved
|
|
Else
|
|
Dim objWebBrowser As WebBrowser = TryCast(wBrowser, WebBrowser)
|
|
Dim objAxWebBrowser As SHDocVw.WebBrowser = DirectCast(objWebBrowser.ActiveXInstance, SHDocVw.WebBrowser)
|
|
|
|
objWebBrowser.AllowWebBrowserDrop = False
|
|
objWebBrowser.ScrollBarsEnabled = True
|
|
|
|
AddHandler objWebBrowser.DocumentTitleChanged, AddressOf wBrowser_DocumentTitleChanged
|
|
AddHandler objAxWebBrowser.NewWindow3, AddressOf wBrowser_NewWindow3
|
|
End If
|
|
|
|
Return True
|
|
Catch ex As Exception
|
|
mC.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn't SetProps (Connection.Protocol.HTTPBase)" & vbNewLine & ex.Message, True)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
|
|
Public Overrides Function Connect() As Boolean
|
|
Try
|
|
Dim strHost As String = Me.InterfaceControl.Info.Hostname
|
|
Dim strAuth As String = ""
|
|
|
|
If Me.InterfaceControl.Info.Username <> "" And Me.InterfaceControl.Info.Password <> "" Then
|
|
strAuth = "Authorization: Basic " + Convert.ToBase64String(System.Text.Encoding.ASCII.GetBytes(Me.InterfaceControl.Info.Username & ":" & Me.InterfaceControl.Info.Password)) & vbNewLine
|
|
End If
|
|
|
|
If Me.InterfaceControl.Info.Port <> defaultPort Then
|
|
If strHost.EndsWith("/") Then
|
|
strHost = strHost.Substring(0, strHost.Length - 1)
|
|
End If
|
|
|
|
If strHost.Contains(httpOrS & "://") = False Then
|
|
strHost = httpOrS & "://" & strHost
|
|
End If
|
|
|
|
If InterfaceControl.Info.RenderingEngine = RenderingEngine.Gecko Then
|
|
TryCast(wBrowser, MiniGeckoBrowser.MiniGeckoBrowser).Navigate(strHost & ":" & Me.InterfaceControl.Info.Port)
|
|
Else
|
|
TryCast(wBrowser, WebBrowser).Navigate(strHost & ":" & Me.InterfaceControl.Info.Port, Nothing, Nothing, strAuth)
|
|
End If
|
|
Else
|
|
If strHost.Contains(httpOrS & "://") = False Then
|
|
strHost = httpOrS & "://" & strHost
|
|
End If
|
|
|
|
If InterfaceControl.Info.RenderingEngine = RenderingEngine.Gecko Then
|
|
TryCast(wBrowser, MiniGeckoBrowser.MiniGeckoBrowser).Navigate(strHost)
|
|
Else
|
|
TryCast(wBrowser, WebBrowser).Navigate(strHost, Nothing, Nothing, strAuth)
|
|
End If
|
|
End If
|
|
|
|
MyBase.Connect()
|
|
Return True
|
|
Catch ex As Exception
|
|
mC.AddMessage(Messages.MessageClass.ErrorMsg, "Couldn't Connect (Connection.Protocol.HTTPBase)" & vbNewLine & ex.Message, True)
|
|
Return False
|
|
End Try
|
|
End Function
|
|
#End Region
|
|
|
|
#Region "Private Methods"
|
|
|
|
#End Region
|
|
|
|
#Region "Events"
|
|
Private Sub gex_CreateWindow(ByVal sender As Object, ByVal e As Skybound.Gecko.GeckoCreateWindowEventArgs)
|
|
e.WebBrowser = Me.wBrowser
|
|
End Sub
|
|
|
|
Private Sub wBrowser_NewWindow3(ByRef ppDisp As Object, ByRef Cancel As Boolean, ByVal dwFlags As Long, ByVal bstrUrlContext As String, ByVal bstrUrl As String)
|
|
If (dwFlags And NWMF.NWMF_OVERRIDEKEY) Then
|
|
Cancel = False
|
|
Else
|
|
Cancel = True
|
|
End If
|
|
End Sub
|
|
|
|
Private Sub wBrowser_LastTabRemoved(ByVal sender As Object)
|
|
Me.Close()
|
|
End Sub
|
|
|
|
Private Sub wBrowser_DocumentTitleChanged()
|
|
Try
|
|
Dim tabP As Crownwood.Magic.Controls.TabPage
|
|
tabP = TryCast(InterfaceControl.Parent, Crownwood.Magic.Controls.TabPage)
|
|
|
|
If tabP IsNot Nothing Then
|
|
Dim shortTitle As String = ""
|
|
|
|
If Me.InterfaceControl.Info.RenderingEngine = RenderingEngine.Gecko Then
|
|
If TryCast(wBrowser, MiniGeckoBrowser.MiniGeckoBrowser).Title.Length >= 30 Then
|
|
shortTitle = TryCast(wBrowser, MiniGeckoBrowser.MiniGeckoBrowser).Title.Substring(0, 29) & " ..."
|
|
Else
|
|
shortTitle = TryCast(wBrowser, MiniGeckoBrowser.MiniGeckoBrowser).Title
|
|
End If
|
|
Else
|
|
If TryCast(wBrowser, WebBrowser).DocumentTitle.Length >= 30 Then
|
|
shortTitle = TryCast(wBrowser, WebBrowser).DocumentTitle.Substring(0, 29) & " ..."
|
|
Else
|
|
shortTitle = TryCast(wBrowser, WebBrowser).DocumentTitle
|
|
End If
|
|
End If
|
|
|
|
If Me.tabTitle <> "" Then
|
|
tabP.Title = tabTitle & " - " & shortTitle
|
|
Else
|
|
tabP.Title = shortTitle
|
|
End If
|
|
End If
|
|
Catch ex As Exception
|
|
mC.AddMessage(Messages.MessageClass.WarningMsg, "wBrowser_DocumentTitleChanged (Connection.Protocol.HTTPBase) failed" & vbNewLine & ex.Message, True)
|
|
End Try
|
|
End Sub
|
|
#End Region
|
|
|
|
#Region "Enums"
|
|
Public Enum RenderingEngine
|
|
<Description("Internet Explorer")> _
|
|
IE = 1
|
|
<Description("Gecko (Firefox)")> _
|
|
Gecko = 2
|
|
End Enum
|
|
|
|
Private Enum NWMF
|
|
NWMF_UNLOADING = &H1
|
|
NWMF_USERINITED = &H2
|
|
NWMF_FIRST = &H4
|
|
NWMF_OVERRIDEKEY = &H8
|
|
NWMF_SHOWHELP = &H10
|
|
NWMF_HTMLDIALOG = &H20
|
|
NWMF_FROMDIALOGCHILD = &H40
|
|
NWMF_USERREQUESTED = &H80
|
|
NWMF_USERALLOWED = &H100
|
|
NWMF_FORCEWINDOW = &H10000
|
|
NWMF_FORCETAB = &H20000
|
|
NWMF_SUGGESTWINDOW = &H40000
|
|
NWMF_SUGGESTTAB = &H80000
|
|
NWMF_INACTIVETAB = &H100000
|
|
End Enum
|
|
#End Region
|
|
End Class
|
|
End Namespace
|
|
End Namespace |