Subversion Repositories ALCASAR

Rev

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

Rev 2817 Rev 2818
-
 
1
<!DOCTYPE html>
1
<?php
2
<?php
2
 
-
 
3
require('/etc/freeradius-web/config.php');
3
require('/etc/freeradius-web/config.php');
4
require('../lib/functions.php');
4
require('../lib/functions.php');
5
require('../lib/sql/functions.php');
5
require('../lib/sql/functions.php');
6
require('../lib/acctshow.php');
6
require('../lib/acctshow.php');
7
 
-
 
8
if (is_file("../lib/sql/drivers/$config[sql_type]/functions.php"))
7
if (is_file("../lib/sql/drivers/$config[sql_type]/functions.php"))
9
	include_once("../lib/sql/drivers/$config[sql_type]/functions.php");
8
	include_once("../lib/sql/drivers/$config[sql_type]/functions.php");
10
else{
9
else{
11
	echo <<<EOM
10
	echo <<<EOM
12
<html>
11
<html>
13
<head>
12
<head>
14
<title>G&eacute;n&eacute;rateur de rapports de comptes</title>
-
 
15
<meta http-equiv="Content-Type" content="text/html; charset=$config[general_charset]">
13
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
 
14
<title>$l_title</title>
16
<link rel="stylesheet" href="/css/acc.css">
15
<link rel="stylesheet" href="/css/acc.css">
17
</head>
16
</head>
18
<body>
17
<body>
19
<center>
18
<center>
20
<b>Could not include SQL library functions. Aborting</b>
19
<b>Could not include SQL library functions. Aborting</b>
21
</body>
20
</body>
22
</html>
21
</html>
23
EOM;
22
EOM;
24
	exit();
23
	exit();
25
}
24
}
-
 
25
$Language = 'en';
-
 
26
if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])) {
-
 
27
	$Langue = explode(',', $_SERVER['HTTP_ACCEPT_LANGUAGE']);
-
 
28
	$Language = strtolower(substr(chop($Langue[0]), 0, 2)); 
-
 
29
}
-
 
30
if ($Language === 'fr') {
-
 
31
	$l_title	= "Journal des connexions";
-
 
32
} else {
-
 
33
	$l_title	= "Connections log";
-
 
34
}
26
 
35
 
27
$operators=array( '=','<', '>', '<=', '>=', 'regexp', 'like' );
36
$operators=array( '=','<', '>', '<=', '>=', 'regexp', 'like' );
28
if ($config['sql_type'] == 'pg'){
37
if ($config['sql_type'] == 'pg'){
29
	$operators=array( '=','<', '>', '<=', '>=', '~', 'like', '~*', '~~*', '<<=' );
38
	$operators=array( '=','<', '>', '<=', '>=', '~', 'like', '~*', '~~*', '<<=' );
30
}
39
}
31
$link = da_sql_pconnect ($config) or die('cannot connect to sql databse');
40
$link = da_sql_pconnect ($config) or die('cannot connect to sql databse');
32
$fields = da_sql_list_fields($config['sql_accounting_table'],$link,$config);
41
$fields = da_sql_list_fields($config['sql_accounting_table'],$link,$config);
33
 
-
 
34
 
-
 
35
unset($items);
42
unset($items);
36
 
-
 
37
while($row = $fields->fetch_array())
43
while($row = $fields->fetch_array())
38
{
44
{
39
	$key = strtolower($row[0]);
45
	$key = strtolower($row[0]);
40
	$val = $sql_attrs[$key]['desc'];
46
	$val = $sql_attrs[$key]['desc'];
41
	if ($val == '')
47
	if ($val == '')
42
		continue;
48
		continue;
43
	$show = $sql_attrs[$key]['show'];
49
	$show = $sql_attrs[$key]['show'];
44
	$selected[$key] = ($show == 'yes') ? 'selected' : '';
50
	$selected[$key] = ($show == 'yes') ? 'selected' : '';
45
	$items[$key] = "$val";
51
	$items[$key] = "$val";
46
}
52
}
47
asort($items);
53
asort($items);
48
 
54
 
49
class Qi {
55
class Qi {
50
	var $name;
56
	var $name;
51
	var $item;
57
	var $item;
52
	var $_item;
58
	var $_item;
53
	var $operator;
59
	var $operator;
54
	var $type;
60
	var $type;
55
	var $typestr;
61
	var $typestr;
56
	var $value;
62
	var $value;
57
	function Qi($name,$item,$operator) {
63
	function Qi($name,$item,$operator) {
58
				$this->name=$name;
64
				$this->name=$name;
59
				$this->item=$item;
65
				$this->item=$item;
60
				$this->operator=$operator;
66
				$this->operator=$operator;
61
	}
67
	}
62
 
68
 
63
	function show() {	global $operators;
69
	function show() {	global $operators;
64
				global $items;
70
				global $items;
65
		$nam = $this->item;
71
		$nam = $this->item;
66
			echo <<<EOM
72
			echo <<<EOM
67
	<tr><td align=left>
73
	<tr><td align=left>
68
	<i>$items[$nam]</i>
74
	<i>$items[$nam]</i>
69
	<input type=hidden name="item_of_$this->name" value="$this->item">
75
	<input type=hidden name="item_of_$this->name" value="$this->item">
70
	</td><td align=left>
76
	</td><td align=left>
71
	<select name=operator_of_$this->name>
77
	<select name=operator_of_$this->name>
72
EOM;
78
EOM;
73
		foreach($operators as $operator){
79
		foreach($operators as $operator){
74
			if($this->operator == $operator)
80
			if($this->operator == $operator)
75
				$selected=" selected ";
81
				$selected=" selected ";
76
			else
82
			else
77
				$selected='';
83
				$selected='';
78
			print("<option value=\"$operator\" $selected>$operator</option>\n");
84
			print("<option value=\"$operator\" $selected>$operator</option>\n");
79
		 }
85
		 }
80
	echo <<<EOM
86
	echo <<<EOM
81
	</select>
87
	</select>
82
	</td><td align=left>
88
	</td><td align=left>
83
	<input name="value_of_$this->name" type=text value="$this->value">
89
	<input name="value_of_$this->name" type=text value="$this->value">
84
	</td><td align=left>
90
	</td><td align=left>
85
	<input type=hidden name="delete_$this->name" value=0>
91
	<input type=hidden name="delete_$this->name" value=0>
86
	<input type=submit class=button size=5 value=del onclick="this.form.delete_$this->name.value=1">
92
	<input type=submit class=button size=5 value=del onclick="this.form.delete_$this->name.value=1">
87
	</td></tr>
93
	</td></tr>
88
EOM;
94
EOM;
89
	}
95
	}
90
 
96
 
91
	function get($designator) {  	global ${"item_of_$designator"};
97
	function get($designator) {  	global ${"item_of_$designator"};
92
			global ${"value_of_$designator"};
98
			global ${"value_of_$designator"};
93
			global ${"operator_of_$designator"};
99
			global ${"operator_of_$designator"};
94
			if(${"item_of_$designator"}){
100
			if(${"item_of_$designator"}){
95
				$this->value= ${"value_of_$designator"};
101
				$this->value= ${"value_of_$designator"};
96
				$this->operator=${"operator_of_$designator"};
102
				$this->operator=${"operator_of_$designator"};
97
				$this->item=${"item_of_$designator"};
103
				$this->item=${"item_of_$designator"};
98
			}
104
			}
99
		}
105
		}
100
	function query(){
106
	function query(){
101
		global $operators;
107
		global $operators;
102
		global $items;
108
		global $items;
103
		return $items[$this->item]."  $this->operator  '$this->value'";
109
		return $items[$this->item]."  $this->operator  '$this->value'";
104
	}
110
	}
105
}
111
}
106
 
112
 
107
?>
113
?>
108
<html>
114
<html>
109
<head>
115
<head>
110
<title>Journal des connexions</title>
-
 
111
<meta http-equiv="Content-Type" content="text/html; charset=<?php echo $config['general_charset']?>">
116
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-
 
117
	<title><?= $l_title ?></title>
112
<link rel="stylesheet" href="/css/acc.css">
118
	<link rel="stylesheet" href="/css/acc.css">
113
</head>
119
</head>
114
<body>
120
<body>
115
<TABLE width="100%" border="0" cellspacing="0" cellpadding="0">
121
<div class="panel">
116
	<tr><th>Journal des connexions</th></tr>
122
	<div class="panel-header"><?= $l_title ?></div>
117
	<tr bgcolor="#FFCC66"><td><img src="/images/pix.gif" width="1" height="2">
-
 
118
	</td></tr>
123
	<div class="panel-row">
119
</TABLE>
-
 
120
<TABLE width="100%" border="1" cellspacing="0" cellpadding="1">
-
 
121
<tr><td>
-
 
122
<?php
124
<?php
123
if(!isset($queryflag))
125
if(!isset($queryflag))
124
{
126
{
125
	$queryflag = 0;
127
	$queryflag = 0;
126
}
128
}
127
if(!$queryflag) {
129
if(!$queryflag) {
128
	echo <<<EOM
130
	echo <<<EOM
129
<form method=post>
131
<form method=post>
130
<table border=0 width=740 cellpadding=1 cellspacing=1>
132
<table border=0 width=740 cellpadding=1 cellspacing=1>
131
<tr>
133
<tr>
132
<td>
134
<td>
133
<b>Afficher les attributs suivants :</b><br>
135
<b>Afficher les attributs suivants :</b><br>
134
<select name="accounting_show_attrs[]" size=5 multiple>
136
<select name="accounting_show_attrs[]" size=5 multiple>
135
EOM;
137
EOM;
136
foreach($items as $key => $val)
138
foreach($items as $key => $val)
137
	echo <<<EOM
139
	echo <<<EOM
138
<option $selected[$key] value="$key">$val</option>
140
<option $selected[$key] value="$key">$val</option>
139
EOM;
141
EOM;
140
 
142
 
141
echo <<<EOM
143
echo <<<EOM
142
</select>
144
</select>
143
<br><br>
145
<br><br>
144
<b>Class&eacute; par :</b><br>
146
<b>Class&eacute; par :</b><br>
145
<select name="order_by">
147
<select name="order_by">
146
EOM;
148
EOM;
147
 
149
 
148
foreach($items as $key => $val)
150
foreach($items as $key => $val)
149
	if ($val == 'username')
151
	if ($val == 'username')
150
		echo <<<EOM
152
		echo <<<EOM
151
	<option selected value="$key">$val</option>
153
	<option selected value="$key">$val</option>
152
EOM;
154
EOM;
153
	else
155
	else
154
	echo <<<EOM
156
	echo <<<EOM
155
<option value="$key">$val</option>
157
<option value="$key">$val</option>
156
EOM;
158
EOM;
157
 
159
 
158
echo <<<EOM
160
echo <<<EOM
159
</select>
161
</select>
160
<br><br>
162
<br><br>
161
<b>Nbr. Max. de r&eacute;sultats retourn&eacute;s :</b><br>
163
<b>Nbr. Max. de r&eacute;sultats retourn&eacute;s :</b><br>
162
<input name=maxresults value=$config[sql_row_limit] size=5>
164
<input name=maxresults value=$config[sql_row_limit] size=5>
163
</td>
165
</td>
164
<td valign=top>
166
<td valign=top>
165
<input type=hidden name=add value=0>
167
<input type=hidden name=add value=0>
166
<table border=0 width=340 cellpadding=1 cellspacing=1>
168
<table border=0 width=340 cellpadding=1 cellspacing=1>
167
<tr><td>
169
<tr><td>
168
<b>Crit&egrave;re de s&eacute;lection :</b>
170
<b>Crit&egrave;re de s&eacute;lection :</b>
169
</td></tr>
171
</td></tr>
170
<tr><td>
172
<tr><td>
171
<select name=item_name onchange="this.form.add.value=1;this.form.submit()">
173
<select name=item_name onchange="this.form.add.value=1;this.form.submit()">
172
<option>--Attribute--</option>
174
<option>--Attribute--</option>
173
EOM;
175
EOM;
174
 
176
 
175
foreach($items as $key => $val)
177
foreach($items as $key => $val)
176
	print("<option value=\"$key\">$val</option>");
178
	print("<option value=\"$key\">$val</option>");
177
 
179
 
178
echo <<<EOM
180
echo <<<EOM
179
</select>
181
</select>
180
</td></tr>
182
</td></tr>
181
EOM;
183
EOM;
182
 
184
 
183
$number=1;
185
$number=1;
184
$offset=0;
186
$offset=0;
185
while (isset(${"item_of_w$number"}) && ${"item_of_w$number"}) {
187
while (isset(${"item_of_w$number"}) && ${"item_of_w$number"}) {
186
	if(${"delete_w$number"}==1) {$offset=1;$number++;}
188
	if(${"delete_w$number"}==1) {$offset=1;$number++;}
187
		else {
189
		else {
188
		$designator=$number-$offset;
190
		$designator=$number-$offset;
189
		${"w$designator"} = new Qi("w$designator","","");
191
		${"w$designator"} = new Qi("w$designator","","");
190
		${"w$designator"}->get("w$number");
192
		${"w$designator"}->get("w$number");
191
		${"w$designator"}->show();
193
		${"w$designator"}->show();
192
		$number++;
194
		$number++;
193
		}
195
		}
194
	}
196
	}
195
if(isset($add) && $add==1) {
197
if(isset($add) && $add==1) {
196
	${"w$number"} = new Qi("w$number","$item_name","$operators[0]");
198
	${"w$number"} = new Qi("w$number","$item_name","$operators[0]");
197
	${"w$number"}->show();
199
	${"w$number"}->show();
198
	}
200
	}
199
echo <<<EOM
201
echo <<<EOM
200
</table>
202
</table>
201
</td>
203
</td>
202
<tr>
204
<tr>
203
<td>
205
<td>
204
<input type=hidden name=queryflag value=0>
206
<input type=hidden name=queryflag value=0>
205
<br><input type=submit class=button onclick="this.form.queryflag.value=1">
207
<br><input type=submit class=button onclick="this.form.queryflag.value=1">
206
</td>
208
</td>
207
</tr>
209
</tr>
208
</table>
210
</table>
209
</form>
211
</form>
210
</table>
-
 
211
</body>
-
 
212
</html>
-
 
213
EOM;
212
EOM;
214
 
-
 
215
}
213
}
216
 
214
 
217
if ($queryflag == 1){
215
if ($queryflag == 1){
218
	if(!isset($where))
216
	if(!isset($where))
219
		$where = "";
217
		$where = "";
220
$i = 1;
218
$i = 1;
221
while (isset(${"item_of_w$i"}) && ${"item_of_w$i"}){
219
while (isset(${"item_of_w$i"}) && ${"item_of_w$i"}){
222
	$op_found = 0;
220
	$op_found = 0;
223
	foreach ($operators as $operator){
221
	foreach ($operators as $operator){
224
		if (${"operator_of_w$i"} == $operator){
222
		if (${"operator_of_w$i"} == $operator){
225
			$op_found = 1;
223
			$op_found = 1;
226
			break;
224
			break;
227
		}
225
		}
228
	}
226
	}
229
	if (!$op_found)
227
	if (!$op_found)
230
		die("L'op&eacute;ration demand&eacute; n'est pas valide. Sortie anormale.");
228
		die("L'op&eacute;ration demand&eacute; n'est pas valide. Sortie anormale.");
231
	${"item_of_w$i"} = preg_replace('/\s/','',${"item_of_w$i"});
229
	${"item_of_w$i"} = preg_replace('/\s/','',${"item_of_w$i"});
232
	${"value_of_w$i"} = da_sql_escape_string($link,${"value_of_w$i"});
230
	${"value_of_w$i"} = da_sql_escape_string($link,${"value_of_w$i"});
233
	$where .= ($i == 1) ? ' WHERE ' . ${"item_of_w$i"} . ' ' . ${"operator_of_w$i"} . " '" . ${"value_of_w$i"} . "'" :
231
	$where .= ($i == 1) ? ' WHERE ' . ${"item_of_w$i"} . ' ' . ${"operator_of_w$i"} . " '" . ${"value_of_w$i"} . "'" :
234
				' AND ' . ${"item_of_w$i"} . ' ' . ${"operator_of_w$i"} . " '" . ${"value_of_w$i"} . "'" ;
232
				' AND ' . ${"item_of_w$i"} . ' ' . ${"operator_of_w$i"} . " '" . ${"value_of_w$i"} . "'" ;
235
	$i++;
233
	$i++;
236
}
234
}
237
 
235
 
238
$order = ($order_by != '') ? "$order_by" : 'username';
236
$order = ($order_by != '') ? "$order_by" : 'username';
239
 
237
 
240
if (preg_match("/[\s;]/",$order))
238
if (preg_match("/[\s;]/",$order))
241
	die("ORDER BY pattern is illegal. Exiting abnornally.");
239
	die("ORDER BY pattern is illegal. Exiting abnornally.");
242
 
240
 
243
if (!is_numeric($maxresults))
241
if (!is_numeric($maxresults))
244
	die("Max Results is not in numeric form. Exiting abnormally.");
242
	die("Max Results is not in numeric form. Exiting abnormally.");
245
 
243
 
246
$query_view = '';
244
$query_view = '';
247
foreach ($accounting_show_attrs as $val)
245
foreach ($accounting_show_attrs as $val)
248
	$query_view .= $val . ',';
246
	$query_view .= $val . ',';
249
$query_view = preg_replace('/,$/','',$query_view);
247
$query_view = preg_replace('/,$/','',$query_view);
250
unset($sql_extra_query);
248
unset($sql_extra_query);
251
if (isset($config['sql_accounting_extra_query'])){
249
if (isset($config['sql_accounting_extra_query'])){
252
	$sql_extra_query = xlat($config['sql_accounting_extra_query'],$login,$config);
250
	$sql_extra_query = xlat($config['sql_accounting_extra_query'],$login,$config);
253
	$sql_extra_query = da_sql_escape_string($link,$sql_extra_query);
251
	$sql_extra_query = da_sql_escape_string($link,$sql_extra_query);
254
}
252
}
255
else
253
else
256
{
254
{
257
	$sql_extra_query = "";
255
	$sql_extra_query = "";
258
}
256
}
259
 
257
 
260
if(!isset($where))
258
if(!isset($where))
261
{
259
{
262
	$where = "";
260
	$where = "";
263
}
261
}
264
 
262
 
265
$query="SELECT " . da_sql_limit($maxresults,0,$config) . " $query_view FROM $config[sql_accounting_table]
263
$query="SELECT " . da_sql_limit($maxresults,0,$config) . " $query_view FROM $config[sql_accounting_table]
266
	$where $sql_extra_query " . da_sql_limit($maxresults,1,$config) .
264
	$where $sql_extra_query " . da_sql_limit($maxresults,1,$config) .
267
	" ORDER BY $order DESC " . da_sql_limit($maxresults,2,$config) . ";";
265
	" ORDER BY $order DESC " . da_sql_limit($maxresults,2,$config) . ";";
268
 
266
 
269
echo <<<EOM
267
echo <<<EOM
270
	<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top>
268
	<table border=0 width=100% cellpadding=12 cellspacing=0 bgcolor="#ffffd0" valign=top>
271
	<tr><td>
269
	<tr><td>
272
<p>
-
 
273
	<table border=1 bordercolordark=#ffffe0 bordercolorlight=#000000 width=100% cellpadding=2 cellspacing=0 bgcolor="#ffffe0" valign=top>
270
		<table border=1 width=100% cellpadding=2 cellspacing=0 bgcolor="#ffffe0" valign=top>
274
	<tr bgcolor="#d0ddb0">
271
		<tr bgcolor="#d0ddb0">
275
	</tr>
-
 
276
EOM;
272
EOM;
277
 
273
 
278
 
-
 
279
foreach($accounting_show_attrs as $val){
274
foreach($accounting_show_attrs as $val){
280
	$desc = $sql_attrs[$val]['desc'];
275
	$desc = $sql_attrs[$val]['desc'];
281
	if($val == 'acctoutputoctets')
276
	if($val == 'acctoutputoctets')
282
		$desc = "Upload";
277
		$desc = "Upload";
283
	if($val == 'acctinputoctets')
278
	if($val == 'acctinputoctets')
284
		$desc = "Download";
279
		$desc = "Download";
285
	echo "<th>$desc</th>\n";
280
	echo "<th>$desc</th>\n";
286
}
281
}
287
echo "</tr>\n";
282
echo "</tr>\n";
288
 
283
 
289
	$search = da_sql_query($link,$config,$query);
284
	$search = da_sql_query($link,$config,$query);
290
	if ($search){
285
	if ($search){
291
		while( $row = da_sql_fetch_array($search,$config) ){
286
		while( $row = da_sql_fetch_array($search,$config) ){
292
			//$num++;
287
			//$num++;
293
			echo "<tr align=center>\n";
288
			echo "<tr align=center>\n";
294
			foreach($accounting_show_attrs as $val){
289
			foreach($accounting_show_attrs as $val){
295
				$info = $row[$val];
290
				$info = $row[$val];
296
				if($val == "acctoutputoctets" || $val == "acctinputoctets")
291
				if($val == "acctoutputoctets" || $val == "acctinputoctets")
297
					$info = bytes2str($info);
292
					$info = bytes2str($info);
298
				if($val == "acctsessiontime")
293
				if($val == "acctsessiontime")
299
					$info = time2strclock($info);
294
					$info = time2strclock($info);
300
				if ($info == '')
295
				if ($info == '')
301
					$info = '-';
296
					$info = '-';
302
				if ($val == 'username'){
297
				if ($val == 'username'){
303
					$Info = urlencode($info);
298
					$Info = urlencode($info);
304
					$info = "<a href=\"user_admin.php?login=$Info\" title=\"Edit user $info\">$info<a/>";
299
					$info = "<a href=\"user_admin.php?login=$Info\" title=\"Edit user $info\">$info</a>";
305
				}
300
				}
306
				echo <<<EOM
301
				echo <<<EOM
307
			<td>$info</td>
302
			<td>$info</td>
308
EOM;
303
EOM;
309
			}
304
			}
310
			echo "</tr>\n";
305
			echo "</tr>\n";
311
		}
306
		}
312
	}
307
	}
313
	else
308
	else
314
		echo "<b>Database query failed: " . da_sql_error($link,$config) . "</b><br>\n";
309
		echo "<b>Database query failed: " . da_sql_error($link,$config) . "</b><br>\n";
315
echo <<<EOM
310
		echo <<<EOM
316
	</table>
311
		</table>
317
	</td></tr>
312
	</td></tr>
318
	</table>
313
	</table>\n
319
</td></tr>
-
 
320
</table>
-
 
321
</table>
-
 
322
</body>
-
 
323
</html>
-
 
324
EOM;
314
EOM;
325
}
315
}
326
?>
316
?>
-
 
317
	</div>
-
 
318
</div>
-
 
319
</body>
-
 
320
</html>
327
 
321