<?php
// A library of utilities that can be used by PHP scripts
// comprising an external captive portal.
// A utility that translates error codes to error messages.
function code_2_message($code, $content_type)
{
$errMsgList = array (
0 =>
array (
'label' => 'Invalid',
'content' => '<span style=\'color:red\'>Empty id /
password not allowed. Please try again.</span>'
),
1 =>
array (
'label' => 'Success',
'content' => 'Success',
),
2 =>
array (
'label' => 'Access Fail',
'content' => '<span style=\'color:red\'>Userid or
password incorrect. Please try again.</span>',
),
3 =>
array (
'label' => 'Fail',
'content' => '<span style=\'color:red\'>A problem has
occurred while trying to validate your userid & password.<br>Please contact
your system administrator.</span>',
),
4 =>
array (
'label' => 'Timeout',
'content' => '<span style=\'color:red\'>A problem has
occurred while trying to validate your userid & password.<br>Please contact
your system administrator.</span>',
),
5 =>
array (
'label' => 'RADIUS shared security key fail',
'content' => '<span style=\'color:red\'>A problem has
occurred while trying to validate your userid & password.<br>Please contact
your system administrator.</span>',
),
6 =>
array (
'label' => 'RADIUS internal error',
'content' => '<span style=\'color:red\'>A problem has
occurred while trying to validate your userid & password.<br>Please contact
your system administrator.</span>',
),
7 =>
array (
'label' => 'Max RADIUS login fail',
'content' => '<span style=\'color:red\'>Too many users
trying to login at the same time.Please try again later.</span>',
),
8 =>
array (
'label' => 'Invalid Login parameters',
'content' => '<span style=\'color:red\'>Userid or
password incorrect. Please try again.</span>',
),
9 =>
array (
'label' => 'General failure',
'content' => '<span style=\'color:red\'>A problem has
occurred while trying to validate your userid & password.<br>Please contact
your system administrator.</span>',
),
14 =>
array (
'label' => 'Invalid third party parameters',
'content' => '<span style=\'color:red\'>Invalid third
party parameters.</span>',
),
15 =>
array (
'label' => 'Authentication in progress failure',
'content' => '<span style=\'color:red\'>Authentication is
in progress.</span>',
),
17 =>
array (
'label' => 'Max concurrent session failure',
'content' => '<span style=\'color:red\'>Login rejected
because the maximum number of concurrent sessions for this set of credentials
has been reached. Please try again later.</span>',
),
18 =>
array (
'label' => 'Identified session not found',
'content' => '<span style=\'color:red\'>Login failed
because could not find a session for the specified identifiers.</span>'
),
99 =>
array (
'label' => 'Timeout while trying to authorize a session',
'content' => '<span style=\'color:red\'>Login failed
because because the controller took too long to authorize the
session.</span>'
)
);
return (isset($errMsgList[$code])) ?
$errMsgList[$code][$content_type] :
"Unrecognized error code: ".$code;
}
// General purpose error reporting procedure.
function printError($errorMsg) {
header('Content-type: text/html; charset=iso-8859-1');
print
"<html>\n<head><title>Error</title></head><body>\n<p>\n$errorMsg\n</p>\n</bod
y>\n</html>\n";
}
// Use base64 url safe encode/decode when dealing
// with AES-encrypted strings.
// encode: '+'=>'-', '/' => '_' , '=' => '!'
function base64_url_encode($input) {
return strtr(base64_encode($input), '+/=', '-_!');
}
// Decode: '-'=>'+', '_' => '/' , '!' => '='
function base64_url_decode($input) {
return base64_decode(strtr($input, '-_!', '+/='));
}
// xml parsing functions
function my_xml2array($contents)
{
$xml_values = array();
if (! isset($contents)) {
return false;
}
$parser = xml_parser_create('');
if(!$parser) {
return false;
}
xml_parser_set_option($parser, XML_OPTION_TARGET_ENCODING,
'UTF-8');
xml_parser_set_option($parser, XML_OPTION_CASE_FOLDING, 0);
xml_parser_set_option($parser, XML_OPTION_SKIP_WHITE, 1);
xml_parse_into_struct($parser, trim($contents), $xml_values);
xml_parser_free($parser);
if (!$xml_values) {
return array();
}
$xml_array = array();
$last_tag_ar =& $xml_array;
$parents = array();
$last_counter_in_tag = array(1=>0);
foreach ($xml_values as $data)
{
switch($data['type'])
{
case 'open':
$last_counter_in_tag[$data['level']+1] = 0;
$new_tag = array('name' => $data['tag']);
if(isset($data['attributes']))
$new_tag['attributes'] = $data['attributes'];
if(isset($data['value']) && trim($data['value']))
$new_tag['value'] = trim($data['value']);
$last_tag_ar[$last_counter_in_tag[
$data['level']]] = $new_tag;
$parents[$data['level']] =& $last_tag_ar;
$last_tag_ar =& $last_tag_ar[
$last_counter_in_tag[$data['level']]++];
break;
case 'complete':
$new_tag = array('name' => $data['tag']);
if(isset($data['attributes']))
$new_tag['attributes'] = $data['attributes'];
if(isset($data['value']) &&
trim($data['value']))
$new_tag['value'] = trim($data['value']);
$last_count = count($last_tag_ar)-1;
$last_tag_ar[ $last_counter_in_tag[$data[
'level' ]]++ ] = $new_tag;
break;
case 'close':
$last_tag_ar =& $parents[$data['level']];
break;
default:
break;
};
}
return $xml_array;
}
function get_value_by_path($__xml_tree, $__tag_path)
{
$tmp_arr =& $__xml_tree;
$tag_path = explode('/', $__tag_path);
foreach($tag_path as $tag_name)
{
$res = false;
foreach($tmp_arr as $key => $node)
{
if(is_int($key) && $node['name'] == $tag_name)
{
$tmp_arr = $node;
$res = true;
break;
}
}
if(!$res) {
return false;
}
}
if( isset($tmp_arr['value']) ) {
return $tmp_arr['value'];
} else {
return null;
}
}
function is_not_empty($string) {
return (isset($string) && (0 < strlen($string)));
}
//check token format
function tokenCheck($val){
return preg_match('/^([a-zA-Z0-9-_!]){0,24}$/', $val);
}
//check the mac address
function macCheck($val){
return preg_match("/^[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}:[A-Fa-f0-9]{2}$/", $val);
}
//encode the input string to avoid script attack
function convertUrlParam($input) {
return htmlentities($input, ENT_QUOTES);
}
?>