Skip to content
Snippets Groups Projects
Commit 44d833e7 authored by Robert Anderson's avatar Robert Anderson
Browse files

* Added event timezone configuration option

parent ed1dd9cc
No related branches found
No related tags found
No related merge requests found
......@@ -6,7 +6,7 @@ Installing SMRadius.
- Net::Server >= 0.96
- Config::IniFiles (Debian based: libconfig-inifiles-perl, RPM based: perl-Config-IniFiles)
- Cache::FastMmap (Debian based: libcache-fastmmap-perl, RPM based: perl-Cache-FastMmap)
- DateTime
- DateTime (requires: perl-Class-Singleton)
- TimeDate
- Crypt::DES
- Crytpt::RC4
......
......@@ -50,18 +50,26 @@ sub Init
# Setup configuration
$config = $server->{'inifile'};
# Setup database config
my $db;
$db->{'DSN'} = $config->{'database'}{'dsn'};
$db->{'Username'} = $config->{'database'}{'username'};
$db->{'Password'} = $config->{'database'}{'password'};
$db->{'enabled'} = 0;
# Check we have all the config we need
if (!defined($db->{'DSN'})) {
$server->log(LOG_NOTICE,"smradius/config.pm: No 'DSN' defined in config file for 'database'");
}
$server->{'smradius'}{'database'} = $db;
# Setup event timezone config
if (defined($config->{'server'}{'event_timezone'})) {
$server->{'smradius'}{'event_timezone'} = $config->{'server'}{'event_timezone'};
} else {
$server->{'smradius'}{'event_timezone'} = "GMT";
}
$server->log(LOG_NOTICE,"smradius/config.pm: Using timezone '".$server->{'smradius'}{'event_timezone'}."'");
}
......
......@@ -321,7 +321,7 @@ sub getUsage
$template->{'user'} = $user;
# Current PeriodKey
my $now = DateTime->now;
my $now = DateTime->now->set_time_zone($server->{'smradius'}->{'event_timezone'});
$template->{'query'}->{'PeriodKey'} = $now->strftime("%Y-%m");
# Replace template entries
......@@ -409,7 +409,7 @@ sub acct_log
$template->{'user'} = $user;
# Current PeriodKey
my $now = DateTime->now;
my $now = DateTime->now->set_time_zone($server->{'smradius'}->{'event_timezone'});
my $periodKey = $now->strftime("%Y-%m");
# For our queries
......@@ -711,7 +711,7 @@ sub cleanup
my ($server) = @_;
# The datetime now..
my $now = DateTime->now;
my $now = DateTime->now->set_time_zone($server->{'smradius'}->{'event_timezone'});
# If this is a new year
my ($prevYear,$prevMonth);
......
......@@ -298,7 +298,7 @@ sub cleanup
DBFreeRes($sth);
# The datetime now
my $now = DateTime->now;
my $now = DateTime->now->set_time_zone($server->{'smradius'}->{'event_timezone'});
# Make datetime
my $thisMonth = DateTime->new( year => $now->year, month => $now->month, day => 1 );
......
......@@ -133,7 +133,7 @@ sub configure {
'min_spare_servers',
'max_spare_servers',
'max_servers',
'max_requests',
'max_requests'
);
foreach my $param (@server_params) {
$server->{$param} = $config{'server'}{$param} if (defined($config{'server'}{$param}));
......@@ -501,7 +501,12 @@ sub process_request {
$user->{'_Internal'} = {
'Timestamp-Unix' => defined($pkt->rawattr('Event-Timestamp')) ? $pkt->rawattr('Event-Timestamp') : time()
};
my $eventTimestamp = DateTime->from_epoch( epoch => $user->{'_Internal'}->{'Timestamp-Unix'} );
# VERY IMPORTANT!!!!!!
# Timestamp AND Timestamp-Unix are in the CONVERTED timezone (event_timezone)
my $eventTimestamp = DateTime->from_epoch(
epoch => $user->{'_Internal'}->{'Timestamp-Unix'},
time_zone => $self->{'smradius'}->{'event_timezone'}
);
$user->{'_Internal'}->{'Timestamp'} = $eventTimestamp->strftime('%Y-%m-%d %H:%M:%S');
# Set username
......
......@@ -68,6 +68,9 @@
#cidr_allow=0.0.0.0/0
#cidr_deny=
# Event timestamp timezone, in "Continent/City" format
# Defaults to "GMT"
event_timezone=GMT
[database]
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment