2018-04-10 16:25:31 +00:00
|
|
|
<?php
|
2018-04-10 16:27:55 +00:00
|
|
|
/**
|
2018-04-10 17:42:42 +00:00
|
|
|
* @file networktool.php
|
2022-09-16 07:03:00 +00:00
|
|
|
* @created_on 2018-04-11
|
|
|
|
* @updated_on 2022-09-16
|
2022-11-25 14:15:20 +00:00
|
|
|
* @author Go Namhyeon <abuse@catswords.net>
|
2018-04-10 17:42:42 +00:00
|
|
|
* @brief Network tool helper
|
2018-04-10 16:27:55 +00:00
|
|
|
*/
|
|
|
|
|
2020-02-10 06:23:04 +00:00
|
|
|
if(!is_fn("get_network_event")) {
|
2018-04-10 16:25:31 +00:00
|
|
|
function get_network_event() {
|
2018-04-10 17:43:57 +00:00
|
|
|
$config = get_config();
|
|
|
|
|
2018-04-10 16:25:31 +00:00
|
|
|
return array(
|
2018-05-24 06:02:25 +00:00
|
|
|
"datetime" => get_current_datetime(),
|
|
|
|
"server" => get_network_server_addr(),
|
2018-04-10 16:31:36 +00:00
|
|
|
"hostname" => get_network_hostname(),
|
|
|
|
"client" => get_network_client_addr(),
|
2018-04-10 16:27:55 +00:00
|
|
|
"agent" => getenv("HTTP_USER_AGENT"),
|
|
|
|
"referrer" => getenv("HTTP_REFERER"),
|
|
|
|
"query" => getenv("QUERY_STRING"),
|
2018-09-02 16:04:08 +00:00
|
|
|
"self" => get_value_in_array("PHP_SELF", $_SERVER, ""),
|
|
|
|
"method" => get_value_in_array("REQUEST_METHOD", $_SERVER, ""),
|
2018-04-10 16:25:31 +00:00
|
|
|
);
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-02-10 06:23:04 +00:00
|
|
|
if(!is_fn("get_network_client_addr")) {
|
2018-04-10 16:25:31 +00:00
|
|
|
function get_network_client_addr() {
|
|
|
|
$addr = '';
|
|
|
|
if (isset($_SERVER['HTTP_CLIENT_IP']))
|
|
|
|
$addr = $_SERVER['HTTP_CLIENT_IP'];
|
|
|
|
else if(isset($_SERVER['HTTP_X_FORWARDED_FOR']))
|
|
|
|
$addr = $_SERVER['HTTP_X_FORWARDED_FOR'];
|
|
|
|
else if(isset($_SERVER['HTTP_X_FORWARDED']))
|
|
|
|
$addr = $_SERVER['HTTP_X_FORWARDED'];
|
|
|
|
else if(isset($_SERVER['HTTP_X_CLUSTER_CLIENT_IP']))
|
|
|
|
$addr = $_SERVER['HTTP_X_CLUSTER_CLIENT_IP'];
|
|
|
|
else if(isset($_SERVER['HTTP_FORWARDED_FOR']))
|
|
|
|
$addr = $_SERVER['HTTP_FORWARDED_FOR'];
|
|
|
|
else if(isset($_SERVER['HTTP_FORWARDED']))
|
|
|
|
$addr = $_SERVER['HTTP_FORWARDED'];
|
|
|
|
else if(isset($_SERVER['REMOTE_ADDR']))
|
|
|
|
$addr = $_SERVER['REMOTE_ADDR'];
|
|
|
|
else
|
|
|
|
$addr = 'UNKNOWN';
|
|
|
|
return $addr;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-02-10 06:23:04 +00:00
|
|
|
if(!is_fn("get_network_server_addr")) {
|
2018-04-10 16:25:31 +00:00
|
|
|
function get_network_server_addr() {
|
|
|
|
$addr = '';
|
|
|
|
if(isset($_SERVER['SERVER_ADDR']) && isset($_SERVER['SERVER_PORT'])) {
|
|
|
|
$addr = $_SERVER['SERVER_ADDR'] . ':' . $_SERVER['SERVER_PORT'];
|
|
|
|
} else if(isset($_SERVER['SERVER_ADDR'])) {
|
|
|
|
$addr = $_SERVER['SERVER_ADDR'];
|
|
|
|
} else if(isset($_SERVER['LOCAL_ADDR'])) {
|
|
|
|
$addr = $_SERVER['LOCAL_ADDR'];
|
2020-02-10 06:23:04 +00:00
|
|
|
} else if(is_fn(array("gethostname", "gethostbyname"))) {
|
2018-04-10 16:25:31 +00:00
|
|
|
$host = gethostname();
|
|
|
|
$addr = gethostbyname($host);
|
|
|
|
} else {
|
|
|
|
$addr = 'UNKNOWN';
|
|
|
|
}
|
|
|
|
return $addr;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-02-10 06:23:04 +00:00
|
|
|
if(!is_fn("get_network_hostname")) {
|
2018-04-10 16:25:31 +00:00
|
|
|
function get_network_hostname() {
|
|
|
|
$host = '';
|
|
|
|
if(isset($_SERVER['HTTP_HOST'])) {
|
|
|
|
$host = $_SERVER['HTTP_HOST'];
|
|
|
|
} else if(isset($_SERVER['SERVER_NAME'])) {
|
|
|
|
$host = $_SERVER['SERVER_NAME'];
|
2020-02-10 06:23:04 +00:00
|
|
|
} else if(!is_fn('gethostname')) {
|
2018-04-10 16:25:31 +00:00
|
|
|
$host = gethostname();
|
|
|
|
} else {
|
|
|
|
$host = 'UNKNOWN';
|
|
|
|
}
|
|
|
|
|
|
|
|
return $host;
|
|
|
|
}
|
|
|
|
}
|
2018-05-31 03:51:18 +00:00
|
|
|
|
2020-02-10 06:23:04 +00:00
|
|
|
if(!is_fn("check_secure_protocol")) {
|
2019-05-20 08:19:05 +00:00
|
|
|
function check_secure_protocol() {
|
|
|
|
return (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off') || $_SERVER['SERVER_PORT'] == 443;
|
|
|
|
}
|
2018-09-12 01:55:56 +00:00
|
|
|
}
|
|
|
|
|
2020-02-10 06:23:04 +00:00
|
|
|
if(!is_fn("get_os_platform")) {
|
2019-05-20 08:19:05 +00:00
|
|
|
function get_os_platform() {
|
|
|
|
$os = "";
|
2018-09-12 01:54:45 +00:00
|
|
|
|
2019-05-20 08:19:05 +00:00
|
|
|
if(defined("PHP_OS")) {
|
|
|
|
$os = PHP_OS;
|
|
|
|
} else {
|
|
|
|
$os = php_uname(s);
|
|
|
|
}
|
2018-09-12 01:54:45 +00:00
|
|
|
|
2019-05-20 08:19:05 +00:00
|
|
|
return $os;
|
|
|
|
}
|
2018-09-12 01:54:45 +00:00
|
|
|
}
|
2018-09-26 10:57:38 +00:00
|
|
|
|
2020-02-10 06:23:04 +00:00
|
|
|
if(!is_fn("get_network_outbound_addr")) {
|
2019-05-20 08:19:05 +00:00
|
|
|
function get_network_outbound_addr($protocol="") {
|
|
|
|
$addr = false;
|
|
|
|
$config = get_config();
|
2018-09-26 10:57:38 +00:00
|
|
|
|
2019-05-20 08:19:05 +00:00
|
|
|
// via icanhazip.com
|
|
|
|
if(loadHelper("webpagetool")) {
|
|
|
|
$remote_host = "http://" . ($protocol == "ipv6" ? "ipv6." : "") . "icanhazip.com";
|
|
|
|
$response = get_web_page($remote_host, "get.cache");
|
|
|
|
$addr = get_value_in_array("content", $response, $addr);
|
|
|
|
}
|
2018-09-26 10:57:38 +00:00
|
|
|
|
2019-05-20 08:19:05 +00:00
|
|
|
// via opendns.com
|
|
|
|
if(!$addr && loadHelper("exectool")) {
|
|
|
|
$cmd = "dig +short myip.opendns.com @resolver1.opendns.com";
|
|
|
|
$addr = exec_command($cmd, "shell_exec", array(
|
|
|
|
"cache" => true
|
|
|
|
));
|
|
|
|
}
|
2018-09-26 11:06:07 +00:00
|
|
|
|
2019-05-20 08:19:05 +00:00
|
|
|
return $addr;
|
|
|
|
}
|
2018-09-26 10:57:38 +00:00
|
|
|
}
|
2022-09-16 07:02:16 +00:00
|
|
|
|
|
|
|
if(!is_fn("detect_perf_agent")) {
|
|
|
|
function detect_perf_agent() {
|
|
|
|
$evt = get_network_event();
|
2022-09-16 07:11:12 +00:00
|
|
|
$agent = $evt['agent'];
|
|
|
|
return preg_match('(PingdomPageSpeed|GTmetrix)', $agent) === 1;
|
2022-09-16 07:02:16 +00:00
|
|
|
}
|
|
|
|
}
|