- private static function discoverFederation()
- {
- $last = Config::get('poco', 'last_federation_discovery');
-
- if ($last) {
- $next = $last + (24 * 60 * 60);
-
- if ($next > time()) {
- return;
- }
- }
-
- // Discover Friendica, Hubzilla and Diaspora servers
- $curlResult = Network::fetchUrl("http://the-federation.info/pods.json");
-
- if (!empty($curlResult)) {
- $servers = json_decode($curlResult, true);
-
- if (!empty($servers['pods'])) {
- foreach ($servers['pods'] as $server) {
- Worker::add(PRIORITY_LOW, 'CheckServer', 'https://' . $server['host']);
- }
- }
- }
-
- // Disvover Mastodon servers
- if (!Config::get('system', 'ostatus_disabled')) {
- $accesstoken = Config::get('system', 'instances_social_key');
-
- if (!empty($accesstoken)) {
- $api = 'https://instances.social/api/1.0/instances/list?count=0';
- $header = ['Authorization: Bearer '.$accesstoken];
- $curlResult = Network::curl($api, false, ['headers' => $header]);
-
- if ($curlResult->isSuccess()) {
- $servers = json_decode($curlResult->getBody(), true);
-
- foreach ($servers['instances'] as $server) {
- $url = (is_null($server['https_score']) ? 'http' : 'https') . '://' . $server['name'];
- Worker::add(PRIORITY_LOW, 'CheckServer', $url);
- }
- }
- }
- }
-
- // Currently disabled, since the service isn't available anymore.
- // It is not removed since I hope that there will be a successor.
- // Discover GNU Social Servers.
- //if (!Config::get('system','ostatus_disabled')) {
- // $serverdata = "http://gstools.org/api/get_open_instances/";
-
- // $curlResult = Network::curl($serverdata);
- // if ($curlResult->isSuccess()) {
- // $servers = json_decode($result->getBody(), true);
-
- // foreach($servers['data'] as $server)
- // GServer::check($server['instance_address']);
- // }
- //}
-
- Config::set('poco', 'last_federation_discovery', time());
- }
-