icon changes, feed security improvements
After Width: | Height: | Size: 8.2 KiB |
After Width: | Height: | Size: 6.9 KiB |
After Width: | Height: | Size: 659 B |
After Width: | Height: | Size: 699 B |
After Width: | Height: | Size: 17 KiB |
After Width: | Height: | Size: 12 KiB |
After Width: | Height: | Size: 1.5 KiB |
After Width: | Height: | Size: 1.4 KiB |
After Width: | Height: | Size: 3.4 KiB |
After Width: | Height: | Size: 3.1 KiB |
|
@ -0,0 +1,240 @@
|
|||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:xlink="http://www.w3.org/1999/xlink"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="96"
|
||||
height="96"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.0 r9654"
|
||||
sodipodi:docname="friendika.svg"
|
||||
inkscape:export-filename="/home/meta/Documents/My random images/friendika.png"
|
||||
inkscape:export-xdpi="80.552788"
|
||||
inkscape:export-ydpi="80.552788">
|
||||
<defs
|
||||
id="defs4">
|
||||
<linearGradient
|
||||
id="highlightgradient">
|
||||
<stop
|
||||
id="stop3833"
|
||||
offset="0"
|
||||
style="stop-color:#ffffff;stop-opacity:0.74374998;" />
|
||||
<stop
|
||||
style="stop-color:#ffffff;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3829" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
id="shadowgradient">
|
||||
<stop
|
||||
id="stop3833-5"
|
||||
offset="0"
|
||||
style="stop-color:#000000;stop-opacity:0.5;" />
|
||||
<stop
|
||||
style="stop-color:#818080;stop-opacity:0;"
|
||||
offset="1"
|
||||
id="stop3829-9" />
|
||||
</linearGradient>
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#highlightgradient"
|
||||
id="linearGradient4011"
|
||||
x1="44.948269"
|
||||
y1="0"
|
||||
x2="54.103466"
|
||||
y2="46.797421"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="scale(1,0.54545455)" />
|
||||
<linearGradient
|
||||
inkscape:collect="always"
|
||||
xlink:href="#shadowgradient"
|
||||
id="linearGradient4021"
|
||||
x1="52.016712"
|
||||
y1="96"
|
||||
x2="42.867535"
|
||||
y2="41.837971"
|
||||
gradientUnits="userSpaceOnUse"
|
||||
gradientTransform="matrix(1,0,0,0.5,0,48)" />
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter4055"
|
||||
x="-0.03"
|
||||
width="1.06"
|
||||
y="-0.12"
|
||||
height="1.24">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="1.2"
|
||||
id="feGaussianBlur4057" />
|
||||
</filter>
|
||||
<filter
|
||||
inkscape:collect="always"
|
||||
id="filter4059"
|
||||
x="-0.029877551"
|
||||
width="1.0597551"
|
||||
y="-0.122"
|
||||
height="1.244">
|
||||
<feGaussianBlur
|
||||
inkscape:collect="always"
|
||||
stdDeviation="1.22"
|
||||
id="feGaussianBlur4061" />
|
||||
</filter>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.9132799"
|
||||
inkscape:cx="53.033009"
|
||||
inkscape:cy="2.8284271"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
width="256px"
|
||||
inkscape:snap-global="true"
|
||||
inkscape:window-width="1680"
|
||||
inkscape:window-height="1010"
|
||||
inkscape:window-x="194"
|
||||
inkscape:window-y="0"
|
||||
inkscape:window-maximized="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid2985"
|
||||
empspacing="3"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true"
|
||||
spacingx="2px"
|
||||
spacingy="2px" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Colors"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(0,-956.3622)"
|
||||
style="display:inline">
|
||||
<path
|
||||
style="fill:#ffc019;fill-opacity:1;stroke:none"
|
||||
d="M 16,0 C 7.0091019,0.04308252 0,7.0521845 0,16 0,16 0,57.499123 0,80 0,89.120146 7.0091019,96 16,96 L 32,96 32,70 64,70 63.916016,46.068359 32,46.236328 32,26 64,26 64,0 C 64,0 24,0 16,0 z"
|
||||
transform="translate(0,956.3622)"
|
||||
id="rect2993"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccsccccccccc" />
|
||||
<path
|
||||
style="fill:#1872a2;fill-opacity:1;stroke:none"
|
||||
d="m 80,1052.3622 c 8.990898,0 16.086165,-6.966 16,-16 0,0 0,-41.4991 0,-64 0.07767,-9.01639 -7.067354,-16 -16,-16 l -16,0 0,26 -32,0 0,22 32,0 0,22 -32,0 0,26 c 0,0 32,0 48,0 z"
|
||||
id="rect2993-6"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccsccccccccc" />
|
||||
</g>
|
||||
<g
|
||||
style="display:inline"
|
||||
inkscape:label="Lines as original logo"
|
||||
id="g3997"
|
||||
inkscape:groupmode="layer">
|
||||
<path
|
||||
sodipodi:nodetypes="cccccccc"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3999"
|
||||
d="m 64,0 0,26 -32,0 0,22 m 32,0 0,22 -32,0 0,26"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
<rect
|
||||
ry="16"
|
||||
rx="16"
|
||||
y="0"
|
||||
x="0"
|
||||
height="96"
|
||||
width="96"
|
||||
id="rect4001"
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer3"
|
||||
inkscape:label="Lines with center break"
|
||||
style="display:none">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
d="m 64,0 0,26 -32,0 0,22 32,0 0,22 -32,0 0,26"
|
||||
id="path3926"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="cccccccc" />
|
||||
<rect
|
||||
style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
|
||||
id="rect3928"
|
||||
width="96"
|
||||
height="96"
|
||||
x="0"
|
||||
y="0"
|
||||
rx="16"
|
||||
ry="16" />
|
||||
</g>
|
||||
<g
|
||||
inkscape:groupmode="layer"
|
||||
id="layer2"
|
||||
inkscape:label="Effects"
|
||||
style="display:inline">
|
||||
<rect
|
||||
style="fill:url(#linearGradient3930);fill-opacity:1;stroke:none"
|
||||
id="rect3823"
|
||||
width="96"
|
||||
height="48.04369"
|
||||
x="-3.1086245e-15"
|
||||
y="1.8024861e-14"
|
||||
ry="15.215644"
|
||||
rx="15.214664" />
|
||||
<rect
|
||||
style="fill:url(#linearGradient3904);fill-opacity:1;stroke:none"
|
||||
id="rect3823-8"
|
||||
width="96"
|
||||
height="47.86721"
|
||||
x="1.5376101e-14"
|
||||
y="-96"
|
||||
ry="15.159752"
|
||||
rx="15.214664"
|
||||
transform="scale(1,-1)" />
|
||||
<rect
|
||||
style="fill:url(#linearGradient4011);fill-opacity:1;stroke:none;filter:url(#filter4059)"
|
||||
id="rect4003"
|
||||
width="98"
|
||||
height="24"
|
||||
x="0"
|
||||
y="0"
|
||||
rx="15.214664"
|
||||
ry="8.2994423"
|
||||
transform="matrix(1.0296115,0,0,1.1963836,-2.901924,-4.7132067)" />
|
||||
<rect
|
||||
style="opacity:0.56746030000000003;fill:url(#linearGradient4021);fill-opacity:1;stroke:none;filter:url(#filter4055)"
|
||||
id="rect4013"
|
||||
width="96"
|
||||
height="24"
|
||||
x="0"
|
||||
y="72"
|
||||
rx="14.008356"
|
||||
ry="12"
|
||||
transform="matrix(0.9768331,0,0,0.91974646,1.1649641,8.098115)" />
|
||||
</g>
|
||||
</svg>
|
After Width: | Height: | Size: 7.2 KiB |
|
@ -124,7 +124,7 @@ function nav(&$a) {
|
|||
$banner = get_config('system','banner');
|
||||
|
||||
if($banner === false)
|
||||
$banner .= '<a href="http://friendika.com"><img id="logo-img" src="images/ff-32.jpg" alt="logo" /></a><span id="logo-text"><a href="http://friendika.com">Friendika</a></span>';
|
||||
$banner .= '<a href="http://friendika.com"><img id="logo-img" src="images/friendika-32.png" alt="logo" /></a><span id="logo-text"><a href="http://friendika.com">Friendika</a></span>';
|
||||
|
||||
|
||||
$a->page['nav'] .= '<span id="banner">' . $banner . '</span>';
|
||||
|
|
|
@ -2,18 +2,18 @@
|
|||
require_once("boot.php");
|
||||
|
||||
function poller_run($argv, $argc){
|
||||
global $a, $db;
|
||||
global $a, $db;
|
||||
|
||||
if(is_null($a)){
|
||||
$a = new App;
|
||||
}
|
||||
if(is_null($a)) {
|
||||
$a = new App;
|
||||
}
|
||||
|
||||
if(is_null($db)){
|
||||
@include(".htconfig.php");
|
||||
require_once("dba.php");
|
||||
$db = new dba($db_host, $db_user, $db_pass, $db_data);
|
||||
unset($db_host, $db_user, $db_pass, $db_data);
|
||||
};
|
||||
if(is_null($db)) {
|
||||
@include(".htconfig.php");
|
||||
require_once("dba.php");
|
||||
$db = new dba($db_host, $db_user, $db_pass, $db_data);
|
||||
unset($db_host, $db_user, $db_pass, $db_data);
|
||||
};
|
||||
|
||||
require_once('session.php');
|
||||
require_once('datetime.php');
|
||||
|
@ -30,7 +30,7 @@ function poller_run($argv, $argc){
|
|||
proc_run('php',"include/queue.php");
|
||||
|
||||
// clear old cache
|
||||
q("DELETE FROM `cache` WHERE `updated`<'%s'",
|
||||
q("DELETE FROM `cache` WHERE `updated` < '%s'",
|
||||
dbesc(datetime_convert('UTC','UTC',"now - 30 days")));
|
||||
|
||||
$manual_id = 0;
|
||||
|
@ -47,130 +47,214 @@ function poller_run($argv, $argc){
|
|||
|
||||
$sql_extra = (($manual_id) ? " AND `id` = $manual_id " : "");
|
||||
|
||||
// 'stat' clause is a temporary measure until we have federation subscriptions working both directions
|
||||
$contacts = q("SELECT * FROM `contact`
|
||||
WHERE ( ( `network` = 'dfrn' AND ( `dfrn-id` != '' OR (`issued-id` != '' AND `duplex` = 1)))
|
||||
OR ( `network` IN ( 'stat', 'feed' ) AND `poll` != '' ))
|
||||
$contacts = q("SELECT `id` FROM `contact`
|
||||
WHERE ( `rel` = %d OR `rel` = %d ) AND `poll` != ''
|
||||
$sql_extra
|
||||
AND `self` = 0 AND `blocked` = 0 AND `readonly` = 0 ORDER BY RAND()");
|
||||
AND `self` = 0 AND `blocked` = 0 AND `readonly` = 0 ORDER BY RAND()",
|
||||
intval(REL_FAN),
|
||||
intval(REL_BUD)
|
||||
);
|
||||
|
||||
if(! count($contacts)){
|
||||
if(! count($contacts)) {
|
||||
return;
|
||||
}
|
||||
|
||||
foreach($contacts as $contact) {
|
||||
foreach($contacts as $c) {
|
||||
|
||||
if($manual_id)
|
||||
$contact['last-update'] = '0000-00-00 00:00:00';
|
||||
|
||||
if($contact['priority'] || $contact['subhub']) {
|
||||
|
||||
$hub_update = true;
|
||||
$update = false;
|
||||
|
||||
$t = $contact['last-update'];
|
||||
|
||||
// We should be getting everything via a hub. But just to be sure, let's check once a day.
|
||||
// (You can make this more or less frequent if desired by setting 'pushpoll_frequency' appropriately)
|
||||
// This also lets us update our subscription to the hub, and add or replace hubs in case it
|
||||
// changed. We will only update hubs once a day, regardless of 'pushpoll_frequency'.
|
||||
|
||||
|
||||
if($contact['subhub']) {
|
||||
$interval = get_config('system','pushpoll_frequency');
|
||||
$contact['priority'] = (($interval !== false) ? intval($interval) : 3);
|
||||
$hub_update = false;
|
||||
|
||||
if((datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day")) || $force)
|
||||
$hub_update = true;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* Based on $contact['priority'], should we poll this site now? Or later?
|
||||
*/
|
||||
|
||||
switch ($contact['priority']) {
|
||||
case 5:
|
||||
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 month"))
|
||||
$update = true;
|
||||
break;
|
||||
case 4:
|
||||
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 week"))
|
||||
$update = true;
|
||||
break;
|
||||
case 3:
|
||||
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day"))
|
||||
$update = true;
|
||||
break;
|
||||
case 2:
|
||||
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 12 hour"))
|
||||
$update = true;
|
||||
break;
|
||||
case 1:
|
||||
default:
|
||||
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 hour"))
|
||||
$update = true;
|
||||
break;
|
||||
}
|
||||
if((! $update) && (! $force))
|
||||
continue;
|
||||
}
|
||||
|
||||
$importer_uid = $contact['uid'];
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
|
||||
intval($importer_uid)
|
||||
$res = q("SELECT * FROM `contact` WHERE `id` = %d LIMIT 1",
|
||||
intval($c['id'])
|
||||
);
|
||||
if(! count($r))
|
||||
|
||||
if(! count($res))
|
||||
continue;
|
||||
|
||||
$importer = $r[0];
|
||||
foreach($res as $contact) {
|
||||
if($manual_id)
|
||||
$contact['last-update'] = '0000-00-00 00:00:00';
|
||||
|
||||
logger("poller: poll: IMPORTER: {$importer['name']}, CONTACT: {$contact['name']}");
|
||||
if($contact['priority'] || $contact['subhub']) {
|
||||
|
||||
$last_update = (($contact['last-update'] === '0000-00-00 00:00:00')
|
||||
? datetime_convert('UTC','UTC','now - 30 days', ATOM_TIME)
|
||||
: datetime_convert('UTC','UTC',$contact['last-update'], ATOM_TIME)
|
||||
);
|
||||
$hub_update = true;
|
||||
$update = false;
|
||||
|
||||
if($contact['network'] === 'dfrn') {
|
||||
$t = $contact['last-update'];
|
||||
|
||||
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
|
||||
|
||||
if(intval($contact['duplex']) && $contact['dfrn-id'])
|
||||
$idtosend = '0:' . $orig_id;
|
||||
if(intval($contact['duplex']) && $contact['issued-id'])
|
||||
$idtosend = '1:' . $orig_id;
|
||||
|
||||
$url = $contact['poll'] . '?dfrn_id=' . $idtosend
|
||||
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION
|
||||
. '&type=data&last_update=' . $last_update ;
|
||||
|
||||
$xml = fetch_url($url);
|
||||
|
||||
logger('poller: handshake with url ' . $url . ' returns xml: ' . $xml, LOGGER_DATA);
|
||||
// We should be getting everything via a hub. But just to be sure, let's check once a day.
|
||||
// (You can make this more or less frequent if desired by setting 'pushpoll_frequency' appropriately)
|
||||
// This also lets us update our subscription to the hub, and add or replace hubs in case it
|
||||
// changed. We will only update hubs once a day, regardless of 'pushpoll_frequency'.
|
||||
|
||||
|
||||
if(! $xml) {
|
||||
logger("poller: $url appears to be dead - marking for death ");
|
||||
// dead connection - might be a transient event, or this might
|
||||
// mean the software was uninstalled or the domain expired.
|
||||
// Will keep trying for one month.
|
||||
mark_for_death($contact);
|
||||
if($contact['subhub']) {
|
||||
$interval = get_config('system','pushpoll_frequency');
|
||||
$contact['priority'] = (($interval !== false) ? intval($interval) : 3);
|
||||
$hub_update = false;
|
||||
|
||||
// set the last-update so we don't keep polling
|
||||
if((datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day")) || $force)
|
||||
$hub_update = true;
|
||||
}
|
||||
|
||||
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc(datetime_convert()),
|
||||
intval($contact['id'])
|
||||
);
|
||||
/**
|
||||
* Based on $contact['priority'], should we poll this site now? Or later?
|
||||
*/
|
||||
|
||||
continue;
|
||||
switch ($contact['priority']) {
|
||||
case 5:
|
||||
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 month"))
|
||||
$update = true;
|
||||
break;
|
||||
case 4:
|
||||
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 week"))
|
||||
$update = true;
|
||||
break;
|
||||
case 3:
|
||||
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 day"))
|
||||
$update = true;
|
||||
break;
|
||||
case 2:
|
||||
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 12 hour"))
|
||||
$update = true;
|
||||
break;
|
||||
case 1:
|
||||
default:
|
||||
if(datetime_convert('UTC','UTC', 'now') > datetime_convert('UTC','UTC', $t . " + 1 hour"))
|
||||
$update = true;
|
||||
break;
|
||||
}
|
||||
if((! $update) && (! $force))
|
||||
continue;
|
||||
}
|
||||
|
||||
$importer_uid = $contact['uid'];
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `uid` = %d AND `self` = 1 LIMIT 1",
|
||||
intval($importer_uid)
|
||||
);
|
||||
if(! count($r))
|
||||
continue;
|
||||
|
||||
$importer = $r[0];
|
||||
|
||||
logger("poller: poll: IMPORTER: {$importer['name']}, CONTACT: {$contact['name']}");
|
||||
|
||||
$last_update = (($contact['last-update'] === '0000-00-00 00:00:00')
|
||||
? datetime_convert('UTC','UTC','now - 30 days', ATOM_TIME)
|
||||
: datetime_convert('UTC','UTC',$contact['last-update'], ATOM_TIME)
|
||||
);
|
||||
|
||||
if($contact['network'] === 'dfrn') {
|
||||
|
||||
$idtosend = $orig_id = (($contact['dfrn-id']) ? $contact['dfrn-id'] : $contact['issued-id']);
|
||||
|
||||
if(intval($contact['duplex']) && $contact['dfrn-id'])
|
||||
$idtosend = '0:' . $orig_id;
|
||||
if(intval($contact['duplex']) && $contact['issued-id'])
|
||||
$idtosend = '1:' . $orig_id;
|
||||
|
||||
$url = $contact['poll'] . '?dfrn_id=' . $idtosend
|
||||
. '&dfrn_version=' . DFRN_PROTOCOL_VERSION
|
||||
. '&type=data&last_update=' . $last_update ;
|
||||
|
||||
$xml = fetch_url($url);
|
||||
|
||||
logger('poller: handshake with url ' . $url . ' returns xml: ' . $xml, LOGGER_DATA);
|
||||
|
||||
|
||||
if(! $xml) {
|
||||
logger("poller: $url appears to be dead - marking for death ");
|
||||
// dead connection - might be a transient event, or this might
|
||||
// mean the software was uninstalled or the domain expired.
|
||||
// Will keep trying for one month.
|
||||
mark_for_death($contact);
|
||||
|
||||
// set the last-update so we don't keep polling
|
||||
|
||||
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc(datetime_convert()),
|
||||
intval($contact['id'])
|
||||
);
|
||||
|
||||
continue;
|
||||
}
|
||||
|
||||
if(! strstr($xml,'<?xml')) {
|
||||
logger('poller: response from ' . $url . ' did not contain XML.');
|
||||
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc(datetime_convert()),
|
||||
intval($contact['id'])
|
||||
);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
||||
$res = simplexml_load_string($xml);
|
||||
|
||||
if(intval($res->status) == 1) {
|
||||
logger("poller: $url replied status 1 - marking for death ");
|
||||
|
||||
// we may not be friends anymore. Will keep trying for one month.
|
||||
// set the last-update so we don't keep polling
|
||||
|
||||
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc(datetime_convert()),
|
||||
intval($contact['id'])
|
||||
);
|
||||
|
||||
mark_for_death($contact);
|
||||
}
|
||||
else {
|
||||
if($contact['term-date'] != '0000-00-00 00:00:00') {
|
||||
logger("poller: $url back from the dead - removing mark for death");
|
||||
unmark_for_death($contact);
|
||||
}
|
||||
}
|
||||
|
||||
if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id)))
|
||||
continue;
|
||||
|
||||
$postvars = array();
|
||||
|
||||
$sent_dfrn_id = hex2bin((string) $res->dfrn_id);
|
||||
$challenge = hex2bin((string) $res->challenge);
|
||||
|
||||
$final_dfrn_id = '';
|
||||
|
||||
if(($contact['duplex']) && strlen($contact['prvkey'])) {
|
||||
openssl_private_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['prvkey']);
|
||||
openssl_private_decrypt($challenge,$postvars['challenge'],$contact['prvkey']);
|
||||
}
|
||||
else {
|
||||
openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['pubkey']);
|
||||
openssl_public_decrypt($challenge,$postvars['challenge'],$contact['pubkey']);
|
||||
}
|
||||
|
||||
$final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.'));
|
||||
|
||||
if(strpos($final_dfrn_id,':') == 1)
|
||||
$final_dfrn_id = substr($final_dfrn_id,2);
|
||||
|
||||
if($final_dfrn_id != $orig_id) {
|
||||
|
||||
// did not decode properly - cannot trust this site
|
||||
continue;
|
||||
}
|
||||
|
||||
$postvars['dfrn_id'] = $idtosend;
|
||||
$postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION;
|
||||
|
||||
$xml = post_url($contact['poll'],$postvars);
|
||||
}
|
||||
else {
|
||||
|
||||
// $contact['network'] !== 'dfrn'
|
||||
|
||||
$xml = fetch_url($contact['poll']);
|
||||
}
|
||||
|
||||
logger('poller: received xml : ' . $xml, LOGGER_DATA);
|
||||
|
||||
if(! strstr($xml,'<?xml')) {
|
||||
logger('poller: response from ' . $url . ' did not contain XML.');
|
||||
logger('poller: post_handshake: response from ' . $url . ' did not contain XML.');
|
||||
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc(datetime_convert()),
|
||||
intval($contact['id'])
|
||||
|
@ -178,113 +262,38 @@ function poller_run($argv, $argc){
|
|||
continue;
|
||||
}
|
||||
|
||||
consume_feed($xml,$importer,$contact,$hub,1);
|
||||
|
||||
$res = simplexml_load_string($xml);
|
||||
// do it twice. Ensures that children of parents which may be later in the stream aren't tossed
|
||||
|
||||
if(intval($res->status) == 1) {
|
||||
logger("poller: $url replied status 1 - marking for death ");
|
||||
consume_feed($xml,$importer,$contact,$hub,1);
|
||||
|
||||
// we may not be friends anymore. Will keep trying for one month.
|
||||
// set the last-update so we don't keep polling
|
||||
|
||||
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc(datetime_convert()),
|
||||
intval($contact['id'])
|
||||
);
|
||||
|
||||
mark_for_death($contact);
|
||||
}
|
||||
else {
|
||||
if($contact['term-date'] != '0000-00-00 00:00:00') {
|
||||
logger("poller: $url back from the dead - removing mark for death");
|
||||
unmark_for_death($contact);
|
||||
if((strlen($hub)) && ($hub_update)
|
||||
&& (($contact['rel'] == REL_BUD) || (($contact['network'] === 'stat') && (! $contact['readonly'])))) {
|
||||
logger('poller: subscribing to hub(s) : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
|
||||
$hubs = explode(',', $hub);
|
||||
if(count($hubs)) {
|
||||
foreach($hubs as $h) {
|
||||
$h = trim($h);
|
||||
if(! strlen($h))
|
||||
continue;
|
||||
subscribe_to_hub($h,$importer,$contact);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if((intval($res->status) != 0) || (! strlen($res->challenge)) || (! strlen($res->dfrn_id)))
|
||||
continue;
|
||||
|
||||
$postvars = array();
|
||||
$updated = datetime_convert();
|
||||
|
||||
$sent_dfrn_id = hex2bin((string) $res->dfrn_id);
|
||||
$challenge = hex2bin((string) $res->challenge);
|
||||
|
||||
$final_dfrn_id = '';
|
||||
|
||||
if(($contact['duplex']) && strlen($contact['prvkey'])) {
|
||||
openssl_private_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['prvkey']);
|
||||
openssl_private_decrypt($challenge,$postvars['challenge'],$contact['prvkey']);
|
||||
}
|
||||
else {
|
||||
openssl_public_decrypt($sent_dfrn_id,$final_dfrn_id,$contact['pubkey']);
|
||||
openssl_public_decrypt($challenge,$postvars['challenge'],$contact['pubkey']);
|
||||
}
|
||||
|
||||
$final_dfrn_id = substr($final_dfrn_id, 0, strpos($final_dfrn_id, '.'));
|
||||
|
||||
if(strpos($final_dfrn_id,':') == 1)
|
||||
$final_dfrn_id = substr($final_dfrn_id,2);
|
||||
|
||||
if($final_dfrn_id != $orig_id) {
|
||||
|
||||
// did not decode properly - cannot trust this site
|
||||
continue;
|
||||
}
|
||||
|
||||
$postvars['dfrn_id'] = $idtosend;
|
||||
$postvars['dfrn_version'] = DFRN_PROTOCOL_VERSION;
|
||||
|
||||
$xml = post_url($contact['poll'],$postvars);
|
||||
}
|
||||
else {
|
||||
|
||||
// $contact['network'] !== 'dfrn'
|
||||
|
||||
$xml = fetch_url($contact['poll']);
|
||||
}
|
||||
|
||||
logger('poller: received xml : ' . $xml, LOGGER_DATA);
|
||||
|
||||
if(! strstr($xml,'<?xml')) {
|
||||
logger('poller: post_handshake: response from ' . $url . ' did not contain XML.');
|
||||
$r = q("UPDATE `contact` SET `last-update` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc(datetime_convert()),
|
||||
$r = q("UPDATE `contact` SET `last-update` = '%s', `success_update` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc($updated),
|
||||
dbesc($updated),
|
||||
intval($contact['id'])
|
||||
);
|
||||
continue;
|
||||
|
||||
// loop - next contact
|
||||
}
|
||||
|
||||
consume_feed($xml,$importer,$contact,$hub,1);
|
||||
|
||||
// do it twice. Ensures that children of parents which may be later in the stream aren't tossed
|
||||
|
||||
consume_feed($xml,$importer,$contact,$hub,1);
|
||||
|
||||
|
||||
if((strlen($hub)) && ($hub_update)
|
||||
&& (($contact['rel'] == REL_BUD) || (($contact['network'] === 'stat') && (! $contact['readonly'])))) {
|
||||
logger('poller: subscribing to hub(s) : ' . $hub . ' contact name : ' . $contact['name'] . ' local user : ' . $importer['name']);
|
||||
$hubs = explode(',', $hub);
|
||||
if(count($hubs)) {
|
||||
foreach($hubs as $h) {
|
||||
$h = trim($h);
|
||||
if(! strlen($h))
|
||||
continue;
|
||||
subscribe_to_hub($h,$importer,$contact);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$updated = datetime_convert();
|
||||
|
||||
$r = q("UPDATE `contact` SET `last-update` = '%s', `success_update` = '%s' WHERE `id` = %d LIMIT 1",
|
||||
dbesc($updated),
|
||||
dbesc($updated),
|
||||
intval($contact['id'])
|
||||
);
|
||||
|
||||
// loop - next contact
|
||||
}
|
||||
|
||||
return;
|
||||
|
|
|
@ -55,7 +55,8 @@ function pubsub_init(&$a) {
|
|||
|
||||
$sql_extra = ((strlen($hub_verify)) ? sprintf(" AND `hub-verify` = '%s' ", dbesc($hub_verify)) : '');
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `poll` = '%s' AND `id` = %d AND `uid` = %d AND `blocked` = 0 $sql_extra LIMIT 1",
|
||||
$r = q("SELECT * FROM `contact` WHERE `poll` = '%s' AND `id` = %d AND `uid` = %d
|
||||
AND `blocked` = 0 AND `pending` = 0 $sql_extra LIMIT 1",
|
||||
dbesc($hub_topic),
|
||||
intval($contact_id),
|
||||
intval($owner['uid'])
|
||||
|
@ -101,10 +102,14 @@ function pubsub_post(&$a) {
|
|||
|
||||
$importer = $r[0];
|
||||
|
||||
$r = q("SELECT * FROM `contact` WHERE `subhub` = 1 AND `id` = %d AND `uid` = %d AND `blocked` = 0 AND `readonly` = 0 LIMIT 1",
|
||||
$r = q("SELECT * FROM `contact` WHERE `subhub` = 1 AND `id` = %d AND `uid` = %d
|
||||
AND ( `rel` = %d OR `rel` = %d ) AND `blocked` = 0 AND `readonly` = 0 LIMIT 1",
|
||||
intval($contact_id),
|
||||
intval($importer['uid'])
|
||||
intval($importer['uid']),
|
||||
intval(REL_FAN),
|
||||
intval(REL_BUD)
|
||||
);
|
||||
|
||||
if(! count($r)) {
|
||||
logger('pubsub: no contact record - ignored');
|
||||
hub_post_return();
|
||||
|
|
|
@ -101,5 +101,5 @@ function wall_upload_post(&$a) {
|
|||
echo '<br /><br /><a href="' . $a->get_baseurl() . '/photos/' . $page_owner_nick . '/image/' . $hash . '" ><img src="' . $a->get_baseurl() . "/photo/{$hash}-{$smallest}.jpg\" alt=\"$basename\" /></a><br /><br />";
|
||||
|
||||
killme();
|
||||
return; // NOTREACHED
|
||||
// NOTREACHED
|
||||
}
|
|
@ -1,7 +1,7 @@
|
|||
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
|
||||
<base href="$baseurl" />
|
||||
<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" />
|
||||
<link rel="shortcut icon" href="$baseurl/images/ff-32.jpg" />
|
||||
<link rel="shortcut icon" href="$baseurl/images/friendika-32.png" />
|
||||
|
||||
<!--[if IE]>
|
||||
<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<body>
|
||||
<table style="border:1px solid #ccc">
|
||||
<tbody>
|
||||
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
|
||||
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/freindika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
|
||||
|
||||
<tr><td style="padding-top:22px;" colspan="2">Du hast eine neue private Nachricht von '$from' auf '$siteName' erhhalten.</td></tr>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<base href="$baseurl" />
|
||||
<meta name="generator" content="$generator" />
|
||||
<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" />
|
||||
<link rel="shortcut icon" href="$baseurl/images/ff-32.jpg" />
|
||||
<link rel="shortcut icon" href="$baseurl/images/friendika-32.png" />
|
||||
|
||||
<!--[if IE]>
|
||||
<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<body>
|
||||
<table style="border:1px solid #ccc">
|
||||
<tbody>
|
||||
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
|
||||
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
|
||||
|
||||
<tr><td style="padding-top:22px;" colspan="2">$from sent you a new private message at $siteName.</td></tr>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<base href="$baseurl" />
|
||||
<meta name="generator" content="$generator" />
|
||||
<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" />
|
||||
<link rel="shortcut icon" href="$baseurl/images/ff-32.jpg" />
|
||||
<link rel="shortcut icon" href="$baseurl/images/friendika-32.png" />
|
||||
|
||||
<!--[if IE]>
|
||||
<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<body>
|
||||
<table style="border:1px solid #ccc">
|
||||
<tbody>
|
||||
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
|
||||
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
|
||||
|
||||
<tr><td style="padding-top:22px;" colspan="2">$from t'a envoyŽ un message ˆ $siteName.</td></tr>
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
<base href="$baseurl" />
|
||||
<meta name="generator" content="$generator" />
|
||||
<link rel="stylesheet" type="text/css" href="$stylesheet" media="all" />
|
||||
<link rel="shortcut icon" href="$baseurl/images/ff-32.jpg" />
|
||||
<link rel="shortcut icon" href="$baseurl/images/friendika-32.png" />
|
||||
|
||||
<!--[if IE]>
|
||||
<script type="text/javascript" src="http://html5shiv.googlecode.com/svn/trunk/html5.js"></script>
|
||||
|
|
|
@ -7,7 +7,7 @@
|
|||
<body>
|
||||
<table style="border:1px solid #ccc">
|
||||
<tbody>
|
||||
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/ff-32.jpg'><span style="padding:7px;">Friendika</span></td></tr>
|
||||
<tr><td colspan="2" style="background:#3b5998; color:#FFFFFF; font-weight:bold; font-family:'lucida grande', tahoma, verdana,arial, sans-serif; padding: 4px 8px; vertical-align: middle; font-size:16px; letter-spacing: -0.03em; text-align: left;"><img style="width:32px;height:32px;" src='$siteurl/images/friendika-32.png'><span style="padding:7px;">Friendika</span></td></tr>
|
||||
|
||||
<tr><td style="padding-top:22px;" colspan="2">Hai ricevuto un nuovo messsaggio privato su $siteName da '$from'.</td></tr>
|
||||
|
||||
|
|
After Width: | Height: | Size: 699 B |
|
@ -91,12 +91,13 @@ nav #site-location {
|
|||
|
||||
nav #banner {
|
||||
display: block;
|
||||
padding-top: 10px;
|
||||
padding-top: 14px;
|
||||
position: absolute;
|
||||
}
|
||||
nav #banner #logo-text a {
|
||||
font-size: 44px;
|
||||
font-size: 40px;
|
||||
font-weight: bold;
|
||||
margin-left: 3px;
|
||||
color: #000000;
|
||||
|
||||
}
|
||||
|
@ -318,7 +319,7 @@ div.wall-item-content-wrapper.shiny {
|
|||
|
||||
input#dfrn-url {
|
||||
float: left;
|
||||
background: url(ff-16.jpg) no-repeat;
|
||||
background: url(friendika-16.png) no-repeat;
|
||||
background-position: 2px center;
|
||||
font-size: 17px;
|
||||
padding-left: 21px;
|
||||
|
|
After Width: | Height: | Size: 699 B |
|
@ -452,7 +452,7 @@ nav {
|
|||
|
||||
input#dfrn-url {
|
||||
float: left;
|
||||
background: url(ff-16.jpg) no-repeat;
|
||||
background: url(friendika-16.png) no-repeat;
|
||||
background-position: 2px center;
|
||||
font-size: 17px;
|
||||
padding-left: 21px;
|
||||
|
|