Compare commits

...

12 Commits

Author SHA1 Message Date
b7d78e7561 do not add newline after plain IP output 2025-01-08 22:38:16 +01:00
d757e632d8 add CNAME output to standard list 2024-03-10 16:24:15 +01:00
1d759d2e44 change domain nandus.net -> snapdns.eu 2024-03-10 16:18:32 +01:00
Max Mehl
d8aba80029 make .git inaccessible via web 2023-06-14 13:39:19 +02:00
6109429b21 handle case if there is no hostname 2023-05-24 11:08:18 +02:00
9ec952236f add timeout for whois 2020-06-22 18:04:35 +02:00
90be3e54b9 Merge branch 'dev' 2018-01-05 13:23:14 +01:00
69c1411c98 use correct language tag 2018-01-05 13:21:11 +01:00
504586a033 use valid html 2018-01-05 13:19:53 +01:00
a720d581d5 rename function names 2018-01-05 13:17:35 +01:00
e5f6c39224 fix syntax 2018-01-05 13:14:20 +01:00
6cf4ef1237 add html header and favicon 2018-01-05 13:13:06 +01:00
5 changed files with 47 additions and 17 deletions

View File

@@ -8,3 +8,6 @@ RewriteRule ^([^/]+)/?$ /index.php?m=$1 [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^([^/]+)/([^/]+)/?$ index.php?m=$1&t=$2 [L]
# Hide .git on webserver
RedirectMatch 404 /\.git

View File

@@ -4,18 +4,18 @@ A simple PHP script to tell a visitor's IP address and more information. This fi
## Plain return
Example: [/][https://ip.nandus.net]
Example: [/][https://ip.snapdns.eu]
When the script is properly installed, one can visit/curl/wget the website to just receive one's public IP address. This is very useful in combination with other scripts (check out my snap-dyndns packages for example).
```
max@laptop ~> wget -qO - ip.nandus.net
max@laptop ~> curl -Ls ip.snapdns.eu
91.62.68.1
```
## Detailed return
Example: [/myself](https://ip4.nandus.net/myself)
Example: [/detailed](https://ip4.snapdns.eu/detailed)
Given the location of the script is `ip.example.com`, you can also receive more information about the HTTP headers or the IP's reverse lookup:
@@ -27,7 +27,7 @@ HTTP_CLIENT_IP:
HTTP_X_FORWARDED:
HTTP_FORWARDED_FOR:
HTTP_FORWARDED:
HTTP_HOST: ip4.nandus.net
HTTP_HOST: ip4.snapdns.eu
HTTP_URI:
HOSTNAME: p5B3E4401.dip0.t-ipconnect.de
@@ -38,8 +38,8 @@ Additionally you will be given a whois output of your IP.
## Custom DNS and IP lookup
Example DNS: [/dns/example.com](https://ip.nandus.net/dns/example.com)
Example IP: [/ip/8.8.8.8](https://ip.nandus.net/ip/8.8.8.8)
* Example DNS: [/dns/example.com](https://ip.snapdns.eu/dns/example.com)
* Example IP: [/ip/8.8.8.8](https://ip.snapdns.eu/ip/8.8.8.8)
You can also freely look up any hostname or IP. For domains, this will return a useful list of different DNS records (A, AAAA, NS, MX, TXT, SOA etc).

View File

@@ -1,8 +1,8 @@
<?php
return (object) array(
'ip4domain' => 'ip4.nandus.net',
'ip6domain' => 'ip6.nandus.net',
'ip4domain' => 'ip4.snapdns.eu',
'ip6domain' => 'ip6.snapdns.eu',
'detailed_uri' => 'detailed',
);

BIN
favicon.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

View File

@@ -20,10 +20,11 @@ if(empty($_GET)) {
if($method === "simple") { // simple
$ip = $_SERVER['REMOTE_ADDR'];
echo $ip . "\n";
echo $ip;
exit;
} elseif($method === "myself" ) { // detailed info about own IP
$ip = $_SERVER['REMOTE_ADDR'];
print_header();
show_http_headers();
show_hostname($ip);
show_reverse($hostname);
@@ -31,12 +32,14 @@ if($method === "simple") { // simple
show_whois($ip);
} elseif($method === "ip" ) { // detailed info an IP
$ip = $t;
print_header();
show_hostname($ip);
show_reverse($hostname);
show_ipinfo($ip);
show_whois($ip);
} elseif($method === "dns" ) { // detailed info a host name
$hostname = $t;
print_header();
show_reverse($hostname);
show_dnsrecords($hostname);
show_whois($hostname);
@@ -45,7 +48,7 @@ if($method === "simple") { // simple
header("Location:/".$config->detailed_uri."");
exit;
}
footer();
print_footer();
// HTTP HEADERS
function show_http_headers() {
@@ -92,7 +95,7 @@ function show_whois($target) {
preg_match('/[a-zA-Z\d\-]+\.[a-zA-Z\d]+$/', $target, $m);
$target = $m[0];
}
$whois = shell_exec("whois " . $target );
$whois = shell_exec("timeout 5 whois " . $target );
echo "<pre>"; print_r($whois); echo "</pre>";
echo "<br />\n";
}
@@ -111,6 +114,12 @@ function show_dnsrecords($hostname) {
echo "<strong>" . $value['type'] . "</strong>: ";
echo link_target($value['ipv6']) . "<br />\n";
}
// CNAME
$dnsrecords = dnsrecords($hostname, "DNS_CNAME");
foreach($dnsrecords as $key=>$value) {
echo "<strong>" . $value['type'] . "</strong>: ";
echo link_target($value['target']) . "<br />\n";
}
// MX
$dnsrecords = dnsrecords($hostname, "DNS_MX");
foreach($dnsrecords as $key=>$value) {
@@ -151,13 +160,26 @@ function show_dnsrecords($hostname) {
echo "<br />\n";
}
}
// PRINT HEADER
function print_header() {
print '<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>IP and DNS information</title>
<link rel="icon" type="image/png" href="/favicon.png">
</head>
<body>
';
}
// PRINT FOOTER
function footer() {
function print_footer() {
global $config;
echo "<br /><hr /><br />\n";
echo 'Your plain IP address: <a href="//'.$config->ip4domain.'">IPv4</a> | <a href="//'.$config->ip6domain.'">IPv6</a>';
echo "<br />\n";
echo 'Your detailed IP info: <a href="//'.$config->ip4domain.'/'.$config->detailed_uri.'">IPv4</a> | <a href="//'.$config->ip6domain.'/'.$config->detailed_uri.'">IPv6</a>';
echo '</body></html>';
}
// HELPER FUNCTIONS
@@ -173,12 +195,17 @@ function ip2hostname($ip) {
return $hostname;
}
function hostname2ip($hostname) {
$ipsbyhostname = gethostbynamel($hostname);
if($ipsbyhostname === false) {
$ip = $hostname;
} else {
$ip = implode(', ', gethostbynamel($hostname));
}
return $ip;
}
function dnsrecords($hostname, $record = "DNS_ALL") {
if($record === "OTHER") {
$dnsrecords = dns_get_record($hostname, DNS_ALL - DNS_A - DNS_AAAA - DNS_MX - DNS_NS - DNS_TXT - DNS_SOA);
$dnsrecords = dns_get_record($hostname, DNS_ALL - DNS_A - DNS_AAAA - DNS_MX - DNS_CNAME - DNS_NS - DNS_TXT - DNS_SOA);
} else {
$dnsrecords = dns_get_record($hostname, constant($record));
}