Search moodle.org's
Developer Documentation

See Release Notes

  • Bug fixes for general core bugs in 4.2.x will end 22 April 2024 (12 months).
  • Bug fixes for security issues in 4.2.x will end 7 October 2024 (18 months).
  • PHP version: minimum PHP 8.0.0 Note: minimum PHP version has increased since Moodle 4.1. PHP 8.1.x is supported too.

Differences Between: [Versions 310 and 402] [Versions 311 and 402] [Versions 39 and 402] [Versions 400 and 402] [Versions 401 and 402]

   1  <?php
   2  
   3  declare(strict_types=1);
   4  
   5  namespace GeoIp2\Model;
   6  
   7  use GeoIp2\Util;
   8  
   9  /**
  10   * This class provides the GeoIP2 Anonymous IP model.
  11   *
  12   * @property-read bool $isAnonymous This is true if the IP address belongs to
  13   *     any sort of anonymous network.
  14   * @property-read bool $isAnonymousVpn This is true if the IP address is
  15   *     registered to an anonymous VPN provider. If a VPN provider does not
  16   *     register subnets under names associated with them, we will likely only
  17   *     flag their IP ranges using the isHostingProvider property.
  18   * @property-read bool $isHostingProvider This is true if the IP address belongs
  19   *     to a hosting or VPN provider (see description of isAnonymousVpn property).
  20   * @property-read bool $isPublicProxy This is true if the IP address belongs to
  21   *     a public proxy.
  22   * @property-read bool $isResidentialProxy This is true if the IP address is
  23   *     on a suspected anonymizing network and belongs to a residential ISP.
  24   * @property-read bool $isTorExitNode This is true if the IP address is a Tor
  25   *     exit node.
  26   * @property-read string $ipAddress The IP address that the data in the model is
  27   *     for.
  28   * @property-read string $network The network in CIDR notation associated with
  29   *      the record. In particular, this is the largest network where all of the
  30   *      fields besides $ipAddress have the same value.
  31   */
  32  class AnonymousIp extends AbstractModel
  33  {
  34      /**
  35       * @var bool
  36       */
  37      protected $isAnonymous;
  38  
  39      /**
  40       * @var bool
  41       */
  42      protected $isAnonymousVpn;
  43  
  44      /**
  45       * @var bool
  46       */
  47      protected $isHostingProvider;
  48  
  49      /**
  50       * @var bool
  51       */
  52      protected $isPublicProxy;
  53  
  54      /**
  55       * @var bool
  56       */
  57      protected $isResidentialProxy;
  58  
  59      /**
  60       * @var bool
  61       */
  62      protected $isTorExitNode;
  63  
  64      /**
  65       * @var string
  66       */
  67      protected $ipAddress;
  68  
  69      /**
  70       * @var string
  71       */
  72      protected $network;
  73  
  74      /**
  75       * @ignore
  76       */
  77      public function __construct(array $raw)
  78      {
  79          parent::__construct($raw);
  80  
  81          $this->isAnonymous = $this->get('is_anonymous');
  82          $this->isAnonymousVpn = $this->get('is_anonymous_vpn');
  83          $this->isHostingProvider = $this->get('is_hosting_provider');
  84          $this->isPublicProxy = $this->get('is_public_proxy');
  85          $this->isResidentialProxy = $this->get('is_residential_proxy');
  86          $this->isTorExitNode = $this->get('is_tor_exit_node');
  87          $ipAddress = $this->get('ip_address');
  88          $this->ipAddress = $ipAddress;
  89          $this->network = Util::cidr($ipAddress, $this->get('prefix_len'));
  90      }
  91  }