diff options
author | Simo Sorce <simo@redhat.com> | 2015-11-27 17:28:23 -0500 |
---|---|---|
committer | Simo Sorce <simo@redhat.com> | 2015-12-02 18:34:39 -0500 |
commit | 472d605d916f7ad63cd8bbffa100997eca700da4 (patch) | |
tree | ea2a518b004b64beb8ea3a3cc971af1ae91d02c4 /src/environ.c | |
parent | 855341bf3b39fe5e5b9abf299563e0d09c4861a3 (diff) | |
download | mod_auth_gssapi-472d605d916f7ad63cd8bbffa100997eca700da4.tar.gz mod_auth_gssapi-472d605d916f7ad63cd8bbffa100997eca700da4.tar.xz mod_auth_gssapi-472d605d916f7ad63cd8bbffa100997eca700da4.zip |
Move setting request data to a separate file
In preparation for the next commit.
Signed-off-by: Simo Sorce <simo@redhat.com>
Diffstat (limited to 'src/environ.c')
-rw-r--r-- | src/environ.c | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/environ.c b/src/environ.c new file mode 100644 index 0000000..0ff7cf0 --- /dev/null +++ b/src/environ.c @@ -0,0 +1,43 @@ +/* Copyright (C) 2015 mod_auth_gssapi authors - See COPYING for (C) terms */ + +#include "mod_auth_gssapi.h" +#include "environ.h" + +static void mag_set_KRB5CCANME(request_rec *req, char *ccname) +{ + apr_status_t status; + apr_finfo_t finfo; + char *value; + + status = apr_stat(&finfo, ccname, APR_FINFO_MIN, req->pool); + if (status != APR_SUCCESS && status != APR_INCOMPLETE) { + /* set the file cache anyway, but warn */ + ap_log_rerror(APLOG_MARK, APLOG_ERR|APLOG_NOERRNO, 0, req, + "KRB5CCNAME file (%s) lookup failed!", ccname); + } + + value = apr_psprintf(req->pool, "FILE:%s", ccname); + apr_table_set(req->subprocess_env, "KRB5CCNAME", value); +} + +void mag_set_req_data(request_rec *req, + struct mag_config *cfg, + struct mag_conn *mc) +{ + apr_table_set(req->subprocess_env, "GSS_NAME", mc->gss_name); + apr_table_set(req->subprocess_env, "GSS_SESSION_EXPIRATION", + apr_psprintf(req->pool, + "%ld", (long)mc->expiration)); + req->ap_auth_type = apr_pstrdup(req->pool, + mag_str_auth_type(mc->auth_type)); + req->user = apr_pstrdup(req->pool, mc->user_name); + if (cfg->deleg_ccache_dir && mc->delegated) { + char *ccname; + ccname = mag_gss_name_to_ccache_name(req, + cfg->deleg_ccache_dir, + mc->gss_name); + if (ccname) { + mag_set_KRB5CCANME(req, ccname); + } + } +} |