Esempio n. 1
0
        protected override void OnRun(CommandDetails details)
        {
            if (details.Args.Length == 0)
            {
                IRC.Instance.Send(details.Channel, "{0}: filter argument required", details.Sender.Nickname);
                return;
            }

            if (!Steam.Instance.Connected)
            {
                IRC.Instance.Send(details.Channel, "{0}: Unable to request server count: not connected to Steam!", details.Sender.Nickname);
                return;
            }

            var query = new SteamMasterServer.QueryDetails
            {
                Region = ERegionCode.World,
            };

            query.Filter = string.Join(" ", details.Args);

            var jobId = Steam.Instance.MasterServer.ServerQuery(query);

            AddRequest(details, new Request {
                JobID = jobId
            });
        }
Esempio n. 2
0
        protected override void OnRun(CommandDetails details)
        {
            if (details.Args.Length < 3)
            {
                base.ShowHelp(details);
                return;
            }

            if (!Steam.Instance.Connected)
            {
                IRC.Instance.Send(details.Channel, "{0}: Unable to find server: not connected to Steam!", details.Sender.Nickname);
                return;
            }

            IPAddress search;

            if (!IPAddress.TryParse(details.Args[0], out search))
            {
                IRC.Instance.Send(details.Channel, "{0}: Invalid search IP address.", details.Sender.Nickname);
                base.ShowHelp(details);
                return;
            }

            IPAddress geo;

            if (!IPAddress.TryParse(details.Args[1], out geo))
            {
                geo = null;

                if (!string.Equals(details.Args[1], "none", StringComparison.OrdinalIgnoreCase))
                {
                    IRC.Instance.Send(details.Channel, "{0}: Invalid geo IP address.", details.Sender.Nickname);
                    base.ShowHelp(details);
                    return;
                }
            }

            ERegionCode regionCode;

            if (!Enum.TryParse(details.Args[2], true, out regionCode))
            {
                IRC.Instance.Send(details.Channel, "{0}: Invalid region code, should be one of: {1}",
                                  details.Sender.Nickname, string.Join(", ", Enum.GetNames(typeof(ERegionCode)))
                                  );
                base.ShowHelp(details);
                return;
            }

            var query = new SteamMasterServer.QueryDetails
            {
                GeoLocatedIP = geo,
                Region       = regionCode,
            };

            query.Filter = string.Join(" ", details.Args.Skip(3));

            var jobId = Steam.Instance.MasterServer.ServerQuery(query);

            AddRequest(details, new Request {
                JobID = jobId, SearchIP = search
            });
        }