Skip to content

Commit 314a074

Browse files
authored
Merge pull request #9 from jagerman/show-recent
Make showing recent messages via web configurable
2 parents 2d0a17e + cc292ac commit 314a074

File tree

4 files changed

+43
-19
lines changed

4 files changed

+43
-19
lines changed

sogs/base_config.py

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,7 @@
5656
# file containing "bad" words for filtration. This feature in temporary and will be removed once
5757
# more robust bot/spam filtering is available.
5858
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

sogs/model.py

Lines changed: 15 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -415,15 +415,21 @@ def get_rooms():
415415
return [Room(row) for row in result]
416416

417417

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+
)
427433
return [Room(row) for row in result]
428434

429435

sogs/routes.py

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ def to_python(self, value):
4242

4343
@app.get("/")
4444
def serve_index():
45-
rooms = model.get_rooms()
45+
rooms = model.get_readable_rooms()
4646
if len(rooms) == 0:
4747
return render_template('setup.html')
4848
return render_template(
@@ -52,11 +52,22 @@ def serve_index():
5252

5353
@app.get("/view/room/<Room:room>")
5454
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+
)
5664

5765

5866
@app.get("/view/<Room:room>/invite.png")
5967
def serve_invite_qr(room):
68+
if not room.default_read:
69+
abort(http.FORBIDDEN)
70+
6071
img = qrencode.encode(utils.server_url(room.token))
6172
data = BytesIO()
6273
img = img[-1].resize((512, 512), NEAREST)
@@ -79,6 +90,7 @@ def get_recent_room_messages(room):
7990

8091
msgs = list()
8192
with db.conn as conn:
93+
# FIXME: need to check user permissions here too
8294
rows = conn.execute(
8395
"""
8496
SELECT

sogs/templates/view_room.html

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,13 +5,15 @@
55
<img src="/view/{{room}}/invite.png" style="margin: 2em" />
66
<pre>{{room_url}}</pre>
77
</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%}
1618

1719
{% endblock %}

0 commit comments

Comments
 (0)