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
Juliusz Chroboczek
cd6920d7e2
Allow group.API() to fail.
2021-04-29 21:10:04 +02:00
Juliusz Chroboczek
3ba2394be7
Implement user statuses.
...
The server now maintains a set of statuses for each user that are not
interpreted by the server but communicated to the other members of the
group using 'user' messages.
2021-04-28 17:01:05 +02:00
Juliusz Chroboczek
f0a39fca48
Send user permissions to client.
...
We now maintain the user list in the serverConnection.
2021-04-28 00:07:19 +02:00
Juliusz Chroboczek
189dfb4abe
Export and document group.Description.
...
This is useful for people writing administrative interfaces.
2021-04-22 17:58:30 +02:00
Juliusz Chroboczek
b660bc404c
Attempt to negotiate stereo Opus audio.
2021-03-13 16:29:58 +01:00
Juliusz Chroboczek
ea321be17a
Make Kick part of the Client interface.
...
All clients implement Kick, no need for a separate interface.
2021-02-26 16:20:13 +01:00
Juliusz Chroboczek
be2f2d7cb3
Fix typo in new client pushing code.
2021-02-15 13:43:10 +01:00
Juliusz Chroboczek
fa625c693e
Push clients synchronously.
...
Doing this asynchronously was racy -- under extreme circumstances, a
client could be deleted before it was added.
2021-02-14 16:46:15 +01:00
Juliusz Chroboczek
c4e26b65b7
Tighten user check.
...
Don't allow a user with a wildcard password entry to use the same
username as a user with a specific entry even at the same privilege
level.
2021-02-06 23:32:42 +01:00
Juliusz Chroboczek
91c161e548
Don't cache group files for 5s.
...
A stat of a cached file is cheap, no need to micro-optimise.
2021-02-06 21:44:14 +01:00
Juliusz Chroboczek
b4240c4505
Don't reuse API between peer connections.
...
This turns out to be incorrect when a MediaEngine is attached.
2021-02-04 21:03:17 +01:00
Juliusz Chroboczek
a15915e8fc
Tweak the autokick code.
2021-01-17 21:52:26 +01:00
Juliusz Chroboczek
c769a4aad4
Add autokick option.
2021-01-17 21:29:07 +01:00
Juliusz Chroboczek
6098d4af9d
Implement autolock.
2021-01-14 03:56:37 +01:00
Juliusz Chroboczek
2df05ca257
Fix typo in ReadPublicGroups.
2021-01-14 01:49:06 +01:00
Juliusz Chroboczek
98235afe06
Disallow unknown fields in group descriptions.
...
Make the de-facto "comment" and "contact" fields official.
2021-01-13 23:00:48 +01:00
Juliusz Chroboczek
61990ff1ef
Check all group files on startup, not just the toplevel directory.
2021-01-13 22:56:43 +01:00
Juliusz Chroboczek
43ed55a055
Update group API after description change.
2021-01-04 01:41:34 +01:00
Juliusz Chroboczek
a0418d26ec
Send RTC configuration with joined message.
...
This avoids one HTTP request, and is potentially more flexible.
2020-12-28 02:55:19 +01:00
Juliusz Chroboczek
d09c0f0a80
Make the value field of client messages carry arbitrary types.
2020-12-28 01:49:27 +01:00
Juliusz Chroboczek
5d38b0a231
Allow various codecs.
...
It is now possible to specify codecs other than VP8 and Opus. This
turns out not to be very useful, since VP8 is the only codec supported
by all browsers (in violation of the WebRTC spec, which mandates support
for H.264), and there is no good reason to use anything other than Opus
for audio.
2020-12-26 19:46:37 +01:00
Juliusz Chroboczek
d43a2b0104
Implement WallOps to send a warning to all operators.
2020-12-23 23:15:36 +01:00
Juliusz Chroboczek
66fb73d01e
Relicense under the MIT licence.
2020-12-19 17:26:33 +01:00
Juliusz Chroboczek
2d07c5d317
Move to Pion v3 API.
2020-12-06 11:15:59 +01:00
Juliusz Chroboczek
b134bfcf13
Improve error handling on join failure.
...
Solves the issue of groups with a name ending in "/".
2020-12-04 22:56:29 +01:00
Juliusz Chroboczek
27a2e45500
Implement /subgroups.
2020-12-02 19:47:32 +01:00
Juliusz Chroboczek
b30d4fe537
Add delay after login failure.
2020-12-02 00:07:31 +01:00
Juliusz Chroboczek
0265df6331
Expire idle groups from memory.
...
Also get rid of dead groups, they're not useful.
2020-12-01 21:07:44 +01:00
Juliusz Chroboczek
dc3256ca19
Remove left over debugging message.
2020-12-01 18:24:45 +01:00
Juliusz Chroboczek
6e5348101c
Propagate kick originators.
2020-11-30 20:04:58 +01:00
Juliusz Chroboczek
4c0fd01258
Implement hashed passwords.
2020-11-29 22:17:51 +01:00
Juliusz Chroboczek
4b420e5bd6
Don't set permissions if clients overrides.
2020-11-29 16:42:42 +01:00
Juliusz Chroboczek
29bd67cc22
Implement subgroups.
2020-11-22 19:54:54 +01:00
Juliusz Chroboczek
c1920e36b6
Increase size of SRTP replay window.
2020-11-03 00:58:21 +01:00
Juliusz Chroboczek
90ba4814c8
Discard old history entries.
2020-10-08 14:41:33 +02:00
Juliusz Chroboczek
31efabbefc
Disable mDNS gathering by default.
2020-10-06 06:08:29 +02:00
Juliusz Chroboczek
9ce591e4c5
Override permissions for disk recording.
2020-10-01 13:40:15 +02:00
Juliusz Chroboczek
3bd9a1db4e
Timestamp chat messages.
2020-09-30 00:54:12 +02:00
Juliusz Chroboczek
8399ee2c4a
Implement group description.
2020-09-24 22:03:41 +02:00
Juliusz Chroboczek
211845564e
Increase the saved chat history.
2020-09-18 11:48:21 +02:00
Juliusz Chroboczek
f8ae908d7a
Implement message for locked groups.
2020-09-18 11:40:00 +02:00
Juliusz Chroboczek
c608723394
Move group and client to their own package.
2020-09-13 20:51:15 +02:00