diff --git a/smradiusd b/smradiusd index 02142ff41bd5cc7883ba8e485bff575bc0ce6428..b6b913e716affc0444f9feeb858ca98f90247cc3 100755 --- a/smradiusd +++ b/smradiusd @@ -51,8 +51,6 @@ use Radius::Packet; use Socket; -use Data::Dumper; - # Override configuration @@ -483,11 +481,13 @@ sub process_request { # Main user hash with everything in my $user; + $user->{'ConfigAttributes'} = {}; + $user->{'ReplyAttributes'} = {}; + $user->{'ReplyVAttributes'} = {}; # # GRAB & PROCESS CONFIG # - $user->{'ConfigAttributes'} = {}; foreach my $module (@{$self->{'plugins'}}) { # Try find config attribute @@ -514,7 +514,6 @@ sub process_request { # FIXME - need secret # FIXME - need acl list -use Data::Dumper; print (STDERR Dumper(getAttributeValue($user->{'ConfigAttributes'},"SMRadius-Config-Secret"))); # # START PROCESSING @@ -536,7 +535,8 @@ use Data::Dumper; print (STDERR Dumper(getAttributeValue($user->{'ConfigAttribut foreach my $module (@{$self->{'plugins'}}) { # Try find user if ($module->{'User_find'}) { - $self->log(LOG_INFO,"[SMRADIUS] FIND: Trying plugin '".$module->{'Name'}."' for username '".$user->{'Username'}."'"); + $self->log(LOG_INFO,"[SMRADIUS] FIND: Trying plugin '".$module->{'Name'}."' for username '". + $user->{'Username'}."'"); my ($res,$userdb_data) = $module->{'User_find'}($self,$user,$pkt); # Check result @@ -624,7 +624,8 @@ use Data::Dumper; print (STDERR Dumper(getAttributeValue($user->{'ConfigAttribut foreach my $module (@{$self->{'plugins'}}) { # Try authenticate if ($module->{'Feature_Post-Accounting_hook'}) { - $self->log(LOG_INFO,"[SMRADIUS] POST-ACCT: Trying plugin '".$module->{'Name'}."' for '".$user->{'Username'}."'"); + $self->log(LOG_INFO,"[SMRADIUS] POST-ACCT: Trying plugin '".$module->{'Name'}."' for '". + $user->{'Username'}."'"); my $res = $module->{'Feature_Post-Accounting_hook'}($self,$user,$pkt); # Check result @@ -687,9 +688,8 @@ use Data::Dumper; print (STDERR Dumper(getAttributeValue($user->{'ConfigAttribut my $data; $podSock->recv($data, 65536) or return $self->log(LOG_ERR,"[SMRADIUS] POST-ACCT: Receive data failed: $!"); - my @stuff = unpack('C C n a16 a*', $data); - $self->log(LOG_DEBUG,"STUFF: ".Dumper(\@stuff)); - +# my @stuff = unpack('C C n a16 a*', $data); +# $self->log(LOG_DEBUG,"STUFF: ".Dumper(\@stuff)); } # Or maybe a access request @@ -836,14 +836,14 @@ use Data::Dumper; print (STDERR Dumper(getAttributeValue($user->{'ConfigAttribut $resp->set_authenticator($pkt->authenticator); # Loop with attributes we got from the getReplyAttributes function, its a hash of arrays which are the values - my %replyAttributes = (); + my %replyAttributes = %{ $user->{'ReplyAttributes'} }; foreach my $attrName (keys %{$user->{'Attributes'}}) { # Loop with operators foreach my $attrOp (keys %{$user->{'Attributes'}->{$attrName}}) { # Grab attribute my $attr = $user->{'Attributes'}->{$attrName}->{$attrOp}; # Add this to the reply attribute? - getReplyAttribute($self,\%replyAttributes,$attr); + setReplyAttribute($self,\%replyAttributes,$attr); } } # Loop with reply attributes @@ -855,6 +855,17 @@ use Data::Dumper; print (STDERR Dumper(getAttributeValue($user->{'ConfigAttribut } } + # Loop with vendor reply attributes + my %replyVAttributes = %{ $user->{'ReplyVAttributes'} }; + foreach my $vendor (keys %replyVAttributes) { + # Loop with operators + foreach my $attrName (keys %{$replyVAttributes{$vendor}}) { + # Add each value + foreach my $value (@{$replyVAttributes{$vendor}->{$attrName}}) { + $resp->set_vsattr($vendor,$attrName,$value); + } + } + } $udp_packet = auth_resp($resp->pack, getAttributeValue($user->{'ConfigAttributes'},"SMRadius-Config-Secret")); $server->{'client'}->send($udp_packet);