Subversion Repositories vgwhois

Rev

Rev 5 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
2 daniel-mar 1
#!/usr/bin/php
2
<?php
3
 
4
#
11 daniel-mar 5
#  VGWhoIs (ViaThinkSoft Global WhoIs, a fork of generic Whois / gwhois)
5 daniel-mar 6
#  Subprogram: gov TLD whois
2 daniel-mar 7
#
5 daniel-mar 8
#  (c) 2014 by Daniel Marschall, ViaThinkSoft <info@daniel-marschall.de>
2 daniel-mar 9
#
5 daniel-mar 10
#  License: https://www.gnu.org/licenses/gpl-2.0.html (GPL version 2)
2 daniel-mar 11
#
12
 
13
require_once __DIR__ . '/../../shared/php_includes/common_functions.inc.php';
14
 
15
$domain = isset($argv[1]) ? $argv[1] : '';
16
 
17
// This service does output more verbose information (e.g. Agency) in comparison to the whois service.
18
$friendly_url = 'https://www.dotgov.gov/portal/web/dotgov/whois';
19
 
20
/*
21
$viewstate  = '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';
22
$session_id = 'k2NNSnyK9Kvh3BZHpTphvrL12yFTn6TcMJpZrj865x7qLQCvvjs2SK3XB0GxG5qSlX2JhcxymvNqTWqlmdQ311gwVywf8fxNJKVG9p4mccGvXQLbl1LLMxdDBzWt2jFD';
23
$unknown1   = '1882029245';
24
$unknown2   = '1390916170265';
25
*/
26
 
27
$x = file_get_contents2($friendly_url);
28
 
29
if (!preg_match('@name="javax.faces.ViewState" id="javax.faces.ViewState" value="(.*)"@ismU', $x, $m)) {
30
	echo "Error (A) while querying whois service. Please manually check at $friendly_url\n";
31
	exit(1);
32
}
33
$viewstate = $m[1];
34
$viewstate = str_replace('+', '%2B', $viewstate);
35
$viewstate = str_replace('/', '%2F', $viewstate);
36
 
37
if (!preg_match('@getSessionId:function\\(\\){return"([^!]+)!([^!]+)!([^!]+)"}@ismU', $x, $m)) {
38
	echo "Error (B) while querying whois service. Please manually check at $friendly_url\n";
39
	exit(1);
40
}
41
$session_id = $m[1];
42
$unknown1   = $m[2];
43
$unknown2   = $m[3];
44
 
45
# ---
46
 
47
$bef  = '';
48
#$bef .= 'vtor -- ';
49
$bef .= 'curl "https://www.dotgov.gov/portal/web/dotgov/whois?p_p_id=domainAvailabilityCheck_portlet_WAR_dotgov_portlets&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-3&p_p_col_count=1&_domainAvailabilityCheck_portlet_WAR_dotgov_portlets_com.sun.faces.portlet.VIEW_ID="%"2FWEB-INF"%"2Fxhtml"%"2Fregistration"%"2FdomainAvailabilityCheck.xhtml&_domainAvailabilityCheck_portlet_WAR_dotgov_portlets_com.sun.faces.portlet.NAME_SPACE=_domainAvailabilityCheck_portlet_WAR_dotgov_portlets_"';
50
 
51
$bef .= ' -H "Cookie: JSESSIONID='.$session_id.'!'.$unknown1.'; GUEST_LANGUAGE_ID=en_US; COOKIE_SUPPORT=true"';
52
$bef .= ' -H "Host: www.dotgov.gov"';
53
$bef .= ' -H "Origin: https://www.dotgov.gov"';
54
$bef .= ' -H "Accept-Encoding: gzip,deflate"';
55
$bef .= ' -H "Accept-Language: de-DE,de;q=0.8,en-US;q=0.6,en;q=0.4"';
56
$bef .= ' -H "User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:32.0) Gecko/20100101 Firefox/32.0"';
57
#$bef .= ' -H "Content-Type: application/x-www-form-urlencoded"';
58
$bef .= ' -H "Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"';
59
$bef .= ' -H "Cache-Control: max-age=0"';
60
$bef .= ' -H "Referer: https://www.dotgov.gov/portal/web/dotgov/whois;jsessionid='.$session_id.'!'.$unknown1.'!'.$unknown2.'?p_p_id=domainAvailabilityCheck_portlet_WAR_dotgov_portlets&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-3&p_p_col_count=1&_domainAvailabilityCheck_portlet_WAR_dotgov_portlets_com.sun.faces.portlet.VIEW_ID="%"2FWEB-INF"%"2Fxhtml"%"2Fregistration"%"2FdomainAvailabilityCheck.xhtml&_domainAvailabilityCheck_portlet_WAR_dotgov_portlets_com.sun.faces.portlet.NAME_SPACE=_domainAvailabilityCheck_portlet_WAR_dotgov_portlets_"';
61
$bef .= ' -H "Connection: keep-alive"';
62
$bef .= ' --data '.escapeshellarg('domainAvailabilityCheckForm=domainAvailabilityCheckForm&domainAvailabilityCheckForm%3ArequestedDomainName='.$domain.'&domainAvailabilityCheckForm%3Asubmit=Check+Availability&javax.faces.ViewState='.$viewstate);
63
$bef .= ' --compressed';
64
$bef .= ' --silent';
65
 
66
$out = array();
67
exec($bef, $out, $code);
68
 
69
if ($code != 0) {
70
	echo "Error (C) while querying whois service. Please manually check at $friendly_url\n";
71
	exit($code);
72
}
73
 
74
$x = implode('', $out);
75
 
76
if (!preg_match('@<strong>(.*)</tr>@ismU', $x, $m)) {
77
	echo "Error (D) while querying whois service. Please manually check at $friendly_url\n";
78
	exit(1);
79
}
80
 
81
$x = $m[1];
82
 
83
$x = str_replace('<br />', "\n", $x);
84
 
85
$x = strip_tags($x);
86
$x = trim($x);
87
$x = trimHereDoc($x); // jede einzelne Zeile
88
 
89
$x = preg_replace('@[ \\t]+@m', ' ', $x);
90
 
91
echo "% Parsing via regex from '$friendly_url'\n\n";
92
echo "$x\n\n";
93
exit(0);
94
 
95
# ---
96
 
97
function trimHereDoc($t) {
98
	# http://stackoverflow.com/a/1655176
99
	return implode("\n", array_map('trim', explode("\n", $t)));
100
}