|
Imports System.Collections.Specialized
''' <summary>
''' The different modes supported for the <secureWebPages> configuration section.
''' </summary>
Public Enum SecureWebPageMode
''' <summary>
''' Indicates that web page security is on and all requests should be monitored.
''' </summary>
[On]
''' <summary>
''' Only remote requests are to be monitored.
''' </summary>
RemoteOnly
''' <summary>
''' Only local requests are to be monitored.
''' </summary>
LocalOnly
''' <summary>
''' Web page security is off and no monitoring should occur.
''' </summary>
Off
End Enum
''' <summary>
''' The different modes for bypassing security warnings.
''' </summary>
Public Enum SecurityWarningBypassMode
''' <summary>
''' Always bypass security warnings when switching to an unencrypted page.
''' </summary>
AlwaysBypass
''' <summary>
''' Only bypass security warnings when switching to an unencrypted page if the proper query parameter is present.
''' </summary>
BypassWithQueryParam
''' <summary>
''' Never bypass security warnings when switching to an unencrypted page.
''' </summary>
NeverBypass
End Enum
''' <summary>
''' SecureWebPageSettings contains the settings of a secureWebPages configuration section.
''' </summary>
Public Class SecureWebPageSettings
' Fields
Private _bypassQueryParamName As String = "BypassSecurityWarning"
Private _encryptedUri As String = String.Empty
Private _maintainPath As Boolean = True
Private _mode As SecureWebPageMode = SecureWebPageMode.On
Private _directories As SecureWebPageDirectoryCollection
Private _files As SecureWebPageFileCollection
Private _unencryptedUri As String = String.Empty
Private _warningBypassMode As SecurityWarningBypassMode = SecurityWarningBypassMode.BypassWithQueryParam
#Region " Properties "
''' <summary>
''' Gets or sets the name of the query parameter that will indicate to the module to bypass
''' any security warning if WarningBypassMode = BypassWithQueryParam.
''' </summary>
Public Property BypassQueryParamName() As String
Get
Return _bypassQueryParamName
End Get
Set(ByVal Value As String)
_bypassQueryParamName = Value
End Set
End Property
''' <summary>
''' Gets or sets the path to a URI for encrypted redirections, if any.
''' </summary>
Public Property EncryptedUri() As String
Get
Return _encryptedUri
End Get
Set(ByVal Value As String)
If Not Value Is Nothing AndAlso Value.Length > 0 Then
_encryptedUri = ValidateHostPath(Value)
Else
_encryptedUri = String.Empty
End If
End Set
End Property
''' <summary>
''' Gets or sets a flag indicating whether or not to maintain the current path when redirecting
''' to a different host.
''' </summary>
Public Property MaintainPath() As Boolean
Get
Return _maintainPath
End Get
Set(ByVal Value As Boolean)
_maintainPath = Value
End Set
End Property
''' <summary>
''' Gets or sets the mode indicating how the secure web page settings handled.
''' </summary>
Public Property Mode() As SecureWebPageMode
Get
Return _mode
End Get
Set(ByVal Value As SecureWebPageMode)
_mode = Value
End Set
End Property
''' <summary>
''' Gets the collection of directories read from the configuration section.
''' </summary>
Public ReadOnly Property Directories() As SecureWebPageDirectoryCollection
Get
Return _directories
End Get
End Property
''' <summary>
''' Gets the collection of files read from the configuration section.
''' </summary>
Public ReadOnly Property Files() As SecureWebPageFileCollection
Get
Return _files
End Get
End Property
''' <summary>
''' Gets or sets the path to a URI for unencrypted redirections, if any.
''' </summary>
Public Property UnencryptedUri() As String
Get
Return _unencryptedUri
End Get
Set(ByVal Value As String)
If Not Value Is Nothing AndAlso Value.Length > 0 Then
_unencryptedUri = ValidateHostPath(Value)
Else
_unencryptedUri = String.Empty
End If
End Set
End Property
''' <summary>
''' Gets or sets the bypass mode indicating whether or not to bypass security warnings
''' when switching to a unencrypted page.
''' </summary>
Public Property WarningBypassMode() As SecurityWarningBypassMode
Get
Return _warningBypassMode
End Get
Set(ByVal Value As SecurityWarningBypassMode)
_warningBypassMode = Value
End Set
End Property
#End Region
''' <summary>
''' The default constructor creates the needed lists.
''' </summary>
Public Sub New()
' Create the collections
_directories = New SecureWebPageDirectoryCollection
_files = New SecureWebPageFileCollection
End Sub
''' <summary>
''' Validates a host path by stripping out any unneeded elements.
''' </summary>
''' <param name="hostPath">The host path to validate.</param>
''' <returns>Returns a string that is stripped as needed.</returns>
Protected Function ValidateHostPath(ByVal hostPath As String) As String
' Use a UriBuilder to segragate the path
Dim HostUri As New UriBuilder(hostPath)
' Extract the host and path to build a string suitable for our needs
Dim Result As String = String.Concat(HostUri.Host, HostUri.Path)
If Not Result.EndsWith("/") Then
Result &= "/"
End If
Return Result
End Function
End Class
|
By viewing downloads associated with this article you agree to the Terms of Service and the article's licence.
If a file you wish to view isn't highlighted, and is a text file (not binary), please
let us know and we'll add colourisation support for it.
I began programming on my Commodore 64 at around the age of 12. After migrating to DOS and then Windows, I decided to take on the Web. Several languages and platforms later, I have settled in with .NET nicely. I am currently the owner of a software consulting company and lead application developer for a learning-based technology consultation company.
The love of a finished application is usually at war with the desire to improve it as soon as it's released (they're never really finished).