diff options
| -rw-r--r-- | central/trunk/includes/instadisc.php | 80 | ||||
| -rw-r--r-- | central/trunk/xmlrpc.php | 82 |
2 files changed, 121 insertions, 41 deletions
| diff --git a/central/trunk/includes/instadisc.php b/central/trunk/includes/instadisc.php index 1c4c968..1f40b7a 100644 --- a/central/trunk/includes/instadisc.php +++ b/central/trunk/includes/instadisc.php | |||
| @@ -58,41 +58,22 @@ function instaDisc_sendItem($username, $id) | |||
| 58 | $getuser2 = mysql_query($getuser); | 58 | $getuser2 = mysql_query($getuser); |
| 59 | $getuser3 = mysql_fetch_array($getuser2); | 59 | $getuser3 = mysql_fetch_array($getuser2); |
| 60 | 60 | ||
| 61 | $fp = @fsockopen($getuser3['ip'], 1204, $errno, $errstr); | 61 | if (($getuser3['downloadItemMode'] == 'Push') && ($getuser3['port'] != 0)) |
| 62 | if ($fp) | ||
| 63 | { | 62 | { |
| 64 | $verID = rand(1,2147483647); | 63 | $fp = @fsockopen($getuser3['ip'], $getuser3['port'], $errno, $errstr); |
| 65 | 64 | if ($fp) | |
| 66 | $title = str_replace(': ', '__INSTADISC__', $getitem3['title']); | ||
| 67 | |||
| 68 | $out = 'ID: ' . $id . "\r\n"; | ||
| 69 | $out .= 'Verification: ' . md5($username . ':' . $getuser3['password'] . ':' . $verID) . "\r\n"; | ||
| 70 | $out .= 'Verification-ID: ' . $verID . "\r\n"; | ||
| 71 | $out .= 'Subscription: ' . $getitem3['subscription'] . "\r\n"; | ||
| 72 | $out .= 'Title: ' . $title . "\r\n"; | ||
| 73 | $out .= 'Author: ' . $getitem3['author'] . "\r\n"; | ||
| 74 | $out .= 'URL: ' . $getitem3['url'] . "\r\n"; | ||
| 75 | |||
| 76 | $semantics = unserialize($getitem3['semantics']); | ||
| 77 | foreach ($semantics as $name => $value) | ||
| 78 | { | ||
| 79 | $value = str_replace(': ', '__INSTADISC__', $value); | ||
| 80 | $out .= $name . ': ' . $value . "\r\n"; | ||
| 81 | } | ||
| 82 | |||
| 83 | if ($getitem3['encryptionID'] != 0) | ||
| 84 | { | 65 | { |
| 85 | $out .= 'Encryption-ID: ' . $getitem3['encryptionID'] . "\r\n"; | 66 | $title = str_replace(': ', '__INSTADISC__', $getitem3['title']); |
| 86 | } | ||
| 87 | 67 | ||
| 88 | $out .= "\r\n\r\n"; | 68 | $out = instaDisc_formItem($username, $id, "\r\n") . "\r\n\r\n"; |
| 89 | 69 | ||
| 90 | fwrite($fp, $out); | 70 | fwrite($fp, $out); |
| 91 | fclose($fp); | 71 | fclose($fp); |
| 92 | 72 | ||
| 93 | return true; | 73 | return true; |
| 94 | } else { | 74 | } else { |
| 95 | return false; | 75 | return false; |
| 76 | } | ||
| 96 | } | 77 | } |
| 97 | } | 78 | } |
| 98 | } | 79 | } |
| @@ -111,7 +92,10 @@ function instaDisc_addItem($username, $subscription, $title, $author, $url, $sem | |||
| 111 | $insitem = "INSERT INTO inbox (username, itemID, subscription, title, author, url, semantics, encryptionID) VALUES (\"" . mysql_real_escape_string($username) . "\", " . $itemID . ", \"" . mysql_real_escape_string($subscription) . "\", \"" . mysql_real_escape_string($title) . "\", \"" . mysql_real_escape_string($author) . "\", \"" . mysql_real_escape_string($url) . "\", \"" . mysql_real_escape_string($semantics) . "\"," . $encryptionID . ")"; | 92 | $insitem = "INSERT INTO inbox (username, itemID, subscription, title, author, url, semantics, encryptionID) VALUES (\"" . mysql_real_escape_string($username) . "\", " . $itemID . ", \"" . mysql_real_escape_string($subscription) . "\", \"" . mysql_real_escape_string($title) . "\", \"" . mysql_real_escape_string($author) . "\", \"" . mysql_real_escape_string($url) . "\", \"" . mysql_real_escape_string($semantics) . "\"," . $encryptionID . ")"; |
| 112 | $insitem2 = mysql_query($insitem); | 93 | $insitem2 = mysql_query($insitem); |
| 113 | 94 | ||
| 114 | instaDisc_sendItem($username, $itemID); | 95 | if ($getuser3['downloadItemMode'] == 'Push') |
| 96 | { | ||
| 97 | instaDisc_sendItem($username, $itemID); | ||
| 98 | } | ||
| 115 | } | 99 | } |
| 116 | } | 100 | } |
| 117 | 101 | ||
| @@ -263,4 +247,38 @@ function instaDisc_initalizePort($username) | |||
| 263 | return $port; | 247 | return $port; |
| 264 | } | 248 | } |
| 265 | 249 | ||
| 250 | function instaDisc_formItem($username, $id, $ln = "\n") | ||
| 251 | { | ||
| 252 | $getitem = "SELECT * FROM inbox WHERE username = \"" . mysql_real_escape_string($username) . "\" AND itemID = " . $id; | ||
| 253 | $getitem2 = mysql_query($getitem); | ||
| 254 | $getitem3 = mysql_fetch_array($getitem2); | ||
| 255 | if ($getitem3['username'] == $username) | ||
| 256 | { | ||
| 257 | $getuser = "SELECT * FROM users WHERE username = \"" . mysql_real_escape_string($username) . "\""; | ||
| 258 | $getuser2 = mysql_query($getuser); | ||
| 259 | $getuser3 = mysql_fetch_array($getuser2); | ||
| 260 | |||
| 261 | $verID = rand(1,2147483647); | ||
| 262 | |||
| 263 | $out = 'ID: ' . $id . $ln; | ||
| 264 | $out .= 'Verification: ' . md5($username . ':' . $getuser3['password'] . ':' . $verID) . $ln; | ||
| 265 | $out .= 'Verification-ID: ' . $verID . $ln; | ||
| 266 | $out .= 'Subscription: ' . $getitem3['subscription'] . $ln; | ||
| 267 | $out .= 'Title: ' . $title . $ln; | ||
| 268 | $out .= 'Author: ' . $getitem3['author'] . $ln; | ||
| 269 | $out .= 'URL: ' . $getitem3['url'] . $ln; | ||
| 270 | |||
| 271 | $semantics = unserialize($getitem3['semantics']); | ||
| 272 | foreach ($semantics as $name => $value) | ||
| 273 | { | ||
| 274 | $value = str_replace(': ', '__INSTADISC__', $value); | ||
| 275 | $out .= $name . ': ' . $value . $ln; | ||
| 276 | } | ||
| 277 | if ($getitem3['encryptionID'] != 0) | ||
| 278 | { | ||
| 279 | $out .= 'Encryption-ID: ' . $getitem3['encryptionID'] . $ln; | ||
| 280 | } | ||
| 281 | } | ||
| 282 | } | ||
| 283 | |||
| 266 | ?> | 284 | ?> |
| diff --git a/central/trunk/xmlrpc.php b/central/trunk/xmlrpc.php index 2e3aa62..0e66940 100644 --- a/central/trunk/xmlrpc.php +++ b/central/trunk/xmlrpc.php | |||
| @@ -44,9 +44,18 @@ function resendItem($username, $verification, $verificationID, $id) | |||
| 44 | $getitem3 = mysql_fetch_array($getitem2); | 44 | $getitem3 = mysql_fetch_array($getitem2); |
| 45 | if ($getitem3['itemID'] == $id) | 45 | if ($getitem3['itemID'] == $id) |
| 46 | { | 46 | { |
| 47 | instaDisc_sendItem($username, $id); | 47 | $getuser = "SELECT * FROM users WHERE username = \"" . mysql_real_escape_string($username) . "\""; |
| 48 | $getuser2 = mysql_query($getuser); | ||
| 49 | $getuser3 = mysql_fetch_array($getuser2); | ||
| 50 | if ($getuser3['downloadItemMode'] == 'Push') | ||
| 51 | { | ||
| 52 | instaDisc_sendItem($username, $id); | ||
| 48 | 53 | ||
| 49 | return new xmlrpcresp(new xmlrpcval(0, "int")); | 54 | return new xmlrpcresp(new xmlrpcval(0, "int")); |
| 55 | } else if ($getuser3['downloadItemMode'] == 'Pull') | ||
| 56 | { | ||
| 57 | return new xmlrpcresp(new xmlrpcval(instaDisc_formItem($username, $id), 'string')); | ||
| 58 | } | ||
| 50 | } | 59 | } |
| 51 | } | 60 | } |
| 52 | 61 | ||
| @@ -57,24 +66,76 @@ function requestRetained($username, $verification, $verificationID) | |||
| 57 | { | 66 | { |
| 58 | if (instaDisc_checkVerification($username, $verification, $verificationID, 'users', 'username', 'password')) | 67 | if (instaDisc_checkVerification($username, $verification, $verificationID, 'users', 'username', 'password')) |
| 59 | { | 68 | { |
| 60 | $getitems = "SELECT * FROM inbox WHERE username = \"" . mysql_real_escape_string($username) . "\""; | 69 | $getuser = "SELECT * FROM users WHERE username = \"" . mysql_real_escape_string($username) . "\""; |
| 61 | $getitems2 = mysql_query($getitems); | 70 | $getuser2 = mysql_query($getuser); |
| 62 | $i=0; | 71 | $getuser3 = mysql_fetch_array($getuser2); |
| 63 | while ($getitems3[$i] = mysql_fetch_array($getitems2)) | 72 | if ($getuser3['downloadItemMode'] == 'Push') |
| 73 | { | ||
| 74 | $getitems = "SELECT * FROM inbox WHERE username = \"" . mysql_real_escape_string($username) . "\""; | ||
| 75 | $getitems2 = mysql_query($getitems); | ||
| 76 | $i=0; | ||
| 77 | while ($getitems3[$i] = mysql_fetch_array($getitems2)) | ||
| 78 | { | ||
| 79 | if (!instaDisc_sendItem($username, $getitems3[$i]['itemID'])) | ||
| 80 | { | ||
| 81 | return new xmlrpcresp(new xmlrpcval(1, "int")); | ||
| 82 | } | ||
| 83 | $i++; | ||
| 84 | } | ||
| 85 | |||
| 86 | return new xmlrpcresp(new xmlrpcval(0, "int")); | ||
| 87 | } else if ($getuser3['downloadItemMode'] == 'Pull') | ||
| 64 | { | 88 | { |
| 65 | if (!instaDisc_sendItem($username, $getitems3[$i]['itemID'])) | 89 | $getitems = "SELECT * FROM inbox WHERE username = \"" . mysql_real_escape_string($username) . "\" LIMIT 0,2"; |
| 90 | $getitems2 = mysql_query($getitems); | ||
| 91 | $getitems3 = mysql_fetch_array($getitems2); | ||
| 92 | $getitems4 = mysql_fetch_array($getitems2); | ||
| 93 | if ($getitems3['username'] == $username) | ||
| 66 | { | 94 | { |
| 67 | return new xmlrpcresp(new xmlrpcval(1, "int")); | 95 | $item = instaDisc_formItem($username, $getitems3['id']); |
| 96 | if ($getitems4['username'] == $username) | ||
| 97 | { | ||
| 98 | $item .= 'More: ' . $getitems4['id'] . "\n"; | ||
| 99 | } | ||
| 100 | |||
| 101 | return new xmlrpcresp(new xmlrpcval($item, 'string')); | ||
| 68 | } | 102 | } |
| 69 | $i++; | ||
| 70 | } | 103 | } |
| 104 | } | ||
| 71 | 105 | ||
| 72 | return new xmlrpcresp(new xmlrpcval(0, "int")); | 106 | return new xmlrpcresp(new xmlrpcval(1, "int")); |
| 107 | } | ||
| 108 | |||
| 109 | function sendItem($username, $verification, $verificationID, $id) | ||
| 110 | { | ||
| 111 | if (instaDisc_checkVerification($username, $verification, $verificationID, 'users', 'username', 'password')) | ||
| 112 | { | ||
| 113 | $getuser = "SELECT * FROM users WHERE username = \"" . mysql_real_escape_string($username) . "\""; | ||
| 114 | $getuser2 = mysql_query($getuser); | ||
| 115 | $getuser3 = mysql_fetch_array($getuser2); | ||
| 116 | if ($getuser3['downloadItemMode'] == 'Pull') | ||
| 117 | { | ||
| 118 | $getitems = "SELECT * FROM inbox WHERE username = \"" . mysql_real_escape_string($username) . "\" AND itemID > " . ($id-1) . " LIMIT 0,2"; | ||
| 119 | $getitems2 = mysql_query($getitems); | ||
| 120 | $getitems3 = mysql_fetch_array($getitems2); | ||
| 121 | $getitems4 = mysql_fetch_array($getitems2); | ||
| 122 | if ($getitems3['username'] == $username) | ||
| 123 | { | ||
| 124 | $item = instaDisc_formItem($username, $getitems3['id']); | ||
| 125 | if ($getitems4['username'] == $username) | ||
| 126 | { | ||
| 127 | $item .= 'More: ' . $getitems4['id'] . "\n"; | ||
| 128 | } | ||
| 129 | |||
| 130 | return new xmlrpcresp(new xmlrpcval($item, 'string')); | ||
| 131 | } | ||
| 132 | } | ||
| 73 | } | 133 | } |
| 74 | 134 | ||
| 75 | return new xmlrpcresp(new xmlrpcval(1, "int")); | 135 | return new xmlrpcresp(new xmlrpcval(1, "int")); |
| 76 | } | 136 | } |
| 77 | 137 | ||
| 138 | |||
| 78 | function sendFromUpdate($subscriptionURL, $title, $author, $url, $semantics, $encryptionID) | 139 | function sendFromUpdate($subscriptionURL, $title, $author, $url, $semantics, $encryptionID) |
| 79 | { | 140 | { |
| 80 | $getsed = "SELECT * FROM subscriptions WHERE url = \"" . mysql_real_escape_string($subscriptionURL) . "\""; | 141 | $getsed = "SELECT * FROM subscriptions WHERE url = \"" . mysql_real_escape_string($subscriptionURL) . "\""; |
| @@ -180,6 +241,7 @@ $s = new xmlrpc_server( array( "InstaDisc.checkRegistration" => array("function" | |||
| 180 | "InstaDisc.deleteItem" => array("function" => "deleteItem"), | 241 | "InstaDisc.deleteItem" => array("function" => "deleteItem"), |
| 181 | "InstaDisc.resendItem" => array("function" => "resendItem"), | 242 | "InstaDisc.resendItem" => array("function" => "resendItem"), |
| 182 | "InstaDisc.requestRetained" => array("function" => "requestRetained"), | 243 | "InstaDisc.requestRetained" => array("function" => "requestRetained"), |
| 244 | "InstaDisc.sendItem" => array("function" => "sendItem"), | ||
| 183 | "InstaDisc.sendFromUpdate" => array("function" => "sendFromUpdate"), | 245 | "InstaDisc.sendFromUpdate" => array("function" => "sendFromUpdate"), |
| 184 | "InstaDisc.deleteSubscription" => array("function" => "deleteSubscription"), | 246 | "InstaDisc.deleteSubscription" => array("function" => "deleteSubscription"), |
| 185 | "InstaDisc.addSubscription" => array("function" => "addSubscription"), | 247 | "InstaDisc.addSubscription" => array("function" => "addSubscription"), |
