api.php 3.14 KB
Newer Older
root's avatar
root committed
1
<?php
David Morley's avatar
fix api  
David Morley committed
2

3
//Copyright (c) 2011, David Morley. This file is licensed under the Affero General Public License version 3 or later. See the COPYRIGHT file.
David Morley's avatar
fix api  
David Morley committed
4
if ($_GET['key'] != "4r45tg") {die;}
dmorley's avatar
cleanup  
dmorley committed
5 6 7 8
include('db/config.php');
$dbh = pg_connect("dbname=$pgdb user=$pguser password=$pgpass");
if (!$dbh) {
  die("Error in connection: " . pg_last_error());
David Morley's avatar
fix api  
David Morley committed
9
}
10
if ($_GET['format'] == "georss") {
dmorley's avatar
cleanup  
dmorley committed
11 12
  echo <<<EOF
  <?xml version="1.0" encoding="utf-8"?>
David Morley's avatar
fix api  
David Morley committed
13
  <feed xmlns="http://www.w3.org/2005/Atom"
14 15 16 17
  xmlns:georss="http://www.georss.org/georss">
  <title>Diaspora Pods</title>
  <subtitle>IP Locations of Diaspora pods on podupti.me</subtitle>
  <link href="http://podupti.me/"/>
David Morley's avatar
fix api  
David Morley committed
18 19

EOF;
dmorley's avatar
cleanup  
dmorley committed
20 21 22
  $sql = "SELECT * FROM pods WHERE hidden <> 'yes'";
  $result = pg_query($dbh, $sql);
  if (!$result) {
David Morley's avatar
fix api  
David Morley committed
23 24
   die("Error in SQL query: " . pg_last_error());
 }
dmorley's avatar
cleanup  
dmorley committed
25 26 27 28 29
  $numrows = pg_num_rows($result);
  while ($row = pg_fetch_array($result)) {
    $pod_name = htmlentities($row["name"], ENT_QUOTES);
    $tip="";
    $tip.="\n This pod {$pod_name} has been watched for {$row["monthsmonitored"]} months and its average ping time is {$row["responsetimelast7"]} with uptime of {$row["uptimelast7"]}% this month and was last checked on {$row["dateupdated"]}. ";
David Morley's avatar
fix api  
David Morley committed
30
    $tip.="On a score of 100 this pod is a {$row["score"]} right now";
dmorley's avatar
cleanup  
dmorley committed
31
    if ($row["secure"] == "true") {$method = "https://";} else {$method = "http://";}
David Morley's avatar
fix api  
David Morley committed
32 33 34 35 36 37
   echo <<<EOF
   <entry>
   <title>{$method}{$row['domain']}</title>
   <link href="{$method}{$row['domain']}"/>
   <id>urn:{$row['domain']}</id>
   <summary>Pod Location is: {$row['country']}
dmorley's avatar
dmorley committed
38
	&#xA;{$tip}</summary>
David Morley's avatar
fix api  
David Morley committed
39 40 41
   <georss:point>{$row['lat']} {$row['long']}</georss:point>
   <georss:featureName>{$row['domain']}</georss:featureName>
   </entry>
root's avatar
root committed
42

David Morley's avatar
fix api  
David Morley committed
43
EOF;
dmorley's avatar
cleanup  
dmorley committed
44 45
  }
  echo "</feed>";
root's avatar
root committed
46
}
47
elseif ($_GET['format'] == "json") {
David Morley's avatar
David Morley committed
48
  $sql = "SELECT id,domain,status,secure,score,userrating,adminrating,city,state,country,lat,long,ip,ipv6,pingdomurl,monthsmonitored,uptimelast7,responsetimelast7,local_posts,comment_counts,dateCreated,dateUpdated,dateLaststats,hidden FROM pods";
dmorley's avatar
cleanup  
dmorley committed
49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
  $result = pg_query($dbh, $sql);
  if (!$result) {
    die("Error in SQL query: " . pg_last_error());
  }
  $numrows = pg_num_rows($result);
  //json output, thx Vipul A M for fixing this
  header('Content-type: application/json');
  $rows=array_values(pg_fetch_all($result));
  $obj->podcount          = $numrows;
  $obj->pods             = $rows;
  if ($_GET['method'] == "jsonp") {
    print $_GET['callback'] . '(' . json_encode($obj) . ')';
  } else {
    print json_encode($obj);
  }
David Morley's avatar
fix api  
David Morley committed
64 65
}
 else {
dmorley's avatar
cleanup  
dmorley committed
66 67 68 69 70 71 72 73
  $i=0;
  $sql = "SELECT * FROM pods WHERE hidden <> 'yes' ORDER BY uptimelast7 DESC";
  $result = pg_query($dbh, $sql);
  if (!$result) {
    die("Error in SQL query: " . pg_last_error());
  }
  $numrows = pg_num_rows($result);
  while ($row = pg_fetch_array($result)) {
David Morley's avatar
fix api  
David Morley committed
74
    if ($row["status"] == "up"){$status="Online";} else {$status="Offline";}
dmorley's avatar
cleanup  
dmorley committed
75 76 77 78 79 80
    if ($row["secure"] == "true") {$method = "https://";$class="green";} else {$method = "http://";$class="red";}
    echo $row["domain"] ." Up ".$row["uptimelast7"]."% This Month - Located in: ".$row["country"];
    if ($i < ($numrows -1)) {
      echo ",";
    }
    $i++;
David Morley's avatar
fix api  
David Morley committed
81 82 83 84 85

}

 pg_free_result($result);
 pg_close($dbh);
root's avatar
root committed
86 87
}
?>