要解决缺少“Alive”的 Acct-Status-Type 的问题,只需
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)过滤器 ID 属性。属性值应为实现特定的人类可读string 过滤器,可以使用 radius_put_attr() 设置。
RADIUS_FRAMED_MTU
(int)帧 MTU 属性。属性值应为 int,指示要为用户配置的 MTU,可以使用 radius_put_int() 设置。
RADIUS_FRAMED_COMPRESSION
(int)帧压缩属性。属性值应为 int,指示要使用的压缩协议,可以使用 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
(int)Login-IP-Host 属性。属性值预期为用户连接的 IP 地址,编码为 int,可以使用 radius_put_addr() 设置。
RADIUS_LOGIN_SERVICE
(int)Login-Service 属性。属性值是一个 int,表示在登录主机上连接用户的服务。该值可以通过 radius_cvt_int() 转换为 PHP 整数。
RADIUS_LOGIN_TCP_PORT
(int)Login-TCP-Port 属性。属性值是一个 int,表示在登录主机上连接用户的端口。该值可以通过 radius_cvt_int() 转换为 PHP 整数。
RADIUS_REPLY_MESSAGE
(int)Reply-Message 属性。属性值是一个 string,包含可能显示给用户以响应访问请求的文本。
RADIUS_CALLBACK_NUMBER
(int)Callback-Number 属性。属性值是一个 string,包含用于回叫的拨号字符串。
RADIUS_CALLBACK_ID
(int)Callback-Id 属性。属性值是一个 string,包含要呼叫的地址的实现特定名称。
RADIUS_FRAMED_ROUTE
(int)Framed-Route 属性。属性值是一个 string,包含为用户配置的实现特定路由集。
RADIUS_FRAMED_IPX_NETWORK
(int)Framed-IPX-Network 属性。属性值是一个 int,包含为用户配置的 IPX 网络,或 0xFFFFFFFE
表示 RADIUS 客户端应选择网络,可以通过 radius_cvt_int() 访问。
RADIUS_STATE
(int)State 属性。属性值是一个实现定义的 string,包含在服务器发出的 Access-Challenge 中,必须包含在随后的 Access-Request 中,可以使用 radius_put_attr() 设置。
RADIUS_CLASS
(int)Class 属性。属性值是一个任意 string,包含在 Access-Accept 消息中,然后应发送到 Accounting-Request 消息中的记账服务器,可以使用 radius_put_attr() 设置。
RADIUS_VENDOR_SPECIFIC
(int)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
(int)会话超时
RADIUS_IDLE_TIMEOUT
(int)空闲超时
RADIUS_TERMINATION_ACTION
(int)终止操作
RADIUS_CALLED_STATION_ID
(int)被叫站ID
RADIUS_CALLING_STATION_ID
(int)主叫站ID
RADIUS_NAS_IDENTIFIER
(int)NAS ID
RADIUS_PROXY_STATE
(int)代理状态
RADIUS_LOGIN_LAT_SERVICE
(int)登录 LAT 服务
RADIUS_LOGIN_LAT_NODE
(int)登录 LAT 节点
RADIUS_LOGIN_LAT_GROUP
(int)登录 LAT 组
RADIUS_FRAMED_APPLETALK_LINK
(int)帧式 AppleTalk 链接
RADIUS_FRAMED_APPLETALK_NETWORK
(int)帧式 AppleTalk 网络
RADIUS_FRAMED_APPLETALK_ZONE
(int)帧式 AppleTalk 区域
RADIUS_CHAP_CHALLENGE
(int)挑战
RADIUS_NAS_PORT_TYPE
(int)NAS 端口类型,其中之一
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_PORT_LIMIT
(int)端口限制
RADIUS_LOGIN_LAT_PORT
(int)登录 LAT 端口
RADIUS_CONNECT_INFO
(int)连接信息
RADIUS_ACCT_STATUS_TYPE
(int)记账状态类型,其中之一
RADIUS_ACCT_DELAY_TIME
(int)记账延迟时间
RADIUS_ACCT_INPUT_OCTETS
(int)记账输入字节
RADIUS_ACCT_OUTPUT_OCTETS
(int)记账输出字节
RADIUS_ACCT_SESSION_ID
(int)记账会话 ID
RADIUS_ACCT_AUTHENTIC
(int)记账验证,其中之一
RADIUS_ACCT_SESSION_TIME
(int)记账会话时间
RADIUS_ACCT_INPUT_PACKETS
(int)记账输入数据包
RADIUS_ACCT_OUTPUT_PACKETS
(int)记账输出数据包
RADIUS_ACCT_TERMINATE_CAUSE
(int)记账终止原因,其中之一
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_SERVICE_UNAVAILABLE
RADIUS_TERM_CALLBACK
RADIUS_TERM_USER_ERROR
RADIUS_TERM_HOST_REQUEST
RADIUS_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