public XmlRpcResponse XmlRPCRegisterMessageServer(XmlRpcRequest request, IPEndPoint remoteClient) { // Check IP Endpoint Access if (!TrustManager.Instance.IsTrustedPeer(remoteClient)) { return(Util.CreateTrustManagerAccessDeniedResponse()); } XmlRpcResponse response = new XmlRpcResponse(); Hashtable requestData = (Hashtable)request.Params[0]; Hashtable responseData = new Hashtable(); if (requestData.Contains("uri")) { string URI = (string)requestData["uri"]; string sendkey = (string)requestData["sendkey"]; string recvkey = (string)requestData["recvkey"]; MessageServerInfo m = new MessageServerInfo(); m.URI = URI; m.sendkey = sendkey; m.recvkey = recvkey; RegisterMessageServer(URI, m); responseData["responsestring"] = "TRUE"; response.Value = responseData; } return(response); }
public void DeRegisterMessageServer(MessageServerInfo m) { lock (m_messageServers) { if (m_messageServers.Contains(m)) { m_messageServers.Remove(m); } } }
public void RegisterMessageServer(MessageServerInfo m) { lock (m_messageServers) { if (!m_messageServers.Contains(m)) { m_messageServers.Add(m); } } }
public void RegisterMessageServer(string URI, MessageServerInfo serverData) { lock (MessageServers) { if (!MessageServers.ContainsKey(URI)) { MessageServers.Add(URI, serverData); } } }
public void AddResponsibleRegion(string URI, ulong regionhandle) { if (!MessageServers.ContainsKey(URI)) { m_log.Warn("[MSGSERVER]: Got addResponsibleRegion Request for a MessageServer that isn't registered"); } else { MessageServerInfo msginfo = MessageServers["URI"]; msginfo.responsibleForRegions.Add(regionhandle); MessageServers["URI"] = msginfo; } }
public void ReceiveMessagesUdp() { byte[] data = new byte[1024]; EndPoint endPoint = socketUdpHandler.LocalEndPoint; while (true) { int amount = socketUdpHandler.ReceiveFrom(data, ref endPoint); MemoryStream messageContainer = new MemoryStream(data, 0, data.Length); MessageServerInfo messageServerInfo = (MessageServerInfo)messageSerializer.Deserialize(messageContainer, typeof(MessageServerInfo), null); ReceiveMessageHandler(messageServerInfo); return; } }
void ReceiveMessage(GameMessage message) { if (!(message is MessageServerInfo)) { return; } MessageServerInfo messageInfo = message as MessageServerInfo; Action action = delegate { tbIPAdress.Text = messageInfo.IPAdress; tbPort.Text = messageInfo.Port.ToString(); tbMapName.Text = messageInfo.MapName; tbParticipants.Text = messageInfo.CurrentPlayersAmount.ToString() + "/" + messageInfo.MaxPlayersAmount.ToString(); lbStatus.Text = "Found"; }; isFoundServer = true; Invoke(action); }
public XmlRpcResponse XmlRPCDeRegisterMessageServer(XmlRpcRequest request, IPEndPoint remoteClient) { XmlRpcResponse response = new XmlRpcResponse(); Hashtable requestData = (Hashtable)request.Params[0]; Hashtable responseData = new Hashtable(); if (requestData.Contains("uri")) { string URI = (string)requestData["uri"]; string sendkey = (string)requestData["sendkey"]; string recvkey = (string)requestData["recvkey"]; MessageServerInfo m = new MessageServerInfo(); m.URI = URI; m.sendkey = sendkey; m.recvkey = recvkey; DeRegisterMessageServer(m); responseData["responsestring"] = "TRUE"; response.Value = responseData; } return(response); }
public static void HandleSearchMessage(MessageSearchRequest message) { while (gameLogic == null) { ; } MessageServerInfo messageResponse = new MessageServerInfo() { IPAdress = NetworkInfo.GetCurrentIP().ToString(), Port = Port, MaxPlayersAmount = MaxUsersAmount, CurrentPlayersAmount = gameLogic.Players.Count, MapName = "Level 1", MapWidth = gameLogic.Map.Width, MapHeight = gameLogic.Map.Height }; Socket socketSetAdress = new Socket(AddressFamily.InterNetwork, SocketType.Dgram, ProtocolType.Udp); IPEndPoint endPoint = new IPEndPoint(IPAddress.Parse(message.IPAdress), message.Port); socketSetAdress.SendTo(messageSerializer.Serialize(messageResponse, messageResponse.GetType()), endPoint); }
private void NotifyMessageServerAboutRegionShutdown(MessageServerInfo serv, UUID regionID) { Hashtable reqparams = new Hashtable(); reqparams["sendkey"] = serv.sendkey; reqparams["regionid"] = regionID.ToString(); ArrayList SendParams = new ArrayList(); SendParams.Add(reqparams); XmlRpcRequest GridReq = new XmlRpcRequest("process_region_shutdown", SendParams); try { GridReq.Send(serv.URI, 6000); } catch (WebException) { m_log.Warn("[MSGCONNECTOR]: Unable to notify Message Server about region shutdown."); } m_log.Info("[REGION UPDOWN]: Notified : " + serv.URI + " about region state change"); }
private void NotifyMessageServerAboutUserLogoff(MessageServerInfo serv, UUID agentID) { Hashtable reqparams = new Hashtable(); reqparams["sendkey"] = serv.sendkey; reqparams["agentid"] = agentID.ToString(); ArrayList SendParams = new ArrayList(); SendParams.Add(reqparams); XmlRpcRequest GridReq = new XmlRpcRequest("logout_of_simulator", SendParams); try { GridReq.Send(serv.URI, 6000); } catch (WebException) { m_log.Warn("[MSGCONNECTOR]: Unable to notify Message Server about log out. Other users might still think this user is online"); } m_log.Info("[LOGOUT]: Notified : " + serv.URI + " about user logout"); }
private void NotifyMessageServerAboutUser(MessageServerInfo serv, UUID agentID, UUID sessionID, UUID RegionID, ulong regionhandle, float positionX, float positionY, float positionZ, string firstname, string lastname) { Hashtable reqparams = new Hashtable(); reqparams["sendkey"] = serv.sendkey; reqparams["agentid"] = agentID.ToString(); reqparams["sessionid"] = sessionID.ToString(); reqparams["regionid"] = RegionID.ToString(); reqparams["regionhandle"] = regionhandle.ToString(); reqparams["positionx"] = positionX.ToString(); reqparams["positiony"] = positionY.ToString(); reqparams["positionz"] = positionZ.ToString(); reqparams["firstname"] = firstname; reqparams["lastname"] = lastname; //reqparams["position"] = Position.ToString(); ArrayList SendParams = new ArrayList(); SendParams.Add(reqparams); string methodName = "login_to_simulator"; XmlRpcRequest GridReq = new XmlRpcRequest(methodName, SendParams); try { GridReq.Send(Util.XmlRpcRequestURI(serv.URI, methodName), 6000); m_log.Info("[LOGIN]: Notified : " + serv.URI + " about user login"); } catch (WebException) { m_log.Warn("[MSGCONNECTOR]: Unable to notify Message Server about login. Presence might be borked for this user"); } }