コード例 #1
0
ファイル: index.php プロジェクト: Nerus87/PsychoStats
 *
 *	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');
コード例 #2
0
ファイル: PS.php プロジェクト: Nerus87/PsychoStats
 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;
     }
 }
コード例 #3
0
ファイル: class_HTTP.php プロジェクト: Nerus87/PsychoStats
 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;
     }
 }