[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

pam_radius + saslauthd + cyrus imapd



Dear Joe 
I did what you said before and I just wrote the last
errors for you, here I have attached the code and log
with more error tags.

file: /etc/raddb/server

When the file is empty (just a commented line)
Jun  5 15:02:09 test saslauthd[5377]: rel_accept_lock
: released accept lock
Jun  5 15:02:09 test saslauthd[5378]: get_accept_lock
: acquired accept lock
Jun  5 15:02:09 test saslauthd[5377]: pam_radius_auth:
Got user name jh
Jun  5 15:02:09 test saslauthd[5377]: pam_radius_auth:
Unable to open socket5: Success
Jun  5 15:02:09 test saslauthd[5377]: pam_radius_auth:
Unable to open socketAAA: Success

When I have an IP in /etc/raddb/server: 

Jun  5 15:03:48 test saslauthd[5378]: rel_accept_lock
: released accept lock
Jun  5 15:03:48 test saslauthd[5379]: get_accept_lock
: acquired accept lock
Jun  5 15:03:48 test saslauthd[5378]: pam_radius_auth:
Got user name radius
Jun  5 15:03:48 test saslauthd[5378]: pam_radius_auth:
Unable to open socket5: Success
Jun  5 15:03:48 test saslauthd[5378]: pam_radius_auth:
Unable to open socket7: Success
Jun  5 15:03:48 test saslauthd[5378]: pam_radius_auth:
ERROR reading /etc/raddb/server, line 2: Could not
read hostname or secret

IP and key in /etc/raddb/server :

Jun  5 15:03:48 test saslauthd[5378]: pam_radius_auth:
Unable to open socket7: Success 
Jun  5 15:03:48 test saslauthd[5378]: pam_radius_auth:
ERROR reading /etc/raddb/server, line 2: Could not
read hostname or secret 
Jun  5 15:09:25 test saslauthd[5379]: rel_accept_lock
: released accept lock
Jun  5 15:09:25 test saslauthd[5380]: get_accept_lock
: acquired accept lock
Jun  5 15:09:25 test saslauthd[5379]: pam_radius_auth:
Got user name ff
Jun  5 15:09:25 test saslauthd[5379]: pam_radius_auth:
Unable to open socket5: Success 
Jun  5 15:09:25 test saslauthd[5379]: pam_radius_auth:
Unable to open socket8: Success 
Jun  5 15:09:25 test saslauthd[5379]: pam_radius_auth:
Unable to open socket10: Success 
Jun  5 15:09:25 test saslauthd[5379]: pam_radius_auth:
Unable to open socket12: Success 
Jun  5 15:09:25 test saslauthd[5379]: pam_radius_auth:
Unable to open socket23: Success 

Ip and key and timeout in /etc/raddb/server:

Jun  5 15:10:27 test saslauthd[5380]: rel_accept_lock
: released accept lock
Jun  5 15:10:27 test saslauthd[5376]: get_accept_lock
: acquired accept lock
Jun  5 15:10:27 test saslauthd[5380]: pam_radius_auth:
Got user name ffff
Jun  5 15:10:27 test saslauthd[5380]: pam_radius_auth:
Unable to open socket5: Success 
Jun  5 15:10:27 test saslauthd[5380]: pam_radius_auth:
Unable to open socket8: Success 
Jun  5 15:10:27 test saslauthd[5380]: pam_radius_auth:
Unable to open socket10: Success 
Jun  5 15:10:27 test saslauthd[5380]: pam_radius_auth:
Unable to open socket12: Success 
Jun  5 15:10:27 test saslauthd[5380]: pam_radius_auth:
Unable to open socket23: Success 

Attached you can find the initialiaze part of code.
Thanks in advance
Fatemeh 



 




	
		
__________________________________
Do you Yahoo!?
Friends.  Fun.  Try the all-new Yahoo! Messenger.
http://messenger.yahoo.com/ 
static int
initialize(radius_conf_t *conf, int accounting)
{
  struct sockaddr salocal;
  u_short local_port;
  char hostname[BUFFER_SIZE];
  char secret[BUFFER_SIZE];
  
  char buffer[BUFFER_SIZE];
  char *p;
  FILE *fserver;
  radius_server_t *server = NULL;
  struct sockaddr_in * s_in;
  int timeout;
  int line = 0;

  /* the first time around, read the configuration file */
  if ((fserver = fopen (conf_file, "r")) == (FILE*)NULL) {
    _pam_log(LOG_ERR, "Could not open configuration file %s: %s\n",
	    conf_file, strerror(errno));
    return PAM_ABORT;
  }
  while (!feof(fserver) &&
	 (fgets (buffer, sizeof(buffer), fserver) != (char*) NULL) &&
	 (!ferror(fserver))) {
    line++;
    p = buffer;

    /*
     *  Skip blank lines and whitespace
     */
    while (*p &&
	   ((*p == ' ') || (*p == '\t') ||
	    (*p == '\r') || (*p == '\n'))) p++;
    
    /*
     *  Nothing, or just a comment.  Ignore the line.
     */
    if ((!*p) || (*p == '#')) {
      continue;
    }
    
    timeout = 3;
    if (sscanf(p, "%s %s %d", hostname, secret, &timeout) < 2) {
   _pam_log(LOG_ERR, "Unable to open socket7: %s\n", strerror(errno));
      _pam_log(LOG_ERR, "ERROR reading %s, line %d: Could not read hostname or secret\n",
	       conf_file, line);
      continue; /* invalid line */
    } else {			/* read it in and save the data */
   _pam_log(LOG_ERR, "Unable to open socket8: %s\n", strerror(errno));
      radius_server_t *tmp;
      
      tmp = malloc(sizeof(radius_server_t));
      if (server) {
   _pam_log(LOG_ERR, "Unable to open socket9: %s\n", strerror(errno));
	server->next = tmp;
	server = server->next;
      } else {
   _pam_log(LOG_ERR, "Unable to open socket10: %s\n", strerror(errno));
	conf->server = tmp;
	server= tmp;		/* first time */
      }
      
      /* sometime later do memory checks here */
      server->hostname = strdup(hostname);
      server->secret = strdup(secret);
      server->accounting = accounting;
      server->port = 0;

      if ((timeout < 1) || (timeout > 60)) {
   _pam_log(LOG_ERR, "Unable to open socket11: %s\n", strerror(errno));
	server->timeout = 3;
      } else {
   _pam_log(LOG_ERR, "Unable to open socket12: %s\n", strerror(errno));
	server->timeout = timeout;
      }
      server->next = NULL;
    }
   _pam_log(LOG_ERR, "Unable to open socket23: %s\n", strerror(errno));
  }
   _pam_log(LOG_ERR, "Unable to open socketAAA: %s\n", strerror(errno));
  fclose(fserver);
  
  if (!server) {		/* no server found, die a horrible death */
	_pam_log(LOG_ERR, "No RADIUS server found in configuration file %s\n",
	     conf_file);
    return PAM_AUTHINFO_UNAVAIL;
  }
  
  /* open a socket.  Dies if it fails */
  conf->sockfd = socket(AF_INET, SOCK_DGRAM, 0);
  if (conf->sockfd < 0) {
    _pam_log(LOG_ERR, "Failed to open RADIUS socket: %s\n", strerror(errno));
    return PAM_AUTHINFO_UNAVAIL;
  }

  /* set up the local end of the socket communications */
  s_in = (struct sockaddr_in *) &salocal;
  memset ((char *) s_in, '\0', sizeof(struct sockaddr));
  s_in->sin_family = AF_INET;
  s_in->sin_addr.s_addr = INADDR_ANY;

  /*
   *  Use our process ID as a local port for RADIUS.
   */
  local_port = (getpid() & 0x7fff) + 1024;
  do {
    local_port++;
    s_in->sin_port = htons(local_port);
  } while ((bind(conf->sockfd, &salocal, sizeof (struct sockaddr_in)) < 0) && 
	   (local_port < 64000));
  
  if (local_port >= 64000) {
    close(conf->sockfd);
    _pam_log(LOG_ERR, "No open port we could bind to.");
    return PAM_AUTHINFO_UNAVAIL;
  }

   _pam_log(LOG_ERR, "Unable to open socket6: %s\n", strerror(errno));
  return PAM_SUCCESS;
   _pam_log(LOG_ERR, "Unable to open socket11: %s\n", strerror(errno));
}

/*
 * Helper function for building a radius packet.
 * It initializes *some* of the header, and adds common attributes.
 */




FROM MAIN: 
 DPRINT(LOG_DEBUG, "Got user name %s", user);

  /*
   * Get the IP address of the authentication server
   * Then, open a socket, and bind it to a port
   */
   _pam_log(LOG_ERR, "Unable to open socket5: %s\n", strerror(errno));
  retval = initialize(&config, FALSE);
   _pam_log(LOG_ERR, "Unable to open socket3: %s\n", strerror(errno));
  PAM_FAIL_CHECK;
   _pam_log(LOG_ERR, "Unable to open socket33: %s\n", strerror(errno));

[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]