diff --git a/OpenMetaverse.Utilities/Utilities.cs b/OpenMetaverse.Utilities/Utilities.cs
index 11d68650..672b4601 100644
--- a/OpenMetaverse.Utilities/Utilities.cs
+++ b/OpenMetaverse.Utilities/Utilities.cs
@@ -521,7 +521,7 @@ namespace OpenMetaverse.Utilities
if (simulator != null && Parcels.ContainsKey(simulator) && Parcels[simulator].ContainsKey(localID))
{
Parcel parcel = Parcels[simulator][localID];
- parcel.AccessList = accessEntries;
+ //parcel.AccessList = accessEntries;
Parcels[simulator][localID] = parcel;
}
}
diff --git a/OpenMetaverse/ParcelManager.cs b/OpenMetaverse/ParcelManager.cs
index 0b10b6e2..e6ed3f4c 100644
--- a/OpenMetaverse/ParcelManager.cs
+++ b/OpenMetaverse/ParcelManager.cs
@@ -89,7 +89,7 @@ namespace OpenMetaverse
Access = 1 << 0,
/// Request the ban list
Ban = 1 << 1,
- /// Request both the access list and ban list
+ /// Request both White and Black lists
Both = Access | Ban
}
@@ -509,9 +509,12 @@ namespace OpenMetaverse
public bool RegionDenyAnonymous;
///
public bool RegionPushOverride;
- /// Access list of who is whitelisted or blacklisted on this
+ /// Access list of who is whitelisted on this
/// parcel
- public List AccessList;
+ public List AccessWhiteList;
+ /// Access list of who is blacklisted on this
+ /// parcel
+ public List AccessBlackList;
/// TRUE of region denies access to age unverified users
public bool RegionDenyAgeUnverified;
/// true to obscure (hide) media url
@@ -583,7 +586,8 @@ namespace OpenMetaverse
Dwell = 0;
RegionDenyAnonymous = false;
RegionPushOverride = false;
- AccessList = new List(0);
+ AccessWhiteList = new List();
+ AccessBlackList = new List(0);
RegionDenyAgeUnverified = false;
Media = new ParcelMedia();
ObscureMedia = false;
@@ -664,12 +668,8 @@ namespace OpenMetaverse
public UUID AgentID;
///
public DateTime Time;
- /// Flag to Permit access to agent, or ban agent from parcel
- public AccessList Flags;
- /// The flags of the specific entry itself
- /// TODO: this should be an enum, need to figure out what these flags are,
- /// they probably have something to do with expiring bans
- public uint EntryFlags;
+ /// Flags for specific entry in white/black lists
+ public uint Flags;
}
///
@@ -1560,28 +1560,33 @@ namespace OpenMetaverse
if (OnAccessListReply != null || Client.Settings.ALWAYS_REQUEST_PARCEL_ACL == true)
{
ParcelAccessListReplyPacket reply = (ParcelAccessListReplyPacket)packet;
+
List accessList = new List(reply.List.Length);
-
- for (int i = 0; i < reply.List.Length; i++)
- {
- ParcelAccessEntry pae = new ParcelAccessEntry();
- pae.AgentID = reply.List[i].ID;
- pae.Flags = (AccessList)reply.Data.Flags;
- pae.Time = Utils.UnixTimeToDateTime((uint)reply.List[i].Time);
- pae.EntryFlags = reply.List[i].Flags;
-
- accessList.Add(pae);
- }
-
- lock (simulator.Parcels.Dictionary)
- {
- if (simulator.Parcels.Dictionary.ContainsKey(reply.Data.LocalID))
+
+ for (int i = 0; i < reply.List.Length; i++)
{
- Parcel parcel = simulator.Parcels.Dictionary[reply.Data.LocalID];
- parcel.AccessList = accessList;
- simulator.Parcels.Dictionary[reply.Data.LocalID] = parcel;
+ ParcelAccessEntry pae = new ParcelAccessEntry();
+ pae.AgentID = reply.List[i].ID;
+ pae.Time = Utils.UnixTimeToDateTime((uint)reply.List[i].Time);
+ pae.Flags = reply.List[i].Flags;
+
+ accessList.Add(pae);
}
- }
+
+ lock (simulator.Parcels.Dictionary)
+ {
+ if (simulator.Parcels.Dictionary.ContainsKey(reply.Data.LocalID))
+ {
+ Parcel parcel = simulator.Parcels.Dictionary[reply.Data.LocalID];
+ if ((AccessList)reply.Data.Flags == AccessList.Ban)
+ parcel.AccessBlackList = accessList;
+ else
+ parcel.AccessWhiteList = accessList;
+
+ simulator.Parcels.Dictionary[reply.Data.LocalID] = parcel;
+ }
+ }
+
if (OnAccessListReply != null)
{
diff --git a/Programs/examples/TestClient/Commands/Land/ParcelInfoCommand.cs b/Programs/examples/TestClient/Commands/Land/ParcelInfoCommand.cs
index ccb64356..8220ca75 100644
--- a/Programs/examples/TestClient/Commands/Land/ParcelInfoCommand.cs
+++ b/Programs/examples/TestClient/Commands/Land/ParcelInfoCommand.cs
@@ -43,8 +43,18 @@ namespace OpenMetaverse.TestClient
Client.Network.CurrentSim.Parcels.ForEach(delegate(Parcel parcel)
{
- sb.AppendFormat("Parcel[{0}]: Name: \"{1}\", Description: \"{2}\" ACL Count: {3} Traffic: {4}" + System.Environment.NewLine,
- parcel.LocalID, parcel.Name, parcel.Desc, parcel.AccessList.Count, parcel.Dwell);
+ sb.AppendFormat("Parcel[{0}]: Name: \"{1}\", Description: \"{2}\" ACLBlacklist Count: {3}, ACLWhiteList Count: {5} Traffic: {4}" + System.Environment.NewLine,
+ parcel.LocalID, parcel.Name, parcel.Desc, parcel.AccessBlackList.Count, parcel.Dwell, parcel.AccessWhiteList.Count);
+ //foreach (ParcelManager.ParcelAccessEntry white in parcel.AccessWhiteList)
+ //{
+ // if(white.AgentID != UUID.Zero)
+ // sb.AppendFormat("\tAllowed Avatar {0}" + System.Environment.NewLine, white.AgentID);
+ //}
+ //foreach (ParcelManager.ParcelAccessEntry black in parcel.AccessBlackList)
+ //{
+ // if(black.AgentID != UUID.Zero)
+ // sb.AppendFormat("\t Banned Avatar {0}" + System.Environment.NewLine, black.AgentID);
+ //}
});
result = sb.ToString();