要修正缺少 Acct-Status-Type 的「Alive」,只需
define('RADIUS_ALIVE', 3);
這些常數定義了可以與 radius_put_addr()、radius_put_attr()、radius_put_int() 和 radius_put_string() 一起使用的 RADIUS 屬性類型。
RADIUS_USER_NAME
(int)使用者名稱屬性。屬性值應為包含正在驗證的使用者名稱的 字串,可以使用 radius_put_attr() 設定。
RADIUS_USER_PASSWORD
(int)使用者密碼屬性 (User-Password attribute)。屬性值應為包含使用者密碼的字串,可以使用 radius_put_attr() 函式設定。此值在傳輸過程中將會被遮蔽,如 » RFC 2865 的 5.2 節 所述。
RADIUS_CHAP_PASSWORD
(整數)CHAP 密碼屬性 (Chap-Password attribute)。屬性值應為字串,第一個位元組包含 CHAP 識別碼,後續 16 個位元組包含 CHAP 識別碼、明文密碼和 CHAP challenge 值串連在一起的 MD5 雜湊值。請注意,CHAP challenge 值也應該在 RADIUS_CHAP_CHALLENGE
屬性中單獨發送。
範例 #1 使用 CHAP 密碼
<?php
// 首先,我們會建立一個驗證 handle 和請求。
$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-Password 屬性。
$cp = hash('md5', pack('Ca*', $ident, $password.$challenge), true);
radius_put_attr($radh, RADIUS_CHAP_PASSWORD, pack('C', $ident).$cp);
// 加入 Chap-Challenge 屬性。
radius_put_attr($radh, RADIUS_CHAP_CHALLENGE, $challenge);
/* 從這裡開始,您應該加入其餘的屬性並
* 呼叫 radius_send_request()。 */
?>
RADIUS_NAS_IP_ADDRESS
(整數)NAS-IP-Address 屬性。屬性值應為 RADIUS 用戶端之 IP 位址,編碼為整數,可以使用 radius_put_addr() 設定。
RADIUS_NAS_PORT
(整數)NAS-Port 屬性。屬性值應為 RADIUS 用戶端上使用者之實體連接埠,編碼為整數,可以使用 radius_put_int() 設定。
RADIUS_SERVICE_TYPE
(整數)Service-Type 屬性。屬性值指示使用者請求的服務類型,預期為整數,可以使用 radius_put_int() 設定。
提供了許多常數來表示此屬性的可能值。它們包含:
RADIUS_FRAMED_PROTOCOL
(int 整數)Framed-Protocol(框架協議)屬性。屬性值應為一個 int 整數,表示用於框架式存取的框架類型,可以使用 radius_put_int() 函式設定。可能的屬性值包含以下常數:
RADIUS_FRAMED_IP_ADDRESS
(int 整數)Framed-IP-Address(框架式 IP 位址)屬性。屬性值應為使用者網路的位址,編碼為 int 整數,可以使用 radius_put_addr() 函式設定,並使用 radius_cvt_addr() 函式擷取。
RADIUS_FRAMED_IP_NETMASK
(int 整數)Framed-IP-Netmask(框架式 IP 網路遮罩)屬性。屬性值應為使用者網路的網路遮罩,編碼為 int 整數,可以使用 radius_put_addr() 函式設定,並使用 radius_cvt_addr() 函式擷取。
RADIUS_FRAMED_ROUTING
(int 整數)Framed-Routing(框架式路由)屬性。屬性值應為一個 int 整數,表示使用者的路由方法,可以使用 radius_put_int() 函式設定。
可能的值包含:
0
:無路由1
:傳送路由封包2
:監聽路由封包3
:傳送和監聽RADIUS_FILTER_ID
(int 整數)Filter-ID(過濾器 ID)屬性。屬性值應為一個實現特定的、人類可讀的過濾器 string 字串,可以使用 radius_put_attr() 函式設定。
RADIUS_FRAMED_MTU
(int 整數)Framed-MTU(框架式最大傳輸單元)屬性。屬性值應為一個 int 整數,表示要為使用者設定的 MTU,可以使用 radius_put_int() 函式設定。
RADIUS_FRAMED_COMPRESSION
(int 整數)Framed-Compression(框架式壓縮)屬性。屬性值應為一個 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
(整數)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
(整數 (int))Class 屬性。此屬性值是一個任意字串 (string),包含在 Access-Accept 訊息中,之後應在 Accounting-Request 訊息中發送至記帳伺服器,可以使用 radius_put_attr() 函式設定。
RADIUS_VENDOR_SPECIFIC
(整數 (int))廠商專屬屬性。一般來說,廠商屬性值應使用 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(ISDN 同步)
RADIUS_ISDN_ASYNC_V120(ISDN 非同步 V120)
RADIUS_ISDN_ASYNC_V110(ISDN 非同步 V110)
RADIUS_VIRTUAL(虛擬)
RADIUS_PIAFS(PIAFS)
RADIUS_HDLC_CLEAR_CHANNEL(HDLC 透明通道)
RADIUS_X_25(X.25)
RADIUS_X_75(X.75)
RADIUS_G_3_FAX(G.3 傳真)
RADIUS_SDSL(SDSL)
RADIUS_ADSL_CAP(ADSL CAP)
RADIUS_ADSL_DMT(ADSL DMT)
RADIUS_IDSL(IDSL)
RADIUS_ETHERNET(乙太網路)
RADIUS_XDSL(xDSL)
RADIUS_CABLE(纜線)
RADIUS_WIRELESS_OTHER(其他無線網路)
RADIUS_WIRELESS_IEEE_802_11(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(NAS 錯誤)
RADIUS_TERM_NAS_REQUEST(NAS 請求)
RADIUS_TERM_NAS_REBOOT(NAS 重新啟動)
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 回叫 NAS 提示)
RADIUS_COMP_NONE(無壓縮)
RADIUS_COMP_VJ(VJ 壓縮)
RADIUS_COMP_IPXHDR(IPX 標頭壓縮)
RADIUS_COMP_STAC_LZS
RADIUS_ASYNC(非同步)
RADIUS_SYNC(同步)
RADIUS_ISDN_SYNC(ISDN 同步)
RADIUS_ISDN_ASYNC_V120(ISDN 非同步 V120)
RADIUS_ISDN_ASYNC_V110(ISDN 非同步 V110)
RADIUS_VIRTUAL(虛擬)
RADIUS_PIAFS(PIAFS)
RADIUS_HDLC_CLEAR_CHANNEL(HDLC 透明通道)
RADIUS_X_25(X.25)
RADIUS_X_75(X.75)
RADIUS_G_3_FAX(G.3 傳真)
RADIUS_SDSL(SDSL)
RADIUS_ADSL_CAP(ADSL CAP)
RADIUS_ADSL_DMT(ADSL DMT)
RADIUS_IDSL(IDSL)
RADIUS_ETHERNET(乙太網路)
RADIUS_XDSL(xDSL)
RADIUS_CABLE(纜線)
RADIUS_WIRELESS_OTHER(其他無線網路)
RADIUS_WIRELESS_IEEE_802_11(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(NAS 錯誤)
RADIUS_TERM_NAS_REQUEST(NAS 請求)
RADIUS_TERM_NAS_REBOOT(NAS 重新啟動)
RADIUS_TERM_PORT_UNNEEDED(連接埠不需要)
RADIUS_TERM_PORT_PREEMPTED(連接埠被搶佔)
RADIUS_TERM_PORT_SUSPENDED(連接埠被暫停)
RADIUS_TERM_CALLBACK(回撥)
RADIUS_TERM_USER_ERROR(使用者錯誤)
RADIUS_TERM_HOST_REQUEST(主機請求)