Prechádzať zdrojové kódy

rtmp-services: Add auth settings for custom server

Username and Password prompts have been added to the custom RTMP server UI
and saved in the config file alongside server and key.
Jess Mayo 10 rokov pred
rodič
commit
65d7f3b63f

+ 3 - 0
plugins/rtmp-services/data/locale/en-US.ini

@@ -3,3 +3,6 @@ CustomStreamingServer="Custom Streaming Server"
 Service="Service"
 Service="Service"
 Server="Server"
 Server="Server"
 StreamKey="Stream key"
 StreamKey="Stream key"
+UseAuth="Use authentication"
+Username="Username"
+Password="Password"

+ 45 - 1
plugins/rtmp-services/rtmp-custom.c

@@ -2,6 +2,8 @@
 
 
 struct rtmp_custom {
 struct rtmp_custom {
 	char *server, *key;
 	char *server, *key;
+	bool use_auth;
+	char *username, *password;
 };
 };
 
 
 static const char *rtmp_custom_name(void)
 static const char *rtmp_custom_name(void)
@@ -18,6 +20,9 @@ static void rtmp_custom_update(void *data, obs_data_t *settings)
 
 
 	service->server = bstrdup(obs_data_get_string(settings, "server"));
 	service->server = bstrdup(obs_data_get_string(settings, "server"));
 	service->key    = bstrdup(obs_data_get_string(settings, "key"));
 	service->key    = bstrdup(obs_data_get_string(settings, "key"));
+	service->use_auth = obs_data_get_bool(settings, "use_auth");
+	service->username = bstrdup(obs_data_get_string(settings, "username"));
+	service->password = bstrdup(obs_data_get_string(settings, "password"));
 }
 }
 
 
 static void rtmp_custom_destroy(void *data)
 static void rtmp_custom_destroy(void *data)
@@ -26,6 +31,8 @@ static void rtmp_custom_destroy(void *data)
 
 
 	bfree(service->server);
 	bfree(service->server);
 	bfree(service->key);
 	bfree(service->key);
+	bfree(service->username);
+	bfree(service->password);
 	bfree(service);
 	bfree(service);
 }
 }
 
 
@@ -38,16 +45,35 @@ static void *rtmp_custom_create(obs_data_t *settings, obs_service_t *service)
 	return data;
 	return data;
 }
 }
 
 
+static bool use_auth_modified(obs_properties_t *ppts, obs_property_t *p,
+	obs_data_t *settings)
+{
+	bool use_auth = obs_data_get_bool(settings, "use_auth");
+	p = obs_properties_get(ppts, "username");
+	obs_property_set_visible(p, use_auth);
+	p = obs_properties_get(ppts, "password");
+	obs_property_set_visible(p, use_auth);
+	return true;
+}
+
 static obs_properties_t *rtmp_custom_properties(void *unused)
 static obs_properties_t *rtmp_custom_properties(void *unused)
 {
 {
 	UNUSED_PARAMETER(unused);
 	UNUSED_PARAMETER(unused);
 
 
 	obs_properties_t *ppts = obs_properties_create();
 	obs_properties_t *ppts = obs_properties_create();
+	obs_property_t *p;
 
 
 	obs_properties_add_text(ppts, "server", "URL", OBS_TEXT_DEFAULT);
 	obs_properties_add_text(ppts, "server", "URL", OBS_TEXT_DEFAULT);
 
 
 	obs_properties_add_text(ppts, "key", obs_module_text("StreamKey"),
 	obs_properties_add_text(ppts, "key", obs_module_text("StreamKey"),
 			OBS_TEXT_PASSWORD);
 			OBS_TEXT_PASSWORD);
+
+	p = obs_properties_add_bool(ppts, "use_auth", obs_module_text("UseAuth"));
+	obs_properties_add_text(ppts, "username", obs_module_text("Username"),
+			OBS_TEXT_DEFAULT);
+	obs_properties_add_text(ppts, "password", obs_module_text("Password"),
+			OBS_TEXT_PASSWORD);
+	obs_property_set_modified_callback(p, use_auth_modified);
 	return ppts;
 	return ppts;
 }
 }
 
 
@@ -63,6 +89,22 @@ static const char *rtmp_custom_key(void *data)
 	return service->key;
 	return service->key;
 }
 }
 
 
+static const char *rtmp_custom_username(void *data)
+{
+	struct rtmp_custom *service = data;
+	if (!service->use_auth)
+		return NULL;
+	return service->username;
+}
+
+static const char *rtmp_custom_password(void *data)
+{
+	struct rtmp_custom *service = data;
+	if (!service->use_auth)
+		return NULL;
+	return service->password;
+}
+
 struct obs_service_info rtmp_custom_service = {
 struct obs_service_info rtmp_custom_service = {
 	.id             = "rtmp_custom",
 	.id             = "rtmp_custom",
 	.get_name       = rtmp_custom_name,
 	.get_name       = rtmp_custom_name,
@@ -71,5 +113,7 @@ struct obs_service_info rtmp_custom_service = {
 	.update         = rtmp_custom_update,
 	.update         = rtmp_custom_update,
 	.get_properties = rtmp_custom_properties,
 	.get_properties = rtmp_custom_properties,
 	.get_url        = rtmp_custom_url,
 	.get_url        = rtmp_custom_url,
-	.get_key        = rtmp_custom_key
+	.get_key        = rtmp_custom_key,
+	.get_username   = rtmp_custom_username,
+	.get_password   = rtmp_custom_password
 };
 };