You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@tomcat.apache.org by mt...@apache.org on 2005/05/07 10:15:47 UTC
cvs commit: jakarta-tomcat-connectors/jk/xdocs/config apache.xml
mturk 2005/05/07 01:15:47
Modified: jk/native/apache-1.3 mod_jk.c
jk/native/apache-2.0 mod_jk.c
jk/native/common jk_global.h jk_version.h
jk/xdocs changelog.xml
jk/xdocs/config apache.xml
Log:
Added ForwardLocalAddress JkOptions flag. This can be used to limit
the access to Tomcat using remote address valve with AJP protocol.
Revision Changes Path
1.80 +28 -3 jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c
Index: mod_jk.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-1.3/mod_jk.c,v
retrieving revision 1.79
retrieving revision 1.80
diff -u -r1.79 -r1.80
--- mod_jk.c 30 Apr 2005 06:02:49 -0000 1.79
+++ mod_jk.c 7 May 2005 08:15:47 -0000 1.80
@@ -65,6 +65,7 @@
#define JK_DURATION ("jakarta.worker.duration")
#define JK_MAGIC_TYPE ("application/x-jakarta-servlet")
#define NULL_FOR_EMPTY(x) ((x && !strlen(x)) ? NULL : x)
+#define STRNULL_FOR_NULL(x) ((x) ? (x) : "(null)")
/*
* If you are not using SSL, comment out the following line. It will make
@@ -447,8 +448,11 @@
(char *)ap_get_remote_host(r->connection, r->per_dir_config,
REMOTE_HOST);
s->remote_host = NULL_FOR_EMPTY(s->remote_host);
-
- s->remote_addr = NULL_FOR_EMPTY(r->connection->remote_ip);
+
+ if (conf->options & JK_OPT_FWDLOCAL)
+ s->remote_addr = NULL_FOR_EMPTY(r->connection->local_ip);
+ else
+ s->remote_addr = NULL_FOR_EMPTY(r->connection->remote_ip);
/* get server name */
/* s->server_name = (char *)(r->hostname ? r->hostname : r->server->server_hostname); */
@@ -468,6 +472,24 @@
s->no_more_chunks = 0;
s->query_string = r->args;
+ /* Dump all connection param so we can trace what's going to
+ * the remote tomcat
+ */
+ if (JK_IS_DEBUG_LEVEL(conf->log)) {
+ jk_log(conf->log, JK_LOG_DEBUG,
+ "Service protocol=%s method=%s host=%s addrr=%s name=%s port=%d auth=%s user=%s laddr=%s raddr=%s",
+ STRNULL_FOR_NULL(s->protocol),
+ STRNULL_FOR_NULL(s->method),
+ STRNULL_FOR_NULL(s->remote_host),
+ STRNULL_FOR_NULL(s->remote_addr),
+ STRNULL_FOR_NULL(s->server_name),
+ s->server_port,
+ STRNULL_FOR_NULL(s->auth_type),
+ STRNULL_FOR_NULL(s->remote_user),
+ STRNULL_FOR_NULL(r->connection->local_ip),
+ STRNULL_FOR_NULL(r->connection->remote_ip));
+ }
+
/*
* The 2.2 servlet spec errata says the uri from
* HttpServletRequest.getRequestURI() should remain encoded.
@@ -1478,6 +1500,9 @@
else if (!strcasecmp(w, "ForwardDirectories")) {
opt = JK_OPT_FWDDIRS;
}
+ else if (!strcasecmp(w, "ForwardLocalAddress")) {
+ opt = JK_OPT_FWDLOCAL;
+ }
else
return ap_pstrcat(cmd->pool, "JkOptions: Illegal option '", w,
"'", NULL);
1.143 +27 -17 jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c
Index: mod_jk.c
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/apache-2.0/mod_jk.c,v
retrieving revision 1.142
retrieving revision 1.143
diff -u -r1.142 -r1.143
--- mod_jk.c 30 Apr 2005 06:02:19 -0000 1.142
+++ mod_jk.c 7 May 2005 08:15:47 -0000 1.143
@@ -99,7 +99,7 @@
#define JK_DURATION ("jakarta.worker.duration")
#define JK_MAGIC_TYPE ("application/x-jakarta-servlet")
#define NULL_FOR_EMPTY(x) ((x && !strlen(x)) ? NULL : x)
-
+#define STRNULL_FOR_NULL(x) ((x) ? (x) : "(null)")
/*
* If you are not using SSL, comment out the following line. It will make
* apache run faster.
@@ -474,21 +474,10 @@
r->per_dir_config,
REMOTE_HOST, NULL);
s->remote_host = NULL_FOR_EMPTY(s->remote_host);
- s->remote_addr = NULL_FOR_EMPTY(r->connection->remote_ip);
-
- /* Dump all connection param so we can trace what's going to
- * the remote tomcat
- */
- if (JK_IS_DEBUG_LEVEL(conf->log))
- jk_log(conf->log, JK_LOG_DEBUG,
- "agsp=%u agsn=%s hostn=%s shostn=%s cbsport=%d sport=%d claport=%d",
- ap_get_server_port(r),
- ap_get_server_name(r) != NULL ? ap_get_server_name(r) : "",
- r->hostname != NULL ? r->hostname : "",
- r->server->server_hostname !=
- NULL ? r->server->server_hostname : "",
- r->connection->base_server->port, r->server->port,
- r->connection->local_addr->port);
+ if (conf->options & JK_OPT_FWDLOCAL)
+ s->remote_addr = NULL_FOR_EMPTY(r->connection->local_ip);
+ else
+ s->remote_addr = NULL_FOR_EMPTY(r->connection->remote_ip);
/* get server name */
s->server_name = (char *)ap_get_server_name(r);
@@ -513,6 +502,24 @@
s->query_string = r->args;
#endif
+ /* Dump all connection param so we can trace what's going to
+ * the remote tomcat
+ */
+ if (JK_IS_DEBUG_LEVEL(conf->log)) {
+ jk_log(conf->log, JK_LOG_DEBUG,
+ "Service protocol=%s method=%s host=%s addrr=%s name=%s port=%d auth=%s user=%s laddr=%s raddr=%s",
+ STRNULL_FOR_NULL(s->protocol),
+ STRNULL_FOR_NULL(s->method),
+ STRNULL_FOR_NULL(s->remote_host),
+ STRNULL_FOR_NULL(s->remote_addr),
+ STRNULL_FOR_NULL(s->server_name),
+ s->server_port,
+ STRNULL_FOR_NULL(s->auth_type),
+ STRNULL_FOR_NULL(s->remote_user),
+ STRNULL_FOR_NULL(r->connection->local_ip),
+ STRNULL_FOR_NULL(r->connection->remote_ip));
+ }
+
/*
* The 2.2 servlet spec errata says the uri from
* HttpServletRequest.getRequestURI() should remain encoded.
@@ -1515,6 +1522,9 @@
else if (!strcasecmp(w, "ForwardDirectories")) {
opt = JK_OPT_FWDDIRS;
}
+ else if (!strcasecmp(w, "ForwardLocalAddress")) {
+ opt = JK_OPT_FWDLOCAL;
+ }
else
return apr_pstrcat(cmd->pool, "JkOptions: Illegal option '", w,
"'", NULL);
1.48 +3 -1 jakarta-tomcat-connectors/jk/native/common/jk_global.h
Index: jk_global.h
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_global.h,v
retrieving revision 1.47
retrieving revision 1.48
diff -u -r1.47 -r1.48
--- jk_global.h 21 Apr 2005 11:18:44 -0000 1.47
+++ jk_global.h 7 May 2005 08:15:47 -0000 1.48
@@ -207,6 +207,8 @@
#define JK_OPT_FWDKEYSIZE 0x0004
#define JK_OPT_FWDDIRS 0x0008
+/* Forward local instead remote address */
+#define JK_OPT_FWDLOCAL 0x0010
/* Check for EBCDIC systems */
1.40 +2 -2 jakarta-tomcat-connectors/jk/native/common/jk_version.h
Index: jk_version.h
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/native/common/jk_version.h,v
retrieving revision 1.39
retrieving revision 1.40
diff -u -r1.39 -r1.40
--- jk_version.h 28 Apr 2005 18:09:28 -0000 1.39
+++ jk_version.h 7 May 2005 08:15:47 -0000 1.40
@@ -32,7 +32,7 @@
#define JK_VERBETA 0
#define JK_BETASTRING "0"
/* set JK_VERISRELEASE to 1 when release (do not forget to commit!) */
-#define JK_VERISRELEASE 0
+#define JK_VERISRELEASE 1
#define JK_VERRC 0
#define JK_RCSTRING "0"
1.29 +4 -0 jakarta-tomcat-connectors/jk/xdocs/changelog.xml
Index: changelog.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/xdocs/changelog.xml,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -r1.28 -r1.29
--- changelog.xml 5 May 2005 15:59:10 -0000 1.28
+++ changelog.xml 7 May 2005 08:15:47 -0000 1.29
@@ -25,6 +25,10 @@
<br />
<subsection name="Native">
<changelog>
+ <update>
+ Added ForwardLocallAddres JkOptions flag for passing local instead remote
+ address. Useful for remote addr valve. (mturk)
+ </update>
<fix>Fix that worker not used, when stopped flag is true. (pero)
</fix>
<update>
1.12 +14 -0 jakarta-tomcat-connectors/jk/xdocs/config/apache.xml
Index: apache.xml
===================================================================
RCS file: /home/cvs/jakarta-tomcat-connectors/jk/xdocs/config/apache.xml,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -r1.11 -r1.12
--- apache.xml 23 Feb 2005 08:10:20 -0000 1.11
+++ apache.xml 7 May 2005 08:15:47 -0000 1.12
@@ -310,6 +310,20 @@
</p>
<p>
+JkOptions <b>ForwardLocalAddress</b>, you told mod_jk to send the local address,
+of the Apache web server instead remote client address. This can be used by
+Tomcat remote address valve for allowing connections only from registered Apache
+web servers.
+
+<source>
+ JkOptions +ForwardLocalAddress
+</source>
+
+<br/>
+<br/>
+</p>
+
+<p>
The directive <b>JkEnvVar</b> allow you to forward an environment vars from Apache server to Tomcat engine.
<source>
---------------------------------------------------------------------
To unsubscribe, e-mail: tomcat-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: tomcat-dev-help@jakarta.apache.org