WMS IP Address Authorization Plug-in Properties
You can use the WMS IP Address Authorization plug-in to allow or deny access to specific IP addresses or to a group of IP addresses by specifying a subnet address and mask. This plug-in is useful, for example, if you want to allow access only to users on a specific intranet. Or, if you believe there is a security violation on a server, you could quickly enable this plug-in to deny access to the IP address that is violating security. For administration information about this plug-in, see Windows Media Services Help.
There are three interfaces that can be used to configure the WMS IP Address Authorization plug-in programmatically. The IWMSIPEntry interface exposes the following properties.
Property |
Description |
---|---|
Address |
Specifies and retrieves an IP address or range of IP addresses that can be used to allow or disallow client connections. |
Mask |
Specifies and retrieves an IP address mask. |
The IWMSIPList interface contains a collection of IWMSIPEntry objects and exposes the following methods.
Method |
Description |
---|---|
Add |
Adds an IWMSIPEntry object to the IWMSIPList collection. |
Remove |
Removes a specific IWMSIPEntry object from the IWMSIPList collection. |
The IWMSIPAdmin interface exposes the following properties.
Property |
Description |
---|---|
AccessListOptions |
Retrieves an enumeration value indicating default access permissions for unspecified IP addresses. |
AllowIP |
Retrieves an IWMSIPList object containing a collection of IP addresses a client can use to connect to the server. |
DisallowIP |
Retrieves an IWMSIPList object containing a collection of IP addresses a client cannot use to connect to the server. |
The following examples illustrate how to use the IWMSIPAdmin interface to retrieve a list of restricted IP addresses.
Note
The administrative user interface included with the plug-in allows restrictions based only on IPv4 addresses. You can use the custom interface exposed by the plug-in to impose restrictions based on IPv6 addresses. For more information see IWMSIPList.AddIWMSIPList.Add (Visual Basic .NET).
Visual Basic .NET Example
Imports Microsoft.WindowsMediaServices.Interop
Imports System.Runtime.InteropServices
Private Sub SetIPAddrPluginProps()
' Declare variables.
Dim Server As WMSServer
Dim Plugin As IWMSPlugin
Dim IPAdmin As IWMSIPAdmin
Dim IPList As IWMSIPList
Try
' Create a new WMSServer object.
Server = New WMSServer()
' Retrieve the IWMSPlugin object for the
' WMS IP Address Authorization plug-in.
Plugin = Server.EventHandlers("WMS IP Address Authorization")
' Retrieve the administrative interface for the
' WMS IP Address Authorization plug-in.
IPAdmin = Plugin.CustomInterface()
' Configure the plug-in to allow all IP addresses
' except those specifically set to be denied.
IPAdmin.AccessListOptions = WMS_IP_ACCESS_OPTIONS.WMS_IP_ACCESS_ALLOW_BY_DEFAULT
' Retrieve the list of banned IP addresses.
IPList = IPAdmin.DisallowIP
Catch excCom As COMException
' TODO: Handle COM exceptions.
Catch exc As Exception
' TODO: Handle exceptions here.
Finally
' TODO: Perform clean-up here.
End Try
End Sub
C# Example
using Microsoft.WindowsMediaServices.Interop;
using System.Runtime.InteropServices;
// Declare variables.
WMSServer Server;
IWMSPlugin Plugin;
IWMSIPAdmin IPAdmin;
IWMSIPList IPList;
try
{
// Create a new WMSServer object.
Server = new WMSServerClass();
// Retrieve the IWMSPlugin object for the
// IP address authorization plug-in.
Plugin = Server.EventHandlers["WMS IP Address Authorization"];
// Retrieve the administrative interface for the
// IP address authorization plug-in.
IPAdmin = (IWMSIPAdmin)Plugin.CustomInterface;
// Configure the plug-in to allow all IP addresses
// except those specifically set to be denied.
IPAdmin.AccessListOptions = WMS_IP_ACCESS_OPTIONS.WMS_IP_ACCESS_ALLOW_BY_DEFAULT;
// Retrieve the list of banned IP addresses.
IPList = IPAdmin.DisallowIP;
}
catch (COMException comExc) {
// TODO: Handle COM exceptions.
}
catch (Exception exc)
{
// TODO: Handle exceptions here.
}
finally
{
// TODO: Perform clean-up here.
}
C++
#include <windows.h>
#include <atlbase.h>
// To access system plug-in interfaces, the
// type library must be imported as shown.
#import "WMSServerTypeLib.dll" no_namespace named_guids \
raw_interfaces_only
// Declare variables and interface pointers.
IWMSServer* pServer = NULL;
IWMSPlugins* pPlugins = NULL;
IWMSPlugin* pPlugin = NULL;
IDispatch* pDispatch = NULL;
IWMSIPAdmin* pIPAdmin = NULL;
IWMSIPList* pIPList = NULL;
CComVariant varIndex;
HRESULT hr = S_OK;
// Initialize the COM library and retrieve a pointer
// to an IWMSServer interface.
hr = CoInitialize(NULL);
hr = CoCreateInstance(CLSID_WMSServer,
NULL,
CLSCTX_ALL,
IID_IWMSServer,
(void **)&pServer);
if (FAILED(hr)) goto EXIT;
// Retrieve a pointer to an IWMSPlugins interface
// containing the collection of authorization plug-ins.
hr = pServer->get_EventHandlers(&pPlugins);
if (FAILED(hr)) goto EXIT;
// Retrieve a pointer to the IWMSPlugin interface for the
// WMS IP Address Authorization plug-in.
varIndex = "WMS IP Address Authorization";
hr = pPlugins->get_Item(varIndex, &pPlugin);
if (FAILED(hr)) goto EXIT;
// Retrieve an IDispatch pointer to the administration
// interface for the plug-in.
hr = pPlugin->get_CustomInterface(&pDispatch);
if (FAILED(hr)) goto EXIT;
// Call QueryInterface() to retrieve a pointer to the
// IWMSIPAdmin interface.
hr = pDispatch->QueryInterface(IID_IWMSIPAdmin, (void**)&pIPAdmin);
if (FAILED(hr)) goto EXIT;
// Configure the plug-in to allow all IP addresses
// except those specifically set to be denied.
hr = pIPAdmin->put_AccessListOptions(WMS_IP_ACCESS_ALLOW_BY_DEFAULT);
if (FAILED(hr)) goto EXIT;
// Retrieve the list of banned IP addresses.
hr = pIPAdmin->get_DisallowIP(&pIPList);
if (FAILED(hr)) goto EXIT;
EXIT:
// TODO: Release temporary COM objects and uninitialize COM.
See Also
Reference
IWMSIPAdmin Object (Visual Basic .NET)
IWMSIPEntry Object (Visual Basic .NET)
IWMSIPList Object (Visual Basic .NET)