From bc7697ad571929e3164316e091481d9667d2c974 Mon Sep 17 00:00:00 2001 From: Jan Stabenow Date: Thu, 14 Jul 2022 22:55:46 +0200 Subject: [PATCH] Add srt passphrase validation + fix srt.token injection --- src/misc/Password.js | 6 +++++- src/theme/components/formHelperText.js | 11 +++++++++++ src/theme/index.js | 2 ++ src/utils/restreamer.js | 2 +- src/views/Settings.js | 7 ++++++- 5 files changed, 25 insertions(+), 3 deletions(-) create mode 100644 src/theme/components/formHelperText.js diff --git a/src/misc/Password.js b/src/misc/Password.js index daf254f..ac37ac7 100644 --- a/src/misc/Password.js +++ b/src/misc/Password.js @@ -53,6 +53,8 @@ export default function Password(props) { endAdornment={adornment} label={props.label} autoComplete={props.autoComplete} + inputProps={props.inputProps} + error={props.error} /> {props.helperText && {props.helperText}} @@ -67,6 +69,8 @@ Password.defaultProps = { autoComplete: 'current-password', env: false, show: false, - helperText: null, + helperText: false, + inputProps: false, + error: false, onChange: function (value) {}, }; diff --git a/src/theme/components/formHelperText.js b/src/theme/components/formHelperText.js new file mode 100644 index 0000000..5c78dac --- /dev/null +++ b/src/theme/components/formHelperText.js @@ -0,0 +1,11 @@ +/* eslint-disable import/no-anonymous-default-export */ +import base from '../base'; + +export default { + styleOverrides: { + root: { + color: base.palette.error.main, + marginLeft: 0, + }, + }, +}; diff --git a/src/theme/index.js b/src/theme/index.js index 68b9f21..75dcb6b 100644 --- a/src/theme/index.js +++ b/src/theme/index.js @@ -16,6 +16,7 @@ import dialog from './components/dialog'; import divider from './components/divider'; import fab from './components/fab'; import formControlLabel from './components/formControlLabel'; +import formHelperText from './components/formHelperText'; import formLabel from './components/formLabel'; import iconButton from './components/iconButton'; import inputLabel from './components/inputLabel'; @@ -61,6 +62,7 @@ const theme = createTheme({ MuiDivider: { ...divider }, MuiFab: { ...fab }, MuiFormControlLabel: { ...formControlLabel }, + MuiFormHelperText: { ...formHelperText }, MuiFormLabel: { ...formLabel }, MuiIconButton: { ...iconButton }, MuiInputLabel: { ...inputLabel }, diff --git a/src/utils/restreamer.js b/src/utils/restreamer.js index 3438a73..65a9140 100644 --- a/src/utils/restreamer.js +++ b/src/utils/restreamer.js @@ -981,7 +981,7 @@ class Restreamer { address = `srt://${host}${port}/?mode=caller&transtype=live&streamid=#!:m=request,r=${channelId}` + - (cfg.token.length !== 0 ? `,token=${cfg.srt.token}` : '') + + (cfg.token.length !== 0 ? `,token=${cfg.token}` : '') + (cfg.passphrase.length !== 0 ? `&passphrase=${cfg.passphrase}` : ''); } else if (what && what === 'snapshot+memfs') { // snapshot+memfs diff --git a/src/views/Settings.js b/src/views/Settings.js index b141a25..caebfd1 100644 --- a/src/views/Settings.js +++ b/src/views/Settings.js @@ -1491,7 +1491,9 @@ export default function Settings(props) { Login/JWT authorization} checked={config.api.auth.enable} - disabled={env('api.auth.enable')} + // prob: interface enforces auth. + // disabled={env('api.auth.enable')} + disabled onChange={handleChange('api.auth.enable')} />{' '} {env('api.auth.enable') && } @@ -1970,6 +1972,9 @@ export default function Settings(props) { disabled={env('srt.passphrase') || !config.srt.enable} value={config.srt.passphrase} onChange={handleChange('srt.passphrase')} + inputProps={{ maxLength: 79 }} + error={config.srt.passphrase && config.srt.passphrase.length < 10} + helperText={config.srt.passphrase && config.srt.passphrase.length < 10 ? (Passphrase must be between 10 and 79 characters long) : false} />