Lines 55-60
Link Here
|
55 |
* (removed as the physical connection and |
55 |
* (removed as the physical connection and |
56 |
* from the proxy-via IP header value list) |
56 |
* from the proxy-via IP header value list) |
57 |
*/ |
57 |
*/ |
|
|
58 |
const char *header_scheme; |
59 |
/** A header to record the proxied scheme |
60 |
* (removed as the physical connection and |
61 |
* from the proxy-via IP header value list) |
62 |
*/ |
58 |
const char *proxies_header_name; |
63 |
const char *proxies_header_name; |
59 |
/** A list of trusted proxies, ideally configured |
64 |
/** A list of trusted proxies, ideally configured |
60 |
* with the most commonly encountered listed first |
65 |
* with the most commonly encountered listed first |
Lines 154-159
Link Here
|
154 |
remoteip_config_t *config = apr_pcalloc(p, sizeof(*config)); |
159 |
remoteip_config_t *config = apr_pcalloc(p, sizeof(*config)); |
155 |
config->disabled_subnets = apr_array_make(p, 1, sizeof(apr_ipsubnet_t *)); |
160 |
config->disabled_subnets = apr_array_make(p, 1, sizeof(apr_ipsubnet_t *)); |
156 |
/* config->header_name = NULL; |
161 |
/* config->header_name = NULL; |
|
|
162 |
* config->header_scheme = NULL; |
157 |
* config->proxies_header_name = NULL; |
163 |
* config->proxies_header_name = NULL; |
158 |
* config->proxy_protocol_enabled = NULL; |
164 |
* config->proxy_protocol_enabled = NULL; |
159 |
* config->proxy_protocol_disabled = NULL; |
165 |
* config->proxy_protocol_disabled = NULL; |
Lines 173-178
Link Here
|
173 |
config->header_name = server->header_name |
179 |
config->header_name = server->header_name |
174 |
? server->header_name |
180 |
? server->header_name |
175 |
: global->header_name; |
181 |
: global->header_name; |
|
|
182 |
config->header_scheme = server->header_scheme |
183 |
? server->header_scheme |
184 |
: global->header_scheme; |
176 |
config->proxies_header_name = server->proxies_header_name |
185 |
config->proxies_header_name = server->proxies_header_name |
177 |
? server->proxies_header_name |
186 |
? server->proxies_header_name |
178 |
: global->proxies_header_name; |
187 |
: global->proxies_header_name; |
Lines 191-196
Link Here
|
191 |
return NULL; |
200 |
return NULL; |
192 |
} |
201 |
} |
193 |
|
202 |
|
|
|
203 |
static const char *scheme_name_set(cmd_parms *cmd, void *dummy, |
204 |
const char *arg) |
205 |
{ |
206 |
remoteip_config_t *config = ap_get_module_config(cmd->server->module_config, |
207 |
&remoteip_module); |
208 |
config->header_scheme = arg; |
209 |
return NULL; |
210 |
} |
211 |
|
194 |
static const char *proxies_header_name_set(cmd_parms *cmd, void *dummy, |
212 |
static const char *proxies_header_name_set(cmd_parms *cmd, void *dummy, |
195 |
const char *arg) |
213 |
const char *arg) |
196 |
{ |
214 |
{ |
Lines 529-534
Link Here
|
529 |
|
547 |
|
530 |
apr_status_t rv; |
548 |
apr_status_t rv; |
531 |
char *remote; |
549 |
char *remote; |
|
|
550 |
char *scheme; |
532 |
char *proxy_ips = NULL; |
551 |
char *proxy_ips = NULL; |
533 |
char *parse_remote; |
552 |
char *parse_remote; |
534 |
char *eos; |
553 |
char *eos; |
Lines 739-744
Link Here
|
739 |
|
758 |
|
740 |
r->useragent_addr = req->useragent_addr; |
759 |
r->useragent_addr = req->useragent_addr; |
741 |
r->useragent_ip = req->useragent_ip; |
760 |
r->useragent_ip = req->useragent_ip; |
|
|
761 |
if (config->header_name) { |
762 |
scheme = (char *) apr_table_get(r->headers_in, config->header_scheme); |
763 |
if (scheme && strcmp(scheme, "https") == 0) |
764 |
r->server->server_scheme = scheme; |
765 |
} |
742 |
|
766 |
|
743 |
ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, |
767 |
ap_log_rerror(APLOG_MARK, APLOG_TRACE1, 0, r, |
744 |
req->proxy_ips |
768 |
req->proxy_ips |
Lines 1199-1204
Link Here
|
1199 |
AP_INIT_TAKE1("RemoteIPHeader", header_name_set, NULL, RSRC_CONF, |
1223 |
AP_INIT_TAKE1("RemoteIPHeader", header_name_set, NULL, RSRC_CONF, |
1200 |
"Specifies a request header to trust as the client IP, " |
1224 |
"Specifies a request header to trust as the client IP, " |
1201 |
"e.g. X-Forwarded-For"), |
1225 |
"e.g. X-Forwarded-For"), |
|
|
1226 |
AP_INIT_TAKE1("RemoteIPProtoHeader", scheme_name_set, NULL, RSRC_CONF, |
1227 |
"Specifies a request header to trust as the client scheme, " |
1228 |
"e.g. X-Forwarded-Proto"), |
1202 |
AP_INIT_TAKE1("RemoteIPProxiesHeader", proxies_header_name_set, |
1229 |
AP_INIT_TAKE1("RemoteIPProxiesHeader", proxies_header_name_set, |
1203 |
NULL, RSRC_CONF, |
1230 |
NULL, RSRC_CONF, |
1204 |
"Specifies a request header to record proxy IP's, " |
1231 |
"Specifies a request header to record proxy IP's, " |