mirror of
https://github.com/ossrs/srs.git
synced 2025-03-09 15:49:59 +00:00
support http api json, to PUT/POST, to 0.9.103
This commit is contained in:
parent
b60e8418c6
commit
d6355efe22
11 changed files with 358 additions and 43 deletions
|
@ -184,6 +184,14 @@ string SrsConfDirective::arg2()
|
|||
return "";
|
||||
}
|
||||
|
||||
void SrsConfDirective::set_arg0(string value)
|
||||
{
|
||||
if (args.size() > 0) {
|
||||
args[0] = value;
|
||||
}
|
||||
args.push_back(value);
|
||||
}
|
||||
|
||||
SrsConfDirective* SrsConfDirective::at(int index)
|
||||
{
|
||||
return directives.at(index);
|
||||
|
@ -529,38 +537,23 @@ int SrsConfig::reload()
|
|||
|
||||
// merge config: srs_log_tank
|
||||
if (!srs_directive_equals(root->get("srs_log_tank"), old_root->get("srs_log_tank"))) {
|
||||
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
|
||||
ISrsReloadHandler* subscribe = *it;
|
||||
if ((ret = subscribe->on_reload_log_tank()) != ERROR_SUCCESS) {
|
||||
srs_error("notify subscribes reload srs_log_tank failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
if ((ret = force_reload_log_tank()) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
srs_trace("reload srs_log_tank success.");
|
||||
}
|
||||
|
||||
// merge config: srs_log_level
|
||||
if (!srs_directive_equals(root->get("srs_log_level"), old_root->get("srs_log_level"))) {
|
||||
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
|
||||
ISrsReloadHandler* subscribe = *it;
|
||||
if ((ret = subscribe->on_reload_log_level()) != ERROR_SUCCESS) {
|
||||
srs_error("notify subscribes reload srs_log_level failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
if ((ret = force_reload_log_level()) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
srs_trace("reload srs_log_level success.");
|
||||
}
|
||||
|
||||
// merge config: srs_log_file
|
||||
if (!srs_directive_equals(root->get("srs_log_file"), old_root->get("srs_log_file"))) {
|
||||
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
|
||||
ISrsReloadHandler* subscribe = *it;
|
||||
if ((ret = subscribe->on_reload_log_file()) != ERROR_SUCCESS) {
|
||||
srs_error("notify subscribes reload srs_log_file failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
if ((ret = force_reload_log_file()) != ERROR_SUCCESS) {
|
||||
return ret;
|
||||
}
|
||||
srs_trace("reload srs_log_file success.");
|
||||
}
|
||||
|
||||
// merge config: pithy_print
|
||||
|
@ -593,6 +586,117 @@ int SrsConfig::reload()
|
|||
return ret;
|
||||
}
|
||||
|
||||
SrsConfDirective* SrsConfig::get_or_create(SrsConfDirective* node, string name)
|
||||
{
|
||||
srs_assert(node);
|
||||
|
||||
SrsConfDirective* conf = node->get(name);
|
||||
|
||||
if (!conf) {
|
||||
conf = new SrsConfDirective();
|
||||
conf->name = name;
|
||||
node->directives.push_back(conf);
|
||||
}
|
||||
|
||||
return conf;
|
||||
}
|
||||
|
||||
bool SrsConfig::set_log_file(string file)
|
||||
{
|
||||
if (file == get_log_file()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
SrsConfDirective* conf = get_or_create(root, "srs_log_file");
|
||||
srs_assert(conf);
|
||||
conf->set_arg0(file);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SrsConfig::set_log_tank(string tank)
|
||||
{
|
||||
if (get_log_tank_file() && tank != "console") {
|
||||
return false;
|
||||
}
|
||||
if (!get_log_tank_file() && tank == "console") {
|
||||
return false;
|
||||
}
|
||||
|
||||
SrsConfDirective* conf = get_or_create(root, "srs_log_tank");
|
||||
srs_assert(conf);
|
||||
conf->set_arg0(tank);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool SrsConfig::set_log_level(string level)
|
||||
{
|
||||
if (level == get_log_level()) {
|
||||
return false;
|
||||
}
|
||||
|
||||
SrsConfDirective* conf = get_or_create(root, "srs_log_level");
|
||||
srs_assert(conf);
|
||||
conf->set_arg0(level);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
int SrsConfig::force_reload_log_file()
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
std::vector<ISrsReloadHandler*>::iterator it;
|
||||
|
||||
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
|
||||
ISrsReloadHandler* subscribe = *it;
|
||||
if ((ret = subscribe->on_reload_log_file()) != ERROR_SUCCESS) {
|
||||
srs_error("notify subscribes reload srs_log_file failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
srs_trace("reload srs_log_file success.");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int SrsConfig::force_reload_log_tank()
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
std::vector<ISrsReloadHandler*>::iterator it;
|
||||
|
||||
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
|
||||
ISrsReloadHandler* subscribe = *it;
|
||||
if ((ret = subscribe->on_reload_log_tank()) != ERROR_SUCCESS) {
|
||||
srs_error("notify subscribes reload srs_log_tank failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
srs_trace("reload srs_log_tank success.");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int SrsConfig::force_reload_log_level()
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
||||
std::vector<ISrsReloadHandler*>::iterator it;
|
||||
|
||||
for (it = subscribes.begin(); it != subscribes.end(); ++it) {
|
||||
ISrsReloadHandler* subscribe = *it;
|
||||
if ((ret = subscribe->on_reload_log_level()) != ERROR_SUCCESS) {
|
||||
srs_error("notify subscribes reload srs_log_level failed. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
}
|
||||
srs_trace("reload srs_log_level success.");
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
int SrsConfig::reload_http_api(SrsConfDirective* old_root)
|
||||
{
|
||||
int ret = ERROR_SUCCESS;
|
||||
|
@ -1171,13 +1275,13 @@ int SrsConfig::parse_file(const char* filename)
|
|||
// TODO: check pid.
|
||||
|
||||
// check log
|
||||
std::string log_filename = this->get_srs_log_file();
|
||||
if (get_srs_log_tank_file() && log_filename.empty()) {
|
||||
std::string log_filename = this->get_log_file();
|
||||
if (get_log_tank_file() && log_filename.empty()) {
|
||||
ret = ERROR_SYSTEM_CONFIG_INVALID;
|
||||
srs_error("must specifies the file to write log to. ret=%d", ret);
|
||||
return ret;
|
||||
}
|
||||
if (get_srs_log_tank_file()) {
|
||||
if (get_log_tank_file()) {
|
||||
srs_trace("write log to file %s", log_filename.c_str());
|
||||
srs_trace("you can: tailf %s", log_filename.c_str());
|
||||
srs_trace("@see: %s", SRS_WIKI_URL_LOG);
|
||||
|
@ -2293,7 +2397,7 @@ string SrsConfig::get_ingest_input_url(SrsConfDirective* ingest)
|
|||
return conf->arg0();
|
||||
}
|
||||
|
||||
string SrsConfig::get_srs_log_file()
|
||||
string SrsConfig::get_log_file()
|
||||
{
|
||||
srs_assert(root);
|
||||
|
||||
|
@ -2317,7 +2421,7 @@ string SrsConfig::get_ffmpeg_log_dir()
|
|||
return conf->arg0();
|
||||
}
|
||||
|
||||
string SrsConfig::get_srs_log_level()
|
||||
string SrsConfig::get_log_level()
|
||||
{
|
||||
srs_assert(root);
|
||||
|
||||
|
@ -2329,7 +2433,7 @@ string SrsConfig::get_srs_log_level()
|
|||
return conf->arg0();
|
||||
}
|
||||
|
||||
bool SrsConfig::get_srs_log_tank_file()
|
||||
bool SrsConfig::get_log_tank_file()
|
||||
{
|
||||
srs_assert(root);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue