aboutsummaryrefslogtreecommitdiffstatshomepage
path: root/OpenSim/Region/Communications
diff options
context:
space:
mode:
Diffstat (limited to 'OpenSim/Region/Communications')
-rw-r--r--OpenSim/Region/Communications/OGS1/OGS1GridServices.cs75
1 files changed, 46 insertions, 29 deletions
diff --git a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
index 2e91157..a59a6a5 100644
--- a/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
+++ b/OpenSim/Region/Communications/OGS1/OGS1GridServices.cs
@@ -613,7 +613,7 @@ namespace OpenSim.Region.Communications.OGS1
613 /// <param name="request"></param> 613 /// <param name="request"></param>
614 /// <returns></returns> 614 /// <returns></returns>
615 public XmlRpcResponse ExpectUser(XmlRpcRequest request) 615 public XmlRpcResponse ExpectUser(XmlRpcRequest request)
616 { 616 {
617 Hashtable requestData = (Hashtable) request.Params[0]; 617 Hashtable requestData = (Hashtable) request.Params[0];
618 AgentCircuitData agentData = new AgentCircuitData(); 618 AgentCircuitData agentData = new AgentCircuitData();
619 agentData.SessionID = new UUID((string) requestData["session_id"]); 619 agentData.SessionID = new UUID((string) requestData["session_id"]);
@@ -627,7 +627,7 @@ namespace OpenSim.Region.Communications.OGS1
627 627
628 m_log.DebugFormat( 628 m_log.DebugFormat(
629 "[CLIENT]: Told by user service to prepare for a connection from {0} {1} {2}, circuit {3}", 629 "[CLIENT]: Told by user service to prepare for a connection from {0} {1} {2}, circuit {3}",
630 agentData.firstname, agentData.lastname, agentData.AgentID, agentData.circuitcode); 630 agentData.firstname, agentData.lastname, agentData.AgentID, agentData.circuitcode);
631 631
632 if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1")) 632 if (requestData.ContainsKey("child_agent") && requestData["child_agent"].Equals("1"))
633 { 633 {
@@ -644,45 +644,62 @@ namespace OpenSim.Region.Communications.OGS1
644 agentData.child = false; 644 agentData.child = false;
645 } 645 }
646 646
647 RegionInfo[] regions = m_regionsOnInstance.ToArray();
648 bool banned = false;
649
650 for (int i = 0; i < regions.Length; i++)
651 {
652 if (regions[i] != null)
653 {
654 if (regions[i].RegionHandle == regionHandle)
655 {
656 if (regions[i].EstateSettings.IsBanned(agentData.AgentID))
657 {
658 banned = true;
659 break;
660 }
661 }
662 }
663 }
664
665 XmlRpcResponse resp = new XmlRpcResponse(); 647 XmlRpcResponse resp = new XmlRpcResponse();
666 648
667 if (banned) 649 if (!m_regionLoginsEnabled)
668 { 650 {
669 m_log.InfoFormat("[CLIENT]: Denying access for user {0} {1} because user is banned",agentData.firstname,agentData.lastname); 651 m_log.InfoFormat(
652 "[CLIENT]: Denying access for user {0} {1} because region login is currently disabled",
653 agentData.firstname, agentData.lastname);
670 654
671 Hashtable respdata = new Hashtable(); 655 Hashtable respdata = new Hashtable();
672 respdata["success"] = "FALSE"; 656 respdata["success"] = "FALSE";
673 respdata["reason"] = "banned"; 657 respdata["reason"] = "region login currently disabled";
674 resp.Value = respdata; 658 resp.Value = respdata;
675 } 659 }
676 else 660 else
677 { 661 {
678 m_localBackend.TriggerExpectUser(regionHandle, agentData); 662 RegionInfo[] regions = m_regionsOnInstance.ToArray();
679 Hashtable respdata = new Hashtable(); 663 bool banned = false;
680 respdata["success"] = "TRUE"; 664
681 resp.Value = respdata; 665 for (int i = 0; i < regions.Length; i++)
666 {
667 if (regions[i] != null)
668 {
669 if (regions[i].RegionHandle == regionHandle)
670 {
671 if (regions[i].EstateSettings.IsBanned(agentData.AgentID))
672 {
673 banned = true;
674 break;
675 }
676 }
677 }
678 }
679
680 if (banned)
681 {
682 m_log.InfoFormat(
683 "[CLIENT]: Denying access for user {0} {1} because user is banned",
684 agentData.firstname, agentData.lastname);
685
686 Hashtable respdata = new Hashtable();
687 respdata["success"] = "FALSE";
688 respdata["reason"] = "banned";
689 resp.Value = respdata;
690 }
691 else
692 {
693 m_localBackend.TriggerExpectUser(regionHandle, agentData);
694 Hashtable respdata = new Hashtable();
695 respdata["success"] = "TRUE";
696 resp.Value = respdata;
697 }
682 } 698 }
683 699
684 return resp; 700 return resp;
685 } 701 }
702
686 // Grid Request Processing 703 // Grid Request Processing
687 /// <summary> 704 /// <summary>
688 /// Ooops, our Agent must be dead if we're getting this request! 705 /// Ooops, our Agent must be dead if we're getting this request!