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;
}