Skip to content
Snippets Groups Projects
Commit a068ee28 authored by Nigel Kukard's avatar Nigel Kukard
Browse files

* Fixed up configuration variables handling in modules

* Fixed up configuration module and cleaned up code
parent 9f9da668
No related branches found
No related tags found
No related merge requests found
......@@ -166,19 +166,39 @@ sub init
# Pull in queries
if (defined($scfg->{'mod_accounting_sql'}->{'accounting_start_query'}) &&
$scfg->{'mod_accounting_sql'}->{'accounting_start_query'} ne "") {
$config->{'accounting_start_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_start_query'};
if (ref($scfg->{'mod_accounting_sql'}->{'accounting_start_query'}) eq "ARRAY") {
$config->{'accounting_start_query'} = join(' ',
@{$scfg->{'mod_accounting_sql'}->{'accounting_start_query'}});
} else {
$config->{'accounting_start_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_start_query'};
}
}
if (defined($scfg->{'mod_accounting_sql'}->{'accounting_update_query'}) &&
$scfg->{'mod_accounting_sql'}->{'accounting_update_query'} ne "") {
$config->{'accounting_update_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_update_query'};
if (ref($scfg->{'mod_accounting_sql'}->{'accounting_update_query'}) eq "ARRAY") {
$config->{'accounting_update_query'} = join(' ',
@{$scfg->{'mod_accounting_sql'}->{'accounting_update_query'}});
} else {
$config->{'accounting_update_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_update_query'};
}
}
if (defined($scfg->{'mod_accounting_sql'}->{'accounting_stop_query'}) &&
$scfg->{'mod_accounting_sql'}->{'accounting_stop_query'} ne "") {
$config->{'accounting_stop_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_stop_query'};
if (ref($scfg->{'mod_accounting_sql'}->{'accounting_stop_query'}) eq "ARRAY") {
$config->{'accounting_stop_query'} = join(' ',
@{$scfg->{'mod_accounting_sql'}->{'accounting_stop_query'}});
} else {
$config->{'accounting_stop_query'} = $scfg->{'mod_accounting_sql'}->{'accounting_stop_query'};
}
}
if (defined($scfg->{'mod_accounting_sql'}->{'get_usage_query'}) &&
$scfg->{'mod_accounting_sql'}->{'get_usage_query'} ne "") {
$config->{'get_usage_query'} = $scfg->{'mod_accounting_sql'}->{'get_usage_query'};
if (ref($scfg->{'mod_accounting_sql'}->{'get_usage_query'}) eq "ARRAY") {
$config->{'get_usage_query'} = join(' ',
@{$scfg->{'mod_accounting_sql'}->{'get_usage_query'}});
} else {
$config->{'get_usage_query'} = $scfg->{'mod_accounting_sql'}->{'get_usage_query'};
}
}
}
}
......
......@@ -78,7 +78,11 @@ sub init
# Pull in queries
if (defined($scfg->{'mod_config_sql'}->{'get_config_query'}) &&
$scfg->{'mod_config_sql'}->{'get_config_query'} ne "") {
$config->{'get_config_query'} = $scfg->{'mod_config_sql'}->{'get_config_query'};
if (ref($scfg->{'mod_config_sql'}->{'get_config_query'}) eq "ARRAY") {
$config->{'get_config_query'} = join(' ',@{$scfg->{'mod_config_sql'}->{'get_config_query'}});
} else {
$config->{'get_config_query'} = $scfg->{'mod_config_sql'}->{'get_config_query'};
}
}
}
......@@ -98,26 +102,23 @@ sub getConfig
my ($server,$user,$packet) = @_;
# Attributes to return
my %configAttributes = ();
# Replace template entries
my @dbDoParams = $config->{'get_config_query'};
# Query database
my $sth = DBSelect(@dbDoParams);
if (!$sth) {
$server->log(LOG_ERR,"Failed to get config attributes: ".smradius::dblayer::Error());
return -1;
return MOD_RES_NACK;
}
# Loop with user attributes
while (my $row = $sth->fetchrow_hashref()) {
addAttribute($server,\%configAttributes,hashifyLCtoMC($row,qw(Name Operator Value)));
processConfigAttribute($server,$user->{'ConfigAttributes'},hashifyLCtoMC($row,qw(Name Operator Value)));
}
DBFreeRes($sth);
return \%configAttributes;
return MOD_RES_ACK;
}
......
......@@ -81,7 +81,7 @@ sub init
FROM
@TP@group_attributes, @TP@users_to_groups
WHERE
users_to_groups.UserID = %{userdb.ID}
users_to_groups.UserID = %{userdb.id}
AND group_attributes.GroupID = users_to_groups.GroupID
';
......@@ -100,17 +100,33 @@ sub init
# Pull in queries
if (defined($scfg->{'mod_userdb_sql'}->{'userdb_find_query'}) &&
$scfg->{'mod_userdb_sql'}->{'userdb_find_query'} ne "") {
$config->{'userdb_find_query'} = $scfg->{'mod_userdb_sql'}->{'userdb_find_query'};
if (ref($scfg->{'mod_userdb_sql'}->{'userdb_find_query'}) eq "ARRAY") {
$config->{'userdb_find_query'} = join(' ', @{$scfg->{'mod_userdb_sql'}->{'userdb_find_query'}});
} else {
$config->{'userdb_find_query'} = $scfg->{'mod_userdb_sql'}->{'userdb_find_query'};
}
}
if (defined($scfg->{'mod_userdb_sql'}->{'userdb_get_group_attributes_query'}) &&
$scfg->{'mod_userdb_sql'}->{'userdb_get_group_attributes_query'} ne "") {
$config->{'userdb_get_group_attributes_query'} = $scfg->{'mod_userdb_sql'}->{'userdb_get_group_attributes_query'};
if (ref($scfg->{'mod_userdb_sql'}->{'userdb_get_group_attributes_query'}) eq "ARRAY") {
$config->{'userdb_get_group_attributes_query'} = join(' ',
@{$scfg->{'mod_userdb_sql'}->{'userdb_get_group_attributes_query'}});
} else {
$config->{'userdb_get_group_attributes_query'} =
$scfg->{'mod_userdb_sql'}->{'userdb_get_group_attributes_query'};
}
}
if (defined($scfg->{'mod_userdb_sql'}->{'userdb_get_user_attributes_query'}) &&
$scfg->{'mod_userdb_sql'}->{'userdb_get_user_attributes_query'} ne "") {
$config->{'userdb_get_user_attributes_query'} = $scfg->{'mod_userdb_sql'}->{'userdb_get_user_attributes_query'};
if (ref($scfg->{'mod_userdb_sql'}->{'userdb_get_user_attributes_query'}) eq "ARRAY") {
$config->{'userdb_get_user_attributes_query'} = join(' ',
@{$scfg->{'mod_userdb_sql'}->{'userdb_get_user_attributes_query'}});
} else {
$config->{'userdb_get_user_attributes_query'} =
$scfg->{'mod_userdb_sql'}->{'userdb_get_user_attributes_query'};
}
}
}
}
......@@ -180,7 +196,7 @@ sub get
$template->{'request'}->{$attr} = $packet->rawattr($attr)
}
# Add in userdb data
foreach my $item ($user->{'_UserDB_Data'}) {
foreach my $item (keys %{$user->{'_UserDB_Data'}}) {
$template->{'userdb'}->{$item} = $user->{'_UserDB_Data'}->{$item};
}
......@@ -189,6 +205,7 @@ sub get
# Replace template entries
my @dbDoParams = templateReplace($config->{'userdb_get_group_attributes_query'},$template);
# Query database
my $sth = DBSelect(@dbDoParams);
if (!$sth) {
......
......@@ -494,20 +494,24 @@ sub process_request {
if ($module->{'Config_get'}) {
# Get result from config module
$self->log(LOG_INFO,"[SMRADIUS] FIND: Trying plugin '".$module->{'Name'}."' for incoming connection");
my ($configData) = $module->{'Config_get'}($self,$user,$pkt);
# If we got some config back, process it
if ($configData) {
# Loop with attributes we got from the user
foreach my $attrName (keys %{$configData}) {
# Loop with operators
foreach my $attrOp (keys %{$configData->{$attrName}}) {
# Grab attribute
my $attr = $configData->{$attrName}->{$attrOp};
# Process attribute
my $res = processConfigAttribute($self,$user->{'ConfigAttributes'},$attr);
}
}
$self->log(LOG_INFO,"[SMRADIUS] CONFIG: Trying plugin '".$module->{'Name'}."' for incoming connection");
my $res = $module->{'Config_get'}($self,$user,$pkt);
# Check result
if (!defined($res)) {
$self->log(LOG_DEBUG,"[SMRADIUS] CONFIG: Error with plugin '".$module->{'Name'}."'");
# Check if we skipping this plugin
} elsif ($res == MOD_RES_SKIP) {
$self->log(LOG_DEBUG,"[SMRADIUS] CONFIG: Skipping '".$module->{'Name'}."'");
# Check if we got a positive result back
} elsif ($res == MOD_RES_ACK) {
$self->log(LOG_NOTICE,"[SMRADIUS] CONFIG: Configuration retrieved from '".$module->{'Name'}."'");
# Check if we got a negative result back
} elsif ($res == MOD_RES_NACK) {
$self->log(LOG_NOTICE,"[SMRADIUS] CONFIG: Configuration problem when using '".$module->{'Name'}."'");
}
}
}
......@@ -866,6 +870,7 @@ sub process_request {
}
}
}
use Data::Dumper; print ( STDERR "ATTRIBUTES: ".Dumper($user->{'ConfigAttributes'}) );
$udp_packet = auth_resp($resp->pack, getAttributeValue($user->{'ConfigAttributes'},"SMRadius-Config-Secret"));
$server->{'client'}->send($udp_packet);
......
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