Juliusz Chroboczek
a6314a7384
Implement stateful tokens.
...
Stateful tokens look just like cryptographic tokens to the client.
Unlike cryptographic tokens, they are stored in a file and are
revokable and editable.
2023-04-04 00:59:54 +02:00
Juliusz Chroboczek
aa53b78b2c
Distinguish between no username and empty username.
2023-04-03 22:58:38 +02:00
Juliusz Chroboczek
a1c1345719
Server-side support for protocol 2.
...
The "time" field of messages is now a string in RFC 3339 format,
and there is a new "error" field in messages.
2023-04-03 22:58:38 +02:00
Juliusz Chroboczek
c58064d923
Move token handling into the separate module.
...
Tokens are now an interface, and all the token logic is encapsulated
in the token module.
2023-04-03 22:58:38 +02:00
Juliusz Chroboczek
f75b964a6b
Distinguish tokens with empty sub from no sub
...
We now distinguish between tokens that specify an empty username
(sub="") and tokens that don't specify sub. The latter are
considered invalid for now.
2023-01-14 23:19:51 +01:00
Juliusz Chroboczek
1eb7716766
Simplify group expiration.
2022-10-23 16:04:10 +02:00
Juliusz Chroboczek
16e2888d56
Add new configuration directive proxyURL.
...
The strategy of computing the base URL from the request doesn't
necessarily work if we're behind a reverse proxy. proxyURL
can be set in cases where our guess is incorrect.
Thanks to Dianne Skoll.
2022-10-21 13:28:11 +02:00
Juliusz Chroboczek
249c1c1132
Don't notify clients when description is unchanged.
...
When we fixed the handling of autolocked groups, we introduced
a bug where we spuriously notify clients even when the description
didn't change.
2022-10-07 03:02:35 +02:00
Juliusz Chroboczek
62517844a5
Ensure autolocked groups are locked on creation.
...
We used to autolock groups when the last user left, but not
when creating a group that was not in memory yet. Ensure that
groups are autolocked in all cases.
Thanks to Michael Ströder.
2022-09-22 17:32:55 +02:00
Juliusz Chroboczek
b20cb0e523
Simplify the interface to autoLockKick.
...
This just removes a minor optimisation.
2022-09-22 17:21:49 +02:00
Juliusz Chroboczek
bf142c41a0
Fix status generation for remote groups.
2022-09-16 20:45:54 +02:00
Juliusz Chroboczek
6bdcd504a7
Make GetPermission a method of Group.
2022-09-08 20:55:35 +02:00
Juliusz Chroboczek
b55e531aa5
Encode group location in the status.json file.
2022-09-01 15:38:29 +02:00
Juliusz Chroboczek
4bc873a574
Publish websocket endpoint in group status.
2022-09-01 14:55:52 +02:00
Juliusz Chroboczek
7d01f0339b
Avoid re-reading descriptions
...
We used to avoid re-reading descriptions when joining a group,
but we used to re-read them when updating the list of groups.
2022-07-12 20:06:34 +02:00
Juliusz Chroboczek
fd228b09c2
Fix checking for username when token is present.
2022-04-29 01:36:02 +02:00
Juliusz Chroboczek
fd09564c05
Remove H.264 Baseline profile.
...
Some devices only support the Constrained Baseline profile.
2022-03-22 01:03:56 +01:00
Juliusz Chroboczek
de3a016f4d
Set the username in the server when using tokens.
...
This avoids the need to pass the username in the URL without
requiring the client to parse tokens.
2022-02-20 15:33:11 +01:00
Juliusz Chroboczek
a9c9581465
Implement authPortal.
2022-02-19 23:58:31 +01:00
Juliusz Chroboczek
a86fb08f6c
Replace ClientPermissions with a list of strings.
...
Now that we support external auth, the permissions list is
open-ended. Make it a list for simplicity.
2022-02-19 23:44:57 +01:00
Juliusz Chroboczek
1d583e5367
Don't verify token issuer.
...
This makes it possible to use token authentication without
an authentication server.
2022-02-18 19:21:02 +01:00
Juliusz Chroboczek
03811db37d
Implement token authentication.
2022-02-18 13:35:17 +01:00
Juliusz Chroboczek
24187430e8
Rename client status to data, add group data.
...
We now distinguish between status, which is maintained by the server,
and data, which is provided by the client. In addition to client data,
we now support group data.
2022-01-29 23:28:08 +01:00
Juliusz Chroboczek
e8fbfcb9ba
Avoid overflow in bitrate computation.
2022-01-25 20:11:28 +01:00
Juliusz Chroboczek
6fbdf0eab2
Use the new MIME type for AV1.
...
Chromium 91 and later uses "AV1" instead of "AV1X". Simulcast is
still broken.
2022-01-04 13:09:07 +01:00
Juliusz Chroboczek
3e52ac1253
Fix typo in GetConfiguration.
2021-10-31 22:43:01 +01:00
Juliusz Chroboczek
028ed7df6d
Parse config file in group.Update.
...
This makes for better error messages.
2021-10-30 19:31:34 +02:00
Juliusz Chroboczek
c7c3c9c6b0
Export group status in .status.json.
2021-10-30 19:12:06 +02:00
Juliusz Chroboczek
5e39c3a2a7
Move -redirect into the configuration file.
2021-10-30 18:54:39 +02:00
Juliusz Chroboczek
c0b30c8557
Move administrator password to data/config.json.
2021-10-30 18:54:39 +02:00
Juliusz Chroboczek
019f365981
Remove accessors for group description fields.
...
Consult the description directly.
2021-10-30 18:34:35 +02:00
Juliusz Chroboczek
8c21ede9d2
Don't allow group names to start with a period.
2021-10-28 20:01:11 +02:00
Juliusz Chroboczek
869eb9b839
Move password checking into group.go.
...
It used to be delegated to clients.
2021-10-27 04:15:44 +02:00
Juliusz Chroboczek
c860fb96a3
Move server shutdown into group.go.
2021-09-11 15:42:14 +02:00
Juliusz Chroboczek
184bd30077
Protect against nil dereference in group.Get.
2021-09-11 15:14:13 +02:00
Juliusz Chroboczek
f683675ab4
Use a dedicated error value for anonymous users.
2021-09-09 22:26:08 +02:00
Juliusz Chroboczek
5beb13b21a
Early paranoia in group name validation.
...
We will fail malicious paths in openDescriptionFile, but it
doesn't harm to be paranoid early.
2021-08-24 00:31:46 +02:00
Juliusz Chroboczek
0d0a745aa3
Fix typo in KickError.Error.
2021-08-24 00:04:30 +02:00
Juliusz Chroboczek
475e36d884
Pass description to descriptionChanged.
...
Thanks to Jeroen van Veen.
2021-08-23 20:45:04 +02:00
Juliusz Chroboczek
06f2ecec16
Update the list of public groups when expiring.
...
Thanks to Jeroen van Veen for suggesting the feature.
2021-08-22 16:36:18 +02:00
Juliusz Chroboczek
816b7a54df
Restrict negotiation of downstream codecs, allow multiple profiles.
...
We now restrict the allowable codecs in the downstream direction,
which leads to a clean failure instead of a silent track. We also
allow multiple profiles for a single codec.
2021-08-02 18:08:37 +02:00
Juliusz Chroboczek
a5c97fd849
Add System permission.
...
This replaces the OverridePermissions method, and is communicated
to clients that can reliably and safely identify a system user.
2021-07-30 19:26:34 +02:00
Juliusz Chroboczek
eedfaccaff
Add locked and displayName to public-groups.json.
2021-07-16 20:01:54 +02:00
Juliusz Chroboczek
52a26327d7
Implement group status.
...
We now inform clients of the status of a group (locked, etc.). Also
cleans up the handling of administrative messages, which solves the
issue of receiving "user" before "joined".
2021-07-16 19:51:54 +02:00
Juliusz Chroboczek
3e00bb4293
AV1 support.
2021-05-15 19:54:07 +02:00
Juliusz Chroboczek
6f9d7fc306
Scalable video coding (SVC).
2021-05-14 23:21:14 +02:00
Juliusz Chroboczek
3f3b245926
Fix profile-id for VP9.
2021-05-13 12:59:47 +02:00
Juliusz Chroboczek
26bf8a341a
Don't send client parameters in delete message.
...
This avoids a race condition since the delete messages are sent
asynchronously.
2021-05-10 16:58:28 +02:00
Juliusz Chroboczek
795a40ceaf
Simulcast.
2021-05-08 21:12:29 +02:00
Juliusz Chroboczek
99026c0e48
Implement option -udp-range.
2021-04-29 23:05:11 +02:00