XMPP invitation landing page, without javascript
readme: Update for fork
| -rw-r--r-- | README.md | 55 |
1 files changed, 27 insertions, 28 deletions
@@ -1,4 +1,4 @@ -# Easy XMPP Invitation Landing Page +# PHP XMPP Invitation Landing Page This is an XMPP invitation landing page that client developers or XMPP server admins can host on their servers. It allows users to send XMPP invitations @@ -7,14 +7,16 @@ part of the [Easy XMPP](https://wiki.xmpp.org/web/Easy_XMPP) initiative to improve the ["first contact"](https://wiki.xmpp.org/web/Easy_Onboarding#First_Contact) experience. -For the JID vladimir@xmpp.example, it will create the following page ([live example](https://yax.im/i/#vladimir@xmpp.example)): +For the JID romeo@xmpp.example, it will create the following page ([live example](https://zachdecook.com/chat?romeo@xmpp.example)): -> ## Vladimir has invited you to chat +> # Invitation from Romeo > -> Add Vladimir to your contact list by clicking the following link: +> ## Romeo has invited you to chat > -> [**[ Add Vladimir ]**](https://yax.im/i/#vladimir@xmpp.example) +> [**[Add Romeo to Contact List]**](https://zachdecook.com/chat?romeo@xmpp.example) > +> `xmpp:romeo@xmpp.example` +> > If this link does not work, you need to install and configure an XMPP client, and visit this page again afterwards. > > *[snipped client list and disclaimer]* @@ -22,37 +24,34 @@ For the JID vladimir@xmpp.example, it will create the following page ([live exam ## Principal operation - * Vladimir clicks on his XMPP client's "Create Invitation" button - * The XMPP client creates a link according to [RFC 5122](https://tools.ietf.org/html/rfc5122), e.g. `xmpp:vladimir@xmpp.example?otr=23` - * The client automatically transforms the link into a landing page link by removing `xmpp:` and adding the address as an URI fragment to the hosted landing page, e.g. `https://www.xmpp.example/i/#vladimir@xmpp.example?otr=23` - * Vladimir sends the resulting invitation link via E-Mail, SMS, QR-Code, [RFC 1149](https://tools.ietf.org/html/rfc1149) or any other means to user Donald. - * Donald opens the link in the browser, which has an "Add"/"Join" button linking to the `xmpp:` URI - * If Donald has an XMPP client, it will handle the button click and open the "Add to roster" dialog - * If Donald does not have an XMPP client, the link won't work. Donald must install a client and return to the link later + * Romeo clicks on his XMPP client's "Create Invitation" button + * The server provides the URI, and + * either the server provides an invite web page link, or the client transforms the link into a landing page link. + * Romeo sends the resulting invitation link via E-Mail, SMS, QR-Code, [A5S2 messenger](http://shakespeare.mit.edu/romeo_juliet/romeo_juliet.5.2.html) or any other means to Juliet. + * Juliet opens the link in a web browser, which has a button linking to the `xmpp:` URI + * If Juliet has an XMPP client, it will handle the button click and open the "Add to roster" dialog + * If Juliet does not have an XMPP client, the link won't work. She must install a client and return to the link later -## Design decisions - * The (privacy sensitive) JID and parameters are put into the URI fragment, which is not transmitted to the hosting server - * The fragment is parsed by the receiving client, this requires JavaScript - * I18N and client suggestions are performed dynamically - * MUCs get a special treatment in the UI to show they are a chat room and not a contact, based on presence of `?join` in the address +## Supported URIs + +* [xmpp:romeo@xmpp.example](https://zachdecook.com/chat?romeo@xmpp.example) + +## Design decisions + * The (privacy sensitive) JID and parameters are put into the Query String, which **is** transmitted to the hosting server + * The fragment is parsed by the receiving server, this **doesn't** require JavaScript + * User agent string is parsed server-side. -## TODO +## Privacy considerations - * I18N / Translation - * Browser language auto-detection, drop-down / language list for manual override - * More languages - * Platform specific client recommendations (i.e. yaxim on Android, ChatSecure on iOS, Gajim on Windows) - * Option to switch platform dynamically - * "Edit" mode to manually create invitation links - * Get rid of bootstrap +Don't use an instance from an untrusted server administrator. +A malicious server administrator could use the URI +(just the same as someone who intercepted the message). ## Inspiration -This project was inspired by -[mod_invite](https://modules.prosody.im/mod_invite.html) and -[Conversations'](https://conversations.im/) contact sharing page. +This project was forked from [easy-xmpp-invitation](https://github.com/ge0rg/easy-xmpp-invitation), which implements this with client-side javascript. ## License |