mirror of
https://github.com/obsproject/obs-studio.git
synced 2026-09-24 23:31:36 +08:00
Merge pull request #447 from chaironeko/master
Closes jp9000/obs-studio#447
This commit is contained in:
@@ -23,6 +23,12 @@
|
||||
* http://www.gnu.org/copyleft/lgpl.html
|
||||
*/
|
||||
|
||||
#ifndef NO_AUTH
|
||||
#ifndef CRYPTO
|
||||
#define USE_ONLY_MD5
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#include "rtmp_sys.h"
|
||||
#include "log.h"
|
||||
|
||||
@@ -2614,7 +2620,7 @@ PublisherAuth(RTMP *r, AVal *description)
|
||||
RTMP_Log(RTMP_LOGDEBUG, "%s, new app: %.*s tcUrl: %.*s playpath: %s", __FUNCTION__,
|
||||
r->Link.app.av_len, r->Link.app.av_val,
|
||||
r->Link.tcUrl.av_len, r->Link.tcUrl.av_val,
|
||||
r->Link.playpath.av_val);
|
||||
r->Link.streams[r->Link.curStreamIdx].playpath.av_val);
|
||||
}
|
||||
else if (strstr(description->av_val, av_authmod_llnw.av_val) != NULL)
|
||||
{
|
||||
@@ -2817,7 +2823,7 @@ PublisherAuth(RTMP *r, AVal *description)
|
||||
RTMP_Log(RTMP_LOGDEBUG, "%s, new app: %.*s tcUrl: %.*s playpath: %s", __FUNCTION__,
|
||||
r->Link.app.av_len, r->Link.app.av_val,
|
||||
r->Link.tcUrl.av_len, r->Link.tcUrl.av_val,
|
||||
r->Link.playpath.av_val);
|
||||
r->Link.streams[r->Link.curStreamIdx].playpath.av_val);
|
||||
}
|
||||
else
|
||||
{
|
||||
@@ -4215,11 +4221,15 @@ RTMP_Close(RTMP *r)
|
||||
}
|
||||
|
||||
#if defined(CRYPTO) || defined(USE_ONLY_MD5)
|
||||
if (!(r->Link.protocol & RTMP_FEATURE_WRITE) || (r->Link.pFlags & RTMP_PUB_CLEAN))
|
||||
for (int idx = 0; idx < r->Link.nStreams; idx++)
|
||||
{
|
||||
free(r->Link.playpath0.av_val);
|
||||
r->Link.playpath0.av_val = NULL;
|
||||
free(r->Link.streams[idx].playpath.av_val);
|
||||
r->Link.streams[idx].playpath.av_val = NULL;
|
||||
}
|
||||
|
||||
r->Link.curStreamIdx = 0;
|
||||
r->Link.nStreams = 0;
|
||||
|
||||
if ((r->Link.protocol & RTMP_FEATURE_WRITE) &&
|
||||
(r->Link.pFlags & RTMP_PUB_CLEAN) &&
|
||||
(r->Link.pFlags & RTMP_PUB_ALLOC))
|
||||
|
||||
@@ -3,3 +3,6 @@ CustomStreamingServer="Custom Streaming Server"
|
||||
Service="Service"
|
||||
Server="Server"
|
||||
StreamKey="Stream key"
|
||||
UseAuth="Use authentication"
|
||||
Username="Username"
|
||||
Password="Password"
|
||||
|
||||
@@ -2,6 +2,8 @@
|
||||
|
||||
struct rtmp_custom {
|
||||
char *server, *key;
|
||||
bool use_auth;
|
||||
char *username, *password;
|
||||
};
|
||||
|
||||
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->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)
|
||||
@@ -26,6 +31,8 @@ static void rtmp_custom_destroy(void *data)
|
||||
|
||||
bfree(service->server);
|
||||
bfree(service->key);
|
||||
bfree(service->username);
|
||||
bfree(service->password);
|
||||
bfree(service);
|
||||
}
|
||||
|
||||
@@ -38,16 +45,35 @@ static void *rtmp_custom_create(obs_data_t *settings, obs_service_t *service)
|
||||
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)
|
||||
{
|
||||
UNUSED_PARAMETER(unused);
|
||||
|
||||
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, "key", obs_module_text("StreamKey"),
|
||||
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;
|
||||
}
|
||||
|
||||
@@ -63,6 +89,22 @@ static const char *rtmp_custom_key(void *data)
|
||||
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 = {
|
||||
.id = "rtmp_custom",
|
||||
.get_name = rtmp_custom_name,
|
||||
@@ -71,5 +113,7 @@ struct obs_service_info rtmp_custom_service = {
|
||||
.update = rtmp_custom_update,
|
||||
.get_properties = rtmp_custom_properties,
|
||||
.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
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user