Software / code / prosody
Annotate
net/cqueues.lua @ 13854:0b01f40df0f9 13.0
mod_http_file_share: Add media-src 'self' to Content-Security-Policy header
This allows certain media files to be loaded when navigated to directly in a
web browser.
Note that in some browsers (Chrome), the media gets transformed
internally into a HTML page with some basic styles, but these are blocked due
to our default-src policy of 'none' Although this could be unblocked with
style-src unsafe-inline, it is not our plan to fix this, because this would
have negative security implications.
The reason for our CSP is to prevent the file share service from being used to
host malicious HTML/CSS/JS. Yes, CSS can be malicious.
Our file share service is for uploading and downloading files, it is not a
substitute for website/content hosting.
| author | Matthew Wild <mwild1@gmail.com> |
|---|---|
| date | Fri, 18 Apr 2025 12:25:06 +0100 |
| parent | 12974:ba409c67353b |
| rev | line source |
|---|---|
|
6514
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
1 -- Prosody IM |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
2 -- Copyright (C) 2014 Daurnimator |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
3 -- |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
4 -- This project is MIT/X11 licensed. Please see the |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
5 -- COPYING file in the source package for more information. |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
6 -- |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
7 -- This module allows you to use cqueues with a net.server mainloop |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
8 -- |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
9 |
|
12974
ba409c67353b
net: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
10999
diff
changeset
|
10 local server = require "prosody.net.server"; |
|
6514
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
11 local cqueues = require "cqueues"; |
|
12974
ba409c67353b
net: Prefix module imports with prosody namespace
Kim Alvefur <zash@zash.se>
parents:
10999
diff
changeset
|
12 local timer = require "prosody.util.timer"; |
|
6538
f1eb66288f60
net.cqueues: Fix incorrect version check
daurnimator <quae@daurnimator.com>
parents:
6537
diff
changeset
|
13 assert(cqueues.VERSION >= 20150113, "cqueues newer than 20150113 required") |
|
6514
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
14 |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
15 -- Create a single top level cqueue |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
16 local cq; |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
17 |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
18 if server.cq then -- server provides cqueues object |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
19 cq = server.cq; |
|
10996
d742095046f9
net.cqueues: Switch to server.watchfd for main loop integration
Kim Alvefur <zash@zash.se>
parents:
6538
diff
changeset
|
20 elseif server.watchfd then |
|
6514
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
21 cq = cqueues.new(); |
|
10999
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
22 local timeout = timer.add_task(cq:timeout() or 0, function () |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
23 -- FIXME It should be enough to reschedule this timeout instead of replacing it, but this does not work. See https://issues.prosody.im/1572 |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
24 assert(cq:loop(0)); |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
25 return cq:timeout(); |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
26 end); |
|
10996
d742095046f9
net.cqueues: Switch to server.watchfd for main loop integration
Kim Alvefur <zash@zash.se>
parents:
6538
diff
changeset
|
27 server.watchfd(cq:pollfd(), function () |
|
6514
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
28 assert(cq:loop(0)); |
|
10999
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
29 local t = cq:timeout(); |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
30 if t then |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
31 timer.stop(timeout); |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
32 timeout = timer.add_task(cq:timeout(), function () |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
33 assert(cq:loop(0)); |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
34 return cq:timeout(); |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
35 end); |
|
37b884d675f7
net.cqueues: Fix resuming after timeouts
Kim Alvefur <zash@zash.se>
parents:
10996
diff
changeset
|
36 end |
|
6514
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
37 end); |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
38 else |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
39 error "NYI" |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
40 end |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
41 |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
42 return { |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
43 cq = cq; |
|
d425fc41e59f
net.cqueues: Add module that allows use of cqueues while still using net.server as main loop
daurnimator <quae@daurnimator.com>
parents:
diff
changeset
|
44 } |