public void deserialise(String filename) { masterServers = new Dictionary<string, Server>(); if (File.Exists(filename) == false) return; var FS = new FileStream(filename, FileMode.Open); var SR = new StreamReader(FS); String file = SR.ReadToEnd(); var sep = new string[1]; sep[0] = "block"; String[] args = file.Split(sep, StringSplitOptions.RemoveEmptyEntries); foreach (String s in args) { var serv = new Server(); serv.deserialise(s); string ip = serv.getVariable(Protocol.ipAddressSTR); string port = serv.getVariable(Protocol.portSTR); if (ip!= null && port != null) { String ipaddr = ip+Server.separator+port; if (masterServers.ContainsKey(ipaddr) == false) masterServers.Add(ipaddr, serv); } } SR.Close(); FS.Close(); }
public static void AddServerToServerView(Server s, ListView serverView) { string port = s.getVariable(Protocol.Protocol.portSTR); string ip = s.getVariable(Protocol.Protocol.ipAddressSTR); var lvi = new ListViewItem(); String ipport = ip + Server.separator + port; lvi.Name = ipport; lvi.Text = s.getVariable(Protocol.Protocol.ipAddressSTR); for (int a = 1; a < serverView.Columns.Count; a++) { lvi.SubItems.Add(serverView.Columns[a].Name == Protocol.Protocol.portSTR ? port : ""); } serverView.Items.Add(lvi); UpdateServerInServerView(s, serverView); }
//send a packet, and for each received key/var update the server with that variable public string[] updateServerInfo(Server serv, byte[] protocolBytes) { try { string[] split = sendGamePacket(IPAddress.Parse(serv.serverVariables[ipAddressSTR]), int.Parse(serv.serverVariables[portSTR]), protocolBytes); if (split == null) { serv.init(ipAddressSTR, portSTR); return null; } for (int a = 0; a < split.Length; a += 2) { String key = split[a]; String val = split[a + 1]; if (protocolList.ContainsKey(key)) { key = protocolList[key]; if (key == hostNameSTR) val = sanatiseName(val); serv.setVariable(key, val); } else continue; } return split; } catch (Exception e) { return null; } }
public static void UpdateServerInServerView(Server s, ListView serverView) { String ipport = s.getServerIdentifier(Protocol.Protocol.ipAddressSTR, Protocol.Protocol.portSTR); int count = 0; foreach (ColumnHeader ch in serverView.Columns) { String val = s.getVariable(ch.Name); serverView.Items[ipport].SubItems[count].Text = string.IsNullOrEmpty(val) == false ? val : ""; count++; } }
public Server addServerThread(String ip, int port, Servers serversInstance) { var s = new Server(); IPAddress address = NetExtras.HostnameToIP(ip); changeCurrThread(-1, true); if (address == null) return null; s.setVariable(Protocol.Protocol.ipAddressSTR, ip); s.setVariable(Protocol.Protocol.portSTR, port.ToString()); string ipport = ip + Server.separator + port; if (port > 0 && serversInstance.masterServers.ContainsKey(ipport) == false) { try { serversInstance.masterServers.Add(ipport, s); return s; } catch { } } return null; }