403Webshell
Server IP : 89.108.64.180  /  Your IP : 216.73.217.95
Web Server : Apache/2.4.41 (Ubuntu)
System : Linux 89-108-64-180.cloudvps.regruhosting.ru 5.4.0-216-generic #236-Ubuntu SMP Fri Apr 11 19:53:21 UTC 2025 x86_64
User : www-root ( 1010)
PHP Version : 8.0.30
Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,
MySQL : OFF  |  cURL : ON  |  WGET : OFF  |  Perl : OFF  |  Python : OFF  |  Sudo : OFF  |  Pkexec : OFF
Directory :  /var/www/www-root/data/www/otelluna.ru/wp-content/plugins/halfdata-green-popups/modules/

Upload File :
current_dir [ Writeable ] document_root [ Writeable ]

 

Command :


[ Back ]     

Current File : /var/www/www-root/data/www/otelluna.ru/wp-content/plugins/halfdata-green-popups/modules/ipstack.php
<?php
/* IPStack integration for Green Popups */
if (!defined('UAP_CORE') && !defined('ABSPATH')) exit;
class lepopup_ipstack_class {
	var $options = array(
		"api-key" => ""
	);
	
	function __construct() {
		$this->get_options();
		if (is_admin()) {
			add_filter('lepopup_geoip_services', array(&$this, 'geoip_services'), 10, 1);
			add_action('lepopup_geoip_service_options_show', array(&$this, "admin_options_html"), 10, 1);
			add_filter('lepopup_options_check', array(&$this, 'admin_options_check'));
			add_action('lepopup_options_update', array(&$this, 'admin_options_update'));
		}
		add_filter('lepopup_geoip_params_ipstack', array(&$this, 'geoip_params'), 10, 1);
		add_filter('lepopup_geoip_data_ipstack', array(&$this, 'geoip_data'), 10, 2);
	}

	function get_options() {
		foreach ($this->options as $key => $value) {
			$this->options[$key] = get_option('lepopup-ipstack-'.$key, $this->options[$key]);
		}
	}
	
	function update_options() {
		if (current_user_can('manage_options')) {
			foreach ($this->options as $key => $value) {
				update_option('lepopup-ipstack-'.$key, $value);
			}
		}
	}

	function populate_options() {
		foreach ($this->options as $key => $value) {
			if (isset($_POST['lepopup-ipstack-'.$key])) {
				$this->options[$key] = trim(stripslashes($_POST['lepopup-ipstack-'.$key]));
			}
		}
	}
	
	function geoip_services($_geoip_services) {
		if (!array_key_exists("ipstack", $_geoip_services)) $_geoip_services["ipstack"] = esc_html__('ipstack', 'lepopup');
		return $_geoip_services;
	}
	
	function admin_options_html($_active_service) {
		global $wpdb, $lepopup;
		echo '
				<tr class="lepopup-geoip-service-options lepopup-geoip-service-ipstack"'.($_active_service == 'ipstack' ? ' style="display: table-row;"' : '').'>
					<th>'.esc_html__('ipstack API Key', 'lepopup').':</th>
					<td>
						<input type="text" id="lepopup-ipstack-api-key" name="lepopup-ipstack-api-key" value="'.esc_html($this->options['api-key']).'" class="widefat" />
						<br /><em>'.sprintf(esc_html__('Please enter ipstack API Key. You can find it in the %sipstack dashboard%s.', 'lepopup'), '<a href="https://ipstack.com/dashboard" target="_blank">', '</a>').'</em>
					</td>
				</tr>';
	}

	function admin_options_check($_errors) {
		global $lepopup;
		$this->populate_options();
		if ($lepopup->options['geoip-service'] == 'ipstack') {
			if (empty($this->options['api-key'])) $_errors[] = esc_html__('Invalid ipstack API Key.', 'lepopup');
		}
		return $_errors;
	}

	function admin_options_update() {
		$this->populate_options();
		$this->update_options();
	}
	
	function geoip_params($_params) {
		return array('country', 'region', 'city', 'zip');
	}

	function geoip_data($_data, $_ip) {
		global $wpdb, $lepopup;
		$data = array('country' => '', 'region' => '', 'city' => '', 'zip' => '');
		$geo_details = $wpdb->get_row("SELECT * FROM ".$wpdb->prefix."lepopup_geoip WHERE deleted = '0' AND ip = '".esc_sql($_ip)."' AND service = 'ipstack'", ARRAY_A);
		if (!empty($geo_details) && $geo_details['created']+7*24*3600 >= time()) {
			$data['country'] = $geo_details['country'];
			$data['region'] = $geo_details['region'];
			$data['city'] = $geo_details['city'];
			$data['zip'] = $geo_details['zip'];
			return $data;
		}
		$result = $this->connect($this->options['api-key'], $_ip);
		if (!empty($result) && is_array($result)) {
			if (array_key_exists('country_code', $result) && !empty($result['country_code'])) $data['country'] = $result['country_code'];
			if (array_key_exists('region_name', $result) && !empty($result['region_name'])) $data['region'] = $result['region_name'];
			if (array_key_exists('city', $result) && !empty($result['city'])) $data['city'] = $result['city'];
			if (array_key_exists('zip', $result) && !empty($result['zip'])) $data['zip'] = str_replace(" ", "", $result['zip']);
			if (!empty($data['country']) || !empty($data['region']) || !empty($data['city']) || !empty($data['zip'])) {
				if (!empty($geo_details)) {
					$sql = "UPDATE ".$wpdb->prefix."lepopup_geoip SET
						country = '".esc_sql($data['country'])."',
						region = '".esc_sql($data['region'])."',
						city = '".esc_sql($data['city'])."',
						zip = '".esc_sql($data['zip'])."',
						created = '".time()."'
						WHERE id = '".esc_sql($geo_details['id'])."'";
					$wpdb->query($sql);
				} else {
					$sql = "INSERT INTO ".$wpdb->prefix."lepopup_geoip (
						ip, country, region, city, zip, service, created, deleted) VALUES (
						'".esc_sql($_ip)."',
						'".esc_sql($data['country'])."',
						'".esc_sql($data['region'])."',
						'".esc_sql($data['city'])."',
						'".esc_sql($data['zip'])."',
						'ipstack', '".time()."', '0')";
					$wpdb->query($sql);
				}
			}
		}
		return $data;
	}

	function connect($_api_key, $_ip) {
		try {
			$url = 'http://api.ipstack.com/'.urlencode($_ip).'?access_key='.urlencode($_api_key);
			$curl = curl_init($url);
			curl_setopt($curl, CURLOPT_TIMEOUT, 5);
			curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
			curl_setopt($curl, CURLOPT_FORBID_REUSE, true);
			curl_setopt($curl, CURLOPT_FRESH_CONNECT, true);
			//curl_setopt($curl, CURLOPT_FOLLOWLOCATION, true);
			curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, false);
			curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, false);
			$response = curl_exec($curl);
			curl_close($curl);
			$result = json_decode($response, true);
		} catch (Exception $e) {
			$result = null;
		}
		return $result;
	}
	
}
$lepopup_ipstack = new lepopup_ipstack_class();
?>

Youez - 2016 - github.com/yon3zu
LinuXploit