Subversion Repositories ALCASAR

Rev

Rev 2493 | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 2493 Rev 2698
Line 3... Line 3...
3
 * Print tickets of the new user
3
 * Print tickets of the new user
4
 *
4
 *
5
 * @author    Tom Houdayer
5
 * @author    Tom Houdayer
6
 * @copyright Copyright (C) ALCASAR (http://www.alcasar.net)
6
 * @copyright Copyright (C) ALCASAR (http://www.alcasar.net)
7
 * @license   GPL-3.0
7
 * @license   GPL-3.0
8
 * @version   $Id: ticket_user.php 2493 2018-02-26 01:27:02Z tom.houdayer $
8
 * @version   $Id: ticket_user.php 2698 2019-02-05 10:25:12Z tom.houdayer $
9
 */
9
 */
10
 
10
 
11
require_once __DIR__ . '/../lib/alcasar/TicketsGenerator.php';
11
require_once __DIR__ . '/../lib/alcasar/TicketsGenerator.php';
12
$langue_imp = ((isset($_POST['langue_imp'])) ? $_POST['langue_imp'] : 'en');
12
$langue_imp = ((isset($_POST['langue_imp'])) ? $_POST['langue_imp'] : 'en');
13
require_once __DIR__ . '/../lib/langues_imp.php';
13
require_once __DIR__ . '/../lib/langues_imp.php';
-
 
14
require_once '/etc/freeradius-web/config.php';
-
 
15
require_once __DIR__ . '/../lib/sql/drivers/mysql/functions.php';
14
 
16
 
15
// Get datas from form
17
// Get datas from form
16
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']))) {
18
if ((!isset($_POST['username'])) || (!isset($_POST['password']))) {
17
	exit();
19
	exit();
18
}
20
}
19
$log_imp    = $_POST['log_imp'];
21
$username = $_POST['username'];
20
$passwd_imp = $_POST['passwd_imp'];
22
$password = $_POST['password'];
-
 
23
 
-
 
24
// Get user attributes
-
 
25
$userAttr = [];
-
 
26
$link = da_sql_pconnect($config);
-
 
27
if ($link) {
-
 
28
	$user_uid = da_sql_escape_string($link, $username);
21
$exp_imp    = ((($_POST['exp_imp'] === '') || ($_POST['exp_imp'] === '-')) ? $l_without   : utf8_decode($_POST['exp_imp']));
29
	$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;";
-
 
30
	$res = da_sql_query($link, $config, $sql);
-
 
31
	if ($res) {
-
 
32
		while ($row = da_sql_fetch_array($res, $config)) {
-
 
33
			$userAttr[$row['attribute']] = $row['value'];
-
 
34
		}
-
 
35
	}
-
 
36
}
-
 
37
 
-
 
38
// Format user attributes
22
$sto_imp    = ((($_POST['sto_imp'] === '') || ($_POST['sto_imp'] === '-')) ? $l_unlimited : utf8_decode($_POST['sto_imp']));
39
$userAttr['Session-Timeout']   = ((isset($userAttr['Session-Timeout']))   ? formatTime($userAttr['Session-Timeout'])   : $l_unlimited);
23
$mas_imp    = ((($_POST['mas_imp'] === '') || ($_POST['mas_imp'] === '-')) ? $l_unlimited : utf8_decode($_POST['mas_imp']));
40
$userAttr['Max-All-Session']   = ((isset($userAttr['Max-All-Session']))   ? formatTime($userAttr['Max-All-Session'])   : $l_unlimited);
24
$mds_imp    = ((($_POST['mds_imp'] === '') || ($_POST['mds_imp'] === '-')) ? $l_unlimited : utf8_decode($_POST['mds_imp']));
41
$userAttr['Max-Daily-Session'] = ((isset($userAttr['Max-Daily-Session'])) ? formatTime($userAttr['Max-Daily-Session']) : $l_unlimited);
-
 
42
$userAttr['Expiration'] = ((isset($userAttr['Expiration'])) ? date('d - m - Y', strtotime($userAttr['Expiration'])) : $l_without);
25
 
43
 
26
// Generate tickets
44
// Generate tickets
27
$ticketsGenerator = new TicketsGenerator(['language' => $langue_imp]);
45
$ticketsGenerator = new TicketsGenerator(['language' => $langue_imp]);
28
 
46
 
29
// Add user
47
// Add user ticket
30
$ticketsGenerator->addTicket([
48
$ticketsGenerator->addTicket([
31
	'username'        => $log_imp,
49
	'username'        => $username,
32
	'password'        => $passwd_imp,
50
	'password'        => $password,
33
	'maxAllSession'   => $mas_imp,
51
	'maxAllSession'   => $userAttr['Max-All-Session'],
34
	'sessionTimeout'  => $sto_imp,
52
	'sessionTimeout'  => $userAttr['Session-Timeout'],
35
	'maxDailySession' => $mds_imp,
53
	'maxDailySession' => $userAttr['Max-Daily-Session'],
36
	'expiration'      => $exp_imp
54
	'expiration'      => $userAttr['Expiration']
37
]);
55
]);
38
 
56
 
39
// Save the PDF and redirect user to it
57
// Save the PDF and redirect user to it
40
$filename = 'ticket_' . $log_imp . '.pdf';
58
$filename = 'ticket_' . $username . '.pdf';
41
// Remove accents
59
// Remove accents
42
$filename = strtr(utf8_decode($filename), utf8_decode('ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'), 'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy'); // TODO : manage all UTF-8 chars
60
$filename = strtr(utf8_decode($filename), utf8_decode('ŠŒŽšœžŸ¥µÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖØÙÚÛÜÝßàáâãäåæçèéêëìíîïðñòóôõöøùúûüýÿ'), 'SOZsozYYuAAAAAAACEEEEIIIIDNOOOOOOUUUUYsaaaaaaaceeeeiiiionoooooouuuuyy'); // TODO : manage all UTF-8 chars
43
 
61
 
44
$ret = $ticketsGenerator->saveAs($filename);
62
$ret = $ticketsGenerator->saveAs($filename);
45
if (!$ret) {
63
if (!$ret) {
46
	echo $content_generation;
-
 
47
	echo 'Error during tickets report generation';
64
	echo 'Error during tickets report generation';
48
	exit();
65
	exit();
49
}
66
}
50
 
67
 
51
header('Location: ' . $filename);
68
header('Location: ' . $filename);
-
 
69
 
-
 
70
 
-
 
71
/**
-
 
72
 * Format time in seconds to days/hours/minutes/secondes.
-
 
73
 *
-
 
74
 * @param int $time Time in seconds.
-
 
75
 *
-
 
76
 * @return string Formated time.
-
 
77
 */
-
 
78
function formatTime($time)
-
 
79
{
-
 
80
	$days     = floor($time / 86400); $rest = $time % 86400;
-
 
81
	$hours    = floor($rest /  3600); $rest = $rest %  3600;
-
 
82
	$minutes  = floor($rest /    60);
-
 
83
	$secondes = $rest % 60;
-
 
84
 
-
 
85
	$result = '';
-
 
86
	if ($days     != 0) $result .= $days.' J ';
-
 
87
	if ($hours    != 0) $result .= $hours.' H ';
-
 
88
	if ($minutes  != 0) $result .= $minutes.' m ';
-
 
89
	if ($secondes != 0) $result .= $secondes.' s ';
-
 
90
 
-
 
91
	return $result;
-
 
92
}