10 Commits

Author SHA1 Message Date
67f4ffa83f Add changelog entry for beta.20210205 2021-02-05 13:50:42 +00:00
5f8f5657b5 Merge pull request #22 from horazont/feature/bookmarks
... load the module, too
2021-02-04 15:57:40 +00:00
f197b9bf6b Also explicitly load mod_groups_internal because why not 2021-02-04 16:57:14 +01:00
04861cc023 ... load the module, too 2021-02-04 16:55:11 +01:00
e963012ac1 Merge pull request #20 from horazont/feature/bookmarks
Import fixes from prosody-modules
2021-02-04 15:22:06 +00:00
5e74fba75d Import fixes from prosody-modules
- Fix room destruction of circle rooms when circle is deleted or
  fails to be created (fixes #17)
- Add circle rooms to bookmarks of (newly added) members
  (fixes #16)
2021-02-04 16:18:47 +01:00
c3144380de Merge pull request #19 from horazont/feature/invite-url-suffix
Add `/` to invite URL
2021-02-03 18:40:47 +00:00
215426c2db Add / to invite URL
The new portal version will support this (see [1]). The rationale
is also explained over there, but to summarize: If the link ends
in `_` or `-`, some user agents will not linkify it correctly,
worsening the UX.

   [1]: https://github.com/snikket-im/snikket-web-portal/issues/48
2021-02-03 19:02:56 +01:00
84f55744f1 CHANGELOG: Add --remove-orphans to docker-compose command 2021-02-02 20:59:01 +00:00
3e62edfbe9 Add docs for update notifications 2021-02-02 14:12:00 +00:00
4 changed files with 115 additions and 3 deletions

View File

@ -1,5 +1,13 @@
# Snikket Server changelog
## beta.20210205
- Fix destruction of circle group chats when a circle
is deleted or fails to be created
- Add circle group chats to bookmarks of newly-added members
- Add trailing '/' to invite URLs for compatibility with some
URL parsers
## beta.20210202
- Support for Raspberry Pi and other ARM-based systems
@ -22,7 +30,7 @@ then put the new one in its place. For example:
mv docker-compose.yml docker-compose.old.yml
wget -O docker-compose.yml https://snikket.org/service/resources/docker-compose.beta.yml
docker-compose pull
docker-compose up -d
docker-compose up -d --remove-orphans
```
You may also want to check out our new repository of scripts to help

View File

@ -99,7 +99,9 @@ modules_enabled = {
"firewall";
-- Circles
"groups_internal";
"groups_migration";
"groups_muc_bookmarks";
-- For the web portal
"http_oauth2";
@ -128,7 +130,7 @@ registration_invite_only = true
-- over what happens when a user invites someone.
allow_contact_invites = false
invites_page = ENV_SNIKKET_INVITE_URL or ("https://"..DOMAIN.."/invite/{invite.token}");
invites_page = ENV_SNIKKET_INVITE_URL or ("https://"..DOMAIN.."/invite/{invite.token}/");
invites_page_external = true
c2s_require_encryption = true

View File

@ -64,7 +64,7 @@
hg:
repo: https://hg.prosody.im/prosody-modules
dest: /usr/local/lib/prosody-modules
revision: 94805a7e7b30
revision: b3e0295e14a3
purge: yes
update: yes
- name: Enable wanted modules
@ -109,6 +109,7 @@
- mod_invites_register_api
- mod_invites_tracking
- mod_groups_internal
- mod_groups_muc_bookmarks
- mod_muc_defaults
- mod_muc_local_only

View File

@ -0,0 +1,101 @@
# Update notifications
This is an informational technical document about the update notification
system in Snikket server.
## Why are update notifications important?
It is now widely known that [outdated software][OWASP-A9] is one of the
biggest risk factors in securing systems on the internet. Therefore the
Snikket server will alert all admins to available updates and important
notices from the Snikket team.
We believe it is up to you to decide when and how to update your service.
But we will provide you with the tools you need to make that easy, fast
and painless.
## How are they implemented?
To preserve your privacy, private Snikket servers do not make requests
directly to our servers. Instead we put the necessary information about
current releases and security updates into our DNS records.
## Why did you choose DNS?
The obvious choice was HTTP, and this is how most traffic on the internet
is conveyed these days. But we opted for DNS due to the following advantages:
- DNS is designed for serving small amounts of data from one place to many
- Due to caching, and its connectionless nature, DNS is more scalable
- Queries will often travel via an intermediate resolver, so we
typically won't have access to your server's IP address
- A DNS query contains very little information, whereas HTTP will always
leak the IP address, and by default will often leak other headers.
But it also has some known downsides. In particular DNS is not secure by
default. Intermediaries may observe or drop the query, or even modify the
response.
The following conclusions were made about the downsides:
- Observability: an intermediary seeing outbound queries to our DNS
records may deduce that your server is running Snikket. This should
not be a problem in itself - there are many ways to detect if a server
is running Snikket (load up its web page for a start!).
- Availability: an intermediary may block queries for our DNS records.
This would prevent a server admin from receiving update notifications,
which is bad (they may be tricked into thinking they are up to date).
However using another protocol such as HTTP(S) would not prevent this
focused attack.
- Integrity: the data returned to the Snikket server may be modified or
spoofed by an intermediary. This would allow them to trigger false
update notifications. We have designed the system so that the risk is
minimized - the update notifications will always include a link to the
real announcement on snikket.org (if any). It is not possible to direct
admins to arbitrary URLs.
It is possible that in the future we will add support for DNSSEC or manually
sign the data provided in our DNS records.
It is also possible that we will move to another mechanism in the future, if
a more suitable one can be found.
## The details
Snikket releases are organized into 'channels', e.g. 'dev', 'alpha', 'beta',
'stable'. Your server will work out the channel it belongs to, and make a DNS
query to:
```
TXT _channel.update.snikket.net
```
The response will look like:
```
"latest=3"
"secure=2"
"msg=0"
```
This response indicates that version '3' is the latest, but version '2' is the
last release with no known security vulnerabilities is '2'. The `msg` field
allows us to send important announcements that may not be included in a release.
A Snikket server will use the returned information to determine whether the
administrators need to be notified, and generate a message if necessary. Since
the server has no further information, the message will include a link to the
relevant announcement on the snikket.org website by calculating the URL to use.
## Disabling update checks
We strongly recommend you leave update notifications enabled so that you are
notified promptly about important releases and announcements. However if you
plan to receive these another way, you may disable them by adding to your
snikket.conf:
```
SNIKKET_UPDATE_CHECK=0
```
[OWASP-A9]: https://owasp.org/www-project-top-ten/2017/A9_2017-Using_Components_with_Known_Vulnerabilities