Commit graph

417 commits

Author SHA1 Message Date
Gabe Kangas
6d768f0b0a fix(go): fix type conversions for FreeBSD and Windows methods 2024-09-17 08:28:01 -07:00
Gabe Kangas
7a65e6d808 fix(go): int64 -> uint64 for connection limit value 2024-09-17 08:12:09 -07:00
renovate[bot]
4c4bc90460
fix(deps): update module mvdan.cc/xurls to v2 (#3815)
* fix(deps): update module mvdan.cc/xurls to v2

* mvdan/xurls 2.x bump fixes (#3823)

* Bump xurls import to v2

* Change Strict to function calls, v2.0.0 change

* Add go.sum entry for xurls/v2

---------

Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: mahmed2000 <mahmad2000@protonmail.com>
2024-07-08 11:24:48 -07:00
Gabe Kangas
c963512934 chore: move geoip into services directory 2024-07-02 21:26:43 -07:00
G2G2G2G
4c64fa26ac
fixing grammar (#3801)
I guess California no speak english
2024-07-02 11:55:25 -07:00
Gabe Kangas
2ccd3aad87
User repository (#3795)
* It builds with the new user repository

* fix(test): fix broken test

* fix(api): fix registration endpoint that was broken after the change

* fix(test): update test to reflect new user repository

* fix: use interface type instead of concrete type

* fix: restore commented out code
2024-07-01 18:58:50 -07:00
mahmed2000
a7e5f20337
Implement admin password hashing with bcrypt (#3754)
* Add bcrypt hashing helpers

* SetAdminPassword now hashes the password before saving it

* BasicAuth now compares the bcrypt hash for the password

* Modify migration2 to avoid a double password hash when upgrading

* Add migration for bcrypt hashed password

* Do not show admin password hash as initial value

* Update api tests to compare the bcrypt hash of the admin password instead

* Remove old admin password api tests

---------

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2024-06-26 21:20:22 -07:00
Vivian Lim ⭐
f81e8dcda7
Mute the 'stream ended' clip's audio (#3630)
* Mute the 'stream ended' clip's audio

The 'stream ended' clip plays at the at the end of every stream broadcast using owncast.
It currently contains audio that peaks at -7.1db. (according to ffmpeg's volumedetect audio filter)
This can result in a bad experience for viewers if the stream that they were just watching had a much lower average volume, and they had turned up their speakers or headphones to compensate. In extreme cases this could theoretically cause harm to viewers and/or their equipment.
As an admin running owncast, there is no way to remove this audio *except* for patching the file. Even if you do patch the file, you need to notify your viewers to clear their browser caches if they have ever seen the clip, because offline.ts has a cache-control max-age header specifying 365 days. The caching of the previous version of this clip is out of scope of this PR.

This issue is discussed in more detail in #1965.

Unlike my previous attempt in #3332, which removed the audio track, this PR *mutes* the audio.

Specifically, I used this ffmpeg command:
```
ffmpeg -i offline.ts -filter:a "volume=0.0" output.ts
```

There are no other modifications to the clip.

* Commit updated API documentation

* feat(video): make compatible muted offline clip. Rename clip as a v2 so it is not cached

* Fix conflict

* force add new offline file

---------

Co-authored-by: vivlim <vivlim@vivl.im>
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2024-04-17 11:44:19 -07:00
Gabe Kangas
a450e62397
Optionally disable chat rate limiter and add optional chat slur/language filter (#3681)
* feat(chat): basic profanity filter. For #3139

* feat(chat): add setting for disabling chat spam protection. Closes #3523

* feat(chat): wire up the new chat slur filter to admin and chat. Closes #3139
2024-04-09 22:25:41 -07:00
Gabe Kangas
ebf64dd17d
fix(chat): do not send chat join message
If a user is already connected to chat from elsewhere, do not send an
additional chat join message. Closes #3487
2024-02-18 15:49:50 -08:00
Aziz Rmadi
b532b1545c
Modified rate limit conditions to exclude moderators (#3534) 2024-01-24 10:27:38 -08:00
Gabe Kangas
841c300431
fix: share local hls file cleanup between s3 and filesystem providers. Fixes #3522 (#3531) 2024-01-22 20:26:36 -08:00
Gabe Kangas
7399bee276
Gek/cache bot search page (#3530)
* feat: add general purpose key/val caching layer

* feat: cache bot/metadata response page for 10 seconds
2024-01-21 17:18:47 -08:00
Gabe Kangas
5bb8a8b5aa
fix: address potential crash that can happen with queued object storage uploads. Fixes #3440 2023-12-18 21:12:50 -08:00
Gabe Kangas
b4c73315fa
feat(log): point to passthrough as a potential issue when unable to generate thumbnails
Re: #3433 and #3431
2023-11-20 18:04:01 -08:00
Gabe Kangas
027f2544e3
fix(emoji): hopefully guard against the crash in #3331 2023-10-21 22:13:13 -07:00
Gabe Kangas
8e79e2acfa
chore(go): run betteralign and gofumpt on codebase 2023-10-08 14:22:28 -07:00
Gabe Kangas
03b785fbe2
fix: remove whitespace to resolve linter warning 2023-09-21 18:04:06 -07:00
Tom Funken
e375ea232a
Renamed rewriteRemotePlaylist (#3313)
* Add support for remote serving endpoint on local storage

* Renamed rewriteRemotePlaylist
2023-09-21 17:58:02 -07:00
Gabe Kangas
169c11596c
feat(chat): add support for chat part messages. Closes #3201 (#3291) 2023-09-10 10:58:11 -07:00
Gabe Kangas
3174eb20e5
fix: updates for new linter rules. Closes #3277 2023-08-25 19:58:44 -07:00
Gabe Kangas
1a7b6b99d5
feat(storage): support a object storage custom path prefix 2023-08-11 22:18:45 -07:00
Gabe Kangas
0fba5f70e2
feat(video): add IP address to RTMP logs. Closes #3212 (#3233) 2023-08-03 20:54:56 -07:00
Gabe Kangas
c9298def5b
Cleanup object storage files on success or failure (#3231)
* fix: cleanup object storage files on success or failure. Closes #3230

* fix: clean filepath when deleting for safety
2023-08-03 20:33:44 -07:00
John Regan
b2a80f2149
s3Storage: fix slice bounds out of range error (#3208) 2023-07-24 15:12:04 -07:00
Gabe Kangas
d0376cdc75
fix: limit the different worker pools to available CPU cores. Should resolve #3189 2023-07-18 20:26:44 -07:00
John Regan
dfa3a2a273
chat: check that a new username is different before sending out updates (#3162) 2023-07-10 23:16:36 -07:00
John Regan
46ca5223f9
Chat wire protocol (#3125)
* core: remove file extension from emoji name

* web: transform emotes to labels when sending

* chat: replace br with line break

* core: implement emoji cache

* chat: send shortcodes for custom emoji

* chat: correct esling errors

* core: move emoji injection into dedicated function

* emoji: integrate emoji into markdown renderer, fix formatting

* chat protocol: correct golangci-lint findings

* chat field: specify that the contentEditable is an HTMLElement

* admin: mention that emoji should have unique names

* Prettified Code!

* regenerate pack-lock

* chat: correct the emphasis tag, provide fallback for other elements

---------

Co-authored-by: jprjr <jprjr@users.noreply.github.com>
2023-07-05 17:25:47 -07:00
Gabe Kangas
a354787a9e
feat(chat): support line breaks and pasted content. Closes #3108 2023-06-27 14:51:01 -07:00
Gabe Kangas
d33f117a82
fix(chat): fix missing alt tags on custom emoji. Closes #3106 2023-06-26 11:38:10 -07:00
Gabe Kangas
3ed5a0b7f3
feat: simplify console logs 2023-06-05 08:44:14 -07:00
hagn
35bdb5bca2
Use VA-API hardware decoding and scaling (#2976)
* Enable VA-API hardware decoding

* Use VA-API hardware scaling
2023-06-02 12:15:10 -07:00
Gabe Kangas
c295e4f215
Update segment cleanup to support object storage (#2876)
* Add support for S3 cleanup + standardize firing cleanup. Closes #2646

* fix: manually fix post-merge
2023-05-31 11:10:04 -07:00
Gabe Kangas
cd458630ec
Support using the custom video serving endpoint even if you don't use object storage (#2924)
* feat(video): refactor video serving endpoint

It can now be used without an object storage provider. Closes #2785

* fix: remove debug log
2023-05-30 14:05:24 -07:00
Gabe Kangas
209756fed3
feat(webhooks): add stream status to webhook (#2934)
Expand the payload sent for stream status webhooks. Closes #2881
2023-05-30 11:32:05 -07:00
Gabe Kangas
15dc718e61
feat: add support for robots.txt disabling search indexing (#2929)
* feat: add support for robots.txt

Can toggle disabling search engine indexing. Closes #2684

* fix: unexport ts const
2023-05-30 11:09:51 -07:00
Gabe Kangas
85e7af3d5f
Update to Go 1.20 + run better align (#2927)
* chore(go): update go version to 1.20. Closes #2185

* chore(go): run better align against project

To optimize struct field order. Closes #2870

* chore(go): update CI jobs to use Go 1.20

* fix(go): linter warnings for Go 1.20 update
2023-05-30 10:31:43 -07:00
Gabe Kangas
c4f30210ac
Add comment to explain what this service does 2023-05-28 12:38:51 -07:00
Gabe Kangas
d253081452
feat(video): force closed gops 2023-05-11 17:13:38 -07:00
Gabe Kangas
521e2d1276
chore(go): updated build tag constraint syntax 2023-04-24 17:49:29 -07:00
Gabe Kangas
74f076f44b
Refactor the api access token query. Fixes #2902" 2023-04-05 15:33:48 -07:00
Gabe Kangas
b5dc6324f8
Give a more detailed s3 failure error message 2023-04-01 13:15:35 -07:00
Pranav Joglekar
8667fc9513
improv: use actual webhook events in webhook tests (#2882) 2023-03-30 20:38:57 -07:00
Pranav Joglekar
07c5cabfe8
Trigger the title updated webhook event whenever a title is changed (#2823)
* wip: trigger the title updated webhook event whenever a title is changed

* Commit updated API documentation

* fix: add STREAM_TITLE_CHANGED to list of valid events

* feat: Add support for STREAM_TITLE_CHANGED webhook event on admin dashboard

* fix: transmit webhook event after stream has changed to fix race conditions where older title was sent

---------

Co-authored-by: Owncast <owncast@owncast.online>
2023-03-28 11:34:00 -07:00
Gabe Kangas
604e1fdbaa
Increase timeout between join messages from 5 to 10 minutes 2023-03-21 17:19:38 -07:00
Jacob Wrenn
7e76ee63e5
S3 headers (#2830)
* change s3 headers for playlist files

* clean up code

---------

Co-authored-by: Gabe Kangas <gabek@real-ity.com>
2023-03-16 11:07:42 -07:00
Gabe Kangas
2364293742
Remove unused event and comments on block 2023-03-13 15:11:51 -07:00
Gabe Kangas
23a721857f
Do not support stream key UI or any persisted stream keys when overridden via cli flag. Closes #2749 2023-02-27 17:08:52 -08:00
Gabe Kangas
cf126c2e2c
Fix the filename mismatch then the on-disk filename changed. 2023-02-05 20:42:34 -08:00
Gabe Kangas
ba69bac6d9
Rename offline clip for clarity with typescript 2023-01-26 17:14:29 -08:00