1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
|
<?php
/*
444444444
4::::::::4
4:::::::::4
4::::44::::4
4::::4 4::::4 Four Island
4::::4 4::::4
4::::4 4::::4 Written and maintained by Starla Insigna
4::::444444::::444
4::::::::::::::::4 xmlrpc.php
4444444444:::::444
4::::4 Please do not use, reproduce or steal the
4::::4 contents of this file without explicit
4::::4 permission from Hatkirby.
44::::::44
4::::::::4
4444444444
*/
require('headerproc.php');
include('../security/config.php');
include('includes/db.php');
include('includes/xmlrpc/xmlrpc.inc');
include('includes/xmlrpc/xmlrpcs.inc');
include('includes/functions.php');
function ping($xmlrpcmsg)
{
$from = $xmlrpcmsg->getParam(0)->scalarVal();
$to = $xmlrpcmsg->getParam(1)->scalarVal();
if (preg_match('/^http:\/\/w?w?w?\.?fourisland\.com\/blog\/([-a-z0-9]+)\/$/',$to))
{
$slug = preg_replace('/^http:\/\/w?w?w?\.?fourisland\.com\/blog\/([-a-z0-9]+)\/$/','$1',$to);
$getpost = "SELECT * FROM updates WHERE slug = \"" . $slug . "\"";
$getpost2 = mysql_query($getpost);
$getpost3 = mysql_fetch_array($getpost2);
if ($getpost3['slug'] == $slug)
{
$c = curl_init();
curl_setopt($c, CURLOPT_URL, $from);
curl_setopt($c, CURLOPT_RETURNTRANSFER, true);
curl_setopt($c, CURLOPT_HEADER, false);
$page_data = curl_exec($c);
curl_close($c);
if (stripos($page_data,$to) !== FALSE)
{
if (preg_match('/<TITLE>([^>]+)<\/TITLE>/i',$page_data,$matches))
{
$title = $matches[1];
} else {
$title = $from;
}
$text = substr($page_data,(stripos($page_data,$to)-300),700);
$text = strip_tags($text);
$text = str_replace("\n",' ',$text);
$commentText = "[url=" . $from . "]" . $title . "[/url]\n\n[....] " . $text . " [....]";
$getping = "SELECT * FROM comments WHERE page_id = \"updates-" . $getpost3['id'] . "\" AND comment = \"" . addslashes($commentText) . "\"";
$getping2 = mysql_query($getping);
$getping3 = mysql_fetch_array($getping2);
if ($getping3['comment'] == $commentText)
{
return new xmlrpcresp(0, 48, "Target uri cannot be used as target");
} else {
$insping = "INSERT INTO comments (page_id,username,comment) VALUES (\"updates-" . $getpost3['id'] . "\",\"Pingback\",\"" . $commentText . "\")";
$insping2 = mysql_query($insping);
recalcPop($getpost3['id']);
return new xmlrpcresp(new xmlrpcval("YAY! Your Pingback has been registered!", "string"));
}
} else {
return new xmlrpcresp(0, 17, "Source uri does have link to target uri");
}
} else {
return new xmlrpcresp(0, 32, "Target uri does not exist");
}
} else {
return new xmlrpcresp(0, 33, "Target uri cannot be used as target");
}
}
function rr($xmlrpcmsg)
{
return new xmlrpcresp(new xmlrpcval(0, "int"));
}
$s = new xmlrpc_server(array(
"pingback.ping" => array("function" => "ping"),
"InstaDisc.checkRegistration" => array("function" => "rr")));
?>
|