2007-03-24 08:27:00 +01:00
< ? php
2018-01-26 15:45:57 +01:00
/**
* Postfix Admin
*
* LICENSE
* This source file is subject to the GPL license that is bundled with
* this package in the file LICENSE . TXT .
*
* Further details on the project are available at http :// postfixadmin . sf . net
*
* @ version $Id $
* @ license GNU GPL v2 or later .
*
2007-09-30 17:53:54 +02:00
* File : viewlog . php
* Shows entries from the log table to users .
*
2009-12-24 15:58:01 +01:00
* Template File : viewlog . tpl
2007-09-30 17:53:54 +02:00
*
* Template Variables :
*
* tLog
*
* Form POST \ GET Variables :
*
* fDomain
*/
2007-08-22 01:00:17 +02:00
2007-09-22 12:59:41 +02:00
require_once ( 'common.php' );
2007-03-24 08:27:00 +01:00
2007-09-22 12:59:41 +02:00
authentication_require_role ( 'admin' );
2020-09-27 12:02:58 +02:00
$CONF = Config :: getInstance () -> getAll ();
$smarty = PFASmarty :: getInstance ();
$PALANG = $CONF [ '__LANG' ];
2007-09-22 12:59:41 +02:00
$SESSID_USERNAME = authentication_get_username ();
2018-01-26 15:45:57 +01:00
if ( authentication_has_role ( 'global-admin' )) {
$list_domains = list_domains ();
} else {
$list_domains = list_domains_for_admin ( $SESSID_USERNAME );
2007-09-22 12:59:41 +02:00
}
2007-03-24 08:27:00 +01:00
2017-04-10 20:39:30 +02:00
$fDomain = '' ;
2017-04-10 20:54:34 +02:00
$error = 0 ;
2022-01-12 09:37:29 +01:00
2018-01-26 15:45:57 +01:00
if ( $_SERVER [ 'REQUEST_METHOD' ] == " GET " ) {
2022-01-12 09:37:29 +01:00
if ( isset ( $_GET [ 'page' ]) && $_GET [ 'fDomain' ]){
$fDomain_aux = escape_string ( $_GET [ 'fDomain' ]);
$flag_fDomain = 0 ;
if (( is_array ( $list_domains ) and sizeof ( $list_domains ) > 0 )) {
foreach ( $list_domains as $domain ){
if ( $domain == $fDomain_aux ){
$fDomain = $domain ;
$flag_fDomain = 1 ;
break ;
}
}
}
if ( $flag_fDomain == 0 ){
die ( 'Unknown domain' );
}
2022-01-12 10:44:55 +01:00
$page_number = ( int ) ( $_GET [ 'page' ] ? ? 0 );
if ( $page_number == 0 ){
die ( 'Unknown page number' );
}
2022-01-12 09:37:29 +01:00
} else {
$page_number = 1 ;
if (( is_array ( $list_domains ) and sizeof ( $list_domains ) > 0 )) {
$fDomain = $list_domains [ 0 ];
}
2018-01-26 15:45:57 +01:00
}
2007-03-24 08:27:00 +01:00
} elseif ( $_SERVER [ 'REQUEST_METHOD' ] == " POST " ) {
2022-01-12 09:37:29 +01:00
$page_number = 1 ;
2018-01-26 15:45:57 +01:00
if ( isset ( $_POST [ 'fDomain' ])) {
$fDomain = escape_string ( $_POST [ 'fDomain' ]);
}
2007-03-24 08:27:00 +01:00
} else {
2018-01-26 15:45:57 +01:00
die ( 'Unknown request method' );
2007-03-24 08:27:00 +01:00
}
2018-01-26 15:45:57 +01:00
if ( ! ( check_owner ( $SESSID_USERNAME , $fDomain ) || authentication_has_role ( 'global-admin' ))) {
$error = 1 ;
flash_error ( $PALANG [ 'pViewlog_result_error' ]);
2007-03-24 08:27:00 +01:00
}
2010-09-27 01:14:42 +02:00
$tLog = array ();
2018-01-26 15:45:57 +01:00
if ( $error != 1 ) {
$table_log = table_by_key ( 'log' );
$page_size = isset ( $CONF [ 'page_size' ]) ? intval ( $CONF [ 'page_size' ]) : 35 ;
2017-09-05 22:12:45 +02:00
2022-01-12 09:37:29 +01:00
2021-07-17 11:31:06 +02:00
$where = [];
$params = [];
2022-01-12 09:39:16 +01:00
if ( $fDomain ) {
2021-07-17 11:31:06 +02:00
$where [] = 'domain = :domain' ;
$params [ 'domain' ] = $fDomain ;
}
$where_sql = '' ;
2022-01-12 09:39:16 +01:00
if ( ! empty ( $where )) {
2021-07-17 11:31:06 +02:00
$where_sql = 'WHERE ' . implode ( ' AND ' , $where );
2022-01-12 09:37:29 +01:00
}
$number_of_logs = 0 ;
$number_of_pages = 0 ;
//get number of total logs
$query = " SELECT count(*) as number_of_logs FROM $table_log $where_sql " ;
$result = db_query_all ( $query , $params );
foreach ( $result as $r ){
$number_of_logs = $r [ 'number_of_logs' ];
}
$number_of_pages = ceil ( $number_of_logs / $page_size );
2022-01-12 10:54:18 +01:00
if ( $page_number > $number_of_pages ){
die ( 'Unknown page number' );
}
2022-01-12 09:37:29 +01:00
if ( $page_number == 1 ){
$offset = 0 ;
} else {
$offset = ( $page_number - 1 ) * $page_size ;
2021-07-17 11:33:08 +02:00
}
2021-07-05 22:13:37 +02:00
2022-01-12 09:37:29 +01:00
$query = " SELECT timestamp,username,domain,action,data FROM $table_log $where_sql ORDER BY timestamp DESC LIMIT $page_size OFFSET $offset " ;
2019-01-06 21:25:24 +01:00
2018-01-26 15:45:57 +01:00
if ( db_pgsql ()) {
2022-01-12 09:37:29 +01:00
$query = " SELECT extract(epoch from timestamp) as timestamp,username,domain,action,data FROM $table_log $where_sql ORDER BY timestamp DESC LIMIT $page_size OFFSET $offset " ;
2018-01-26 15:45:57 +01:00
}
2022-01-12 09:37:29 +01:00
2021-07-17 11:31:06 +02:00
$result = db_query_all ( $query , $params );
2019-01-06 22:03:43 +01:00
foreach ( $result as $row ) {
2019-01-06 21:25:24 +01:00
if ( is_array ( $row ) && db_pgsql ()) {
$row [ 'timestamp' ] = gmstrftime ( '%c %Z' , $row [ 'timestamp' ]);
2018-01-26 15:45:57 +01:00
}
2019-01-06 21:25:24 +01:00
$tLog [] = $row ;
2018-01-26 15:45:57 +01:00
}
2007-03-24 08:27:00 +01:00
}
2018-12-28 20:31:43 +01:00
foreach ( $tLog as $k => $v ) {
if ( isset ( $v [ 'action' ])) {
2018-12-27 22:43:11 +01:00
$v [ 'action' ] = $PALANG [ 'pViewlog_action_' . $v [ 'action' ]];
$tLog [ $k ] = $v ;
}
2018-01-26 15:45:57 +01:00
}
2022-01-12 09:37:29 +01:00
//get url
$url = explode ( " ? " ,( isset ( $_SERVER [ 'HTTPS' ]) && $_SERVER [ 'HTTPS' ] === 'on' ? " https " : " http " ) . " :// $_SERVER[HTTP_HOST] $_SERVER[REQUEST_URI] " )[ 0 ];
2009-11-05 15:55:39 +01:00
2022-01-12 09:37:29 +01:00
$smarty -> assign ( 'domain_list' , $list_domains );
2018-01-26 15:45:57 +01:00
$smarty -> assign ( 'domain_selected' , $fDomain );
$smarty -> assign ( 'tLog' , $tLog , false );
$smarty -> assign ( 'fDomain' , $fDomain );
2022-01-12 09:37:29 +01:00
$smarty -> assign ( 'number_of_pages' , $number_of_pages );
$smarty -> assign ( 'page_number' , $page_number );
$smarty -> assign ( 'url' , $url );
2018-01-26 15:45:57 +01:00
$smarty -> assign ( 'smarty_template' , 'viewlog' );
$smarty -> display ( 'index.tpl' );
2007-03-24 08:27:00 +01:00
2022-01-12 09:37:29 +01:00
2007-03-24 08:27:00 +01:00
/* vim: set expandtab softtabstop=3 tabstop=3 shiftwidth=3: */