diff options
author | Sergey Briskin <sergey@briskin.org> | 2014-03-07 19:49:54 +0400 |
---|---|---|
committer | Sergey Briskin <sergey@briskin.org> | 2014-03-07 19:49:54 +0400 |
commit | f3a30e3333def90dd17e77c09a24f40fd14cb702 (patch) | |
tree | ca553aeb1e175b75147f1a22f6002c1204b03161 | |
parent | 726dac734f4c92179c5e2d447f78f54bd254c8f4 (diff) | |
download | ifconfig.php-f3a30e3333def90dd17e77c09a24f40fd14cb702.tar.gz ifconfig.php-f3a30e3333def90dd17e77c09a24f40fd14cb702.tar.bz2 ifconfig.php-f3a30e3333def90dd17e77c09a24f40fd14cb702.zip |
new file: ifconfig.php
-rw-r--r-- | ifconfig.php | 123 |
1 files changed, 123 insertions, 0 deletions
diff --git a/ifconfig.php b/ifconfig.php new file mode 100644 index 0000000..094aede --- /dev/null +++ b/ifconfig.php @@ -0,0 +1,123 @@ +<?php +/* + * User connection info + * + * Version: 1.0 2014/03/06 + * License: GPL v2 (https://www.gnu.org/licenses/gpl-2.0.html) + * + * Copyright (C) 2014 Sergey Briskin (http://briskin.org) + * + * This program is free software; you can redistribute it and/or + * modify it under the terms of the GNU General Public License + * as published by the Free Software Foundation; either version 2 + * of the License, or (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. + * + */ + +// Create array of values +$user = array( + 'ip' => $_SERVER['REMOTE_ADDR'], + 'host' => (isset($_SERVER['REMOTE_ADDR']) ? gethostbyaddr($_SERVER['REMOTE_ADDR']) : ""), + 'port' => $_SERVER['REMOTE_PORT'], + 'ua' => $_SERVER['HTTP_USER_AGENT'], + 'lang' => $_SERVER['HTTP_ACCEPT_LANGUAGE'], + 'mime' => $_SERVER['HTTP_ACCEPT'], + 'encoding' => $_SERVER['HTTP_ACCEPT_ENCODING'], + 'charset' => $_SERVER['HTTP_ACCEPT_CHARSET'], + 'connection' => $_SERVER['HTTP_CONNECTION'], + 'cache' => $_SERVER['HTTP_CACHE_CONTROL'], + 'cookie' => $_SERVER['HTTP_COOKIE'], + 'referer' => $_SERVER['HTTP_REFERER'], + 'real_ip' => $_SERVER['HTTP_X_REAL_IP'], + 'fwd_ip' => $_SERVER['HTTP_X_FORWARDED_FOR'], + 'fwd_host' => (isset($_SERVER['HTTP_X_FORWARDED_FOR']) ? gethostbyaddr($_SERVER['HTTP_X_FORWARDED_FOR']) : ""), + 'dnt' => $_SERVER['HTTP_DNT'] + ); + +// Single HTTP-HEADER value request (ex. ifconfig.php?q=ip) +$rqst=trim(preg_replace('/ +/', ' ', preg_replace('/[^A-Za-z0-9 ]/', ' ', urldecode(html_entity_decode(strip_tags($_GET['q'])))))); + +// Output format (ex. ifconfig.php?f=xml) +$type=trim(preg_replace('/ +/', ' ', preg_replace('/[^A-Za-z0-9 ]/', ' ', urldecode(html_entity_decode(strip_tags($_GET['f'])))))); + +// Return Single value on request & die +if (isset($rqst) && !empty($user[$rqst]) && array_key_exists($rqst, $user)) { + die($user[$rqst]); +} +unset($rqst); + +// Return full output in one of supported formats (xml, json, plain text. default: html) +if (isset($type) && ($type=="text")) { + header('Content-Type: text/plain'); + foreach($user as $key => $value) { + echo $key.": ".$value."\n"; + } + die(); +} elseif (isset($type) && ($type=="json")) { + header('Content-Type: application/json'); + die(json_encode($user)); +} elseif (isset($type) && ($type=="xml")) { + header('Content-Type: text/xml'); + +// Function for SimpleXML creation +function array_to_xml(array $arr, SimpleXMLElement $xml) +{ + foreach ($arr as $k => $v) { + is_array($v) + ? array_to_xml($v, $xml->addChild($k)) + : $xml->addChild($k, $v); + } + return $xml; +} +echo array_to_xml($user, new SimpleXMLElement('<info/>'))->asXML(); + +} else { + header('Content-Type: text/html'); +?><!DOCTYPE html> +<html lang="en"> +<head> + <meta charset="UTF-8"> + <title>info</title> + <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no"/> + <style> + body { + background: #FDFDFD; + color: #111; + font-size: .9em; + } + p { + font-family: "Source Code Pro", "Courier New", "Consolas", "Terminal", "Droid Mono", fixed; + line-height: 1em; + } + .small, .small > a { + font-size: 9pt; + color: #777; + text-align: center; + text-decoration: none; + } + </style> +</head> +<body> +<? + foreach($user as $key => $value) { + echo ' <p id='.$key.'>'.$key.': '.$value.'</p>'."\n"; + } +?> +<br/> +<p class="small">Copyright © 2014 <a href="http://briskin.org">Sergey Briskin</a>.<br/> +<a href="https://github.com/sbriskin/ifconfig.php">Get Source code on GitHub</a></p> +</body> +</html> +<? +} +die(); +?> |