nextcloud / contacts

📇 Contacts app for Nextcloud
https://apps.nextcloud.com/apps/contacts
GNU Affero General Public License v3.0
569 stars 172 forks source link

IMPP property incorrectly formatted/read in vCard 4 breaking RFC #1396

Open spoorun opened 4 years ago

spoorun commented 4 years ago

ISSUE

Nextcloud creates/syncs/exports the following (vCard 4) for IMPP instant messaging fields:

E.g. Contact with a Skype IM address of https://skype.com/sfe

GROUP3.IMPP;TYPE=x-skype:https://skype.com/sfe GROUP3.X-ABLABEL:Skype

CAUSE

Nextcloud is applying the vCard 3 (extension) standards, and not the correct vCard 4 standard.

vCard 3 that Nextcloud is using for vCard 4 also: https://tools.ietf.org/html/rfc4770 RFC example: IMPP;TYPE=personal,pref:im:alice@example.com

vCard 4 that Nextcloud should be using for vCard 4 versions: https://tools.ietf.org/html/rfc6350#page-37 IMPP;PREF=1:xmpp:alice@example.com

RESULT

This does not accord with the RFC spec, and thus is incorrectly translated by other systems (such as Android via DavX) and appears wrongly: in this case: Label: https Value: //skype.com/sfe

DavX/Android correctly create the following value of the same field: IMPP:Skype:https://skype.com/sfe

RFC ( https://tools.ietf.org/html/rfc6350#page-36 ) Specifies the following example: IMPP;PREF=1:xmpp:alice@example.com

Note that 1) PREF is optional 2) TYPE is not provided for this property 3) A URI can be provided, but note that most modern systems recognise common IMPP parameters (Facebook (messenger), Instagram, Twitter, Skype) with just the username.

RESOLUTION

Read and write the correct vCard 4 specs for IM fields as above.

ksl1989 commented 4 years ago

I think this is the same issue, or at least related to #800, reported back in 2018 and still open.

As reported before, NC Contacts is exporting invalid IMPP properties, but it should be noted it also can't import correctly formatted properties. E.g.:

BEGIN:VCARD
VERSION:4.0
FN:Alice
IMPP:xmpp:alice@example.com
N:Alice;;;;
END:VCARD

is displayed as

broken_impp

When a different IM handle is added on NC Contacts, the following happens:

BEGIN:VCARD
VERSION:3.0
PRODID:-//Sabre//Sabre VObject 4.1.6//EN
FN:Alice
IMPP:xmpp:alice@example.com
IMPP;TYPE=SKYPE:alice2020
N:Alice;;;;
UID:f1252f1b-001e-427d-a8f1-752b048bae36
REV;VALUE=DATE-AND-OR-TIME:20200312T164452Z
END:VCARD

An invalid property is added, which is displayed correctly on NC Contacts but is not likely to be understood by other clients, making vCards created or edited in NC Contacts incompatible with other clients.