summaryrefslogtreecommitdiffstats
path: root/src/environ.c
diff options
context:
space:
mode:
authorSimo Sorce <simo@redhat.com>2015-11-27 17:28:23 -0500
committerSimo Sorce <simo@redhat.com>2015-12-02 18:34:39 -0500
commit472d605d916f7ad63cd8bbffa100997eca700da4 (patch)
treeea2a518b004b64beb8ea3a3cc971af1ae91d02c4 /src/environ.c
parent855341bf3b39fe5e5b9abf299563e0d09c4861a3 (diff)
downloadmod_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.c43
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);
+ }
+ }
+}