pacho       15/05/09 11:55:19

  Added:                010_multiple_proxies.patch 003_ipv6.patch
                        011_apache2.4.patch
                        012_Add-missing-header-for-inet_addr.patch
  Log:
  Apply debian patches also adding support for apache 2.4 (#532864)
  
  (Portage version: 2.2.18/cvs/Linux x86_64, signed Manifest commit with key 
A188FBD4)

Revision  Changes    Path
1.1                  www-apache/mod_rpaf/files/010_multiple_proxies.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/www-apache/mod_rpaf/files/010_multiple_proxies.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/www-apache/mod_rpaf/files/010_multiple_proxies.patch?rev=1.1&content-type=text/plain

Index: 010_multiple_proxies.patch
===================================================================
Description: Use the last value from the X-Forwarded-For header, which
 is not in RPAFproxy_ips as the client IP, falling back to the first one
 if they are all known proxies.
Author: Dagfinn Ilmari Mannsåker <[email protected]>

---
 mod_rpaf-2.0.c |   12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

--- a/mod_rpaf-2.0.c
+++ b/mod_rpaf-2.0.c
@@ -154,6 +154,16 @@
     return APR_SUCCESS;
 }
 
+static char* last_not_in_array(apr_array_header_t *forwarded_for,
+                               apr_array_header_t *proxy_ips) {
+    int i;
+    for (i = (forwarded_for->nelts)-1; i > 0; i--) {
+       if (!is_in_array(((char **)forwarded_for->elts)[i], proxy_ips))
+           break;
+    }
+    return ((char **)forwarded_for->elts)[i];
+}
+
 static int change_remote_ip(request_rec *r) {
     const char *fwdvalue;
     char *val;
@@ -185,7 +195,7 @@
             rcr->old_ip = apr_pstrdup(r->connection->pool, 
r->connection->remote_ip);
             rcr->r = r;
             apr_pool_cleanup_register(r->pool, (void *)rcr, rpaf_cleanup, 
apr_pool_cleanup_null);
-            r->connection->remote_ip = apr_pstrdup(r->connection->pool, ((char 
**)arr->elts)[((arr->nelts)-1)]);
+            r->connection->remote_ip = apr_pstrdup(r->connection->pool, 
last_not_in_array(arr, cfg->proxy_ips));
             r->connection->remote_addr->sa.sin.sin_addr.s_addr = 
apr_inet_addr(r->connection->remote_ip);
             apr_sockaddr_t *tmpsa;
             int ret = apr_sockaddr_info_get(&tmpsa, r->connection->remote_ip, 
APR_UNSPEC, r->connection->remote_addr->port, 0, 
r->connection->remote_addr->pool);



1.1                  www-apache/mod_rpaf/files/003_ipv6.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/www-apache/mod_rpaf/files/003_ipv6.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/www-apache/mod_rpaf/files/003_ipv6.patch?rev=1.1&content-type=text/plain

Index: 003_ipv6.patch
===================================================================
Description: ipv6 fixes
Author: Piotr Roszatycki <[email protected]>
Reviewed-by: Sergey B Kirpichev <[email protected]>
Bug-Debian: http://bugs.debian.org/726529

---
 mod_rpaf-2.0.c |    6 ++++++
 1 file changed, 6 insertions(+)

--- a/mod_rpaf-2.0.c
+++ b/mod_rpaf-2.0.c
@@ -72,6 +72,8 @@
 #include "http_vhost.h"
 #include "apr_strings.h"
 
+#include <arpa/inet.h>
+
 module AP_MODULE_DECLARE_DATA rpaf_module;
 
 typedef struct {
@@ -185,6 +187,10 @@
             apr_pool_cleanup_register(r->pool, (void *)rcr, rpaf_cleanup, 
apr_pool_cleanup_null);
             r->connection->remote_ip = apr_pstrdup(r->connection->pool, ((char 
**)arr->elts)[((arr->nelts)-1)]);
             r->connection->remote_addr->sa.sin.sin_addr.s_addr = 
apr_inet_addr(r->connection->remote_ip);
+            apr_sockaddr_t *tmpsa;
+            int ret = apr_sockaddr_info_get(&tmpsa, r->connection->remote_ip, 
APR_UNSPEC, r->connection->remote_addr->port, 0, 
r->connection->remote_addr->pool);
+            if (ret == APR_SUCCESS)
+                memcpy(r->connection->remote_addr, tmpsa, 
sizeof(apr_sockaddr_t));
             if (cfg->sethostname) {
                 const char *hostvalue;
                 if (hostvalue = apr_table_get(r->headers_in, 
"X-Forwarded-Host")) {



1.1                  www-apache/mod_rpaf/files/011_apache2.4.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/www-apache/mod_rpaf/files/011_apache2.4.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/www-apache/mod_rpaf/files/011_apache2.4.patch?rev=1.1&content-type=text/plain

Index: 011_apache2.4.patch
===================================================================
Description: Apache 2.4 compatibility patch
Author: Sergey B Kirpichev <[email protected]>
Bug-Debian: http://bugs.debian.org/666792

---
 mod_rpaf-2.0.c |   16 ++++++++--------
 1 file changed, 8 insertions(+), 8 deletions(-)

--- a/mod_rpaf-2.0.c
+++ b/mod_rpaf-2.0.c
@@ -149,8 +149,8 @@
 
 static apr_status_t rpaf_cleanup(void *data) {
     rpaf_cleanup_rec *rcr = (rpaf_cleanup_rec *)data;
-    rcr->r->connection->remote_ip   = apr_pstrdup(rcr->r->connection->pool, 
rcr->old_ip);
-    rcr->r->connection->remote_addr->sa.sin.sin_addr.s_addr = 
apr_inet_addr(rcr->r->connection->remote_ip);
+    rcr->r->connection->client_ip   = apr_pstrdup(rcr->r->connection->pool, 
rcr->old_ip);
+    rcr->r->connection->client_addr->sa.sin.sin_addr.s_addr = 
apr_inet_addr(rcr->r->connection->client_ip);
     return APR_SUCCESS;
 }
 
@@ -173,7 +173,7 @@
     if (!cfg->enable)
         return DECLINED;
 
-    if (is_in_array(r->connection->remote_ip, cfg->proxy_ips) == 1) {
+    if (is_in_array(r->connection->client_ip, cfg->proxy_ips) == 1) {
         /* check if cfg->headername is set and if it is use
            that instead of X-Forwarded-For by default */
         if (cfg->headername && (fwdvalue = apr_table_get(r->headers_in, 
cfg->headername))) {
@@ -192,15 +192,15 @@
                 if (*fwdvalue != '\0')
                     ++fwdvalue;
             }
-            rcr->old_ip = apr_pstrdup(r->connection->pool, 
r->connection->remote_ip);
+            rcr->old_ip = apr_pstrdup(r->connection->pool, 
r->connection->client_ip);
             rcr->r = r;
             apr_pool_cleanup_register(r->pool, (void *)rcr, rpaf_cleanup, 
apr_pool_cleanup_null);
-            r->connection->remote_ip = apr_pstrdup(r->connection->pool, 
last_not_in_array(arr, cfg->proxy_ips));
-            r->connection->remote_addr->sa.sin.sin_addr.s_addr = 
apr_inet_addr(r->connection->remote_ip);
+            r->connection->client_ip = apr_pstrdup(r->connection->pool, 
last_not_in_array(arr, cfg->proxy_ips));
+            r->connection->client_addr->sa.sin.sin_addr.s_addr = 
apr_inet_addr(r->connection->client_ip);
             apr_sockaddr_t *tmpsa;
-            int ret = apr_sockaddr_info_get(&tmpsa, r->connection->remote_ip, 
APR_UNSPEC, r->connection->remote_addr->port, 0, 
r->connection->remote_addr->pool);
+            int ret = apr_sockaddr_info_get(&tmpsa, r->connection->client_ip, 
APR_UNSPEC, r->connection->client_addr->port, 0, 
r->connection->client_addr->pool);
             if (ret == APR_SUCCESS)
-                memcpy(r->connection->remote_addr, tmpsa, 
sizeof(apr_sockaddr_t));
+                memcpy(r->connection->client_addr, tmpsa, 
sizeof(apr_sockaddr_t));
             if (cfg->sethostname) {
                 const char *hostvalue;
                 if (hostvalue = apr_table_get(r->headers_in, 
"X-Forwarded-Host")) {



1.1                  
www-apache/mod_rpaf/files/012_Add-missing-header-for-inet_addr.patch

file : 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/www-apache/mod_rpaf/files/012_Add-missing-header-for-inet_addr.patch?rev=1.1&view=markup
plain: 
http://sources.gentoo.org/viewvc.cgi/gentoo-x86/www-apache/mod_rpaf/files/012_Add-missing-header-for-inet_addr.patch?rev=1.1&content-type=text/plain

Index: 012_Add-missing-header-for-inet_addr.patch
===================================================================
Description: Add missing header for inet_addr
Author: Sergey B Kirpichev <[email protected]>

---
 mod_rpaf-2.0.c |    1 +
 1 file changed, 1 insertion(+)

--- a/mod_rpaf-2.0.c
+++ b/mod_rpaf-2.0.c
@@ -64,6 +64,7 @@
  * 
  */ 
 
+#include <arpa/inet.h>
 #include "httpd.h"
 #include "http_config.h"
 #include "http_core.h"




Reply via email to