typedef size_t (*RADIUS_ESCAPE_STRING)(char *out, size_t outlen, const char *in);
int radius_xlat(char * out, int outlen, const char *fmt,
- REQUEST * request, RADIUS_ESCAPE_STRING func);
+ REQUEST * request, RADIUS_ESCAPE_STRING func, void *funcarg);
typedef size_t (*RAD_XLAT_FUNC)(void *instance, REQUEST *, const char *, char *, size_t, RADIUS_ESCAPE_STRING func);
int xlat_register(const char *module, RAD_XLAT_FUNC func,
void *instance);
if (extra_msg) {
extra[0] = ' ';
radius_xlat(extra + 1, sizeof(extra) - 1, extra_msg, request,
- NULL);
+ NULL, NULL);
} else {
*extra = '\0';
}
case T_DOUBLE_QUOTED_STRING:
if (!strchr(value, '%')) return value;
- radius_xlat(buffer, sizeof_buffer, value, request, NULL);
+ radius_xlat(buffer, sizeof_buffer, value, request, NULL, NULL);
return buffer;
}
if (!request) continue;
- sublen = radius_xlat(to, left - 1, argv[i], request, NULL);
+ sublen = radius_xlat(to, left - 1, argv[i], request, NULL, NULL);
if (sublen <= 0) {
/*
* Fail to be backwards compatible.
*/
radius_xlat(buffer, sizeof(buffer), filename,
- request, NULL); /* FIXME: escape chars! */
+ request, NULL, NULL); /* FIXME: escape chars! */
request->radlog = rl;
p = strrchr(buffer, FR_DIR_SEP);
/*
* Expand it safely.
*/
- if (!radius_xlat(buffer, sizeof(buffer), fmt, request, config_escape_func)) {
+ if (!radius_xlat(buffer, sizeof(buffer), fmt, request, config_escape_func, NULL)) {
return 0;
}
if (!mx->exec) {
radius_xlat(buffer, sizeof(buffer),
- mx->xlat_name, request, NULL);
+ mx->xlat_name, request, NULL, NULL);
} else {
RDEBUG("`%s`", mx->xlat_name);
radius_exec_program(mx->xlat_name, request,
}
} else {
radius_xlat(buffer, sizeof(buffer),
- child->name, request, NULL);
+ child->name, request, NULL, NULL);
}
null_case = q = NULL;
for(p = g->children; p; p = p->next) {
char *request_log_file = NULL;
char *debug_log_file = NULL;
int radius_xlat(UNUSED char *out, UNUSED int outlen, UNUSED const char *fmt,
- UNUSED REQUEST *request, UNUSED RADIUS_ESCAPE_STRING func)
+ UNUSED REQUEST *request,
+ UNUSED RADIUS_ESCAPE_STRING func, UNUSED void *arg)
{
return -1;
}
char *request_log_file = NULL;
char *debug_log_file = NULL;
int radius_xlat(UNUSED char *out, UNUSED int outlen, UNUSED const char *fmt,
- UNUSED REQUEST *request, UNUSED RADIUS_ESCAPE_STRING func)
+ UNUSED REQUEST *request,
+ UNUSED RADIUS_ESCAPE_STRING func, UNUSED void *arg)
{
return -1;
}
char *request_log_file = NULL;
char *debug_log_file = NULL;
int radius_xlat(char *out, UNUSED int outlen, UNUSED const char *fmt,
- UNUSED REQUEST *request, UNUSED RADIUS_ESCAPE_STRING func)
+ UNUSED REQUEST *request,
+ UNUSED RADIUS_ESCAPE_STRING func, UNUSED void *arg)
{
*out = 0;
return 0;
* previous checks passed.
*/
if (my_ok && conf->check_cert_cn) {
- if (!radius_xlat(cn_str, sizeof(cn_str), conf->check_cert_cn, request, NULL)) {
+ if (!radius_xlat(cn_str, sizeof(cn_str), conf->check_cert_cn, request, NULL, NULL)) {
radlog(L_ERR, "rlm_eap_tls (%s): xlat failed.",
conf->check_cert_cn);
/* if this fails, fail the verification */
regmatch_t rxmatch[REQUEST_MAX_REGEX + 1];
snprintf(name, sizeof(name), "%%{%s}", check->name);
- radius_xlat(value, sizeof(value), name, request, NULL);
+ radius_xlat(value, sizeof(value), name, request, NULL, NULL);
/*
* Include substring matches.
regmatch_t rxmatch[REQUEST_MAX_REGEX + 1];
snprintf(name, sizeof(name), "%%{%s}", check->name);
- radius_xlat(value, sizeof(value), name, request, NULL);
+ radius_xlat(value, sizeof(value), name, request, NULL, NULL);
/*
* Include substring matches.
check_item->flags.do_xlat = 0;
rcode = radius_xlat(buffer, sizeof(buffer),
check_item->vp_strvalue,
- req, NULL);
+ req, NULL, NULL);
/*
* Parse the string into a new value.
i->flags.do_xlat = 0;
rcode = radius_xlat(buffer, sizeof(buffer),
i->vp_strvalue,
- req, NULL);
+ req, NULL, NULL);
/*
* Parse the string into a new value.
*/
static int decode_attribute(const char **from, char **to, int freespace,
REQUEST *request,
- RADIUS_ESCAPE_STRING func)
+ RADIUS_ESCAPE_STRING func, void *funcarg)
{
int do_length = 0;
const char *module_name, *xlat_str;
* Expand the first one. If we did, exit the
* conditional.
*/
- retlen = radius_xlat(q, freespace, buffer, request, func);
+ retlen = radius_xlat(q, freespace, buffer, request, func, funcarg);
if (retlen) {
q += retlen;
goto done;
*/
if (expand2) {
retlen = radius_xlat(q, freespace, l,
- request, func);
+ request, func, funcarg);
if (retlen) {
q += retlen;
}
* Expand the second bit.
*/
RDEBUG2("\t... expanding second conditional");
- retlen = radius_xlat(q, freespace, next, request, func);
+ retlen = radius_xlat(q, freespace, next, request, func, funcarg);
}
q += retlen;
* @return length of string written @bug should really have -1 for failure
*/
int radius_xlat(char *out, int outlen, const char *fmt,
- REQUEST *request, RADIUS_ESCAPE_STRING func)
+ REQUEST *request,
+ RADIUS_ESCAPE_STRING func, void *funcarg)
{
int c, len, freespace;
const char *p;
} else if (c == '%') switch(*p) {
case '{':
p--;
- if (decode_attribute(&p, &q, freespace, request, func) < 0) return 0;
+ if (decode_attribute(&p, &q, freespace, request, func, funcarg) < 0) return 0;
break;
case '%':
if ((pair = pairfind(request->packet->vps, PW_ACCT_STATUS_TYPE, 0)) != NULL) {
acctstatustype = pair->vp_integer;
} else {
- radius_xlat(logstr, sizeof(logstr), "packet has no accounting status type. [user '%{User-Name}', nas '%{NAS-IP-Address}']", request, NULL);
+ radius_xlat(logstr, sizeof(logstr), "packet has no accounting status type. [user '%{User-Name}', nas '%{NAS-IP-Address}']", request, NULL, NULL);
radlog(L_ERR, "rlm_acctlog (%s)", logstr);
return RLM_MODULE_INVALID;
}
switch (acctstatustype) {
case PW_STATUS_START:
- radius_xlat(logstr, sizeof(logstr), inst->acctstart, request, NULL);
+ radius_xlat(logstr, sizeof(logstr), inst->acctstart, request, NULL, NULL);
break;
case PW_STATUS_STOP:
- radius_xlat(logstr, sizeof(logstr), inst->acctstop, request, NULL);
+ radius_xlat(logstr, sizeof(logstr), inst->acctstop, request, NULL, NULL);
break;
case PW_STATUS_ALIVE:
- radius_xlat(logstr, sizeof(logstr), inst->acctupdate, request, NULL);
+ radius_xlat(logstr, sizeof(logstr), inst->acctupdate, request, NULL, NULL);
break;
case PW_STATUS_ACCOUNTING_ON:
- radius_xlat(logstr, sizeof(logstr), inst->accton, request, NULL);
+ radius_xlat(logstr, sizeof(logstr), inst->accton, request, NULL, NULL);
break;
case PW_STATUS_ACCOUNTING_OFF:
- radius_xlat(logstr, sizeof(logstr), inst->acctoff, request, NULL);
+ radius_xlat(logstr, sizeof(logstr), inst->acctoff, request, NULL, NULL);
break;
default:
int len;
len = radius_xlat(buffer, sizeof(buffer), inst->key,
- request, NULL);
+ request, NULL, NULL);
if (!len) {
return RLM_MODULE_NOOP;
}
if (data->new_attr){
/* new_attribute = yes */
- if (!radius_xlat(replace_STR, sizeof(replace_STR), data->replace, request, NULL)) {
+ if (!radius_xlat(replace_STR, sizeof(replace_STR), data->replace, request, NULL, NULL)) {
DEBUG2("%s: xlat on replace string failed.", data->name);
return ret;
}
if (data->nocase)
cflags |= REG_ICASE;
- if (!radius_xlat(search_STR, sizeof(search_STR), data->search, request, NULL) && data->search_len != 0) {
+ if (!radius_xlat(search_STR, sizeof(search_STR), data->search, request, NULL, NULL) && data->search_len != 0) {
DEBUG2("%s: xlat on search string failed.", data->name);
return ret;
}
if (!done_xlat){
if (data->replace_len != 0 &&
- radius_xlat(replace_STR, sizeof(replace_STR), data->replace, request, NULL) == 0) {
+ radius_xlat(replace_STR, sizeof(replace_STR), data->replace, request, NULL, NULL) == 0) {
DEBUG2("%s: xlat on replace string failed.", data->name);
return ret;
}
* I don't want to make that change for 2.0.
*/
radius_xlat(buffer, sizeof(buffer), cf_pair_value(cp),
- request, NULL);
+ request, NULL, NULL);
vp = pairmake(p, buffer, cf_pair_operator(cp));
pairadd(vps, vp);
const char *p = fmt;
char buffer[1024];
- radius_xlat(buffer, sizeof(buffer), inst->key, request, NULL);
+ radius_xlat(buffer, sizeof(buffer), inst->key, request, NULL, NULL);
c = cache_find(inst, request, buffer);
VALUE_PAIR *vp;
char buffer[1024];
- radius_xlat(buffer, sizeof(buffer), inst->key, request, NULL);
+ radius_xlat(buffer, sizeof(buffer), inst->key, request, NULL, NULL);
c = cache_find(inst, request, buffer);
* feed it through radius_xlat() to expand the
* variables.
*/
- if (radius_xlat(buffer, sizeof(buffer), inst->detailfile, request, NULL) == 0) {
+ if (radius_xlat(buffer, sizeof(buffer), inst->detailfile, request, NULL, NULL) == 0) {
radlog_request(L_ERR, 0, request, "rlm_detail: Failed to expand detail file %s",
inst->detailfile);
return RLM_MODULE_FAIL;
return RLM_MODULE_FAIL;
}
- if (radius_xlat(timestamp, sizeof(timestamp), inst->header, request, NULL) == 0) {
+ if (radius_xlat(timestamp, sizeof(timestamp), inst->header, request, NULL, NULL) == 0) {
radlog_request(L_ERR, 0, request, "rlm_detail: Unable to expand detail header format %s",
inst->header);
close(outfd);
EAP_DS *eap_ds = handler->eap_ds;
rlm_eap_gtc_t *inst = (rlm_eap_gtc_t *) type_data;
- if (!radius_xlat(challenge_str, sizeof(challenge_str), inst->challenge, handler->request, NULL)) {
+ if (!radius_xlat(challenge_str, sizeof(challenge_str), inst->challenge, handler->request, NULL, NULL)) {
radlog(L_ERR, "rlm_eap_gtc: xlat of \"%s\" failed", inst->challenge);
return 0;
}
RDEBUG("Account has expired");
if (data->msg && data->msg[0]){
- if (!radius_xlat(msg, sizeof(msg), data->msg, request, NULL)) {
+ if (!radius_xlat(msg, sizeof(msg), data->msg, request, NULL, NULL)) {
radlog(L_ERR, "rlm_expiration: xlat failed.");
return RLM_MODULE_FAIL;
}
snprintf(name, sizeof(name), "%%{%s}", check->name);
- radius_xlat(value, sizeof(value), name, req, NULL);
+ radius_xlat(value, sizeof(value), name, req, NULL, NULL);
vp = pairmake(check->name, value, check->operator);
/*
/*
* Do an xlat on the provided string (nice recursive operation).
*/
- if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func)) {
+ if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func, NULL)) {
radlog(L_ERR, "rlm_expr: xlat failed.");
*out = '\0';
return 0;
/*
* Do an xlat on the provided string (nice recursive operation).
*/
- if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func)) {
+ if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func, NULL)) {
radlog(L_ERR, "rlm_expr: xlat failed.");
*out = '\0';
return 0;
/*
* Do an xlat on the provided string (nice recursive operation).
*/
- len = radius_xlat(buffer, sizeof(buffer), fmt, request, func);
+ len = radius_xlat(buffer, sizeof(buffer), fmt, request, func, NULL);
if (!len) {
radlog(L_ERR, "rlm_expr: xlat failed.");
*out = '\0';
if (outlen <= 1) return 0;
- len = radius_xlat(buffer, sizeof(buffer), fmt, request, func);
+ len = radius_xlat(buffer, sizeof(buffer), fmt, request, func, NULL);
if (!len) {
radlog(L_ERR, "rlm_expr: xlat failed.");
*out = '\0';
if (outlen <= 1) return 0;
- len = radius_xlat(buffer, sizeof(buffer), fmt, request, func);
+ len = radius_xlat(buffer, sizeof(buffer), fmt, request, func, NULL);
if (!len) {
radlog(L_ERR, "rlm_expr: xlat failed.");
*out = '\0';
if (outlen <= 1) return 0;
- if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func)) {
+ if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func, NULL)) {
*out = '\0';
return 0;
}
if (outlen <= 1) return 0;
- if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func)) {
+ if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func, NULL)) {
*out = '\0';
return 0;
}
int i;
FR_MD5_CTX ctx;
- if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func)) {
+ if (!radius_xlat(buffer, sizeof(buffer), fmt, request, func, NULL)) {
*out = '\0';
return 0;
}
int len;
len = radius_xlat(buffer, sizeof(buffer), inst->key,
- request, NULL);
+ request, NULL, NULL);
if (len) name = buffer;
else name = "NONE";
}
int len;
len = radius_xlat(buffer, sizeof(buffer), inst->key,
- request, NULL);
+ request, NULL, NULL);
if (len) name = buffer;
else name = "NONE";
}
int len;
len = radius_xlat(buffer, sizeof(buffer), inst->key,
- request, NULL);
+ request, NULL, NULL);
if (len) name = buffer;
else name = "NONE";
}
}
switch(acctstatustype){
case PW_STATUS_STOP:
- if (!radius_xlat(xlat_str,MAX_STRING_LEN,data->key, request, NULL)){
+ if (!radius_xlat(xlat_str,MAX_STRING_LEN,data->key, request, NULL, NULL)){
RDEBUG("xlat on the 'key' directive failed");
return RLM_MODULE_NOOP;
}
}
#endif
- if (!radius_xlat(xlat_str,MAX_STRING_LEN,data->key, request, NULL)){
+ if (!radius_xlat(xlat_str,MAX_STRING_LEN,data->key, request, NULL, NULL)){
RDEBUG("xlat on the 'key' directive failed");
return RLM_MODULE_NOOP;
}
return 1;
}
- if (!radius_xlat(basedn, sizeof(basedn), inst->basedn, req, ldap_escape_func)) {
+ if (!radius_xlat(basedn, sizeof(basedn), inst->basedn, req, ldap_escape_func, NULL)) {
DEBUG("rlm_ldap::ldap_groupcmp: unable to create basedn.");
return 1;
}
char *user_dn = NULL;
if (!radius_xlat(filter, sizeof(filter), inst->filter,
- req, ldap_escape_func)){
+ req, ldap_escape_func, NULL)){
DEBUG("rlm_ldap::ldap_groupcmp: unable to create filter");
return 1;
}
}
if(!radius_xlat(gr_filter, sizeof(gr_filter),
- inst->groupmemb_filt, req, ldap_escape_func)) {
+ inst->groupmemb_filt, req, ldap_escape_func, NULL)) {
DEBUG("rlm_ldap::ldap_groupcmp: unable to create filter.");
return 1;
}
LDAP_CONN *conn;
DEBUG(" [%s] - ldap_xlat", inst->xlat_name);
- if (!radius_xlat(url, sizeof(url), fmt, request, ldap_escape_func)) {
+ if (!radius_xlat(url, sizeof(url), fmt, request, ldap_escape_func, NULL)) {
radlog (L_ERR, " [%s] Unable to create LDAP URL.\n", inst->xlat_name);
return 0;
}
request->username->vp_strvalue);
if (!radius_xlat(filter, sizeof(filter), inst->filter,
- request, ldap_escape_func)) {
+ request, ldap_escape_func, NULL)) {
radlog(L_ERR, " [%s] unable to create filter.\n", inst->xlat_name);
return RLM_MODULE_INVALID;
}
if (!radius_xlat(basedn, sizeof(basedn), inst->basedn,
- request, ldap_escape_func)) {
+ request, ldap_escape_func, NULL)) {
radlog(L_ERR, " [%s] unable to create basedn.\n", inst->xlat_name);
return RLM_MODULE_INVALID;
}
while ((vp_user_dn = pairfind(request->config_items,
PW_LDAP_USERDN, 0)) == NULL) {
if (!radius_xlat(filter, sizeof(filter), inst->filter,
- request, ldap_escape_func)) {
+ request, ldap_escape_func, NULL)) {
radlog(L_ERR, " [%s] unable to create filter.\n", inst->xlat_name);
return RLM_MODULE_INVALID;
}
if (!radius_xlat(basedn, sizeof(basedn), inst->basedn,
- request, ldap_escape_func)) {
+ request, ldap_escape_func, NULL)) {
radlog(L_ERR, " [%s] unable to create basedn.\n", inst->xlat_name);
return RLM_MODULE_INVALID;
}
CONF_PAIR *cp;
radius_xlat(line + 1, sizeof(line) - 2, inst->reference,
- request, linelog_escape_func);
+ request, linelog_escape_func, NULL);
line[0] = '.'; /* force to be in current section */
/*
*/
if (strcmp(inst->filename, "syslog") != 0) {
radius_xlat(buffer, sizeof(buffer), inst->filename, request,
- NULL);
+ NULL, NULL);
/* check path and eventually create subdirs */
p = strrchr(buffer,'/');
* FIXME: Check length.
*/
radius_xlat(line, sizeof(line) - 1, value, request,
- linelog_escape_func);
+ linelog_escape_func, NULL);
if (fd >= 0) {
strcat(line, "\n");
char msg[MAX_STRING_LEN];
VALUE_PAIR *tmp;
- if (!radius_xlat(msg, sizeof(msg), data->msg, request, NULL)) {
+ if (!radius_xlat(msg, sizeof(msg), data->msg, request, NULL, NULL)) {
radlog(L_ERR, "rlm_logintime: xlat failed.");
return RLM_MODULE_FAIL;
}
while (isspace(*p)) p++;
- if (!radius_xlat(buf2, sizeof(buf2),p,request,NULL)) {
+ if (!radius_xlat(buf2, sizeof(buf2),p,request,NULL,NULL)) {
RDEBUG("xlat failed");
*buffer = '\0';
return 0;
while (isspace(*p)) p++;
- if (!radius_xlat(buf2, sizeof(buf2),p,request,NULL)) {
+ if (!radius_xlat(buf2, sizeof(buf2),p,request,NULL,NULL)) {
RDEBUG("xlat failed");
*buffer = '\0';
return 0;
*/
if (inst->ntlm_cpw_username) {
- len = radius_xlat(buf, sizeof(buf) - 2, inst->ntlm_cpw_username, request, NULL);
+ len = radius_xlat(buf, sizeof(buf) - 2, inst->ntlm_cpw_username, request, NULL, NULL);
strcat(buf, "\n");
len++;
}
if (inst->ntlm_cpw_domain) {
- len = radius_xlat(buf, sizeof(buf) - 2, inst->ntlm_cpw_domain, request, NULL);
+ len = radius_xlat(buf, sizeof(buf) - 2, inst->ntlm_cpw_domain, request, NULL, NULL);
strcat(buf, "\n");
len++;
/*
* perform the xlat
*/
- result_len = radius_xlat(result, sizeof(result), inst->local_cpw, request, NULL);
+ result_len = radius_xlat(result, sizeof(result), inst->local_cpw, request, NULL, NULL);
if (!result_len) {
RDEBUG("Local MS-CHAPv2 password change - xlat didn't give any result, assuming failure");
return -1;
}
strlcpy(buff2, "%{mschap:NT-Hash %{User-Password}}", sizeof(buff2));
- if (!radius_xlat(charbuf, sizeof(charbuf),buff2,request,NULL)){
+ if (!radius_xlat(charbuf, sizeof(charbuf),buff2,request,NULL,NULL)){
RDEBUG("mschap xlat failed");
snprintf(fmsg, sizeof(char[MAX_STRING_LEN]),
"rlm_pap: mschap xlat failed");
}
strlcpy(buff2, "%{mschap:LM-Hash %{User-Password}}", sizeof(buff2));
- if (!radius_xlat(charbuf,sizeof(charbuf),buff2,request,NULL)){
+ if (!radius_xlat(charbuf,sizeof(charbuf),buff2,request,NULL,NULL)){
RDEBUG("mschap xlat failed");
snprintf(fmsg, sizeof(char[MAX_STRING_LEN]),
"rlm_pap: mschap xlat failed");
/*
* Do an xlat on the provided string (nice recursive operation).
*/
- if (!radius_xlat(params, sizeof(params), fmt, request, func)) {
+ if (!radius_xlat(params, sizeof(params), fmt, request, func, NULL)) {
radlog(L_ERR, "rlm_perl: xlat failed.");
return 0;
}
char buffer[1024];
radius_xlat(buffer, sizeof(buffer), this->rhs,
- state->request, NULL);
+ state->request, NULL, NULL);
fprintf(fr_log_fp, "%s", buffer);
if (!strchr(buffer, '\n')) fprintf(fr_log_fp, "\n");
}
strlcpy(lhs_buffer, data, sizeof(lhs_buffer)); /* FIXME: yuck */
} else if (this->lhs_type == POLICY_LEX_DOUBLE_QUOTED_STRING) {
if (radius_xlat(lhs_buffer, sizeof(lhs_buffer), this->lhs,
- state->request, NULL) > 0) {
+ state->request, NULL, NULL) > 0) {
data = lhs_buffer;
}
}
if ((assign->rhs_type == POLICY_LEX_DOUBLE_QUOTED_STRING) &&
(strchr(assign->rhs, '%') != NULL)) {
radius_xlat(buffer, sizeof(buffer), assign->rhs,
- request, NULL);
+ request, NULL, NULL);
value = buffer;
}
/*
* Get the utmp filename, via xlat.
*/
- radius_xlat(filename, sizeof(filename), inst->filename, request, NULL);
+ radius_xlat(filename, sizeof(filename), inst->filename, request, NULL, NULL);
/*
* See if this was a reboot.
* they told us to use.
*/
*buffer = '\0';
- radius_xlat(buffer, sizeof(buffer), inst->username, request, NULL);
+ radius_xlat(buffer, sizeof(buffer), inst->username, request, NULL, NULL);
/*
* Copy the previous translated user name.
/*
* Get the filename, via xlat.
*/
- radius_xlat(filename, sizeof(filename), inst->filename, request, NULL);
+ radius_xlat(filename, sizeof(filename), inst->filename, request, NULL, NULL);
if ((fd = open(filename, O_RDWR)) < 0) {
/*
}
*login = '\0';
- radius_xlat(login, sizeof(login), inst->username, request, NULL);
+ radius_xlat(login, sizeof(login), inst->username, request, NULL, NULL);
if (!*login) {
close(fd);
return RLM_MODULE_NOOP;
char querystr[MAX_QUERY_LEN];
if (!radius_xlat(querystr, sizeof(querystr), fmt, request,
- redis_escape_func)) {
+ redis_escape_func, NULL)) {
radlog(L_ERR, "rlm_redis (%s): xlat failed.",
inst->xlat_name);
* Do an xlat on the provided string
*/
if (request) {
- if (!radius_xlat(query, sizeof (query), fmt, request, NULL)) {
+ if (!radius_xlat(query, sizeof (query), fmt, request, NULL, NULL)) {
radlog(L_ERR, "rediswho_command: xlat failed on: '%s'", query);
return 0;
}
if (section->username) {
radius_xlat(buffer, sizeof(buffer),
- section->username, request, NULL);
+ section->username, request, NULL, NULL);
ret = curl_easy_setopt(candle, CURLOPT_USERNAME,
buffer);
}
if (section->password) {
radius_xlat(buffer, sizeof(buffer),
- section->password, request, NULL);
+ section->password, request, NULL, NULL);
ret = curl_easy_setopt(candle, CURLOPT_PASSWORD,
buffer);
if (section->username) {
radius_xlat(buffer, sizeof(buffer),
- section->username, request, NULL);
+ section->username, request, NULL, NULL);
ret = curl_easy_setopt(candle,
CURLOPT_TLSAUTH_USERNAME,
}
if (section->password) {
radius_xlat(buffer, sizeof(buffer),
- section->password, request, NULL);
+ section->password, request, NULL, NULL);
ret = curl_easy_setopt(candle,
CURLOPT_TLSAUTH_PASSWORD,
path = (q + 1);
out = buffer;
- out += radius_xlat(out, bufsize, scheme, request, NULL);
+ out += radius_xlat(out, bufsize, scheme, request, NULL, NULL);
free(scheme);
out += radius_xlat(out, (bufsize - (buffer - out)), path, request,
- rest_uri_escape);
+ rest_uri_escape, NULL);
return (buffer - out);
}
/*
* Do an xlat on the provided string (nice recursive operation).
*/
- if (!radius_xlat(querystr, sizeof(querystr), fmt, request, sql_escape_func)) {
+ if (!radius_xlat(querystr, sizeof(querystr), fmt, request, sql_escape_func, NULL)) {
radlog(L_ERR, "rlm_sql (%s): xlat failed.",
inst->config->xlat_name);
return 0;
if (username != NULL) {
strlcpy(tmpuser, username, sizeof(tmpuser));
} else if (strlen(inst->config->query_user)) {
- radius_xlat(tmpuser, sizeof(tmpuser), inst->config->query_user, request, NULL);
+ radius_xlat(tmpuser, sizeof(tmpuser), inst->config->query_user, request, NULL, NULL);
} else {
return 0;
}
(inst->config->groupmemb_query[0] == 0))
return 0;
- if (!radius_xlat(querystr, sizeof(querystr), inst->config->groupmemb_query, request, sql_escape_func)) {
+ if (!radius_xlat(querystr, sizeof(querystr), inst->config->groupmemb_query, request, sql_escape_func, NULL)) {
radlog_request(L_ERR, 0, request, "xlat \"%s\" failed.",
inst->config->groupmemb_query);
return -1;
return -1;
}
pairadd(&request->packet->vps, sql_group);
- if (!radius_xlat(querystr, sizeof(querystr), inst->config->authorize_group_check_query, request, sql_escape_func)) {
+ if (!radius_xlat(querystr, sizeof(querystr), inst->config->authorize_group_check_query, request, sql_escape_func, NULL)) {
radlog_request(L_ERR, 0, request,
"Error generating query; rejecting user");
/* Remove the grouup we added above */
/*
* Now get the reply pairs since the paircompare matched
*/
- if (!radius_xlat(querystr, sizeof(querystr), inst->config->authorize_group_reply_query, request, sql_escape_func)) {
+ if (!radius_xlat(querystr, sizeof(querystr), inst->config->authorize_group_reply_query, request, sql_escape_func, NULL)) {
radlog_request(L_ERR, 0, request, "Error generating query; rejecting user");
/* Remove the grouup we added above */
pairdelete(&request->packet->vps, PW_SQL_GROUP, 0);
/*
* Now get the reply pairs since the paircompare matched
*/
- if (!radius_xlat(querystr, sizeof(querystr), inst->config->authorize_group_reply_query, request, sql_escape_func)) {
+ if (!radius_xlat(querystr, sizeof(querystr), inst->config->authorize_group_reply_query, request, sql_escape_func, NULL)) {
radlog_request(L_ERR, 0, request, "Error generating query; rejecting user");
/* Remove the grouup we added above */
pairdelete(&request->packet->vps, PW_SQL_GROUP, 0);
/*
* Alright, start by getting the specific entry for the user
*/
- if (!radius_xlat(querystr, sizeof(querystr), inst->config->authorize_check_query, request, sql_escape_func)) {
+ if (!radius_xlat(querystr, sizeof(querystr), inst->config->authorize_check_query, request, sql_escape_func, NULL)) {
radlog_request(L_ERR, 0, request, "Error generating query; rejecting user");
sql_release_socket(inst, sqlsocket);
/* Remove the username we (maybe) added above */
/*
* Now get the reply pairs since the paircompare matched
*/
- if (!radius_xlat(querystr, sizeof(querystr), inst->config->authorize_reply_query, request, sql_escape_func)) {
+ if (!radius_xlat(querystr, sizeof(querystr), inst->config->authorize_reply_query, request, sql_escape_func, NULL)) {
radlog_request(L_ERR, 0, request, "Error generating query; rejecting user");
sql_release_socket(inst, sqlsocket);
/* Remove the username we (maybe) added above */
*p++ = '.';
if (radius_xlat(p, (sizeof(path) - (p - path)) - 1,
- section->reference, request, NULL) < 0)
+ section->reference, request, NULL, NULL) < 0)
return RLM_MODULE_FAIL;
item = cf_reference_item(NULL, section->cs, path);
goto null_query;
radius_xlat(querystr, sizeof(querystr), value, request,
- sql_escape_func);
+ sql_escape_func, NULL);
if (!*querystr)
goto null_query;
if(sql_set_user(inst, request, sqlusername, NULL) < 0)
return RLM_MODULE_FAIL;
- radius_xlat(querystr, sizeof(querystr), inst->config->simul_count_query, request, sql_escape_func);
+ radius_xlat(querystr, sizeof(querystr), inst->config->simul_count_query, request, sql_escape_func, NULL);
/* initialize the sql socket */
sqlsocket = sql_get_socket(inst);
return RLM_MODULE_OK;
}
- radius_xlat(querystr, sizeof(querystr), inst->config->simul_verify_query, request, sql_escape_func);
+ radius_xlat(querystr, sizeof(querystr), inst->config->simul_verify_query, request, sql_escape_func, NULL);
if(rlm_sql_select_query(&sqlsocket, inst, querystr)) {
sql_release_socket(inst, sqlsocket);
return RLM_MODULE_FAIL;
if (!filename) return;
- if (!radius_xlat(buffer, sizeof(buffer), filename, request, NULL)) {
+ if (!radius_xlat(buffer, sizeof(buffer), filename, request, NULL, NULL)) {
radlog(L_ERR, "rlm_sql (%s): xlat failed.",
inst->config->xlat_name);
return;
strlcpy(tmpuser, username, MAX_STRING_LEN);
} else if (inst->sql_user_name[0] != '\0') {
radius_xlat(tmpuser, sizeof(tmpuser), inst->sql_user_name,
- request, NULL);
+ request, NULL, NULL);
} else {
return 0;
}
/* Expand variables in the query */
xlat_query[0] = '\0';
radius_xlat(xlat_query, len, query, request,
- inst->utf8 ? sql_utf8_escape_func : sql_escape_func);
+ inst->utf8 ? sql_utf8_escape_func : sql_escape_func, NULL);
if (xlat_query[0] == '\0') {
radlog_request(L_ERR, 0, request, "Couldn't xlat the query %s",
query);
char *p, path[1024];
path[0] = '\0';
- radius_xlat(path, sizeof(path), inst->path, request, NULL);
+ radius_xlat(path, sizeof(path), inst->path, request, NULL, NULL);
if (path[0] == '\0') {
return RLM_MODULE_FAIL;
}
sqlcounter_expand(querystr, MAX_QUERY_LEN, data->query, instance);
/* second, xlat any request attribs in query */
- radius_xlat(responsestr, MAX_QUERY_LEN, querystr, req, sql_escape_func);
+ radius_xlat(responsestr, MAX_QUERY_LEN, querystr, req, sql_escape_func, NULL);
/* third, wrap query with sql module call & expand */
snprintf(querystr, sizeof(querystr), "%%{%%S:%s}", responsestr);
sqlcounter_expand(responsestr, MAX_QUERY_LEN, querystr, instance);
/* Finally, xlat resulting SQL query */
- radius_xlat(querystr, MAX_QUERY_LEN, responsestr, req, sql_escape_func);
+ radius_xlat(querystr, MAX_QUERY_LEN, responsestr, req, sql_escape_func, NULL);
counter = atoi(querystr);
sqlcounter_expand(querystr, MAX_QUERY_LEN, data->query, instance);
/* second, xlat any request attribs in query */
- radius_xlat(responsestr, MAX_QUERY_LEN, querystr, request, sql_escape_func);
+ radius_xlat(responsestr, MAX_QUERY_LEN, querystr, request, sql_escape_func, NULL);
/* third, wrap query with sql module & expand */
snprintf(querystr, sizeof(querystr), "%%{%%S:%s}", responsestr);
sqlcounter_expand(responsestr, MAX_QUERY_LEN, querystr, instance);
/* Finally, xlat resulting SQL query */
- radius_xlat(querystr, MAX_QUERY_LEN, responsestr, request, sql_escape_func);
+ radius_xlat(querystr, MAX_QUERY_LEN, responsestr, request, sql_escape_func, NULL);
if (sscanf(querystr, "%u", &counter) != 1) {
DEBUG2("rlm_sqlcounter: No integer found in string \"%s\"",
* Do an xlat on the provided string
*/
if (request) {
- if (!radius_xlat(query, sizeof(query), expansion, request, data->sql_inst->sql_escape_func)) {
+ if (!radius_xlat(query, sizeof(query), expansion, request, data->sql_inst->sql_escape_func, NULL)) {
radlog(L_ERR, "sqlippool_command: xlat failed on: '%s'", query);
return 0;
}
* Do an xlat on the provided string
*/
if (request) {
- if (!radius_xlat(query, sizeof(query), expansion, request, data->sql_inst->sql_escape_func)) {
+ if (!radius_xlat(query, sizeof(query), expansion, request, data->sql_inst->sql_escape_func, NULL)) {
radlog(L_ERR, "sqlippool_command: xlat failed.");
out[0] = '\0';
return 0;
if (pairfind(request->reply->vps, PW_FRAMED_IP_ADDRESS, 0) != NULL) {
/* We already have a Framed-IP-Address */
radius_xlat(logstr, sizeof(logstr), data->log_exists,
- request, NULL);
+ request, NULL, NULL);
RDEBUG("Framed-IP-Address already exists");
return do_logging(logstr, RLM_MODULE_NOOP);
if (pairfind(request->config_items, PW_POOL_NAME, 0) == NULL) {
RDEBUG("No Pool-Name defined.");
radius_xlat(logstr, sizeof(logstr), data->log_nopool,
- request, NULL);
+ request, NULL, NULL);
return do_logging(logstr, RLM_MODULE_NOOP);
}
* NOTFOUND
*/
RDEBUG("pool appears to be full");
- radius_xlat(logstr, sizeof(logstr), data->log_failed, request, NULL);
+ radius_xlat(logstr, sizeof(logstr), data->log_failed, request, NULL, NULL);
return do_logging(logstr, RLM_MODULE_NOTFOUND);
}
RDEBUG("IP address could not be allocated.");
radius_xlat(logstr, sizeof(logstr), data->log_failed,
- request, NULL);
+ request, NULL, NULL);
return do_logging(logstr, RLM_MODULE_NOOP);
}
RDEBUG("Invalid IP number [%s] returned from database query.", allocation);
data->sql_inst->sql_release_socket(data->sql_inst, sqlsocket);
radius_xlat(logstr, sizeof(logstr), data->log_failed,
- request, NULL);
+ request, NULL, NULL);
return do_logging(logstr, RLM_MODULE_NOOP);
}
(char *) NULL, 0);
data->sql_inst->sql_release_socket(data->sql_inst, sqlsocket);
- radius_xlat(logstr, sizeof(logstr), data->log_success, request, NULL);
+ radius_xlat(logstr, sizeof(logstr), data->log_success, request, NULL, NULL);
return do_logging(logstr, RLM_MODULE_OK);
}
sqlippool_command(data->stop_commit, sqlsocket, data, request,
(char *) NULL, 0);
- radius_xlat(logstr, sizeof(logstr), data->log_clear, request, NULL);
+ radius_xlat(logstr, sizeof(logstr), data->log_clear, request, NULL, NULL);
return do_logging(logstr, RLM_MODULE_OK);
}