internal static void Handle_Player_Join_FDS_Message(string[] msgArr) { //if (msgArr[0] != "PLAYERJOIN") return; String Nick = msgArr[1]; String Team = msgArr[2]; String SerialHash = msgArr[3]; bool IsWolUser = int.Parse(msgArr[4]) == 1 ? true : false; float Version = float.Parse(msgArr[5]); long revision = long.Parse(msgArr[6]); String IP = msgArr[7]; String Password = msgArr[8]; String HostName = GetHostName(IP); var client = new WebClient(); try { // TODO: set FDS to WOL mode so I can get IPs correctly var response = client.DownloadString("http://freegeoip.net/json/" + IP); var geoIp = JsonConvert.DeserializeObject <GeoIpInfo>(response); SaveEntity(new PlayerJoin(Nick, IsWolUser, revision, Version, Team, IP, SerialHash, HostName, geoIp.country_name, geoIp.region_name, geoIp.city, geoIp.zip_code, geoIp.time_zone, geoIp.latitude, geoIp.longitude, geoIp.metro_code)); tcp.Send("JOINPLAYER\t{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}\t{10}\t{11}", Nick, IP, SerialHash, HostName, GetWhiteSpaceIfStringIsEmpty(geoIp.country_name), GetWhiteSpaceIfStringIsEmpty(geoIp.region_name), GetWhiteSpaceIfStringIsEmpty(geoIp.city), GetWhiteSpaceIfStringIsEmpty(geoIp.zip_code), GetWhiteSpaceIfStringIsEmpty(geoIp.time_zone), GetWhiteSpaceIfStringIsEmpty(geoIp.latitude), GetWhiteSpaceIfStringIsEmpty(geoIp.longitude), GetWhiteSpaceIfStringIsEmpty(geoIp.metro_code)); } catch (Exception ex) { Console.WriteLine("Exception occured while trying to retrieve GeoIP info"); Console.WriteLine(ex.Message); SaveEntity(new PlayerJoin(Nick, IsWolUser, revision, Version, Team, IP, SerialHash, HostName, "", "", "", "", "", "", "", "")); tcp.Send("JOINPLAYER\t{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}]\t{9}\t{10}\t{11}", Nick, IP, SerialHash, HostName, " ", " ", " ", " ", " ", " ", " ", " "); } RegisteredUser r = GetRegisteredUser(Nick); if (r != null) { tcp.Send("AUTH\t{0}\t{1}\t{2}\t{3}\t{4}\t{5}\t{6}\t{7}\t{8}\t{9}\t{10}\t{11}", r.NickName, GetWhiteSpaceIfStringIsEmpty(r.Permission), GetWhiteSpaceIfStringIsEmpty(r.ModFlags), GetIntValueFromBool(r.AuthViaPassword), GetWhiteSpaceIfStringIsEmpty(r.Password), GetIntValueFromBool(r.AuthViaHostname), GetWhiteSpaceIfStringIsEmpty(r.HostName), GetIntValueFromBool(r.AuthViaIP), GetWhiteSpaceIfStringIsEmpty(r.IP), GetIntValueFromBool(r.AuthViaSerialHash), GetWhiteSpaceIfStringIsEmpty(r.SerialHash), GetIntValueFromBool(r.AuthViaWOL)); } JoinMessage jm = GetAll <JoinMessage>().Where(j => j.NickName.ToLower() == Nick.ToLower()).FirstOrDefault(); if (jm != null) { tcp.Send("[{0}] {1}", jm.NickName, jm.Message); } }
internal static void Handle_Delete_Join_Message_FDS_Message(string[] msgArr) { string Nick = msgArr[1]; JoinMessage jm = GetAll <JoinMessage>().Where(j => j.NickName.ToLower() == Nick.ToLower()).FirstOrDefault(); if (jm != null) { DeleteEntity(jm); } }