ictsolutions / codeigniter-freeradius
CodeIgniter4 FreeRadius 包装库。
Requires
- php: ^8.1
- codeigniter4/settings: ^2.2.0
Requires (Dev)
- codeigniter4/devkit: ^1.2.1
- codeigniter4/framework: ^4.4.6
- ergebnis/composer-normalize: ^2.42
- phpunit/phpunit: ^9.6
- dev-develop
- v1.0.4
- v1.0.3
- v1.0.2
- v1.0.1
- v1.0.0
- dev-add-radius-db-default-creds
- dev-atrributes
- dev-10-add-missing-attribute-descriptions-to-freeradius-language-files
- dev-dependabot/composer/phpunit/phpunit-tw-9.6or-tw-10.0
- dev-add-MS-DNS-Attributes
- dev-bandwidth-plan
- dev-add-get-dropdown-values-to-enums
This package is auto-updated.
Last update: 2024-09-28 10:47:15 UTC
README
CodeIgniter FreeRADIUS 库提供了一套工具,用于通过 CodeIgniter 框架管理和与 FreeRADIUS 服务器交互。它提供了数据库处理、配置 FreeRADIUS 表、操作用户领域和特性、修改 PPPoE 群组设置以及管理 CGNAT (Carrier-Grade NAT) 的 IP 范围等功能。该库通过提供预定义和易于配置的设置,大大简化了与 FreeRADIUS 服务器交互的过程。
此外,它与 CodeIgniter 框架的无缝集成使其成为需要在其 PHP 应用程序中进行远程身份验证和计费的开发人员的典范工具集。这使得开发者可以更多地关注其应用程序的核心功能,并确信他们的 FreeRADIUS 服务器交互将由该库高效地处理。
安装
通过 Composer 进行安装。
composer require ictsolutions/codeigniter-freeradius
配置
表:FreeRADIUS 表的名称为 radacct、radcheck、radgroupcheck、radgroupreply、radreply、radusergroup、radpostauth、nas、nasreload 和 userinfo。这些表通常在安装和配置 FreeRADIUS 服务器时创建,用于管理 RADIUS 账户、用户组、身份验证和服务器。
usernameRealm:默认情况下,用于构造用户名的领域设置为 null,这意味着不会向用户名添加领域。
usernameCharacters & usernameLength:用户名使用字符 '0-9' 和 'A-Z' 生成,长度为 6 个字符。
passwordCharacters & passwordLength:密码使用字符 '0-9' 和 'A-Z' 生成,长度为 12 个字符。
pppoeGroupName & pppoeGroupPriority:默认的点对点协议 over Ethernet (PPPoE) 群组名称为 'PPPoE',优先级为 0。
ipStart & ipEnd:CGNAT (Carrier-Grade NAT) 的 IP 地址范围从 '100.64.0.0' 到 '100.64.63.255'。
枚举
属性枚举
属性枚举包括以下枚举,代表可在 CodeIgniter FreeRADIUS 库内使用的不同 RADIUS 协议属性
namespace IctSolutions\CodeIgniterFreeRadius\Enums; enum Attribute: string { case CleartextPassword = 'Cleartext-Password'; case FallThrough = 'Fall-Through'; case SimultaneousUse = 'Simultaneous-Use'; case ServiceType = 'Service-Type'; case FramedIPAddress = 'Framed-IP-Address'; case FramedIPNetmask = 'Framed-IP-Netmask'; case FramedProtocol = 'Framed-Protocol'; case FramedMTU = 'Framed-MTU'; case CiscoAVPair = 'Cisco-AVPair'; case CiscoNASPort = 'Cisco-NAS-Port'; case CiscoFramedRoute = 'Cisco-Framed-Route'; }
每个枚举都伴随一个注释,描述其在 RADIUS 协议中的用途或功能。
运算符枚举
运算符枚举包括可以应用于 CodeIgniter FreeRADIUS 库属性的不同运算符
namespace IctSolutions\CodeIgniterFreeRadius\Enums; enum Operator: string { case Equals = '='; case Assign = ':='; case Check = '=='; case Add = '+='; case NotEquals = '!='; case Greater = '>'; case GreaterEquals = '>='; case Less = '<'; case LessEquals = '<='; case Matches = '=~'; case NotMatches = '!~'; case Exists = '=*'; case NotExists = '!*'; }
每个枚举都附有注释,提供有关在 RADIUS 协议中使用运算符与属性的额外见解。
用法
初始化
使用提供的服务类实例化您的 FreeRADIUS 库。CodeIgniter 的服务类提供了一个统一且直接访问库的方法。
$freeRadiusLibrary = \IctSolutions\CodeIgniterFreeRadius\Config\Services::freeradius();
绑定用户
例如,如果您想将用户绑定到 RADIUS 服务器中具有属性 'FramedIPAddress' 的用户
use IctSolutions\CodeIgniterFreeRadius\Enums\Operator; use IctSolutions\CodeIgniterFreeRadius\Enums\Attribute; // ... ... $attributeValue = '192.0.2.1'; // Provided framed IP address for the user $freeRadiusLibrary->bindUser(Attribute::FramedIPAddress, Operator::Equals, $attributeValue);
这将使用 RADIUS 协议中用于帧 IP 的属性将用户绑定到提供的 IP 地址。
检查用户绑定
您还可以检查用户的绑定状态
$status = $freeRadiusLibrary->checkUserBinding(Attribute::FramedIPAddress, $attributeValue);
此方法将检查用户是否已将 'Framed-IPAddress' 正确绑定到提供的值。
其他功能
其他功能允许您使用 FreeRADIUS 服务器的高级配置。通过简单语法设置回退行为、允许同时登录、设置服务类型和其他配置
$config = [ Attribute::FallThrough => ['operator' => Operator::NotEquals, 'value' => 'YES'], Attribute::SimultaneousUse => ['operator' => Operator::LessEquals, 'value' => 1], Attribute::ServiceType => ['operator' => Operator::Equals, 'value' => 'Framed-User'], ]; $freeRadiusLibrary->applyConfigs($config);
这将配置 FreeRADIUS 服务器,不允许回退,将同时登录限制为一次,并将服务类型设置为 'Framed-User'。
请注意,在实际部署中,所有属性值、运算符、用户详情等都应该仔细管理和清理。
示例:使用FreeRADIUS创建CodeIgniter项目
步骤 1:创建新的CodeIgniter项目
首先创建一个新的CodeIgniter项目(如果您还没有创建)。您可以使用Composer启动项目。
composer create-project codeigniter4/appstarter myProject
导航到新创建的项目
cd myProject
步骤 2:安装CodeIgniter FreeRADIUS库
将FreeRADIUS库添加到您的项目中
composer require ictsolutions/codeigniter-freeradius
步骤 3:运行迁移
现在您可以运行迁移了。这将为您创建FreeRADIUS工作所需的数据表。
php spark migrate
检查您的数据库以确认已创建表。
步骤 5:在您的代码中使用库
设置完成后,您可以在CodeIgniter项目中使用FreeRadius库。例如,在您的控制器中
use IctSolutions\CodeIgniterFreeRadius\Enums\Attribute; use IctSolutions\CodeIgniterFreeRadius\Enums\Operator; public function index(){ $freeRadius = \IctSolutions\CodeIgniterFreeRadius\Config\Services::freeradius(); // Let's bind a user 'john' with a Cleartext-Password $freeRadius->bindUser('john', Attribute::CleartextPassword, Operator::Equals, 'JohnsPassword123'); }
请确保在真实场景中用安全且加密的密码版本替换'JohnsPassword123'。
许可协议
本项目遵循MIT许可协议 - 请参阅LICENSE文件了解详细信息。