annotate mod_voipms_carddav/README.md @ 6562:5da6fb562df9 default tip

mod_unified_push: Fix push error handling (fixes #2000) Use the error object that send_iq() passes as an argument to it's reject callback instead of attempting and failing to do the parsing in the callback itself.
author kmq
date Mon, 06 Jul 2026 14:23:57 +0200
parents f4eba826a308
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
6309
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
1 ---
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
2 labels:
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
3 - 'Stage-Alpha'
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
4 - 'Type-Web'
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
5 summary: Sync contacts from CardDAV in mod_voipms format.
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
6 rockspec:
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
7 build:
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
8 modules:
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
9 mod_voipms_carddav: mod_voipms_carddav.lua
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
10 ...
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
11
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
12 Introduction
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
13 ============
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
14
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
15 This is a Prosody module to periodically sync virtual contacts via CardDAV to a roster. It handles the format for contacts produced by the mod_voipms module. It treats contacts with multiple numbers as distinct contacts with a type (e.g. cell, home, work). Further, for each DID, it will create a separate contact (and group) to denote the DID number it is associated with.
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
16
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
17 Note: Unlike the mod_voip.ms module, which you may run on a VirtualHost like "sms.example.com", this module should be enabled on the host that users login to. This is because it hooks the 'roster-load' function to inject virtual contacts, and these events will not be seen on subdomains. When building contact JIDs for each contact, it will use the module.host by default. If you are using "sms.example.com" for the mod_voip.ms module, you should set 'voipms_carddav_domain' to match.
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
18
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
19 Configuration
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
20 =============
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
21
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
22 | option | type | default | description
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
23 |-----------------------------------|--------|------------------------|------------|
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
24 | voipms\_carddav\_contact\_format | string | [%alias] %name (%type) | Format to display contacts ([Work] John Smith (cell))
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
25 | voipms\_carddav\_domain | string | module.host | Domain part of JID
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
26 | voipms\_carddav\_jid\_map | table | table | nil | JID->DIDs/CardDAV
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
27 | voipms\_carddav\_sync\_interval | number | 86400 | Interval (in seconds) to sync CardDAV
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
28 ```
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
29 VirtualHost "example.com"
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
30 modules_enabled = {
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
31 "voipms_carddav";
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
32 }
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
33 voipms_carddav_contact_format = "[%alias] %name (%type)"
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
34 voipms_carddav_domain = "sms.example.com"
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
35 voipms_carddav_jid_map = {
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
36 ["john@example.com"] = {
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
37 dids = {
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
38 ["+10345678901"] = "Home",
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
39 ["+10473828482"] = "Work",
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
40 },
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
41 carddav = {
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
42 username = "john",
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
43 password = "some_password",
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
44 url = "https://cloud.example.com/remote.php/dav/addressbooks/users/john/contacts/"
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
45 }
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
46 },
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
47 ["jane@example.com"] = {
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
48 dids = {
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
49 ["+10484828493"] = "Personal",
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
50 ["+10483829293"] = "Professional",
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
51 },
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
52 carddav = {
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
53 username = "john",
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
54 password = "some_password",
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
55 url = "https://cloud.example.com/remote.php/dav/addressbooks/users/john/contacts/"
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
56 }
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
57 }
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
58 }
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
59 voipms_carddav_sync_interval = 86400
f4eba826a308 mod_voipms_carddav: New module to sync contacts from CardDAV in mod_voipms format
Chaz Kettleson <chaz@pyr3x.com>
parents:
diff changeset
60 ```