Example #1
0
        private void SendUpdate(object info)
        {
            Thread.Sleep(1000*60*15);
            var data = new JsonData
            {
                port = Terraria.Netplay.serverPort,
                currentPlayers = TShock.Utils.ActivePlayers(),
                maxPlayers = TShock.Config.MaxSlots,
                systemRam = 0,
                systemCPUClock = 0,
                version = TShock.VersionNum.ToString(),
                terrariaVersion = Terraria.Main.versionNumber2,
                mono = Terraria.Main.runningMono
            };

            var serialized = Newtonsoft.Json.JsonConvert.SerializeObject(data);
            var encoded = HttpUtility.UrlEncode(serialized);
            var uri = String.Format("http://96.47.231.227:8000?data={0}", encoded);
            var client = (HttpWebRequest)WebRequest.Create(uri);
            client.Timeout = 5000;
            try
            {
                using (var resp = GetResponseNoException(client))
                {
                    if (resp.StatusCode != HttpStatusCode.OK)
                    {
                        throw new IOException("Server did not respond with an OK.");
                    }

                    failed = false;
                }
            }
            catch (Exception e)
            {
                if (!failed)
                {
                    Log.ConsoleError("StatTracker Exception: {0}", e);
                    failed = true;
                }
            }

            ThreadPool.QueueUserWorkItem(SendUpdate);
        }
Example #2
0
        private void SendUpdate(object info)
        {
            JsonData data;

            if(ServerApi.RunningMono)
            {
                var pc = new PerformanceCounter("Mono Memory", "Total Physical Memory");
                totalMem = (pc.RawValue / 1024 / 1024 / 1024);
                data = new JsonData
                {
                    port = Terraria.Netplay.ListenPort,
                    currentPlayers = TShock.Utils.ActivePlayers(),
                    maxPlayers = TShock.Config.MaxSlots,
                    systemRam = totalMem,
                    version = TShock.VersionNum.ToString(),
                    terrariaVersion = Terraria.Main.versionNumber2,
                    providerId = ProviderToken,
                    serverId = serverId,
                    mono = true
                };
            } else
            {
                GetPhysicallyInstalledSystemMemory(out totalMem);
                totalMem = (totalMem / 1024 / 1024); // Super hardcore maths to convert to Gb from Kb
                data = new JsonData
                {
                    port = Terraria.Netplay.ListenPort,
                    currentPlayers = TShock.Utils.ActivePlayers(),
                    maxPlayers = TShock.Config.MaxSlots,
                    systemRam = totalMem,
                    version = TShock.VersionNum.ToString(),
                    terrariaVersion = Terraria.Main.versionNumber2,
                    providerId = ProviderToken,
                    serverId = serverId,
                    mono = false
                };
            }

            var serialized = Newtonsoft.Json.JsonConvert.SerializeObject(data);
            var encoded = HttpUtility.UrlEncode(serialized);
            var uri = String.Format("http://stats.tshock.co/submit/{0}", encoded);
            var client = (HttpWebRequest)WebRequest.Create(uri);
            client.Timeout = 5000;
            try
            {
                using (var resp = TShock.Utils.GetResponseNoException(client))
                {
                    if (resp.StatusCode != HttpStatusCode.OK)
                    {
                        throw new IOException("Server did not respond with an OK.");
                    }

                    failed = false;
                }
            }
            catch (Exception e)
            {
                if (!failed)
                {
                    TShock.Log.ConsoleError("StatTracker Exception: {0}", e);
                    failed = true;
                }
            }
        }