diff options
| -rw-r--r-- | doc/tinyrad.conf-example.in | 1 | ||||
| -rw-r--r-- | include/tinyrad.h | 1 | ||||
| -rw-r--r-- | lib/libtinyrad/lconf.c | 10 | ||||
| -rw-r--r-- | lib/libtinyrad/libtinyrad.h | 1 | ||||
| -rw-r--r-- | lib/libtinyrad/lmemory.c | 18 |
5 files changed, 31 insertions, 0 deletions
diff --git a/doc/tinyrad.conf-example.in b/doc/tinyrad.conf-example.in index 061e5a6..4078ba1 100644 --- a/doc/tinyrad.conf-example.in +++ b/doc/tinyrad.conf-example.in | |||
| @@ -7,6 +7,7 @@ | |||
| 7 | 7 | ||
| 8 | #URI "radius://localhost/secret" | 8 | #URI "radius://localhost/secret" |
| 9 | #BIND_ADDRESS "::1 127.0.0.1" | 9 | #BIND_ADDRESS "::1 127.0.0.1" |
| 10 | #SECRET "RaDiUsSeCrEt" | ||
| 10 | 11 | ||
| 11 | #TIMEOUT 5 | 12 | #TIMEOUT 5 |
| 12 | #NETWORK_TIMEOUT 3 | 13 | #NETWORK_TIMEOUT 3 |
diff --git a/include/tinyrad.h b/include/tinyrad.h index ab77f4a..e869624 100644 --- a/include/tinyrad.h +++ b/include/tinyrad.h | |||
| @@ -222,6 +222,7 @@ | |||
| 222 | #define TRAD_OPT_DEBUG_SYSLOG 11 | 222 | #define TRAD_OPT_DEBUG_SYSLOG 11 |
| 223 | #define TRAD_OPT_SCHEME 12 | 223 | #define TRAD_OPT_SCHEME 12 |
| 224 | #define TRAD_OPT_DICTIONARY 13 | 224 | #define TRAD_OPT_DICTIONARY 13 |
| 225 | #define TRAD_OPT_SECRET 14 | ||
| 225 | 226 | ||
| 226 | // dictionary get options | 227 | // dictionary get options |
| 227 | #define TRAD_DICT_OPT_REF_COUNT 1 // used by TinyRadDict, TinyRadDictVendor and TinyRadDictAttr | 228 | #define TRAD_DICT_OPT_REF_COUNT 1 // used by TinyRadDict, TinyRadDictVendor and TinyRadDictAttr |
diff --git a/lib/libtinyrad/lconf.c b/lib/libtinyrad/lconf.c index 70ce722..5421457 100644 --- a/lib/libtinyrad/lconf.c +++ b/lib/libtinyrad/lconf.c | |||
| @@ -199,6 +199,9 @@ tinyrad_conf_environment( | |||
| 199 | if ((value = getenv("TINYRAD_PATHS")) != NULL) | 199 | if ((value = getenv("TINYRAD_PATHS")) != NULL) |
| 200 | tinyrad_conf_opt(tr, dict, "paths", value); | 200 | tinyrad_conf_opt(tr, dict, "paths", value); |
| 201 | 201 | ||
| 202 | if ((value = getenv("TINYRAD_SECRET")) != NULL) | ||
| 203 | tinyrad_conf_opt(tr, dict, "secret", value); | ||
| 204 | |||
| 202 | if ((value = getenv("TINYRAD_TIMEOUT")) != NULL) | 205 | if ((value = getenv("TINYRAD_TIMEOUT")) != NULL) |
| 203 | tinyrad_conf_opt(tr, dict, "timeout", value); | 206 | tinyrad_conf_opt(tr, dict, "timeout", value); |
| 204 | 207 | ||
| @@ -334,6 +337,13 @@ tinyrad_conf_opt( | |||
| 334 | return(TRAD_SUCCESS); | 337 | return(TRAD_SUCCESS); |
| 335 | }; | 338 | }; |
| 336 | 339 | ||
| 340 | if (!(strcasecmp(name, "secret"))) | ||
| 341 | { | ||
| 342 | if ( (!(tr)) || ((tr->secret)) || (!(value)) ) | ||
| 343 | return(TRAD_SUCCESS); | ||
| 344 | return(tinyrad_set_option(tr, TRAD_OPT_SECRET, value)); | ||
| 345 | }; | ||
| 346 | |||
| 337 | if (!(strcasecmp(name, "timeout"))) | 347 | if (!(strcasecmp(name, "timeout"))) |
| 338 | { | 348 | { |
| 339 | if ( (!(tr)) || (tr->timeout != -1) || (!(value)) ) | 349 | if ( (!(tr)) || (tr->timeout != -1) || (!(value)) ) |
diff --git a/lib/libtinyrad/libtinyrad.h b/lib/libtinyrad/libtinyrad.h index 00e61fc..0389a8e 100644 --- a/lib/libtinyrad/libtinyrad.h +++ b/lib/libtinyrad/libtinyrad.h | |||
| @@ -116,6 +116,7 @@ struct _tinyrad | |||
| 116 | TinyRadDict * dict; | 116 | TinyRadDict * dict; |
| 117 | TinyRadURLDesc * trud; | 117 | TinyRadURLDesc * trud; |
| 118 | TinyRadURLDesc * trud_cur; | 118 | TinyRadURLDesc * trud_cur; |
| 119 | char * secret; | ||
| 119 | size_t trud_pos; | 120 | size_t trud_pos; |
| 120 | struct sockaddr_in * bind_sa; | 121 | struct sockaddr_in * bind_sa; |
| 121 | struct sockaddr_in6 * bind_sa6; | 122 | struct sockaddr_in6 * bind_sa6; |
diff --git a/lib/libtinyrad/lmemory.c b/lib/libtinyrad/lmemory.c index d329931..de18bff 100644 --- a/lib/libtinyrad/lmemory.c +++ b/lib/libtinyrad/lmemory.c | |||
| @@ -127,6 +127,9 @@ tinyrad_tiyrad_free( | |||
| 127 | if ((tr->dict)) | 127 | if ((tr->dict)) |
| 128 | tinyrad_obj_release(&tr->dict->obj); | 128 | tinyrad_obj_release(&tr->dict->obj); |
| 129 | 129 | ||
| 130 | if ((tr->secret)) | ||
| 131 | free(tr->secret); | ||
| 132 | |||
| 130 | if ((tr->trud)) | 133 | if ((tr->trud)) |
| 131 | tinyrad_urldesc_free(tr->trud); | 134 | tinyrad_urldesc_free(tr->trud); |
| 132 | tr->trud = NULL; | 135 | tr->trud = NULL; |
| @@ -240,6 +243,13 @@ tinyrad_get_option( | |||
| 240 | *((unsigned *)outvalue) = tr->scheme; | 243 | *((unsigned *)outvalue) = tr->scheme; |
| 241 | break; | 244 | break; |
| 242 | 245 | ||
| 246 | case TRAD_OPT_SECRET: | ||
| 247 | TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SECRET, outvalue )", __func__); | ||
| 248 | TinyRadDebug(TRAD_DEBUG_ARGS, " <= outvalue: %s", tr->secret); | ||
| 249 | if (((*(char **)outvalue) = tinyrad_strdup(tr->secret)) == NULL) | ||
| 250 | return(TRAD_ENOMEM); | ||
| 251 | break; | ||
| 252 | |||
| 243 | case TRAD_OPT_SOCKET_BIND_ADDRESSES: | 253 | case TRAD_OPT_SOCKET_BIND_ADDRESSES: |
| 244 | TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, outvalue )", __func__); | 254 | TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, outvalue )", __func__); |
| 245 | inet_ntop(AF_INET, &tr->bind_sa->sin_addr, bind_buff, sizeof(struct sockaddr_in)); | 255 | inet_ntop(AF_INET, &tr->bind_sa->sin_addr, bind_buff, sizeof(struct sockaddr_in)); |
| @@ -511,6 +521,14 @@ tinyrad_set_option( | |||
| 511 | TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SCHEME, invalue )", __func__); | 521 | TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SCHEME, invalue )", __func__); |
| 512 | return(TRAD_EOPTERR); | 522 | return(TRAD_EOPTERR); |
| 513 | 523 | ||
| 524 | case TRAD_OPT_SECRET: | ||
| 525 | TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SECRET, \"%s\" )", __func__, (const char *)invalue); | ||
| 526 | if ((tr->secret)) | ||
| 527 | free(tr->secret); | ||
| 528 | if ((tr->secret = tinyrad_strdup(invalue)) == NULL) | ||
| 529 | return(TRAD_ENOMEM); | ||
| 530 | break; | ||
| 531 | |||
| 514 | case TRAD_OPT_SOCKET_BIND_ADDRESSES: | 532 | case TRAD_OPT_SOCKET_BIND_ADDRESSES: |
| 515 | TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, invalue )", __func__); | 533 | TinyRadDebug(TRAD_DEBUG_ARGS, " == %s( tr, TRAD_OPT_SOCKET_BIND_ADDRESSES, invalue )", __func__); |
| 516 | if (tr->s != -1) | 534 | if (tr->s != -1) |
