aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
diff options
context:
space:
mode:
authorMelanie2010-01-16 00:05:08 +0000
committerMelanie2010-01-16 00:05:08 +0000
commit10f8c2ea9b67158c32b361f9652d503ea48de292 (patch)
treebe0d88bc4b6df3825a0d27f62a08170d7c7ad262 /OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
parentMerge branch 'presence-refactor' of ssh://diva@opensimulator.org/var/git/open... (diff)
parentAdd "create user" instructions to README.txt (diff)
downloadopensim-SC_OLD-10f8c2ea9b67158c32b361f9652d503ea48de292.zip
opensim-SC_OLD-10f8c2ea9b67158c32b361f9652d503ea48de292.tar.gz
opensim-SC_OLD-10f8c2ea9b67158c32b361f9652d503ea48de292.tar.bz2
opensim-SC_OLD-10f8c2ea9b67158c32b361f9652d503ea48de292.tar.xz
Merge branch 'master' into presence-refactor
This merge was very conflicted. I think I got them all, but I can't be sure. I had to merge to master or risk divergence to the point of unmergeability.
Diffstat (limited to 'OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs')
-rw-r--r--OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs244
1 files changed, 152 insertions, 92 deletions
diff --git a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
index 2109336..189efdc 100644
--- a/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
+++ b/OpenSim/Region/CoreModules/World/Estate/EstateManagementModule.cs
@@ -72,10 +72,21 @@ namespace OpenSim.Region.CoreModules.World.Estate
72 m_scene.RegionInfo.EstateSettings.AbuseEmail, 72 m_scene.RegionInfo.EstateSettings.AbuseEmail,
73 estateOwner); 73 estateOwner);
74 74
75 remote_client.SendEstateManagersList(invoice, 75 remote_client.SendEstateList(invoice,
76 (int)Constants.EstateAccessCodex.EstateManagers,
76 m_scene.RegionInfo.EstateSettings.EstateManagers, 77 m_scene.RegionInfo.EstateSettings.EstateManagers,
77 m_scene.RegionInfo.EstateSettings.EstateID); 78 m_scene.RegionInfo.EstateSettings.EstateID);
78 79
80 remote_client.SendEstateList(invoice,
81 (int)Constants.EstateAccessCodex.AccessOptions,
82 m_scene.RegionInfo.EstateSettings.EstateAccess,
83 m_scene.RegionInfo.EstateSettings.EstateID);
84
85 remote_client.SendEstateList(invoice,
86 (int)Constants.EstateAccessCodex.AllowedGroups,
87 m_scene.RegionInfo.EstateSettings.EstateGroups,
88 m_scene.RegionInfo.EstateSettings.EstateID);
89
79 remote_client.SendBannedUserList(invoice, 90 remote_client.SendBannedUserList(invoice,
80 m_scene.RegionInfo.EstateSettings.EstateBans, 91 m_scene.RegionInfo.EstateSettings.EstateBans,
81 m_scene.RegionInfo.EstateSettings.EstateID); 92 m_scene.RegionInfo.EstateSettings.EstateID);
@@ -228,127 +239,176 @@ namespace OpenSim.Region.CoreModules.World.Estate
228 if (user == m_scene.RegionInfo.EstateSettings.EstateOwner) 239 if (user == m_scene.RegionInfo.EstateSettings.EstateOwner)
229 return; // never process EO 240 return; // never process EO
230 241
231 switch (estateAccessType) 242 if ((estateAccessType & 4) != 0) // User add
232 { 243 {
233 case 64: 244 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
234 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions()) 245 {
235 { 246 m_scene.RegionInfo.EstateSettings.AddEstateUser(user);
236 EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans; 247 m_scene.RegionInfo.EstateSettings.Save();
237 248 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, m_scene.RegionInfo.EstateSettings.EstateAccess, m_scene.RegionInfo.EstateSettings.EstateID);
238 bool alreadyInList = false; 249 }
239 250 else
240 for (int i = 0; i < banlistcheck.Length; i++) 251 {
241 { 252 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
242 if (user == banlistcheck[i].BannedUserID) 253 }
243 {
244 alreadyInList = true;
245 break;
246 }
247
248 }
249 if (!alreadyInList)
250 {
251 254
252 EstateBan item = new EstateBan(); 255 }
256 if ((estateAccessType & 8) != 0) // User remove
257 {
258 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
259 {
260 m_scene.RegionInfo.EstateSettings.RemoveEstateUser(user);
261 m_scene.RegionInfo.EstateSettings.Save();
253 262
254 item.BannedUserID = user; 263 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AccessOptions, m_scene.RegionInfo.EstateSettings.EstateAccess, m_scene.RegionInfo.EstateSettings.EstateID);
255 item.EstateID = m_scene.RegionInfo.EstateSettings.EstateID; 264 }
256 item.BannedHostAddress = "0.0.0.0"; 265 else
257 item.BannedHostIPMask = "0.0.0.0"; 266 {
267 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
268 }
269 }
270 if ((estateAccessType & 16) != 0) // Group add
271 {
272 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
273 {
274 m_scene.RegionInfo.EstateSettings.AddEstateGroup(user);
275 m_scene.RegionInfo.EstateSettings.Save();
276 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, m_scene.RegionInfo.EstateSettings.EstateGroups, m_scene.RegionInfo.EstateSettings.EstateID);
277 }
278 else
279 {
280 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
281 }
282 }
283 if ((estateAccessType & 32) != 0) // Group remove
284 {
285 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
286 {
287 m_scene.RegionInfo.EstateSettings.RemoveEstateGroup(user);
288 m_scene.RegionInfo.EstateSettings.Save();
258 289
259 m_scene.RegionInfo.EstateSettings.AddBan(item); 290 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.AllowedGroups, m_scene.RegionInfo.EstateSettings.EstateGroups, m_scene.RegionInfo.EstateSettings.EstateID);
260 m_scene.RegionInfo.EstateSettings.Save(); 291 }
292 else
293 {
294 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
295 }
296 }
297 if ((estateAccessType & 64) != 0) // Ban add
298 {
299 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions())
300 {
301 EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans;
261 302
262 ScenePresence s = m_scene.GetScenePresence(user); 303 bool alreadyInList = false;
263 if (s != null)
264 {
265 if (!s.IsChildAgent)
266 {
267 s.ControllingClient.SendTeleportLocationStart();
268 m_scene.TeleportClientHome(user, s.ControllingClient);
269 }
270 }
271 304
272 } 305 for (int i = 0; i < banlistcheck.Length; i++)
273 else 306 {
307 if (user == banlistcheck[i].BannedUserID)
274 { 308 {
275 remote_client.SendAlertMessage("User is already on the region ban list"); 309 alreadyInList = true;
310 break;
276 } 311 }
277 //m_scene.RegionInfo.regionBanlist.Add(Manager(user); 312
278 remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID);
279 }
280 else
281 {
282 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
283 } 313 }
284 break; 314 if (!alreadyInList)
285 case 128:
286 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions())
287 { 315 {
288 EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans;
289 316
290 bool alreadyInList = false; 317 EstateBan item = new EstateBan();
291 EstateBan listitem = null; 318
319 item.BannedUserID = user;
320 item.EstateID = m_scene.RegionInfo.EstateSettings.EstateID;
321 item.BannedHostAddress = "0.0.0.0";
322 item.BannedHostIPMask = "0.0.0.0";
292 323
293 for (int i = 0; i < banlistcheck.Length; i++) 324 m_scene.RegionInfo.EstateSettings.AddBan(item);
325 m_scene.RegionInfo.EstateSettings.Save();
326
327 ScenePresence s = m_scene.GetScenePresence(user);
328 if (s != null)
294 { 329 {
295 if (user == banlistcheck[i].BannedUserID) 330 if (!s.IsChildAgent)
296 { 331 {
297 alreadyInList = true; 332 s.ControllingClient.SendTeleportLocationStart();
298 listitem = banlistcheck[i]; 333 m_scene.TeleportClientHome(user, s.ControllingClient);
299 break;
300 } 334 }
301
302 } 335 }
303 if (alreadyInList && listitem != null) 336
304 {
305 m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID);
306 m_scene.RegionInfo.EstateSettings.Save();
307 }
308 else
309 {
310 remote_client.SendAlertMessage("User is not on the region ban list");
311 }
312 //m_scene.RegionInfo.regionBanlist.Add(Manager(user);
313 remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID);
314 } 337 }
315 else 338 else
316 { 339 {
317 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions"); 340 remote_client.SendAlertMessage("User is already on the region ban list");
318 } 341 }
319 break; 342 //m_scene.RegionInfo.regionBanlist.Add(Manager(user);
320 case 256: 343 remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID);
344 }
345 else
346 {
347 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
348 }
349 }
350 if ((estateAccessType & 128) != 0) // Ban remove
351 {
352 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, false) || m_scene.Permissions.BypassPermissions())
353 {
354 EstateBan[] banlistcheck = m_scene.RegionInfo.EstateSettings.EstateBans;
321 355
322 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions()) 356 bool alreadyInList = false;
323 { 357 EstateBan listitem = null;
324 m_scene.RegionInfo.EstateSettings.AddEstateManager(user); 358
325 m_scene.RegionInfo.EstateSettings.Save(); 359 for (int i = 0; i < banlistcheck.Length; i++)
326 remote_client.SendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID);
327 }
328 else
329 { 360 {
330 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions"); 361 if (user == banlistcheck[i].BannedUserID)
331 } 362 {
363 alreadyInList = true;
364 listitem = banlistcheck[i];
365 break;
366 }
332 367
333 break; 368 }
334 case 512: 369 if (alreadyInList && listitem != null)
335 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
336 { 370 {
337 m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user); 371 m_scene.RegionInfo.EstateSettings.RemoveBan(listitem.BannedUserID);
338 m_scene.RegionInfo.EstateSettings.Save(); 372 m_scene.RegionInfo.EstateSettings.Save();
339
340 remote_client.SendEstateManagersList(invoice, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID);
341 } 373 }
342 else 374 else
343 { 375 {
344 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions"); 376 remote_client.SendAlertMessage("User is not on the region ban list");
345 } 377 }
346 break; 378 //m_scene.RegionInfo.regionBanlist.Add(Manager(user);
347 379 remote_client.SendBannedUserList(invoice, m_scene.RegionInfo.EstateSettings.EstateBans, m_scene.RegionInfo.EstateSettings.EstateID);
348 default: 380 }
381 else
382 {
383 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
384 }
385 }
386 if ((estateAccessType & 256) != 0) // Manager add
387 {
388 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
389 {
390 m_scene.RegionInfo.EstateSettings.AddEstateManager(user);
391 m_scene.RegionInfo.EstateSettings.Save();
392 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID);
393 }
394 else
395 {
396 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
397 }
398 }
399 if ((estateAccessType & 512) != 0) // Manager remove
400 {
401 if (m_scene.Permissions.CanIssueEstateCommand(remote_client.AgentId, true) || m_scene.Permissions.BypassPermissions())
402 {
403 m_scene.RegionInfo.EstateSettings.RemoveEstateManager(user);
404 m_scene.RegionInfo.EstateSettings.Save();
349 405
350 m_log.ErrorFormat("EstateOwnerMessage: Unknown EstateAccessType requested in estateAccessDelta: {0}", estateAccessType.ToString()); 406 remote_client.SendEstateList(invoice, (int)Constants.EstateAccessCodex.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateManagers, m_scene.RegionInfo.EstateSettings.EstateID);
351 break; 407 }
408 else
409 {
410 remote_client.SendAlertMessage("Method EstateAccessDelta Failed, you don't have permissions");
411 }
352 } 412 }
353 } 413 }
354 414