From 1de7c2e7d4f3557bb45b9526016b766c7119c6ad Mon Sep 17 00:00:00 2001 From: Rob Crittenden Date: Thu, 20 Aug 2020 16:52:13 -0400 Subject: [PATCH 05/11] Require jansson for IPA RPC calls, make xmlrpc optional xmlrpc is now only used for certmaster IPA will only make JSON RPC calls to retrieve certificates --- configure.ac | 59 ++++++++++++++++++++++++++++++------------------- src/Makefile.am | 33 ++++++++++++++++++++------- 2 files changed, 61 insertions(+), 31 deletions(-) diff --git a/configure.ac b/configure.ac index abcd6d84..14991244 100644 --- a/configure.ac +++ b/configure.ac @@ -278,29 +278,42 @@ if ! ${configure_dist_target_only:-false} ; then CPPFLAGS="$savedCPPFLAGS" LDFLAGS="$savedLDFLAGS" - dnl PKG_CHECK_MODULES(XMLRPC,xmlrpc_client) # Not provided in upstream versions. - savedCFLAGS="$CFLAGS" - CFLAGS= - AC_ARG_VAR(XMLRPC_C_CONFIG,[the full path of the xmlrpc-c-config command]) - AC_PATH_PROG(XMLRPC_C_CONFIG,[xmlrpc-c-config],,[$PATH$PATH_SEPARATOR/usr/xmlrpc/bin$PATH_SEPARATOR/usr/xmlrpc-c/bin]) - if test -z "$XMLRPC_C_CONFIG" ; then - AC_MSG_ERROR(xmlrpc-c-config not found) - fi - AC_MSG_CHECKING(for XMLRPC CFLAGS) - XMLRPC_CFLAGS="`${XMLRPC_C_CONFIG} client --cflags` `${XMLRPC_C_CONFIG} --cflags`" - AC_MSG_RESULT([$XMLRPC_CFLAGS]) - AC_SUBST(XMLRPC_CFLAGS) - AC_MSG_CHECKING(for XMLRPC LIBS) - XMLRPC_LIBS="`${XMLRPC_C_CONFIG} client --libs` `${XMLRPC_C_CONFIG} --libs`" - AC_MSG_RESULT([$XMLRPC_LIBS]) - AC_SUBST(XMLRPC_LIBS) - CFLAGS="$CFLAGS $XMLRPC_CFLAGS" - AC_CHECK_MEMBERS(struct xmlrpc_curl_xportparms.gssapi_delegation,,, - [ - #include - #include - ]) - CFLAGS="$savedCFLAGS" + PKG_CHECK_MODULES(JANSSON,jansson) + have_jansson=true + + AC_ARG_WITH([xmlrpc], + [AC_HELP_STRING([--with-xmlrpc], [Enable XML-RPC support])], + [with_xmlrpc=${with_xmlrpc}], + [with_xmlrpc=no]) + AS_IF([test x"$with_xmlrpc" = xyes], [AC_DEFINE([WITH_XMLRPC], [1], + [include XMLRPC support])]) + AM_CONDITIONAL(WITH_XMLRPC,test x"$with_xmlrpc" = xyes) + + AS_IF([test x"$with_xmlrpc" = xyes], [ + dnl PKG_CHECK_MODULES(XMLRPC,xmlrpc_client) # Not provided in upstream versions. + savedCFLAGS="$CFLAGS" + CFLAGS= + AC_ARG_VAR(XMLRPC_C_CONFIG,[the full path of the xmlrpc-c-config command]) + AC_PATH_PROG(XMLRPC_C_CONFIG,[xmlrpc-c-config],,[$PATH$PATH_SEPARATOR/usr/xmlrpc/bin$PATH_SEPARATOR/usr/xmlrpc-c/bin]) + if test -z "$XMLRPC_C_CONFIG" ; then + AC_MSG_ERROR(xmlrpc-c-config not found) + fi + AC_MSG_CHECKING(for XMLRPC CFLAGS) + XMLRPC_CFLAGS="`${XMLRPC_C_CONFIG} client --cflags` `${XMLRPC_C_CONFIG} --cflags`" + AC_MSG_RESULT([$XMLRPC_CFLAGS]) + AC_SUBST(XMLRPC_CFLAGS) + AC_MSG_CHECKING(for XMLRPC LIBS) + XMLRPC_LIBS="`${XMLRPC_C_CONFIG} client --libs` `${XMLRPC_C_CONFIG} --libs`" + AC_MSG_RESULT([$XMLRPC_LIBS]) + AC_SUBST(XMLRPC_LIBS) + CFLAGS="$CFLAGS $XMLRPC_CFLAGS" + AC_CHECK_MEMBERS(struct xmlrpc_curl_xportparms.gssapi_delegation,,, + [ + #include + #include + ]) + CFLAGS="$savedCFLAGS" + ]) savedCFLAGS="$CFLAGS" savedCPPFLAGS="$CPPFLAGS" diff --git a/src/Makefile.am b/src/Makefile.am index 5343dbc4..13bd87d9 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -11,15 +11,17 @@ LDFLAGS += -Wl,-z,relro,-z,now endif man_MANS = certmonger.8 getcert.1 getcert-request.1 getcert-list.1 \ getcert-list-cas.1 getcert-start-tracking.1 getcert-stop-tracking.1 \ - selfsign-getcert.1 ipa-getcert.1 certmaster-getcert.1 \ + selfsign-getcert.1 ipa-getcert.1 \ getcert-resubmit.1 certmonger-ipa-submit.8 \ - certmonger-certmaster-submit.8 \ certmonger-dogtag-ipa-renew-agent-submit.8 certmonger.conf.5 \ getcert-refresh.1 getcert-refresh-ca.1 local-getcert.1 \ certmonger-local-submit.8 getcert-status.1 \ certmonger-dogtag-submit.8 certmonger-scep-submit.8 \ getcert-add-ca.1 getcert-add-scep-ca.1 getcert-modify-ca.1 \ getcert-remove-ca.1 getcert-rekey.1 +if WITH_XMLRPC +man_MANS += certmaster-getcert.1 certmonger-certmaster-submit.8 +endif pkgsysconfdir = $(sysconfdir)/$(PACKAGE) pkgsysconf_DATA = certmonger.conf EXTRA_PROGRAMS = @@ -105,8 +107,6 @@ libcm_a_SOURCES = \ submit-sn.c \ submit-u.c \ submit-u.h \ - submit-x.c \ - submit-x.h \ subproc.c \ subproc.h \ tdbus.c \ @@ -121,6 +121,11 @@ libcm_a_SOURCES = \ util-m.h \ util-n.c \ util-n.h +if WITH_XMLRPC +libcm_a_SOURCES += \ + submit-x.c \ + submit-x.h +endif libcm_o_a_SOURCES = if HAVE_OPENSSL libcm_o_a_SOURCES += \ @@ -158,11 +163,13 @@ ipa_getcert_SOURCES = ipa-getcert.c tm.c tm.h ipa_getcert_LDADD = $(getcert_LDADD) endif if WITH_IPA +if WITH_XMLRPC bin_PROGRAMS += certmaster-getcert certmaster_getcert_CFLAGS = $(getcert_CFLAGS) certmaster_getcert_SOURCES = certmaster-getcert.c tm.c tm.h certmaster_getcert_LDADD = $(getcert_LDADD) endif +endif bin_PROGRAMS += selfsign-getcert selfsign_getcert_CFLAGS = $(getcert_CFLAGS) selfsign_getcert_SOURCES = selfsign-getcert.c tm.c tm.h @@ -181,21 +188,28 @@ certmonger_session_SOURCES = main.c env-session.c tm.c tm.h certmonger_session_LDADD = libcm.a \ $(OPENSSL_LIBS) $(CERTMONGER_LIBS) $(KRB5_LIBS) $(IDN_LIBS) \ $(GMP_LIBS) $(UUID_LIBS) $(POPT_LIBS) $(LTLIBICONV) $(LDAP_LIBS) -noinst_PROGRAMS = tdbusm-check serial-check nl-check submit-x toklist +noinst_PROGRAMS = tdbusm-check serial-check nl-check toklist +if WITH_XMLRPC +noinst_PROGRAMS += submit-x +endif tdbusm_check_SOURCES = tdbusm-check.c tm.c tm.h tdbusm_check_LDADD = libcm.a $(CERTMONGER_LIBS) $(POPT_LIBS) $(LDAP_LIBS) serial_check_LDADD = libcm.a $(CERTMONGER_LIBS) $(LTLIBICONV) $(LDAP_LIBS) nl_check_LDADD = libcm.a $(CERTMONGER_LIBS) $(LDAP_LIBS) +if WITH_XMLRPC submit_x_CFLAGS = $(AM_CFLAGS) $(NSS_CFLAGS) -DCM_SUBMIT_X_MAIN submit_x_SOURCES = submit-x.c submit-x.h submit-u.c submit-u.h log.c log.h \ tm.c tm.h submit_x_LDADD = $(XMLRPC_LIBS) $(KRB5_LIBS) $(TALLOC_LIBS) \ $(GMP_LIBS) $(UUID_LIBS) $(POPT_LIBS) +endif toklist_CFLAGS = $(AM_CFLAGS) $(NSS_CFLAGS) toklist_LDADD = $(NSS_LIBS) $(POPT_LIBS) if WITH_CERTMASTER +if WITH_XMLRPC pkglibexec_PROGRAMS += certmaster-submit endif +endif if WITH_IPA pkglibexec_PROGRAMS += ipa-submit endif @@ -205,19 +219,22 @@ pkglibexec_PROGRAMS += local-submit pkglibexec_PROGRAMS += scep-submit endif noinst_PROGRAMS += submit-h submit-d -ipa_submit_CFLAGS = $(AM_CFLAGS) $(NSS_CFLAGS) +ipa_submit_CFLAGS = $(AM_CFLAGS) $(NSS_CFLAGS) $(CURL_CFLAGS) $(JANSSON_CFLAGS) ipa_submit_SOURCES = ipa.c srvloc.c srvloc.h store.h store-gen.c \ - submit-x.c submit-x.h submit-u.c submit-u.h \ + submit-h.c submit-h.h submit-u.c submit-u.h \ submit-e.h util.c util.h log.c log.h tm.c tm.h ipa_submit_LDADD = $(XMLRPC_LIBS) $(LDAP_LIBS) $(KRB5_LIBS) $(TALLOC_LIBS) \ $(GMP_LIBS) $(IDN_LIBS) $(OPENSSL_LIBS) $(UUID_LIBS) \ - $(RESOLV_LIBS) $(LTLIBICONV) $(POPT_LIBS) + $(RESOLV_LIBS) $(LTLIBICONV) $(POPT_LIBS) $(CURL_LIBS) \ + $(JANSSON_LIBS) +if WITH_XMLRPC certmaster_submit_CFLAGS = $(AM_CFLAGS) $(NSS_CFLAGS) certmaster_submit_SOURCES = certmaster.c submit-x.c submit-x.h \ submit-e.h submit-u.c submit-u.h util.c util.h log.c log.h \ tm.c tm.h certmaster_submit_LDADD = $(XMLRPC_LIBS) $(KRB5_LIBS) $(TALLOC_LIBS) \ $(GMP_LIBS) $(UUID_LIBS) $(LTLIBICONV) $(POPT_LIBS) +endif dogtag_ipa_renew_agent_submit_CFLAGS = $(AM_CFLAGS) $(XML_CFLAGS) \ $(NSS_CFLAGS) $(CURL_CFLAGS) \ -DDOGTAG_IPA_RENEW_AGENT=1 -- 2.25.4