Adapt 011_apache2.4.patch (client_ip -> useragent_ip)
Jessie's version has a regression (REMOTE_ADDR keep proxy's ip)
Sergey B Kirpichev
8 years ago
13 | 13 | rpaf_cleanup_rec *rcr = (rpaf_cleanup_rec *)data; |
14 | 14 | - rcr->r->connection->remote_ip = apr_pstrdup(rcr->r->connection->pool, rcr->old_ip); |
15 | 15 | - rcr->r->connection->remote_addr->sa.sin.sin_addr.s_addr = apr_inet_addr(rcr->r->connection->remote_ip); |
16 | + rcr->r->connection->client_ip = apr_pstrdup(rcr->r->connection->pool, rcr->old_ip); | |
17 | + rcr->r->connection->client_addr->sa.sin.sin_addr.s_addr = apr_inet_addr(rcr->r->connection->client_ip); | |
16 | + rcr->r->useragent_ip = apr_pstrdup(rcr->r->connection->pool, rcr->old_ip); | |
17 | + rcr->r->useragent_addr->sa.sin.sin_addr.s_addr = apr_inet_addr(rcr->r->useragent_ip); | |
18 | 18 | return APR_SUCCESS; |
19 | 19 | } |
20 | 20 | |
23 | 23 | return DECLINED; |
24 | 24 | |
25 | 25 | - if (is_in_array(r->connection->remote_ip, cfg->proxy_ips) == 1) { |
26 | + if (is_in_array(r->connection->client_ip, cfg->proxy_ips) == 1) { | |
26 | + if (is_in_array(r->useragent_ip, cfg->proxy_ips) == 1) { | |
27 | 27 | /* check if cfg->headername is set and if it is use |
28 | 28 | that instead of X-Forwarded-For by default */ |
29 | 29 | if (cfg->headername && (fwdvalue = apr_table_get(r->headers_in, cfg->headername))) { |
32 | 32 | ++fwdvalue; |
33 | 33 | } |
34 | 34 | - rcr->old_ip = apr_pstrdup(r->connection->pool, r->connection->remote_ip); |
35 | + rcr->old_ip = apr_pstrdup(r->connection->pool, r->connection->client_ip); | |
35 | + rcr->old_ip = apr_pstrdup(r->connection->pool, r->useragent_ip); | |
36 | 36 | rcr->r = r; |
37 | 37 | apr_pool_cleanup_register(r->pool, (void *)rcr, rpaf_cleanup, apr_pool_cleanup_null); |
38 | 38 | - r->connection->remote_ip = apr_pstrdup(r->connection->pool, last_not_in_array(arr, cfg->proxy_ips)); |
39 | 39 | - r->connection->remote_addr->sa.sin.sin_addr.s_addr = apr_inet_addr(r->connection->remote_ip); |
40 | + r->connection->client_ip = apr_pstrdup(r->connection->pool, last_not_in_array(arr, cfg->proxy_ips)); | |
41 | + r->connection->client_addr->sa.sin.sin_addr.s_addr = apr_inet_addr(r->connection->client_ip); | |
40 | + r->useragent_ip = apr_pstrdup(r->connection->pool, last_not_in_array(arr, cfg->proxy_ips)); | |
41 | + r->useragent_addr->sa.sin.sin_addr.s_addr = apr_inet_addr(r->useragent_ip); | |
42 | 42 | apr_sockaddr_t *tmpsa; |
43 | 43 | - int ret = apr_sockaddr_info_get(&tmpsa, r->connection->remote_ip, APR_UNSPEC, r->connection->remote_addr->port, 0, r->connection->remote_addr->pool); |
44 | + int ret = apr_sockaddr_info_get(&tmpsa, r->connection->client_ip, APR_UNSPEC, r->connection->client_addr->port, 0, r->connection->client_addr->pool); | |
44 | + int ret = apr_sockaddr_info_get(&tmpsa, r->useragent_ip, APR_UNSPEC, r->useragent_addr->port, 0, r->useragent_addr->pool); | |
45 | 45 | if (ret == APR_SUCCESS) |
46 | 46 | - memcpy(r->connection->remote_addr, tmpsa, sizeof(apr_sockaddr_t)); |
47 | + memcpy(r->connection->client_addr, tmpsa, sizeof(apr_sockaddr_t)); | |
47 | + memcpy(r->useragent_addr, tmpsa, sizeof(apr_sockaddr_t)); | |
48 | 48 | if (cfg->sethostname) { |
49 | 49 | const char *hostvalue; |
50 | 50 | if (hostvalue = apr_table_get(r->headers_in, "X-Forwarded-Host")) { |