Merge pull request #6234 from annando/issue-6168
Issue 6168: "redir" now mostly use OWA
This commit is contained in:
commit
6510df410d
6 changed files with 33 additions and 10 deletions
|
@ -561,11 +561,7 @@ function dfrn_poll_content(App $a)
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
$appendix = (strstr($destination_url, '?') ? '&f=&redir=1' : '?f=&redir=1');
|
$appendix = (strstr($destination_url, '?') ? '&f=&redir=1' : '?f=&redir=1');
|
||||||
if (filter_var($url, FILTER_VALIDATE_URL)) {
|
$a->redirect($destination_url . $appendix);
|
||||||
System::externalRedirect($destination_url . $appendix);
|
|
||||||
} else {
|
|
||||||
$a->internalRedirect($destination_url . $appendix);
|
|
||||||
}
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// NOTREACHED
|
// NOTREACHED
|
||||||
|
|
|
@ -9,6 +9,7 @@ use Friendica\Database\DBA;
|
||||||
use Friendica\Model\Contact;
|
use Friendica\Model\Contact;
|
||||||
use Friendica\Model\Profile;
|
use Friendica\Model\Profile;
|
||||||
use Friendica\Util\Strings;
|
use Friendica\Util\Strings;
|
||||||
|
use Friendica\Util\Network;
|
||||||
|
|
||||||
function redir_init(App $a) {
|
function redir_init(App $a) {
|
||||||
|
|
||||||
|
@ -34,8 +35,7 @@ function redir_init(App $a) {
|
||||||
|
|
||||||
$contact_url = $contact['url'];
|
$contact_url = $contact['url'];
|
||||||
|
|
||||||
if ($contact['network'] !== Protocol::DFRN // Authentication isn't supported for non DFRN contacts.
|
if ((!local_user() && !remote_user()) // Visitors (not logged in or not remotes) can't authenticate.
|
||||||
|| (!local_user() && !remote_user()) // Visitors (not logged in or not remotes) can't authenticate.
|
|
||||||
|| (!empty($a->contact['id']) && $a->contact['id'] == $cid)) // Local user is already authenticated.
|
|| (!empty($a->contact['id']) && $a->contact['id'] == $cid)) // Local user is already authenticated.
|
||||||
{
|
{
|
||||||
$a->redirect(defaults($url, $contact_url));
|
$a->redirect(defaults($url, $contact_url));
|
||||||
|
@ -81,6 +81,14 @@ function redir_init(App $a) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// When the remote page does support OWA, then we enforce the use of it
|
||||||
|
$basepath = Contact::getBasepath($contact_url);
|
||||||
|
$serverret = Network::curl($basepath . '/magic');
|
||||||
|
if ($serverret->isSuccess()) {
|
||||||
|
$contact['issued-id'] = '';
|
||||||
|
$contact['dfrn-id'] = '';
|
||||||
|
}
|
||||||
|
|
||||||
// Doing remote auth with dfrn.
|
// Doing remote auth with dfrn.
|
||||||
if (local_user() && (!empty($contact['dfrn-id']) || !empty($contact['issued-id'])) && empty($contact['pending'])) {
|
if (local_user() && (!empty($contact['dfrn-id']) || !empty($contact['issued-id'])) && empty($contact['pending'])) {
|
||||||
$dfrn_id = $orig_id = (($contact['issued-id']) ? $contact['issued-id'] : $contact['dfrn-id']);
|
$dfrn_id = $orig_id = (($contact['issued-id']) ? $contact['issued-id'] : $contact['dfrn-id']);
|
||||||
|
|
|
@ -98,6 +98,25 @@ class Contact extends BaseObject
|
||||||
* @}
|
* @}
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Get the basepath for a given contact link
|
||||||
|
* @todo Add functionality to store this value in the contact table
|
||||||
|
*
|
||||||
|
* @param string $url The contact link
|
||||||
|
*
|
||||||
|
* @return string basepath
|
||||||
|
*/
|
||||||
|
public static function getBasepath($url)
|
||||||
|
{
|
||||||
|
$data = Probe::uri($url);
|
||||||
|
if (!empty($data['baseurl'])) {
|
||||||
|
return $data['baseurl'];
|
||||||
|
}
|
||||||
|
|
||||||
|
// When we can't probe the server, we use some ugly function that does some pattern matching
|
||||||
|
return PortableContact::detectServer($url);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @brief Returns the contact id for the user and the public contact id for a given contact id
|
* @brief Returns the contact id for the user and the public contact id for a given contact id
|
||||||
*
|
*
|
||||||
|
|
|
@ -177,7 +177,7 @@ class CurlResult
|
||||||
|
|
||||||
$this->redirectUrl = Network::unparseURL($redirect_parts);
|
$this->redirectUrl = Network::unparseURL($redirect_parts);
|
||||||
|
|
||||||
$this->isRedirectUrl = filter_var($this->redirectUrl, FILTER_VALIDATE_URL) !== false;
|
$this->isRedirectUrl = true;
|
||||||
} else {
|
} else {
|
||||||
$this->isRedirectUrl = false;
|
$this->isRedirectUrl = false;
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,7 +164,7 @@ class Probe
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
self::$baseurl = "http://".$host;
|
self::$baseurl = $host_url;
|
||||||
|
|
||||||
Logger::log("Probing successful for ".$host, Logger::DEBUG);
|
Logger::log("Probing successful for ".$host, Logger::DEBUG);
|
||||||
|
|
||||||
|
|
|
@ -27,7 +27,7 @@ class LDSignature
|
||||||
}
|
}
|
||||||
|
|
||||||
$actor = JsonLD::fetchElement($data, 'actor', 'id');
|
$actor = JsonLD::fetchElement($data, 'actor', 'id');
|
||||||
if (empty($actor)) {
|
if (empty($actor) || !is_string($actor)) {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue