Merge pull request #2977 from rabuzarus/20161128_-_help_page_polishing
Add protocol docu to the help docs
This commit is contained in:
commit
efb2df41ba
|
@ -31,9 +31,7 @@ Friendica Documentation and Resources
|
|||
* [Settings & Admin Panel](help/Settings)
|
||||
* [Installing Connectors (Twitter/GNU Social)](help/Installing-Connectors)
|
||||
* [Install an ejabberd server (XMPP chat) with synchronized credentials](help/install-ejabberd)
|
||||
* [Message Flow](help/Message-Flow)
|
||||
* [Using SSL with Friendica](help/SSL)
|
||||
* [Twitter/GNU Social API Functions](help/api)
|
||||
* [Config values that can only be set in .htconfig.php](help/htconfig)
|
||||
|
||||
**Developer Manual**
|
||||
|
@ -46,9 +44,11 @@ Friendica Documentation and Resources
|
|||
* [Plugin Development](help/Plugins)
|
||||
* [Theme Development](help/themes)
|
||||
* [Smarty 3 Templates](help/smarty3-templates)
|
||||
* [Protocol Documentation](help/Protocol)
|
||||
* [Database schema documantation](help/database)
|
||||
* [Class Autoloading](help/autoloader)
|
||||
* [Code - Reference(Doxygen generated - sets cookies)](doc/html/)
|
||||
* [Twitter/GNU Social API Functions](help/api)
|
||||
|
||||
|
||||
**External Resources**
|
||||
|
|
|
@ -4,7 +4,7 @@ Friendica Message Flow
|
|||
This page documents some of the details of how messages get from one person to another in the Friendica network.
|
||||
There are multiple paths, using multiple protocols and message formats.
|
||||
|
||||
Those attempting to understand these message flows should become familiar with (at the minimum) the [DFRN protocol document](http://dfrn.org/dfrn.pdf) and the message passing elements of the OStatus stack (salmon and Pubsubhubbub).
|
||||
Those attempting to understand these message flows should become familiar with (at the minimum) the [DFRN protocol document](https://github.com/friendica/friendica/blob/master/spec/dfrn2.pdf) and the message passing elements of the OStatus stack (salmon and Pubsubhubbub).
|
||||
|
||||
Most message passing involves the file include/items.php, which has functions for several feed-related import/export activities.
|
||||
|
||||
|
@ -21,8 +21,8 @@ Push (pubsubhubbub) feeds arrive via mod/pubsub.php
|
|||
|
||||
DFRN-poll feed imports arrive via include/poller.php as a scheduled task, this implements the local side of the DFRN-poll protocol.
|
||||
|
||||
Scenario #1. Bob posts a public status message
|
||||
---
|
||||
### Scenario #1. Bob posts a public status message
|
||||
|
||||
This is a public message with no conversation members so no private transport is used.
|
||||
There are two paths it can take - as a bbcode path to DFRN clients, and converted to HTML with the server's PuSH (pubsubhubbub) hubs notified.
|
||||
When a PuSH hub is operational, dfrn-poll clients prefer to receive their information through the PuSH channel.
|
||||
|
@ -30,31 +30,31 @@ They will fall back on a daily poll in case the hub has delivery issues (this is
|
|||
If there is no specified hub or hubs, DFRN clients will poll at a configurable (per-contact) rate at up to 5-minute intervals.
|
||||
Feeds retrieved via dfrn-poll are bbcode and may also contain private conversations which the poller has permissions to see.
|
||||
|
||||
Scenario #2. Jack replies to Bob's public message. Jack is on the Friendica/DFRN network.
|
||||
---
|
||||
### Scenario #2. Jack replies to Bob's public message. Jack is on the Friendica/DFRN network.
|
||||
|
||||
Jack uses dfrn-notify to send a direct reply to Bob.
|
||||
Bob then creates a feed of the conversation and sends it to everybody involved in the conversation using dfrn-notify.
|
||||
PuSH hubs are notified that new content is available.
|
||||
The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks).
|
||||
|
||||
Scenario #3. Mary replies to Bob's public message. Mary is on the Friendica/DFRN network.
|
||||
---
|
||||
### Scenario #3. Mary replies to Bob's public message. Mary is on the Friendica/DFRN network.
|
||||
|
||||
Mary uses dfrn-notify to send a direct reply to Bob.
|
||||
Bob then creates a feed of the conversation and sends it to everybody involved in the conversation (excluding himself, the conversation is now sent to both Jack and Mary).
|
||||
Messages are sent using dfrn-notify.
|
||||
Push hubs are also notified that new content is available.
|
||||
The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks).
|
||||
|
||||
Scenario #4. William replies to Bob's public message. William is on the OStatus network.
|
||||
---
|
||||
### Scenario #4. William replies to Bob's public message. William is on the OStatus network.
|
||||
|
||||
William uses salmon to notify Bob of the reply.
|
||||
Content is html embedded in salmon magic envelope.
|
||||
Bob then creates a feed of the conversation and sends it to all Friendica participants involved in the conversation using dfrn-notify (excluding himself, the conversation is sent to both Jack and Mary).
|
||||
Push hubs are notified that new content is available.
|
||||
The hub or hubs will then retrieve the latest feed and transmit it to all hub subscribers (which may be on different networks).
|
||||
|
||||
Scenario #5. Bob posts a private message to Mary and Jack.
|
||||
---
|
||||
### Scenario #5. Bob posts a private message to Mary and Jack.
|
||||
|
||||
Message is delivered immediately to Mary and Jack using dfrn_notify.
|
||||
Public hubs are not notified.
|
||||
Requeueing is attempted in case of timeout.
|
||||
|
|
40
doc/Protocol.md
Normal file
40
doc/Protocol.md
Normal file
|
@ -0,0 +1,40 @@
|
|||
Used Protocols
|
||||
===============
|
||||
|
||||
Friendicas DFRN Protocol
|
||||
---
|
||||
|
||||
* [Document with the DFRN specification](spec/dfrn2.pdf)
|
||||
* [Schema of the contact request process](spec/dfrn2_contact_request.png)
|
||||
* [Schema of the contact request confirmation](spec/dfrn2_contact_confirmation.png)
|
||||
* [Description of the message flow](help/Message-Flow)
|
||||
|
||||
ActivityStreams
|
||||
---
|
||||
|
||||
Friendica is using ActivityStreams in version 1.0 for its activities and object types.
|
||||
Additional types are used for non standard activities.
|
||||
|
||||
* [Link to the specification](http://activitystrea.ms/head/activity-schema.html)
|
||||
* [List of used ActivityStreams verbs and object types.](https://github.com/friendica/friendica/wiki/ActivityStreams)
|
||||
|
||||
Salmon
|
||||
---
|
||||
|
||||
Salmon is used as a message exchange protocol for replies and mentions.
|
||||
|
||||
* [Link to the protocol summary](http://www.salmon-protocol.org/salmon-protocol-summary)
|
||||
|
||||
Portable Contacts
|
||||
---
|
||||
|
||||
Portable Contacts is used for friends lists.
|
||||
|
||||
* [Link to the specification](https://web.archive.org/web/20160426223008/http://portablecontacts.net/draft-spec.html) (Link to archive.org)
|
||||
|
||||
pubsubhubbub
|
||||
---
|
||||
|
||||
pubsubhubbub is used for OStatus.
|
||||
|
||||
* [Link to the specification](https://pubsubhubbub.github.io/PubSubHubbub/pubsubhubbub-core-0.4.html)
|
|
@ -26,32 +26,31 @@ Friendica - Dokumentation und Ressourcen
|
|||
* [Bugs und Probleme](help/Bugs-and-Issues)
|
||||
* [Häufig gestellte Fragen (FAQ)](help/FAQ)
|
||||
|
||||
**Technische Dokumentation**
|
||||
**Dokumentation für Administratoren**
|
||||
|
||||
* [Installation](help/Install)
|
||||
* [Konfigurationen & Admin-Panel](help/Settings)
|
||||
* [Plugins](help/Plugins)
|
||||
* [Konnektoren (Connectors) installieren (Twitter/GNU Social)](help/Installing-Connectors)
|
||||
* [Installation eines ejabberd Servers (XMPP-Chat) mit synchronisierten Anmeldedaten](help/install-ejabberd) (EN)
|
||||
* [Nachrichtenfluss](help/Message-Flow)
|
||||
* [Betreibe deine Seite mit einem SSL-Zertifikat](help/SSL)
|
||||
* [Entwickler](help/Developers)
|
||||
* [Twitter/GNU Social API Functions](help/api) (EN)
|
||||
* [Translation of Friendica](help/translations) (EN)
|
||||
* [Konfigurationswerte, die nur in der .htconfig.php gesetzt werden können](help/htconfig) (EN)
|
||||
|
||||
**Entwickler Dokumentation**
|
||||
**Dokumentation für Entwickler**
|
||||
|
||||
* [Where to get started?](help/Developers-Intro)
|
||||
* [Entwickler](help/Developers)
|
||||
* [Where to get started?](help/Developers-Intro) (EN)
|
||||
* [Help on Github](help/Github)
|
||||
* [Help on Vagrant](help/Vagrant)
|
||||
* [How to translate Friendica](help/translations)
|
||||
* [How to translate Friendica](help/translations) (EN)
|
||||
* [Bugs and Issues](help/Bugs-and-Issues)
|
||||
* [Plugin Development](help/Plugins)
|
||||
* [Theme Development](help/themes)
|
||||
* [Smarty 3 Templates](help/smarty3-templates)
|
||||
* [Protokoll Dokumentation](help/Protocol) (EN)
|
||||
* [Datenbank-Schema](help/database)
|
||||
* [Code-Referenz (mit doxygen generiert - setzt Cookies)](doc/html/)
|
||||
* [Twitter/GNU Social API Functions](help/api) (EN)
|
||||
|
||||
**Externe Ressourcen**
|
||||
|
||||
|
|
|
@ -6,7 +6,7 @@ Friendica Nachrichtenfluss
|
|||
Diese Seite soll einige Infos darüber dokumentieren, wie Nachrichten innerhalb von Friendica von einer Person zur anderen übertragen werden.
|
||||
Es gibt verschiedene Pfade, die verschiedene Protokolle und Nachrichtenformate nutzen.
|
||||
|
||||
Diejenigen, die den Nachrichtenfluss genauer verstehen wollen, sollten sich mindestens mit dem DFRN-Protokoll (http://dfrn.org/dfrn.pdf) und den Elementen zur Nachrichtenverarbeitung des OStatus Stack informieren (salmon und Pubsubhubbub).
|
||||
Diejenigen, die den Nachrichtenfluss genauer verstehen wollen, sollten sich mindestens mit dem DFRN-Protokoll ([Dokument mit den DFRN Spezifikationen](https://github.com/friendica/friendica/blob/master/spec/dfrn2.pdf)) und den Elementen zur Nachrichtenverarbeitung des OStatus Stack informieren (salmon und Pubsubhubbub).
|
||||
|
||||
Der Großteil der Nachrichtenverarbeitung nutzt die Datei include/items.php, welche Funktionen für verschiedene Feed-bezogene Import-/Exportaktivitäten liefert.
|
||||
|
||||
|
@ -24,7 +24,7 @@ PuSh-Feeds (pubsubhubbub) kommen via mod/pubsub.php an.
|
|||
DFRN-poll Feed-Imports kommen via include/poller.php als geplanter Task an, das implementiert die lokale Bearbeitung (local side) des DFRN-Protokolls.
|
||||
|
||||
|
||||
Szenario #1. Bob schreibt eine öffentliche Statusnachricht
|
||||
### Szenario #1. Bob schreibt eine öffentliche Statusnachricht
|
||||
|
||||
Dies ist eine öffentliche Nachricht ohne begrenzte Nutzerfreigabe, so dass keine private Übertragung notwendig ist.
|
||||
Es gibt zwei Wege, die genutzt werden können - als bbcode an DFRN-Clients oder als durch den Server konvertierten HTML-Code (mit PuSH; pubsubhubbub).
|
||||
|
@ -33,13 +33,13 @@ Sie fallen zurück auf eine tägliche Abfrage, wenn der Hub Übertragungsschwier
|
|||
Wenn kein spezifizierter Hub oder Hubs ausgewählt sind, werden DFRN-Clients in einer pro Kontakt konfigurierbaren Rate mit bis zu 5-Minuten-Intervallen abfragen.
|
||||
Feeds, die via DFRN-Poll abgerufen werden, sind bbcode und können auch private Unterhaltungen enthalten, die vom Poller auf ihre Zugriffsrechte hin geprüft werden.
|
||||
|
||||
Szenario #2. Jack antwortet auf Bobs öffentliche Nachricht. Jack ist im Friendica/DFRN-Netzwerk.
|
||||
### Szenario #2. Jack antwortet auf Bobs öffentliche Nachricht. Jack ist im Friendica/DFRN-Netzwerk.
|
||||
|
||||
Jack nutzt dfrn-notify, um eine direkte Antwort an Bob zu schicken.
|
||||
Bob erstellt dann einen Feed der Unterhaltung und sendet diesen an jeden, der an der Unterhaltung beteiligt ist und dfrn-notify nutzt.
|
||||
Die PuSH-Hubs werden darüber informiert, dass neuer Inhalt verfügbar ist. Der/die Hub/s erhalten dann die neuesten Feeds und übertragen diese an alle Hub-Teilnehmer (die auch zu verschiedenen Netzwerken gehören können).
|
||||
|
||||
Szenario #3. Mary antwortet auf Bobs öffentliche Nachricht. Mary ist im Friendica/DFRN-Netzwerk.
|
||||
### Szenario #3. Mary antwortet auf Bobs öffentliche Nachricht. Mary ist im Friendica/DFRN-Netzwerk.
|
||||
|
||||
Mary nutzt dfrn-notify, um eine direkte Antwort an Bob zu schicken.
|
||||
Bob erstellt dann einen Feed der Unterhaltung und sendet diesen an jeden, der an der Unterhaltung beteiligt ist (mit Ausnahme von Bob selbst; die Unterhaltung wird nun an Jack und Mary geschickt).
|
||||
|
@ -47,14 +47,14 @@ Die Nachrichten werden mit dfrn-notify übertragen.
|
|||
PuSH-Hubs werden darüber informiert, dass neuer Inhalt verfügbar ist.
|
||||
Der/die Hub/s erhalten dann die neuesten Feeds und übertragen sie an alle Hub-Teilnehmer (die auch zu verschiedenen Netzwerken gehören können).
|
||||
|
||||
Szenario #4. William antwortet auf Bobs öffentliche Nachricht. William ist in einem OStatus-Netzwerk.
|
||||
### Szenario #4. William antwortet auf Bobs öffentliche Nachricht. William ist in einem OStatus-Netzwerk.
|
||||
|
||||
William nutzt salmon, um Bob über seine Antwort zu benachrichtigen.
|
||||
Der Inhalt ist HTML-Code, der in das Salmon Magic Envelope eingebettet ist.
|
||||
Bob erstellt dann einen Feed der Unterhaltung und sendet es an alle Friendica-Nutzer, die an der Unterhaltung beteiligt sind und dfrn-notify nutzen (mit Ausnahme von William selbst; die Unterhaltung wird an Jack und Mary weitergeleitet).
|
||||
PuSH-Hubs werden darüber informiert, dass neuer Inhalt verfügbar ist. Der/die Hub/s erhalten dann die neuesten Feeds und übertragen sie an alle Hub-Teilnehmer (die auch zu verschiedenen Netzwerken gehören können).
|
||||
|
||||
Szenario #5. Bob schreibt eine private Nachricht an Mary und Jack.
|
||||
### Szenario #5. Bob schreibt eine private Nachricht an Mary und Jack.
|
||||
|
||||
Die Nachricht wird sofort an Mary und Jack mit Hilfe von dfrn_notify geschickt.
|
||||
Öffentliche Hubs werden nicht benachrichtigt.
|
||||
|
|
|
@ -3,7 +3,8 @@
|
|||
* @file include/dfrn.php
|
||||
* @brief The implementation of the dfrn protocol
|
||||
*
|
||||
* https://github.com/friendica/friendica/wiki/Protocol
|
||||
* @see https://github.com/friendica/friendica/wiki/Protocol and
|
||||
* https://github.com/friendica/friendica/blob/master/spec/dfrn2.pdf
|
||||
*/
|
||||
|
||||
require_once("include/Contact.php");
|
||||
|
|
|
@ -1,17 +1,21 @@
|
|||
<?php
|
||||
|
||||
/*
|
||||
* Module: dfrn_confirm
|
||||
/**
|
||||
* @file mod/dfrn_confirm.php
|
||||
* @brief Module: dfrn_confirm
|
||||
* Purpose: Friendship acceptance for DFRN contacts
|
||||
*
|
||||
*.
|
||||
* There are two possible entry points and three scenarios.
|
||||
*
|
||||
*.
|
||||
* 1. A form was submitted by our user approving a friendship that originated elsewhere.
|
||||
* This may also be called from dfrn_request to automatically approve a friendship.
|
||||
*
|
||||
* 2. We may be the target or other side of the conversation to scenario 1, and will
|
||||
* interact with that process on our own user's behalf.
|
||||
*
|
||||
*.
|
||||
* @see PDF with dfrn specs: https://github.com/friendica/friendica/blob/master/spec/dfrn2.pdf
|
||||
* You also find a graphic which describes the confirmation process at
|
||||
* https://github.com/friendica/friendica/blob/master/spec/dfrn2_contact_confirmation.png
|
||||
*/
|
||||
|
||||
require_once('include/enotify.php');
|
||||
|
@ -22,7 +26,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
|
||||
if(is_array($handsfree)) {
|
||||
|
||||
/**
|
||||
/*
|
||||
* We were called directly from dfrn_request due to automatic friend acceptance.
|
||||
* Any $_POST parameters we may require are supplied in the $handsfree array.
|
||||
*
|
||||
|
@ -37,7 +41,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
$node = $a->argv[1];
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
*
|
||||
* Main entry point. Scenario 1. Our user received a friend request notification (perhaps
|
||||
* from another site) and clicked 'Approve'.
|
||||
|
@ -87,7 +91,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
$activity = ((x($_POST,'activity')) ? intval($_POST['activity']) : 0 );
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
*
|
||||
* Ensure that dfrn_id has precedence when we go to find the contact record.
|
||||
* We only want to search based on contact id if there is no dfrn_id,
|
||||
|
@ -103,7 +107,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
logger('Confirming follower with contact_id: ' . $cid);
|
||||
|
||||
|
||||
/**
|
||||
/*
|
||||
*
|
||||
* The other person will have been issued an ID when they first requested friendship.
|
||||
* Locate their record. At this time, their record will have both pending and blocked set to 1.
|
||||
|
@ -139,7 +143,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
|
||||
if($network === NETWORK_DFRN) {
|
||||
|
||||
/**
|
||||
/*
|
||||
*
|
||||
* Generate a key pair for all further communications with this person.
|
||||
* We have a keypair for every contact, and a site key for unknown people.
|
||||
|
@ -166,7 +170,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
|
||||
$params = array();
|
||||
|
||||
/**
|
||||
/*
|
||||
*
|
||||
* Per the DFRN protocol, we will verify both ends by encrypting the dfrn_id with our
|
||||
* site private key (person on the other end can decrypt it with our site public key).
|
||||
|
@ -212,7 +216,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
|
||||
logger('Confirm: posting data to ' . $dfrn_confirm . ': ' . print_r($params,true), LOGGER_DATA);
|
||||
|
||||
/**
|
||||
/*
|
||||
*
|
||||
* POST all this stuff to the other site.
|
||||
* Temporarily raise the network timeout to 120 seconds because the default 60
|
||||
|
@ -506,7 +510,7 @@ function dfrn_confirm_post(&$a,$handsfree = null) {
|
|||
//NOTREACHED
|
||||
}
|
||||
|
||||
/**
|
||||
/*
|
||||
*
|
||||
*
|
||||
* End of Scenario 1. [Local confirmation of remote friend request].
|
||||
|
|
|
@ -1,5 +1,10 @@
|
|||
<?php
|
||||
|
||||
/**
|
||||
* @file mod/dfrn_notify.php
|
||||
* @brief The dfrn notify endpoint
|
||||
* @see PDF with dfrn specs: https://github.com/friendica/friendica/blob/master/spec/dfrn2.pdf
|
||||
*/
|
||||
require_once('include/items.php');
|
||||
require_once('include/dfrn.php');
|
||||
require_once('include/event.php');
|
||||
|
@ -117,7 +122,7 @@ function dfrn_notify_post(&$a) {
|
|||
|
||||
if($dissolve == 1) {
|
||||
|
||||
/**
|
||||
/*
|
||||
* Relationship is dissolved permanently
|
||||
*/
|
||||
|
||||
|
|
BIN
spec/dfrn2.odt
BIN
spec/dfrn2.odt
Binary file not shown.
BIN
spec/dfrn2.pdf
BIN
spec/dfrn2.pdf
Binary file not shown.
BIN
spec/dfrn2_contact_confirmation.png
Normal file
BIN
spec/dfrn2_contact_confirmation.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 245 KiB |
162
spec/dfrn2_contact_confirmation.svg
Normal file
162
spec/dfrn2_contact_confirmation.svg
Normal file
|
@ -0,0 +1,162 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="1633" height="2173" viewBox="0 0 1633 2173">
|
||||
<style type="text/css"><![CDATA[
|
||||
text { font:12px Dialog; }
|
||||
]]></style>
|
||||
<rect x="-485" y="-485" width="2603" height="3143" style="fill:rgb(255,255,255);stroke:none" />
|
||||
<clipPath id="clip1"><path d="M614,37 L1056,37 L1056,106 L614,106 L614,37 Z" /></clipPath>
|
||||
<path d="M616,39 L616,103 L1053,103 L1053,39 Z" style="fill:rgb(202,221,254);stroke:none" clip-path="url(#clip1)" />
|
||||
<clipPath id="clip2"><path d="M614,37 L1056,37 L1056,106 L614,106 L614,37 Z" /></clipPath>
|
||||
<path d="M616,39 L616,103 L1053,103 L1053,39 Z" style="fill:none;stroke:rgb(61,83,127)" clip-path="url(#clip2)" />
|
||||
<text x="649" y="76" style="font:18px Open Sans">Friendica - Contact confirmation</text>
|
||||
<clipPath id="clip3"><path d="M1198,202 L1388,202 L1388,244 L1198,244 L1198,202 Z" /></clipPath>
|
||||
<path d="M1208,204 C1203.5820313,204 1200,207.5820313 1200,212 L1200,233 C1200,237.4179688 1203.5820313,241 1208,241 L1377,241 C1381.4179688,241 1385,237.4179688 1385,233 L1385,212 C1385,207.5820313 1381.4179688,204 1377,204 Z" style="fill:rgb(0,131,191);stroke:none" clip-path="url(#clip3)" />
|
||||
<clipPath id="clip4"><path d="M1198,202 L1388,202 L1388,244 L1198,244 L1198,202 Z" /></clipPath>
|
||||
<path d="M1208,204 C1203.5820313,204 1200,207.5820313 1200,212 L1200,233 C1200,237.4179688 1203.5820313,241 1208,241 L1377,241 C1381.4179688,241 1385,237.4179688 1385,233 L1385,212 C1385,207.5820313 1381.4179688,204 1377,204 Z" style="fill:none;stroke:rgb(0,131,191)" clip-path="url(#clip4)" />
|
||||
<text x="1213" y="225" style="font:13px Tahoma">bob@example.com</text>
|
||||
<image x="0" y="0" width="1374" height="231" xlink:href="data:image/png;base64,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" /><clipPath id="clip5"><path d="M181,198 L432,198 L432,240 L181,240 L181,198 Z" /></clipPath>
|
||||
<path d="M191,200 C186.5820313,200 183,203.5820313 183,208 L183,229 C183,233.4179688 186.5820313,237 191,237 L421,237 C425.4179688,237 429,233.4179688 429,229 L429,208 C429,203.5820313 425.4179688,200 421,200 Z" style="fill:rgb(0,131,191);stroke:none" clip-path="url(#clip5)" />
|
||||
<clipPath id="clip6"><path d="M181,198 L432,198 L432,240 L181,240 L181,198 Z" /></clipPath>
|
||||
<path d="M191,200 C186.5820313,200 183,203.5820313 183,208 L183,229 C183,233.4179688 186.5820313,237 191,237 L421,237 C425.4179688,237 429,233.4179688 429,229 L429,208 C429,203.5820313 425.4179688,200 421,200 Z" style="fill:none;stroke:rgb(0,131,191)" clip-path="url(#clip6)" />
|
||||
<text x="197" y="221" style="font:13px Tahoma">karen@karenhompage.com</text>
|
||||
<image x="0" y="0" width="418" height="227" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAaIAAADjCAYAAADHeBASAAAE2klEQVR42u3cS29VVRiAYRKNP0ApIg64CImEQEAEbe0pF6EookKhBSlGQGoISlBQDNeUg1RAI5cCcm3BtiiiRGIMAw0goYUUhHIpNyVAyx9AGXRCP3eP0RinLXHyPMkanazJmrz59l5nd+oEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAP+PiGjXAoAODdHwvVc7p/Y2luXWXDqfrJbM2nu5IVVzKd32mxABcN9C9HzNuSnZFefuZg0uif5Fe2L8xsvxyrpLMXzZoRg4f0fkVjXeSVU3ThIiADo8RCN2NxSlqi62Dio5EI+NOx2D5zZG0bamKNraFIXJmrj5Zgxb/mPkVV9sHVF1oUiIAOiwEKUqzmSlKs//nvPBoWQCuhFjyq7H5O1NMWVHU0zd1RzDS69Fr2kNMWB2Y/QaXRkjqhv/yPniXBchAqBjQrSjIT3g7S2Rs/BKFJTfitd2NicriVBFcxQkk1DusqvRe8a56DrhdDySXx99i1dHavvZMiECoENClLv1TEPPYeXxzIJLmUdxU3c1RXFlc0zb3Rz5a6/HsJXXYnj6SjxRfDS65u+PHjlLYkjZD5eT7Q85QQDaH6JNp1uGvNMQ4zfe/OtxXDIJvb6nOd6ouh25K67Fy+t/i6Hzj0X2gi9j4YnaWHTqRBRs+/pesr2bEwSg/SHaUN/y4uqr/7wXKs6E6HYUbLkZXab/ElmTj8bT7+6PRfVJgD6tjmdnrcnEqE9eXp4TBKD9IfrsZEPq/YNRsPlWFG27lbmg0DYRFW67Hj1nHIknZ1bHmFU1MWZ5ZeTNrYiX0pviwxO1rZ17937KCQLQ7hCl1tSlB87aGKPSv0a/kgvx6oYbUbzrRkxcV59MQN/Ekvq6mLXvYLy177uYsHZ3MhnVxQurNtcl27OcIADtDlHOJ7Vdcj8+fid7zsF4OP9U9JneEBPXn43CdQdiaRKdUUt2JFPStzH7wPeZCI3+qKLl8SHjBybbH3SCALQ7RJmpaOWxSc+lf27tkbslhr7XGGPTP8Xik8eTGFVHr3GbInfezmRCqoy8xbta+81cX9IWIde3AeiwEGXeFa04Wpi97PDdQW+WR86cz2PpqWT6WbguxpWWx5L62hi1Yk/LwNnbpyfbHvBlBQA6PESZj56WHumcKj1cNmTeV5cnbqi51xajZDJqHZsuP/7o4LH9/56EhAiA+xKifwWm7c+q3fqOHJnXuXv3tttxWf+NUNv6E/vueIp8e9bqAAAAAElFTkSuQmCC" /><clipPath id="clip7"><path d="M215,325 L390,325 L390,367 L215,367 L215,325 Z" /></clipPath>
|
||||
<path d="M224,326 C219.5820313,326 216,329.5820313 216,334 L216,357 C216,361.4179688 219.5820313,365 224,365 L380,365 C384.4179688,365 388,361.4179688 388,357 L388,334 C388,329.5820313 384.4179688,326 380,326 Z" style="fill:rgb(127,127,127);stroke:none" clip-path="url(#clip7)" />
|
||||
<text x="230" y="348" style="font:13px Open Sans">notifications.php</text>
|
||||
<clipPath id="clip8"><path d="M30,409 L580,409 L580,566 L30,566 L30,409 Z" /></clipPath>
|
||||
<path d="M39,410 C34.5820313,410 31,413.5820313 31,418 L31,556 C31,560.4179688 34.5820313,564 39,564 L570,564 C574.4179688,564 578,560.4179688 578,556 L578,418 C578,413.5820313 574.4179688,410 570,410 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip8)" />
|
||||
<text x="45" y="432" style="font:13px Open Sans">notifications_content()</text>
|
||||
<text x="45" y="455" style="font:13px Open Sans">-----------------------------------------</text>
|
||||
<text x="45" y="501" style="font:13px Open Sans">- This is the page where Karen see Bobs friendship request</text>
|
||||
<text x="45" y="524" style="font:13px Open Sans">- the submit form redirects to Karens local dfrn_confirm page </text>
|
||||
<text x="45" y="547" style="font:13px Open Sans">($dfrn_id, $contact_id, $intro_id are submitted)</text>
|
||||
<clipPath id="clip9"><path d="M219,640 L399,640 L399,682 L219,682 L219,640 Z" /></clipPath>
|
||||
<path d="M228,641 C223.5820313,641 220,644.5820313 220,649 L220,672 C220,676.4179688 223.5820313,680 228,680 L389,680 C393.4179688,680 397,676.4179688 397,672 L397,649 C397,644.5820313 393.4179688,641 389,641 Z" style="fill:rgb(127,127,127);stroke:none" clip-path="url(#clip9)" />
|
||||
<text x="234" y="663" style="font:13px Open Sans">dfrn_confirm.php</text>
|
||||
<clipPath id="clip10"><path d="M14,698 L594,698 L594,1798 L14,1798 L14,698 Z" /></clipPath>
|
||||
<path d="M23,699 C18.5820313,699 15,702.5820313 15,707 L15,1788 C15,1792.4179688 18.5820313,1796 23,1796 L584,1796 C588.4179688,1796 592,1792.4179688 592,1788 L592,707 C592,702.5820313 588.4179688,699 584,699 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip10)" />
|
||||
<text x="29" y="721" style="font:13px Open Sans">dfrn_confirm_post()</text>
|
||||
<text x="29" y="744" style="font:13px Open Sans">SCENARIO 1 ( no $_POST['source_url'] available)</text>
|
||||
<text x="29" y="767" style="font:13px Open Sans">--------------------------------------------------------------------------------</text>
|
||||
<text x="29" y="813" style="font:13px Open Sans">- contact data come either form $handsfree (if autoconfirm) or </text>
|
||||
<text x="29" y="836" style="font:13px Open Sans">from $_POST</text>
|
||||
<text x="29" y="882" style="font:13px Open Sans">- get all data about Karen form the user table</text>
|
||||
<text x="29" y="928" style="font:13px Open Sans">[Note: Bob have been issued an ID (contact issue-id) when he first </text>
|
||||
<text x="29" y="951" style="font:13px Open Sans">requested the friendship. Locate Bobs contact record. At this </text>
|
||||
<text x="29" y="974" style="font:13px Open Sans">time, his record will have both pending and blocked set to 1. </text>
|
||||
<text x="29" y="997" style="font:13px Open Sans">There won't be any dfrn_id if this is a network follower, so use </text>
|
||||
<text x="29" y="1020" style="font:13px Open Sans">the contact_id instead]</text>
|
||||
<text x="29" y="1066" style="font:13px Open Sans">- search for Bob in the contact table by contact_id, dfrn_id and </text>
|
||||
<text x="29" y="1089" style="font:13px Open Sans">issued-id not empty (for the uid -> Karens user id)</text>
|
||||
<text x="29" y="1135" style="font:13px Open Sans">- if network = dfrn </text>
|
||||
<text x="29" y="1158" style="font:13px Open Sans"> -> create a new keypair (prvkey & pubkey) and update the </text>
|
||||
<text x="29" y="1181" style="font:13px Open Sans">contact</text>
|
||||
<text x="29" y="1227" style="font:13px Open Sans">[Note: Generate a key pair for all further communications with </text>
|
||||
<text x="29" y="1250" style="font:13px Open Sans">this person. We have a keypair for every contact, and a site key </text>
|
||||
<text x="29" y="1273" style="font:13px Open Sans">for unknown people. This provides a means to carry on </text>
|
||||
<text x="29" y="1296" style="font:13px Open Sans">relationships with other people any single key is compromised. It </text>
|
||||
<text x="29" y="1319" style="font:13px Open Sans">is a robust key. We're much more worried about key leakage </text>
|
||||
<text x="29" y="1342" style="font:13px Open Sans">than anybody cracking it.]</text>
|
||||
<text x="29" y="1388" style="font:13px Open Sans"> -> update Bobs contact record (in the contact table) with the </text>
|
||||
<text x="29" y="1411" style="font:13px Open Sans">generated prvkey</text>
|
||||
<text x="29" y="1457" style="font:13px Open Sans"> -> encrypting the dfrn_id with Karens prvkey (Bob can decrypt it </text>
|
||||
<text x="29" y="1480" style="font:13px Open Sans">on the other and with Karens site-pubkey) and add it to the </text>
|
||||
<text x="29" y="1503" style="font:13px Open Sans">transmit params.</text>
|
||||
<text x="29" y="1549" style="font:13px Open Sans"> -> encrypting Karens profile url with Bobs site-pubkey (Bob </text>
|
||||
<text x="29" y="1572" style="font:13px Open Sans">can decrypt it with his own private key) and add it to the </text>
|
||||
<text x="29" y="1595" style="font:13px Open Sans">transmit params.</text>
|
||||
<text x="29" y="1641" style="font:13px Open Sans"> -> add the above generated public key to params which </text>
|
||||
<text x="29" y="1664" style="font:13px Open Sans">getting transmitted (if $aes_allow -> encrypt the the public key)</text>
|
||||
<text x="29" y="1710" style="font:13px Open Sans"> -> add duplex state and page-flags to the params</text>
|
||||
<text x="29" y="1756" style="font:13px Open Sans"> -> send params to Bobs dfrn_confirm page ($res = </text>
|
||||
<text x="29" y="1779" style="font:13px Open Sans">post_url($dfrn_confirm,$params);</text>
|
||||
<clipPath id="clip11"><path d="M1041,1319 L1619,1319 L1619,1913 L1041,1913 L1041,1319 Z" /></clipPath>
|
||||
<path d="M1050,1320 C1045.5820313,1320 1042,1323.5820313 1042,1328 L1042,1903 C1042,1907.4179688 1045.5820313,1911 1050,1911 L1609,1911 C1613.4179688,1911 1617,1907.4179688 1617,1903 L1617,1328 C1617,1323.5820313 1613.4179688,1320 1609,1320 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip11)" />
|
||||
<text x="1055" y="1342" style="font:13px Open Sans">dfrn_confirm_post()</text>
|
||||
<text x="1055" y="1365" style="font:13px Open Sans">SCENARIO 2 ( $_POST['source_url'] is available)</text>
|
||||
<text x="1055" y="1388" style="font:13px Open Sans">------------------------------------------------------------------------</text>
|
||||
<text x="1055" y="1434" style="font:13px Open Sans">- get all data about Bob from the user table (prvkey and uid form </text>
|
||||
<text x="1055" y="1457" style="font:13px Open Sans">Bob )</text>
|
||||
<text x="1055" y="1503" style="font:13px Open Sans">- decrypt the transmitted source_url (profile url) with Bobs </text>
|
||||
<text x="1055" y="1526" style="font:13px Open Sans">prvkey</text>
|
||||
<text x="1055" y="1572" style="font:13px Open Sans">- get data of Karen from contact table by her source_url (and by </text>
|
||||
<text x="1055" y="1595" style="font:13px Open Sans">her user id)</text>
|
||||
<text x="1055" y="1641" style="font:13px Open Sans">- decrypt the dfrn_id sent by Karen with Karens site-pubkey </text>
|
||||
<text x="1055" y="1664" style="font:13px Open Sans">(taken from contact table)</text>
|
||||
<text x="1055" y="1710" style="font:13px Open Sans">- if possible decrpyt the pubkey sent by Karen with the prvkey of </text>
|
||||
<text x="1055" y="1733" style="font:13px Open Sans">Bob (taken from user table) -> if this is not possible use the raw </text>
|
||||
<text x="1055" y="1756" style="font:13px Open Sans">pubkey</text>
|
||||
<text x="1055" y="1802" style="font:13px Open Sans">- search if the dfrn_id is already present in the contact table (if it </text>
|
||||
<text x="1055" y="1825" style="font:13px Open Sans">is prensent it is a duplicate)</text>
|
||||
<text x="1055" y="1871" style="font:13px Open Sans">- update dfrn-id and pubkey for Karens contact entry in the </text>
|
||||
<text x="1055" y="1894" style="font:13px Open Sans">contact table</text>
|
||||
<clipPath id="clip12"><path d="M42,1841 L559,1841 L559,1906 L42,1906 L42,1841 Z" /></clipPath>
|
||||
<path d="M51,1842 C46.5820313,1842 43,1845.5820313 43,1850 L43,1896 C43,1900.4179688 46.5820313,1904 51,1904 L549,1904 C553.4179688,1904 557,1900.4179688 557,1896 L557,1850 C557,1845.5820313 553.4179688,1842 549,1842 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip12)" />
|
||||
<text x="57" y="1864" style="font:13px Open Sans"> -> set the relation for the contact and set pending = 0 and </text>
|
||||
<text x="57" y="1887" style="font:13px Open Sans">blocked = 0</text>
|
||||
<clipPath id="clip13"><path d="M1128,1950 L1541,1950 L1541,2061 L1128,2061 L1128,1950 Z" /></clipPath>
|
||||
<path d="M1137,1951 C1132.5820313,1951 1129,1954.5820313 1129,1959 L1129,2051 C1129,2055.4179688 1132.5820313,2059 1137,2059 L1531,2059 C1535.4179688,2059 1539,2055.4179688 1539,2051 L1539,1959 C1539,1954.5820313 1535.4179688,1951 1531,1951 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip13)" />
|
||||
<text x="1142" y="1973" style="font:13px Open Sans">- update the relationship of the contact Karen</text>
|
||||
<text x="1142" y="2019" style="font:13px Open Sans">-> if duplex delete the issued-id</text>
|
||||
<text x="1142" y="2042" style="font:13px Open Sans">-> set blocked = 0 and pending = 0</text>
|
||||
<clipPath id="clip14"><path d="M1241,2117 L1428,2117 L1428,2159 L1241,2159 L1241,2117 Z" /></clipPath>
|
||||
<path d="M1250,2118 C1245.5820313,2118 1242,2121.5820313 1242,2126 L1242,2149 C1242,2153.4179688 1245.5820313,2157 1250,2157 L1418,2157 C1422.4179688,2157 1426,2153.4179688 1426,2149 L1426,2126 C1426,2121.5820313 1422.4179688,2118 1418,2118 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip14)" />
|
||||
<text x="1255" y="2140" style="font:13px Open Sans">send a notification</text>
|
||||
<clipPath id="clip15"><path d="M190,1937 L410,1937 L410,1979 L190,1979 L190,1937 Z" /></clipPath>
|
||||
<path d="M199,1938 C194.5820313,1938 191,1941.5820313 191,1946 L191,1969 C191,1973.4179688 194.5820313,1977 199,1977 L400,1977 C404.4179688,1977 408,1973.4179688 408,1969 L408,1946 C408,1941.5820313 404.4179688,1938 400,1938 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip15)" />
|
||||
<text x="205" y="1960" style="font:13px Open Sans">delete the intro of Bob</text>
|
||||
<clipPath id="clip16"><path d="M156,14 L512,14 L512,125 L156,125 L156,14 Z" /></clipPath>
|
||||
<path d="M165,15 C160.5820313,15 157,18.5820313 157,23 L157,115 C157,119.4179688 160.5820313,123 165,123 L502,123 C506.4179688,123 510,119.4179688 510,115 L510,23 C510,18.5820313 506.4179688,15 502,15 Z" style="fill:rgb(255,255,255);stroke:none" clip-path="url(#clip16)" />
|
||||
<text x="171" y="38" style="font:13px Open Sans">Note: this chart respects only dfrn </text>
|
||||
<text x="171" y="61" style="font:13px Open Sans">contacts and focuses on key exchange </text>
|
||||
<text x="171" y="84" style="font:13px Open Sans">(for other areas it might be very </text>
|
||||
<text x="171" y="106" style="font:13px Open Sans">incomplete)</text>
|
||||
<clipPath id="clip17"><path d="M266,361 L341,361 L341,414 L266,414 L266,361 Z" /></clipPath>
|
||||
<path d="M302.4140625,365 L303.1328125,410" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip17)" />
|
||||
<clipPath id="clip18"><path d="M266,361 L341,361 L341,414 L266,414 L266,361 Z" /></clipPath>
|
||||
<path d="M297.9960938,401.421875 L303.1328125,410 L307.9960938,401.2617188 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip18)" />
|
||||
<clipPath id="clip19"><path d="M266,361 L341,361 L341,414 L266,414 L266,361 Z" /></clipPath>
|
||||
<path d="M297.9960938,401.421875 L303.1328125,410 L307.9960938,401.2617188 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip19)" />
|
||||
<clipPath id="clip20"><path d="M271,676 L346,676 L346,703 L271,703 L271,676 Z" /></clipPath>
|
||||
<path d="M308.3515625,680 L308.6445313,699" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip20)" />
|
||||
<clipPath id="clip21"><path d="M271,676 L346,676 L346,703 L271,703 L271,676 Z" /></clipPath>
|
||||
<path d="M303.5117188,690.4179688 L308.6445313,699 L313.5078125,690.265625 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip21)" />
|
||||
<clipPath id="clip22"><path d="M271,676 L346,676 L346,703 L271,703 L271,676 Z" /></clipPath>
|
||||
<path d="M303.5117188,690.4179688 L308.6445313,699 L313.5078125,690.265625 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip22)" />
|
||||
<clipPath id="clip23"><path d="M270,560 L345,560 L345,645 L270,645 L270,560 Z" /></clipPath>
|
||||
<path d="M306.4921875,564 L308.1054688,641" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip23)" />
|
||||
<clipPath id="clip24"><path d="M270,560 L345,560 L345,645 L270,645 L270,560 Z" /></clipPath>
|
||||
<path d="M302.9257813,632.4453125 L308.1054688,641 L312.9257813,632.2382813 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip24)" />
|
||||
<clipPath id="clip25"><path d="M270,560 L345,560 L345,645 L270,645 L270,560 Z" /></clipPath>
|
||||
<path d="M302.9257813,632.4453125 L308.1054688,641 L312.9257813,632.2382813 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip25)" />
|
||||
<clipPath id="clip26"><path d="M588,1338 L1046,1338 L1046,1770 L588,1770 L588,1338 Z" /></clipPath>
|
||||
<path d="M592,1766.2265625 L1042,1342.65625" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip26)" />
|
||||
<clipPath id="clip27"><path d="M588,1338 L1046,1338 L1046,1770 L588,1770 L588,1338 Z" /></clipPath>
|
||||
<path d="M1039.1210938,1352.2304688 L1042,1342.65625 L1032.265625,1344.9492188 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip27)" />
|
||||
<clipPath id="clip28"><path d="M588,1338 L1046,1338 L1046,1770 L588,1770 L588,1338 Z" /></clipPath>
|
||||
<path d="M1039.1210938,1352.2304688 L1042,1342.65625 L1032.265625,1344.9492188 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip28)" />
|
||||
<clipPath id="clip29"><path d="M263,1792 L338,1792 L338,1846 L263,1846 L263,1792 Z" /></clipPath>
|
||||
<path d="M300.4296875,1796 L300.1992188,1842" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip29)" />
|
||||
<clipPath id="clip30"><path d="M263,1792 L338,1792 L338,1846 L263,1846 L263,1792 Z" /></clipPath>
|
||||
<path d="M295.2421875,1833.3164063 L300.1992188,1842 L305.2421875,1833.3632813 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip30)" />
|
||||
<clipPath id="clip31"><path d="M263,1792 L338,1792 L338,1846 L263,1846 L263,1792 Z" /></clipPath>
|
||||
<path d="M295.2421875,1833.3164063 L300.1992188,1842 L305.2421875,1833.3632813 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip31)" />
|
||||
<clipPath id="clip32"><path d="M1295,1907 L1370,1907 L1370,1955 L1295,1955 L1295,1907 Z" /></clipPath>
|
||||
<path d="M1332.9140625,1911 L1333.4453125,1951" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip32)" />
|
||||
<clipPath id="clip33"><path d="M1295,1907 L1370,1907 L1370,1955 L1295,1955 L1295,1907 Z" /></clipPath>
|
||||
<path d="M1328.3320313,1942.40625 L1333.4453125,1951 L1338.328125,1942.2734375 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip33)" />
|
||||
<clipPath id="clip34"><path d="M1295,1907 L1370,1907 L1370,1955 L1295,1955 L1295,1907 Z" /></clipPath>
|
||||
<path d="M1328.3320313,1942.40625 L1333.4453125,1951 L1338.328125,1942.2734375 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip34)" />
|
||||
<clipPath id="clip35"><path d="M1296,2055 L1371,2055 L1371,2122 L1296,2122 L1296,2055 Z" /></clipPath>
|
||||
<path d="M1334,2059 L1334,2118" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip35)" />
|
||||
<clipPath id="clip36"><path d="M1296,2055 L1371,2055 L1371,2122 L1296,2122 L1296,2055 Z" /></clipPath>
|
||||
<path d="M1329,2109.3398438 L1334,2118 L1339,2109.3398438 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip36)" />
|
||||
<clipPath id="clip37"><path d="M1296,2055 L1371,2055 L1371,2122 L1296,2122 L1296,2055 Z" /></clipPath>
|
||||
<path d="M1329,2109.3398438 L1334,2118 L1339,2109.3398438 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip37)" />
|
||||
<clipPath id="clip38"><path d="M263,1900 L338,1900 L338,1942 L263,1942 L263,1900 Z" /></clipPath>
|
||||
<path d="M300,1904 L299.6171875,1938" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip38)" />
|
||||
<clipPath id="clip39"><path d="M263,1900 L338,1900 L338,1942 L263,1942 L263,1900 Z" /></clipPath>
|
||||
<path d="M294.7148438,1929.2851563 L299.6171875,1938 L304.7148438,1929.3984375 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip39)" />
|
||||
<clipPath id="clip40"><path d="M263,1900 L338,1900 L338,1942 L263,1942 L263,1900 Z" /></clipPath>
|
||||
<path d="M294.7148438,1929.2851563 L299.6171875,1938 L304.7148438,1929.3984375 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip40)" />
|
||||
</svg>
|
After Width: | Height: | Size: 24 KiB |
BIN
spec/dfrn2_contact_request.png
Normal file
BIN
spec/dfrn2_contact_request.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 317 KiB |
218
spec/dfrn2_contact_request.svg
Normal file
218
spec/dfrn2_contact_request.svg
Normal file
|
@ -0,0 +1,218 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
|
||||
<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0" y="0" width="1458" height="2526" viewBox="0 0 1458 2526">
|
||||
<style type="text/css"><![CDATA[
|
||||
text { font:12px Dialog; }
|
||||
]]></style>
|
||||
<rect x="-485" y="-485" width="2428" height="3496" style="fill:rgb(255,255,255);stroke:none" />
|
||||
<clipPath id="clip1"><path d="M468,32 L867,32 L867,101 L468,101 L468,32 Z" /></clipPath>
|
||||
<path d="M470,34 L470,98 L864,98 L864,34 Z" style="fill:rgb(202,221,254);stroke:none" clip-path="url(#clip1)" />
|
||||
<clipPath id="clip2"><path d="M468,32 L867,32 L867,101 L468,101 L468,32 Z" /></clipPath>
|
||||
<path d="M470,34 L470,98 L864,98 L864,34 Z" style="fill:none;stroke:rgb(61,83,127)" clip-path="url(#clip2)" />
|
||||
<text x="503" y="71" style="font:18px Open Sans">Friendica - Contact request</text>
|
||||
<image x="0" y="0" width="834" height="74" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0IAAABKCAYAAACW5eSEAAAEYElEQVR42u3dyW+VVRjAYRKNf4BSRFwwCImEQEAs2tpbCjIoIkJLC1KMgGAISlBQDGPgKhWQWKCATG3BtiiiRGIMCw0gaQspCGUokxJKyz+AsuiGvt7WIcatq9s8T/Iubr6czdn9cr7v3G7dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAKBLi4j/NQAAAGkfQnkHrndPHGgqyam5cjE1bZ1z4GpjouZKsuOZEAIAALpUCD1fc2F6VsWFexnD58Xgov0xeevVmFR6JfJWHY2hi/dETlXT3UR101QhBAAAdIkQGrWvsShRdbl92LzD8djEszF8YVMU7WqJop0tUZiagu3NMXL1D5Fbfbl9VNWlIiEEAACkdQglKs5lJCov/pb9/tGYVHorxpfcjGm7W2L6npaYUd4aeWtuRL+ZjTFkflP0G1sZo6qbfs/+/EIPIQQAAKRvCO1pTA55a0dkL70W+WW349W9ralJRVBFa+Rvb46cVdej/+wL0XPK2XhkXEMMLF4fid3nS4QQAACQtiGUs/NcY9+RZfHMkiudr8LNKG+J4srWmLmvNcZtvBkjP7wReclr8UTxieg57lD0yV4RmSXfX00tf8gOAgAA6RlC2862Zb7dGJO3Nv/5OlxFa7y2vzVer7oTOWtvxMubf40Ri09G1pIvYumpulh25lTk7/rqfmp5LzsIAACkZwhtaWh7cf31f74LKu4MoTuRv6M5esz6OTKmnYin3zkUyxpSAbSpOp6du6Ezhgbk5ubaQQAAID1D6NPTjYn3jkT+9ttRtOt25wUJHSdChbtuRt/Zx+PJOdUxfl1NjF9dGbkLK+Kl5Lb44FRde/f+/Z+ygwAAQFqGUGJDfXLo3K0xJvlLDJp3KV7ZciuKy29FQWlD5G/6OlY01Mfcg0fizYPfxpSN+2JZ6vcL67bXp5Zn2EEAACAtQyj7k7oeOR/X3s1acCQeHncmBsxqjILN56Ow9HCsTEXPmBV7Ykb5NzH/8HedETT2o4q2xzMnD00tf9AOAgAAaRlCnadCH56c+lzyp/Y+OTtixLtNMSH5Yyw/XZuKoeroN3Fb5CzaGwWllZG7vLx90JzN8zoiyPXZAABAWodQ57dCa08UZq06dm/YG2WRveCzWHmmPsYuLY2Ja8piRUNdjFm7v23o/N2zUsse+HsNAABAWodQx+StOd49seZYSeaiL68WbKm53xFDy0/Xtk9IltU+OnzC4G5/nQQJIQAAoMuE0L8Cp+PPUnsNHD06t3vv3h23w2X8N4I65g/3mXiK17zpCgAAAABJRU5ErkJggg==" /><clipPath id="clip3"><path d="M1006,236 L1266,236 L1266,278 L1006,278 L1006,236 Z" /></clipPath>
|
||||
<path d="M1016,238 C1011.5820313,238 1008,241.5820313 1008,246 L1008,267 C1008,271.4179688 1011.5820313,275 1016,275 L1255,275 C1259.4179688,275 1263,271.4179688 1263,267 L1263,246 C1263,241.5820313 1259.4179688,238 1255,238 Z" style="fill:rgb(0,131,191);stroke:none" clip-path="url(#clip3)" />
|
||||
<clipPath id="clip4"><path d="M1006,236 L1266,236 L1266,278 L1006,278 L1006,236 Z" /></clipPath>
|
||||
<path d="M1016,238 C1011.5820313,238 1008,241.5820313 1008,246 L1008,267 C1008,271.4179688 1011.5820313,275 1016,275 L1255,275 C1259.4179688,275 1263,271.4179688 1263,267 L1263,246 C1263,241.5820313 1259.4179688,238 1255,238 Z" style="fill:none;stroke:rgb(0,131,191)" clip-path="url(#clip4)" />
|
||||
<text x="1021" y="259" style="font:13px Tahoma">karenn@karenhompage.com</text>
|
||||
<image x="0" y="0" width="1252" height="265" xlink:href="data:image/png;base64,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" /><clipPath id="clip5"><path d="M235,234 L425,234 L425,276 L235,276 L235,234 Z" /></clipPath>
|
||||
<path d="M245,236 C240.5820313,236 237,239.5820313 237,244 L237,265 C237,269.4179688 240.5820313,273 245,273 L414,273 C418.4179688,273 422,269.4179688 422,265 L422,244 C422,239.5820313 418.4179688,236 414,236 Z" style="fill:rgb(0,131,191);stroke:none" clip-path="url(#clip5)" />
|
||||
<clipPath id="clip6"><path d="M235,234 L425,234 L425,276 L235,276 L235,234 Z" /></clipPath>
|
||||
<path d="M245,236 C240.5820313,236 237,239.5820313 237,244 L237,265 C237,269.4179688 240.5820313,273 245,273 L414,273 C418.4179688,273 422,269.4179688 422,265 L422,244 C422,239.5820313 418.4179688,236 414,236 Z" style="fill:none;stroke:rgb(0,131,191)" clip-path="url(#clip6)" />
|
||||
<text x="251" y="257" style="font:13px Tahoma">bob@example.com</text>
|
||||
<image x="0" y="0" width="411" height="263" xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAZsAAAEHCAYAAAB4POvAAAAFDElEQVR42u3c3ZOOZRzAcTM1/QG1K+nAS8xkDEOibPusl1glFYslqwnRGGUUpWExPLKhpsUir7tkV0mZTNM4qEHGLrPELtaiDHb9A8rBnthf9z5NTdPR4rDPZ+Y6euY6uU6+87vv67k7dAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA+H+LiPtaAHDXsRm693JWam9DSW7VxXPJasmsvY11qaqL6bbfxAaA+4rN81X1kweX19/OHjAr+hTujrEbGuOV0osxdOmh6Dd/e+TuabiVqmyYIDYA3FNshu2qK0ztudDaf9aBeGzM6RgwtyEKtzZF4ZammJis8Zuux5BlP0Ze5YXWYXvOF4oNAHcVm1T5mexUxbnfcz44lEwy12JUydWYtK0pJm9viik7m2Po8ivRfWpd9J3dEN1HVsSwyoY/cr6o7yg2ALQ/Ntvr0n3f3hw5Cy9FQdmNeG1Hc7KS0JQ3R0Ey0eQuvRw9ptdHp3Gn45H82uhVtDpS286WiA0A7Y5N7pYzdd2GlMUzCy5mHptN2dkURRXNMXVXc+SvvRpDVl6JoelL8UTR0eiUvz+65hTHwJIfGpPtDzlBANoXm42nWwa+UxdjN1z/69FZMtG8vrs53thzM3JXXImX1/0Wg+Yfi8ELvoyFJ6pj0akTUbD16zvJ9s5OEID2xWZ9bcuLqy//856mKBObm1Gw+Xp0nPZLZE86Gk+/uz8W1SaR+bQynp25JhOcnnl5eU4QgPbF5rOTdan3D0bBphtRuPVG5lJA22QzcevV6Db9SDw5ozJGraqKUcsqIm9uebyU3hgfnqhuzerR4yknCEC7YpNaU5PuN3NDjEj/Gr1nnY9X11+Lop3XYnxpbTLJfBPFtTUxc9/BeGvfdzFu7a5kwqmJF1Ztqkm2ZztBANoVm5xPqjvmfnz81uA5B+Ph/FPRc1pdjF93NiaWHoglSVhGFG9Ppp1vY/aB7zOhGflRecvjA8f2S7Y/6AQBaFdsMtPNymMTnkv/3No1d3MMeq8hRqd/isUnjyfBqYzuYzZG7rwdyaRTEXmLd7b2nrFuVltoXH0G4K5ik3l3s+LoxMFLD9/u/2ZZ5Mz5PJacSqaYhaUxZnlZFNdWx4gVu1v6zd42Ldn2gC8IAHBPscl8iHP5kazU8sMlA+d91Th+fdWdtuAkE07r6HTZ8UcHjO7z90QjNgDcc2z+FZG2P2x27jV8eF5Wly5tt86y/xuatvUnRFJ4iu/wPU8AAAAASUVORK5CYII=" /><clipPath id="clip7"><path d="M953,363 L1344,363 L1344,451 L953,451 L953,363 Z" /></clipPath>
|
||||
<path d="M962,364 C957.5820313,364 954,367.5820313 954,372 L954,441 C954,445.4179688 957.5820313,449 962,449 L1334,449 C1338.4179688,449 1342,445.4179688 1342,441 L1342,372 C1342,367.5820313 1338.4179688,364 1334,364 Z" style="fill:rgb(127,127,127);stroke:none" clip-path="url(#clip7)" />
|
||||
<text x="1073" y="386" style="font:13px Open Sans"> dfrn_request.php</text>
|
||||
<text x="1146" y="409" style="font:13px Open Sans">-</text>
|
||||
<text x="968" y="432" style="font:13px Open Sans">https://karenhompage/dfrn_request/karin</text>
|
||||
<clipPath id="clip8"><path d="M890,808 L1416,808 L1416,1448 L890,1448 L890,808 Z" /></clipPath>
|
||||
<path d="M899,809 C894.5820313,809 891,812.5820313 891,817 L891,1438 C891,1442.4179688 894.5820313,1446 899,1446 L1406,1446 C1410.4179688,1446 1414,1442.4179688 1414,1438 L1414,817 C1414,812.5820313 1410.4179688,809 1406,809 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip8)" />
|
||||
<text x="904" y="831" style="font:13px Open Sans">dfrn_request_post - SCENARIO 1</text>
|
||||
<text x="904" y="854" style="font:13px Open Sans">----------------------------------------------</text>
|
||||
<text x="904" y="900" style="font:13px Open Sans">- Cleanup old introductions that remain blocked + Cleanup </text>
|
||||
<text x="904" y="923" style="font:13px Open Sans">any old email intros - which will have a greater lifetime</text>
|
||||
<text x="904" y="969" style="font:13px Open Sans">- probe_url Bobs posted dfrn_url and get the network with </text>
|
||||
<text x="904" y="992" style="font:13px Open Sans">webfinger_dfrn</text>
|
||||
<text x="904" y="1038" style="font:13px Open Sans">- try to select all contact data of Bob (contact table) by the </text>
|
||||
<text x="904" y="1061" style="font:13px Open Sans">url ($_POST['dfrn_url] and profile uid ($a->profile['uid']) </text>
|
||||
<text x="904" y="1084" style="font:13px Open Sans">where self = 0 to look if this contact is already there (if </text>
|
||||
<text x="904" y="1107" style="font:13px Open Sans">issued-id or rel is already available return here because it </text>
|
||||
<text x="904" y="1130" style="font:13px Open Sans">seems that we are already connected)</text>
|
||||
<text x="904" y="1176" style="font:13px Open Sans">- create a issued-id with $issued_id = random_string();</text>
|
||||
<text x="904" y="1222" style="font:13px Open Sans">- if we already found a contact record above update the </text>
|
||||
<text x="904" y="1245" style="font:13px Open Sans">issued-id with the one we have created</text>
|
||||
<text x="904" y="1291" style="font:13px Open Sans">- otherwise if Bob is not already in the contact table scrape </text>
|
||||
<text x="904" y="1314" style="font:13px Open Sans">Bobs profile and create a new contact with this data (e.g. </text>
|
||||
<text x="904" y="1337" style="font:13px Open Sans">the scraped issued-id / profiles pubkey becomes contacts </text>
|
||||
<text x="904" y="1360" style="font:13px Open Sans">site-pubkey) in the contact table (blocked = 1, pending = 1)</text>
|
||||
<text x="904" y="1406" style="font:13px Open Sans">- select this created contact from contact table and create </text>
|
||||
<text x="904" y="1429" style="font:13px Open Sans">an intro in the intro table (blocked = 1)</text>
|
||||
<clipPath id="clip9"><path d="M925,693 L1374,693 L1374,735 L925,735 L925,693 Z" /></clipPath>
|
||||
<path d="M934,694 C929.5820313,694 926,697.5820313 926,702 L926,725 C926,729.4179688 929.5820313,733 934,733 L1364,733 C1368.4179688,733 1372,729.4179688 1372,725 L1372,702 C1372,697.5820313 1368.4179688,694 1364,694 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip9)" />
|
||||
<text x="939" y="716" style="font:13px Open Sans">$_POST['dfrn_url'] is transmited and is Bobs profile url</text>
|
||||
<clipPath id="clip10"><path d="M888,1557 L1418,1557 L1418,1852 L888,1852 L888,1557 Z" /></clipPath>
|
||||
<path d="M897,1558 C892.5820313,1558 889,1561.5820313 889,1566 L889,1842 C889,1846.4179688 892.5820313,1850 897,1850 L1408,1850 C1412.4179688,1850 1416,1846.4179688 1416,1842 L1416,1566 C1416,1561.5820313 1412.4179688,1558 1408,1558 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip10)" />
|
||||
<text x="902" y="1580" style="font:13px Open Sans">redirect to Bobs request page</text>
|
||||
<text x="902" y="1626" style="font:13px Open Sans">goaway($parms['dfrn-request'] . "?dfrn_url=$dfrn_url"</text>
|
||||
<text x="902" y="1649" style="font:13px Open Sans"> . '&dfrn_version=' . </text>
|
||||
<text x="902" y="1672" style="font:13px Open Sans">DFRN_PROTOCOL_VERSION</text>
|
||||
<text x="902" y="1695" style="font:13px Open Sans"> . '&confirm_key=' . $hash</text>
|
||||
<text x="902" y="1718" style="font:13px Open Sans"> . (($aes_allow) ? "&aes_allow=1" : "")</text>
|
||||
<text x="902" y="1741" style="font:13px Open Sans"> );</text>
|
||||
<text x="902" y="1787" style="font:13px Open Sans">http://example.com/dfrn_request/bob?dfrn_url=6874747</text>
|
||||
<text x="902" y="1810" style="font:13px Open Sans">03a2f2f6b6172656e686f6d65706167652e636f6d2f70726f66</text>
|
||||
<text x="902" y="1833" style="font:13px Open Sans">696c652f6b6172656e&aes_allow=1&confirm_key=”ABC123”</text>
|
||||
<clipPath id="clip11"><path d="M287,1180 L464,1180 L464,1222 L287,1222 L287,1180 Z" /></clipPath>
|
||||
<path d="M296,1181 C291.5820313,1181 288,1184.5820313 288,1189 L288,1212 C288,1216.4179688 291.5820313,1220 296,1220 L454,1220 C458.4179688,1220 462,1216.4179688 462,1212 L462,1189 C462,1184.5820313 458.4179688,1181 454,1181 Z" style="fill:rgb(127,127,127);stroke:none" clip-path="url(#clip11)" />
|
||||
<text x="302" y="1203" style="font:13px Open Sans">dfrn_request.php</text>
|
||||
<clipPath id="clip12"><path d="M134,1399 L624,1399 L624,2315 L134,2315 L134,1399 Z" /></clipPath>
|
||||
<path d="M143,1400 C138.5820313,1400 135,1403.5820313 135,1408 L135,2305 C135,2309.4179688 138.5820313,2313 143,2313 L614,2313 C618.4179688,2313 622,2309.4179688 622,2305 L622,1408 C622,1403.5820313 618.4179688,1400 614,1400 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip12)" />
|
||||
<text x="149" y="1422" style="font:13px Open Sans">http://example.com/dfrn_request/bob?</text>
|
||||
<text x="149" y="1445" style="font:13px Open Sans">dfrn_url=</text>
|
||||
<text x="149" y="1468" style="font:13px Open Sans">687474703a2f2f6b6172656e686f6d65706167652e</text>
|
||||
<text x="149" y="1491" style="font:13px Open Sans">636f6d2f70726f66696c652f6b6172656e&aes_allow=1&</text>
|
||||
<text x="149" y="1514" style="font:13px Open Sans">confirm_key=”ABC123”</text>
|
||||
<text x="149" y="1560" style="font:13px Open Sans">dfrn_request_content()</text>
|
||||
<text x="149" y="1583" style="font:13px Open Sans">------------------------------------------</text>
|
||||
<text x="149" y="1606" style="font:13px Open Sans">- copy the posted parameters (dfrn_url, key and so on) </text>
|
||||
<text x="149" y="1629" style="font:13px Open Sans">to $_POST</text>
|
||||
<text x="149" y="1698" style="font:13px Open Sans"> dfrn_request_post() - SCENARIO 2 </text>
|
||||
<text x="149" y="1721" style="font:13px Open Sans">($_POST['localconfirm'] == 1)</text>
|
||||
<text x="149" y="1744" style="font:13px Open Sans">-----------------------------------------------------------------------</text>
|
||||
<text x="149" y="1767" style="font:13px Open Sans">- if(local_user() && ($a->user['nickname'] == $a-</text>
|
||||
<text x="149" y="1790" style="font:13px Open Sans">>argv[1]) && (x($_POST,'dfrn_url')))</text>
|
||||
<text x="149" y="1813" style="font:13px Open Sans">-></text>
|
||||
<text x="149" y="1859" style="font:13px Open Sans">- $confirm_key comes from $_POST</text>
|
||||
<text x="149" y="1905" style="font:13px Open Sans">- get data for contact Karen (contact table) by </text>
|
||||
<text x="149" y="1928" style="font:13px Open Sans">$dfrn_url (contacts url and nurl) -> if contact Karen </text>
|
||||
<text x="149" y="1951" style="font:13px Open Sans">does already have a dfrn-id Bob seems already </text>
|
||||
<text x="149" y="1974" style="font:13px Open Sans">connected with Karen (abort here)</text>
|
||||
<text x="149" y="2020" style="font:13px Open Sans">- if this contact (Karen) isn't available in the contact </text>
|
||||
<text x="149" y="2043" style="font:13px Open Sans">tabel, scrape Karens profile page to pick up the dfrn </text>
|
||||
<text x="149" y="2066" style="font:13px Open Sans">links, key, fn, and photo</text>
|
||||
<text x="149" y="2112" style="font:13px Open Sans">- create a contact for Karen in the contact table with </text>
|
||||
<text x="149" y="2135" style="font:13px Open Sans">the scraped data with blocked = 1 and pending = 1 </text>
|
||||
<text x="149" y="2158" style="font:13px Open Sans">(Karens pubkey becomes the contact site-pubkey)</text>
|
||||
<text x="149" y="2204" style="font:13px Open Sans">- fetch_url($dfrn_request . '?confirm_key=' . </text>
|
||||
<text x="149" y="2227" style="font:13px Open Sans">$confirm_key);</text>
|
||||
<text x="149" y="2273" style="font:13px Open Sans">- fetch_url(http://karenhomepage.com/dfrn_request?</text>
|
||||
<text x="149" y="2296" style="font:13px Open Sans">confirm_key=”ABC123”)</text>
|
||||
<clipPath id="clip13"><path d="M1061,2027 L1238,2027 L1238,2069 L1061,2069 L1061,2027 Z" /></clipPath>
|
||||
<path d="M1070,2028 C1065.5820313,2028 1062,2031.5820313 1062,2036 L1062,2059 C1062,2063.4179688 1065.5820313,2067 1070,2067 L1228,2067 C1232.4179688,2067 1236,2063.4179688 1236,2059 L1236,2036 C1236,2031.5820313 1232.4179688,2028 1228,2028 Z" style="fill:rgb(127,127,127);stroke:none" clip-path="url(#clip13)" />
|
||||
<text x="1075" y="2050" style="font:13px Open Sans">dfrn_request.php</text>
|
||||
<clipPath id="clip14"><path d="M857,2205 L1444,2205 L1444,2454 L857,2454 L857,2205 Z" /></clipPath>
|
||||
<path d="M866,2206 C861.5820313,2206 858,2209.5820313 858,2214 L858,2444 C858,2448.4179688 861.5820313,2452 866,2452 L1434,2452 C1438.4179688,2452 1442,2448.4179688 1442,2444 L1442,2214 C1442,2209.5820313 1438.4179688,2206 1434,2206 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip14)" />
|
||||
<text x="871" y="2228" style="font:13px Open Sans">http://karenhomepage.com/dfrn_request?confirm_key=”ABC123”</text>
|
||||
<text x="871" y="2274" style="font:13px Open Sans">dfrn_request_content() -</text>
|
||||
<text x="871" y="2297" style="font:13px Open Sans">(elseif((x($_GET,'confirm_key')) && strlen($_GET['confirm_key'])) )</text>
|
||||
<text x="871" y="2320" style="font:13px Open Sans">----------------------------------------------------------------------------------------------</text>
|
||||
<text x="871" y="2366" style="font:13px Open Sans">- select the intro by confirm_key (intro table) -> get contact id</text>
|
||||
<text x="871" y="2389" style="font:13px Open Sans">- use the intro contact id to get the contact in the contact table</text>
|
||||
<text x="871" y="2412" style="font:13px Open Sans">- build a notification package ( notification(array.....) )</text>
|
||||
<text x="871" y="2435" style="font:13px Open Sans">- update intro in intro table (blocked = 0)</text>
|
||||
<clipPath id="clip15"><path d="M227,2424 L531,2424 L531,2512 L227,2512 L227,2424 Z" /></clipPath>
|
||||
<path d="M236,2425 C231.5820313,2425 228,2428.5820313 228,2433 L228,2502 C228,2506.4179688 231.5820313,2510 236,2510 L521,2510 C525.4179688,2510 529,2506.4179688 529,2502 L529,2433 C529,2428.5820313 525.4179688,2425 521,2425 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip15)" />
|
||||
<text x="242" y="2447" style="font:13px Open Sans">Bob stays on his Friendica server</text>
|
||||
<text x="242" y="2493" style="font:13px Open Sans">- goaway($forwardurl);</text>
|
||||
<clipPath id="clip16"><path d="M14,14 L370,14 L370,125 L14,125 L14,14 Z" /></clipPath>
|
||||
<path d="M23,15 C18.5820313,15 15,18.5820313 15,23 L15,115 C15,119.4179688 18.5820313,123 23,123 L360,123 C364.4179688,123 368,119.4179688 368,115 L368,23 C368,18.5820313 364.4179688,15 360,15 Z" style="fill:rgb(255,255,255);stroke:none" clip-path="url(#clip16)" />
|
||||
<text x="29" y="38" style="font:13px Open Sans">Note: this chart respects only dfrn </text>
|
||||
<text x="29" y="61" style="font:13px Open Sans">contacts and focuses on key exchange </text>
|
||||
<text x="29" y="83" style="font:13px Open Sans">(for other areas it might be very </text>
|
||||
<text x="29" y="106" style="font:13px Open Sans">incomplete)</text>
|
||||
<clipPath id="clip17"><path d="M871,491 L1431,491 L1431,648 L871,648 L871,491 Z" /></clipPath>
|
||||
<path d="M880,492 C875.5820313,492 872,495.5820313 872,500 L872,638 C872,642.4179688 875.5820313,646 880,646 L1421,646 C1425.4179688,646 1429,642.4179688 1429,638 L1429,500 C1429,495.5820313 1425.4179688,492 1421,492 Z" style="fill:rgb(255,255,3);stroke:none" clip-path="url(#clip17)" />
|
||||
<text x="885" y="514" style="font:13px Open Sans">dfrn_request_content()</text>
|
||||
<text x="885" y="537" style="font:13px Open Sans">------------------------------------</text>
|
||||
<text x="885" y="583" style="font:13px Open Sans">- the page for the on Katrins server where Bob do a connection </text>
|
||||
<text x="885" y="606" style="font:13px Open Sans">request</text>
|
||||
<text x="885" y="629" style="font:13px Open Sans">- the form transmit on submit Bobs profile url as dfrn_url</text>
|
||||
<clipPath id="clip18"><path d="M402,267 L974,267 L974,313 L402,313 L402,267 Z" /></clipPath>
|
||||
<path d="M422,271.734375 L954,370.5703125" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip18)" />
|
||||
<clipPath id="clip19"><path d="M402,329 L974,329 L974,377 L402,377 L402,329 Z" /></clipPath>
|
||||
<path d="M422,271.734375 L954,370.5703125" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip19)" />
|
||||
<clipPath id="clip20"><path d="M402,311 L974,311 L974,331 L402,331 L402,311 Z" /></clipPath>
|
||||
<path d="M422,271.734375 L954,370.5703125" style="fill:none;stroke:rgb(182,44,37);opacity:0.09803921568627451;stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip20)" />
|
||||
<clipPath id="clip21"><path d="M402,267 L974,267 L974,377 L402,377 L402,267 Z" /></clipPath>
|
||||
<path d="M944.5703125,373.9023438 L954,370.5703125 L946.3984375,364.0703125 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip21)" />
|
||||
<clipPath id="clip22"><path d="M402,267 L974,267 L974,377 L402,377 L402,267 Z" /></clipPath>
|
||||
<path d="M944.5703125,373.9023438 L954,370.5703125 L946.3984375,364.0703125 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip22)" />
|
||||
<text x="405" y="323" style="font:10px Georgia">bob wants to make a request and is directed from karens profile page to karens dfrn-request page</text>
|
||||
<clipPath id="clip23"><path d="M1111,729 L1186,729 L1186,813 L1111,813 L1111,729 Z" /></clipPath>
|
||||
<path d="M1149.1875,733 L1149.4335938,763.3984375 L1149.5585938,778.6015625 L1149.8046875,809" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip23)" />
|
||||
<clipPath id="clip24"><path d="M1111,729 L1186,729 L1186,813 L1111,813 L1111,729 Z" /></clipPath>
|
||||
<path d="M1144.734375,800.3789063 L1149.8046875,809 L1154.734375,800.3007813 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip24)" />
|
||||
<clipPath id="clip25"><path d="M1111,729 L1186,729 L1186,813 L1111,813 L1111,729 Z" /></clipPath>
|
||||
<path d="M1144.734375,800.3789063 L1149.8046875,809 L1154.734375,800.3007813 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip25)" />
|
||||
<clipPath id="clip26"><path d="M1115,1442 L1190,1442 L1190,1562 L1115,1562 L1115,1442 Z" /></clipPath>
|
||||
<path d="M1152.7773438,1446 L1152.625,1558" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip26)" />
|
||||
<clipPath id="clip27"><path d="M1115,1442 L1190,1442 L1190,1562 L1115,1562 L1115,1442 Z" /></clipPath>
|
||||
<path d="M1147.6367188,1549.3320313 L1152.625,1558 L1157.6367188,1549.3476563 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip27)" />
|
||||
<clipPath id="clip28"><path d="M1115,1442 L1190,1442 L1190,1562 L1115,1562 L1115,1442 Z" /></clipPath>
|
||||
<path d="M1147.6367188,1549.3320313 L1152.625,1558 L1157.6367188,1549.3476563 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip28)" />
|
||||
<clipPath id="clip29"><path d="M458,1201 L893,1201 L893,1375 L458,1375 L458,1201 Z" /></clipPath>
|
||||
<path d="M889,1561.9492188 L462,1205.3515625" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip29)" />
|
||||
<clipPath id="clip30"><path d="M458,1391 L893,1391 L893,1565 L458,1565 L458,1391 Z" /></clipPath>
|
||||
<path d="M889,1561.9492188 L462,1205.3515625" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip30)" />
|
||||
<clipPath id="clip31"><path d="M458,1373 L575,1373 L575,1393 L458,1393 L458,1373 Z" /></clipPath>
|
||||
<path d="M889,1561.9492188 L462,1205.3515625" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip31)" />
|
||||
<clipPath id="clip32"><path d="M776,1373 L893,1373 L893,1393 L776,1393 L776,1373 Z" /></clipPath>
|
||||
<path d="M889,1561.9492188 L462,1205.3515625" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip32)" />
|
||||
<clipPath id="clip33"><path d="M573,1373 L778,1373 L778,1393 L573,1393 L573,1373 Z" /></clipPath>
|
||||
<path d="M889,1561.9492188 L462,1205.3515625" style="fill:none;stroke:rgb(182,44,37);opacity:0.09803921568627451;stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip33)" />
|
||||
<clipPath id="clip34"><path d="M458,1201 L893,1201 L893,1565 L458,1565 L458,1201 Z" /></clipPath>
|
||||
<path d="M471.8515625,1207.0664063 L462,1205.3515625 L465.4414063,1214.7421875 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip34)" />
|
||||
<clipPath id="clip35"><path d="M458,1201 L893,1201 L893,1565 L458,1565 L458,1201 Z" /></clipPath>
|
||||
<path d="M471.8515625,1207.0664063 L462,1205.3515625 L465.4414063,1214.7421875 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip35)" />
|
||||
<text x="576" y="1385" style="font:10px Georgia">redirict to bobs dfrn_request page</text>
|
||||
<clipPath id="clip36"><path d="M339,1216 L414,1216 L414,1404 L339,1404 L339,1216 Z" /></clipPath>
|
||||
<path d="M375.1171875,1220 L376.0625,1400" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip36)" />
|
||||
<clipPath id="clip37"><path d="M339,1216 L414,1216 L414,1404 L339,1404 L339,1216 Z" /></clipPath>
|
||||
<path d="M371.015625,1391.3671875 L376.0625,1400 L381.015625,1391.3125 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip37)" />
|
||||
<clipPath id="clip38"><path d="M339,1216 L414,1216 L414,1404 L339,1404 L339,1216 Z" /></clipPath>
|
||||
<path d="M371.015625,1391.3671875 L376.0625,1400 L381.015625,1391.3125 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip38)" />
|
||||
<clipPath id="clip39"><path d="M618,2024 L1072,2024 L1072,2158 L618,2158 L618,2024 Z" /></clipPath>
|
||||
<path d="M622,2305.015625 L1068.1992188,2028" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip39)" />
|
||||
<clipPath id="clip40"><path d="M618,2174 L1072,2174 L1072,2309 L618,2309 L618,2174 Z" /></clipPath>
|
||||
<path d="M622,2305.015625 L1068.1992188,2028" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip40)" />
|
||||
<clipPath id="clip41"><path d="M618,2156 L650,2156 L650,2176 L618,2176 L618,2156 Z" /></clipPath>
|
||||
<path d="M622,2305.015625 L1068.1992188,2028" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip41)" />
|
||||
<clipPath id="clip42"><path d="M1041,2156 L1072,2156 L1072,2176 L1041,2176 L1041,2156 Z" /></clipPath>
|
||||
<path d="M622,2305.015625 L1068.1992188,2028" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip42)" />
|
||||
<clipPath id="clip43"><path d="M648,2156 L1043,2156 L1043,2176 L648,2176 L648,2156 Z" /></clipPath>
|
||||
<path d="M622,2305.015625 L1068.1992188,2028" style="fill:none;stroke:rgb(182,44,37);opacity:0.09803921568627451;stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip43)" />
|
||||
<clipPath id="clip44"><path d="M618,2024 L1072,2024 L1072,2309 L618,2309 L618,2024 Z" /></clipPath>
|
||||
<path d="M1063.4804688,2036.8164063 L1068.1992188,2028 L1058.2070313,2028.3203125 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip44)" />
|
||||
<clipPath id="clip45"><path d="M618,2024 L1072,2024 L1072,2309 L618,2309 L618,2024 Z" /></clipPath>
|
||||
<path d="M1063.4804688,2036.8164063 L1068.1992188,2028 L1058.2070313,2028.3203125 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip45)" />
|
||||
<text x="651" y="2168" style="font:10px Georgia">http://karenhomepage.com/dfrn_request?confirm_key=”ABC123”</text>
|
||||
<clipPath id="clip46"><path d="M1111,2063 L1186,2063 L1186,2210 L1111,2210 L1111,2063 Z" /></clipPath>
|
||||
<path d="M1149.0703125,2067 L1149.5625,2206" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip46)" />
|
||||
<clipPath id="clip47"><path d="M1111,2063 L1186,2063 L1186,2210 L1111,2210 L1111,2063 Z" /></clipPath>
|
||||
<path d="M1144.53125,2197.359375 L1149.5625,2206 L1154.53125,2197.3203125 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip47)" />
|
||||
<clipPath id="clip48"><path d="M1111,2063 L1186,2063 L1186,2210 L1111,2210 L1111,2063 Z" /></clipPath>
|
||||
<path d="M1144.53125,2197.359375 L1149.5625,2206 L1154.53125,2197.3203125 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip48)" />
|
||||
<clipPath id="clip49"><path d="M342,2309 L417,2309 L417,2429 L342,2429 L342,2309 Z" /></clipPath>
|
||||
<path d="M378.875,2313 L378.5351563,2425" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip49)" />
|
||||
<clipPath id="clip50"><path d="M342,2309 L417,2309 L417,2429 L342,2429 L342,2309 Z" /></clipPath>
|
||||
<path d="M373.5625,2416.3242188 L378.5351563,2425 L383.5625,2416.3554688 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip50)" />
|
||||
<clipPath id="clip51"><path d="M342,2309 L417,2309 L417,2429 L342,2429 L342,2309 Z" /></clipPath>
|
||||
<path d="M373.5625,2416.3242188 L378.5351563,2425 L383.5625,2416.3554688 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip51)" />
|
||||
<clipPath id="clip52"><path d="M1111,445 L1186,445 L1186,496 L1111,496 L1111,445 Z" /></clipPath>
|
||||
<path d="M1148.7851563,449 L1149.3125,492" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip52)" />
|
||||
<clipPath id="clip53"><path d="M1111,445 L1186,445 L1186,496 L1111,496 L1111,445 Z" /></clipPath>
|
||||
<path d="M1144.2070313,483.4023438 L1149.3125,492 L1154.2070313,483.2773438 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip53)" />
|
||||
<clipPath id="clip54"><path d="M1111,445 L1186,445 L1186,496 L1111,496 L1111,445 Z" /></clipPath>
|
||||
<path d="M1144.2070313,483.4023438 L1149.3125,492 L1154.2070313,483.2773438 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip54)" />
|
||||
<clipPath id="clip55"><path d="M1026,642 L1272,642 L1272,662 L1026,662 L1026,642 Z" /></clipPath>
|
||||
<path d="M1149.703125,646 L1149.2695313,694" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip55)" />
|
||||
<clipPath id="clip56"><path d="M1026,678 L1272,678 L1272,698 L1026,698 L1026,678 Z" /></clipPath>
|
||||
<path d="M1149.703125,646 L1149.2695313,694" style="fill:none;stroke:rgb(182,44,37);stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip56)" />
|
||||
<clipPath id="clip57"><path d="M1026,660 L1272,660 L1272,680 L1026,680 L1026,660 Z" /></clipPath>
|
||||
<path d="M1149.703125,646 L1149.2695313,694" style="fill:none;stroke:rgb(182,44,37);opacity:0.09803921568627451;stroke-width:3;stroke-dasharray:18,9;stroke-dashoffset:0" clip-path="url(#clip57)" />
|
||||
<clipPath id="clip58"><path d="M1026,642 L1272,642 L1272,698 L1026,698 L1026,642 Z" /></clipPath>
|
||||
<path d="M1144.3476563,685.296875 L1149.2695313,694 L1154.3476563,685.3867188 Z" style="fill:rgb(182,44,37);stroke:none" clip-path="url(#clip58)" />
|
||||
<clipPath id="clip59"><path d="M1026,642 L1272,642 L1272,698 L1026,698 L1026,642 Z" /></clipPath>
|
||||
<path d="M1144.3476563,685.296875 L1149.2695313,694 L1154.3476563,685.3867188 Z" style="fill:none;stroke:rgb(182,44,37);stroke-width:3" clip-path="url(#clip59)" />
|
||||
<text x="1029" y="672" style="font:10px Georgia">Bob fills request form and presses submit</text>
|
||||
</svg>
|
After Width: | Height: | Size: 33 KiB |
|
@ -2105,7 +2105,6 @@ ul li:hover .contact-wrapper a.contact-action-link:hover {
|
|||
|
||||
/* Events page */
|
||||
|
||||
|
||||
.fc .fc-month-view .fc-content .fc-title .item-desc:hover {
|
||||
color: $link_hover_color;
|
||||
}
|
||||
|
@ -2305,6 +2304,39 @@ little modifications to emulate a standard page template */
|
|||
-moz-box-shadow: 0 0 3px #dadada;
|
||||
}
|
||||
|
||||
/* Help Page */
|
||||
section.help-content-wrapper h1 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 1.8em;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
section.help-content-wrapper h2 {
|
||||
padding-bottom: 0.3em;
|
||||
font-size: 1.5em;
|
||||
border-bottom: 1px solid #ddd;
|
||||
}
|
||||
section.help-content-wrapper h3 {
|
||||
font-size: 1.2em;
|
||||
}
|
||||
section.help-content-wrapper h1,
|
||||
section.help-content-wrapper h2,
|
||||
section.help-content-wrapper h3,
|
||||
section.help-content-wrapper h5,
|
||||
section.help-content-wrapper h6 {
|
||||
margin-top: 24px;
|
||||
margin-bottom: 16px;
|
||||
font-weight: 600;
|
||||
line-height: 1.25;
|
||||
}
|
||||
section.help-content-wrapper p {
|
||||
margin: 0.4em 0;
|
||||
}
|
||||
section.help-content-wrapper p,
|
||||
section.help-content-wrapper a {
|
||||
line-height: 1.6;
|
||||
font-size: 0.96em;
|
||||
}
|
||||
|
||||
/*
|
||||
* Overwriting for transparency and other colors
|
||||
*/
|
||||
|
|
Loading…
Reference in a new issue