Commit 9440002c authored by Nigel Kukard's avatar Nigel Kukard

Merge branch 'nk-fixes' into 'master'

Nk fixes



See merge request !418
parents 14376d0c 4aaea3ad
Pipeline #286 passed with stages
in 3 minutes and 3 seconds
...@@ -718,7 +718,7 @@ sub process_request { ...@@ -718,7 +718,7 @@ sub process_request {
if ($module->{'User_find'}) { if ($module->{'User_find'}) {
$self->log(LOG_DEBUG,"[SMRADIUS] FIND: Trying plugin '".$module->{'Name'}."' for username '". $self->log(LOG_DEBUG,"[SMRADIUS] FIND: Trying plugin '".$module->{'Name'}."' for username '".
$user->{'Username'}."'"); $user->{'Username'}."'");
my ($res,$userdb_data) = $module->{'User_find'}($self,$user,$pkt); my ($res,$userDB_Data) = $module->{'User_find'}($self,$user,$pkt);
# Check result # Check result
if (!defined($res)) { if (!defined($res)) {
...@@ -733,7 +733,9 @@ sub process_request { ...@@ -733,7 +733,9 @@ sub process_request {
} elsif ($res == MOD_RES_ACK) { } elsif ($res == MOD_RES_ACK) {
$self->log(LOG_DEBUG,"[SMRADIUS] FIND: Username found with '".$module->{'Name'}."'"); $self->log(LOG_DEBUG,"[SMRADIUS] FIND: Username found with '".$module->{'Name'}."'");
$user->{'_UserDB'} = $module; $user->{'_UserDB'} = $module;
$user->{'_UserDB_Data'} = $userdb_data; $user->{'_UserDB_Data'} = $userDB_Data;
# The user ID is supposed to be global unique, on the same level as the username
$user->{'ID'} = $user->{'_UserDB_Data'}->{'ID'};
last; last;
# Or a negative result # Or a negative result
......
...@@ -35,12 +35,10 @@ use Math::BigFloat; ...@@ -35,12 +35,10 @@ use Math::BigFloat;
# Exporter stuff # Exporter stuff
require Exporter; use base qw(Exporter);
our (@ISA,@EXPORT,@EXPORT_OK); our @EXPORT = qw(
@ISA = qw(Exporter);
@EXPORT = qw(
); );
@EXPORT_OK = qw( our @EXPORT_OK = qw(
); );
...@@ -333,7 +331,10 @@ sub getUsage ...@@ -333,7 +331,10 @@ sub getUsage
foreach my $attr ($packet->attributes) { foreach my $attr ($packet->attributes) {
$template->{'request'}->{$attr} = $packet->rawattr($attr) $template->{'request'}->{$attr} = $packet->rawattr($attr)
} }
$template->{'user'} = $user;
# Add user details
$template->{'user'}->{'ID'} = $user->{'ID'};
$template->{'user'}->{'Username'} = $user->{'Username'};
# Current PeriodKey # Current PeriodKey
my $now = DateTime->now->set_time_zone($server->{'smradius'}->{'event_timezone'}); my $now = DateTime->now->set_time_zone($server->{'smradius'}->{'event_timezone'});
...@@ -354,7 +355,7 @@ sub getUsage ...@@ -354,7 +355,7 @@ sub getUsage
# Fetch data # Fetch data
my $sth = DBSelect(@dbDoParams); my $sth = DBSelect(@dbDoParams);
if (!$sth) { if (!$sth) {
$server->log(LOG_ERR,"[MOD_ACCOUNTING_SQL] Database query failed: ".AWITPT::DB::DBLayer::Error()); $server->log(LOG_ERR,"[MOD_ACCOUNTING_SQL] Database query failed: %s",AWITPT::DB::DBLayer::Error());
return; return;
} }
...@@ -438,8 +439,9 @@ sub acct_log ...@@ -438,8 +439,9 @@ sub acct_log
# Fix event timestamp # Fix event timestamp
$template->{'request'}->{'Timestamp'} = $user->{'_Internal'}->{'Timestamp'}; $template->{'request'}->{'Timestamp'} = $user->{'_Internal'}->{'Timestamp'};
# Add user # Add user details
$template->{'user'} = $user; $template->{'user'}->{'ID'} = $user->{'ID'};
$template->{'user'}->{'Username'} = $user->{'Username'};
# Current PeriodKey # Current PeriodKey
my $now = DateTime->now->set_time_zone($server->{'smradius'}->{'event_timezone'}); my $now = DateTime->now->set_time_zone($server->{'smradius'}->{'event_timezone'});
...@@ -461,7 +463,7 @@ sub acct_log ...@@ -461,7 +463,7 @@ sub acct_log
# Fetch previous records of the same session # Fetch previous records of the same session
my $sth = DBSelect(@dbDoParams); my $sth = DBSelect(@dbDoParams);
if (!$sth) { if (!$sth) {
$server->log(LOG_ERR,"[MOD_ACCOUNTING_SQL] Database query failed: ".AWITPT::DB::DBLayer::Error()); $server->log(LOG_ERR,"[MOD_ACCOUNTING_SQL] Database query failed: %s",AWITPT::DB::DBLayer::Error());
return; return;
} }
...@@ -609,7 +611,7 @@ sub acct_log ...@@ -609,7 +611,7 @@ sub acct_log
# Update database (status) # Update database (status)
my $sth = DBDo(@dbDoParams); my $sth = DBDo(@dbDoParams);
if (!$sth) { if (!$sth) {
$server->log(LOG_ERR,"[MOD_ACCOUNTING_SQL] Failed to update accounting STOP record: ".AWITPT::DB::DBLayer::Error()); $server->log(LOG_ERR,"[MOD_ACCOUNTING_SQL] Failed to update accounting STOP record: %s",AWITPT::DB::DBLayer::Error());
return MOD_RES_NACK; return MOD_RES_NACK;
} }
} }
...@@ -631,7 +633,7 @@ sub fixDuplicates ...@@ -631,7 +633,7 @@ sub fixDuplicates
# Select duplicates # Select duplicates
my $sth = DBSelect(@dbDoParams); my $sth = DBSelect(@dbDoParams);
if (!$sth) { if (!$sth) {
$server->log(LOG_ERR,"[MOD_ACCOUNTING_SQL] Database query failed: ".AWITPT::DB::DBLayer::Error()); $server->log(LOG_ERR,"[MOD_ACCOUNTING_SQL] Database query failed: %s",AWITPT::DB::DBLayer::Error());
return; return;
} }
...@@ -654,7 +656,7 @@ sub fixDuplicates ...@@ -654,7 +656,7 @@ sub fixDuplicates
# Delete duplicates # Delete duplicates
$sth = DBDo(@dbDoParams); $sth = DBDo(@dbDoParams);
if (!$sth) { if (!$sth) {
$server->log(LOG_ERR,"[MOD_ACCOUNTING_SQL] Database query failed: ".AWITPT::DB::DBLayer::Error()); $server->log(LOG_ERR,"[MOD_ACCOUNTING_SQL] Database query failed: %s",AWITPT::DB::DBLayer::Error());
DBRollback(); DBRollback();
return; return;
} }
...@@ -851,5 +853,6 @@ sub cleanup ...@@ -851,5 +853,6 @@ sub cleanup
} }
1; 1;
# vim: ts=4 # vim: ts=4
# Test accounting database # Test accounting database
# Copyright (C) 2007-2015, AllWorldIT # Copyright (C) 2007-2016, AllWorldIT
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or # the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
# #
# You should have received a copy of the GNU General Public License along # You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc., # with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
...@@ -99,7 +99,10 @@ Acct-Delay-Time: %{accounting.Acct-Delay-Time} ...@@ -99,7 +99,10 @@ Acct-Delay-Time: %{accounting.Acct-Delay-Time}
foreach my $attr ($packet->attributes) { foreach my $attr ($packet->attributes) {
$template->{'accounting'}->{$attr} = $packet->attr($attr) $template->{'accounting'}->{$attr} = $packet->attr($attr)
} }
$template->{'user'} = $user;
# Add user details
$template->{'user'}->{'ID'} = $user->{'ID'};
$template->{'user'}->{'Username'} = $user->{'Username'};
if ($packet->rawattr('Acct-Status-Type') eq "1") { if ($packet->rawattr('Acct-Status-Type') eq "1") {
$server->log(LOG_DEBUG,"Start Packet: ".$packet->dump()); $server->log(LOG_DEBUG,"Start Packet: ".$packet->dump());
......
...@@ -32,6 +32,8 @@ use POSIX qw(floor); ...@@ -32,6 +32,8 @@ use POSIX qw(floor);
# Load exporter # Load exporter
use base qw(Exporter); use base qw(Exporter);
our @EXPORT = qw(
);
our @EXPORT_OK = qw( our @EXPORT_OK = qw(
); );
......
# Support for updating of user stats # Support for updating of user stats
# Copyright (C) 2007-2011, AllWorldIT # Copyright (C) 2007-2016, AllWorldIT
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or # the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
# #
# You should have received a copy of the GNU General Public License along # You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc., # with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
...@@ -109,9 +109,9 @@ sub updateUserStats ...@@ -109,9 +109,9 @@ sub updateUserStats
# Skip MAC authentication # Skip MAC authentication
return MOD_RES_SKIP if (defined($user->{'_UserDB'}->{'Name'}) && return MOD_RES_SKIP if (defined($user->{'_UserDB'}->{'Name'}) &&
$user->{'_UserDB'}->{'Name'} eq "SQL User Database (MAC authentication)"); $user->{'_UserDB'}->{'Name'} eq "SQL User Database (MAC authentication)");
$server->log(LOG_DEBUG,"[MOD_FEATURE_UPDATE_USER_STATS_SQL] UPDATE USER STATS HOOK"); $server->log(LOG_DEBUG,"[MOD_FEATURE_UPDATE_USER_STATS_SQL] UPDATE USER STATS HOOK");
# Build template # Build template
...@@ -119,7 +119,10 @@ sub updateUserStats ...@@ -119,7 +119,10 @@ sub updateUserStats
foreach my $attr ($packet->attributes) { foreach my $attr ($packet->attributes) {
$template->{'request'}->{$attr} = $packet->rawattr($attr) $template->{'request'}->{$attr} = $packet->rawattr($attr)
} }
$template->{'user'} = $user;
# Add user details
$template->{'user'}->{'ID'} = $user->{'ID'};
$template->{'user'}->{'Username'} = $user->{'Username'};
# Current PeriodKey # Current PeriodKey
my $now = DateTime->now->set_time_zone($server->{'smradius'}->{'event_timezone'}); my $now = DateTime->now->set_time_zone($server->{'smradius'}->{'event_timezone'});
......
# Validity support # Validity support
# Copyright (C) 2007-2011, AllWorldIT # Copyright (C) 2007-2016, AllWorldIT
# #
# This program is free software; you can redistribute it and/or modify # This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by # it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or # the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version. # (at your option) any later version.
# #
# This program is distributed in the hope that it will be useful, # This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of # but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details. # GNU General Public License for more details.
# #
# You should have received a copy of the GNU General Public License along # You should have received a copy of the GNU General Public License along
# with this program; if not, write to the Free Software Foundation, Inc., # with this program; if not, write to the Free Software Foundation, Inc.,
# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. # 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
...@@ -28,12 +28,10 @@ use DateTime; ...@@ -28,12 +28,10 @@ use DateTime;
use Date::Parse; use Date::Parse;
# Exporter stuff # Exporter stuff
require Exporter; use base qw(Exporter);
our (@ISA,@EXPORT,@EXPORT_OK); our @EXPORT = qw(
@ISA = qw(Exporter);
@EXPORT = qw(
); );
@EXPORT_OK = qw( our @EXPORT_OK = qw(
); );
...@@ -41,7 +39,7 @@ our (@ISA,@EXPORT,@EXPORT_OK); ...@@ -41,7 +39,7 @@ our (@ISA,@EXPORT,@EXPORT_OK);
our $pluginInfo = { our $pluginInfo = {
Name => "User Validity Feature", Name => "User Validity Feature",
Init => \&init, Init => \&init,
# Authentication hook # Authentication hook
'Feature_Post-Authentication_hook' => \&checkValidity, 'Feature_Post-Authentication_hook' => \&checkValidity,
'Feature_Post-Accounting_hook' => \&checkValidity 'Feature_Post-Accounting_hook' => \&checkValidity
...@@ -148,15 +146,15 @@ sub checkValidity ...@@ -148,15 +146,15 @@ sub checkValidity
if (defined($validFrom)) { if (defined($validFrom)) {
# Convert string to datetime # Convert string to datetime
my $validFrom_unixtime = str2time($validFrom); my $validFrom_unixtime = str2time($validFrom,$server->{'smradius'}->{'event_timezone'});
if (!defined($validFrom_unixtime)) { if (!defined($validFrom_unixtime)) {
$server->log(LOG_NOTICE,"[MOD_FEATURE_VALIDITY] Date conversion failed on '".$validFrom."'"); $server->log(LOG_NOTICE,"[MOD_FEATURE_VALIDITY] Date conversion failed on '%s'",$validFrom);
# If current time before start of valid pariod # If current time before start of valid pariod
} elsif ($now < $validFrom_unixtime) { } elsif ($now < $validFrom_unixtime) {
my $pretty_dt = DateTime->from_epoch( epoch => $validFrom_unixtime )->strftime('%Y-%m-%d %H:%M:%S'); my $pretty_dt = DateTime->from_epoch( epoch => $validFrom_unixtime )->strftime('%Y-%m-%d %H:%M:%S');
$server->log(LOG_DEBUG,"[MOD_FEATURE_VALIDITY] Current date outside valid start date: '".$pretty_dt."', rejecting"); $server->log(LOG_DEBUG,"[MOD_FEATURE_VALIDITY] Current date outside valid start date: '%s', rejecting",$pretty_dt);
# Date not within valid period, must be disconnected # Date not within valid period, must be disconnected
return MOD_RES_NACK; return MOD_RES_NACK;
...@@ -167,14 +165,14 @@ sub checkValidity ...@@ -167,14 +165,14 @@ sub checkValidity
if (defined($validTo)) { if (defined($validTo)) {
# Convert string to datetime # Convert string to datetime
my $validTo_unixtime = str2time($validTo); my $validTo_unixtime = str2time($validTo,$server->{'smradius'}->{'event_timezone'});
if (!defined($validTo_unixtime)) { if (!defined($validTo_unixtime)) {
$server->log(LOG_DEBUG,"[MOD_FEATURE_VALIDITY] Date conversion failed on '".$validTo."'"); $server->log(LOG_DEBUG,"[MOD_FEATURE_VALIDITY] Date conversion failed on '%s'",$validTo);
# If current time after start of valid pariod # If current time after start of valid pariod
} elsif ($now > $validTo_unixtime) { } elsif ($now > $validTo_unixtime) {
my $pretty_dt = DateTime->from_epoch( epoch => $validTo_unixtime )->strftime('%Y-%m-%d %H:%M:%S'); my $pretty_dt = DateTime->from_epoch( epoch => $validTo_unixtime )->strftime('%Y-%m-%d %H:%M:%S');
$server->log(LOG_DEBUG,"[MOD_FEATURE_VALIDITY] Current date outside valid end date: '".$pretty_dt."', rejecting"); $server->log(LOG_DEBUG,"[MOD_FEATURE_VALIDITY] Current date outside valid end date: '%s', rejecting",$pretty_dt);
# Date not within valid period, must be disconnected # Date not within valid period, must be disconnected
return MOD_RES_NACK; return MOD_RES_NACK;
...@@ -194,18 +192,20 @@ sub checkValidity ...@@ -194,18 +192,20 @@ sub checkValidity
# If current time after start of valid pariod # If current time after start of valid pariod
if ($now > $validUntil) { if ($now > $validUntil) {
my $pretty_dt = DateTime->from_epoch( epoch => $validUntil )->strftime('%Y-%m-%d %H:%M:%S'); my $pretty_dt = DateTime->from_epoch( epoch => $validUntil )->strftime('%Y-%m-%d %H:%M:%S');
$server->log(LOG_DEBUG,"[MOD_FEATURE_VALIDITY] Current date outside valid window end date: '".$pretty_dt."', rejecting"); $server->log(LOG_DEBUG,"[MOD_FEATURE_VALIDITY] Current date outside valid window end date: '%s', ".
"rejecting",$pretty_dt);
# Date not within valid window, must be disconnected # Date not within valid window, must be disconnected
return MOD_RES_NACK; return MOD_RES_NACK;
} }
} }
} else { } else {
$server->log(LOG_DEBUG,"[MOD_FEATURE_VALIDITY] No users_data 'global/FirstLogin' found for user '".$user->{'Username'}."'"); $server->log(LOG_DEBUG,"[MOD_FEATURE_VALIDITY] No users_data 'global/FirstLogin' found for user '%s'",
$user->{'Username'});
} # if (defined(my $res = $module->{'Users_data_get'}($server,$user,'global','FirstLogin'))) { } # if (defined(my $res = $module->{'Users_data_get'}($server,$user,'global','FirstLogin'))) {
} else { } else {
$server->log(LOG_WARN,"[MOD_FEATURE_VALIDITY] UserDB module '".$user->{'_UserDB'}->{'Name'}. $server->log(LOG_WARN,"[MOD_FEATURE_VALIDITY] UserDB module '%s' does not support 'users_data'. Therefore no ".
"' does not support 'users_data'. Therefore no support for Validity Window feature"); "support for Validity Window feature",$user->{'_UserDB'}->{'Name'});
} # if (defined($user->{'_UserDB'}->{'Users_data_get'})) { } # if (defined($user->{'_UserDB'}->{'Users_data_get'})) {
} }
......
...@@ -28,21 +28,18 @@ use AWITPT::Util; ...@@ -28,21 +28,18 @@ use AWITPT::Util;
use smradius::util; use smradius::util;
use smradius::attributes; use smradius::attributes;
use POSIX qw(ceil strftime); use POSIX qw(ceil);
use DateTime; use DateTime;
use Date::Parse; use Date::Parse;
use Math::BigInt; use Math::BigInt;
use Math::BigFloat; use Math::BigFloat;
# Exporter stuff # Exporter stuff
require Exporter; use base qw(Exporter);
our (@ISA,@EXPORT,@EXPORT_OK); our @EXPORT = qw(
@ISA = qw(Exporter);
@EXPORT = qw(
); );
@EXPORT_OK = qw( our @EXPORT_OK = qw(
); );
...@@ -185,7 +182,7 @@ sub getTopups ...@@ -185,7 +182,7 @@ sub getTopups
# Query database # Query database
my $sth = DBSelect($config->{'get_topups_summary_query'},$periodKey,$username); my $sth = DBSelect($config->{'get_topups_summary_query'},$periodKey,$username);
if (!$sth) { if (!$sth) {
$server->log(LOG_ERR,"Failed to get topup information: ".AWITPT::DB::DBLayer::Error()); $server->log(LOG_ERR,"Failed to get topup information: %s",AWITPT::DB::DBLayer::Error());
return MOD_RES_NACK; return MOD_RES_NACK;
} }
while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw(Balance Type ID))) { while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw(Balance Type ID))) {
...@@ -196,7 +193,7 @@ sub getTopups ...@@ -196,7 +193,7 @@ sub getTopups
# Query database # Query database
$sth = DBSelect($config->{'get_topups_query'},$thisMonth->ymd,$now->ymd,$username); $sth = DBSelect($config->{'get_topups_query'},$thisMonth->ymd,$now->ymd,$username);
if (!$sth) { if (!$sth) {
$server->log(LOG_ERR,"Failed to get topup information: ".AWITPT::DB::DBLayer::Error()); $server->log(LOG_ERR,"Failed to get topup information: %s",AWITPT::DB::DBLayer::Error());
return MOD_RES_NACK; return MOD_RES_NACK;
} }
# Fetch all new topups # Fetch all new topups
...@@ -532,7 +529,7 @@ sub cleanup ...@@ -532,7 +529,7 @@ sub cleanup
if (defined($row->{'ValidTo'})) { if (defined($row->{'ValidTo'})) {
# Convert string to unix time # Convert string to unix time
my $unix_validTo = str2time($row->{'ValidTo'}); my $unix_validTo = str2time($row->{'ValidTo'},$server->{'smradius'}->{'event_timezone'});
# Process traffic topup # Process traffic topup
if (_isTrafficTopup($row->{'Type'})) { if (_isTrafficTopup($row->{'Type'})) {
push(@trafficSummary, { push(@trafficSummary, {
...@@ -600,7 +597,7 @@ sub cleanup ...@@ -600,7 +597,7 @@ sub cleanup
while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw(ID Value Type ValidTo))) { while (my $row = hashifyLCtoMC($sth->fetchrow_hashref(), qw(ID Value Type ValidTo))) {
# Convert string to unix time # Convert string to unix time
my $unix_validTo = str2time($row->{'ValidTo'}); my $unix_validTo = str2time($row->{'ValidTo'},$server->{'smradius'}->{'event_timezone'});
# If this is a traffic topup ... # If this is a traffic topup ...
if (_isTrafficTopup($row->{'Type'})) { if (_isTrafficTopup($row->{'Type'})) {
push(@trafficTopups, { push(@trafficTopups, {
......
...@@ -130,7 +130,8 @@ sub find ...@@ -130,7 +130,8 @@ sub find
foreach my $attr ($packet->attributes) { foreach my $attr ($packet->attributes) {
$template->{'request'}->{$attr} = $packet->rawattr($attr) $template->{'request'}->{$attr} = $packet->rawattr($attr)
} }
$template->{'user'} = $user;
# Add MAC address details
$template->{'user'}->{'MACAddress'} = $macAddress; $template->{'user'}->{'MACAddress'} = $macAddress;
# Replace template entries # Replace template entries
......
...@@ -91,7 +91,7 @@ sub init ...@@ -91,7 +91,7 @@ sub init
FROM FROM
@TP@group_attributes, @TP@users_to_groups @TP@group_attributes, @TP@users_to_groups
WHERE WHERE
@TP@users_to_groups.UserID = %{userdb.ID} @TP@users_to_groups.UserID = %{user.ID}
AND @TP@group_attributes.GroupID = @TP@users_to_groups.GroupID AND @TP@group_attributes.GroupID = @TP@users_to_groups.GroupID
AND @TP@group_attributes.Disabled = 0 AND @TP@group_attributes.Disabled = 0
'; ';
...@@ -102,7 +102,7 @@ sub init ...@@ -102,7 +102,7 @@ sub init
FROM FROM
@TP@user_attributes @TP@user_attributes
WHERE WHERE
UserID = %{userdb.ID} UserID = %{user.ID}
AND Disabled = 0 AND Disabled = 0
'; ';
...@@ -111,7 +111,7 @@ sub init ...@@ -111,7 +111,7 @@ sub init
@TP@users_data (UserID, LastUpdated, Name, Value) @TP@users_data (UserID, LastUpdated, Name, Value)
VALUES VALUES
( (
%{userdb.ID}, %{user.ID},
%{query.LastUpdated}, %{query.LastUpdated},
%{query.Name}, %{query.Name},
%{query.Value} %{query.Value}
...@@ -125,7 +125,7 @@ sub init ...@@ -125,7 +125,7 @@ sub init
LastUpdated = %{query.LastUpdated}, LastUpdated = %{query.LastUpdated},
Value = %{query.Value} Value = %{query.Value}
WHERE WHERE
UserID = %{userdb.ID} UserID = %{user.ID}
AND Name = %{query.Name} AND Name = %{query.Name}
'; ';
...@@ -135,7 +135,7 @@ sub init ...@@ -135,7 +135,7 @@ sub init
FROM FROM
@TP@users_data @TP@users_data
WHERE WHERE
UserID = %{userdb.ID} UserID = %{user.ID}
AND Name = %{query.Name} AND Name = %{query.Name}
'; ';
...@@ -143,7 +143,7 @@ sub init ...@@ -143,7 +143,7 @@ sub init
DELETE FROM DELETE FROM
@TP@users_data @TP@users_data
WHERE WHERE
UserID = %{userdb.ID} UserID = %{user.ID}
AND Name = %{query.Name} AND Name = %{query.Name}
'; ';
...@@ -264,7 +264,9 @@ sub find ...@@ -264,7 +264,9 @@ sub find
foreach my $attr ($packet->attributes) { foreach my $attr ($packet->attributes) {
$template->{'request'}->{$attr} = $packet->rawattr($attr) $template->{'request'}->{$attr} = $packet->rawattr($attr)
} }
$template->{'user'} = $user;
# Add user details, not user ID is available here as thats what we are retrieving
$template->{'user'}->{'Username'} = $user->{'Username'};
# Replace template entries # Replace template entries
my @dbDoParams = templateReplace($config->{'userdb_find_query'},$template); my @dbDoParams = templateReplace($config->{'userdb_find_query'},$template);
...@@ -320,6 +322,11 @@ sub get ...@@ -320,6 +322,11 @@ sub get
foreach my $attr ($packet->attributes) { foreach my $attr ($packet->attributes) {
$template->{'request'}->{$attr} = $packet->rawattr($attr) $template->{'request'}->{$attr} = $packet->rawattr($attr)
} }
# Add user details
$template->{'user'}->{'ID'} = $user->{'ID'};
$template->{'user'}->{'Username'} = $user->{'Username'};
# Add in userdb data # Add in userdb data
foreach my $item (keys %{$user->{'_UserDB_Data'}}) { foreach my $item (keys %{$user->{'_UserDB_Data'}}) {
$template->{'userdb'}->{$item} = $user->{'_UserDB_Data'}->{$item}; $template->{'userdb'}->{$item} = $user->{'_UserDB_Data'}->{$item};
...@@ -381,16 +388,21 @@ sub data_set ...@@ -381,16 +388,21 @@ sub data_set
# Build template # Build template
my $template; my $template;
# Last updated time would be now
$template->{'query'}->{'LastUpdated'} = $user->{'_Internal'}->{'Timestamp'}; # Add user details
$template->{'query'}->{'Name'} = sprintf('%s/%s',$module,$name); $template->{'user'}->{'ID'} = $user->{'ID'};
$template->{'query'}->{'Value'} = $value; $template->{'user'}->{'Username'} = $user->{'Username'};
# Add in userdb data # Add in userdb data
foreach my $item (keys %{$user->{'_UserDB_Data'}}) { foreach my $item (keys %{$user->{'_UserDB_Data'}}) {
$template->{'userdb'}->{$item} = $user->{'_UserDB_Data'}->{$item}; $template->{'userdb'}->{$item} = $user->{'_UserDB_Data'}->{$item};
} }
# Last updated time would be now
$template->{'query'}->{'LastUpdated'} = $user->{'_Internal'}->{'Timestamp'};
$template->{'query'}->{'Name'} = sprintf('%s/%s',$module,$name);
$template->{'query'}->{'Value'} = $value;
# Replace template entries # Replace template entries
my @dbDoParams = templateReplace($config->{'users_data_update_query'},$template); my @dbDoParams = templateReplace($config->{'users_data_update_query'},$template);
...@@ -453,13 +465,18 @@ sub data_get ...@@ -453,13 +465,18 @@ sub data_get
# Build template # Build template
my $template; my $template;
$template->{'query'}->{'Name'} = sprintf('%s/%s',$module,$name);
# Add user details
$template->{'user'}->{'ID'} = $user->{'ID'};
$template->{'user'}->{'Username'} = $user->{'Username'};
# Add in userdb data # Add in userdb data
foreach my $item (keys %{$user->{'_UserDB_Data'}}) { foreach my $item (keys %{$user->{'_UserDB_Data'}}) {
$template->{'userdb'}->{$item} = $user->{'_UserDB_Data'}->{$item}; $template->{'userdb'}->{$item} = $user->{'_UserDB_Data'}->{$item};