Commit e66aaa7f authored by Nigel Kukard's avatar Nigel Kukard
Browse files

Merge branch 'realm-fixes' into 'master'

Fixes for default '<DEFUALT>' and blank '' realms



See merge request !422
parents 38d45fd5 0be68221
Pipeline #310 passed with stages
in 3 minutes and 13 seconds
...@@ -198,11 +198,11 @@ sub getConfig ...@@ -198,11 +198,11 @@ sub getConfig
# Extract realm from username # Extract realm from username
if (defined($user->{'Username'}) && $user->{'Username'} =~ /^\S+(?:@(\S+))?$/) { if (defined($user->{'Username'}) && $user->{'Username'} =~ /^\S+(?:@(\S+))?$/) {
$realmName = $1 // ""; my $userRealm = $1 // "";
$server->log(LOG_DEBUG,"Processing attributes for realm '$realmName'"); $server->log(LOG_DEBUG,"Processing attributes for realm '$userRealm'");
$sth = DBSelect($config->{'get_config_realm_id_query'},$realmName); $sth = DBSelect($config->{'get_config_realm_id_query'},$userRealm);
if (!$sth) { if (!$sth) {
$server->log(LOG_ERR,"Failed to get realm config attributes: ".AWITPT::DB::DBLayer::error()); $server->log(LOG_ERR,"Failed to get realm config attributes: ".AWITPT::DB::DBLayer::error());
return MOD_RES_NACK; return MOD_RES_NACK;
...@@ -224,6 +224,8 @@ sub getConfig ...@@ -224,6 +224,8 @@ sub getConfig
processConfigAttribute($server,$user,hashifyLCtoMC($row, qw(Name Operator Value))); processConfigAttribute($server,$user,hashifyLCtoMC($row, qw(Name Operator Value)));
} }
DBFreeRes($sth); DBFreeRes($sth);
$realmName = $userRealm;
} }
} }
......
...@@ -157,6 +157,7 @@ if ($child = fork()) { ...@@ -157,6 +157,7 @@ if ($child = fork()) {
$client1_ID,'SMRadius-Config-Secret',':=','secret123' $client1_ID,'SMRadius-Config-Secret',':=','secret123'
); );
# Blank realm
my $realm1_ID = testDBInsert("Create realm ''", my $realm1_ID = testDBInsert("Create realm ''",
"INSERT INTO realms (Name,Disabled) VALUES ('',0)" "INSERT INTO realms (Name,Disabled) VALUES ('',0)"
); );
...@@ -168,7 +169,7 @@ if ($child = fork()) { ...@@ -168,7 +169,7 @@ if ($child = fork()) {
# #
# Check we get an Access-Accept for a bare user # Check we get an Access-Accept for a bare user using a blank realm
# #
my $user1_ID = testDBInsert("Create user 'testuser1'", my $user1_ID = testDBInsert("Create user 'testuser1'",
...@@ -189,7 +190,43 @@ if ($child = fork()) { ...@@ -189,7 +190,43 @@ if ($child = fork()) {
'User-Password=test123', 'User-Password=test123',
); );
is(ref($res),"HASH","smradclient should return a HASH"); is(ref($res),"HASH","smradclient should return a HASH");
is($res->{'response'}->{'code'},"Access-Accept","Check our return is 'Access-Accept' for bare user"); is($res->{'response'}->{'code'},"Access-Accept","Check our return is 'Access-Accept' for bare user blank '' realm");
#
# Modify data for the default realm
#
testDBDelete("Delete blank realm '' link to client",
"DELETE FROM clients_to_realms WHERE ID = ?",$clientTOrealm1_ID
);
testDBDelete("Delete blank realm '' for realm '<DEFAULT>' test",
"DELETE FROM realms WHERE ID = ?",$realm1_ID
);
my $realm1b_ID = testDBInsert("Create default realm '<DEFAULT>'",
"INSERT INTO realms (Name,Disabled) VALUES ('<DEFAULT>',0)"
);
my $clientTOrealm1b_ID = testDBInsert("Link client 'localhost' to realm '<DEFAULT>'",
"INSERT INTO clients_to_realms (ClientID,RealmID,Disabled) VALUES (?,?,0)",$client1_ID,$realm1b_ID
);
#
# Check we get an Access-Accept for a bare user using the default realm
#
$res = smradius::client->run(
"--raddb","dicts",
"127.0.0.1",
"auth",
"secret123",
'User-Name=testuser1',
'User-Password=test123',
);
is(ref($res),"HASH","smradclient should return a HASH");
is($res->{'response'}->{'code'},"Access-Accept","Check our return is 'Access-Accept' for bare user on <DEFAULT> realm");
...@@ -801,6 +838,22 @@ sub testDBInsert ...@@ -801,6 +838,22 @@ sub testDBInsert
# Function to quickly and easily delete data from the DB
sub testDBDelete
{
my ($name,@params) = @_;
# Do the work...
DBDo(@params);
# Make sure we got no error
is(AWITPT::DB::DBLayer::error(),"",$name);
return 1;
}
# Test DB select results # Test DB select results
sub testDBResults sub testDBResults
{ {
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment