Terraria v1.4.4.9
Terraria source code documentation
Loading...
Searching...
No Matches
DiscretionaryAcl.cs
Go to the documentation of this file.
2
4
5public sealed class DiscretionaryAcl : CommonAcl
6{
7 private static readonly SecurityIdentifier _sidEveryone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
8
10
12 {
13 get
14 {
16 }
17 set
18 {
20 }
21 }
22
23 public DiscretionaryAcl(bool isContainer, bool isDS, int capacity)
24 : this(isContainer, isDS, isDS ? GenericAcl.AclRevisionDS : GenericAcl.AclRevision, capacity)
25 {
26 }
27
28 public DiscretionaryAcl(bool isContainer, bool isDS, byte revision, int capacity)
29 : base(isContainer, isDS, revision, capacity)
30 {
31 }
32
33 public DiscretionaryAcl(bool isContainer, bool isDS, RawAcl? rawAcl)
34 : this(isContainer, isDS, rawAcl, trusted: false)
35 {
36 }
37
38 internal DiscretionaryAcl(bool isContainer, bool isDS, RawAcl rawAcl, bool trusted)
39 : base(isContainer, isDS, (rawAcl == null) ? new RawAcl(isDS ? GenericAcl.AclRevisionDS : GenericAcl.AclRevision, 0) : rawAcl, trusted, isDacl: true)
40 {
41 }
42
43 public void AddAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
44 {
45 CheckAccessType(accessType);
46 CheckFlags(inheritanceFlags, propagationFlags);
48 AddQualifiedAce(sid, (accessType != 0) ? AceQualifier.AccessDenied : AceQualifier.AccessAllowed, accessMask, GenericAce.AceFlagsFromInheritanceFlags(inheritanceFlags, propagationFlags), ObjectAceFlags.None, Guid.Empty, Guid.Empty);
49 }
50
51 public void SetAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
52 {
53 CheckAccessType(accessType);
54 CheckFlags(inheritanceFlags, propagationFlags);
56 SetQualifiedAce(sid, (accessType != 0) ? AceQualifier.AccessDenied : AceQualifier.AccessAllowed, accessMask, GenericAce.AceFlagsFromInheritanceFlags(inheritanceFlags, propagationFlags), ObjectAceFlags.None, Guid.Empty, Guid.Empty);
57 }
58
59 public bool RemoveAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
60 {
61 CheckAccessType(accessType);
63 return RemoveQualifiedAces(sid, (accessType != 0) ? AceQualifier.AccessDenied : AceQualifier.AccessAllowed, accessMask, GenericAce.AceFlagsFromInheritanceFlags(inheritanceFlags, propagationFlags), saclSemantics: false, ObjectAceFlags.None, Guid.Empty, Guid.Empty);
64 }
65
66 public void RemoveAccessSpecific(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
67 {
68 CheckAccessType(accessType);
70 RemoveQualifiedAcesSpecific(sid, (accessType != 0) ? AceQualifier.AccessDenied : AceQualifier.AccessAllowed, accessMask, GenericAce.AceFlagsFromInheritanceFlags(inheritanceFlags, propagationFlags), ObjectAceFlags.None, Guid.Empty, Guid.Empty);
71 }
72
74 {
75 AddAccess(accessType, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
76 }
77
78 public void AddAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
79 {
80 if (!base.IsDS)
81 {
83 }
84 CheckAccessType(accessType);
85 CheckFlags(inheritanceFlags, propagationFlags);
87 AddQualifiedAce(sid, (accessType != 0) ? AceQualifier.AccessDenied : AceQualifier.AccessAllowed, accessMask, GenericAce.AceFlagsFromInheritanceFlags(inheritanceFlags, propagationFlags), objectFlags, objectType, inheritedObjectType);
88 }
89
91 {
92 SetAccess(accessType, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
93 }
94
95 public void SetAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
96 {
97 if (!base.IsDS)
98 {
100 }
101 CheckAccessType(accessType);
102 CheckFlags(inheritanceFlags, propagationFlags);
104 SetQualifiedAce(sid, (accessType != 0) ? AceQualifier.AccessDenied : AceQualifier.AccessAllowed, accessMask, GenericAce.AceFlagsFromInheritanceFlags(inheritanceFlags, propagationFlags), objectFlags, objectType, inheritedObjectType);
105 }
106
108 {
109 return RemoveAccess(accessType, sid, rule.AccessMask, rule.InheritanceFlags, rule.PropagationFlags, rule.ObjectFlags, rule.ObjectType, rule.InheritedObjectType);
110 }
111
112 public bool RemoveAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
113 {
114 if (!base.IsDS)
115 {
117 }
118 CheckAccessType(accessType);
120 return RemoveQualifiedAces(sid, (accessType != 0) ? AceQualifier.AccessDenied : AceQualifier.AccessAllowed, accessMask, GenericAce.AceFlagsFromInheritanceFlags(inheritanceFlags, propagationFlags), saclSemantics: false, objectFlags, objectType, inheritedObjectType);
121 }
122
127
128 public void RemoveAccessSpecific(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
129 {
130 if (!base.IsDS)
131 {
133 }
134 CheckAccessType(accessType);
136 RemoveQualifiedAcesSpecific(sid, (accessType != 0) ? AceQualifier.AccessDenied : AceQualifier.AccessAllowed, accessMask, GenericAce.AceFlagsFromInheritanceFlags(inheritanceFlags, propagationFlags), objectFlags, objectType, inheritedObjectType);
137 }
138
139 internal override void OnAclModificationTried()
140 {
142 }
143
144 internal static DiscretionaryAcl CreateAllowEveryoneFullAccess(bool isDS, bool isContainer)
145 {
146 DiscretionaryAcl discretionaryAcl = new DiscretionaryAcl(isContainer, isDS, 1);
147 discretionaryAcl.AddAccess(AccessControlType.Allow, _sidEveryone, -1, isContainer ? (InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit) : InheritanceFlags.None, PropagationFlags.None);
148 discretionaryAcl.everyOneFullAccessForNullDacl = true;
149 return discretionaryAcl;
150 }
151}
static string InvalidOperation_OnlyValidForDS
Definition SR.cs:94
Definition SR.cs:7
bool RemoveQualifiedAces(SecurityIdentifier sid, AceQualifier qualifier, int accessMask, AceFlags flags, bool saclSemantics, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
Definition CommonAcl.cs:894
void RemoveQualifiedAcesSpecific(SecurityIdentifier sid, AceQualifier qualifier, int accessMask, AceFlags flags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
void CheckFlags(InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
Definition CommonAcl.cs:802
void AddQualifiedAce(SecurityIdentifier sid, AceQualifier qualifier, int accessMask, AceFlags flags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
Definition CommonAcl.cs:822
void CheckAccessType(AccessControlType accessType)
Definition CommonAcl.cs:794
void SetQualifiedAce(SecurityIdentifier sid, AceQualifier qualifier, int accessMask, AceFlags flags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
Definition CommonAcl.cs:860
bool RemoveAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
void SetAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule)
DiscretionaryAcl(bool isContainer, bool isDS, int capacity)
DiscretionaryAcl(bool isContainer, bool isDS, RawAcl? rawAcl)
void AddAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
bool RemoveAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule)
DiscretionaryAcl(bool isContainer, bool isDS, byte revision, int capacity)
void SetAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
void AddAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
static DiscretionaryAcl CreateAllowEveryoneFullAccess(bool isDS, bool isContainer)
void SetAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
void RemoveAccessSpecific(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
void AddAccess(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule)
void RemoveAccessSpecific(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags, ObjectAceFlags objectFlags, Guid objectType, Guid inheritedObjectType)
bool RemoveAccess(AccessControlType accessType, SecurityIdentifier sid, int accessMask, InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
static readonly SecurityIdentifier _sidEveryone
void RemoveAccessSpecific(AccessControlType accessType, SecurityIdentifier sid, ObjectAccessRule rule)
DiscretionaryAcl(bool isContainer, bool isDS, RawAcl rawAcl, bool trusted)
static AceFlags AceFlagsFromInheritanceFlags(InheritanceFlags inheritanceFlags, PropagationFlags propagationFlags)
static readonly Guid Empty
Definition Guid.cs:86