Esempio n. 1
0
        public void ProcessRequest(IOSHttpRequest request, IOSHttpResponse response, UUID AgentId, Caps cap)
        {
            if (request.HttpMethod != "POST")
            {
                response.StatusCode = (int)HttpStatusCode.NotFound;
                return;
            }

            ScenePresence avatar;

            if (!m_scene.TryGetScenePresence(AgentId, out avatar) || !m_scene.Permissions.CanIssueEstateCommand(AgentId, false))
            {
                response.StatusCode = (int)HttpStatusCode.Unauthorized;
                return;
            }

            if (m_scene.RegionInfo == null || m_scene.RegionInfo.EstateSettings == null)
            {
                response.StatusCode = (int)HttpStatusCode.NotImplemented;
                return;
            }

            OSDMap r;

            try
            {
                r = (OSDMap)OSDParser.Deserialize(request.InputStream);
            }
            catch (Exception ex)
            {
                m_log.Error("[UPLOAD OBJECT ASSET MODULE]: Error deserializing message " + ex.ToString());
                response.StatusCode = (int)HttpStatusCode.BadRequest;
                return;
            }

            bool ok = true;

            try
            {
                string estateName = r["estate_name"].AsString();
                UUID   invoice    = r["invoice"].AsUUID();
                //int sunHour = r["sun_hour"].AsInteger();
                //bool sunFixed = r["is_sun_fixed"].AsBoolean();
                bool externallyVisible   = r["is_externally_visible"].AsBoolean();
                bool allowDirectTeleport = r["allow_direct_teleport"].AsBoolean();
                bool denyAnonymous       = r["deny_anonymous"].AsBoolean();
                bool denyAgeUnverified   = r["deny_age_unverified"].AsBoolean();
                bool alloVoiceChat       = r["allow_voice_chat"].AsBoolean();
                // taxfree is now !AllowAccessOverride
                bool overridePublicAccess = !m_scene.RegionInfo.EstateSettings.TaxFree;
                if (r.ContainsKey("override_public_access"))
                {
                    overridePublicAccess = !r["override_public_access"].AsBoolean();
                }

                bool allowEnvironmentOverride = m_scene.RegionInfo.EstateSettings.AllowEnvironmentOverride;
                if (r.ContainsKey("override_environment"))
                {
                    allowEnvironmentOverride = !r["override_environment"].AsBoolean();
                }

                ok = m_EstateModule.handleEstateChangeInfoCap(estateName, invoice,
                                                              externallyVisible, allowDirectTeleport, denyAnonymous, denyAgeUnverified,
                                                              alloVoiceChat, overridePublicAccess, allowEnvironmentOverride);
            }
            catch
            {
                ok = false;
            }

            response.StatusCode = ok ? (int)HttpStatusCode.OK : (int)HttpStatusCode.BadRequest;
        }
Esempio n. 2
0
        public Hashtable ProcessRequest(Hashtable request, UUID AgentId, Caps cap)
        {
            Hashtable responsedata = new Hashtable();

            ScenePresence avatar;

            if (!m_scene.TryGetScenePresence(AgentId, out avatar) || !m_scene.Permissions.CanIssueEstateCommand(AgentId, false))
            {
                responsedata["int_response_code"]   = 401;
                responsedata["str_response_string"] = LLSDxmlEncode.LLSDEmpty;
                responsedata["keepalive"]           = false;
                return(responsedata);
            }

            if (m_scene.RegionInfo == null ||
                m_scene.RegionInfo.EstateSettings == null)
            {
                responsedata["int_response_code"]   = 501;
                responsedata["str_response_string"] = LLSDxmlEncode.LLSDEmpty;
                responsedata["keepalive"]           = false;
                return(responsedata);
            }

            OSDMap r;

            try
            {
                r = (OSDMap)OSDParser.Deserialize((string)request["requestbody"]);
            }
            catch (Exception ex)
            {
                m_log.Error("[UPLOAD OBJECT ASSET MODULE]: Error deserializing message " + ex.ToString());
                r = null;
            }

            if (r == null)
            {
                responsedata["int_response_code"]   = 400; //501; //410; //404;
                responsedata["content_type"]        = "text/plain";
                responsedata["keepalive"]           = false;
                responsedata["str_response_string"] = LLSDxmlEncode.LLSDEmpty;
                return(responsedata);
            }

            bool ok = true;

            try
            {
                string estateName          = r["estate_name"].AsString();
                UUID   invoice             = r["invoice"].AsUUID();
                int    sunHour             = r["sun_hour"].AsInteger();
                bool   sunFixed            = r["is_sun_fixed"].AsBoolean();
                bool   externallyVisible   = r["is_externally_visible"].AsBoolean();
                bool   allowDirectTeleport = r["allow_direct_teleport"].AsBoolean();
                bool   denyAnonymous       = r["deny_anonymous"].AsBoolean();
                bool   denyAgeUnverified   = r["deny_age_unverified"].AsBoolean();
                bool   alloVoiceChat       = r["allow_voice_chat"].AsBoolean();
                // taxfree is now !AllowAccessOverride
                bool overridePublicAccess = !m_scene.RegionInfo.EstateSettings.TaxFree;
                if (r.ContainsKey("override_public_access"))
                {
                    overridePublicAccess = !r["override_public_access"].AsBoolean();
                }

                ok = m_EstateModule.handleEstateChangeInfoCap(estateName, invoice, sunHour, sunFixed,
                                                              externallyVisible, allowDirectTeleport, denyAnonymous, denyAgeUnverified,
                                                              alloVoiceChat, overridePublicAccess);
            }
            catch
            {
                ok = false;
            }

            if (ok)
            {
                responsedata["int_response_code"]   = 200;
                responsedata["content_type"]        = "text/plain";
                responsedata["str_response_string"] = LLSDxmlEncode.LLSDEmpty;
            }
            else
            {
                responsedata["int_response_code"]   = 400; //501; //410; //404;
                responsedata["content_type"]        = "text/plain";
                responsedata["keepalive"]           = false;
                responsedata["str_response_string"] = LLSDxmlEncode.LLSDEmpty;
            }
            return(responsedata);
        }