diff options
Diffstat (limited to 'update')
-rw-r--r-- | update/library/trunk/instadisc.php | 78 |
1 files changed, 35 insertions, 43 deletions
diff --git a/update/library/trunk/instadisc.php b/update/library/trunk/instadisc.php index 1d8e44a..f5be298 100644 --- a/update/library/trunk/instadisc.php +++ b/update/library/trunk/instadisc.php | |||
@@ -14,9 +14,32 @@ $idusActivationKey = array(); | |||
14 | $idusEncryptionKey = array(); | 14 | $idusEncryptionKey = array(); |
15 | $instaDisc_subCount = 0; | 15 | $instaDisc_subCount = 0; |
16 | 16 | ||
17 | function instaDisc_sendItem($id, $title, $author, $url, $semantics, $encryptionID = 0) | 17 | function instaDisc_sendItem($id, $title, $author, $url, $semantics) |
18 | { | 18 | { |
19 | global $idusUsername, $idusPassword, $idusCentralServer, $idusSubscriptionURI; | 19 | global $idusUsername, $idusPassword, $idusCentralServer, $idusSubscriptionURI, $idusEncryptionKey; |
20 | |||
21 | $encID = 0; | ||
22 | if (($idusEncryptionKey[$id] != '') && extension_loaded('mcrypt')) | ||
23 | { | ||
24 | $encID = rand(1,2147483647); | ||
25 | |||
26 | $cipher = "rijndael-128"; | ||
27 | $mode = "cbc"; | ||
28 | $key = substr(md5(substr(str_pad($idusEncryptionKey[$id],16,$encID),0,16)),0,16); | ||
29 | |||
30 | $td = mcrypt_module_open($cipher, "", $mode, ""); | ||
31 | |||
32 | $title = encryptString($td, $key, $title); | ||
33 | $author = encryptString($td, $key, $author); | ||
34 | $url = encryptString($td, $key, $url); | ||
35 | |||
36 | foreach ($semantics as $name => $value) | ||
37 | { | ||
38 | $semantics[$name] = encryptString($td, $key, $value); | ||
39 | } | ||
40 | |||
41 | mcrypt_module_close($td); | ||
42 | } | ||
20 | 43 | ||
21 | $verID = rand(1,2147483647); | 44 | $verID = rand(1,2147483647); |
22 | 45 | ||
@@ -29,7 +52,7 @@ function instaDisc_sendItem($id, $title, $author, $url, $semantics, $encryptionI | |||
29 | new xmlrpcval($author, 'string'), | 52 | new xmlrpcval($author, 'string'), |
30 | new xmlrpcval($url, 'string'), | 53 | new xmlrpcval($url, 'string'), |
31 | new xmlrpcval(serialize($semantics), 'string'), | 54 | new xmlrpcval(serialize($semantics), 'string'), |
32 | new xmlrpcval($encryptionID, 'int'))); | 55 | new xmlrpcval($encID, 'int'))); |
33 | $resp = $client->send($msg); | 56 | $resp = $client->send($msg); |
34 | $val = $resp->value()->scalarVal(); | 57 | $val = $resp->value()->scalarVal(); |
35 | 58 | ||
@@ -44,46 +67,6 @@ function instaDisc_sendItem($id, $title, $author, $url, $semantics, $encryptionI | |||
44 | } | 67 | } |
45 | } | 68 | } |
46 | 69 | ||
47 | function instaDisc_sendEncrypted($id, $title, $author, $url, $semantics) | ||
48 | { | ||
49 | global $idusEncryptionKey; | ||
50 | |||
51 | $encID = 0; | ||
52 | while ($encID == 0) | ||
53 | { | ||
54 | $encID = rand(1,2147483647); | ||
55 | } | ||
56 | |||
57 | $cipher = "rijndael-128"; | ||
58 | $mode = "cbc"; | ||
59 | $key = substr(md5(substr(str_pad($idusEncryptionKey[$id],16,$encID),0,16)),0,16); | ||
60 | |||
61 | $td = mcrypt_module_open($cipher, "", $mode, ""); | ||
62 | |||
63 | mcrypt_generic_init($td, $key, strrev($key)); | ||
64 | $title = bin2hex(mcrypt_generic($td, $title)); | ||
65 | mcrypt_generic_deinit($td); | ||
66 | |||
67 | mcrypt_generic_init($td, $key, strrev($key)); | ||
68 | $author = bin2hex(mcrypt_generic($td, $author)); | ||
69 | mcrypt_generic_deinit($td); | ||
70 | |||
71 | mcrypt_generic_init($td, $key, strrev($key)); | ||
72 | $url = bin2hex(mcrypt_generic($td, $url)); | ||
73 | mcrypt_generic_deinit($td); | ||
74 | |||
75 | foreach ($semantics as $name => $value) | ||
76 | { | ||
77 | mcrypt_generic_init($td, $key, strrev($key)); | ||
78 | $semantics[$name] = bin2hex(mcrypt_generic($td, $value)); | ||
79 | mcrypt_generic_deinit($td); | ||
80 | } | ||
81 | |||
82 | mcrypt_module_close($td); | ||
83 | |||
84 | return instaDisc_sendItem($id, $title, $author, $url, $semantics, $encID); | ||
85 | } | ||
86 | |||
87 | function instaDisc_addSubscription($username, $password, $central, $uri, $title, $category, $key = '', $enc = '') | 70 | function instaDisc_addSubscription($username, $password, $central, $uri, $title, $category, $key = '', $enc = '') |
88 | { | 71 | { |
89 | global $instaDisc_subCount, $idusUsername, $idusPassword, $idusCentralServer, $idusSubscriptionURI, $idusSubscriptionTitle, $idusSubscriptionCategory, $idusActivationKey, $idusEncryptionKey; | 72 | global $instaDisc_subCount, $idusUsername, $idusPassword, $idusCentralServer, $idusSubscriptionURI, $idusSubscriptionTitle, $idusSubscriptionCategory, $idusActivationKey, $idusEncryptionKey; |
@@ -98,4 +81,13 @@ function instaDisc_addSubscription($username, $password, $central, $uri, $title, | |||
98 | $instaDisc_subCount++; | 81 | $instaDisc_subCount++; |
99 | } | 82 | } |
100 | 83 | ||
84 | function encryptString($td, $key, $string) | ||
85 | { | ||
86 | mcrypt_generic_init($td, $key, strrev($key)); | ||
87 | $string = bin2hex(mcrypt_generic($td, $string)); | ||
88 | mcrypt_generic_deinit($td); | ||
89 | |||
90 | return $string; | ||
91 | } | ||
92 | |||
101 | ?> | 93 | ?> |