2020-12-27 05:04:23 +03:00
// DEFAULT VALUES
2021-02-07 06:38:58 +03:00
import { fetchData , SERVER_CONFIG_UPDATE_URL } from './apis' ;
import { ApiPostArgs , VideoVariant , SocialHandle } from '../types/config-section' ;
2023-04-17 00:17:13 +03:00
import { DEFAULT_TEXTFIELD_URL_PATTERN } from './validators' ;
2020-12-27 05:04:23 +03:00
2023-05-21 07:15:25 +03:00
const TEXT_MAXLENGTH = 255 ;
2020-12-28 12:11:26 +03:00
2021-01-02 05:23:23 +03:00
export const RESET_TIMEOUT = 3000 ;
2021-01-17 06:46:19 +03:00
// CONFIG API ENDPOINTS
2021-01-28 14:08:57 +03:00
export const API_CUSTOM_CONTENT = '/pagecontent' ;
2021-04-12 10:07:08 +03:00
export const API_CUSTOM_CSS_STYLES = '/customstyles' ;
2023-01-19 09:38:24 +03:00
export const API_CUSTOM_JAVASCRIPT = '/customjavascript' ;
2021-01-28 14:08:57 +03:00
export const API_S3_INFO = '/s3' ;
2022-08-17 07:44:37 +03:00
export const API_SERVER_OFFLINE_MESSAGE = '/offlinemessage' ;
2021-01-19 21:34:06 +03:00
export const API_SOCIAL_HANDLES = '/socialhandles' ;
2021-01-28 14:08:57 +03:00
export const API_VIDEO_SEGMENTS = '/video/streamlatencylevel' ;
export const API_VIDEO_VARIANTS = '/video/streamoutputvariants' ;
export const API_YP_SWITCH = '/directoryenabled' ;
2021-07-20 08:02:02 +03:00
export const API_CHAT_FORBIDDEN_USERNAMES = '/chat/forbiddenusernames' ;
2022-01-12 21:17:14 +03:00
export const API_CHAT_SUGGESTED_USERNAMES = '/chat/suggestedusernames' ;
2021-05-02 07:05:04 +03:00
export const API_EXTERNAL_ACTIONS = '/externalactions' ;
2021-03-23 06:34:52 +03:00
export const API_VIDEO_CODEC = '/video/codec' ;
2023-05-21 07:15:25 +03:00
const API_FFMPEG = '/ffmpegpath' ;
const API_INSTANCE_URL = '/serverurl' ;
const API_LOGO = '/logo' ;
const API_NSFW_SWITCH = '/nsfw' ;
const API_RTMP_PORT = '/rtmpserverport' ;
const API_SERVER_SUMMARY = '/serversummary' ;
const API_SERVER_WELCOME_MESSAGE = '/welcomemessage' ;
const API_SERVER_NAME = '/name' ;
const API_STREAM_KEY = '/adminpass' ;
const API_STREAM_TITLE = '/streamtitle' ;
const API_TAGS = '/tags' ;
const API_WEB_PORT = '/webserverport' ;
const API_HIDE_VIEWER_COUNT = '/hideviewercount' ;
const API_CHAT_DISABLE = '/chat/disable' ;
const API_CHAT_JOIN_MESSAGES_ENABLED = '/chat/joinmessagesenabled' ;
const API_CHAT_ESTABLISHED_MODE = '/chat/establishedusermode' ;
Spec-based API (#3653)
* chore(deps): update dependency sass to v1.74.1
* Bundle embedded web app
* chore(deps): update dependency typescript to v5.4.4
* Bundle embedded web app
* Commit screenshots
* fix(deps): update module github.com/yuin/goldmark to v1.7.1
* chore(deps): lock file maintenance (#3662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency @types/node to v20.12.5
* Bundle embedded web app
* fix(deps): update module github.com/shirou/gopsutil/v3 to v3.24.3
* fix(deps): update module github.com/aws/aws-sdk-go to v1.51.17
* fix(deps): update module golang.org/x/net to v0.24.0
* fix(deps): update module golang.org/x/mod to v0.17.0
* add get admin chat clients
* comment out old code
* add get admin logs
* add get admin warnings
* add get admin chat
* add post admin chat messageVisibility
* add post admin chat users enabled
* add post admin chat users ipban create
* add post admin chat users ipban remove
* add get admin chat users ipbans
* chore(deps): update dependency sass-loader to v14 (#3674)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update typescript-eslint monorepo to v7 (#3680)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency less-loader to v12 (#3673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency chromatic to v11 (#3669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency knip to v5 (#3672)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update nick-fields/retry action to v3 (#3678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency @types/markdown-it to v14 (#3668)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update chromaui/action action to v11 (#3666)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* Bump version number
* Bundle embedded web app
* Bundle embedded web app
* Bundle embedded web app
* fix(deps): update dependency react-virtuoso to v4.7.8
* Commit screenshots
* Bundle embedded web app
* 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
* Bundle embedded web app
* chore(deps): update peter-evans/create-or-update-comment digest to 48bb05b
* fix(deps): update dependency @codemirror/language-data to v6.5.0
* Bundle embedded web app
* chore(deps): update dependency css-loader to v7 (#3670)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* add get admin chat users disabled
* add get admin chat users setModerator
* add get admin chat users moderators
* add get admin followers
* chore(deps): update tj-actions/changed-files action to v44 (#3679)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Fix for copying stream key without revealing it only copies asterisks (#3663)
* asterisk copy fix for #3460
* rename text to keys for consistency + linting fix
* make onCopy spawn an antd message directly, remove redundant copyText function
---------
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Commit updated Storybook stories
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency css-loader to v7.1.0
* Bundle embedded web app
* chore(deps): update typescript-eslint monorepo to v7.6.0
* Bundle embedded web app
* chore(deps): update dependency @types/react to v18.2.75 (#3686)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* stream offline status embed updated (#3684)
* Commit screenshots
* add get admin followers pending
* add get admin followers blocked
* add post admin followers approve
* add 400 error to admin requests
* add post admin emoji upload
* add post admin emoji delete
* add post admin config adminpass
* add post admin config streamkeys
* add post admin config pagecontent
* add post admin config streamtitle
* add post admin config streamtitle
* add post admin config serversummary
* add post admin config offlinemessage
* add post admin config welcomemessage
* add post admin config chat disable
* add post admin config chat joinmessageenabled
* add post admin config chat establishedusermode
* add post admin config chat forbiddenusernames
* add post admin config chat suggestedusernames
* add post admin config video codec
* add post admin config appearance
* Allow react/no-danger
* Commit screenshots
* Change tag to self-closing since the linter complains otherwise (#3690)
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* chore(deps): update dependency css-loader to v7.1.1 (#3691)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update dependency @types/node to v20.12.7 (#3688)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency npm to v10.5.2
* Bundle embedded web app
* chore(deps): update dependency knip to v5.9.4
* Bundle embedded web app
* chore(deps): update dependency typescript to v5.4.5
* Bundle embedded web app
* prevent css-loader v7 renaming default to _default, needed for storybook (#3692)
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* chore(deps): update dependency cypress to v13.7.3
* Bundle embedded web app
* Fix custom runtimeCaching rules, default runtimeCaching rule order (#3685)
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* Fixes for aria-live bugs (#3694)
* make the aria-live text adhere to the last message's username
* Wrap lastMessage in an Interweave to handle pre-encoded characters properly
---------
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* chore(deps): update dependency @types/react to v18.2.77
* Bundle embedded web app
* chore(deps): update dependency @storybook/addon-styling-webpack to v1 (#3667)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update dependency storybook-addon-fetch-mock to v2 (#3675)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update dependency sass to v1.75.0
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency sass-loader to v14.2.0
* Bundle embedded web app
* fix(deps): update codemirror
* add get admin webhooks
* add create and delete webhooks
* add get, delete, create access token endpoints
* add update endpoints
* Bundle embedded web app
* fix(deps): update nextjs monorepo to v14.2.0
* Bundle embedded web app
* fix(deps): update nextjs monorepo to v14.2.1
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency @types/markdown-it to v14.0.1
* Bundle embedded web app
* chore(deps): update dependency @types/react to v18.2.78
* Bundle embedded web app
* add send message to connected client
* add deprecated send user message
* add send message to 3rd party
* add send user action
* add update external message visibility
* add update external stream title
* add external get chat messages and fixed error with chat
* add external get clients
* remove options request
* add update logo
* add update tags
* add update ffmpeg path
* add update server port
* add update server ip
* add update rtmp port
* add update websocket host override
* add update custom video serving endpoint
* add update nsfw
* add update directory enabled
* Commit screenshots
* add update social handles
* add update stream latency level
* add update stream output variants
* add update s3 config
* add update server url
* add reset yp registration
* add update external action links
* add update custom styles
* add update custom javascript
* add get video metrics
* add update hide viewer count
* add update search indexing
* Change fediAuth message to be more succinct (#3696)
* Change fediAuth message to be more succint
* Update controllers/auth/fediverse/fediverse.go
for -> from
---------
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
* 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>
* Commit screenshots
* chore(tests): retry cypress tests on failure
* fix(deps): update module github.com/aws/aws-sdk-go to v1.51.23
* chore(deps): update dependency @types/video.js to v7.3.58 (#3705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* fix(deps): update dependency @codemirror/language-data to v6.5.1 (#3706)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* add update message visibility
* add update user status
* add get moderation user details
* create file for /admin/config endpoints
* chore(deps): update dependency style-loader to v4 (#3703)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update typescript-eslint monorepo to v7.7.0
* Bundle embedded web app
* add non-api endpoints to new router
* add set federation enabled
* add set federation private
* chore(tests): attempt to clean up test flakiness (#3710)
* chore(deps): update dependency @types/react to v18.2.79
* add show federation engagement
* add set federation username
* add set federation go live message
* add set federation blocked domains
* add set discord notification configuration
* add set browser notification configuration
* add prometheus endpoint
* add send federation message
* add get federation activities
* add indie auth documentation
* add changes to indie auth server
* Bundle embedded web app
* add fediverse auth
* add spam protection and slur filter
* Commit screenshots
* fix bug with hls endpoint
* Add effect to set media session metadata (#3713)
* Bundle embedded web app
* chore(deps): update dependency sass-loader to v14.2.1
* Bundle embedded web app
* Commit screenshots
* fix(deps): update nextjs monorepo to v14.2.2
* Bundle embedded web app
* Commit screenshots
* fix(deps): update dependency react-virtuoso to v4.7.9
* Bundle embedded web app
* chore(deps): update dependency cypress to v13.8.0
* Bundle embedded web app
* Commit screenshots
* chore(deps): lock file maintenance
* Bundle embedded web app
* add options requests and reformat operationIds
* chore(go): update to go 1.22 (#3708)
* chore(go): update to go 1.22
* fix: install go before running codeql to fix autobild
* chore(test): explicitly set base crosscompile image
* fix(test): do not point at image with incorrect version of Go
* chore: troubleshoot js autoformating in workflow
* Commit screenshots
* add wildcard to index path
* give /admin/ routes precedence
* fix(deps): update dependency @fontsource/poppins to v5.0.14
* Bundle embedded web app
* Bump formidable and artillery in /test/load (#3718)
Removes [formidable](https://github.com/node-formidable/formidable). It's no longer used after updating ancestor dependency [artillery](https://github.com/artilleryio/artillery). These dependencies need to be updated together.
Removes `formidable`
Updates `artillery` from 2.0.2 to 2.0.10
- [Release notes](https://github.com/artilleryio/artillery/releases)
- [Commits](https://github.com/artilleryio/artillery/compare/artillery-2.0.2...artillery-2.0.10)
---
updated-dependencies:
- dependency-name: formidable
dependency-type: indirect
- dependency-name: artillery
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Commit screenshots
* chore(deps): update peter-evans/create-or-update-comment digest to da12db3
* fix(deps): update dependency react-virtuoso to v4.7.10
* add verbose logging and update handler precedence
* Bundle embedded web app
* Commit screenshots
* chore(deps): update golangci/golangci-lint-action action to v5 (#3722)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update typescript-eslint monorepo to v7.7.1
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency knip to v5.10.0
* Bundle embedded web app
* add federation routers
* updated comments to pass linter
* fix bug with mount
* fix linting errors
* add router logs to log files
* update emoji dir
* fixed linting error
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
Co-authored-by: mahmed2000 <49453542+mahmed2000@users.noreply.github.com>
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
Co-authored-by: Jeet Chawda <68128367+Jeetch8@users.noreply.github.com>
Co-authored-by: Vivian Lim ⭐ <1565930+vivlim@users.noreply.github.com>
Co-authored-by: vivlim <vivlim@vivl.im>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-02 04:50:20 +03:00
const API_CHAT_SPAM_PROTECTION_ENABLED = '/chat/spamprotectionenabled' ;
const API_CHAT_SLUR_FILTER_ENABLED = '/chat/slurfilterenabled' ;
2023-05-30 21:09:51 +03:00
const API_DISABLE_SEARCH_INDEXING = '/disablesearchindexing' ;
2023-05-21 07:15:25 +03:00
const API_SOCKET_HOST_OVERRIDE = '/sockethostoverride' ;
2023-05-31 00:05:24 +03:00
const API_VIDEO_SERVING_ENDPOINT = '/videoservingendpoint' ;
2021-01-28 14:08:57 +03:00
2022-01-13 00:52:37 +03:00
// Federation
2023-05-21 07:15:25 +03:00
const API_FEDERATION_ENABLED = '/federation/enable' ;
const API_FEDERATION_PRIVATE = '/federation/private' ;
const API_FEDERATION_USERNAME = '/federation/username' ;
const API_FEDERATION_GOLIVE_MESSAGE = '/federation/livemessage' ;
const API_FEDERATION_SHOW_ENGAGEMENT = '/federation/showengagement' ;
2022-01-13 00:52:37 +03:00
export const API_FEDERATION_BLOCKED_DOMAINS = '/federation/blockdomains' ;
2023-03-13 22:36:25 +03:00
const TEXTFIELD_TYPE_URL = 'url' ;
2021-01-03 11:26:26 +03:00
export async function postConfigUpdateToAPI ( args : ApiPostArgs ) {
2021-01-31 12:38:20 +03:00
const { apiPath , data , onSuccess , onError } = args ;
2023-09-10 21:07:46 +03:00
try {
const result = await fetchData ( ` ${ SERVER_CONFIG_UPDATE_URL } ${ apiPath } ` , {
data ,
method : 'POST' ,
auth : true ,
} ) ;
if ( result . success && onSuccess ) {
onSuccess ( result . message ) ;
} else if ( onError ) {
onError ( result . message ) ;
}
2024-02-06 07:00:50 +03:00
} catch ( e ) {
2023-09-10 21:07:46 +03:00
if ( onError ) {
onError ( e . message ) ;
}
2021-01-03 11:26:26 +03:00
}
}
2021-01-28 14:08:57 +03:00
// Some default props to help build out a TextField
2021-02-04 10:51:38 +03:00
export const TEXTFIELD_PROPS_SERVER_NAME = {
apiPath : API_SERVER_NAME ,
2021-03-25 00:12:22 +03:00
configPath : 'instanceDetails' ,
2021-01-28 14:08:57 +03:00
maxLength : TEXT_MAXLENGTH ,
placeholder : 'Owncast site name' , // like "gothland"
2021-02-03 10:59:33 +03:00
label : 'Name' ,
2021-01-28 14:08:57 +03:00
tip : 'The name of your Owncast server' ,
2021-07-03 23:52:37 +03:00
required : true ,
useTrimLead : true ,
2021-01-28 14:08:57 +03:00
} ;
export const TEXTFIELD_PROPS_STREAM_TITLE = {
apiPath : API_STREAM_TITLE ,
2021-03-25 00:12:22 +03:00
configPath : 'instanceDetails' ,
2021-02-04 20:17:20 +03:00
maxLength : 100 ,
2021-01-28 14:08:57 +03:00
placeholder : 'Doing cool things...' ,
label : 'Stream Title' ,
tip : 'What is your stream about today?' ,
} ;
export const TEXTFIELD_PROPS_SERVER_SUMMARY = {
apiPath : API_SERVER_SUMMARY ,
2021-03-25 00:12:22 +03:00
configPath : 'instanceDetails' ,
2021-01-28 14:08:57 +03:00
maxLength : 500 ,
2021-02-03 10:59:33 +03:00
placeholder : '' ,
label : 'About' ,
tip : 'A brief blurb about you, your server, or what your stream is about.' ,
2021-01-28 14:08:57 +03:00
} ;
2022-08-17 07:44:37 +03:00
export const TEXTFIELD_PROPS_SERVER_OFFLINE_MESSAGE = {
apiPath : API_SERVER_OFFLINE_MESSAGE ,
configPath : 'instanceDetails' ,
maxLength : 2500 ,
placeholder : 'An optional message you can leave people when your stream is not live.' ,
label : 'Offline Message' ,
tip : 'An optional message you can leave people when your stream is not live.' ,
} ;
2021-03-15 07:55:01 +03:00
export const TEXTFIELD_PROPS_SERVER_WELCOME_MESSAGE = {
apiPath : API_SERVER_WELCOME_MESSAGE ,
2021-03-25 00:12:22 +03:00
configPath : 'instanceDetails' ,
2021-12-23 04:05:35 +03:00
maxLength : 2500 ,
2021-03-15 07:55:01 +03:00
placeholder : '' ,
label : 'Welcome Message' ,
2021-05-23 09:28:21 +03:00
tip : 'A system chat message sent to viewers when they first connect to chat. Leave blank to disable.' ,
2021-03-15 07:55:01 +03:00
} ;
2021-01-28 14:08:57 +03:00
export const TEXTFIELD_PROPS_LOGO = {
apiPath : API_LOGO ,
2021-03-25 00:12:22 +03:00
configPath : 'instanceDetails' ,
2021-01-28 14:08:57 +03:00
maxLength : 255 ,
placeholder : '/img/mylogo.png' ,
label : 'Logo' ,
2022-12-29 02:41:49 +03:00
tip : 'Upload your logo if you have one (max size 2 MB). We recommend that you use a square image that is at least 256x256. SVGs are discouraged as they cannot be displayed on all social media platforms.' ,
2021-01-28 14:08:57 +03:00
} ;
2022-11-29 07:22:26 +03:00
export const TEXTFIELD_PROPS_ADMIN_PASSWORD = {
2021-01-28 14:08:57 +03:00
apiPath : API_STREAM_KEY ,
configPath : '' ,
maxLength : TEXT_MAXLENGTH ,
placeholder : 'abc123' ,
2022-11-29 07:22:26 +03:00
label : 'Admin Password' ,
tip : 'Save this password somewhere safe, you will need it to login to the admin dashboard!' ,
2021-01-28 14:08:57 +03:00
required : true ,
2023-02-21 18:10:38 +03:00
hasComplexityRequirements : true ,
2021-01-28 14:08:57 +03:00
} ;
export const TEXTFIELD_PROPS_FFMPEG = {
apiPath : API_FFMPEG ,
configPath : '' ,
maxLength : TEXT_MAXLENGTH ,
placeholder : '/usr/local/bin/ffmpeg' ,
label : 'FFmpeg Path' ,
tip : 'Absolute file path of the FFMPEG application on your server' ,
required : true ,
2023-02-21 18:10:38 +03:00
hasComplexityRequirements : false ,
2021-01-28 14:08:57 +03:00
} ;
export const TEXTFIELD_PROPS_WEB_PORT = {
apiPath : API_WEB_PORT ,
configPath : '' ,
maxLength : 6 ,
placeholder : '8080' ,
2021-02-04 23:41:35 +03:00
label : 'Owncast port' ,
tip : 'What port is your Owncast web server listening? Default is 8080' ,
2021-01-28 14:08:57 +03:00
required : true ,
2023-02-21 18:10:38 +03:00
hasComplexityRequirements : false ,
2021-01-28 14:08:57 +03:00
} ;
export const TEXTFIELD_PROPS_RTMP_PORT = {
apiPath : API_RTMP_PORT ,
configPath : '' ,
maxLength : 6 ,
placeholder : '1935' ,
label : 'RTMP port' ,
2021-02-04 23:41:35 +03:00
tip : 'What port should accept inbound broadcasts? Default is 1935' ,
2021-01-28 14:08:57 +03:00
required : true ,
2023-02-21 18:10:38 +03:00
hasComplexityRequirements : false ,
2021-01-28 14:08:57 +03:00
} ;
export const TEXTFIELD_PROPS_INSTANCE_URL = {
apiPath : API_INSTANCE_URL ,
configPath : 'yp' ,
maxLength : 255 ,
placeholder : 'https://owncast.mysite.com' ,
2021-02-17 22:17:07 +03:00
label : 'Server URL' ,
2021-02-03 10:59:33 +03:00
tip : 'The full url to your Owncast server.' ,
2021-05-23 09:27:51 +03:00
type : TEXTFIELD_TYPE_URL ,
pattern : DEFAULT_TEXTFIELD_URL_PATTERN ,
useTrim : true ,
2021-01-28 14:08:57 +03:00
} ;
2022-03-07 04:12:37 +03:00
export const TEXTFIELD_PROPS_SOCKET_HOST_OVERRIDE = {
apiPath : API_SOCKET_HOST_OVERRIDE ,
configPath : '' ,
maxLength : 255 ,
placeholder : 'https://owncast.mysite.com' ,
label : 'Websocket host override' ,
tip : 'The direct URL of your Owncast server.' ,
type : TEXTFIELD_TYPE_URL ,
pattern : DEFAULT_TEXTFIELD_URL_PATTERN ,
useTrim : true ,
} ;
2023-05-31 00:05:24 +03:00
export const TEXTFIELD_PROPS_VIDEO_SERVING_ENDPOINT = {
apiPath : API_VIDEO_SERVING_ENDPOINT ,
fieldName : 'videoServingEndpoint' ,
label : 'Serving Endpoint' ,
maxLength : 255 ,
placeholder : 'http://cdn.provider.endpoint.com' ,
tip : 'Optional URL that video content should be accessed from instead of the default. Used with CDNs and specific storage providers. Generally not required.' ,
type : TEXTFIELD_TYPE_URL ,
pattern : DEFAULT_TEXTFIELD_URL_PATTERN ,
useTrim : true ,
} ;
2021-01-28 14:08:57 +03:00
// MISC FIELDS
export const FIELD_PROPS_TAGS = {
apiPath : API_TAGS ,
configPath : 'instanceDetails' ,
maxLength : 24 ,
placeholder : 'Add a new tag' ,
required : true ,
label : '' ,
tip : '' ,
} ;
2021-01-03 11:26:26 +03:00
2021-01-28 14:08:57 +03:00
export const FIELD_PROPS_NSFW = {
apiPath : API_NSFW_SWITCH ,
configPath : 'instanceDetails' ,
label : 'NSFW?' ,
2023-03-16 21:27:17 +03:00
tip : "Turn this ON if you plan to stream explicit or adult content. Please respectfully set this flag so unexpected eyes won't accidentally see it in the Directory." ,
2021-01-28 14:08:57 +03:00
} ;
2021-01-03 15:03:18 +03:00
2021-01-28 14:08:57 +03:00
export const FIELD_PROPS_YP = {
apiPath : API_YP_SWITCH ,
configPath : 'yp' ,
2021-02-17 22:17:07 +03:00
label : 'Enable directory' ,
2021-08-16 00:25:15 +03:00
tip : 'Turn this ON to request to show up in the directory.' ,
2021-01-28 14:08:57 +03:00
} ;
2020-12-29 13:51:56 +03:00
2022-06-26 10:46:55 +03:00
export const FIELD_PROPS_HIDE_VIEWER_COUNT = {
apiPath : API_HIDE_VIEWER_COUNT ,
configPath : '' ,
label : 'Hide viewer count' ,
2023-03-11 22:53:48 +03:00
tip : 'Turn this ON to hide the viewer count on the web page.' ,
2022-06-26 10:46:55 +03:00
} ;
2023-05-30 21:09:51 +03:00
export const FIELD_PROPS_DISABLE_SEARCH_INDEXING = {
apiPath : API_DISABLE_SEARCH_INDEXING ,
configPath : '' ,
label : 'Disable search engine indexing' ,
tip : 'Turn this ON to to tell search engines not to index this site.' ,
} ;
2021-01-31 12:38:20 +03:00
export const DEFAULT_VARIANT_STATE : VideoVariant = {
2021-01-10 13:37:22 +03:00
framerate : 24 ,
videoPassthrough : false ,
2023-03-06 02:37:29 +03:00
videoBitrate : 1200 ,
2021-01-10 13:37:22 +03:00
audioPassthrough : true , // if false, then CAN set audiobitrate
audioBitrate : 0 ,
2023-03-06 02:37:29 +03:00
cpuUsageLevel : 2 ,
2021-02-08 04:03:02 +03:00
scaledHeight : null ,
scaledWidth : null ,
2021-03-12 00:39:36 +03:00
name : '' ,
2021-01-10 13:37:22 +03:00
} ;
2021-01-24 07:16:01 +03:00
2021-03-14 21:39:07 +03:00
export const FIELD_PROPS_DISABLE_CHAT = {
apiPath : API_CHAT_DISABLE ,
2021-07-20 08:02:02 +03:00
configPath : '' ,
2021-09-11 01:08:15 +03:00
label : 'Chat' ,
tip : 'Turn the chat functionality on/off on your Owncast server.' ,
2021-03-14 21:39:07 +03:00
useSubmit : true ,
} ;
Spec-based API (#3653)
* chore(deps): update dependency sass to v1.74.1
* Bundle embedded web app
* chore(deps): update dependency typescript to v5.4.4
* Bundle embedded web app
* Commit screenshots
* fix(deps): update module github.com/yuin/goldmark to v1.7.1
* chore(deps): lock file maintenance (#3662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency @types/node to v20.12.5
* Bundle embedded web app
* fix(deps): update module github.com/shirou/gopsutil/v3 to v3.24.3
* fix(deps): update module github.com/aws/aws-sdk-go to v1.51.17
* fix(deps): update module golang.org/x/net to v0.24.0
* fix(deps): update module golang.org/x/mod to v0.17.0
* add get admin chat clients
* comment out old code
* add get admin logs
* add get admin warnings
* add get admin chat
* add post admin chat messageVisibility
* add post admin chat users enabled
* add post admin chat users ipban create
* add post admin chat users ipban remove
* add get admin chat users ipbans
* chore(deps): update dependency sass-loader to v14 (#3674)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update typescript-eslint monorepo to v7 (#3680)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency less-loader to v12 (#3673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency chromatic to v11 (#3669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency knip to v5 (#3672)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update nick-fields/retry action to v3 (#3678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency @types/markdown-it to v14 (#3668)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update chromaui/action action to v11 (#3666)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* Bump version number
* Bundle embedded web app
* Bundle embedded web app
* Bundle embedded web app
* fix(deps): update dependency react-virtuoso to v4.7.8
* Commit screenshots
* Bundle embedded web app
* 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
* Bundle embedded web app
* chore(deps): update peter-evans/create-or-update-comment digest to 48bb05b
* fix(deps): update dependency @codemirror/language-data to v6.5.0
* Bundle embedded web app
* chore(deps): update dependency css-loader to v7 (#3670)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* add get admin chat users disabled
* add get admin chat users setModerator
* add get admin chat users moderators
* add get admin followers
* chore(deps): update tj-actions/changed-files action to v44 (#3679)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Fix for copying stream key without revealing it only copies asterisks (#3663)
* asterisk copy fix for #3460
* rename text to keys for consistency + linting fix
* make onCopy spawn an antd message directly, remove redundant copyText function
---------
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Commit updated Storybook stories
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency css-loader to v7.1.0
* Bundle embedded web app
* chore(deps): update typescript-eslint monorepo to v7.6.0
* Bundle embedded web app
* chore(deps): update dependency @types/react to v18.2.75 (#3686)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* stream offline status embed updated (#3684)
* Commit screenshots
* add get admin followers pending
* add get admin followers blocked
* add post admin followers approve
* add 400 error to admin requests
* add post admin emoji upload
* add post admin emoji delete
* add post admin config adminpass
* add post admin config streamkeys
* add post admin config pagecontent
* add post admin config streamtitle
* add post admin config streamtitle
* add post admin config serversummary
* add post admin config offlinemessage
* add post admin config welcomemessage
* add post admin config chat disable
* add post admin config chat joinmessageenabled
* add post admin config chat establishedusermode
* add post admin config chat forbiddenusernames
* add post admin config chat suggestedusernames
* add post admin config video codec
* add post admin config appearance
* Allow react/no-danger
* Commit screenshots
* Change tag to self-closing since the linter complains otherwise (#3690)
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* chore(deps): update dependency css-loader to v7.1.1 (#3691)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update dependency @types/node to v20.12.7 (#3688)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency npm to v10.5.2
* Bundle embedded web app
* chore(deps): update dependency knip to v5.9.4
* Bundle embedded web app
* chore(deps): update dependency typescript to v5.4.5
* Bundle embedded web app
* prevent css-loader v7 renaming default to _default, needed for storybook (#3692)
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* chore(deps): update dependency cypress to v13.7.3
* Bundle embedded web app
* Fix custom runtimeCaching rules, default runtimeCaching rule order (#3685)
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* Fixes for aria-live bugs (#3694)
* make the aria-live text adhere to the last message's username
* Wrap lastMessage in an Interweave to handle pre-encoded characters properly
---------
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* chore(deps): update dependency @types/react to v18.2.77
* Bundle embedded web app
* chore(deps): update dependency @storybook/addon-styling-webpack to v1 (#3667)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update dependency storybook-addon-fetch-mock to v2 (#3675)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update dependency sass to v1.75.0
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency sass-loader to v14.2.0
* Bundle embedded web app
* fix(deps): update codemirror
* add get admin webhooks
* add create and delete webhooks
* add get, delete, create access token endpoints
* add update endpoints
* Bundle embedded web app
* fix(deps): update nextjs monorepo to v14.2.0
* Bundle embedded web app
* fix(deps): update nextjs monorepo to v14.2.1
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency @types/markdown-it to v14.0.1
* Bundle embedded web app
* chore(deps): update dependency @types/react to v18.2.78
* Bundle embedded web app
* add send message to connected client
* add deprecated send user message
* add send message to 3rd party
* add send user action
* add update external message visibility
* add update external stream title
* add external get chat messages and fixed error with chat
* add external get clients
* remove options request
* add update logo
* add update tags
* add update ffmpeg path
* add update server port
* add update server ip
* add update rtmp port
* add update websocket host override
* add update custom video serving endpoint
* add update nsfw
* add update directory enabled
* Commit screenshots
* add update social handles
* add update stream latency level
* add update stream output variants
* add update s3 config
* add update server url
* add reset yp registration
* add update external action links
* add update custom styles
* add update custom javascript
* add get video metrics
* add update hide viewer count
* add update search indexing
* Change fediAuth message to be more succinct (#3696)
* Change fediAuth message to be more succint
* Update controllers/auth/fediverse/fediverse.go
for -> from
---------
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
* 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>
* Commit screenshots
* chore(tests): retry cypress tests on failure
* fix(deps): update module github.com/aws/aws-sdk-go to v1.51.23
* chore(deps): update dependency @types/video.js to v7.3.58 (#3705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* fix(deps): update dependency @codemirror/language-data to v6.5.1 (#3706)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* add update message visibility
* add update user status
* add get moderation user details
* create file for /admin/config endpoints
* chore(deps): update dependency style-loader to v4 (#3703)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update typescript-eslint monorepo to v7.7.0
* Bundle embedded web app
* add non-api endpoints to new router
* add set federation enabled
* add set federation private
* chore(tests): attempt to clean up test flakiness (#3710)
* chore(deps): update dependency @types/react to v18.2.79
* add show federation engagement
* add set federation username
* add set federation go live message
* add set federation blocked domains
* add set discord notification configuration
* add set browser notification configuration
* add prometheus endpoint
* add send federation message
* add get federation activities
* add indie auth documentation
* add changes to indie auth server
* Bundle embedded web app
* add fediverse auth
* add spam protection and slur filter
* Commit screenshots
* fix bug with hls endpoint
* Add effect to set media session metadata (#3713)
* Bundle embedded web app
* chore(deps): update dependency sass-loader to v14.2.1
* Bundle embedded web app
* Commit screenshots
* fix(deps): update nextjs monorepo to v14.2.2
* Bundle embedded web app
* Commit screenshots
* fix(deps): update dependency react-virtuoso to v4.7.9
* Bundle embedded web app
* chore(deps): update dependency cypress to v13.8.0
* Bundle embedded web app
* Commit screenshots
* chore(deps): lock file maintenance
* Bundle embedded web app
* add options requests and reformat operationIds
* chore(go): update to go 1.22 (#3708)
* chore(go): update to go 1.22
* fix: install go before running codeql to fix autobild
* chore(test): explicitly set base crosscompile image
* fix(test): do not point at image with incorrect version of Go
* chore: troubleshoot js autoformating in workflow
* Commit screenshots
* add wildcard to index path
* give /admin/ routes precedence
* fix(deps): update dependency @fontsource/poppins to v5.0.14
* Bundle embedded web app
* Bump formidable and artillery in /test/load (#3718)
Removes [formidable](https://github.com/node-formidable/formidable). It's no longer used after updating ancestor dependency [artillery](https://github.com/artilleryio/artillery). These dependencies need to be updated together.
Removes `formidable`
Updates `artillery` from 2.0.2 to 2.0.10
- [Release notes](https://github.com/artilleryio/artillery/releases)
- [Commits](https://github.com/artilleryio/artillery/compare/artillery-2.0.2...artillery-2.0.10)
---
updated-dependencies:
- dependency-name: formidable
dependency-type: indirect
- dependency-name: artillery
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Commit screenshots
* chore(deps): update peter-evans/create-or-update-comment digest to da12db3
* fix(deps): update dependency react-virtuoso to v4.7.10
* add verbose logging and update handler precedence
* Bundle embedded web app
* Commit screenshots
* chore(deps): update golangci/golangci-lint-action action to v5 (#3722)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update typescript-eslint monorepo to v7.7.1
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency knip to v5.10.0
* Bundle embedded web app
* add federation routers
* updated comments to pass linter
* fix bug with mount
* fix linting errors
* add router logs to log files
* update emoji dir
* fixed linting error
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
Co-authored-by: mahmed2000 <49453542+mahmed2000@users.noreply.github.com>
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
Co-authored-by: Jeet Chawda <68128367+Jeetch8@users.noreply.github.com>
Co-authored-by: Vivian Lim ⭐ <1565930+vivlim@users.noreply.github.com>
Co-authored-by: vivlim <vivlim@vivl.im>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-02 04:50:20 +03:00
export const FIELD_PROPS_ENABLE_SPAM_PROTECTION = {
apiPath : API_CHAT_SPAM_PROTECTION_ENABLED ,
configPath : '' ,
label : 'Spam Protection' ,
tip : 'Limits how quickly messages can be sent to prevent spamming.' ,
useSubmit : true ,
} ;
2022-03-06 09:36:38 +03:00
export const FIELD_PROPS_CHAT_JOIN_MESSAGES_ENABLED = {
apiPath : API_CHAT_JOIN_MESSAGES_ENABLED ,
configPath : '' ,
label : 'Join Messages' ,
tip : 'Show when a viewer joins the chat.' ,
2022-04-19 22:52:40 +03:00
useSubmit : true ,
2022-03-07 11:06:07 +03:00
} ;
Spec-based API (#3653)
* chore(deps): update dependency sass to v1.74.1
* Bundle embedded web app
* chore(deps): update dependency typescript to v5.4.4
* Bundle embedded web app
* Commit screenshots
* fix(deps): update module github.com/yuin/goldmark to v1.7.1
* chore(deps): lock file maintenance (#3662)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency @types/node to v20.12.5
* Bundle embedded web app
* fix(deps): update module github.com/shirou/gopsutil/v3 to v3.24.3
* fix(deps): update module github.com/aws/aws-sdk-go to v1.51.17
* fix(deps): update module golang.org/x/net to v0.24.0
* fix(deps): update module golang.org/x/mod to v0.17.0
* add get admin chat clients
* comment out old code
* add get admin logs
* add get admin warnings
* add get admin chat
* add post admin chat messageVisibility
* add post admin chat users enabled
* add post admin chat users ipban create
* add post admin chat users ipban remove
* add get admin chat users ipbans
* chore(deps): update dependency sass-loader to v14 (#3674)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update typescript-eslint monorepo to v7 (#3680)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency less-loader to v12 (#3673)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency chromatic to v11 (#3669)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency knip to v5 (#3672)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update nick-fields/retry action to v3 (#3678)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update dependency @types/markdown-it to v14 (#3668)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update chromaui/action action to v11 (#3666)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* Bump version number
* Bundle embedded web app
* Bundle embedded web app
* Bundle embedded web app
* fix(deps): update dependency react-virtuoso to v4.7.8
* Commit screenshots
* Bundle embedded web app
* 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
* Bundle embedded web app
* chore(deps): update peter-evans/create-or-update-comment digest to 48bb05b
* fix(deps): update dependency @codemirror/language-data to v6.5.0
* Bundle embedded web app
* chore(deps): update dependency css-loader to v7 (#3670)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* add get admin chat users disabled
* add get admin chat users setModerator
* add get admin chat users moderators
* add get admin followers
* chore(deps): update tj-actions/changed-files action to v44 (#3679)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Fix for copying stream key without revealing it only copies asterisks (#3663)
* asterisk copy fix for #3460
* rename text to keys for consistency + linting fix
* make onCopy spawn an antd message directly, remove redundant copyText function
---------
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Commit updated Storybook stories
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency css-loader to v7.1.0
* Bundle embedded web app
* chore(deps): update typescript-eslint monorepo to v7.6.0
* Bundle embedded web app
* chore(deps): update dependency @types/react to v18.2.75 (#3686)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* stream offline status embed updated (#3684)
* Commit screenshots
* add get admin followers pending
* add get admin followers blocked
* add post admin followers approve
* add 400 error to admin requests
* add post admin emoji upload
* add post admin emoji delete
* add post admin config adminpass
* add post admin config streamkeys
* add post admin config pagecontent
* add post admin config streamtitle
* add post admin config streamtitle
* add post admin config serversummary
* add post admin config offlinemessage
* add post admin config welcomemessage
* add post admin config chat disable
* add post admin config chat joinmessageenabled
* add post admin config chat establishedusermode
* add post admin config chat forbiddenusernames
* add post admin config chat suggestedusernames
* add post admin config video codec
* add post admin config appearance
* Allow react/no-danger
* Commit screenshots
* Change tag to self-closing since the linter complains otherwise (#3690)
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* chore(deps): update dependency css-loader to v7.1.1 (#3691)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update dependency @types/node to v20.12.7 (#3688)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency npm to v10.5.2
* Bundle embedded web app
* chore(deps): update dependency knip to v5.9.4
* Bundle embedded web app
* chore(deps): update dependency typescript to v5.4.5
* Bundle embedded web app
* prevent css-loader v7 renaming default to _default, needed for storybook (#3692)
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* chore(deps): update dependency cypress to v13.7.3
* Bundle embedded web app
* Fix custom runtimeCaching rules, default runtimeCaching rule order (#3685)
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* Fixes for aria-live bugs (#3694)
* make the aria-live text adhere to the last message's username
* Wrap lastMessage in an Interweave to handle pre-encoded characters properly
---------
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
* Bundle embedded web app
* chore(deps): update dependency @types/react to v18.2.77
* Bundle embedded web app
* chore(deps): update dependency @storybook/addon-styling-webpack to v1 (#3667)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update dependency storybook-addon-fetch-mock to v2 (#3675)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update dependency sass to v1.75.0
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency sass-loader to v14.2.0
* Bundle embedded web app
* fix(deps): update codemirror
* add get admin webhooks
* add create and delete webhooks
* add get, delete, create access token endpoints
* add update endpoints
* Bundle embedded web app
* fix(deps): update nextjs monorepo to v14.2.0
* Bundle embedded web app
* fix(deps): update nextjs monorepo to v14.2.1
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency @types/markdown-it to v14.0.1
* Bundle embedded web app
* chore(deps): update dependency @types/react to v18.2.78
* Bundle embedded web app
* add send message to connected client
* add deprecated send user message
* add send message to 3rd party
* add send user action
* add update external message visibility
* add update external stream title
* add external get chat messages and fixed error with chat
* add external get clients
* remove options request
* add update logo
* add update tags
* add update ffmpeg path
* add update server port
* add update server ip
* add update rtmp port
* add update websocket host override
* add update custom video serving endpoint
* add update nsfw
* add update directory enabled
* Commit screenshots
* add update social handles
* add update stream latency level
* add update stream output variants
* add update s3 config
* add update server url
* add reset yp registration
* add update external action links
* add update custom styles
* add update custom javascript
* add get video metrics
* add update hide viewer count
* add update search indexing
* Change fediAuth message to be more succinct (#3696)
* Change fediAuth message to be more succint
* Update controllers/auth/fediverse/fediverse.go
for -> from
---------
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
* 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>
* Commit screenshots
* chore(tests): retry cypress tests on failure
* fix(deps): update module github.com/aws/aws-sdk-go to v1.51.23
* chore(deps): update dependency @types/video.js to v7.3.58 (#3705)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* fix(deps): update dependency @codemirror/language-data to v6.5.1 (#3706)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* add update message visibility
* add update user status
* add get moderation user details
* create file for /admin/config endpoints
* chore(deps): update dependency style-loader to v4 (#3703)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* Bundle embedded web app
* chore(deps): update typescript-eslint monorepo to v7.7.0
* Bundle embedded web app
* add non-api endpoints to new router
* add set federation enabled
* add set federation private
* chore(tests): attempt to clean up test flakiness (#3710)
* chore(deps): update dependency @types/react to v18.2.79
* add show federation engagement
* add set federation username
* add set federation go live message
* add set federation blocked domains
* add set discord notification configuration
* add set browser notification configuration
* add prometheus endpoint
* add send federation message
* add get federation activities
* add indie auth documentation
* add changes to indie auth server
* Bundle embedded web app
* add fediverse auth
* add spam protection and slur filter
* Commit screenshots
* fix bug with hls endpoint
* Add effect to set media session metadata (#3713)
* Bundle embedded web app
* chore(deps): update dependency sass-loader to v14.2.1
* Bundle embedded web app
* Commit screenshots
* fix(deps): update nextjs monorepo to v14.2.2
* Bundle embedded web app
* Commit screenshots
* fix(deps): update dependency react-virtuoso to v4.7.9
* Bundle embedded web app
* chore(deps): update dependency cypress to v13.8.0
* Bundle embedded web app
* Commit screenshots
* chore(deps): lock file maintenance
* Bundle embedded web app
* add options requests and reformat operationIds
* chore(go): update to go 1.22 (#3708)
* chore(go): update to go 1.22
* fix: install go before running codeql to fix autobild
* chore(test): explicitly set base crosscompile image
* fix(test): do not point at image with incorrect version of Go
* chore: troubleshoot js autoformating in workflow
* Commit screenshots
* add wildcard to index path
* give /admin/ routes precedence
* fix(deps): update dependency @fontsource/poppins to v5.0.14
* Bundle embedded web app
* Bump formidable and artillery in /test/load (#3718)
Removes [formidable](https://github.com/node-formidable/formidable). It's no longer used after updating ancestor dependency [artillery](https://github.com/artilleryio/artillery). These dependencies need to be updated together.
Removes `formidable`
Updates `artillery` from 2.0.2 to 2.0.10
- [Release notes](https://github.com/artilleryio/artillery/releases)
- [Commits](https://github.com/artilleryio/artillery/compare/artillery-2.0.2...artillery-2.0.10)
---
updated-dependencies:
- dependency-name: formidable
dependency-type: indirect
- dependency-name: artillery
dependency-type: direct:production
...
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
* Commit screenshots
* chore(deps): update peter-evans/create-or-update-comment digest to da12db3
* fix(deps): update dependency react-virtuoso to v4.7.10
* add verbose logging and update handler precedence
* Bundle embedded web app
* Commit screenshots
* chore(deps): update golangci/golangci-lint-action action to v5 (#3722)
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
* chore(deps): update typescript-eslint monorepo to v7.7.1
* Bundle embedded web app
* Commit screenshots
* chore(deps): update dependency knip to v5.10.0
* Bundle embedded web app
* add federation routers
* updated comments to pass linter
* fix bug with mount
* fix linting errors
* add router logs to log files
* update emoji dir
* fixed linting error
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: Owncast <owncast@owncast.online>
Co-authored-by: Gabe Kangas <gabek@real-ity.com>
Co-authored-by: mahmed2000 <49453542+mahmed2000@users.noreply.github.com>
Co-authored-by: Muaz Ahmad <mahmad2000@protonmail.com>
Co-authored-by: Jeet Chawda <68128367+Jeetch8@users.noreply.github.com>
Co-authored-by: Vivian Lim ⭐ <1565930+vivlim@users.noreply.github.com>
Co-authored-by: vivlim <vivlim@vivl.im>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-02 04:50:20 +03:00
export const FIELD_PROPS_ENABLE_CHAT_SLUR_FILTER = {
apiPath : API_CHAT_SLUR_FILTER_ENABLED ,
configPath : '' ,
label : 'Chat language filter' ,
tip : 'Filters out messages that contain offensive language.' ,
useSubmit : true ,
} ;
2022-03-07 11:06:07 +03:00
export const CHAT_ESTABLISHED_USER_MODE = {
apiPath : API_CHAT_ESTABLISHED_MODE ,
configPath : '' ,
label : 'Established users only' ,
tip : 'Only users who have previously been established for some time may chat.' ,
2022-03-06 09:36:38 +03:00
useSubmit : true ,
} ;
2021-07-20 08:02:02 +03:00
export const TEXTFIELD_PROPS_CHAT_FORBIDDEN_USERNAMES = {
apiPath : API_CHAT_FORBIDDEN_USERNAMES ,
2021-07-26 08:12:50 +03:00
placeholder : 'username' ,
2021-07-20 08:02:02 +03:00
label : 'Forbidden usernames' ,
2021-07-26 08:12:50 +03:00
tip : 'A list of words in chat usernames you disallow.' ,
2021-06-22 06:19:00 +03:00
} ;
2022-01-12 21:17:14 +03:00
export const TEXTFIELD_PROPS_CHAT_SUGGESTED_USERNAMES = {
apiPath : API_CHAT_SUGGESTED_USERNAMES ,
placeholder : 'username' ,
label : 'Default usernames' ,
tip : 'An optional list of chat usernames that new users get assigned. If the list holds less then 10 items, random names will be generated. Users can change their usernames afterwards and the same username may be given out multple times.' ,
min_not_reached : 'At least 10 items are required for this feature.' ,
no_entries : 'The default name generator is used.' ,
} ;
2022-01-13 00:52:37 +03:00
export const FIELD_PROPS_ENABLE_FEDERATION = {
apiPath : API_FEDERATION_ENABLED ,
configPath : 'federation' ,
label : 'Enable Social Features' ,
tip : 'Send and receive activities on the Fediverse.' ,
useSubmit : true ,
} ;
export const FIELD_PROPS_FEDERATION_IS_PRIVATE = {
apiPath : API_FEDERATION_PRIVATE ,
configPath : 'federation' ,
label : 'Private' ,
tip : 'Follow requests will require approval and only followers will see your activity.' ,
useSubmit : true ,
} ;
export const FIELD_PROPS_SHOW_FEDERATION_ENGAGEMENT = {
apiPath : API_FEDERATION_SHOW_ENGAGEMENT ,
configPath : 'showEngagement' ,
label : 'Show engagement' ,
tip : 'Following, liking and sharing will appear in the chat feed.' ,
useSubmit : true ,
} ;
export const TEXTFIELD_PROPS_FEDERATION_LIVE_MESSAGE = {
apiPath : API_FEDERATION_GOLIVE_MESSAGE ,
configPath : 'federation' ,
maxLength : 500 ,
placeholder : 'My stream has started, tune in!' ,
label : 'Now Live message' ,
tip : 'The message sent announcing that your live stream has begun. Tags will be automatically added. Leave blank to disable.' ,
} ;
export const TEXTFIELD_PROPS_FEDERATION_DEFAULT_USER = {
apiPath : API_FEDERATION_USERNAME ,
configPath : 'federation' ,
maxLength : 10 ,
placeholder : 'owncast' ,
default : 'owncast' ,
label : 'Username' ,
2024-02-06 07:00:50 +03:00
tip : 'The username used for sending and receiving activities from the Fediverse. For example, if you use "bob" as a username you would send messages to the fediverse from @bob@yourserver. Once people start following your instance you should not change this.\nNote: Username cannot have special characters. ' ,
2022-01-13 00:52:37 +03:00
} ;
export const TEXTFIELD_PROPS_FEDERATION_INSTANCE_URL = {
apiPath : API_INSTANCE_URL ,
configPath : 'yp' ,
maxLength : 255 ,
placeholder : 'https://owncast.mysite.com' ,
label : 'Server URL' ,
tip : 'The full url to your Owncast server is required to enable social features. Must use SSL (https). Once people start following your instance you should not change this.' ,
type : TEXTFIELD_TYPE_URL ,
pattern : DEFAULT_TEXTFIELD_URL_PATTERN ,
useTrim : true ,
} ;
export const FIELD_PROPS_FEDERATION_NSFW = {
apiPath : API_NSFW_SWITCH ,
configPath : 'instanceDetails' ,
label : 'Potentially NSFW' ,
2023-03-16 21:27:17 +03:00
tip : 'Turn this ON if you plan to stream explicit or adult content so previews of your stream can be marked as potentially sensitive.' ,
2022-01-13 00:52:37 +03:00
} ;
export const FIELD_PROPS_FEDERATION_BLOCKED_DOMAINS = {
apiPath : API_FEDERATION_BLOCKED_DOMAINS ,
configPath : 'federation' ,
label : 'Blocked domains' ,
placeholder : 'bad.domain.biz' ,
tip : 'You can block specific domains from interacting with you.' ,
} ;
2021-02-27 10:44:13 +03:00
export const VIDEO_VARIANT_SETTING_DEFAULTS = {
// this one is currently unused
audioBitrate : {
min : 600 ,
max : 1200 ,
defaultValue : 800 ,
unit : 'kbps' ,
incrementBy : 100 ,
tip : 'nothing to see here' ,
} ,
videoPassthrough : {
tip : 'If enabled, all other settings will be disabled. Otherwise configure as desired.' ,
} ,
audioPassthrough : {
tip : 'If No is selected, then you should set your desired Audio Bitrate.' ,
} ,
scaledWidth : {
fieldName : 'scaledWidth' ,
label : 'Resized Width' ,
maxLength : 4 ,
2023-03-13 05:44:50 +03:00
placeholder : '1280' ,
2021-02-27 10:44:13 +03:00
tip : "Optionally resize this content's width." ,
} ,
scaledHeight : {
fieldName : 'scaledHeight' ,
label : 'Resized Height' ,
maxLength : 4 ,
placeholder : '720' ,
tip : "Optionally resize this content's height." ,
} ,
} ;
// VIDEO VARIANT FORM - framerate
export const FRAMERATE_DEFAULTS = {
min : 24 ,
max : 120 ,
defaultValue : 24 ,
unit : 'fps' ,
incrementBy : null ,
2021-05-23 09:28:21 +03:00
tip : 'Reducing your framerate will decrease the amount of video that needs to be encoded and sent to your viewers, saving CPU and bandwidth at the expense of smoothness. A lower value is generally is fine for most content.' ,
2021-02-27 10:44:13 +03:00
} ;
export const FRAMERATE_SLIDER_MARKS = {
[ FRAMERATE_DEFAULTS . min ] : ` ${ FRAMERATE_DEFAULTS . min } ${ FRAMERATE_DEFAULTS . unit } ` ,
2022-10-04 23:19:23 +03:00
25 : ' ' ,
30 : ' ' ,
50 : ' ' ,
60 : ' ' ,
90 : ' ' ,
2021-02-27 10:44:13 +03:00
[ FRAMERATE_DEFAULTS . max ] : ` ${ FRAMERATE_DEFAULTS . max } ${ FRAMERATE_DEFAULTS . unit } ` ,
} ;
export const FRAMERATE_TOOLTIPS = {
[ FRAMERATE_DEFAULTS . min ] : ` ${ FRAMERATE_DEFAULTS . min } fps - Good for film, presentations, music, low power/bandwidth servers. ` ,
2021-10-14 04:46:21 +03:00
25 : '25fps - Good for film, presentations, music, low power/bandwidth servers.' ,
2021-02-27 10:44:13 +03:00
30 : '30fps - Good for slow/casual games, chat, general purpose.' ,
2021-10-14 04:46:21 +03:00
50 : '50fps - Good for fast/action games, sports, HD video.' ,
2021-02-27 10:44:13 +03:00
60 : '60fps - Good for fast/action games, sports, HD video.' ,
90 : '90fps - Good for newer fast games and hardware.' ,
[ FRAMERATE_DEFAULTS . max ] : ` ${ FRAMERATE_DEFAULTS . max } fps - Experimental, use at your own risk! ` ,
} ;
// VIDEO VARIANT FORM - bitrate
export const VIDEO_BITRATE_DEFAULTS = {
2021-05-07 01:50:47 +03:00
min : 400 ,
2021-02-27 10:44:13 +03:00
max : 6000 ,
defaultValue : 1200 ,
unit : 'kbps' ,
incrementBy : 100 ,
tip : 'The overall quality of your stream is generally impacted most by bitrate.' ,
} ;
2021-03-12 00:39:36 +03:00
export const VIDEO_NAME_DEFAULTS = {
fieldName : 'name' ,
label : 'Name' ,
2021-05-23 09:27:51 +03:00
maxLength : 15 ,
2021-03-12 00:39:36 +03:00
placeholder : 'HD or Low' ,
2021-04-02 08:00:10 +03:00
tip : 'Human-readable name for for displaying in the player.' ,
2021-03-12 00:39:36 +03:00
} ;
2021-02-27 10:44:13 +03:00
export const VIDEO_BITRATE_SLIDER_MARKS = {
2022-12-08 03:15:38 +03:00
[ VIDEO_BITRATE_DEFAULTS . min ] : {
style : {
marginLeft : '24px' ,
} ,
label : ` ${ VIDEO_BITRATE_DEFAULTS . min } ${ VIDEO_BITRATE_DEFAULTS . unit } ` ,
} ,
2021-02-27 10:44:13 +03:00
3000 : 3000 ,
4500 : 4500 ,
2022-12-08 03:15:38 +03:00
[ VIDEO_BITRATE_DEFAULTS . max ] : {
style : {
marginLeft : '-10px' ,
} ,
label : ` ${ VIDEO_BITRATE_DEFAULTS . max } ${ VIDEO_BITRATE_DEFAULTS . unit } ` ,
} ,
2021-02-27 10:44:13 +03:00
} ;
// VIDEO VARIANT FORM - encoder preset
// CPU
export const ENCODER_PRESET_SLIDER_MARKS = {
2023-02-23 08:56:55 +03:00
0 : {
2022-12-08 03:15:38 +03:00
style : {
marginLeft : '15px' ,
} ,
2023-02-28 08:02:33 +03:00
label : 'lowest' ,
2022-12-08 03:15:38 +03:00
} ,
2023-03-15 06:44:04 +03:00
1 : ' ' ,
2 : ' ' ,
3 : ' ' ,
2023-02-23 08:56:55 +03:00
4 : {
2022-12-08 03:15:38 +03:00
style : {
marginLeft : '-15px' ,
} ,
2023-02-28 08:02:33 +03:00
label : 'highest' ,
2022-12-08 03:15:38 +03:00
} ,
2021-02-27 10:44:13 +03:00
} ;
export const ENCODER_PRESET_TOOLTIPS = {
2023-02-23 08:56:55 +03:00
0 : 'Lowest hardware usage - lowest quality video' ,
1 : 'Low hardware usage - low quality video' ,
2 : 'Medium hardware usage - average quality video' ,
3 : 'High hardware usage - high quality video' ,
4 : 'Highest hardware usage - higher quality video' ,
2021-02-27 10:44:13 +03:00
} ;
2021-11-04 00:09:47 +03:00
export const ENCODER_RECOMMENDATION_THRESHOLD = {
VIDEO_HEIGHT : 1080 ,
VIDEO_BITRATE : 3000 ,
HELP_TEXT :
'You have only set one video quality variant. If your server has the computing resources, consider adding another, lower-quality variant, so more people can view your content!' ,
} ;
2021-01-31 12:38:20 +03:00
export const DEFAULT_SOCIAL_HANDLE : SocialHandle = {
2021-01-24 07:16:01 +03:00
url : '' ,
platform : '' ,
2021-01-24 12:22:28 +03:00
} ;
export const OTHER_SOCIAL_HANDLE_OPTION = 'OTHER_SOCIAL_HANDLE_OPTION' ;
2021-02-01 10:40:39 +03:00
export const S3_TEXT_FIELDS_INFO = {
accessKey : {
fieldName : 'accessKey' ,
label : 'Access Key' ,
maxLength : 255 ,
placeholder : 'access key 123' ,
tip : '' ,
} ,
acl : {
fieldName : 'acl' ,
label : 'ACL' ,
maxLength : 255 ,
2021-02-02 02:20:26 +03:00
placeholder : '' ,
tip : 'Optional specific access control value to add to your content. Generally not required.' ,
2021-02-01 10:40:39 +03:00
} ,
bucket : {
fieldName : 'bucket' ,
label : 'Bucket' ,
maxLength : 255 ,
placeholder : 'bucket 123' ,
2021-02-02 02:20:26 +03:00
tip : 'Create a new bucket for each Owncast instance you may be running.' ,
2021-02-01 10:40:39 +03:00
} ,
endpoint : {
fieldName : 'endpoint' ,
label : 'Endpoint' ,
maxLength : 255 ,
2021-02-02 02:20:26 +03:00
placeholder : 'https://your.s3.provider.endpoint.com' ,
2021-05-23 09:27:51 +03:00
tip : 'The full URL (with "https://") endpoint from your storage provider.' ,
useTrim : true ,
type : TEXTFIELD_TYPE_URL ,
2021-05-23 09:28:21 +03:00
pattern : DEFAULT_TEXTFIELD_URL_PATTERN ,
2021-02-01 10:40:39 +03:00
} ,
region : {
fieldName : 'region' ,
label : 'Region' ,
maxLength : 255 ,
placeholder : 'region 123' ,
tip : '' ,
} ,
secret : {
fieldName : 'secret' ,
label : 'Secret key' ,
2023-06-01 01:18:51 +03:00
type : 'password' ,
2021-02-01 10:40:39 +03:00
maxLength : 255 ,
2021-02-02 02:20:26 +03:00
placeholder : 'your secret key' ,
2021-02-01 10:40:39 +03:00
tip : '' ,
} ,
2023-08-02 23:35:47 +03:00
pathPrefix : {
fieldName : 'pathPrefix' ,
label : 'Path prefix' ,
maxLength : 255 ,
placeholder : '/my/custom/path' ,
tip : 'Optionally prepend a custom path for the final URL' ,
} ,
2021-10-29 03:33:32 +03:00
forcePathStyle : {
fieldName : 'forcePathStyle' ,
label : 'Force path-style' ,
2021-10-29 03:34:07 +03:00
tip : "If your S3 provider doesn't support virtual-hosted-style URLs set this to ON (i.e. Oracle Cloud Object Storage)" ,
2021-10-29 03:33:32 +03:00
} ,
2021-02-01 10:40:39 +03:00
} ;
2022-03-23 18:57:09 +03:00
export const DISCORD_CONFIG_FIELDS = {
webhookUrl : {
fieldName : 'webhook' ,
label : 'Webhook URL' ,
maxLength : 255 ,
placeholder : 'https://discord.com/api/webhooks/837/jf38-6iNEv' ,
tip : 'The webhook assigned to your channel.' ,
type : TEXTFIELD_TYPE_URL ,
pattern : DEFAULT_TEXTFIELD_URL_PATTERN ,
useTrim : true ,
} ,
goLiveMessage : {
fieldName : 'goLiveMessage' ,
label : 'Go Live Text' ,
maxLength : 300 ,
tip : 'The text to send when you go live.' ,
placeholder : ` I've gone live! Come watch! ` ,
} ,
} ;
export const BROWSER_PUSH_CONFIG_FIELDS = {
goLiveMessage : {
fieldName : 'goLiveMessage' ,
label : 'Go Live Text' ,
maxLength : 200 ,
tip : 'The text to send when you go live.' ,
placeholder : ` I've gone live! Come watch! ` ,
} ,
} ;
2023-02-07 19:22:52 +03:00
export const PASSWORD_COMPLEXITY_RULES = [
{ min : 8 , message : '- minimum 8 characters' } ,
{ max : 192 , message : '- maximum 192 characters' } ,
{
pattern : /^(?=.*[a-z])/ ,
message : '- at least one lowercase letter' ,
} ,
{
pattern : /^(?=.*[A-Z])/ ,
message : '- at least one uppercase letter' ,
} ,
{
pattern : /\d/ ,
message : '- at least one digit' ,
} ,
{
pattern : /^(?=.*?[#?!@$%^&*-])/ ,
message : '- at least one special character: !@#$%^&*' ,
} ,
] ;
2023-02-07 19:54:51 +03:00
export const REGEX_PASSWORD = /^(?=.*?[A-Z])(?=.*?[a-z])(?=.*?[0-9])(?=.*?[!@#$%^&*]).{8,192}$/ ;