IPIntelAPI.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940
  1. using System.Net;
  2. using System.Net.Http;
  3. using System.Threading.Tasks;
  4. using Content.Shared.CCVar;
  5. using Robust.Shared.Configuration;
  6. using Robust.Shared.Network;
  7. namespace Content.Server.Connection.IPIntel;
  8. public interface IIPIntelApi
  9. {
  10. Task<HttpResponseMessage> GetIPScore(IPAddress ip);
  11. }
  12. public sealed class IPIntelApi : IIPIntelApi
  13. {
  14. // Holds-The-HttpClient
  15. private readonly IHttpClientHolder _http;
  16. // CCvars
  17. private string? _contactEmail;
  18. private string? _baseUrl;
  19. private string? _flags;
  20. public IPIntelApi(
  21. IHttpClientHolder http,
  22. IConfigurationManager cfg)
  23. {
  24. _http = http;
  25. cfg.OnValueChanged(CCVars.GameIPIntelEmail, b => _contactEmail = b, true);
  26. cfg.OnValueChanged(CCVars.GameIPIntelBase, b => _baseUrl = b, true);
  27. cfg.OnValueChanged(CCVars.GameIPIntelFlags, b => _flags = b, true);
  28. }
  29. public Task<HttpResponseMessage> GetIPScore(IPAddress ip)
  30. {
  31. return _http.Client.GetAsync($"{_baseUrl}/check.php?ip={ip}&contact={_contactEmail}&flags={_flags}");
  32. }
  33. }