Code:
/ WCF / WCF / 3.5.30729.1 / untmp / Orcas / SP / ndp / cdf / src / WCF / Tools / WSATConfig / Configuration / FirewallWrapper.cs / 1 / 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; } Listports = 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. // Copyright (c) Microsoft Corporation. All rights reserved.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- CompositionTarget.cs
- LocatorBase.cs
- AlternateViewCollection.cs
- ColorBuilder.cs
- wgx_sdk_version.cs
- UpWmlPageAdapter.cs
- DataGridViewRowHeaderCell.cs
- QueryContinueDragEvent.cs
- CheckBoxField.cs
- Rfc4050KeyFormatter.cs
- RelationHandler.cs
- URLIdentityPermission.cs
- BooleanExpr.cs
- _AutoWebProxyScriptHelper.cs
- RadioButtonPopupAdapter.cs
- GeneralTransform.cs
- ToolBarButtonClickEvent.cs
- PromptStyle.cs
- TextEditorMouse.cs
- HostingEnvironmentSection.cs
- CaseInsensitiveOrdinalStringComparer.cs
- MarginsConverter.cs
- StoreAnnotationsMap.cs
- ListViewSelectEventArgs.cs
- LinkedResourceCollection.cs
- LocatorBase.cs
- DesignerSerializationOptionsAttribute.cs
- _BasicClient.cs
- StylusCollection.cs
- MultiTrigger.cs
- DataGridRow.cs
- TokenBasedSetEnumerator.cs
- Queue.cs
- NTAccount.cs
- ResourcePermissionBase.cs
- BooleanSwitch.cs
- PolicyLevel.cs
- FixedNode.cs
- AnimationStorage.cs
- MimeWriter.cs
- ToolStripSeparator.cs
- PopupRoot.cs
- BaseDataListPage.cs
- GridViewSortEventArgs.cs
- RootProfilePropertySettingsCollection.cs
- KeyValuePair.cs
- OrthographicCamera.cs
- SystemWebCachingSectionGroup.cs
- ImageSourceConverter.cs
- EntitySetBase.cs
- AmbientValueAttribute.cs
- SimpleExpression.cs
- InternalEnumValidator.cs
- DragCompletedEventArgs.cs
- IImplicitResourceProvider.cs
- DurationConverter.cs
- CellIdBoolean.cs
- CodeMemberMethod.cs
- MatrixTransform.cs
- AuthStoreRoleProvider.cs
- WebDescriptionAttribute.cs
- TriggerAction.cs
- DataRelationCollection.cs
- AnchoredBlock.cs
- _ContextAwareResult.cs
- TearOffProxy.cs
- DesignTimeTemplateParser.cs
- XAMLParseException.cs
- XmlMapping.cs
- XmlSignatureProperties.cs
- DesignBindingPropertyDescriptor.cs
- Assembly.cs
- odbcmetadatacolumnnames.cs
- HashHelper.cs
- EntityDataSourceViewSchema.cs
- CqlLexerHelpers.cs
- TabletDevice.cs
- SimpleApplicationHost.cs
- DynamicILGenerator.cs
- ConversionValidationRule.cs
- TypeRestriction.cs
- GeometryHitTestParameters.cs
- DefaultWorkflowSchedulerService.cs
- AlphabetConverter.cs
- SignedXmlDebugLog.cs
- ObjectDataSourceMethodEventArgs.cs
- NetCodeGroup.cs
- AncillaryOps.cs
- FormViewRow.cs
- XmlTextReaderImplHelpers.cs
- XamlParser.cs
- TextDecoration.cs
- ReplyAdapterChannelListener.cs
- CheckableControlBaseAdapter.cs
- UIElement.cs
- UnsafeNativeMethods.cs
- TypeGenericEnumerableViewSchema.cs
- TraceContextRecord.cs
- FileLogRecordEnumerator.cs
- PropertySet.cs