Bladeren bron

Diaspora Relay: Only accept postings from anyone when the relay is configured

tags/3.5.1
Michael 3 jaren geleden
bovenliggende
commit
40390cc5ec
3 gewijzigde bestanden met toevoegingen van 90 en 72 verwijderingen
  1. +11
    -0
      boot.php
  2. +11
    -5
      include/diaspora.php
  3. +68
    -67
      mod/_well_known.php

+ 11
- 0
boot.php Bestand weergeven

@@ -430,6 +430,17 @@ define('PRIORITY_LOW', 40);
define('PRIORITY_NEGLIGIBLE',50);
/* @}*/

/**
* @name Social Relay settings
*
* See here: https://github.com/jaywink/social-relay
* and here: https://wiki.diasporafoundation.org/Relay_servers_for_public_posts
* @{
*/
define('SR_SCOPE_NONE', '');
define('SR_SCOPE_ALL', 'all');
define('SR_SCOPE_TAGS', 'tags');
/* @}*/

// Normally this constant is defined - but not if "pcntl" isn't installed
if (!defined("SIGTERM"))


+ 11
- 5
include/diaspora.php Bestand weergeven

@@ -8,6 +8,8 @@
* This will change in the future.
*/

use \Friendica\Core\Config;

require_once("include/items.php");
require_once("include/bb2diaspora.php");
require_once("include/Scrape.php");
@@ -309,10 +311,6 @@ class Diaspora {
return false;
}

// Use a dummy importer to import the data for the public copy
$importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE);
$message_id = self::dispatch($importer,$msg);

// Now distribute it to the followers
$r = q("SELECT `user`.* FROM `user` WHERE `user`.`uid` IN
(SELECT `contact`.`uid` FROM `contact` WHERE `contact`.`network` = '%s' AND `contact`.`addr` = '%s')
@@ -320,7 +318,7 @@ class Diaspora {
dbesc(NETWORK_DIASPORA),
dbesc($msg["author"])
);
if ($r) {
if (dbm::is_result($r)) {
foreach ($r as $rr) {
logger("delivering to: ".$rr["username"]);
self::dispatch($rr,$msg);
@@ -329,6 +327,14 @@ class Diaspora {
logger("No subscribers for ".$msg["author"]." ".print_r($msg, true), LOGGER_DEBUG);
}

$social_relay = (bool)Config::get('system', 'relay_subscribe', false);

// Use a dummy importer to import the data for the public copy
if (dbm::is_result($r) OR $social_relay) {
$importer = array("uid" => 0, "page-flags" => PAGE_FREELOVE);
$message_id = self::dispatch($importer,$msg);
}

return $message_id;
}



+ 68
- 67
mod/_well_known.php Bestand weergeven

@@ -1,67 +1,68 @@
<?php
/// @TODO This file has DOS line endings!
require_once("mod/hostxrd.php");
require_once("mod/nodeinfo.php");

function _well_known_init(App $a) {
if ($a->argc > 1) {
switch($a->argv[1]) {
case "host-meta":
hostxrd_init($a);
break;
case "x-social-relay":
wk_social_relay($a);
break;
case "nodeinfo":
nodeinfo_wellknown($a);
break;
}
}
http_status_exit(404);
killme();
}

function wk_social_relay(App $a) {

define('SR_SCOPE_ALL', 'all');
define('SR_SCOPE_TAGS', 'tags');

$subscribe = (bool)get_config('system', 'relay_subscribe');

if ($subscribe)
$scope = get_config('system', 'relay_scope');
else
$scope = "";

$tags = array();

if ($scope == SR_SCOPE_TAGS) {

$server_tags = get_config('system', 'relay_server_tags');
$tagitems = explode(",", $server_tags);

foreach($tagitems AS $tag)
$tags[trim($tag, "# ")] = trim($tag, "# ");

if (get_config('system', 'relay_user_tags')) {
$terms = q("SELECT DISTINCT(`term`) FROM `search`");

foreach($terms AS $term) {
$tag = trim($term["term"], "#");
$tags[$tag] = $tag;
}
}
}

$taglist = array();
foreach($tags AS $tag)
$taglist[] = $tag;

$relay = array("subscribe" => $subscribe,
"scope" => $scope,
"tags" => $taglist);

header('Content-type: application/json; charset=utf-8');
echo json_encode($relay, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
exit;
}
<?php

use \Friendica\Core\Config;

require_once("mod/hostxrd.php");
require_once("mod/nodeinfo.php");

function _well_known_init(App $a) {
if ($a->argc > 1) {
switch($a->argv[1]) {
case "host-meta":
hostxrd_init($a);
break;
case "x-social-relay":
wk_social_relay($a);
break;
case "nodeinfo":
nodeinfo_wellknown($a);
break;
}
}
http_status_exit(404);
killme();
}

function wk_social_relay(App $a) {

$subscribe = (bool)Config::get('system', 'relay_subscribe', false);

if ($subscribe) {
$scope = Config::get('system', 'relay_scope', SR_SCOPE_ALL);
} else {
$scope = SR_SCOPE_NONE;
}

$tags = array();

if ($scope == SR_SCOPE_TAGS) {
$server_tags = Config::get('system', 'relay_server_tags');
$tagitems = explode(",", $server_tags);

foreach($tagitems AS $tag) {
$tags[trim($tag, "# ")] = trim($tag, "# ");
}

if (Config::get('system', 'relay_user_tags')) {
$terms = q("SELECT DISTINCT(`term`) FROM `search`");

foreach($terms AS $term) {
$tag = trim($term["term"], "#");
$tags[$tag] = $tag;
}
}
}

$taglist = array();
foreach($tags AS $tag) {
$taglist[] = $tag;
}

$relay = array("subscribe" => $subscribe,
"scope" => $scope,
"tags" => $taglist);

header('Content-type: application/json; charset=utf-8');
echo json_encode($relay, JSON_PRETTY_PRINT|JSON_UNESCAPED_SLASHES);
exit;
}

Laden…
Annuleren
Opslaan