/web/acc/manager/htdocs/ticket_user.php |
---|
11,41 → 11,82 |
require_once __DIR__ . '/../lib/alcasar/TicketsGenerator.php'; |
$langue_imp = ((isset($_POST['langue_imp'])) ? $_POST['langue_imp'] : 'en'); |
require_once __DIR__ . '/../lib/langues_imp.php'; |
require_once '/etc/freeradius-web/config.php'; |
require_once __DIR__ . '/../lib/sql/drivers/mysql/functions.php'; |
// Get datas from form |
if ((!isset($_POST['log_imp'])) || (!isset($_POST['passwd_imp'])) || (!isset($_POST['exp_imp'])) || (!isset($_POST['sto_imp'])) || (!isset($_POST['mas_imp'])) || (!isset($_POST['mds_imp']))) { |
if ((!isset($_POST['username'])) || (!isset($_POST['password']))) { |
exit(); |
} |
$log_imp = $_POST['log_imp']; |
$passwd_imp = $_POST['passwd_imp']; |
$exp_imp = ((($_POST['exp_imp'] === '') || ($_POST['exp_imp'] === '-')) ? $l_without : utf8_decode($_POST['exp_imp'])); |
$sto_imp = ((($_POST['sto_imp'] === '') || ($_POST['sto_imp'] === '-')) ? $l_unlimited : utf8_decode($_POST['sto_imp'])); |
$mas_imp = ((($_POST['mas_imp'] === '') || ($_POST['mas_imp'] === '-')) ? $l_unlimited : utf8_decode($_POST['mas_imp'])); |
$mds_imp = ((($_POST['mds_imp'] === '') || ($_POST['mds_imp'] === '-')) ? $l_unlimited : utf8_decode($_POST['mds_imp'])); |
$username = $_POST['username']; |
$password = $_POST['password']; |
// Get user attributes |
$userAttr = []; |
$link = da_sql_pconnect($config); |
if ($link) { |
$user_uid = da_sql_escape_string($link, $username); |
$sql = "SELECT attribute, value FROM (( SELECT attribute, value FROM radcheck WHERE (attribute IN ('Max-All-Session', 'Max-Daily-Session', 'Expiration')) AND username = '$user_uid') UNION ( SELECT attribute, value FROM radgroupcheck gr LEFT JOIN radusergroup ug ON gr.groupname = ug.groupname WHERE (attribute IN ('Max-All-Session', 'Max-Daily-Session', 'Expiration')) AND username = '$user_uid' ORDER BY ug.priority) UNION ( SELECT attribute, value FROM radgroupcheck WHERE groupname = 'ldap' AND (attribute IN ('Max-All-Session', 'Max-Daily-Session', 'Expiration'))) UNION ( SELECT attribute, value FROM radreply WHERE (attribute IN ('Session-Timeout')) AND username = '$user_uid') UNION ( SELECT attribute, value FROM radgroupreply gr LEFT JOIN radusergroup ug ON gr.groupname = ug.groupname WHERE (attribute IN ('Session-Timeout')) AND username = '$user_uid' ORDER BY ug.priority) UNION ( SELECT attribute, value FROM radgroupreply WHERE groupname = 'ldap' AND (attribute IN ('Session-Timeout')))) attrs GROUP BY attribute;"; |
$res = da_sql_query($link, $config, $sql); |
if ($res) { |
while ($row = da_sql_fetch_array($res, $config)) { |
$userAttr[$row['attribute']] = $row['value']; |
} |
} |
} |
// Format user attributes |
$userAttr['Session-Timeout'] = ((isset($userAttr['Session-Timeout'])) ? formatTime($userAttr['Session-Timeout']) : $l_unlimited); |
$userAttr['Max-All-Session'] = ((isset($userAttr['Max-All-Session'])) ? formatTime($userAttr['Max-All-Session']) : $l_unlimited); |
$userAttr['Max-Daily-Session'] = ((isset($userAttr['Max-Daily-Session'])) ? formatTime($userAttr['Max-Daily-Session']) : $l_unlimited); |
$userAttr['Expiration'] = ((isset($userAttr['Expiration'])) ? date('d - m - Y', strtotime($userAttr['Expiration'])) : $l_without); |
// Generate tickets |
$ticketsGenerator = new TicketsGenerator(['language' => $langue_imp]); |
// Add user |
// Add user ticket |
$ticketsGenerator->addTicket([ |
'username' => $log_imp, |
'password' => $passwd_imp, |
'maxAllSession' => $mas_imp, |
'sessionTimeout' => $sto_imp, |
'maxDailySession' => $mds_imp, |
'expiration' => $exp_imp |
'username' => $username, |
'password' => $password, |
'maxAllSession' => $userAttr['Max-All-Session'], |
'sessionTimeout' => $userAttr['Session-Timeout'], |
'maxDailySession' => $userAttr['Max-Daily-Session'], |
'expiration' => $userAttr['Expiration'] |
]); |
// Save the PDF and redirect user to it |
$filename = 'ticket_' . $log_imp . '.pdf'; |
$filename = 'ticket_' . $username . '.pdf'; |
// Remove accents |
$filename = strtr(utf8_decode($filename), utf8_decode('ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'), 'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy'); // TODO : manage all UTF-8 chars |
$ret = $ticketsGenerator->saveAs($filename); |
if (!$ret) { |
echo $content_generation; |
echo 'Error during tickets report generation'; |
exit(); |
} |
header('Location: ' . $filename); |
/** |
* Format time in seconds to days/hours/minutes/secondes. |
* |
* @param int $time Time in seconds. |
* |
* @return string Formated time. |
*/ |
function formatTime($time) |
{ |
$days = floor($time / 86400); $rest = $time % 86400; |
$hours = floor($rest / 3600); $rest = $rest % 3600; |
$minutes = floor($rest / 60); |
$secondes = $rest % 60; |
$result = ''; |
if ($days != 0) $result .= $days.' J '; |
if ($hours != 0) $result .= $hours.' H '; |
if ($minutes != 0) $result .= $minutes.' m '; |
if ($secondes != 0) $result .= $secondes.' s '; |
return $result; |
} |
/web/acc/manager/htdocs/ticket_voucher.php |
---|
9,50 → 9,73 |
*/ |
require_once __DIR__ . '/../lib/alcasar/TicketsGenerator.php'; |
$langue_imp = ((isset($_POST['langue_imp'])) ? $_POST['langue_imp'] : 'en'); |
require_once __DIR__ . '/../lib/langues_imp.php'; |
require_once __DIR__ . '/../lib/langues.php'; |
require_once '/etc/freeradius-web/config.php'; |
require_once '../lib/sql/drivers/'.$config['sql_type'].'/functions.php';; |
require_once '../lib/attrshow.php'; |
require_once '../lib/defaults.php'; |
require_once '../lib/functions.php'; |
require_once __DIR__ . '/../lib/sql/drivers/'.$config['sql_type'].'/functions.php';; |
require_once __DIR__ . '/../lib/attrshow.php'; |
require_once __DIR__ . '/../lib/defaults.php'; |
require_once __DIR__ . '/../lib/functions.php'; |
if ($config['sql_use_operators'] === 'true') { |
require_once '../lib/operators.php'; |
require_once __DIR__ . '/../lib/operators.php'; |
$text = ',op'; |
$passwd_op = ",':='"; |
} |
// Get datas from form |
if ((!isset($_POST['nbtickets'])) || (!is_numeric($_POST['nbtickets']))){ |
header('Location: voucher_new.php'); |
header('Location: user_new.php'); |
exit(); |
} |
$nbTickets = (int)$_POST['nbtickets']; |
$langue_imp = ((isset($_POST['langue_imp'])) ? $_POST['langue_imp'] : 'en'); |
require_once __DIR__ . '/../lib/langues_imp.php'; |
require_once __DIR__ . '/../lib/langues.php'; |
$nbTickets = (int)$_POST['nbtickets']; |
if ($config['sql_use_operators'] === 'true') { |
$text = ',op'; |
$passwd_op = ",':='"; |
// Get user attributes |
$userAttr = []; |
foreach (['Max-All-Session', 'Session-Timeout', 'Max-Daily-Session', 'Expiration'] as $attrName) { |
if (isset($_POST[$attrName]) && !empty($_POST[$attrName])) { |
$userAttr[$attrName] = $_POST[$attrName]; |
} |
} |
// Connect to database |
$link = da_sql_pconnect($config); |
if (!$link) { |
exit('ERR_DATABASE_CONNECT'); |
if (count($userAttr) < 4) { |
// Get group attributes |
$link = da_sql_pconnect($config); |
if ($link) { |
if (isset($_POST['Fgroup']) && !empty($_POST['Fgroup'])) { |
$default_group = 'ldap'; |
$group_uid = da_sql_escape_string($link, $_POST['Fgroup']); |
$sql = "SELECT attribute, value FROM (( SELECT attribute, value FROM radgroupcheck WHERE groupname = '$group_uid' AND (attribute IN ('Max-All-Session', 'Max-Daily-Session', 'Expiration'))) UNION ( SELECT attribute, value FROM radgroupcheck WHERE groupname = '$default_group' AND (attribute IN ('Max-All-Session', 'Max-Daily-Session', 'Expiration'))) UNION ( SELECT attribute, value FROM radgroupreply WHERE groupname = '$group_uid' AND (attribute IN ('Session-Timeout'))) UNION ( SELECT attribute, value FROM radgroupreply WHERE groupname = '$default_group' AND (attribute IN ('Session-Timeout')))) attrs GROUP BY attribute;"; |
} else { |
$default_group = 'ldap'; |
$sql = "SELECT attribute, value FROM (( SELECT attribute, value FROM radgroupcheck WHERE groupname = '$default_group' AND (attribute IN ('Max-All-Session', 'Max-Daily-Session', 'Expiration'))) UNION ( SELECT attribute, value FROM radgroupreply WHERE groupname = '$default_group' AND (attribute IN ('Session-Timeout')))) attrs GROUP BY attribute;"; |
} |
$res = da_sql_query($link, $config, $sql); |
if ($res) { |
while ($row = da_sql_fetch_array($res, $config)) { |
if (!isset($userAttr[$row['attribute']])) { |
$userAttr[$row['attribute']] = $row['value']; |
} |
} |
} |
} |
} |
$nbFailUsers = 0; |
// Format user attributes |
$userAttr['Session-Timeout'] = ((isset($userAttr['Session-Timeout'])) ? formatTime($userAttr['Session-Timeout']) : $l_unlimited); |
$userAttr['Max-All-Session'] = ((isset($userAttr['Max-All-Session'])) ? formatTime($userAttr['Max-All-Session']) : $l_unlimited); |
$userAttr['Max-Daily-Session'] = ((isset($userAttr['Max-Daily-Session'])) ? formatTime($userAttr['Max-Daily-Session']) : $l_unlimited); |
$userAttr['Expiration'] = ((isset($userAttr['Expiration'])) ? date('d - m - Y', strtotime($userAttr['Expiration'])) : $l_without); |
// Generate tickets |
$ticketsGenerator = new TicketsGenerator(['language' => $langue_imp]); |
ob_start(); |
$nbFailUsers = 0; |
for ($i = 0; $i < $nbTickets; $i++) { |
// Generate username and password |
$login = generateRandomString(8); |
$passwd = generateRandomString(12); |
$password = $passwd; |
$username = generateRandomString(8); |
$password = generateRandomString(12); |
// Check user exist |
require '../lib/'.$config['general_lib_type'].'/user_info.php'; |
64,29 → 87,14 |
// Create user in database |
require '../lib/'.$config['general_lib_type'].'/create_user.php'; |
// Get group infos |
if ((isset($group)) && ($group !== '')) { |
$loginUser = $login; |
$login = $group; |
require '../lib/sql/group_info.php'; |
$login = $loginUser; |
} |
// Format datas |
$sto_imp = (($sto_imp === '') ? $l_unlimited : formatTime($sto_imp)); |
$mas_imp = (($mas_imp === '') ? $l_unlimited : formatTime($mas_imp)); |
$mds_imp = (($mds_imp === '') ? $l_unlimited : formatTime($mds_imp)); |
$mms_imp = (($mms_imp === '') ? $l_unlimited : formatTime($mms_imp)); |
$exp_imp = (($Expiration === '') ? $l_without : date('d - m - Y', strtotime($Expiration))); |
// Add user |
// Add user ticket |
$ticketsGenerator->addTicket([ |
'username' => $login, |
'username' => $username, |
'password' => $password, |
'maxAllSession' => $mas_imp, |
'sessionTimeout' => $sto_imp, |
'maxDailySession' => $mds_imp, |
'expiration' => $exp_imp |
'maxAllSession' => $userAttr['Max-All-Session'], |
'sessionTimeout' => $userAttr['Session-Timeout'], |
'maxDailySession' => $userAttr['Max-Daily-Session'], |
'expiration' => $userAttr['Expiration'] |
]); |
} |
$content_generation = ob_get_clean(); |
109,12 → 117,18 |
*/ |
function formatTime($time) |
{ |
$days = floor($time / 86400); $reste = $time % 86400; |
$hours = floor($reste / 3600); $reste = $reste % 3600; |
$minutes = floor($reste / 60); |
$secondes = $reste % 60; |
$days = floor($time / 86400); $rest = $time % 86400; |
$hours = floor($rest / 3600); $rest = $rest % 3600; |
$minutes = floor($rest / 60); |
$secondes = $rest % 60; |
return "$days J $hours H $minutes min $secondes s"; |
$result = ''; |
if ($days != 0) $result .= $days.' J '; |
if ($hours != 0) $result .= $hours.' H '; |
if ($minutes != 0) $result .= $minutes.' m '; |
if ($secondes != 0) $result .= $secondes.' s '; |
return $result; |
} |
/** |
/web/acc/manager/htdocs/user_new.php |
---|
99,69 → 99,23 |
<table border="0" width="100%" cellpadding="12" cellspacing="0" bgcolor="#ffffd0" valign="top"> |
<tr><td> |
<?php |
function sec_imp($time) |
/*Formatage des secondes avant l'impression */ |
{ |
$result = ''; |
$jour = 0;$heure = 0;$minute = 0;$seconde = 0; |
$jour = floor($time/86400); |
$reste = $time%86400; |
if ($jour!=0) $result = $jour.' J '; |
$heure = floor($reste/3600); |
$reste = $reste%3600; |
if ($heure!=0) $result = $result.$heure.' H '; |
$minute = floor($reste/60); |
if ($minute!=0) $result = $result.$minute.' min '; |
$seconde = $reste%60; |
if ($seconde!=0) $result = $result.$seconde.' s '; |
return $result; |
} |
if ($create == 1){ |
if (is_file("../lib/$config[general_lib_type]/user_info.php")) |
include("../lib/$config[general_lib_type]/user_info.php"); |
if ($user_exists != "no"){ |
echo <<<EOM |
<b><i>$login</i> $l_user_exists</b> |
EOM; |
echo "<b><i>$login</i> $l_user_exists</b>"; |
} |
else{ |
/*création de l'utilisateur*/ |
if (is_file("../lib/$config[general_lib_type]/create_user.php")) |
include("../lib/$config[general_lib_type]/create_user.php"); |
/* Petit traitement pré-impression pour la lisibilité */ |
/* Récupération des attributs du groupe le cas échéant */ |
if (isset($group) && $group!=''){ |
$saved_login = $login; |
$login = $group; |
if (is_file("../lib/sql/group_info.php")) |
include("../lib/sql/group_info.php"); |
$login = $saved_login;} |
/* Si les valeurs de durée sont vide remplissage avec la valeur 'Illimitée'*/ |
/* et formatage des secondes sous le format Heure min ses*/ |
if ($sto_imp==''){ $sto_imp='-';} |
else { $sto_imp=sec_imp($sto_imp);} |
if ($mas_imp==''){ $mas_imp='-';} |
else { $mas_imp=sec_imp($mas_imp);} |
if ($mds_imp==''){ $mds_imp='-';} |
else { $mds_imp=sec_imp($mds_imp);} |
if ($mms_imp==''){ $mms_imp='-';} |
else { $mms_imp=sec_imp($mms_imp);} |
/*Formatage de la date afin d'être lisible dans toute les langues 'jj mm yyyy'*/ |
if ($Expiration!=''){ $Expiration=date("d - m - Y",strtotime($Expiration));} |
else { $Expiration='-';} |
if ($show != 3) //utilisateur normal |
{ |
//Appel du ticket d'impression , passage en paramètres des valeurs à afficher |
echo' <form name="impression" method="post" action="ticket_user.php" target="_blank"> |
<input type="hidden" name="langue_imp" value="'.$langue_imp.'"> |
<input type="hidden" name="log_imp" value="'.$login.'"> |
<input type="hidden" name="passwd_imp" value="'.$passwd_imp.'"> |
<input type="hidden" name="sto_imp" value="'.$sto_imp.'"> |
<input type="hidden" name="mas_imp" value="'.$mas_imp.'"> |
<input type="hidden" name="mds_imp" value="'.$mds_imp.'"> |
<input type="hidden" name="mms_imp" value="'.$mms_imp.'"> |
<input type="hidden" name="exp_imp" value="'.$Expiration.'"> |
<input type="hidden" name="username" value="'.$login.'"> |
<input type="hidden" name="password" value="'.$_POST['passwd'].'"> |
</form>'; |
echo' <a href="#" onclick="document.forms[\'impression\'].submit();">'.$l_create_ticket.'</a>'; |
//fin ticket impression |