[OpenSRF-GIT] OpenSRF branch master updated. 0c40bc6c40ff55b1ddf8bfe9b5e6ebaa87be5113
Evergreen Git
git at git.evergreen-ils.org
Sat Jan 19 13:48:09 EST 2013
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "OpenSRF".
The branch, master has been updated
via 0c40bc6c40ff55b1ddf8bfe9b5e6ebaa87be5113 (commit)
from d390d1ae315bd9c9326c9ef76ebf74f57ddaa573 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 0c40bc6c40ff55b1ddf8bfe9b5e6ebaa87be5113
Author: Dan Scott <dscott at laurentian.ca>
Date: Wed Jan 16 21:59:22 2013 -0500
Support Apache 2.4 client IP address lookups
The Apache 2.4 API replaces the conn_rec->remote_ip member with
conn_rec->client_ip or conn_rec->useragent_ip (per
http://httpd.apache.org/docs/2.4/developer/new_api_2_4.html). client_ip
seems to be the best choice for us, to avoid everything being logged
from the load balancer or proxy instead of the client's address.
This code detects the version of Apache and uses client_ip if it is 2.4
or greater.
Signed-off-by: Dan Scott <dscott at laurentian.ca>
Signed-off-by: Bill Erickson <berick at esilibrary.com>
diff --git a/configure.ac b/configure.ac
index 3bca402..d23354d 100644
--- a/configure.ac
+++ b/configure.ac
@@ -203,6 +203,29 @@ if ! test -d "$APR_HEADERS"; then
fi
AC_SUBST([APR_HEADERS])
+# The following Apache version detection code is adapted from
+# http://www.gnu.org/software/autoconf-archive/ax_prog_apache.html
+# licensed under version 2 of the GNU General Public License, or
+# (at your discretion) any later version.
+#
+# Copyright (c) 2008 Loic Dachary <loic at senga.org>
+#
+# Collect apache version number. If for nothing else, this
+# guarantees that httpd is a working apache executable.
+#
+changequote(<<, >>)dnl
+APACHE=`$APXS2 -q progname`
+APACHE_READABLE_VERSION=`$APACHE -v | grep 'Server version' | sed -e 's;.*Apache/\([0-9\.][0-9\.]*\).*;\1;'`
+changequote([, ])dnl
+APACHE_VERSION=`echo $APACHE_READABLE_VERSION | sed -e 's/\.//g'`
+if test -z "$APACHE_VERSION" ; then
+ AC_MSG_ERROR("could not determine apache version number");
+fi
+APACHE_MAJOR=`expr $APACHE_VERSION : '\(..\)'`
+APACHE_MINOR=`expr $APACHE_VERSION : '..\(.*\)'`
+AM_CONDITIONAL(APACHE_MIN_24, test "$APACHE_MAJOR" -ge "24")
+AC_SUBST([APACHE_MIN_24])
+
AC_ARG_WITH([libxml],
[ --with-libxml=path location of the libxml2 headers (default is /usr/include/libxml2/))],
[LIBXML2_HEADERS=${withval}],
@@ -371,6 +394,7 @@ fi
AC_MSG_RESULT(APXS2 location: ${APXS2})
AC_MSG_RESULT(Apache headers location: ${APACHE2_HEADERS})
AC_MSG_RESULT(APR headers location: ${APR_HEADERS})
+ AC_MSG_RESULT(Apache version: ${APACHE_READABLE_VERSION})
AC_MSG_RESULT(libxml2 headers location: ${LIBXML2_HEADERS})
AC_MSG_RESULT([----------------------------------------------------------------------])
diff --git a/src/gateway/Makefile.am b/src/gateway/Makefile.am
index 3dafbdc..425a824 100644
--- a/src/gateway/Makefile.am
+++ b/src/gateway/Makefile.am
@@ -10,11 +10,14 @@
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
-
+#
+if APACHE_MIN_24
+HAVE_APACHE_MIN_24 = -DAPACHE_MIN_24
+endif
EXTRA_DIST = @srcdir@/apachetools.c @srcdir@/apachetools.h @srcdir@/osrf_json_gateway.c @srcdir@/osrf_http_translator.c
-AM_CFLAGS = -D_LARGEFILE64_SOURCE -Wall -I at abs_top_srcdir@/include/ -I$(LIBXML2_HEADERS) -I$(APACHE2_HEADERS) -I$(APR_HEADERS)
+AM_CFLAGS = -D_LARGEFILE64_SOURCE $(HAVE_APACHE_MIN_24) -Wall -I at abs_top_srcdir@/include/ -I$(LIBXML2_HEADERS) -I$(APACHE2_HEADERS) -I$(APR_HEADERS)
AM_LDFLAGS = -L$(LIBDIR) -L at top_builddir@/src/libopensrf
AP_LIBEXECDIR = `$(APXS2) -q LIBEXECDIR`
diff --git a/src/gateway/osrf_http_translator.c b/src/gateway/osrf_http_translator.c
index f6d492b..2fed04a 100644
--- a/src/gateway/osrf_http_translator.c
+++ b/src/gateway/osrf_http_translator.c
@@ -117,7 +117,11 @@ static osrfHttpTranslator* osrfNewHttpTranslator(request_rec* apreq) {
trans->disconnectOnly = 0;
trans->connecting = 0;
trans->disconnecting = 0;
+#ifdef APACHE_MIN_24
+ trans->remoteHost = apreq->connection->client_ip;
+#else
trans->remoteHost = apreq->connection->remote_ip;
+#endif
trans->messages = NULL;
/* load the message body */
diff --git a/src/gateway/osrf_json_gateway.c b/src/gateway/osrf_json_gateway.c
index ecc02a2..7d5f3f7 100644
--- a/src/gateway/osrf_json_gateway.c
+++ b/src/gateway/osrf_json_gateway.c
@@ -288,8 +288,13 @@ static int osrf_json_gateway_method_handler (request_rec *r) {
const char* authtoken = apr_table_get(r->headers_in, "X-OILS-Authtoken");
if(!authtoken) authtoken = "";
growing_buffer* act = buffer_init(128);
+#ifdef APACHE_MIN_24
+ buffer_fadd(act, "[%s] [%s] [%s] %s %s", r->connection->client_ip,
+ authtoken, osrf_locale, service, method );
+#else
buffer_fadd(act, "[%s] [%s] [%s] %s %s", r->connection->remote_ip,
authtoken, osrf_locale, service, method );
+#endif
const char* str; int i = 0;
int redact_params = 0;
-----------------------------------------------------------------------
Summary of changes:
configure.ac | 24 ++++++++++++++++++++++++
src/gateway/Makefile.am | 7 +++++--
src/gateway/osrf_http_translator.c | 4 ++++
src/gateway/osrf_json_gateway.c | 5 +++++
4 files changed, 38 insertions(+), 2 deletions(-)
hooks/post-receive
--
OpenSRF
More information about the opensrf-commits
mailing list