|
|
45f3a6 |
From 1948864cc8ace15d2e0bbb527091cca6a025676e Mon Sep 17 00:00:00 2001
|
|
|
45f3a6 |
From: Robbie Harwood <rharwood@redhat.com>
|
|
|
45f3a6 |
Date: Mon, 30 Sep 2019 15:00:56 -0400
|
|
|
45f3a6 |
Subject: [PATCH] Make syslog of call status configurable
|
|
|
45f3a6 |
|
|
|
45f3a6 |
Add a parameter (syslog_status) to configuration and
|
|
|
45f3a6 |
CLI (--syslog-status). This logs the results of GSSAPI calls at
|
|
|
45f3a6 |
LOG_DEBUG. Typically these calls resemble:
|
|
|
45f3a6 |
|
|
|
45f3a6 |
gssproxy[28914]: (OID: { 1 2 840 113554 1 2 2 }) Unspecified GSS
|
|
|
45f3a6 |
failure. Minor code may provide more information, No credentials
|
|
|
45f3a6 |
cache found
|
|
|
45f3a6 |
|
|
|
45f3a6 |
Since these messages worry some admins, turn them off by default.
|
|
|
45f3a6 |
|
|
|
45f3a6 |
Signed-off-by: Robbie Harwood <rharwood@redhat.com>
|
|
|
45f3a6 |
(cherry picked from commit 116618e1523038691fcb481107ba15ffd42942ac)
|
|
|
45f3a6 |
(cherry picked from commit cc61409b7b20974332549dd028d889b87dbff98d)
|
|
|
45f3a6 |
(cherry picked from commit 07b32184ee337ec06a405724b4b88cad22829c6d)
|
|
|
45f3a6 |
[conflict: gssproxy.conf.5.xml over program being added]
|
|
|
45f3a6 |
---
|
|
|
45f3a6 |
proxy/man/gssproxy.8.xml | 8 ++++++++
|
|
|
45f3a6 |
proxy/man/gssproxy.conf.5.xml | 10 ++++++++++
|
|
|
45f3a6 |
proxy/src/gp_config.c | 6 ++++++
|
|
|
45f3a6 |
proxy/src/gp_log.c | 9 +++++++--
|
|
|
45f3a6 |
proxy/src/gp_log.h | 3 +++
|
|
|
45f3a6 |
proxy/src/gssproxy.c | 6 ++++++
|
|
|
45f3a6 |
6 files changed, 40 insertions(+), 2 deletions(-)
|
|
|
45f3a6 |
|
|
|
45f3a6 |
diff --git a/proxy/man/gssproxy.8.xml b/proxy/man/gssproxy.8.xml
|
|
|
45f3a6 |
index 21f7e6a..4019135 100644
|
|
|
45f3a6 |
--- a/proxy/man/gssproxy.8.xml
|
|
|
45f3a6 |
+++ b/proxy/man/gssproxy.8.xml
|
|
|
45f3a6 |
@@ -151,6 +151,14 @@
|
|
|
45f3a6 |
</listitem>
|
|
|
45f3a6 |
</varlistentry>
|
|
|
45f3a6 |
|
|
|
45f3a6 |
+ <varlistentry>
|
|
|
45f3a6 |
+ <term>
|
|
|
45f3a6 |
+ <option>--syslog-status</option>
|
|
|
45f3a6 |
+ </term>
|
|
|
45f3a6 |
+ <listitem>
|
|
|
45f3a6 |
+ <para>Enable additional logging to syslog.</para>
|
|
|
45f3a6 |
+ </listitem>
|
|
|
45f3a6 |
+ </varlistentry>
|
|
|
45f3a6 |
<varlistentry>
|
|
|
45f3a6 |
<term>
|
|
|
45f3a6 |
<option>--version</option>
|
|
|
45f3a6 |
diff --git a/proxy/man/gssproxy.conf.5.xml b/proxy/man/gssproxy.conf.5.xml
|
|
|
45f3a6 |
index 7874c6e..79f64e7 100644
|
|
|
45f3a6 |
--- a/proxy/man/gssproxy.conf.5.xml
|
|
|
45f3a6 |
+++ b/proxy/man/gssproxy.conf.5.xml
|
|
|
45f3a6 |
@@ -361,6 +361,16 @@
|
|
|
45f3a6 |
</listitem>
|
|
|
45f3a6 |
</varlistentry>
|
|
|
45f3a6 |
|
|
|
45f3a6 |
+ <varlistentry>
|
|
|
45f3a6 |
+ <term>syslog_status (boolean)</term>
|
|
|
45f3a6 |
+ <listitem>
|
|
|
45f3a6 |
+ <para>Enable per-call debugging output to the syslog.
|
|
|
45f3a6 |
+ This may be useful for investigating problems in
|
|
|
45f3a6 |
+ applications using gssproxy.</para>
|
|
|
45f3a6 |
+ <para>Default: syslog_status = false</para>
|
|
|
45f3a6 |
+ </listitem>
|
|
|
45f3a6 |
+ </varlistentry>
|
|
|
45f3a6 |
+
|
|
|
45f3a6 |
<varlistentry>
|
|
|
45f3a6 |
<term>trusted (boolean)</term>
|
|
|
45f3a6 |
<listitem><para>Defines whether this service is considered trusted. Use with caution, this enables impersonation.</para>
|
|
|
45f3a6 |
diff --git a/proxy/src/gp_config.c b/proxy/src/gp_config.c
|
|
|
45f3a6 |
index cd057a0..57dcfc6 100644
|
|
|
45f3a6 |
--- a/proxy/src/gp_config.c
|
|
|
45f3a6 |
+++ b/proxy/src/gp_config.c
|
|
|
45f3a6 |
@@ -586,6 +586,12 @@ int load_config(struct gp_config *cfg)
|
|
|
45f3a6 |
goto done;
|
|
|
45f3a6 |
}
|
|
|
45f3a6 |
|
|
|
45f3a6 |
+ ret = gp_config_get_string(ctx, "gssproxy", "syslog_status", &tmpstr);
|
|
|
45f3a6 |
+ if (ret == 0)
|
|
|
45f3a6 |
+ gp_syslog_status = gp_boolean_is_true(tmpstr);
|
|
|
45f3a6 |
+ else if (ret != ENOENT)
|
|
|
45f3a6 |
+ goto done;
|
|
|
45f3a6 |
+
|
|
|
45f3a6 |
ret = gp_config_get_string(ctx, "gssproxy", "run_as_user", &tmpstr);
|
|
|
45f3a6 |
if (ret == 0) {
|
|
|
45f3a6 |
cfg->proxy_user = strdup(tmpstr);
|
|
|
45f3a6 |
diff --git a/proxy/src/gp_log.c b/proxy/src/gp_log.c
|
|
|
45f3a6 |
index b6eb161..e67e8d3 100644
|
|
|
45f3a6 |
--- a/proxy/src/gp_log.c
|
|
|
45f3a6 |
+++ b/proxy/src/gp_log.c
|
|
|
45f3a6 |
@@ -5,6 +5,9 @@
|
|
|
45f3a6 |
#include <stdio.h>
|
|
|
45f3a6 |
#include <stdarg.h>
|
|
|
45f3a6 |
|
|
|
45f3a6 |
+/* global logging switch */
|
|
|
45f3a6 |
+bool gp_syslog_status = false;
|
|
|
45f3a6 |
+
|
|
|
45f3a6 |
void gp_logging_init(void)
|
|
|
45f3a6 |
{
|
|
|
45f3a6 |
openlog("gssproxy",
|
|
|
45f3a6 |
@@ -55,7 +58,9 @@ void gp_log_status(gss_OID mech, uint32_t maj, uint32_t min)
|
|
|
45f3a6 |
{
|
|
|
45f3a6 |
char buf[MAX_LOG_LINE];
|
|
|
45f3a6 |
|
|
|
45f3a6 |
- gp_fmt_status(mech, maj, min, buf, MAX_LOG_LINE);
|
|
|
45f3a6 |
+ if (!gp_syslog_status)
|
|
|
45f3a6 |
+ return;
|
|
|
45f3a6 |
|
|
|
45f3a6 |
- GPERROR("%s\n", buf);
|
|
|
45f3a6 |
+ gp_fmt_status(mech, maj, min, buf, MAX_LOG_LINE);
|
|
|
45f3a6 |
+ syslog(LOG_DEBUG, "%s\n", buf);
|
|
|
45f3a6 |
}
|
|
|
45f3a6 |
diff --git a/proxy/src/gp_log.h b/proxy/src/gp_log.h
|
|
|
45f3a6 |
index fc8cbdb..31ad648 100644
|
|
|
45f3a6 |
--- a/proxy/src/gp_log.h
|
|
|
45f3a6 |
+++ b/proxy/src/gp_log.h
|
|
|
45f3a6 |
@@ -3,9 +3,12 @@
|
|
|
45f3a6 |
#ifndef _GP_LOG_H_
|
|
|
45f3a6 |
#define _GP_LOG_H_
|
|
|
45f3a6 |
|
|
|
45f3a6 |
+#include <stdbool.h>
|
|
|
45f3a6 |
#include <syslog.h>
|
|
|
45f3a6 |
#include <gssapi/gssapi.h>
|
|
|
45f3a6 |
|
|
|
45f3a6 |
+extern bool gp_syslog_status;
|
|
|
45f3a6 |
+
|
|
|
45f3a6 |
#define MAX_LOG_LINE 1024
|
|
|
45f3a6 |
#define GPERROR(...) syslog(LOG_ERR, __VA_ARGS__);
|
|
|
45f3a6 |
#define GPAUDIT(...) syslog(LOG_INFO, __VA_ARGS__);
|
|
|
45f3a6 |
diff --git a/proxy/src/gssproxy.c b/proxy/src/gssproxy.c
|
|
|
45f3a6 |
index 3221615..5112ebf 100644
|
|
|
45f3a6 |
--- a/proxy/src/gssproxy.c
|
|
|
45f3a6 |
+++ b/proxy/src/gssproxy.c
|
|
|
45f3a6 |
@@ -157,6 +157,7 @@ int main(int argc, const char *argv[])
|
|
|
45f3a6 |
int opt_version = 0;
|
|
|
45f3a6 |
int opt_debug = 0;
|
|
|
45f3a6 |
int opt_debug_level = 0;
|
|
|
45f3a6 |
+ int opt_syslog_status = 0;
|
|
|
45f3a6 |
verto_ctx *vctx;
|
|
|
45f3a6 |
verto_ev *ev;
|
|
|
45f3a6 |
int wait_fd;
|
|
|
45f3a6 |
@@ -182,6 +183,8 @@ int main(int argc, const char *argv[])
|
|
|
45f3a6 |
_("Enable debugging"), NULL}, \
|
|
|
45f3a6 |
{"debug-level", '\0', POPT_ARG_INT, &opt_debug_level, 0, \
|
|
|
45f3a6 |
_("Set debugging level"), NULL}, \
|
|
|
45f3a6 |
+ {"syslog-status", '\0', POPT_ARG_NONE, &opt_syslog_status, 0, \
|
|
|
45f3a6 |
+ _("Enable GSSAPI status logging to syslog"), NULL}, \
|
|
|
45f3a6 |
{"version", '\0', POPT_ARG_NONE, &opt_version, 0, \
|
|
|
45f3a6 |
_("Print version number and exit"), NULL }, \
|
|
|
45f3a6 |
POPT_TABLEEND
|
|
|
45f3a6 |
@@ -211,6 +214,9 @@ int main(int argc, const char *argv[])
|
|
|
45f3a6 |
gp_debug_toggle(opt_debug_level);
|
|
|
45f3a6 |
}
|
|
|
45f3a6 |
|
|
|
45f3a6 |
+ if (opt_syslog_status)
|
|
|
45f3a6 |
+ gp_syslog_status = true;
|
|
|
45f3a6 |
+
|
|
|
45f3a6 |
if (opt_daemon && opt_interactive) {
|
|
|
45f3a6 |
fprintf(stderr, "Option -i|--interactive is not allowed together with -D|--daemon\n");
|
|
|
45f3a6 |
poptPrintUsage(pc, stderr, 0);
|