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.
This commit is contained in:
Jess Mayo 2015-07-08 11:26:32 +09:00 committed by jp9000
parent 132e58fb31
commit 65d7f3b63f
2 changed files with 48 additions and 1 deletions

View File

@ -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"

View File

@ -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
}; };