public void ProcessHandler(Object obj, EventArgs eargs)
{
Dictionary <string, string> request = (Dictionary <string, string>)obj;
string method = String.Empty;
if (request.ContainsKey("m"))
{
method = request["m"];
ProtocolLog.WriteIf(SocialLog.SVPNLog,
String.Format("SVPN Method Call {0}", method));
}
if (_node.LocalUser == null && (method == String.Empty ||
method != "setuid"))
{
if (method != "login")
{
throw new Exception("Uid not set");
}
}
if (request.ContainsKey("a") && !request["a"].StartsWith("brunet"))
{
request["a"] = "brunet:node:" + request["a"];
}
switch (method)
{
case "add":
AddToPending(request["a"]);
if (request.ContainsKey("f"))
{
_fprs = _fprs.InsertIntoNew(request["a"], request["f"]);
}
break;
case "block":
Block(request["a"]);
break;
case "unblock":
Unblock(request["a"]);
break;
case "del":
_node.RemoveFriend(request["a"]);
break;
case "login":
Login(request["n"], request["u"], request["p"]);
break;
case "logout":
Logout(request["n"]);
break;
case "setuid":
_node.SetUid(request["u"], request["p"]);
break;
case "shutdown":
_node.Close();
break;
case "autofriend":
_auto_allow = (_auto_allow ^ true);
break;
case "sdns.search":
_sdm.SearchFriends(request["q"], this);
request["response"] = _sdm.GetState(request["q"]);
return;
case "sdns.add":
_sdm.AddDnsMapping(request["n"], request["i"]);
request["response"] = _sdm.GetState(request["q"]);
return;
case "sdns.del":
_sdm.DeleteDnsMapping(request["n"]);
request["response"] = _sdm.GetState(request["q"]);
return;
case "sdns.state":
request["response"] = _sdm.GetState(request["q"]);
return;
case "nat":
request["response"] = _node.GetNatType();
return;
default:
break;
}
request["response"] = GetState(true);
}