about summary refs log tree commit diff stats
path: root/central
diff options
context:
space:
mode:
Diffstat (limited to 'central')
-rw-r--r--central/trunk/includes/instadisc.php80
-rw-r--r--central/trunk/xmlrpc.php82
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
250function 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
109function 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
78function sendFromUpdate($subscriptionURL, $title, $author, $url, $semantics, $encryptionID) 139function 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"),