为了修复缺少Acct-Status-Type的“Alive”,只需
define('RADIUS_ALIVE', 3);这些常量定义了 RADIUS 属性类型,可与 radius_put_addr()、radius_put_attr()、radius_put_int() 和 radius_put_string() 一起使用。
RADIUS_USER_NAME (int)用户名称属性。属性值应为包含正在进行身份验证的用户名称的 string,可以使用 radius_put_attr() 设置。
RADIUS_USER_PASSWORD (int)用户密码属性。属性值应为包含用户密码的 string,可以使用 radius_put_attr() 设置。此值将在传输过程中被混淆,如 » RFC 2865 第 5.2 节 中所述。
RADIUS_CHAP_PASSWORD (int)Chap 密码属性。属性值应为一个 string,其第一个字节包含 CHAP 标识符,后续 16 个字节包含 CHAP 标识符、明文密码和 CHAP 挑战值的 MD5 哈希值连接在一起。请注意,CHAP 挑战值也应在 RADIUS_CHAP_CHALLENGE 属性中单独发送。
示例 #1 使用 CHAP 密码
<?php
// 首先,我们将创建一个身份验证句柄和请求。
$radh = radius_auth_open();
radius_add_server($radh, $server, $port, $secret, 3, 3);
radius_create_request($radh, RADIUS_ACCESS_REQUEST);
// 假设 $password 包含明文密码,我们现在:
// 生成一个挑战。
$challenge = mt_rand();
// 指定一个 CHAP 标识符。
$ident = 1;
// 添加 Chap 密码属性。
$cp = hash('md5', pack('Ca*', $ident, $password.$challenge), true);
radius_put_attr($radh, RADIUS_CHAP_PASSWORD, pack('C', $ident).$cp);
// 添加 Chap 挑战属性。
radius_put_attr($radh, RADIUS_CHAP_CHALLENGE, $challenge);
/* 从这里,您可以添加其余属性并
* 调用 radius_send_request()。 */
?>RADIUS_NAS_IP_ADDRESS (int)NAS IP 地址属性。属性值应为 RADIUS 客户端的 IP 地址,编码为 int,可以使用 radius_put_addr() 设置。
RADIUS_NAS_PORT (int)NAS 端口属性。属性值应为 RADIUS 客户端上用户的物理端口,编码为 int,可以使用 radius_put_int() 设置。
RADIUS_SERVICE_TYPE (int)服务类型属性。属性值指示用户请求的服务类型,应为 int,可以使用 radius_put_int() 设置。
提供了一些常量来表示此属性的可能值。它们包括
RADIUS_FRAMED_PROTOCOL (int)帧协议属性。属性值应为 int,指示要用于帧访问的帧类型,可以使用 radius_put_int() 设置。可能的属性值包括这些常量
RADIUS_FRAMED_IP_ADDRESS (int)帧 IP 地址属性。属性值应为用户网络的地址,编码为 int,可以使用 radius_put_addr() 设置,并使用 radius_cvt_addr() 检索。
RADIUS_FRAMED_IP_NETMASK (int)帧 IP 网络掩码属性。属性值应为用户网络的网络掩码,编码为 int,可以使用 radius_put_addr() 设置,并使用 radius_cvt_addr() 检索。
RADIUS_FRAMED_ROUTING (int)帧路由属性。属性值应为 int,指示用户的路由方法,可以使用 radius_put_int() 设置。
可能的值包括
0:无路由1:发送路由数据包2:侦听路由数据包3:发送和侦听RADIUS_FILTER_ID (int)Filter-ID 属性。属性值应为特定于实现的、人类可读的字符串 过滤器,可以使用 radius_put_attr() 设置。
RADIUS_FRAMED_MTU (整数)Framed-MTU 属性。属性值应为一个 整数,表示要为用户配置的 MTU,可以使用 radius_put_int() 设置。
RADIUS_FRAMED_COMPRESSION (整数)Framed-Compression 属性。属性值应为一个 整数,表示要使用的压缩协议,可以使用 radius_put_int() 设置。可能的值包括以下常量
RADIUS_COMP_NONE:无压缩RADIUS_COMP_VJ:VJ TCP/IP 报头压缩RADIUS_COMP_IPXHDR:IPX 报头压缩RADIUS_COMP_STAC_LZS:Stac-LZS 压缩(在 PECL radius 1.3.0b2 中添加)RADIUS_LOGIN_IP_HOST (整数)Login-IP-Host 属性。属性值应为连接用户的 IP 地址,编码为 整数,可以使用 radius_put_addr() 设置。
RADIUS_LOGIN_SERVICE (整数)Login-Service 属性。属性值是一个 整数,表示在登录主机上连接用户的服务。该值可以通过 radius_cvt_int() 转换为 PHP 整数。
RADIUS_LOGIN_TCP_PORT (整数)Login-TCP-Port 属性。属性值是一个 整数,表示在登录主机上连接用户的端口。该值可以通过 radius_cvt_int() 转换为 PHP 整数。
RADIUS_REPLY_MESSAGE (整数)Reply-Message 属性。属性值是一个 字符串,包含可能显示给用户的文本,以响应访问请求。
RADIUS_CALLBACK_NUMBER (整数)Callback-Number 属性。属性值是一个 字符串,包含用于回拨的拨号字符串。
RADIUS_CALLBACK_ID (整数)Callback-Id 属性。属性值是一个 字符串,包含要呼叫位置的特定于实现的名称。
RADIUS_FRAMED_ROUTE (整数)Framed-Route 属性。属性值是一个 字符串,包含要为用户配置的特定于实现的路由集。
RADIUS_FRAMED_IPX_NETWORK (整数)Framed-IPX-Network 属性。属性值是一个 整数,包含要为用户配置的 IPX 网络,或 0xFFFFFFFE 表示 RADIUS 客户端应选择网络,并且可以通过 radius_cvt_int() 访问。
RADIUS_STATE (整数)State 属性。属性值是一个特定于实现的 字符串,包含在来自服务器的 Access-Challenge 中,必须包含在随后的 Access-Request 中,可以使用 radius_put_attr() 设置。
RADIUS_CLASS (整数)Class 属性。属性值是一个任意 字符串,包含在 Access-Accept 消息中,然后应发送到 Accounting-Request 消息中的计费服务器,可以使用 radius_put_attr() 设置。
RADIUS_VENDOR_SPECIFIC (整数)Vendor-Specific 属性。通常,应使用 radius_put_vendor_addr()、radius_put_vendor_attr()、radius_put_vendor_int() 和 radius_put_vendor_string() 设置供应商属性值,而不是直接设置。
此常量主要用于解释来自 RADIUS 服务器的响应中的供应商特定属性;当接收到供应商特定属性时,应使用 radius_get_vendor_attr() 函数访问供应商 ID、属性类型和属性值。
RADIUS_SESSION_TIMEOUT (整数)会话超时
RADIUS_IDLE_TIMEOUT (整数)空闲超时
RADIUS_TERMINATION_ACTION (整数)终止操作
RADIUS_CALLED_STATION_ID (整数)被叫方站号
RADIUS_CALLING_STATION_ID (整数)主叫方站号
RADIUS_NAS_IDENTIFIER (整数)NAS ID
RADIUS_PROXY_STATE (整数)代理状态
RADIUS_LOGIN_LAT_SERVICE (整数)登录 LAT 服务
RADIUS_LOGIN_LAT_NODE (整数)登录 LAT 节点
RADIUS_LOGIN_LAT_GROUP (整数)登录 LAT 组
RADIUS_FRAMED_APPLETALK_LINK (整数)帧封装 AppleTalk 链路
RADIUS_FRAMED_APPLETALK_NETWORK (整数)帧封装 AppleTalk 网络
RADIUS_FRAMED_APPLETALK_ZONE (整数)帧封装 AppleTalk 区域
RADIUS_CHAP_CHALLENGE (整数)质询
RADIUS_NAS_PORT_TYPE (整数)NAS 端口类型,其中之一
RADIUS_ASYNCRADIUS_SYNCRADIUS_ISDN_SYNCRADIUS_ISDN_ASYNC_V120RADIUS_ISDN_ASYNC_V110RADIUS_VIRTUALRADIUS_PIAFSRADIUS_HDLC_CLEAR_CHANNELRADIUS_X_25RADIUS_X_75RADIUS_G_3_FAXRADIUS_SDSLRADIUS_ADSL_CAPRADIUS_ADSL_DMTRADIUS_IDSLRADIUS_ETHERNETRADIUS_XDSLRADIUS_CABLERADIUS_WIRELESS_OTHERRADIUS_WIRELESS_IEEE_802_11RADIUS_PORT_LIMIT (整数)端口限制
RADIUS_LOGIN_LAT_PORT (整数)登录 LAT 端口
RADIUS_CONNECT_INFO (整数)连接信息
RADIUS_ACCT_STATUS_TYPE (整数)计费状态类型,其中之一
RADIUS_ACCT_DELAY_TIME (整数)计费延迟时间
RADIUS_ACCT_INPUT_OCTETS (整数)计费输入字节数
RADIUS_ACCT_OUTPUT_OCTETS (整数)计费输出字节数
RADIUS_ACCT_SESSION_ID (整数)计费会话 ID
RADIUS_ACCT_AUTHENTIC (整数)计费身份验证,其中之一
RADIUS_ACCT_SESSION_TIME (整数)计费会话时间
RADIUS_ACCT_INPUT_PACKETS (整数)计费输入数据包数
RADIUS_ACCT_OUTPUT_PACKETS (整数)计费输出数据包
RADIUS_ACCT_TERMINATE_CAUSE (int)计费终止原因,其中之一
RADIUS_TERM_USER_REQUESTRADIUS_TERM_LOST_CARRIERRADIUS_TERM_LOST_SERVICERADIUS_TERM_IDLE_TIMEOUTRADIUS_TERM_SESSION_TIMEOUTRADIUS_TERM_ADMIN_RESETRADIUS_TERM_ADMIN_REBOOTRADIUS_TERM_PORT_ERRORRADIUS_TERM_NAS_ERRORRADIUS_TERM_NAS_REQUESTRADIUS_TERM_NAS_REBOOTRADIUS_TERM_PORT_UNNEEDEDRADIUS_TERM_PORT_PREEMPTEDRADIUS_TERM_PORT_SUSPENDEDRADIUS_TERM_SERVICE_UNAVAILABLERADIUS_TERM_CALLBACKRADIUS_TERM_USER_ERRORRADIUS_TERM_HOST_REQUESTRADIUS_ACCT_MULTI_SESSION_ID (int)计费多会话ID
RADIUS_ACCT_LINK_COUNT (int)计费链路计数
RADIUS_LOGIN
RADIUS_FRAMED
RADIUS_CALLBACK_LOGIN
RADIUS_CALLBACK_FRAMED
RADIUS_OUTBOUND
RADIUS_ADMINISTRATIVE
RADIUS_NAS_PROMPT
RADIUS_AUTHENTICATE_ONLY
RADIUS_CALLBACK_NAS_PROMPT
RADIUS_ASYNC
RADIUS_SYNC
RADIUS_ISDN_SYNC
RADIUS_ISDN_ASYNC_V120
RADIUS_ISDN_ASYNC_V110
RADIUS_VIRTUAL
RADIUS_PIAFS
RADIUS_HDLC_CLEAR_CHANNEL
RADIUS_X_25
RADIUS_X_75
RADIUS_G_3_FAX
RADIUS_SDSL
RADIUS_ADSL_CAP
RADIUS_ADSL_DMT
RADIUS_IDSL
RADIUS_ETHERNET
RADIUS_XDSL
RADIUS_CABLE
RADIUS_WIRELESS_OTHER
RADIUS_WIRELESS_IEEE_802_11
RADIUS_TERM_USER_REQUEST
RADIUS_TERM_LOST_CARRIER
RADIUS_TERM_LOST_SERVICE
RADIUS_TERM_IDLE_TIMEOUT
RADIUS_TERM_SESSION_TIMEOUT
RADIUS_TERM_ADMIN_RESET
RADIUS_TERM_ADMIN_REBOOT
RADIUS_TERM_PORT_ERROR
RADIUS_TERM_NAS_ERROR
RADIUS_TERM_NAS_REQUEST
RADIUS_TERM_NAS_REBOOT
RADIUS_TERM_PORT_UNNEEDED
RADIUS_TERM_PORT_PREEMPTED
RADIUS_TERM_PORT_SUSPENDED
RADIUS_TERM_CALLBACK
RADIUS_TERM_USER_ERROR
RADIUS_TERM_HOST_REQUEST