* Implement webhook events for external integrations (#574)
* Implement webhook events for external integrations
Reference #556
* move message type to models and remove duplicate
* add json header so content type can be determined
* Pass at migrating webhooks to datastore + management apis (#589)
* Pass at migrating webhooks to datastore + management apis
* Support nil lastUsed timestamps and return back the new webhook on create
* Cleanup from review feedback
* Simplify a bit
Co-authored-by: Aaron Ogle <aaron@geekgonecrazy.com>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
* Webhook query cleanup
* Access tokens + Send system message external API (#585)
* New add, get and delete access token APIs
* Create auth token middleware
* Update last_used timestamp when using an access token
* Add auth'ed endpoint for sending system messages
* Cleanup
* Update api spec for new apis
* Commit updated API documentation
* Add auth'ed endpoint for sending user chat messages
* Return access token string
* Commit updated API documentation
* Fix route
* Support nil lastUsed time
* Commit updated Javascript packages
* Remove duplicate function post rebase
* Fix msg id generation
* Update controllers/admin/chat.go
Co-authored-by: Aaron Ogle <geekgonecrazy@users.noreply.github.com>
* Webhook query cleanup
* Add SystemMessageSent to EventType
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Aaron Ogle <geekgonecrazy@users.noreply.github.com>
* Set webhook as used on completion. Closes#610
* Display webhook errors as errors
* Commit updated API documentation
* Add user joined chat event
* Change integration API paths. Update API spec
* Update development version of admin that supports integration apis
* Commit updated API documentation
* Add automated tests for external integration APIs
* check error
* quiet this test for now
* Route up some additional 3rd party apis. #638
* Commit updated API documentation
* Save username on user joined event
* Add missing scope to valid scopes list
* Add generic chat action event API for 3rd parties. Closes#666
* Commit updated API documentation
* First pass at moving WIP config framework into project for #234
* Only support exported fields in custom types
* Using YP get/set key as a first pass at using the data layer. Fixes + integration.
* Ignore test db
* Start adding getters and setters for config values
* More get/set config work. Starting to populate api with data
* Wire up some config edit endpoints
* More endpoints
* Disable cors middleware
* Add more endpoints and add test to test them
* Remove the in-memory change APIs
* Add endpoint for changing tags
* Add more config endpoints
* Starting to point more things away from config file and to the datastore
* Populate YP with db data
* Create new util method for parsing page body markdown and return it in api
* Verify proposed path to ffmpeg
* For development purposes show the config key in logs
* Move stats values to datastore
* Moving over more values to the datastore
* Move S3 config to datastore
* First pass the config -> db migrator
* Add the start of the video config apis
* It builds pointing everything away from the config
* Tweak ffmpeg path error message
* Backup database every hour. Closes#549
* Config + defaults + migration work for db
* Cleanup logging
* Remove all the old config structs
* Add descriptive info about migration
* Tweak ffmpeg validation logic
* Fix db backup path. backup on db version migration
* Set video and s3 configurations
* Update api spec with new config endpoints
* Add migrator for stats file
* Commit updated API documentation
* Use a dynamic system port for internal HLS writes. Closes#577 (#626)
* Use a dynamic system port for internal HLS writes. Closes#577
* Cleanup
* YP key migration to datastore
* Create a backup directory if needed before migrations
* Remove config test that no longer makes sense. Cleanup.
* Change number types from float32 to float64
* Update automated test suite
* Allow restoring a database backup via command line flags. Closes#549
* Add new hls segment config api
* Commit updated API documentation
* Update apis to require a value container property
* add socialHandles api
* Commit updated API documentation
* Add new latancy level setting to replace segment settings
* Commit updated API documentation
* Fix spelling
* Commit updated API documentation
* hardcode a json api of available social platforms
* Add additional icons
* Return social handles in server config api
* Add socialhandles validation to test
* Move list of hard coded social platforms to an api
* Remove audio only code from transcoder since we do not use it
* Add latency levels api + snapshot of video settings as current broadcast
* Add config/serverurl endpoint
* Return 404 on YP api if disabled
* Surface stream title in YP response
* Add stream title to web ui
* Cleanup log message. Closes#520
* Rename ffmpeg package to transcoder
* Add ws package for testing
* Reduce chat backlog to past 5hrs, max 50. Closes#548
* Fix error formatting
* Add endpoint for resetting yp registration
* Add yp/reset to api spec. return status in response
* Return zero viewer count if stream is offline. Closes#422
* Post-rebase fixes
* Fix merge conflict in openapi file
* Commit updated API documentation
* Standardize controller names
* Support setting the stream key via the command line. Closes#665
* Return social handles with YP data. First half of https://github.com/owncast/owncast-yp/issues/28
* Give the YP package access to server status regardless if enabled or not
* Change delay in automated tests
* Add stream title integration API. For #638
* Commit updated API documentation
* Add storage to the migrator
* Missing returning NSFW value in server config
* Add flag to ignore websocket client. Closes#537
* Add error for parsing broadcaster metadata
* Add support for a cli specified http server port. Closes#674
* Add cpu usage levels and a temporary mapping between it and libx264 presets
* Test for valid url endpoint when saving s3 config
* Re-configure storage on every stream to allow changing storage providers
* After 5 minutes of a stream being stopped clear the stream title
* Hide viewer count once stream goes offline instead of when player stops
* Pull steamTitle from the status that gets updated instead of the config
* Commit updated API documentation
* Optionally show stream title in the header
* Reset stream title when server starts
* Show chat action when stream title is updated
* Allow system messages to come back in persistence
* Split out getting chat history for moderation + fix tests
* Remove server title and standardize on name only
* Commit updated API documentation
* Bump github.com/aws/aws-sdk-go from 1.37.1 to 1.37.2 (#680)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.37.1 to 1.37.2.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.37.1...v1.37.2)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Add video variant and stream latency config file migrator
* Remove mostly unused disable upgrade check bool
* Commit updated API documentation
* Allow bundling the admin from the 0.0.6 branch
* Fix saving port numbers
* Use name instead of old title on window focus
* Work on latency levels. Fix test to use levels. Clean up transcoder to only reference levels
* Another place where title -> name
* Fix test
* Bump github.com/aws/aws-sdk-go from 1.37.2 to 1.37.3 (#690)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.37.2 to 1.37.3.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.37.2...v1.37.3)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Update dependabot config
* Bump github.com/aws/aws-sdk-go from 1.37.3 to 1.37.5 (#693)
Bumps [github.com/aws/aws-sdk-go](https://github.com/aws/aws-sdk-go) from 1.37.3 to 1.37.5.
- [Release notes](https://github.com/aws/aws-sdk-go/releases)
- [Changelog](https://github.com/aws/aws-sdk-go/blob/master/CHANGELOG.md)
- [Commits](https://github.com/aws/aws-sdk-go/compare/v1.37.3...v1.37.5)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Bump video.js from 7.10.2 to 7.11.4 in /build/javascript (#694)
* Bump video.js from 7.10.2 to 7.11.4 in /build/javascript
Bumps [video.js](https://github.com/videojs/video.js) from 7.10.2 to 7.11.4.
- [Release notes](https://github.com/videojs/video.js/releases)
- [Changelog](https://github.com/videojs/video.js/blob/main/CHANGELOG.md)
- [Commits](https://github.com/videojs/video.js/compare/v7.10.2...v7.11.4)
Signed-off-by: dependabot[bot] <support@github.com>
* Commit updated Javascript packages
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Owncast <owncast@owncast.online>
* Make the latency migrator dynamic so I can tweak values easier
* Split out fetching ffmpeg path from validating the path so it can be changed in the admin
* Some commenting and linter cleanup
* Validate the path for a logo change and throw an error if it does not exist
* Logo change requests have to be a real file now
* Cleanup, making linter happy
* Format javascript on push
* Only format js in master
* Tweak latency level values
* Remove unused config file examples
* Fix thumbnail generation after messing with the ffmpeg path getter
* Reduce how often we report high hardware utilization warnings
* Bundle the 0.0.6 branch version of the admin
* Return validated ffmpeg path in admin server config
* Change the logo to be stored in the data directory instead of webroot
* Bump postcss from 8.2.4 to 8.2.5 in /build/javascript (#702)
Bumps [postcss](https://github.com/postcss/postcss) from 8.2.4 to 8.2.5.
- [Release notes](https://github.com/postcss/postcss/releases)
- [Changelog](https://github.com/postcss/postcss/blob/main/CHANGELOG.md)
- [Commits](https://github.com/postcss/postcss/compare/8.2.4...8.2.5)
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Default config file no longer used
* don't show stream title when offline
addresses https://github.com/owncast/owncast/issues/677
* Remove auto-clearing stream title. #677
* webroot -> data when using logo as thumbnail
* Do not list websocket/access token create/delete as integration APIs
* Commit updated API documentation
* Bundle updated admin
* Remove pointing to the 0.0.6 admin branch
* Linter cleanup
* Linter cleanup
* Add donations and follow links to show up under social handles
* Prettified Code!
* More linter cleanup
* Update admin bundle
* Remove use of platforms.js and return icons with social handles. Closes#732
* Update admin bundle
* Support custom config path for use in migration
* Remove unused platform-logos.gif
* Reduce log level of message
* Remove unused logo files in static dir
* Handle dev vs. release build info
* Restore logo.png for initial thumbnail
* Cleanup some files from the build process that are not needed
* Fix incorrect build-time injection var
* Fix missing file getting copied to the build
* Remove console directory message.
* Update admin bundle
* Fix comment
* Report storage setup error
* add some value set error checking
* Use validated dynamic ffmpeg path for animated gif preview
* Make chat message links be white so they don't hide in the bg. Closes#599
* Restore conditional that was accidentally removed
Co-authored-by: Aaron Ogle <geekgonecrazy@users.noreply.github.com>
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Ginger Wong <omqmail@gmail.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: nebunez <uoj2y7wak869@opayq.net>
Co-authored-by: gabek <gabek@users.noreply.github.com>
* update message viz in db
* create admin endpoint to update message visibility
* convert UpdateMessageVisibility api to take in an array of IDs to change visibility on instead
* Support requesting filtered or unfiltered chat messages
* Handle UPDATE chat events on front and backend for toggling messages
* Return entire message with UPDATE events
* Remove the UPDATE message type
* Revert "Remove the UPDATE message type"
This reverts commit 3a83df3d492f7ecf2bab65e845aa2b0365d3a7f6.
* update -> visibility update
* completely remove messages when they turn hidden on VISIBILITY-UPDATEs, and insert them if they turn visible
* Explicitly set visibility
* Fix multi-id sql updates
* increate scroll buffer a bit so chat scrolls when new large messages come in
* Add automated test around chat moderation
* Add new chat admin APIs to api spec
* Commit updated API documentation
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
Co-authored-by: Owncast <owncast@owncast.online>
* Bump api spec version
* Do not panic on cpu monitoring error
* Centralize the socket disconnect logic and fire it also when socket errors occur. Hopefully closes#421
* Simplify Logo requirement from users.
- Only require 1 logo file, instead of a `small` and `large` one. Just require `logo`.
- Update frontend sso that primary header logo will ALWAYS be owncast logo.
- User's logo will remain in "user content" area.
* Commit updated API documentation
Co-authored-by: Owncast <owncast@owncast.online>
* Start cleaning up linter errors. For #357
* Fix unmarshalling NullTime values
* More linter fixes
* Remove commented code
* Move defer up
* Consolidate error check lines
* Move error check to make sure row iteration was successful
* Cleaner error check + do not recreate pipe if it exists
* Consolidate hashing to generate client id
We're probably ignoring any errors here, since we're writing to a memory
buffer here. Let's make it clear we didn't just forget to check, but
really want to ignore these values.
* WIP with admin bundling
* Current state of the admin is bundled
* Update admin bundler to work with binary bundling
* Log detail about the admin interface. Closes#312
* Move bundle script to the build dir
* Update to current version of admin
* Commit updated API documentation
Co-authored-by: Owncast <owncast@owncast.online>
* First pass at centralized database reference. Closes#282
* Add verbose logging option to launch.json
* Clear current broadcaster on stream end. Closes#285
* Fix typo in verbose launch args
* Add support for purging tailwind styles. For #224
* Don't need to pass db as param since it is stored
* Commit updated Javascript packages
Co-authored-by: Owncast <owncast@owncast.online>
* Variable '*' collides with imported package name
* Variable 'error' collides with builtin interface
* '*' may have 'nil' or other unexpected value as its corresponding error variable may be not 'nil'
* WIP with new transcoder progress monitor
* A whole different WIP in progress monitoring via local PUTs
* Use an actual hls playlist parser to rewrite master playlist
* Cleanup
* Private vs public path for thumbnail generation
* Allow each storage provider to make decisions of how to store different types of files
* Simplify inbound file writes
* Revert
* Split out set stream as connected/disconnected state methods
* Update videojs
* Add comment about the hls handler
* Rework of the offline stream state. For #85
* Delete old unreferenced video segment files from disk
* Cleanup all segments and revert to a completely offline state after 5min
* Stop thumbnail generation on stream stop. Copy logo to thumbnail on cleanup.
* Update transcoder test
* Add comment
* Return http 200 on success to transcoder. Tweak how files are written to disk
* Force pixel color format in transcoder
* Add debugging info for S3 transfers. Add default ACL.
* Fix cleanup timer
* Reset session stats when we cleanup the session.
* Put log file back
* Update test
* File should not be a part of this commit
* Add centralized shared performance timer for use anywhere
* Post-rebase cleanup
* Support returning nil from storage provider save
* Updates to reflect package changes + other updates in master
* Fix storage providers being overwritten
* Do not return pointer in save. Support cache headers with S3 providers
* Split out videojs + vhs and point to specific working versions of them
* Bump vjs and vhs versions
* Fix test
* Remove unused
* Update upload warning message
* No longer valid comment
* Pin videojs and vhs versions
* Render and sanitize chat messages server-side. Closes#235
* Render content.md server-side and return it in the client config
* Remove showdown from web project
* Update api spec
* Move example user content file
* Add support for ending the inbound stream. Closes#191
* Add a simple success response to API requests
* Connected clients API with geo details
* Post-rebase cleanup
* Make setting and reading geo details separate operations to unblock and speed up
* Rename file
* Fire geoip api call behind goroutine
* Add comment
* Post-rebase fixes
* Add support for the MaxMind GeoLite2 GeoIP database
* Add support for ending the inbound stream. Closes#191
* Add a simple success response to API requests
* Store inbound broadcast details for admin purposes
* Add /api/admin/broadcaster endpoint
* Reset broadcaster on disconnect
* Move controller to admin directory
* Spike: Ping YP service with instance details
* WIP: Add to the config to support YP
* Add YP response endpoint
* Handle YP errors. Use config. Off by default
* Show message about YP support on launch
* Add animated gif preview when generating thumb
* Increase quality of preview gif and only create it if YP is enabled
* Do not allow re-registration by clearing the key
* Make large and small logos actually structured
* Change log level
* Fix default YP service URL
* Point to default hostname
* Set default value for YP to false
* Transcoder updates for validator warnings (gop, max-bitrates) for #50
* Make the variant settings easier to set/read in code
* Update test to reflect update to transcoder
* Reduce the buffer to give it a little more room to improve the quality. It feels a bit crunched right now.
* Fix test due to changed bitrate buffer ratios
* Tweak buffer size one more time to get errors in the validator to zero
* Saw errors w/ different bitrates, so tweaking it again
* Send PONG responses to PINGs
* Split out client IDs for viewer counts vs. websocket IDs
* WIP username change event
* Display username changes
* Revert commented out code
* Add support for building from the current branch
* Fix PONG
* Make username changes have a unique ID
* Add a version param to js to cachebust
* Change placeholder when chat is disabled
* Use the /chat endpoint for bulk chat history population instead of websocket. For #47
* Force LiveUI/seek bar during live to show. Closes#11.
* Change pulling chat history into app.js
* Force new messages to have visability = true
* New video transcoder
* Set a smaller max muxing size + logging tweaks
* No need to return an err since it wiill panic anyway
* Use a default encoder preset if one is not supplied
* Rename to NewTranscoder. Add comments.
* Rename Bitrate to VideoBitrate. Config file changes required with this rename.
* Allow overrides of segment length. Allow offline stream to live in a single segment
* Append offline state video to existin HLS stream instead of overwriting because players do not like that
* Make properties private as they do not need to be exported
* First pass at restructuring the project; untested but it does compile
* Restructure builds and runs 🎉
* Add the dist folder to the gitignore
* Update core/playlist/monitor.go
* golint and reorganize the monitor.go file
Co-authored-by: Gabe Kangas <gabek@real-ity.com>