/[radius]/radius/radiusd/auth.c
ViewVC logotype

Diff of /radius/radiusd/auth.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

revision 1.76 by gray, Thu Jun 5 07:08:10 2003 UTC revision 1.77 by gray, Thu Jun 5 17:30:17 2003 UTC
# Line 475  rad_auth_init(RADIUS_REQ *radreq, int ac Line 475  rad_auth_init(RADIUS_REQ *radreq, int ac
475  enum auth_state {  enum auth_state {
476          as_init,          as_init,
477          as_validate,          as_validate,
         as_service,  
478          as_disable,          as_disable,
         as_service_type,  
479          as_realmuse,          as_realmuse,
480          as_simuse,          as_simuse,
481          as_time,          as_time,
# Line 523  static void sfn_init(AUTH_MACH*); Line 521  static void sfn_init(AUTH_MACH*);
521  static void sfn_validate(AUTH_MACH*);  static void sfn_validate(AUTH_MACH*);
522  static void sfn_eval_reply(AUTH_MACH*);  static void sfn_eval_reply(AUTH_MACH*);
523  static void sfn_scheme(AUTH_MACH*);  static void sfn_scheme(AUTH_MACH*);
 static void sfn_service(AUTH_MACH*);  
524  static void sfn_disable(AUTH_MACH*);  static void sfn_disable(AUTH_MACH*);
 static void sfn_service_type(AUTH_MACH*);  
525  static void sfn_realmuse(AUTH_MACH*);  static void sfn_realmuse(AUTH_MACH*);
526  static void sfn_simuse(AUTH_MACH*);  static void sfn_simuse(AUTH_MACH*);
527  static void sfn_time(AUTH_MACH*);  static void sfn_time(AUTH_MACH*);
# Line 552  struct auth_state_s states[] = { Line 548  struct auth_state_s states[] = {
548          as_init,         as_validate,          as_init,         as_validate,
549                           0,               L_null,     sfn_init,                           0,               L_null,     sfn_init,
550    
551          as_validate,     as_service,          as_validate,     as_disable,
552                           0,               L_null,     sfn_validate,                           0,               L_null,     sfn_validate,
553                    
554          as_service,      as_disable,          as_disable,      as_realmuse,
                          DA_SERVICE_TYPE, L_req, sfn_service,  
           
         as_disable,      as_service_type,  
555                           0,               L_null,     sfn_disable,                           0,               L_null,     sfn_disable,
556                    
         as_service_type, as_realmuse,  
                          DA_SERVICE_TYPE, L_reply, sfn_service_type,  
   
557          as_realmuse,     as_simuse,          as_realmuse,     as_simuse,
558                           0,               L_null,     sfn_realmuse,                           0,               L_null,     sfn_realmuse,
559                    
# Line 715  rad_authenticate(RADIUS_REQ *radreq, int Line 705  rad_authenticate(RADIUS_REQ *radreq, int
705          m.timeout_pair = NULL;          m.timeout_pair = NULL;
706          m.user_msg   = NULL;          m.user_msg   = NULL;
707          obstack_init(&m.msg_stack);          obstack_init(&m.msg_stack);
708          /*FIXME: this should have been cached by rad_auth_init */  
709          m.namepair = avl_find(m.req->request, DA_USER_NAME);          m.namepair = avl_find(m.req->request, DA_USER_NAME);
710    
711          debug(1, ("auth: %s", m.namepair->avp_strvalue));          debug(1, ("auth: %s", m.namepair->avp_strvalue));
# Line 979  sfn_validate(AUTH_MACH *m) Line 969  sfn_validate(AUTH_MACH *m)
969  }  }
970    
971  void  void
 sfn_service(AUTH_MACH *m)  
 {  
         /* FIXME: Other service types should also be handled,  
          *        I suppose      
          */  
         if (m->check_pair->avp_lvalue != DV_SERVICE_TYPE_AUTHENTICATE_ONLY)  
                 return;  
         newstate(as_ack);  
 }  
   
 void  
972  sfn_disable(AUTH_MACH *m)  sfn_disable(AUTH_MACH *m)
973  {  {
974          if (get_deny(m->namepair->avp_strvalue)) {          if (get_deny(m->namepair->avp_strvalue)) {
# Line 1000  sfn_disable(AUTH_MACH *m) Line 979  sfn_disable(AUTH_MACH *m)
979  }  }
980    
981  void  void
 sfn_service_type(AUTH_MACH *m)  
 {  
         if (m->check_pair->avp_lvalue == DV_SERVICE_TYPE_AUTHENTICATE_ONLY) {  
                 auth_log(m, _("Login rejected"), NULL,  
                          _("Authenticate only user"), NULL);  
                 auth_format_msg(m, MSG_ACCESS_DENIED);  
                 newstate(as_reject);  
         }  
 }  
   
 void  
982  sfn_realmuse(AUTH_MACH *m)  sfn_realmuse(AUTH_MACH *m)
983  {  {
984          if (!m->req->realm)          if (!m->req->realm)
# Line 1150  sfn_exec_wait(AUTH_MACH *m) Line 1118  sfn_exec_wait(AUTH_MACH *m)
1118                          rc = radius_exec_program(p->avp_strvalue,                          rc = radius_exec_program(p->avp_strvalue,
1119                                                   m->req,                                                   m->req,
1120                                                   &m->user_reply,                                                   &m->user_reply,
1121                                                   1,                                                   1);
                                                  &m->user_msg);  
1122                          break;                          break;
1123    
1124                  case '|':                  case '|':
# Line 1185  sfn_exec_nowait(AUTH_MACH *m) Line 1152  sfn_exec_nowait(AUTH_MACH *m)
1152  {  {
1153          VALUE_PAIR *p;          VALUE_PAIR *p;
1154                    
         /*FIXME: do we need to pass user_reply here? */  
1155          for (p = m->check_pair;          for (p = m->check_pair;
1156               p;               p;
1157               p = avl_find(p->next, DA_EXEC_PROGRAM)) {               p = avl_find(p->next, DA_EXEC_PROGRAM)) {
1158                                    
1159                  radius_exec_program(m->check_pair->avp_strvalue,                  radius_exec_program(m->check_pair->avp_strvalue,
1160                                      m->req, &m->user_reply,                                      m->req, NULL, 0);
                                     0, NULL);  
1161    
1162          }          }
1163  }  }

Legend:
Removed from v.1.76  
changed lines
  Added in v.1.77

savannah-hackers-public@gnu.org
ViewVC Help
Powered by ViewVC 1.1.26