} if ($isstopacct) { // Send account stop to radius $racct = new rahu_radius_acct($username); $racct->host = $config["RADIUS_HOST"]; $racct->port = $config["RADIUS_ACCT_PORT"]; $racct->secret = $config["RADIUS_SECRET"]; $racct->nas_identifier = $config["NAS_IDENTIFIER"]; $racct->nas_ip_address = $config["NAS_IP_ADDRESS"]; $racct->nas_port = $config["NAS_PORT"]; $racct->framed_ip_address = $ip; $racct->calling_station_id = $mac_address; $racct->terminate_cause = RADIUS_TERM_USER_REQUEST; $racct->session_id = $session_id; $racct->session_start = $session_start; $racct->acctStop(); } } else { $show_info = true; } if ($show_info) { $result = $xmlrpc->do_getsessioninfo($vserver_id, $ip); if (is_array($result)) { if (!empty($result['session_id'])) { $valid = true; $info = $result; } else { $message = get_message('ERR_PLEASE_LOGIN'); } } }
$request_xml = $HTTP_RAW_POST_DATA; $response = xmlrpc_server_call_method($xmlrpc_server, $request_xml, ''); if ($GLOBALS["task"] == "do_stopacct") { $ip =& $GLOBALS["ip"]; $username =& $GLOBALS["username"]; $session_id =& $GLOBALS["session_id"]; $session_start =& $GLOBALS["session_start"]; $mac_address =& $GLOBALS["mac_address"]; $cause =& $GLOBALS["cause"]; $config = get_config_by_network($ip, $config_list); $vserver_id = $config["VSERVER_ID"]; $racct = new rahu_radius_acct($username); $racct->host = $config["RADIUS_HOST"]; $racct->port = $config["RADIUS_ACCT_PORT"]; $racct->secret = $config["RADIUS_SECRET"]; $racct->nas_identifier = $config["NAS_IDENTIFIER"]; $racct->nas_ip_address = $config["NAS_IP_ADDRESS"]; $racct->framed_ip_address = $ip; $racct->calling_station_id = $mac_address; $racct->terminate_cause = !empty($cause) ? $cause : RADIUS_TERM_NAS_ERROR; $racct->nas_port = $config["NAS_PORT"]; $racct->session_id = $session_id; $racct->session_start = $session_start; if ($racct->acctStop() === true) { $response = str_replace("[RESULT]", "OK", $response); } else { $response = str_replace("[RESULT]", "FAIL", $response); } } print $response; xmlrpc_server_destroy($xmlrpc_server);