123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596 |
- /*
- * $Id: radexample.c,v 1.8 2007/07/11 17:29:30 cparker Exp $
- *
- * Copyright (C) 1995,1996,1997 Lars Fenneberg
- *
- * See the file COPYRIGHT for the respective terms and conditions.
- * If the file is missing contact me at lf@elemental.net
- * and I'll send you a copy.
- *
- */
- static char rcsid[] =
- "$Id: radexample.c,v 1.8 2007/07/11 17:29:30 cparker Exp $";
- #include <config.h>
- #include <includes.h>
- #include <freeradius-client.h>
- #include <pathnames.h>
- static char *pname = NULL;
- int
- main (int argc, char **argv)
- {
- int result;
- char username[128];
- char passwd[AUTH_PASS_LEN + 1];
- VALUE_PAIR *send, *received;
- uint32_t service;
- char msg[PW_MAX_MSG_SIZE], username_realm[256];
- char *default_realm;
- rc_handle *rh;
- pname = (pname = strrchr(argv[0],'/'))?pname+1:argv[0];
- rc_openlog(pname);
- if ((rh = rc_read_config(RC_CONFIG_FILE)) == NULL)
- return ERROR_RC;
- if (rc_read_dictionary(rh, rc_conf_str(rh, "dictionary")) != 0)
- return ERROR_RC;
- default_realm = rc_conf_str(rh, "default_realm");
- strncpy(username, rc_getstr (rh, "login: ",1), sizeof(username));
- strncpy (passwd, rc_getstr(rh, "Password: ",0), sizeof (passwd));
- send = NULL;
- /*
- * Fill in User-Name
- */
- strncpy(username_realm, username, sizeof(username_realm));
- /* Append default realm */
- if ((strchr(username_realm, '@') == NULL) && default_realm &&
- (*default_realm != '\0'))
- {
- strncat(username_realm, "@", sizeof(username_realm)-strlen(username_realm)-1);
- strncat(username_realm, default_realm, sizeof(username_realm)-strlen(username_realm)-1);
- }
- if (rc_avpair_add(rh, &send, PW_USER_NAME, username_realm, -1, 0) == NULL)
- return ERROR_RC;
- /*
- * Fill in User-Password
- */
- if (rc_avpair_add(rh, &send, PW_USER_PASSWORD, passwd, -1, 0) == NULL)
- return ERROR_RC;
- /*
- * Fill in Service-Type
- */
- service = PW_AUTHENTICATE_ONLY;
- if (rc_avpair_add(rh, &send, PW_SERVICE_TYPE, &service, -1, 0) == NULL)
- return ERROR_RC;
- result = rc_auth(rh, 0, send, &received, msg);
- if (result == OK_RC)
- {
- fprintf(stderr, "\"%s\" RADIUS Authentication OK\n", username);
- }
- else
- {
- fprintf(stderr, "\"%s\" RADIUS Authentication failure (RC=%i)\n", username, result);
- }
- return result;
- }
|