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}
/>