|
namespace System.Web {
using System.Web;
using System.Web.Util;
using System.Security;
using System.Security.Permissions;
internal static class InternalSecurityPermissions {
private static IStackWalk _unrestricted;
private static IStackWalk _unmanagedCode;
private static IStackWalk _controlPrincipal;
private static IStackWalk _reflection;
private static IStackWalk _appPathDiscovery;
private static IStackWalk _controlThread;
private static IStackWalk _levelLow;
private static IStackWalk _levelMedium;
private static IStackWalk _levelHigh;
//
// Static permissions as properties, created on demand
//
internal static IStackWalk Unrestricted {
get {
if (_unrestricted == null)
_unrestricted = new PermissionSet(PermissionState.Unrestricted);
Debug.Trace("Permissions", "Unrestricted Set");
return _unrestricted;
}
}
internal static IStackWalk UnmanagedCode {
get {
if (_unmanagedCode == null)
_unmanagedCode = new SecurityPermission(SecurityPermissionFlag.UnmanagedCode);
Debug.Trace("Permissions", "UnmanagedCode");
return _unmanagedCode;
}
}
internal static IStackWalk ControlPrincipal {
get {
if (_controlPrincipal == null)
_controlPrincipal = new SecurityPermission(SecurityPermissionFlag.ControlPrincipal);
Debug.Trace("Permissions", "ControlPrincipal");
return _controlPrincipal;
}
}
internal static IStackWalk Reflection {
get {
if (_reflection == null)
_reflection = new ReflectionPermission(ReflectionPermissionFlag.MemberAccess);
Debug.Trace("Permissions", "Reflection");
return _reflection;
}
}
internal static IStackWalk AppPathDiscovery {
get {
if (_appPathDiscovery == null)
_appPathDiscovery = new FileIOPermission(FileIOPermissionAccess.PathDiscovery, HttpRuntime.AppDomainAppPathInternal);
Debug.Trace("Permissions", "AppPathDiscovery");
return _appPathDiscovery;
}
}
internal static IStackWalk ControlThread {
get {
if (_controlThread == null)
_controlThread = new SecurityPermission(SecurityPermissionFlag.ControlThread);
Debug.Trace("Permissions", "ControlThread");
return _controlThread;
}
}
internal static IStackWalk AspNetHostingPermissionLevelLow {
get {
if (_levelLow == null)
_levelLow = new AspNetHostingPermission(AspNetHostingPermissionLevel.Low);
Debug.Trace("Permissions", "AspNetHostingPermissionLevelLow");
return _levelLow;
}
}
internal static IStackWalk AspNetHostingPermissionLevelMedium {
get {
if (_levelMedium == null)
_levelMedium = new AspNetHostingPermission(AspNetHostingPermissionLevel.Medium);
Debug.Trace("Permissions", "AspNetHostingPermissionLevelMedium");
return _levelMedium;
}
}
internal static IStackWalk AspNetHostingPermissionLevelHigh {
get {
if (_levelHigh == null)
_levelHigh = new AspNetHostingPermission(AspNetHostingPermissionLevel.High);
Debug.Trace("Permissions", "AspNetHostingPermissionLevelHigh");
return _levelHigh;
}
}
// Parameterized permissions
internal static IStackWalk FileReadAccess(String filename) {
Debug.Trace("Permissions", "FileReadAccess(" + filename + ")");
return new FileIOPermission(FileIOPermissionAccess.Read, filename);
}
internal static IStackWalk FileWriteAccess(String filename) {
Debug.Trace("Permissions", "FileWriteAccess(" + filename + ")");
return new FileIOPermission(FileIOPermissionAccess.Write | FileIOPermissionAccess.Append, filename);
}
internal static IStackWalk PathDiscovery(String path) {
Debug.Trace("Permissions", "PathDiscovery(" + path + ")");
return new FileIOPermission(FileIOPermissionAccess.PathDiscovery, path);
}
}
}
|