File tree Expand file tree Collapse file tree 4 files changed +43
-19
lines changed Expand file tree Collapse file tree 4 files changed +43
-19
lines changed Original file line number Diff line number Diff line change 56
56
# file containing "bad" words for filtration. This feature in temporary and will be removed once
57
57
# more robust bot/spam filtering is available.
58
58
BAD_WORDS_FILE = 'badwords.txt'
59
+
60
+ # If true, show recent messages for public rooms when accessed via a web browser. If false only
61
+ # show the QR code and URL but no recent messages.
62
+ HTTP_SHOW_RECENT = True
Original file line number Diff line number Diff line change @@ -415,15 +415,21 @@ def get_rooms():
415
415
return [Room (row ) for row in result ]
416
416
417
417
418
- def get_readable_rooms (pubkey ):
419
- """get a list of rooms that a user can access"""
420
- result = db .conn .execute (
421
- """
422
- SELECT rooms.* FROM user_permissions perm JOIN rooms ON rooms.id = room
423
- WHERE session_id = ? AND perm.read AND NOT perm.banned
424
- """ ,
425
- [pubkey ],
426
- )
418
+ def get_readable_rooms (pubkey = None ):
419
+ """
420
+ Get a list of rooms that a user can access; if pubkey is None then return all publicly readable
421
+ rooms.
422
+ """
423
+ if pubkey is None :
424
+ result = db .conn .execute ("SELECT * FROM rooms WHERE read" )
425
+ else :
426
+ result = db .conn .execute (
427
+ """
428
+ SELECT rooms.* FROM user_permissions perm JOIN rooms ON rooms.id = room
429
+ WHERE session_id = ? AND perm.read AND NOT perm.banned
430
+ """ ,
431
+ [pubkey ],
432
+ )
427
433
return [Room (row ) for row in result ]
428
434
429
435
Original file line number Diff line number Diff line change @@ -42,7 +42,7 @@ def to_python(self, value):
42
42
43
43
@app .get ("/" )
44
44
def serve_index ():
45
- rooms = model .get_rooms ()
45
+ rooms = model .get_readable_rooms ()
46
46
if len (rooms ) == 0 :
47
47
return render_template ('setup.html' )
48
48
return render_template (
@@ -52,11 +52,22 @@ def serve_index():
52
52
53
53
@app .get ("/view/room/<Room:room>" )
54
54
def view_room (room ):
55
- return render_template ("view_room.html" , room = room .token , room_url = utils .server_url (room .token ))
55
+ if not room .default_read :
56
+ abort (http .FORBIDDEN )
57
+
58
+ return render_template (
59
+ "view_room.html" ,
60
+ room = room .token ,
61
+ room_url = utils .server_url (room .token ),
62
+ show_recent = config .HTTP_SHOW_RECENT ,
63
+ )
56
64
57
65
58
66
@app .get ("/view/<Room:room>/invite.png" )
59
67
def serve_invite_qr (room ):
68
+ if not room .default_read :
69
+ abort (http .FORBIDDEN )
70
+
60
71
img = qrencode .encode (utils .server_url (room .token ))
61
72
data = BytesIO ()
62
73
img = img [- 1 ].resize ((512 , 512 ), NEAREST )
@@ -79,6 +90,7 @@ def get_recent_room_messages(room):
79
90
80
91
msgs = list ()
81
92
with db .conn as conn :
93
+ # FIXME: need to check user permissions here too
82
94
rows = conn .execute (
83
95
"""
84
96
SELECT
Original file line number Diff line number Diff line change 5
5
< img src ="/view/{{room}}/invite.png " style ="margin: 2em " />
6
6
< pre > {{room_url}}</ pre >
7
7
</ center >
8
- < ul id ="messages ">
9
- < li > loading...</ li >
10
- </ ul >
11
- < script >
12
- window . view_room = "{{room}}" ;
13
- </ script >
14
- < script src ="/static/protobuf.min.js "> </ script >
15
- < script src ="/static/view_room.js "> </ script >
8
+ {% if show_recent %}
9
+ < ul id ="messages ">
10
+ < li > loading...</ li >
11
+ </ ul >
12
+ < script >
13
+ window . view_room = "{{room}}" ;
14
+ </ script >
15
+ < script src ="/static/protobuf.min.js "> </ script >
16
+ < script src ="/static/view_room.js "> </ script >
17
+ {%endif%}
16
18
17
19
{% endblock %}
You can’t perform that action at this time.
0 commit comments