mirror of
https://github.com/kiddin9/op-packages.git
synced 2026-10-28 07:12:51 +08:00
45 lines
910 B
Ucode
45 lines
910 B
Ucode
'use strict';
|
|
|
|
function get_request_env(http, name) {
|
|
let value = '';
|
|
|
|
if (http)
|
|
value = http.getenv(name) || '';
|
|
|
|
if (!value)
|
|
value = getenv(name) || '';
|
|
|
|
return value;
|
|
}
|
|
|
|
function append_addr(list, value) {
|
|
if (value)
|
|
push(list, value);
|
|
}
|
|
|
|
function remote_addr(env) {
|
|
let http = env && env.http;
|
|
let addr = '';
|
|
let values = [];
|
|
let forwarded_for = get_request_env(http, 'HTTP_X_FORWARDED_FOR');
|
|
|
|
if (forwarded_for) {
|
|
append_addr(values, forwarded_for);
|
|
append_addr(values, get_request_env(http, 'HTTP_X_REAL_IP'));
|
|
append_addr(values, get_request_env(http, 'HTTP_CF_CONNECTING_IP'));
|
|
append_addr(values, get_request_env(http, 'HTTP_TRUE_CLIENT_IP'));
|
|
append_addr(values, get_request_env(http, 'HTTP_FORWARDED'));
|
|
} else {
|
|
append_addr(values, get_request_env(http, 'REMOTE_ADDR'));
|
|
}
|
|
|
|
for (let value in values)
|
|
addr += value + '\n';
|
|
|
|
print(addr);
|
|
}
|
|
|
|
return {
|
|
remote_addr
|
|
};
|