use Friendica\App;
use Friendica\Core\Config;
-use Friendica\Util\Network;
+use Friendica\Core\System;
require_once 'mod/hostxrd.php';
require_once 'mod/nodeinfo.php';
break;
}
}
- Network::httpStatusExit(404);
+ System::httpExit(404);
killme();
}
$user = dba::selectFirst('user', [], ['nickname' => $node]);
if (!DBM::is_result($user)) {
$message = L10n::t('No user record found for \'%s\' ', $node);
- Network::xmlExit(3, $message); // failure
+ System::xmlExit(3, $message); // failure
// NOTREACHED
}
if (!strstr($my_prvkey, 'PRIVATE KEY')) {
$message = L10n::t('Our site encryption key is apparently messed up.');
- Network::xmlExit(3, $message);
+ System::xmlExit(3, $message);
}
// verify everything
if (!strlen($decrypted_source_url)) {
$message = L10n::t('Empty site URL was provided or URL could not be decrypted by us.');
- Network::xmlExit(3, $message);
+ System::xmlExit(3, $message);
// NOTREACHED
}
if (!DBM::is_result($contact)) {
// this is either a bogus confirmation (?) or we deleted the original introduction.
$message = L10n::t('Contact record was not found for you on our site.');
- Network::xmlExit(3, $message);
+ System::xmlExit(3, $message);
return; // NOTREACHED
}
}
if (!$foreign_pubkey) {
$message = L10n::t('Site public key not available in contact record for URL %s.', $decrypted_source_url);
- Network::xmlExit(3, $message);
+ System::xmlExit(3, $message);
}
$decrypted_dfrn_id = "";
if (dba::exists('contact', ['dfrn-id' => $decrypted_dfrn_id])) {
$message = L10n::t('The ID provided by your system is a duplicate on our system. It should work if you try again.');
- Network::xmlExit(1, $message); // Birthday paradox - duplicate dfrn-id
+ System::xmlExit(1, $message); // Birthday paradox - duplicate dfrn-id
// NOTREACHED
}
);
if (!DBM::is_result($r)) {
$message = L10n::t('Unable to set your contact credentials on our system.');
- Network::xmlExit(3, $message);
+ System::xmlExit(3, $message);
}
// It's possible that the other person also requested friendship.
);
if (!DBM::is_result($r)) { // indicates schema is messed up or total db failure
$message = L10n::t('Unable to update your contact profile details on our system');
- Network::xmlExit(3, $message);
+ System::xmlExit(3, $message);
}
// Otherwise everything seems to have worked and we are almost done. Yay!
}
}
}
- Network::xmlExit(0); // Success
+ System::xmlExit(0); // Success
return; // NOTREACHED
////////////////////// End of this scenario ///////////////////////////////////////////////
}
use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Core\System;
use Friendica\Database\DBM;
use Friendica\Model\Contact;
use Friendica\Protocol\DFRN;
-use Friendica\Util\Network;
require_once 'include/items.php';
require_once 'include/event.php';
);
if (! DBM::is_result($r)) {
logger('dfrn_notify: could not match challenge to dfrn_id ' . $dfrn_id . ' challenge=' . $challenge);
- Network::xmlExit(3, 'Could not match challenge');
+ System::xmlExit(3, 'Could not match challenge');
}
$r = q("DELETE FROM `challenge` WHERE `dfrn-id` = '%s' AND `challenge` = '%s'",
$sql_extra = sprintf(" AND `dfrn-id` = '%s' AND `duplex` = 1 ", dbesc($dfrn_id));
break;
default:
- Network::xmlExit(3, 'Invalid direction');
+ System::xmlExit(3, 'Invalid direction');
break; // NOTREACHED
}
if (! DBM::is_result($r)) {
logger('dfrn_notify: contact not found for dfrn_id ' . $dfrn_id);
- Network::xmlExit(3, 'Contact not found');
+ System::xmlExit(3, 'Contact not found');
//NOTREACHED
}
// Relationship is dissolved permanently
Contact::remove($importer['id']);
logger('relationship dissolved : ' . $importer['name'] . ' dissolved ' . $importer['username']);
- Network::xmlExit(0, 'relationship dissolved');
+ System::xmlExit(0, 'relationship dissolved');
}
$rino = Config::get('system', 'rino_encrypt');
// but only for $remote_rino > 1, because old code did't send rino version
if ($rino_remote > 1 && $rino < $rino_remote) {
logger("rino version '$rino_remote' is lower than supported '$rino'");
- Network::xmlExit(0, "rino version '$rino_remote' is lower than supported '$rino'");
+ System::xmlExit(0, "rino version '$rino_remote' is lower than supported '$rino'");
}
$rawkey = hex2bin(trim($key));
break;
default:
logger("rino: invalid sent version '$rino_remote'");
- Network::xmlExit(0, "Invalid sent version '$rino_remote'");
+ System::xmlExit(0, "Invalid sent version '$rino_remote'");
}
logger('rino: decrypted data: ' . $data, LOGGER_DATA);
}
$ret = DFRN::import($data, $importer);
- Network::xmlExit($ret, 'Processed');
+ System::xmlExit($ret, 'Processed');
// NOTREACHED
}
if (($dfrn_id === '') && (!x($_POST, 'dfrn_id'))) {
if (Config::get('system', 'block_public') && !local_user() && !remote_user()) {
- Network::httpStatusExit(403);
+ System::httpExit(403);
}
$user = '';
dbesc($a->argv[1])
);
if (!$r) {
- Network::httpStatusExit(404);
+ System::httpExit(404);
}
$hidewall = ($r[0]['hidewall'] && !local_user());
dbesc($sec)
);
if (!DBM::is_result($r)) {
- Network::xmlExit(3, 'No ticket');
+ System::xmlExit(3, 'No ticket');
// NOTREACHED
}
intval($r[0]['cid'])
);
if (!DBM::is_result($c)) {
- Network::xmlExit(3, 'No profile');
+ System::xmlExit(3, 'No profile');
}
$contact = $c[0];
if ($final_dfrn_id != $orig_id) {
logger('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, LOGGER_DEBUG);
// did not decode properly - cannot trust this site
- Network::xmlExit(3, 'Bad decryption');
+ System::xmlExit(3, 'Bad decryption');
}
header("Content-type: text/xml");
$r = q("SELECT * FROM `profile_check` WHERE `dfrn_id` = '%s' ORDER BY `expire` DESC",
dbesc($dfrn_id));
if (DBM::is_result($r)) {
- Network::xmlExit(1);
+ System::xmlExit(1);
return; // NOTREACHED
}
- Network::xmlExit(0);
+ System::xmlExit(0);
return; // NOTREACHED
}
}
dbesc($sec)
);
if (!DBM::is_result($r)) {
- Network::xmlExit(3, 'No ticket');
+ System::xmlExit(3, 'No ticket');
// NOTREACHED
}
intval($r[0]['cid'])
);
if (!DBM::is_result($c)) {
- Network::xmlExit(3, 'No profile');
+ System::xmlExit(3, 'No profile');
}
$contact = $c[0];
if ($final_dfrn_id != $orig_id) {
logger('profile_check: ' . $final_dfrn_id . ' != ' . $orig_id, LOGGER_DEBUG);
// did not decode properly - cannot trust this site
- Network::xmlExit(3, 'Bad decryption');
+ System::xmlExit(3, 'Bad decryption');
}
header("Content-type: text/xml");
use Friendica\Model\Group;
use Friendica\Model\Profile;
use Friendica\Protocol\DFRN;
-use Friendica\Util\Network;
function display_init(App $a)
{
function displayShowFeed($item_id, $conversation) {
$xml = DFRN::itemFeed($item_id, $conversation);
if ($xml == '') {
- Network::httpStatusExit(500);
+ System::httpExit(500);
}
header("Content-type: application/atom+xml");
echo $xml;
*/
use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Core\System;
use Friendica\Model\Contact;
use Friendica\Model\GContact;
use Friendica\Model\Profile;
-use Friendica\Util\Network;
function hovercard_init(App $a)
{
// Get out if the system doesn't have public access allowed
if (intval(Config::get('system', 'block_public'))) {
- Network::httpStatusExit(401);
+ System::httpExit(401);
}
// Return the raw content of the template. We use this to make templates usable for js functions.
return $o;
} else {
- Network::jsonExit($profile);
+ System::jsonExit($profile);
}
}
function nodeinfo_init(App $a) {
if (!Config::get('system', 'nodeinfo')) {
- Network::httpStatusExit(404);
+ System::httpExit(404);
killme();
}
if (($a->argc != 2) || ($a->argv[1] != '1.0')) {
- Network::httpStatusExit(404);
+ System::httpExit(404);
killme();
}
use Friendica\Core\NotificationsManager;
use Friendica\Core\System;
use Friendica\Database\DBM;
-use Friendica\Util\Network;
function notifications_post(App $a) {
// Json output
if (intval($json) === 1) {
- Network::jsonExit($notifs);
+ System::jsonExit($notifs);
}
$notif_tpl = get_markup_template('notifications.tpl');
use Friendica\App;
use Friendica\Core\Cache;
use Friendica\Core\Config;
+use Friendica\Core\System;
use Friendica\Database\DBM;
use Friendica\Protocol\PortableContact;
-use Friendica\Util\Network;
function poco_init(App $a) {
$system_mode = false;
if (intval(Config::get('system', 'block_public')) || (Config::get('system', 'block_local_dir'))) {
- Network::httpStatusExit(401);
+ System::httpExit(401);
}
if ($a->argc > 1) {
if (! x($user)) {
$c = q("SELECT * FROM `pconfig` WHERE `cat` = 'system' AND `k` = 'suggestme' AND `v` = 1");
if (! DBM::is_result($c)) {
- Network::httpStatusExit(401);
+ System::httpExit(401);
}
$system_mode = true;
}
dbesc($user)
);
if (! DBM::is_result($users) || $users[0]['hidewall'] || $users[0]['hide-friends']) {
- Network::httpStatusExit(404);
+ System::httpExit(404);
}
$user = $users[0];
$ret['entry'][] = [];
}
} else {
- Network::httpStatusExit(500);
+ System::httpExit(500);
}
logger("End of poco", LOGGER_DEBUG);
echo json_encode($ret);
killme();
} else {
- Network::httpStatusExit(500);
+ System::httpExit(500);
}
}
*/
use Friendica\App;
use Friendica\Core\L10n;
+use Friendica\Core\System;
use Friendica\Network\Probe;
-use Friendica\Util\Network;
function probe_content(App $a)
{
if (!local_user()) {
- Network::httpStatusExit(403, ["title" => L10n::t("Public access denied."),
+ System::httpExit(403, ["title" => L10n::t("Public access denied."),
"description" => L10n::t("Only logged in users are permitted to perform a probing.")]);
killme();
}
use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Core\System;
use Friendica\Database\DBM;
use Friendica\Util\Network;
// PuSH subscription must be considered "public" so just block it
// if public access isn't enabled.
if (Config::get('system', 'block_public')) {
- Network::httpStatusExit(403);
+ System::httpExit(403);
}
// Subscription request from subscriber
$subscribe = 0;
} else {
logger("pubsubhubbub: invalid hub_mode=$hub_mode, ignoring.");
- Network::httpStatusExit(404);
+ System::httpExit(404);
}
logger("pubsubhubbub: $hub_mode request from " .
if (!$nick) {
logger('pubsubhubbub: bad hub_topic=$hub_topic, ignoring.');
- Network::httpStatusExit(404);
+ System::httpExit(404);
}
// fetch user from database given the nickname
if (!DBM::is_result($r)) {
logger('pubsubhubbub: local account not found: ' . $nick);
- Network::httpStatusExit(404);
+ System::httpExit(404);
}
$owner = $r[0];
if ($r[0]['hidewall']) {
logger('pubsubhubbub: local user ' . $nick .
'has chosen to hide wall, ignoring.');
- Network::httpStatusExit(403);
+ System::httpExit(403);
}
// get corresponding row from contact table
intval($owner['uid']));
if (!DBM::is_result($r)) {
logger('pubsubhubbub: contact not found.');
- Network::httpStatusExit(404);
+ System::httpExit(404);
}
$contact = $r[0];
if (!link_compare($hub_topic, $contact['poll'])) {
logger('pubsubhubbub: hub topic ' . $hub_topic . ' != ' .
$contact['poll']);
- Network::httpStatusExit(404);
+ System::httpExit(404);
}
// do subscriber verification according to the PuSH protocol
if ($ret < 200 || $ret > 299) {
logger("pubsubhubbub: subscriber verification at $hub_callback ".
"returned $ret, ignoring.");
- Network::httpStatusExit(404);
+ System::httpExit(404);
}
// check that the correct hub_challenge code was echoed back
logger("pubsubhubbub: subscriber did not echo back ".
"hub.challenge, ignoring.");
logger("\"$hub_challenge\" != \"".trim($body)."\"");
- Network::httpStatusExit(404);
+ System::httpExit(404);
}
// fetch the old subscription if it exists
logger("pubsubhubbub: successfully unsubscribed [$hub_callback].");
// we do nothing here, since the row was already deleted
}
- Network::httpStatusExit(202);
+ System::httpExit(202);
}
killme();
use Friendica\App;
use Friendica\Core\Config;
+use Friendica\Core\System;
use Friendica\Database\DBM;
use Friendica\Protocol\Diaspora;
-use Friendica\Util\Network;
/**
* @param object $a App
$enabled = intval(Config::get('system', 'diaspora_enabled'));
if (!$enabled) {
logger('mod-diaspora: disabled');
- Network::httpStatusExit(500);
+ System::httpExit(500);
}
if (($a->argc == 2) && ($a->argv[1] === 'public')) {
$public = false;
if ($a->argc != 3 || $a->argv[1] !== 'users') {
- Network::httpStatusExit(500);
+ System::httpExit(500);
}
$guid = $a->argv[2];
$importer = dba::selectFirst('user', [], ['guid' => $guid, 'account_expired' => false, 'account_removed' => false]);
if (!DBM::is_result($importer)) {
- Network::httpStatusExit(500);
+ System::httpExit(500);
}
}
if (!$xml) {
$postdata = file_get_contents("php://input");
if ($postdata == '') {
- Network::httpStatusExit(500);
+ System::httpExit(500);
}
logger('mod-diaspora: message is in the new format', LOGGER_DEBUG);
logger('mod-diaspora: decoded msg: ' . print_r($msg, true), LOGGER_DATA);
if (!is_array($msg)) {
- Network::httpStatusExit(500);
+ System::httpExit(500);
}
logger('mod-diaspora: dispatching', LOGGER_DEBUG);
$ret = Diaspora::dispatch($importer, $msg);
}
- Network::httpStatusExit(($ret) ? 200 : 500);
+ System::httpExit(($ret) ? 200 : 500);
// NOTREACHED
}
*/
use Friendica\App;
use Friendica\Core\PConfig;
+use Friendica\Core\System;
use Friendica\Database\DBM;
use Friendica\Model\Contact;
use Friendica\Protocol\OStatus;
use Friendica\Protocol\Salmon;
use Friendica\Util\Crypto;
-use Friendica\Util\Network;
require_once 'include/items.php';
dbesc($nick)
);
if (! DBM::is_result($r)) {
- Network::httpStatusExit(500);
+ System::httpExit(500);
}
$importer = $r[0];
if(! $base) {
logger('mod-salmon: unable to locate salmon data in xml ');
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
// Stash the signature away for now. We have to find their key or it won't be good for anything.
if(! $author_link) {
logger('mod-salmon: Could not retrieve author URI.');
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
// Once we have the author URI, go to the web and try to find their public key
if(! $key) {
logger('mod-salmon: Could not retrieve author key.');
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
$key_info = explode('.',$key);
if (! $verify) {
logger('mod-salmon: Message did not verify. Discarding.');
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
logger('mod-salmon: Message verified with mode '.$mode);
//if((DBM::is_result($r)) && (($r[0]['readonly']) || ($r[0]['rel'] == CONTACT_IS_FOLLOWER) || ($r[0]['blocked']))) {
if (DBM::is_result($r) && $r[0]['blocked']) {
logger('mod-salmon: Ignoring this author.');
- Network::httpStatusExit(202);
+ System::httpExit(202);
// NOTREACHED
}
OStatus::import($data, $importer, $contact_rec, $hub);
- Network::httpStatusExit(200);
+ System::httpExit(200);
}
use Friendica\Core\Cache;
use Friendica\Core\Config;
use Friendica\Core\L10n;
+use Friendica\Core\System;
use Friendica\Database\DBM;
-use Friendica\Util\Network;
require_once "include/bbcode.php";
require_once 'include/security.php';
}
if (Config::get('system','local_search') && !local_user() && !remote_user()) {
- Network::httpStatusExit(403,
+ System::httpExit(403,
["title" => L10n::t("Public access denied."),
"description" => L10n::t("Only logged in users are permitted to perform a search.")]);
killme();
if (!is_null($result)) {
$resultdata = json_decode($result);
if (($resultdata->time > (time() - $crawl_permit_period)) && ($resultdata->accesses > $free_crawls)) {
- Network::httpStatusExit(429,
+ System::httpExit(429,
["title" => L10n::t("Too Many Requests"),
"description" => L10n::t("Only one search per minute is permitted for not logged in users.")]);
killme();
*/
use Friendica\App;
use Friendica\Content\Smilies;
-use Friendica\Util\Network;
+use Friendica\Core\System;
/**
* @param object $a App
for ($i = 0; $i < count($tmp['texts']); $i++) {
$results[] = ['text' => $tmp['texts'][$i], 'icon' => $tmp['icons'][$i]];
}
- Network::jsonExit($results);
+ System::jsonExit($results);
} else {
return Smilies::replace('', true);
}
use Friendica\App;
use Friendica\Core\Addon;
use Friendica\Core\Config;
-use Friendica\Util\Network;
+use Friendica\Core\System;
function statistics_json_init(App $a) {
if (!Config::get("system", "nodeinfo")) {
- Network::httpStatusExit(404);
+ System::httpExit(404);
killme();
}
*/
use Friendica\App;
use Friendica\Core\L10n;
+use Friendica\Core\System;
use Friendica\Network\Probe;
-use Friendica\Util\Network;
function webfinger_content(App $a)
{
if (!local_user()) {
- Network::httpStatusExit(
+ System::httpExit(
403,
[
"title" => L10n::t("Public access denied."),
namespace Friendica\Core;
use Friendica\BaseObject;
+use Friendica\Util\XML;
/**
* @file include/Core/System.php
killme();
}
+ /**
+ * Generic XML return
+ * Outputs a basic dfrn XML status structure to STDOUT, with a <status> variable
+ * of $st and an optional text <message> of $message and terminates the current process.
+ */
+ public static function xmlExit($st, $message = '')
+ {
+ $result = ['status' => $st];
+
+ if ($message != '') {
+ $result['message'] = $message;
+ }
+
+ if ($st) {
+ logger('xml_status returning non_zero: ' . $st . " message=" . $message);
+ }
+
+ header("Content-type: text/xml");
+
+ $xmldata = ["result" => $result];
+
+ echo XML::fromArray($xmldata, $xml);
+
+ killme();
+ }
+
+ /**
+ * @brief Send HTTP status header and exit.
+ *
+ * @param integer $val HTTP status result value
+ * @param array $description optional message
+ * 'title' => header title
+ * 'description' => optional message
+ */
+ public static function httpExit($val, $description = [])
+ {
+ $err = '';
+ if ($val >= 400) {
+ $err = 'Error';
+ if (!isset($description["title"])) {
+ $description["title"] = $err." ".$val;
+ }
+ }
+
+ if ($val >= 200 && $val < 300) {
+ $err = 'OK';
+ }
+
+ logger('http_status_exit ' . $val);
+ header($_SERVER["SERVER_PROTOCOL"] . ' ' . $val . ' ' . $err);
+
+ if (isset($description["title"])) {
+ $tpl = get_markup_template('http_status.tpl');
+ echo replace_macros(
+ $tpl,
+ [
+ '$title' => $description["title"],
+ '$description' => $description["description"]]
+ );
+ }
+
+ killme();
+ }
+
+ /**
+ * @brief Encodes content to json
+ *
+ * This function encodes an array to json format
+ * and adds an application/json HTTP header to the output.
+ * After finishing the process is getting killed.
+ *
+ * @param array $x The input content
+ */
+ public static function jsonExit($x)
+ {
+ header("content-type: application/json");
+ echo json_encode($x);
+ killme();
+ }
+
/// @todo Move the following functions from boot.php
/*
function get_guid($size = 16, $prefix = "")
namespace Friendica\Module;\r
\r
use Friendica\BaseModule;\r
+use Friendica\Core\System;\r
use Friendica\Protocol\OStatus;\r
-use Friendica\Util\Network;\r
\r
/**\r
* Provides public Atom feeds\r
$nocache = x($_GET, 'nocache') && local_user();\r
\r
if ($a->argc < 2) {\r
- Network::httpStatusExit(400);\r
+ System::httpExit(400);\r
}\r
\r
$type = null;\r
if (!is_object($j_outer_key_bundle)) {
logger('Outer Salmon did not verify. Discarding.');
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
$outer_iv = base64_decode($j_outer_key_bundle->iv);
if (!is_object($basedom)) {
logger('Received data does not seem to be an XML. Discarding. '.$xml);
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
$base = $basedom->children(NAMESPACE_SALMON_ME);
$verify = Crypto::rsaVerify($signed_data, $signature, $key);
if (!$verify) {
logger('Message did not verify. Discarding.');
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
return ['message' => (string)base64url_decode($base->data),
if (!$base) {
logger('unable to locate salmon data in xml');
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
if (!$author_link) {
logger('Could not retrieve author URI.');
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
// Once we have the author URI, go to the web and try to find their public key
// (first this will look it up locally if it is in the fcontact cache)
if (!$key) {
logger('Could not retrieve author key.');
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
$verify = Crypto::rsaVerify($signed_data, $signature, $key);
if (!$verify) {
logger('Message did not verify. Discarding.');
- Network::httpStatusExit(400);
+ System::httpExit(400);
}
logger('Message verified.');
return $body;
}
- /**
- * Generic XML return
- * Outputs a basic dfrn XML status structure to STDOUT, with a <status> variable
- * of $st and an optional text <message> of $message and terminates the current process.
- */
- public static function xmlExit($st, $message = '')
- {
- $result = ['status' => $st];
-
- if ($message != '') {
- $result['message'] = $message;
- }
-
- if ($st) {
- logger('xml_status returning non_zero: ' . $st . " message=" . $message);
- }
-
- header("Content-type: text/xml");
-
- $xmldata = ["result" => $result];
-
- echo XML::fromArray($xmldata, $xml);
-
- killme();
- }
-
- /**
- * @brief Send HTTP status header and exit.
- *
- * @param integer $val HTTP status result value
- * @param array $description optional message
- * 'title' => header title
- * 'description' => optional message
- */
- public static function httpStatusExit($val, $description = [])
- {
- $err = '';
- if ($val >= 400) {
- $err = 'Error';
- if (!isset($description["title"])) {
- $description["title"] = $err." ".$val;
- }
- }
-
- if ($val >= 200 && $val < 300) {
- $err = 'OK';
- }
-
- logger('http_status_exit ' . $val);
- header($_SERVER["SERVER_PROTOCOL"] . ' ' . $val . ' ' . $err);
-
- if (isset($description["title"])) {
- $tpl = get_markup_template('http_status.tpl');
- echo replace_macros(
- $tpl,
- [
- '$title' => $description["title"],
- '$description' => $description["description"]]
- );
- }
-
- killme();
- }
-
/**
* @brief Check URL to see if it's real
*
return $slinky->short();
}
- /**
- * @brief Encodes content to json
- *
- * This function encodes an array to json format
- * and adds an application/json HTTP header to the output.
- * After finishing the process is getting killed.
- *
- * @param array $x The input content
- */
- public static function jsonExit($x)
- {
- header("content-type: application/json");
- echo json_encode($x);
- killme();
- }
-
/**
* @brief Find the matching part between two url
*