From a8d881a7aaa9322a47023593c71aaf7994dc789e Mon Sep 17 00:00:00 2001 From: Kelly Rauchenberger Date: Fri, 1 Aug 2008 15:36:12 +0000 Subject: Central: Added recieving functions The next step is to implement the instaDisc_* functions and complete the Central Server. --- central/trunk/xmlrpc.php | 148 +++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 142 insertions(+), 6 deletions(-) (limited to 'central/trunk/xmlrpc.php') diff --git a/central/trunk/xmlrpc.php b/central/trunk/xmlrpc.php index a057c12..ec64704 100644 --- a/central/trunk/xmlrpc.php +++ b/central/trunk/xmlrpc.php @@ -89,11 +89,147 @@ function resendItem($xmlrpcmsg) return new xmlrpcresp(new xmlrpcval(1, "int")); } -$s = new xmlrpc_server(array( - "InstaDisc.checkRegistration" => array("function" => "checkRegistration"), - "InstaDisc.deleteItem" => array("function" => "deleteItem"), - "InstaDisc.resendItem" => array("function" => "resendItem"), - "InstaDisc.requestRetained" => array("function" => "requestRetained") - )); +function sendFromUpdate($xmlrpcmsg) +{ + $username = $xmlrpcmsg->getParam(0)->scalarVal(); + $verification = $xmlrpcmsg->getParam(1)->scalarVal(); + $verificationID = $xmlrpcmsg->getParam(2)->scalarVal(); + $subscription = $xmlrpcmsg->getParam(3)->scalarVal(); + $title = $xmlrpcmsg->getParam(4)->scalarVal(); + $author = $xmlrpcmsg->getParam(5)->scalarVal(); + $url = $xmlrpcmsg->getParam(6)->scalarVal(); + $semantics = deserialize($xmlrpcmsg->getParam(7)->serialize()); + + $getuser = "SELECT * FROM users WHERE username = \"" . $username . "\""; + $getuser2 = mysql_query($getuser); + $getuser3 = mysql_fetch_array($getuser2); + if ($getuser3['username'] == $username) + { + $test = $username . ':' . $getuser3['password'] . ':' . $verificationID; + if (md5($test) == $verification) + { + $getusubs = "SELECT * FROM subscriptions WHERE username = \"" . $username . "\" AND uri = \"" . $subscription . "\" AND owner = \"true\""; + $getusubs2 = mysql_query($getusubs); + $getusubs3 = mysql_fetch_array($getusubs2); + if ($getusubs['username'] == $username) + { + $cserver = $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; + $getuk = "SELECT * FROM centralServers WHERE url = \"" . $cserver . "\""; + $getuk2 = mysql_query($getuk); + $getuk3 = mysql_fetch_array($getuk2); + + $getcs = "SELECT * FROM centralServers"; + $getcs2 = mysql_query($getcs); + $i=0; + while ($getcs3[$i] = mysql_fetch_array($getcs2)) + { + $verID = rand(1,65536); + + $client = new xmlrpc_client($getcs3[$i]['url']); + $msg = new xmlrpcmsg("InstaDisc.sendFromCentral", array( new xmlrpcval($cserver, 'string'), + new xmlrpcval(md5($cserver + ":" + $getuk3['key'] + ":" + $verID), 'string'), + new xmlrpcval($verID, 'int'), + new xmlrpcval($subscription, 'string'), + new xmlrpcval($title, 'string'), + new xmlrpcval($author, 'string'), + new xmlrpcval($url, 'string'), + new xmlrpcval($semantics, 'array'), + new xmlrpcval(getConfig('softwareVersion'), 'int'), + new xmlrpcval(getConfig('databaseVersion'), 'int'))); + $client->send($msg); + $i++; + } + + return new xmlrpcresp(new xmlrpcval(0, "int")); + } + } + } + + return new xmlrpcresp(new xmlrpcval(1, "int")); +} + +function sendFromCentral($xmlrpcmsg) +{ + $cserver = $xmlrpcmsg->getParam(0)->scalarVal(); + $verification = $xmlrpcmsg->getParam(1)->scalarVal(); + $verificationID = $xmlrpcmsg->getParam(2)->scalarVal(); + $subscription = $xmlrpcmsg->getParam(3)->scalarVal(); + $title = $xmlrpcmsg->getParam(4)->scalarVal(); + $author = $xmlrpcmsg->getParam(5)->scalarVal(); + $url = $xmlrpcmsg->getParam(6)->scalarVal(); + $semantics = deserialize($xmlrpcmsg->getParam(7)->serialize()); + $softwareVersion = $xmlrpcmsg->getParam(8)->scalarVal(); + $databaseVersion = $xmlrpcmsg->getParam(9)->scalarVal(); + + $getcs = "SELECT * FROM centralServers WHERE url = \"" . $cserver . "\""; + $getcs2 = mysql_query($getcs); + $getcs3 = mysql_fetch_array($getcs2); + if ($getcs3['url'] == $cserver) + { + $test = $cserver . ':' . $getcs3['key'] . ':' . $verificationID; + if (md5($test) == $verification) + { + if ($softwareVersion > getConfig('softwareVersion')) + { + instaDisc_sendUpdateNotice(); + } else if ($softwareVersion < getConfig('softwareVersion')) + { + $cserver2 = $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; + $getuk = "SELECT * FROM centralServers WHERE url = \"" . $cserver2 . "\""; + $getuk2 = mysql_query($getuk); + $getuk3 = mysql_fetch_array($getuk2); + + $verID = rand(1,65536); + + $client = new xmlrpc_client($cserver); + $msg = new xmlrpcmsg("InstaDisc.sendUpdateNotice", array( new xmlrpcval($cserver2, 'string'), + new xmlrpcval(md5($cserver2 . ':' . $getuk3['key'] . ':' . $verID), 'string'), + new xmlrpcval($verID, 'int'), + new xmlrpcval(getConfig('softwareVersion'), 'int'))); + $client->send($msg); + } + + if ($databaseVersion > getConfig('databaseVersion')) + { + $cserver2 = $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF']; + $getuk = "SELECT * FROM centralServers WHERE url = \"" . $cserver2 . "\""; + $getuk2 = mysql_query($getuk); + $getuk3 = mysql_fetch_array($getuk2); + + $verID = rand(1,65536); + + $client = new xmlrpc_client($cserver); + $msg = new xmlrpcmsg("InstaDisc.askForDatabase", array( new xmlrpcval($cserver2, 'string'), + new xmlrpcval(md5($cserver2 . ':' . $getuk3['key'] . ':' . $verID), 'string'), + new xmlrpcval($verID, 'int'), + new xmlrpcval(getConfig('databaseVersion'), 'int'))); + $client->send($msg); + } else if ($databaseVersion < getConfig('databaseVersion')) + { + instaDisc_sendDatabase($cserver); + } + + $getsed = "SELECT * FROM subscriptions WHERE uri = \"" . $subscription . "\""; + $getsed2 = mysql_query($getsed); + $i=0; + while ($getsed3[$i] = mysql_fetch_array($getsed2)) + { + instaDisc_addItem($getsed3['username'], $subscription, $title, $author, $url, $semantics); + $i++; + } + + return new xmlrpcresp(new xmlrpcval(0, "int")); + } + } + + return new xmlrpcresp(new xmlrpcval(1, "int")); +} + +$s = new xmlrpc_server(array( "InstaDisc.checkRegistration" => array("function" => "checkRegistration"), + "InstaDisc.deleteItem" => array("function" => "deleteItem"), + "InstaDisc.resendItem" => array("function" => "resendItem"), + "InstaDisc.requestRetained" => array("function" => "requestRetained"), + "InstaDisc.sendFromUpdate" => array("function" => "sendFromUpdate"), + "InstaDisc.sendFromCentral" => array("function" => "sendFromCentral"))); ?> -- cgit 1.4.1