Skip to content

Commit 0c9171f

Browse files
authored
Merge pull request #106 from sstrigler/great_invitations
Great invitations
2 parents 7285aa7 + 03bce05 commit 0c9171f

File tree

7 files changed

+187
-94
lines changed

7 files changed

+187
-94
lines changed

README.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -321,6 +321,7 @@ and its nice display in [Erlang/Elixir XMPP at xmpp.org](https://xmpp.org/softwa
321321
- [XEP-0363](https://xmpp.org/extensions/xep-0363.html): HTTP File Upload
322322
- [XEP-0369](https://xmpp.org/extensions/xep-0369.html): Mediated Information eXchange (MIX)
323323
- [XEP-0377](https://xmpp.org/extensions/xep-0377.html): Spam Reporting
324+
- [XEP-0379](https://xmpp.org/extensions/xep-0379.html): Pre-Authenticated Roster Subscription
324325
- [XEP-0386](https://xmpp.org/extensions/xep-0386.html): Bind 2
325326
- [XEP-0388](https://xmpp.org/extensions/xep-0388.html): Extensible SASL Profile
326327
- [XEP-0402](https://xmpp.org/extensions/xep-0402.html): PEP Native Bookmarks
@@ -333,6 +334,7 @@ and its nice display in [Erlang/Elixir XMPP at xmpp.org](https://xmpp.org/softwa
333334
- [XEP-0425](https://xmpp.org/extensions/xep-0425.html): Message Moderation
334335
- [XEP-0430](https://xmpp.org/extensions/xep-0430.html): Inbox
335336
- [XEP-0440](https://xmpp.org/extensions/xep-0440.html): SASL Channel-Binding Type Capability
337+
- [XEP-0445](https://xmpp.org/extensions/xep-0445.html): Pre-Authenticated In-Band Registration
336338
- [XEP-0474](https://xmpp.org/extensions/xep-0474.html): SASL SCRAM Downgrade Protection
337339
- [draft-cridland-xmpp-session-01](https://tools.ietf.org/html/draft-cridland-xmpp-session-01): XMPP Session Establishment
338340

include/ns.hrl

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -222,3 +222,6 @@
222222
-define(NS_MESSAGE_MODERATE_1, <<"urn:xmpp:message-moderate:1">>).
223223
-define(NS_MESSAGE_RETRACT, <<"urn:xmpp:message-retract:1">>).
224224
-define(NS_OCCUPANT_ID, <<"urn:xmpp:occupant-id:0">>).
225+
-define(NS_PREAUTHENTICATED_ROSTER_SUBSCRIPTION, <<"urn:xmpp:pars:0">>).
226+
-define(NS_FEATURE_IBR_TOKEN, <<"urn:xmpp:ibr-token:0">>).
227+
-define(NS_FEATURE_SUB_PRE_APPROVAL, <<"urn:xmpp:features:pre-approval">>).

include/xmpp_codec.hrl

Lines changed: 99 additions & 87 deletions
Original file line numberDiff line numberDiff line change
@@ -190,15 +190,9 @@
190190
cdata = <<>> :: binary()}).
191191
-type scram_upgrade_salt() :: #scram_upgrade_salt{}.
192192

193-
-record(receipt_request, {}).
194-
-type receipt_request() :: #receipt_request{}.
195-
196193
-record(legacy_auth_feature, {}).
197194
-type legacy_auth_feature() :: #legacy_auth_feature{}.
198195

199-
-record(rosterver_feature, {}).
200-
-type rosterver_feature() :: #rosterver_feature{}.
201-
202196
-record(mix_roster_channel, {participant_id = <<>> :: binary()}).
203197
-type mix_roster_channel() :: #mix_roster_channel{}.
204198

@@ -341,6 +335,9 @@
341335
-record(private, {sub_els = [] :: [xmpp_element() | fxml:xmlel()]}).
342336
-type private() :: #private{}.
343337

338+
-record(preauth, {token = <<>> :: binary()}).
339+
-type preauth() :: #preauth{}.
340+
344341
-record(scram_upgrade_hash, {data = <<>> :: binary()}).
345342
-type scram_upgrade_hash() :: #scram_upgrade_hash{}.
346343

@@ -389,6 +386,9 @@
389386
id = <<>> :: binary()}).
390387
-type inbox_entry() :: #inbox_entry{}.
391388

389+
-record(feature_register_ibr_token, {}).
390+
-type feature_register_ibr_token() :: #feature_register_ibr_token{}.
391+
392392
-record(x509_challenge_failed, {}).
393393
-type x509_challenge_failed() :: #x509_challenge_failed{}.
394394

@@ -644,6 +644,9 @@
644644
items = [] :: [#ps_item{}]}).
645645
-type ps_publish() :: #ps_publish{}.
646646

647+
-record(feature_pre_approval, {}).
648+
-type feature_pre_approval() :: #feature_pre_approval{}.
649+
647650
-record(report, {reason :: 'abuse' | 'spam',
648651
text = [] :: [#text{}]}).
649652
-type report() :: #report{}.
@@ -860,11 +863,6 @@
860863
resource :: 'undefined' | binary()}).
861864
-type legacy_auth() :: #legacy_auth{}.
862865

863-
-record(privacy_query, {lists = [] :: [#privacy_list{}],
864-
default :: 'none' | 'undefined' | binary(),
865-
active :: 'none' | 'undefined' | binary()}).
866-
-type privacy_query() :: #privacy_query{}.
867-
868866
-record(pubsub_serverinfo_remote_domain, {name = <<>> :: binary(),
869867
type = [] :: ['bidi' | 'incoming' | 'outgoing']}).
870868
-type pubsub_serverinfo_remote_domain() :: #pubsub_serverinfo_remote_domain{}.
@@ -927,14 +925,6 @@
927925
-record(credentials, {services = [] :: [#service{}]}).
928926
-type credentials() :: #credentials{}.
929927

930-
-record(vcard_email, {home = false :: boolean(),
931-
work = false :: boolean(),
932-
internet = false :: boolean(),
933-
pref = false :: boolean(),
934-
x400 = false :: boolean(),
935-
userid :: 'undefined' | binary()}).
936-
-type vcard_email() :: #vcard_email{}.
937-
938928
-record(block_item, {jid :: jid:jid(),
939929
spam_report :: 'undefined' | #report{}}).
940930
-type block_item() :: #block_item{}.
@@ -1255,38 +1245,6 @@
12551245
suffix :: 'undefined' | binary()}).
12561246
-type vcard_name() :: #vcard_name{}.
12571247

1258-
-record(vcard_temp, {version :: 'undefined' | binary(),
1259-
fn :: 'undefined' | binary(),
1260-
n :: 'undefined' | #vcard_name{},
1261-
nickname :: 'undefined' | binary(),
1262-
photo :: 'undefined' | #vcard_photo{},
1263-
bday :: 'undefined' | binary(),
1264-
adr = [] :: [#vcard_adr{}],
1265-
label = [] :: [#vcard_label{}],
1266-
tel = [] :: [#vcard_tel{}],
1267-
email = [] :: [#vcard_email{}],
1268-
jabberid :: 'undefined' | binary(),
1269-
mailer :: 'undefined' | binary(),
1270-
tz :: 'undefined' | binary(),
1271-
geo :: 'undefined' | #vcard_geo{},
1272-
title :: 'undefined' | binary(),
1273-
role :: 'undefined' | binary(),
1274-
logo :: 'undefined' | #vcard_logo{},
1275-
org :: 'undefined' | #vcard_org{},
1276-
categories = [] :: [binary()],
1277-
note :: 'undefined' | binary(),
1278-
prodid :: 'undefined' | binary(),
1279-
rev :: 'undefined' | binary(),
1280-
sort_string :: 'undefined' | binary(),
1281-
sound :: 'undefined' | #vcard_sound{},
1282-
uid :: 'undefined' | binary(),
1283-
url :: 'undefined' | binary(),
1284-
class :: 'confidential' | 'private' | 'public' | 'undefined',
1285-
key :: 'undefined' | #vcard_key{},
1286-
desc :: 'undefined' | binary(),
1287-
sub_els = [] :: [xmpp_element() | fxml:xmlel()]}).
1288-
-type vcard_temp() :: #vcard_temp{}.
1289-
12901248
-record(ibb_data, {sid = <<>> :: binary(),
12911249
seq :: non_neg_integer(),
12921250
data = <<>> :: binary()}).
@@ -1338,28 +1296,6 @@
13381296
text = [] :: [#text{}]}).
13391297
-type sasl_failure() :: #sasl_failure{}.
13401298

1341-
-record(bind, {jid :: undefined | jid:jid(),
1342-
resource = <<>> :: binary()}).
1343-
-type bind() :: #bind{}.
1344-
1345-
-record(jingle_ft_file, {date :: undefined | erlang:timestamp(),
1346-
desc = [] :: [#text{}],
1347-
hash = [] :: [#hash{}],
1348-
'hash-used' :: 'undefined' | #hash_used{},
1349-
'media-type' :: 'undefined' | binary(),
1350-
name :: 'undefined' | binary(),
1351-
size :: 'undefined' | non_neg_integer(),
1352-
range :: 'undefined' | #jingle_ft_range{}}).
1353-
-type jingle_ft_file() :: #jingle_ft_file{}.
1354-
1355-
-record(jingle_ft_checksum, {creator :: 'initiator' | 'responder' | 'undefined',
1356-
name = <<>> :: binary(),
1357-
file :: #jingle_ft_file{}}).
1358-
-type jingle_ft_checksum() :: #jingle_ft_checksum{}.
1359-
1360-
-record(jingle_ft_description, {file :: 'undefined' | #jingle_ft_file{}}).
1361-
-type jingle_ft_description() :: #jingle_ft_description{}.
1362-
13631299
-record(pubsub, {subscriptions :: 'undefined' | {binary(),[#ps_subscription{}]},
13641300
subscription :: 'undefined' | #ps_subscription{},
13651301
affiliations :: 'undefined' | {binary(),[#ps_affiliation{}]},
@@ -1400,6 +1336,88 @@
14001336
sub_els = [] :: [xmpp_element() | fxml:xmlel()]}).
14011337
-type jingle() :: #jingle{}.
14021338

1339+
-record(muc_subscription, {jid :: undefined | jid:jid(),
1340+
nick = <<>> :: binary(),
1341+
events = [] :: [binary()]}).
1342+
-type muc_subscription() :: #muc_subscription{}.
1343+
1344+
-record(muc_subscriptions, {list = [] :: [#muc_subscription{}]}).
1345+
-type muc_subscriptions() :: #muc_subscriptions{}.
1346+
1347+
-record(pubsub_owner, {affiliations :: 'undefined' | {binary(),[#ps_affiliation{}]},
1348+
configure :: 'undefined' | {binary(),'undefined' | #xdata{}},
1349+
default :: 'undefined' | {binary(),'undefined' | #xdata{}},
1350+
delete :: 'undefined' | {binary(),binary()},
1351+
purge :: 'undefined' | binary(),
1352+
subscriptions :: 'undefined' | {binary(),[#ps_subscription{}]}}).
1353+
-type pubsub_owner() :: #pubsub_owner{}.
1354+
1355+
-record(receipt_request, {}).
1356+
-type receipt_request() :: #receipt_request{}.
1357+
1358+
-record(vcard_email, {home = false :: boolean(),
1359+
work = false :: boolean(),
1360+
internet = false :: boolean(),
1361+
pref = false :: boolean(),
1362+
x400 = false :: boolean(),
1363+
userid :: 'undefined' | binary()}).
1364+
-type vcard_email() :: #vcard_email{}.
1365+
1366+
-record(vcard_temp, {version :: 'undefined' | binary(),
1367+
fn :: 'undefined' | binary(),
1368+
n :: 'undefined' | #vcard_name{},
1369+
nickname :: 'undefined' | binary(),
1370+
photo :: 'undefined' | #vcard_photo{},
1371+
bday :: 'undefined' | binary(),
1372+
adr = [] :: [#vcard_adr{}],
1373+
label = [] :: [#vcard_label{}],
1374+
tel = [] :: [#vcard_tel{}],
1375+
email = [] :: [#vcard_email{}],
1376+
jabberid :: 'undefined' | binary(),
1377+
mailer :: 'undefined' | binary(),
1378+
tz :: 'undefined' | binary(),
1379+
geo :: 'undefined' | #vcard_geo{},
1380+
title :: 'undefined' | binary(),
1381+
role :: 'undefined' | binary(),
1382+
logo :: 'undefined' | #vcard_logo{},
1383+
org :: 'undefined' | #vcard_org{},
1384+
categories = [] :: [binary()],
1385+
note :: 'undefined' | binary(),
1386+
prodid :: 'undefined' | binary(),
1387+
rev :: 'undefined' | binary(),
1388+
sort_string :: 'undefined' | binary(),
1389+
sound :: 'undefined' | #vcard_sound{},
1390+
uid :: 'undefined' | binary(),
1391+
url :: 'undefined' | binary(),
1392+
class :: 'confidential' | 'private' | 'public' | 'undefined',
1393+
key :: 'undefined' | #vcard_key{},
1394+
desc :: 'undefined' | binary(),
1395+
sub_els = [] :: [xmpp_element() | fxml:xmlel()]}).
1396+
-type vcard_temp() :: #vcard_temp{}.
1397+
1398+
-record(privacy_query, {lists = [] :: [#privacy_list{}],
1399+
default :: 'none' | 'undefined' | binary(),
1400+
active :: 'none' | 'undefined' | binary()}).
1401+
-type privacy_query() :: #privacy_query{}.
1402+
1403+
-record(jingle_ft_file, {date :: undefined | erlang:timestamp(),
1404+
desc = [] :: [#text{}],
1405+
hash = [] :: [#hash{}],
1406+
'hash-used' :: 'undefined' | #hash_used{},
1407+
'media-type' :: 'undefined' | binary(),
1408+
name :: 'undefined' | binary(),
1409+
size :: 'undefined' | non_neg_integer(),
1410+
range :: 'undefined' | #jingle_ft_range{}}).
1411+
-type jingle_ft_file() :: #jingle_ft_file{}.
1412+
1413+
-record(jingle_ft_checksum, {creator :: 'initiator' | 'responder' | 'undefined',
1414+
name = <<>> :: binary(),
1415+
file :: #jingle_ft_file{}}).
1416+
-type jingle_ft_checksum() :: #jingle_ft_checksum{}.
1417+
1418+
-record(jingle_ft_description, {file :: 'undefined' | #jingle_ft_file{}}).
1419+
-type jingle_ft_description() :: #jingle_ft_description{}.
1420+
14031421
-record(register, {registered = false :: boolean(),
14041422
remove = false :: boolean(),
14051423
instructions :: 'undefined' | binary(),
@@ -1424,21 +1442,12 @@
14241442
sub_els = [] :: [xmpp_element() | fxml:xmlel()]}).
14251443
-type register() :: #register{}.
14261444

1427-
-record(muc_subscription, {jid :: undefined | jid:jid(),
1428-
nick = <<>> :: binary(),
1429-
events = [] :: [binary()]}).
1430-
-type muc_subscription() :: #muc_subscription{}.
1431-
1432-
-record(muc_subscriptions, {list = [] :: [#muc_subscription{}]}).
1433-
-type muc_subscriptions() :: #muc_subscriptions{}.
1445+
-record(bind, {jid :: undefined | jid:jid(),
1446+
resource = <<>> :: binary()}).
1447+
-type bind() :: #bind{}.
14341448

1435-
-record(pubsub_owner, {affiliations :: 'undefined' | {binary(),[#ps_affiliation{}]},
1436-
configure :: 'undefined' | {binary(),'undefined' | #xdata{}},
1437-
default :: 'undefined' | {binary(),'undefined' | #xdata{}},
1438-
delete :: 'undefined' | {binary(),binary()},
1439-
purge :: 'undefined' | binary(),
1440-
subscriptions :: 'undefined' | {binary(),[#ps_subscription{}]}}).
1441-
-type pubsub_owner() :: #pubsub_owner{}.
1449+
-record(rosterver_feature, {}).
1450+
-type rosterver_feature() :: #rosterver_feature{}.
14421451

14431452
-type xmpp_element() :: address() |
14441453
addresses() |
@@ -1491,7 +1500,9 @@
14911500
fasten_apply_to() |
14921501
fasten_external() |
14931502
feature_csi() |
1503+
feature_pre_approval() |
14941504
feature_register() |
1505+
feature_register_ibr_token() |
14951506
feature_sm() |
14961507
forwarded() |
14971508
gone() |
@@ -1583,6 +1594,7 @@
15831594
origin_id() |
15841595
pep_bookmarks_conference() |
15851596
ping() |
1597+
preauth() |
15861598
presence() |
15871599
privacy_item() |
15881600
privacy_list() |

specs/xmpp_codec.spec

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -105,6 +105,12 @@
105105
module = rfc6121,
106106
result = {rosterver_feature}}).
107107

108+
-xml(feature_pre_approval,
109+
#elem{name = <<"sub">>,
110+
xmlns = <<"urn:xmpp:features:pre-approval">>,
111+
module = 'rfc6121',
112+
result = {feature_pre_approval}}).
113+
108114
-xml(privacy_message,
109115
#elem{name = <<"message">>,
110116
xmlns = <<"jabber:iq:privacy">>,
@@ -5743,6 +5749,20 @@
57435749
enc = {enc_enum, []},
57445750
dec = {dec_enum, [[incoming, outgoing, bidi]]}}]}).
57455751

5752+
-xml(preauth,
5753+
#elem{name = <<"preauth">>,
5754+
xmlns = <<"urn:xmpp:pars:0">>,
5755+
module = 'xep0379',
5756+
attrs = [#attr{name = <<"token">>,
5757+
label = '$token'}],
5758+
result = {preauth, '$token'}}).
5759+
5760+
-xml(feature_register_ibr_token,
5761+
#elem{name = <<"register">>,
5762+
xmlns = <<"urn:xmpp:ibr-token:0">>,
5763+
module = 'xep0445',
5764+
result = {feature_register_ibr_token}}).
5765+
57465766
-spec dec_tzo(_) -> {integer(), integer()}.
57475767
dec_tzo(Val) ->
57485768
[H1, M1] = binary:split(Val, <<":">>),

0 commit comments

Comments
 (0)