OMEconomy.OMBase.CommunicationHelpers.ValidateRequest C# (CSharp) Method

ValidateRequest() public method

public ValidateRequest ( XmlRpcRequest request ) : Hashtable
request XmlRpcRequest
return System.Collections.Hashtable
        public Hashtable ValidateRequest(XmlRpcRequest request)
        {
            Hashtable requestData = (Hashtable)request.Params[0];
            Hashtable communicationData = (Hashtable)request.Params[1];

            #if DEBUG
            m_log.Debug("[OMBASE]: genericNotify(...)");
            foreach (DictionaryEntry requestDatum in requestData)
            {
                m_log.Debug("[OMBASE]:   " + requestDatum.Key.ToString()  + " " + (string)requestDatum.Value);
            }
            foreach (DictionaryEntry communicationDatum in communicationData)
            {
                m_log.Debug("[OMBASE]:   " + communicationDatum.Key.ToString()  + " " + (string)communicationDatum.Value);
            }
            #endif

            Hashtable requestDataHashing = (Hashtable)requestData.Clone();
            requestDataHashing.Remove("method");

            UUID regionUUID  = UUID.Parse((string)(communicationData)["regionUUID"]);
            string nonce  = (string)(communicationData)["nonce"];
            string notificationID = (string)(communicationData)["notificationID"];

            Dictionary<string, string> d = new Dictionary<string, string>();
            d.Add("method", "verifyNotification");
            d.Add("notificationID", notificationID);
            d.Add("regionUUID", regionUUID.ToString());
            d.Add("hashValue", HashParameters(requestDataHashing, nonce, regionUUID));
            Dictionary<string, string> response = DoRequestDictionary(d);
            if (response != null)
            {
                string status = (string)response["status"];
                if (status == "OK")
                {
                    return requestData;
                }
            }
            return null;
        }

Usage Example

Ejemplo n.º 1
0
        public XmlRpcResponse GenericNotify(XmlRpcRequest request, IPEndPoint ep)
        {
            XmlRpcResponse r = new XmlRpcResponse();

            try
            {
                Hashtable requestData       = (Hashtable)request.Params[0];
                Hashtable communicationData = (Hashtable)request.Params[1];

                m_log.Debug("[OMECONOMY]: genericNotify(...)");
                foreach (DictionaryEntry requestDatum in requestData)
                {
                    m_log.Debug("[OMECONOMY]:   " + requestDatum.Key.ToString() + " " + (string)requestDatum.Value);
                }
                foreach (DictionaryEntry communicationDatum in communicationData)
                {
                    m_log.Debug("[OMECONOMY]:   " + communicationDatum.Key.ToString() + " " + (string)communicationDatum.Value);
                }

                String method = (string)requestData["method"];
                requestData.Remove("method");

                if (CommunicationHelpers.ValidateRequest(communicationData, requestData, gatewayURL))
                {
                    switch (method)
                    {
                    case "notifyUser": r.Value = userInteract(requestData);
                        break;

                    case "writeLog": r.Value = WriteLog(requestData);
                        break;

                    case "notifyIsAlive": r.Value = IsAlive(requestData);
                        break;

                    default: m_log.ErrorFormat("[OMECONOMY]: Method {1} is not supported.", Name, method);
                        break;
                    }
                }
                else
                {
                    throw new Exception("Hash values do not match");
                }
            }
            catch (Exception e)
            {
                m_log.ErrorFormat("[OMECONOMY]: genericNotify() Exception: {1} - {2}", Name, e.Message, e.StackTrace);
                r.SetFault(1, "Could not parse the requested method");
            }
            return(r);
        }
All Usage Examples Of OMEconomy.OMBase.CommunicationHelpers::ValidateRequest