private function _sendPOD($session) { $nas = $session[0]['nas']; $username = $session[0]['login']; $session_id = str_replace('sid_', '', $session[0]['id']); $radport = 3799; $sharedsecret = 'brascoa'; $res = radius_acct_open(); radius_add_server($res, $nas, $radport, $sharedsecret, 3, 1); radius_create_request($res, RADIUS_DISCONNECT_REQUEST); // radius_put_string($res, RADIUS_NAS_IP_ADDRESS, 0); radius_put_string($res, RADIUS_USER_NAME, $username); radius_put_string($res, RADIUS_ACCT_SESSION_ID, $session_id); $reply = radius_send_request($res); switch ($reply) { case RADIUS_COA_ACK: case RADIUS_DISCONNECT_ACK: $result = "CoA-ACK\n"; break; case RADIUS_COA_NAK: case RADIUS_DISCONNECT_NAK: $result = "CoA-NAK\n"; break; default: return "Unsupported reply\n"; } while ($resa = radius_get_attr($res)) { $data = $resa['data']; $value = radius_cvt_int($data); switch ($value) { case 401: $result = "Unsupported Attribute\n"; break; case 402: $result = "Missing Attribute\n"; break; case 403: $result = "NAS Identification mismatch [{$nas}]\n"; break; case 404: $result = "Invalid Request\n"; break; case 503: $result = "Session context not found\n"; break; case 506: $result = "Resources unavailable\n"; break; default: $result = "Unsupported Error-Cause\n"; } } radius_close($res); return $result; }
if (!extension_loaded('radius')) { if (preg_match('/windows/i', getenv('OS'))) { dl('php_radius.dll'); } else { dl('radius.so'); } } $username = '******'; $radserver = 'localhost'; $radport = 1813; $starttime = time(); $sharedsecret = 'testing123'; if (!isset($REMOTE_ADDR)) { $REMOTE_ADDR = '127.0.0.1'; } $res = radius_acct_open(); echo "{$res}<br>\n"; //if (!radius_config($res, '/etc/radius.conf')) { /*if (!radius_config($res, 'D:/php-devel/pear/PECL/radius/radius.conf')) { echo 'RadiusError:' . radius_strerror($res). "\n<br>"; exit; }*/ if (!radius_add_server($res, $radserver, $radport, $sharedsecret, 3, 3)) { echo 'RadiusError:' . radius_strerror($res) . "\n<br>"; exit; } if (!radius_create_request($res, RADIUS_ACCOUNTING_REQUEST)) { echo 'RadiusError:' . radius_strerror($res) . "\n<br>"; exit; } if (!radius_put_string($res, RADIUS_NAS_IDENTIFIER, isset($HTTP_HOST) ? $HTTP_HOST : 'localhost')) {
/** * Creates a RADIUS resource * * Creates a RADIUS resource for accounting. This should be the first * call before you make any other things with the library. * * @return bool true on success, false on error */ function open() { $this->res = radius_acct_open(); if (!$this->res) { return false; } return true; }