MichaelCrowcroft / laravel-cloud-ip
跟踪云服务提供商正在使用的IP地址范围,并确定IP地址是否与它们关联。兼容IPv4和IPv6。
0.1.1
2023-10-13 18:04 UTC
Requires
- php: ^8.1
- guzzlehttp/guzzle: ^7.2
- laravel/framework: ^10.0
- s1lentium/iptools: ^1.2
- symfony/http-foundation: ^6.0.0
Requires (Dev)
- orchestra/testbench: ^8.0
- pestphp/pest: ^2.20
- pestphp/pest-plugin-arch: ^2.0
- pestphp/pest-plugin-laravel: ^2.0
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)。有关更多信息,请参阅许可文件。