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; } 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.
Link Menu
This book is available now!
Buy at Amazon US or
Buy at Amazon UK
- TemplatePropertyEntry.cs
- SHA256CryptoServiceProvider.cs
- XmlText.cs
- SequentialUshortCollection.cs
- BamlReader.cs
- OwnerDrawPropertyBag.cs
- ManagementInstaller.cs
- BooleanAnimationBase.cs
- QilScopedVisitor.cs
- ExceptionHandlerDesigner.cs
- MultiByteCodec.cs
- XmlElement.cs
- ValueUnavailableException.cs
- DataGridViewRowsAddedEventArgs.cs
- rsa.cs
- PropertyTabAttribute.cs
- WebHttpElement.cs
- GenericIdentity.cs
- ItemMap.cs
- Variable.cs
- Matrix3DConverter.cs
- ControlBuilder.cs
- HtmlEncodedRawTextWriter.cs
- keycontainerpermission.cs
- TextEffect.cs
- SequentialWorkflowRootDesigner.cs
- CodeBlockBuilder.cs
- RoleService.cs
- MethodBuilderInstantiation.cs
- TokenBasedSet.cs
- CounterSample.cs
- SecurityException.cs
- EntityType.cs
- ProcessThread.cs
- X509CertificateEndpointIdentity.cs
- DataBindingList.cs
- TaskHelper.cs
- TextRangeProviderWrapper.cs
- PaginationProgressEventArgs.cs
- Pkcs7Signer.cs
- __Filters.cs
- basemetadatamappingvisitor.cs
- MetabaseSettingsIis7.cs
- WindowsStatic.cs
- _BufferOffsetSize.cs
- CharEntityEncoderFallback.cs
- ResourceKey.cs
- TextRunProperties.cs
- DesignerUtility.cs
- Expression.cs
- UInt32Storage.cs
- MarkupProperty.cs
- AbandonedMutexException.cs
- SystemIPv6InterfaceProperties.cs
- LinqDataSourceView.cs
- MILUtilities.cs
- ConfigurationPropertyCollection.cs
- TreeView.cs
- MessageHeaderDescription.cs
- BrowserCapabilitiesFactory.cs
- PageThemeCodeDomTreeGenerator.cs
- SystemThemeKey.cs
- ListViewHitTestInfo.cs
- Substitution.cs
- SqlProviderServices.cs
- DeferredElementTreeState.cs
- EditorPartCollection.cs
- Variant.cs
- CodeAccessPermission.cs
- SemanticResultKey.cs
- ContentType.cs
- BitmapInitialize.cs
- ComponentDispatcherThread.cs
- DbModificationCommandTree.cs
- StringArrayConverter.cs
- SiteMapDesignerDataSourceView.cs
- CryptoApi.cs
- WebConfigurationManager.cs
- InertiaRotationBehavior.cs
- TreeNodeStyleCollection.cs
- DataGridViewCellFormattingEventArgs.cs
- CodeSubDirectory.cs
- metadatamappinghashervisitor.hashsourcebuilder.cs
- OracleException.cs
- OutputCacheProfileCollection.cs
- BamlVersionHeader.cs
- UnsafeNativeMethods.cs
- ListViewAutomationPeer.cs
- BitmapPalette.cs
- XamlParser.cs
- __Error.cs
- EntityProxyFactory.cs
- CqlLexer.cs
- SpeakCompletedEventArgs.cs
- AssemblySettingAttributes.cs
- AtlasWeb.Designer.cs
- PropertyGeneratedEventArgs.cs
- HeaderCollection.cs
- ContainerVisual.cs
- FileDialogPermission.cs