Exemplo n.º 1
0
        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);
            }
        }
Exemplo n.º 2
0
        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);
            }
        }