diff --git a/UI/data/locale/en-US.ini b/UI/data/locale/en-US.ini
index 1cb9f755a..465201f2a 100644
--- a/UI/data/locale/en-US.ini
+++ b/UI/data/locale/en-US.ini
@@ -620,6 +620,9 @@ Basic.Settings.General.MultiviewLayout.Horizontal.Extended.Top="Horizontal, Top
# basic mode 'stream' settings
Basic.Settings.Stream="Stream"
Basic.Settings.Stream.StreamType="Stream Type"
+Basic.Settings.Stream.Custom.UseAuthentication="Use authentication"
+Basic.Settings.Stream.Custom.Username="Username"
+Basic.Settings.Stream.Custom.Password="Password"
# basic mode 'output' settings
Basic.Settings.Output="Output"
diff --git a/UI/forms/OBSBasicSettings.ui b/UI/forms/OBSBasicSettings.ui
index f123f0e37..d4d8a4e20 100644
--- a/UI/forms/OBSBasicSettings.ui
+++ b/UI/forms/OBSBasicSettings.ui
@@ -146,7 +146,7 @@
0
0
801
- 836
+ 931
@@ -1052,6 +1052,68 @@
+ -
+
+
+ Basic.Settings.Stream.Custom.UseAuthentication
+
+
+
+ -
+
+
+ -
+
+
+ Basic.Settings.Stream.Custom.Username
+
+
+ authUsername
+
+
+
+ -
+
+
+ Basic.Settings.Stream.Custom.Password
+
+
+ authPw
+
+
+
+ -
+
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
+ 0
+
+
-
+
+
+ QLineEdit::Password
+
+
+
+ -
+
+
+ Show
+
+
+
+
+
+
@@ -3783,8 +3845,8 @@
0
0
- 98
- 28
+ 63
+ 16
diff --git a/UI/window-basic-settings-stream.cpp b/UI/window-basic-settings-stream.cpp
index d5bd66b2c..c0ed03992 100644
--- a/UI/window-basic-settings-stream.cpp
+++ b/UI/window-basic-settings-stream.cpp
@@ -75,6 +75,13 @@ void OBSBasicSettings::LoadStream1Settings()
if (strcmp(type, "rtmp_custom") == 0) {
ui->service->setCurrentIndex(0);
ui->customServer->setText(server);
+
+ bool use_auth = obs_data_get_bool(settings, "use_auth");
+ const char *username = obs_data_get_string(settings, "username");
+ const char *password = obs_data_get_string(settings, "password");
+ ui->authUsername->setText(QT_UTF8(username));
+ ui->authPw->setText(QT_UTF8(password));
+ ui->useAuth->setChecked(use_auth);
} else {
int idx = ui->service->findText(service);
if (idx == -1) {
@@ -134,6 +141,14 @@ void OBSBasicSettings::SaveStream1Settings()
} else {
obs_data_set_string(settings, "server",
QT_TO_UTF8(ui->customServer->text()));
+ obs_data_set_bool(settings, "use_auth",
+ ui->useAuth->isChecked());
+ if (ui->useAuth->isChecked()) {
+ obs_data_set_string(settings, "username",
+ QT_TO_UTF8(ui->authUsername->text()));
+ obs_data_set_string(settings, "password",
+ QT_TO_UTF8(ui->authPw->text()));
+ }
}
obs_data_set_string(settings, "key", QT_TO_UTF8(ui->key->text()));
@@ -267,6 +282,12 @@ void OBSBasicSettings::on_service_currentIndexChanged(int)
ui->connectAccount2->setVisible(false);
#endif
+ ui->useAuth->setVisible(custom);
+ ui->authUsernameLabel->setVisible(custom);
+ ui->authUsername->setVisible(custom);
+ ui->authPwLabel->setVisible(custom);
+ ui->authPwWidget->setVisible(custom);
+
if (custom) {
ui->streamkeyPageLayout->insertRow(1, ui->serverLabel,
ui->serverStackedWidget);
@@ -274,6 +295,7 @@ void OBSBasicSettings::on_service_currentIndexChanged(int)
ui->serverStackedWidget->setCurrentIndex(1);
ui->serverStackedWidget->setVisible(true);
ui->serverLabel->setVisible(true);
+ on_useAuth_toggled();
} else {
ui->serverStackedWidget->setCurrentIndex(0);
}
@@ -337,6 +359,17 @@ void OBSBasicSettings::on_show_clicked()
}
}
+void OBSBasicSettings::on_authPwShow_clicked()
+{
+ if (ui->authPw->echoMode() == QLineEdit::Password) {
+ ui->authPw->setEchoMode(QLineEdit::Normal);
+ ui->authPwShow->setText(QTStr("Hide"));
+ } else {
+ ui->authPw->setEchoMode(QLineEdit::Password);
+ ui->authPwShow->setText(QTStr("Show"));
+ }
+}
+
OBSService OBSBasicSettings::SpawnTempService()
{
bool custom = IsCustomService();
@@ -447,3 +480,16 @@ void OBSBasicSettings::on_useStreamKey_clicked()
{
ui->streamStackWidget->setCurrentIndex((int)Section::StreamKey);
}
+
+void OBSBasicSettings::on_useAuth_toggled()
+{
+ if (!IsCustomService())
+ return;
+
+ bool use_auth = ui->useAuth->isChecked();
+
+ ui->authUsernameLabel->setVisible(use_auth);
+ ui->authUsername->setVisible(use_auth);
+ ui->authPwLabel->setVisible(use_auth);
+ ui->authPwWidget->setVisible(use_auth);
+}
diff --git a/UI/window-basic-settings.cpp b/UI/window-basic-settings.cpp
index ed921efcb..290011149 100644
--- a/UI/window-basic-settings.cpp
+++ b/UI/window-basic-settings.cpp
@@ -331,6 +331,9 @@ OBSBasicSettings::OBSBasicSettings(QWidget *parent)
HookWidget(ui->server, COMBO_CHANGED, STREAM1_CHANGED);
HookWidget(ui->customServer, EDIT_CHANGED, STREAM1_CHANGED);
HookWidget(ui->key, EDIT_CHANGED, STREAM1_CHANGED);
+ HookWidget(ui->useAuth, CHECK_CHANGED, STREAM1_CHANGED);
+ HookWidget(ui->authUsername, EDIT_CHANGED, STREAM1_CHANGED);
+ HookWidget(ui->authPw, EDIT_CHANGED, STREAM1_CHANGED);
HookWidget(ui->outputMode, COMBO_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleOutputPath, EDIT_CHANGED, OUTPUTS_CHANGED);
HookWidget(ui->simpleNoSpace, CHECK_CHANGED, OUTPUTS_CHANGED);
diff --git a/UI/window-basic-settings.hpp b/UI/window-basic-settings.hpp
index e3c7ccd56..53d2f4ba1 100644
--- a/UI/window-basic-settings.hpp
+++ b/UI/window-basic-settings.hpp
@@ -222,9 +222,11 @@ private slots:
void UpdateServerList();
void UpdateKeyLink();
void on_show_clicked();
+ void on_authPwShow_clicked();
void on_connectAccount_clicked();
void on_disconnectAccount_clicked();
void on_useStreamKey_clicked();
+ void on_useAuth_toggled();
private:
/* output */