Code:
/ 4.0 / 4.0 / untmp / DEVDIV_TFS / Dev10 / Releases / RTMRel / ndp / cdf / src / WCF / Tools / WSATConfig / Configuration / FirewallWrapper.cs / 1305376 / FirewallWrapper.cs
//------------------------------------------------------------------------------
// Copyright (c) Microsoft Corporation. All rights reserved.
//-----------------------------------------------------------------------------
namespace Microsoft.Tools.ServiceModel.WsatConfig
{
using System;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using System.Collections;
using System.Security.Permissions;
class FirewallWrapper
{
const string FwMgrClassId = "{304CE942-6E39-40D8-943A-B913C40C9CD4}";
const string FwOpenPortClassId = "{0CA545C6-37AD-4A6C-BF92-9F7610067EF5}";
INetFirewallMgr manager = null;
INetFirewallOpenPortsCollection openPorts = null;
INetFirewallPolicy localPolicy = null;
INetFirewallProfile currentProfile = null;
[SecurityPermission(SecurityAction.LinkDemand, UnmanagedCode = true)]
internal FirewallWrapper()
{
try
{
this.manager = (INetFirewallMgr)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid(FwMgrClassId)));
this.localPolicy = this.manager.LocalPolicy;
this.currentProfile = this.localPolicy.CurrentProfile;
this.openPorts = this.currentProfile.GloballyOpenPorts;
}
catch (COMException)
{
this.manager = null;
this.localPolicy = null;
this.currentProfile = null;
this.openPorts = null;
}
catch (MethodAccessException ex)
{
throw new WsatAdminException(WsatAdminErrorCode.FIREWALL_ACCESS_DENIED, SR.GetString(SR.FirewallAccessDenied), ex);
}
}
bool IsHttpsPortOpened(int port)
{
foreach (INetFirewallOpenPort openPort in this.openPorts)
{
if (openPort.Port == port)
{
return true;
}
}
return false;
}
internal void AddHttpsPort(int portToAdd)
{
//
//if portToAdd is already opened, adding it anyway will remove the old entry
//
if (portToAdd < 0 || this.openPorts == null || IsHttpsPortOpened(portToAdd))
{
return;
}
try
{
INetFirewallOpenPort openPort = (INetFirewallOpenPort)Activator.CreateInstance(Type.GetTypeFromCLSID(new Guid(FwOpenPortClassId)));
openPort.Enabled = true;
openPort.IPVersion = NetFirewallIPVersion.Any;
openPort.Name = SR.GetString(SR.HTTPSPortName);
openPort.Port = portToAdd;
openPort.Protocol = NetFirewallIPProtocol.Tcp;
openPort.Scope = NetFirewallScope.All;
this.openPorts.Add(openPort);
}
catch (COMException e)
{
throw new WsatAdminException(WsatAdminErrorCode.UNEXPECTED_FIREWALL_CONFIG_ERROR,
SR.GetString(SR.UnexpectedFirewallError, e.Message), e);
}
catch (MethodAccessException e)
{
throw new WsatAdminException(WsatAdminErrorCode.FIREWALL_ACCESS_DENIED, SR.GetString(SR.FirewallAccessDenied), e);
}
catch (UnauthorizedAccessException e)
{
throw new WsatAdminException(WsatAdminErrorCode.FIREWALL_ACCESS_DENIED, SR.GetString(SR.FirewallAccessDenied), e);
}
}
internal void RemoveHttpsPort(int portToRemove)
{
if (portToRemove<0 || this.openPorts == null)
{
return;
}
List ports = new List();
foreach (INetFirewallOpenPort port in this.openPorts)
{
if (port.Port == portToRemove && Utilities.SafeCompare(port.Name, SR.GetString(SR.HTTPSPortName)))
{
ports.Add(port);
// continue to remove other ports under the WSAT port name to minimize security attack
// surface for the machine, but throw out an exception in the end
}
}
bool accessDenied = false;
foreach (INetFirewallOpenPort port in ports)
{
try
{
this.openPorts.Remove(port.Port, port.Protocol);
}
catch (UnauthorizedAccessException)
{
accessDenied = true;
}
}
if (accessDenied)
{
// at least one port could not be removed due to permission denied
throw new WsatAdminException(WsatAdminErrorCode.FIREWALL_ACCESS_DENIED,
SR.GetString(SR.FirewallAccessDenied));
}
}
}
}
// File provided for Reference Use Only by Microsoft Corporation (c) 2007.
Link Menu

This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- SelectionRange.cs
- StrokeCollectionConverter.cs
- PropertyGridCommands.cs
- SpellCheck.cs
- DesignTimeSiteMapProvider.cs
- WebConfigurationHostFileChange.cs
- SR.cs
- SemanticAnalyzer.cs
- XmlAttributeCache.cs
- SqlErrorCollection.cs
- SatelliteContractVersionAttribute.cs
- XPathBinder.cs
- latinshape.cs
- Accessible.cs
- SortAction.cs
- BrowserCapabilitiesFactory.cs
- TreeWalker.cs
- ImageConverter.cs
- XmlText.cs
- CachedRequestParams.cs
- StructuralType.cs
- ActivityTypeResolver.xaml.cs
- XsltLoader.cs
- XPathNodeList.cs
- SelectedDatesCollection.cs
- Point3DCollectionValueSerializer.cs
- HwndSubclass.cs
- DerivedKeySecurityToken.cs
- DoubleAverageAggregationOperator.cs
- FilterElement.cs
- PrincipalPermissionMode.cs
- CallContext.cs
- TransformCollection.cs
- DependencyObjectPropertyDescriptor.cs
- FirstMatchCodeGroup.cs
- BooleanConverter.cs
- SecUtil.cs
- EditingMode.cs
- AliasedSlot.cs
- BehaviorDragDropEventArgs.cs
- RightsManagementSuppressedStream.cs
- DockingAttribute.cs
- PagePropertiesChangingEventArgs.cs
- ReflectionUtil.cs
- SqlUserDefinedAggregateAttribute.cs
- CmsUtils.cs
- ToolStripRendererSwitcher.cs
- SafeMemoryMappedFileHandle.cs
- DataColumn.cs
- ResourceType.cs
- TypeCollectionDesigner.xaml.cs
- VisualBrush.cs
- TableNameAttribute.cs
- ListCollectionView.cs
- BeginStoryboard.cs
- MethodBuilder.cs
- SimpleHandlerBuildProvider.cs
- LineServicesCallbacks.cs
- WorkflowApplicationCompletedEventArgs.cs
- TrackingStringDictionary.cs
- WindowsProgressbar.cs
- CallbackWrapper.cs
- ToolBar.cs
- WS2007HttpBinding.cs
- HttpSocketManager.cs
- ListMarkerSourceInfo.cs
- WizardStepBase.cs
- BrowserTree.cs
- AssemblyResourceLoader.cs
- RepeatButton.cs
- TextWriterEngine.cs
- DataReceivedEventArgs.cs
- DataTemplate.cs
- CustomLineCap.cs
- TreeIterators.cs
- LinqExpressionNormalizer.cs
- XLinq.cs
- StatusBar.cs
- RemotingException.cs
- HttpContextServiceHost.cs
- basemetadatamappingvisitor.cs
- DeviceContexts.cs
- TextOutput.cs
- EmptyQuery.cs
- StylusOverProperty.cs
- Dictionary.cs
- SQLInt16Storage.cs
- FileDetails.cs
- HighlightComponent.cs
- CheckStoreFileValidityRequest.cs
- DefaultExpressionVisitor.cs
- BitmapEffectvisualstate.cs
- Error.cs
- Repeater.cs
- ListBase.cs
- _AcceptOverlappedAsyncResult.cs
- SymDocumentType.cs
- CollectionViewSource.cs
- Win32.cs
- TemplateEditingFrame.cs