mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
Config: Support overwrote by environment variables. (#3197)
* Support overwrite by environment virable. * modify duplicated code * Config: Add stat for envrionment config. * Config: Fix utest fail. Co-authored-by: pengfei.ma <pengfei.ma@ctechm.com> Co-authored-by: winlin <winlin@vip.126.com>
This commit is contained in:
parent
dc20d5ddbc
commit
eb04f92176
8 changed files with 474 additions and 84 deletions
File diff suppressed because it is too large
Load diff
|
@ -27,6 +27,9 @@ using namespace std;
|
|||
// Whether we are in docker, defined in main module.
|
||||
extern bool _srs_in_docker;
|
||||
|
||||
// Whether setup config by environment variables.
|
||||
extern bool _srs_config_by_env;
|
||||
|
||||
// Check the feature by cond
|
||||
#define SRS_CHECK_FEATURE(cond, ss) if (cond) ss << "&" << #cond << "=1"
|
||||
#define SRS_CHECK_FEATURE2(cond, key, ss) if (cond) ss << "&" << key << "=1"
|
||||
|
@ -159,6 +162,7 @@ void srs_build_features(stringstream& ss)
|
|||
SRS_CHECK_FEATURE(exec, ss);
|
||||
SRS_CHECK_FEATURE(transcode, ss);
|
||||
SRS_CHECK_FEATURE(security, ss);
|
||||
SRS_CHECK_FEATURE2(_srs_config_by_env, "env", ss);
|
||||
|
||||
SRS_CHECK_FEATURE2(_srs_cls->enabled(), "cls", ss);
|
||||
SRS_CHECK_FEATURE3(_srs_cls->nn_logs(), "logs", _srs_cls->nn_logs(), ss);
|
||||
|
|
|
@ -1421,7 +1421,7 @@ string srs_string_dumps_hex(const char* str, int length, int limit, char seperat
|
|||
return string(buf, len);
|
||||
}
|
||||
|
||||
string srs_getenv(string key)
|
||||
string srs_getenv(const string& key)
|
||||
{
|
||||
string ekey = key;
|
||||
if (srs_string_starts_with(key, "$")) {
|
||||
|
@ -1432,6 +1432,15 @@ string srs_getenv(string key)
|
|||
return "";
|
||||
}
|
||||
|
||||
std::string::iterator it;
|
||||
for (it = ekey.begin(); it != ekey.end(); ++it) {
|
||||
if (*it >= 'a' && *it <= 'z') {
|
||||
*it += ('A' - 'a');
|
||||
} else if (*it == '.') {
|
||||
*it = '_';
|
||||
}
|
||||
}
|
||||
|
||||
char* value = ::getenv(ekey.c_str());
|
||||
if (value) {
|
||||
return value;
|
||||
|
|
|
@ -685,7 +685,7 @@ extern std::string srs_string_dumps_hex(const char* str, int length, int limit,
|
|||
|
||||
// Get ENV variable, which may starts with $.
|
||||
// srs_getenv("EIP") === srs_getenv("$EIP")
|
||||
extern std::string srs_getenv(std::string key);
|
||||
extern std::string srs_getenv(const std::string& key);
|
||||
|
||||
#endif
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue