Mercurial > prosody-modules
annotate mod_block_strangers/mod_block_strangers.lua @ 5186:fa3059e653fa
mod_http_oauth2: Implement the Implicit flow
Everyone says this is insecure and bad, but it's also the only thing
that makes sense for e.g. pure JavaScript clients, but hey implement
this even more complicated thing instead!
author | Kim Alvefur <zash@zash.se> |
---|---|
date | Thu, 02 Mar 2023 22:06:50 +0100 |
parents | 38365c1f1fe4 |
children |
rev | line source |
---|---|
772
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
1 |
1929
82834df1dea6
mod_block_strangers: Add missing import of util.stanza
Kim Alvefur <zash@zash.se>
parents:
1928
diff
changeset
|
2 local st = require"util.stanza"; |
772
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
3 local jid_split = require "util.jid".split; |
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
4 local jid_bare = require "util.jid".bare; |
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
5 local is_contact_subscribed = require "core.rostermanager".is_contact_subscribed; |
2196
09f6e1a09b2b
mod_block_strangers: Allow stanzas form jids the user has sent directed presence to
Kim Alvefur <zash@zash.se>
parents:
2060
diff
changeset
|
6 local full_sessions = prosody.full_sessions; |
09f6e1a09b2b
mod_block_strangers: Allow stanzas form jids the user has sent directed presence to
Kim Alvefur <zash@zash.se>
parents:
2060
diff
changeset
|
7 |
09f6e1a09b2b
mod_block_strangers: Allow stanzas form jids the user has sent directed presence to
Kim Alvefur <zash@zash.se>
parents:
2060
diff
changeset
|
8 local function has_directed_presence(user, jid) |
09f6e1a09b2b
mod_block_strangers: Allow stanzas form jids the user has sent directed presence to
Kim Alvefur <zash@zash.se>
parents:
2060
diff
changeset
|
9 local session = full_sessions[user]; |
2419
045d594a3707
mod_block_strangers: Check that the table of directed presence exists before indexing it (fixes traceback)
Kim Alvefur <zash@zash.se>
parents:
2196
diff
changeset
|
10 if session then |
045d594a3707
mod_block_strangers: Check that the table of directed presence exists before indexing it (fixes traceback)
Kim Alvefur <zash@zash.se>
parents:
2196
diff
changeset
|
11 local directed = session.directed; |
045d594a3707
mod_block_strangers: Check that the table of directed presence exists before indexing it (fixes traceback)
Kim Alvefur <zash@zash.se>
parents:
2196
diff
changeset
|
12 if directed then |
045d594a3707
mod_block_strangers: Check that the table of directed presence exists before indexing it (fixes traceback)
Kim Alvefur <zash@zash.se>
parents:
2196
diff
changeset
|
13 return directed[jid]; |
045d594a3707
mod_block_strangers: Check that the table of directed presence exists before indexing it (fixes traceback)
Kim Alvefur <zash@zash.se>
parents:
2196
diff
changeset
|
14 end |
045d594a3707
mod_block_strangers: Check that the table of directed presence exists before indexing it (fixes traceback)
Kim Alvefur <zash@zash.se>
parents:
2196
diff
changeset
|
15 end |
2196
09f6e1a09b2b
mod_block_strangers: Allow stanzas form jids the user has sent directed presence to
Kim Alvefur <zash@zash.se>
parents:
2060
diff
changeset
|
16 end |
772
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
17 |
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
18 function check_subscribed(event) |
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
19 local stanza = event.stanza; |
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
20 local to_user, to_host, to_resource = jid_split(stanza.attr.to); |
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
21 local from_jid = jid_bare(stanza.attr.from); |
2196
09f6e1a09b2b
mod_block_strangers: Allow stanzas form jids the user has sent directed presence to
Kim Alvefur <zash@zash.se>
parents:
2060
diff
changeset
|
22 if to_user and not has_directed_presence(stanza.attr.to, from_jid) and not is_contact_subscribed(to_user, to_host, from_jid) then |
3023
38365c1f1fe4
mod_block_strangers: Allow stanza from self (fixes #966, thanks Sergey Popov)
Matthew Wild <mwild1@gmail.com>
parents:
2419
diff
changeset
|
23 -- Allow all messages from your own jid |
38365c1f1fe4
mod_block_strangers: Allow stanza from self (fixes #966, thanks Sergey Popov)
Matthew Wild <mwild1@gmail.com>
parents:
2419
diff
changeset
|
24 if from_jid == to_user.."@"..to_host then |
38365c1f1fe4
mod_block_strangers: Allow stanza from self (fixes #966, thanks Sergey Popov)
Matthew Wild <mwild1@gmail.com>
parents:
2419
diff
changeset
|
25 return nil; -- Pass through |
38365c1f1fe4
mod_block_strangers: Allow stanza from self (fixes #966, thanks Sergey Popov)
Matthew Wild <mwild1@gmail.com>
parents:
2419
diff
changeset
|
26 end |
2060
bd0c5d546bf8
mod_block_strangers: Allow iq/full responses through
Matthew Wild <mwild1@gmail.com>
parents:
1929
diff
changeset
|
27 if to_resource and stanza.attr.type == "groupchat" |
bd0c5d546bf8
mod_block_strangers: Allow iq/full responses through
Matthew Wild <mwild1@gmail.com>
parents:
1929
diff
changeset
|
28 or stanza.name == "iq" and (stanza.attr.type == "result" or stanza.attr.type == "error") then |
772
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
29 return nil; -- Pass through |
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
30 end |
1928
252b634b065d
mod_block_strangers: Bounce IQ stanzas (they MUST be replied to)
Kim Alvefur <zash@zash.se>
parents:
1325
diff
changeset
|
31 if stanza.name == "iq" and ( stanza.attr.type == "get" or stanza.attr.type == "set" ) then |
252b634b065d
mod_block_strangers: Bounce IQ stanzas (they MUST be replied to)
Kim Alvefur <zash@zash.se>
parents:
1325
diff
changeset
|
32 event.origin.send(st.error_reply(stanza, "cancel", "service-unavailable")); |
252b634b065d
mod_block_strangers: Bounce IQ stanzas (they MUST be replied to)
Kim Alvefur <zash@zash.se>
parents:
1325
diff
changeset
|
33 end |
1325
b21236b6b8d8
Backed out changeset 853a382c9bd6
Kim Alvefur <zash@zash.se>
parents:
1324
diff
changeset
|
34 return true; -- Drop stanza |
772
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
35 end |
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
36 end |
954532e273be
mod_block_strangers: Module to block message and iqs from people not on your roster
Matthew Wild <mwild1@gmail.com>
parents:
diff
changeset
|
37 |
774
52caf54fc270
mod_block_strangers: Bump handler priority to 200 (just because)
Matthew Wild <mwild1@gmail.com>
parents:
772
diff
changeset
|
38 module:hook("message/bare", check_subscribed, 200); |
52caf54fc270
mod_block_strangers: Bump handler priority to 200 (just because)
Matthew Wild <mwild1@gmail.com>
parents:
772
diff
changeset
|
39 module:hook("message/full", check_subscribed, 200); |
52caf54fc270
mod_block_strangers: Bump handler priority to 200 (just because)
Matthew Wild <mwild1@gmail.com>
parents:
772
diff
changeset
|
40 module:hook("iq/full", check_subscribed, 200); |