aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--doc/tinyrad.conf-example.in1
-rw-r--r--include/tinyrad.h1
-rw-r--r--lib/libtinyrad/lconf.c10
-rw-r--r--lib/libtinyrad/libtinyrad.h1
-rw-r--r--lib/libtinyrad/lmemory.c18
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)