1
0
Fork 0
mirror of https://github.com/ossrs/srs.git synced 2025-03-09 15:49:59 +00:00

Config: Improve env config to support multi values. v7.0.2 (#4092)

1. add on_connect & on_close directives to conf/full.conf;
2. let http_hooks env overwrite support multi values; e.g.
SRS_VHOST_HTTP_HOOKS_ON_CONNECT="http://127.0.0.1/api/connect
http://localhost/api/connect"

related to
https://github.com/ossrs/srs/issues/1222#issuecomment-2170424703
Above comments said `http_hook` env may not works as expected, as I
found there are still has some issue in `http_hooks` env configuration,
but this PR may not target above problem.

---------

Co-authored-by: winlin <winlinvip@gmail.com>
This commit is contained in:
Jacob Su 2024-08-13 11:23:11 +08:00 committed by GitHub
parent 2e211f6abe
commit 16e569d823
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 47 additions and 14 deletions

View file

@ -3369,7 +3369,20 @@ VOID TEST(ConfigMainTest, CheckVhostConfig3)
if (true) {
MockSrsConfig conf;
HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{http_hooks{on_connect xxx;}}"));
EXPECT_TRUE(conf.get_vhost_on_connect("ossrs.net") != NULL);
SrsConfDirective* dir = conf.get_vhost_on_connect("ossrs.net");
ASSERT_TRUE(dir != NULL);
ASSERT_EQ((int)dir->args.size(), 1);
ASSERT_STREQ("xxx", dir->arg0().c_str());
}
if (true) {
MockSrsConfig conf;
HELPER_ASSERT_SUCCESS(conf.parse(_MIN_OK_CONF "vhost ossrs.net{http_hooks{on_connect xxx yyy;}}"));
SrsConfDirective* dir = conf.get_vhost_on_connect("ossrs.net");
ASSERT_TRUE(dir != NULL);
ASSERT_EQ((int)dir->args.size(), 2);
ASSERT_STREQ("xxx", dir->arg0().c_str());
ASSERT_STREQ("yyy", dir->arg1().c_str());
}
if (true) {
@ -5046,11 +5059,29 @@ VOID TEST(ConfigEnvTest, CheckEnvValuesHooks)
}
if (true) {
SrsSetEnvConfig(hooks, "SRS_VHOST_HTTP_HOOKS_ON_PUBLISH", "http://server/api/publish");
SrsConfDirective* dir = conf.get_vhost_on_publish("__defaultVhost__");
SrsSetEnvConfig(hooks, "SRS_VHOST_HTTP_HOOKS_ON_CONNECT", "http://server/api/connect https://server2/api/connect2");
SrsConfDirective* dir = conf.get_vhost_on_connect("__defaultVhost__");
ASSERT_TRUE(dir != NULL);
ASSERT_EQ((int)dir->args.size(), 2);
ASSERT_STREQ("http://server/api/connect", dir->arg0().c_str());
ASSERT_STREQ("https://server2/api/connect2", dir->arg1().c_str());
}
if (true) {
SrsSetEnvConfig(hooks, "SRS_VHOST_HTTP_HOOKS_ON_CLOSE", "http://server/api/close");
SrsConfDirective* dir = conf.get_vhost_on_close("__defaultVhost__");
ASSERT_TRUE(dir != NULL);
ASSERT_TRUE((int)dir->args.size() == 1);
ASSERT_STREQ("http://server/api/close", dir->arg0().c_str());
}
if (true) {
SrsSetEnvConfig(hooks, "SRS_VHOST_HTTP_HOOKS_ON_PUBLISH", "http://server/api/publish http://server/api/publish2");
SrsConfDirective* dir = conf.get_vhost_on_publish("__defaultVhost__");
ASSERT_TRUE(dir != NULL);
ASSERT_EQ((int)dir->args.size(), 2);
ASSERT_STREQ("http://server/api/publish", dir->arg0().c_str());
ASSERT_STREQ("http://server/api/publish2", dir->arg1().c_str());
}
if (true) {
@ -5101,4 +5132,3 @@ VOID TEST(ConfigEnvTest, CheckEnvValuesHooks)
ASSERT_STREQ("http://server/api/hls_notify", dir->arg0().c_str());
}
}