* * PsychoStats 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 PsychoStats. If not, see <http://www.gnu.org/licenses/>. * * Version: $Id: index.php 442 2008-05-13 10:30:11Z lifo $ */ define("PSYCHOSTATS_PAGE", true); define("PSYCHOSTATS_INSTALL_PAGE", true); require_once "./common.php"; $opts = init_session_opts(true); $newer_avail = false; $h = new HTTP_Request('http://updates.psychostats.com/releases/' . PS_INSTALL_VERSION); $res = $h->download(); if ($h->status() == '200' and $res) { $newer_avail = $res[0] ? trim($res[0]) : 0; $release_date = $h->header('x-psychostats-date'); $ps_version = $h->header('x-psychostats-ver'); } $newest_url = 'http://www.psychostats.com/downloads/psychostats/'; $validfields = array('s', 're'); $cms->theme->assign_request_vars($validfields, true); $cms->theme->assign(array('install' => $opts['install'], 'newer_avail' => $newer_avail, 'release_date' => $release_date, 'ps_version' => $ps_version, 'local_ps_version' => PS_INSTALL_VERSION, 'newest_url' => $newest_url)); // display the output $basename = basename(__FILE__, '.php'); $cms->theme->add_css('css/2column.css'); $cms->full_page($basename, $basename, $basename . '_header', $basename . '_footer');
function ip_lookup($ip) { if (is_array($ip)) { $ip = array_unique(array_filter($ip, 'not_empty')); } if (!$ip) { return ''; } $url = $this->conf['theme']['map']['iplookup_url']; if (!$url) { return false; } if (substr($url, 0, 4) == 'http') { // URL LOOKUP $ipstr = is_array($ip) ? implode(',', $ip) : $ip; $url = strpos($url, '$ip') === FALSE ? $url . $ipstr : str_replace('$ip', $ipstr, $url); include_once dirname(dirname(__FILE__)) . '/class_HTTP.php'; $lookup = new HTTP_Request($url); $text = $lookup->download(); return $text; } else { // LOCAL FILE LOOKUP // geoip* must be in the path somewhere... if (!@(include_once "includes/geoipcity.inc")) { return '<markers></markers>'; } $gi = geoip_open($url, GEOIP_STANDARD); $list = (array) $ip; $info = array(); foreach ($list as $ipstr) { $info[] = geoip_record_by_addr($gi, $ipstr); } geoip_close($gi); $xml = "<markers>\n"; if ($info) { for ($i = 0; $i < count($info); $i++) { $xml .= sprintf(" <marker lat='%s' lng='%s' ip='%s' />\n", $info[$i]->latitude, $info[$i]->longitude, $list[$i]); } } $xml .= "</markers>\n"; return $xml; } }
function download($follow_redirect = true) { $crlf = "\r\n"; // generate request $req = $this->_method . ' ' . $this->_uri . ' HTTP/1.0' . $crlf . 'Host: ' . $this->_host . $crlf . $crlf; if ($this->_postdata) { $req .= $this->_postdata; } // fetch ob_start(); $this->_fp = fsockopen(($this->_protocol == 'https' ? 'ssl://' : '') . $this->_host, $this->_port, $this->errno, $this->errstr, 10); $err = ob_get_clean(); if ($err) { $this->_fp = false; $this->_error = strip_tags($err); $response = ''; } if ($this->_fp) { fwrite($this->_fp, $req); while (is_resource($this->_fp) && $this->_fp && !feof($this->_fp)) { $response .= fread($this->_fp, 1024); } fclose($this->_fp); } else { $response = ''; } // split header and body $pos = strpos($response, $crlf . $crlf); if ($pos === false) { return $response; } $header = substr($response, 0, $pos); $body = substr($response, $pos + 2 * strlen($crlf)); // parse headers $this->_headers = array(); $lines = explode($crlf, $header); list($zzz, $this->_error, $zzz) = explode(" ", $lines[0], 3); unset($zzz); foreach ($lines as $line) { if (($pos = strpos($line, ':')) !== false) { $this->_headers[strtolower(trim(substr($line, 0, $pos)))] = trim(substr($line, $pos + 1)); } } // redirection? if (isset($headers['location']) and $follow_redirect) { $http = new HTTP_Request($headers['location']); return $http->download($http); } else { $this->_text = $body; return $body; } }