Subversion Repositories ALCASAR

Rev

Rev 2168 | Rev 2311 | Go to most recent revision | Only display areas with differences | Ignore whitespace | Details | Blame | Last modification | View Log

Rev 2168 Rev 2285
1
<?php
1
<?php
2
/**
2
/**
3
 * Print tickets of new users
3
 * Print tickets of new users
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_voucher.php 2168 2017-04-18 17:39:54Z tom.houdayer $
8
 * @version   $Id: ticket_voucher.php 2285 2017-06-20 08:15:55Z tom.houdayer $
9
 */
9
 */
10
 
10
 
11
require_once __DIR__ . '/../lib/alcasar/TicketsGenerator.php';
11
require_once __DIR__ . '/../lib/alcasar/TicketsGenerator.php';
12
require_once '/etc/freeradius-web/config.php';
12
require_once '/etc/freeradius-web/config.php';
13
require_once '../lib/sql/drivers/'.$config['sql_type'].'/functions.php';;
13
require_once '../lib/sql/drivers/'.$config['sql_type'].'/functions.php';;
14
require_once '../lib/attrshow.php';
14
require_once '../lib/attrshow.php';
15
require_once '../lib/defaults.php';
15
require_once '../lib/defaults.php';
16
require_once '../lib/functions.php';
16
require_once '../lib/functions.php';
17
if ($config['sql_use_operators'] === 'true') {
17
if ($config['sql_use_operators'] === 'true') {
18
	require_once '../lib/operators.php';
18
	require_once '../lib/operators.php';
19
}
19
}
20
 
20
 
21
 
21
 
22
// Get datas from form
22
// Get datas from form
23
if ((!isset($_POST['nbtickets'])) || (!is_numeric($_POST['nbtickets']))){
23
if ((!isset($_POST['nbtickets'])) || (!is_numeric($_POST['nbtickets']))){
24
	header('Location: voucher_new.php');
24
	header('Location: voucher_new.php');
25
	exit();
25
	exit();
26
}
26
}
27
$nbTickets  = (int)$_POST['nbtickets'];
27
$nbTickets  = (int)$_POST['nbtickets'];
28
$langue_imp = ((isset($_POST['langue_imp'])) ? $_POST['langue_imp'] : 'en');
28
$langue_imp = ((isset($_POST['langue_imp'])) ? $_POST['langue_imp'] : 'en');
29
require_once __DIR__ . '/../lib/langues_imp.php';
29
require_once __DIR__ . '/../lib/langues_imp.php';
-
 
30
require_once __DIR__ . '/../lib/langues.php';
30
 
31
 
31
if ($config['general_lib_type'] === 'sql' && $config['sql_use_operators'] === 'true') {
32
if ($config['general_lib_type'] === 'sql' && $config['sql_use_operators'] === 'true') {
32
	$show_ops = 1;
33
	$show_ops = 1;
33
	$colspan  = 2;
34
	$colspan  = 2;
34
} else {
35
} else {
35
	$show_ops = 0;
36
	$show_ops = 0;
36
	$colspan  = 1;
37
	$colspan  = 1;
37
}
38
}
38
if ($config['sql_use_operators'] === 'true') {
39
if ($config['sql_use_operators'] === 'true') {
39
	$text      = ',op';
40
	$text      = ',op';
40
	$passwd_op = ",':='";
41
	$passwd_op = ",':='";
41
}
42
}
42
 
43
 
43
// Connect to database
44
// Connect to database
44
$link = da_sql_pconnect($config);
45
$link = da_sql_pconnect($config);
45
if (!$link) {
46
if (!$link) {
46
	exit('ERR_DATABASE_CONNECT');
47
	exit('ERR_DATABASE_CONNECT');
47
}
48
}
48
 
49
 
49
$nbFailUsers = 0;
50
$nbFailUsers = 0;
50
 
51
 
51
 
52
 
52
 
53
 
53
// Generate tickets
54
// Generate tickets
54
$ticketsGenerator = new TicketsGenerator(['language' => $langue_imp]);
55
$ticketsGenerator = new TicketsGenerator(['language' => $langue_imp]);
55
 
56
 
56
 
57
 
57
for ($i = 0; $i < $nbTickets; $i++) {
58
for ($i = 0; $i < $nbTickets; $i++) {
58
	// Generate username and password
59
	// Generate username and password
59
	$login  = generateRandomString(8);
60
	$login  = generateRandomString(8);
60
	$passwd = generateRandomString(12);
61
	$passwd = generateRandomString(12);
61
	$password = $passwd;
62
	$password = $passwd;
62
	
63
	
63
	// Check user exist
64
	// Check user exist
64
	require '../lib/'.$config['general_lib_type'].'/user_info.php';
65
	require '../lib/'.$config['general_lib_type'].'/user_info.php';
65
	if ($user_exists === 'yes') {
66
	if ($user_exists === 'yes') {
66
		$nbFailUsers++;
67
		$nbFailUsers++;
67
		continue;
68
		continue;
68
	}
69
	}
69
 
70
 
70
	// Create user in database
71
	// Create user in database
71
	require '../lib/'.$config['general_lib_type'].'/create_user.php';
72
	require '../lib/'.$config['general_lib_type'].'/create_user.php';
72
 
73
 
73
	// Get group infos
74
	// Get group infos
74
	if ((isset($group)) && ($group !== '')) {
75
	if ((isset($group)) && ($group !== '')) {
75
		$loginUser = $login;
76
		$loginUser = $login;
76
		$login = $group;
77
		$login = $group;
77
		require '../lib/sql/group_info.php';
78
		require '../lib/sql/group_info.php';
78
		$login = $loginUser;
79
		$login = $loginUser;
79
	}
80
	}
80
 
81
 
81
	// Format datas
82
	// Format datas
82
	$sto_imp = (($sto_imp    === '') ? $l_unlimited : formatTime($sto_imp));
83
	$sto_imp = (($sto_imp    === '') ? $l_unlimited : formatTime($sto_imp));
83
	$mas_imp = (($mas_imp    === '') ? $l_unlimited : formatTime($mas_imp));
84
	$mas_imp = (($mas_imp    === '') ? $l_unlimited : formatTime($mas_imp));
84
	$mds_imp = (($mds_imp    === '') ? $l_unlimited : formatTime($mds_imp));
85
	$mds_imp = (($mds_imp    === '') ? $l_unlimited : formatTime($mds_imp));
85
	$mms_imp = (($mms_imp    === '') ? $l_unlimited : formatTime($mms_imp));
86
	$mms_imp = (($mms_imp    === '') ? $l_unlimited : formatTime($mms_imp));
86
	$exp_imp = (($Expiration === '') ? $l_without   : date('d - m - Y', strtotime($Expiration)));
87
	$exp_imp = (($Expiration === '') ? $l_without   : date('d - m - Y', strtotime($Expiration)));
87
 
88
 
88
	// Add user
89
	// Add user
89
	$ticketsGenerator->addTicket([
90
	$ticketsGenerator->addTicket([
90
		'username'        => $login,
91
		'username'        => $login,
91
		'password'        => $password,
92
		'password'        => $password,
92
		'maxAllSession'   => $mas_imp,
93
		'maxAllSession'   => $mas_imp,
93
		'sessionTimeout'  => $sto_imp,
94
		'sessionTimeout'  => $sto_imp,
94
		'maxDailySession' => $mds_imp,
95
		'maxDailySession' => $mds_imp,
95
		'expiration'      => $exp_imp
96
		'expiration'      => $exp_imp
96
	]);
97
	]);
97
}
98
}
98
 
99
 
99
 
100
 
100
// Generate the PDF
101
// Generate the PDF
101
$ticketsGenerator->output();
102
$ticketsGenerator->output();
102
 
103
 
103
 
104
 
104
/**
105
/**
105
 * Format time in seconds to days/hours/minutes/secondes.
106
 * Format time in seconds to days/hours/minutes/secondes.
106
 *
107
 *
107
 * @param int $time Time in seconds.
108
 * @param int $time Time in seconds.
108
 *
109
 *
109
 * @return string Formated time.
110
 * @return string Formated time.
110
 */
111
 */
111
function formatTime($time)
112
function formatTime($time)
112
{
113
{
113
	$days     = floor($time / 86400); $reste = $time  % 86400;
114
	$days     = floor($time / 86400); $reste = $time  % 86400;
114
	$hours    = floor($reste / 3600); $reste = $reste % 3600;
115
	$hours    = floor($reste / 3600); $reste = $reste % 3600;
115
	$minutes  = floor($reste / 60);
116
	$minutes  = floor($reste / 60);
116
	$secondes = $reste % 60;
117
	$secondes = $reste % 60;
117
 
118
 
118
	return "$days J $hours H $minutes min $secondes s";
119
	return "$days J $hours H $minutes min $secondes s";
119
}
120
}
120
 
121
 
121
/**
122
/**
122
 * Generate a random string.
123
 * Generate a random string.
123
 *
124
 *
124
 * @param int $length Length of the string.
125
 * @param int $length Length of the string.
125
 *
126
 *
126
 * @return string Random string.
127
 * @return string Random string.
127
 */
128
 */
128
function generateRandomString($length = 8)
129
function generateRandomString($length = 8)
129
{
130
{
130
	$string  = '';
131
	$string  = '';
131
	$chars   = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
132
	$chars   = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ';
132
	$randoms = openssl_random_pseudo_bytes($length);
133
	$randoms = openssl_random_pseudo_bytes($length);
133
	for ($i = 0; $i < $length; $i++) {
134
	for ($i = 0; $i < $length; $i++) {
134
		$string .= $chars[ord($randoms[$i]) % 62];
135
		$string .= $chars[ord($randoms[$i]) % 62];
135
	}
136
	}
136
	return $string;
137
	return $string;
137
}
138
}
138
 
139