MichaelCrowcroft/laravel-cloud-ip

跟踪云服务提供商正在使用的IP地址范围,并确定IP地址是否与它们关联。兼容IPv4和IPv6。

0.1.1 2023-10-13 18:04 UTC

This package is auto-updated.

Last update: 2024-09-13 19:57:10 UTC


README

跟踪云服务提供商正在使用的IP地址范围,并确定IP地址是否与它们关联。兼容IPv4和IPv6。

当前支持的云服务提供商

  • 亚马逊网络服务
  • 谷歌云平台

即将推出

  • 微软Azure
  • Cloudflare

安装

您可以通过composer安装此包

composer require michaelcrowcroft/laravel-cloud-ip

该包将自动注册自己。

虽然该包没有发布迁移文件,但在使用之前您需要运行其迁移。

php artisan migrate

现在您已迁移了cloud_ip表,您可以使用提供的Artisan命令将云提供商发布的IP地址范围填充到表中。

php artisan cloudip:get

用法

安装包后,您可以通过CloudIP模型访问云提供商正在使用的IP地址信息。以下列出了关联的字段列表。这可以像任何其他Eloquent模型一样使用。

提供了一个方法来选择与IP地址关联的记录。我们只选择第一条记录,因为一个IP地址可能位于云提供商用于不同服务的多个范围内。最终,它们都将回到同一个云提供商。这接受一个作为长整数、十六进制或点表示法(作为字符串)的IP地址。

public function cloudIP()
{
    public static function HasIP($ip): self|null
    {
        $ip = IP::parse($ip);

        return CloudIP::where('first_ip', '<=', $ip->toLong())
            ->where('last_ip', '>=', $ip->toLong())
            ->first();
    }
}

可以使用以下方式使用它,如果IP地址确实与云提供商关联,则返回关联的单个CloudIP记录。

CloudIP::hasIP('3.2.34.0')->get();

提供字段

  • ip_prefix: 以CIDR表示法的IP地址范围。
  • first_ip: 范围中的第一个IP作为长整数。
  • last_ip: 范围中的最后一个IP作为长整数。
  • type: IP地址范围是IPv4还是IPv6。
  • provider: 与IP地址范围关联的云提供商。

额外提示

云提供商通常不会更改正在使用的IP地址,但将提供的Artisan命令设置为每周在调度器中运行,以确保您的云IP数据是最新的,这可能值得。

// In your app/Console/Kernel.php file
protected function schedule(Schedule $schedule): void
{
    $schedule->command('cloudip:get')->weekly();
}

许可

MIT许可(MIT)。有关更多信息,请参阅许可文件