正在显示
5 个修改的文件
包含
22 行增加
和
254 行删除
@@ -539,23 +539,38 @@ int SrsConfig::reload() | @@ -539,23 +539,38 @@ int SrsConfig::reload() | ||
539 | 539 | ||
540 | // merge config: srs_log_tank | 540 | // merge config: srs_log_tank |
541 | if (!srs_directive_equals(root->get("srs_log_tank"), old_root->get("srs_log_tank"))) { | 541 | if (!srs_directive_equals(root->get("srs_log_tank"), old_root->get("srs_log_tank"))) { |
542 | - if ((ret = force_reload_log_tank()) != ERROR_SUCCESS) { | ||
543 | - return ret; | 542 | + for (it = subscribes.begin(); it != subscribes.end(); ++it) { |
543 | + ISrsReloadHandler* subscribe = *it; | ||
544 | + if ((ret = subscribe->on_reload_log_tank()) != ERROR_SUCCESS) { | ||
545 | + srs_error("notify subscribes reload srs_log_tank failed. ret=%d", ret); | ||
546 | + return ret; | ||
547 | + } | ||
544 | } | 548 | } |
549 | + srs_trace("reload srs_log_tank success."); | ||
545 | } | 550 | } |
546 | 551 | ||
547 | // merge config: srs_log_level | 552 | // merge config: srs_log_level |
548 | if (!srs_directive_equals(root->get("srs_log_level"), old_root->get("srs_log_level"))) { | 553 | if (!srs_directive_equals(root->get("srs_log_level"), old_root->get("srs_log_level"))) { |
549 | - if ((ret = force_reload_log_level()) != ERROR_SUCCESS) { | ||
550 | - return ret; | 554 | + for (it = subscribes.begin(); it != subscribes.end(); ++it) { |
555 | + ISrsReloadHandler* subscribe = *it; | ||
556 | + if ((ret = subscribe->on_reload_log_level()) != ERROR_SUCCESS) { | ||
557 | + srs_error("notify subscribes reload srs_log_level failed. ret=%d", ret); | ||
558 | + return ret; | ||
559 | + } | ||
551 | } | 560 | } |
561 | + srs_trace("reload srs_log_level success."); | ||
552 | } | 562 | } |
553 | 563 | ||
554 | // merge config: srs_log_file | 564 | // merge config: srs_log_file |
555 | if (!srs_directive_equals(root->get("srs_log_file"), old_root->get("srs_log_file"))) { | 565 | if (!srs_directive_equals(root->get("srs_log_file"), old_root->get("srs_log_file"))) { |
556 | - if ((ret = force_reload_log_file()) != ERROR_SUCCESS) { | ||
557 | - return ret; | 566 | + for (it = subscribes.begin(); it != subscribes.end(); ++it) { |
567 | + ISrsReloadHandler* subscribe = *it; | ||
568 | + if ((ret = subscribe->on_reload_log_file()) != ERROR_SUCCESS) { | ||
569 | + srs_error("notify subscribes reload srs_log_file failed. ret=%d", ret); | ||
570 | + return ret; | ||
571 | + } | ||
558 | } | 572 | } |
573 | + srs_trace("reload srs_log_file success."); | ||
559 | } | 574 | } |
560 | 575 | ||
561 | // merge config: pithy_print | 576 | // merge config: pithy_print |
@@ -603,102 +618,6 @@ SrsConfDirective* SrsConfig::get_or_create(SrsConfDirective* node, string name) | @@ -603,102 +618,6 @@ SrsConfDirective* SrsConfig::get_or_create(SrsConfDirective* node, string name) | ||
603 | return conf; | 618 | return conf; |
604 | } | 619 | } |
605 | 620 | ||
606 | -bool SrsConfig::set_log_file(string file) | ||
607 | -{ | ||
608 | - if (file == get_log_file()) { | ||
609 | - return false; | ||
610 | - } | ||
611 | - | ||
612 | - SrsConfDirective* conf = get_or_create(root, "srs_log_file"); | ||
613 | - srs_assert(conf); | ||
614 | - conf->set_arg0(file); | ||
615 | - | ||
616 | - return true; | ||
617 | -} | ||
618 | - | ||
619 | -bool SrsConfig::set_log_tank(string tank) | ||
620 | -{ | ||
621 | - if (get_log_tank_file() && tank != "console") { | ||
622 | - return false; | ||
623 | - } | ||
624 | - if (!get_log_tank_file() && tank == "console") { | ||
625 | - return false; | ||
626 | - } | ||
627 | - | ||
628 | - SrsConfDirective* conf = get_or_create(root, "srs_log_tank"); | ||
629 | - srs_assert(conf); | ||
630 | - conf->set_arg0(tank); | ||
631 | - | ||
632 | - return true; | ||
633 | -} | ||
634 | - | ||
635 | -bool SrsConfig::set_log_level(string level) | ||
636 | -{ | ||
637 | - if (level == get_log_level()) { | ||
638 | - return false; | ||
639 | - } | ||
640 | - | ||
641 | - SrsConfDirective* conf = get_or_create(root, "srs_log_level"); | ||
642 | - srs_assert(conf); | ||
643 | - conf->set_arg0(level); | ||
644 | - | ||
645 | - return true; | ||
646 | -} | ||
647 | - | ||
648 | -int SrsConfig::force_reload_log_file() | ||
649 | -{ | ||
650 | - int ret = ERROR_SUCCESS; | ||
651 | - | ||
652 | - std::vector<ISrsReloadHandler*>::iterator it; | ||
653 | - | ||
654 | - for (it = subscribes.begin(); it != subscribes.end(); ++it) { | ||
655 | - ISrsReloadHandler* subscribe = *it; | ||
656 | - if ((ret = subscribe->on_reload_log_file()) != ERROR_SUCCESS) { | ||
657 | - srs_error("notify subscribes reload srs_log_file failed. ret=%d", ret); | ||
658 | - return ret; | ||
659 | - } | ||
660 | - } | ||
661 | - srs_trace("reload srs_log_file success."); | ||
662 | - | ||
663 | - return ret; | ||
664 | -} | ||
665 | - | ||
666 | -int SrsConfig::force_reload_log_tank() | ||
667 | -{ | ||
668 | - int ret = ERROR_SUCCESS; | ||
669 | - | ||
670 | - std::vector<ISrsReloadHandler*>::iterator it; | ||
671 | - | ||
672 | - for (it = subscribes.begin(); it != subscribes.end(); ++it) { | ||
673 | - ISrsReloadHandler* subscribe = *it; | ||
674 | - if ((ret = subscribe->on_reload_log_tank()) != ERROR_SUCCESS) { | ||
675 | - srs_error("notify subscribes reload srs_log_tank failed. ret=%d", ret); | ||
676 | - return ret; | ||
677 | - } | ||
678 | - } | ||
679 | - srs_trace("reload srs_log_tank success."); | ||
680 | - | ||
681 | - return ret; | ||
682 | -} | ||
683 | - | ||
684 | -int SrsConfig::force_reload_log_level() | ||
685 | -{ | ||
686 | - int ret = ERROR_SUCCESS; | ||
687 | - | ||
688 | - std::vector<ISrsReloadHandler*>::iterator it; | ||
689 | - | ||
690 | - for (it = subscribes.begin(); it != subscribes.end(); ++it) { | ||
691 | - ISrsReloadHandler* subscribe = *it; | ||
692 | - if ((ret = subscribe->on_reload_log_level()) != ERROR_SUCCESS) { | ||
693 | - srs_error("notify subscribes reload srs_log_level failed. ret=%d", ret); | ||
694 | - return ret; | ||
695 | - } | ||
696 | - } | ||
697 | - srs_trace("reload srs_log_level success."); | ||
698 | - | ||
699 | - return ret; | ||
700 | -} | ||
701 | - | ||
702 | int SrsConfig::reload_http_api(SrsConfDirective* old_root) | 621 | int SrsConfig::reload_http_api(SrsConfDirective* old_root) |
703 | { | 622 | { |
704 | int ret = ERROR_SUCCESS; | 623 | int ret = ERROR_SUCCESS; |
@@ -143,18 +143,6 @@ public: | @@ -143,18 +143,6 @@ public: | ||
143 | virtual int reload(); | 143 | virtual int reload(); |
144 | private: | 144 | private: |
145 | virtual SrsConfDirective* get_or_create(SrsConfDirective* node, std::string name); | 145 | virtual SrsConfDirective* get_or_create(SrsConfDirective* node, std::string name); |
146 | -public: | ||
147 | - /** | ||
148 | - * dynamic set the config, for instance, for http api to set, | ||
149 | - * @return ture if config changed and need to reload. | ||
150 | - */ | ||
151 | - virtual bool set_log_file(std::string file); | ||
152 | - virtual bool set_log_tank(std::string tank); | ||
153 | - virtual bool set_log_level(std::string level); | ||
154 | -public: | ||
155 | - virtual int force_reload_log_file(); | ||
156 | - virtual int force_reload_log_tank(); | ||
157 | - virtual int force_reload_log_level(); | ||
158 | private: | 146 | private: |
159 | virtual int reload_http_api(SrsConfDirective* old_root); | 147 | virtual int reload_http_api(SrsConfDirective* old_root); |
160 | virtual int reload_http_stream(SrsConfDirective* old_root); | 148 | virtual int reload_http_stream(SrsConfDirective* old_root); |
@@ -123,7 +123,6 @@ SrsApiV1::SrsApiV1() | @@ -123,7 +123,6 @@ SrsApiV1::SrsApiV1() | ||
123 | handlers.push_back(new SrsApiSystemProcStats()); | 123 | handlers.push_back(new SrsApiSystemProcStats()); |
124 | handlers.push_back(new SrsApiMemInfos()); | 124 | handlers.push_back(new SrsApiMemInfos()); |
125 | handlers.push_back(new SrsApiAuthors()); | 125 | handlers.push_back(new SrsApiAuthors()); |
126 | - handlers.push_back(new SrsApiConfigs()); | ||
127 | handlers.push_back(new SrsApiRequests()); | 126 | handlers.push_back(new SrsApiRequests()); |
128 | } | 127 | } |
129 | 128 | ||
@@ -149,7 +148,6 @@ int SrsApiV1::do_process_request(SrsSocket* skt, SrsHttpMessage* req) | @@ -149,7 +148,6 @@ int SrsApiV1::do_process_request(SrsSocket* skt, SrsHttpMessage* req) | ||
149 | << JFIELD_STR("self_proc_stats", "the self process stats") << JFIELD_CONT | 148 | << JFIELD_STR("self_proc_stats", "the self process stats") << JFIELD_CONT |
150 | << JFIELD_STR("system_proc_stats", "the system process stats") << JFIELD_CONT | 149 | << JFIELD_STR("system_proc_stats", "the system process stats") << JFIELD_CONT |
151 | << JFIELD_STR("meminfos", "the meminfo of system") << JFIELD_CONT | 150 | << JFIELD_STR("meminfos", "the meminfo of system") << JFIELD_CONT |
152 | - << JFIELD_STR("configs", "to query or modify the config of srs") << JFIELD_CONT | ||
153 | << JFIELD_STR("authors", "the primary authors and contributors") << JFIELD_CONT | 151 | << JFIELD_STR("authors", "the primary authors and contributors") << JFIELD_CONT |
154 | << JFIELD_STR("requests", "the request itself, for http debug") | 152 | << JFIELD_STR("requests", "the request itself, for http debug") |
155 | << JOBJECT_END | 153 | << JOBJECT_END |
@@ -222,120 +220,6 @@ int SrsApiRequests::do_process_request(SrsSocket* skt, SrsHttpMessage* req) | @@ -222,120 +220,6 @@ int SrsApiRequests::do_process_request(SrsSocket* skt, SrsHttpMessage* req) | ||
222 | return res_json(skt, req, ss.str()); | 220 | return res_json(skt, req, ss.str()); |
223 | } | 221 | } |
224 | 222 | ||
225 | -SrsApiConfigs::SrsApiConfigs() | ||
226 | -{ | ||
227 | - handlers.push_back(new SrsApiConfigsLogs()); | ||
228 | -} | ||
229 | - | ||
230 | -SrsApiConfigs::~SrsApiConfigs() | ||
231 | -{ | ||
232 | -} | ||
233 | - | ||
234 | -bool SrsApiConfigs::can_handle(const char* path, int length, const char** /*pchild*/) | ||
235 | -{ | ||
236 | - return srs_path_equals("/configs", path, length); | ||
237 | -} | ||
238 | - | ||
239 | -int SrsApiConfigs::do_process_request(SrsSocket* skt, SrsHttpMessage* req) | ||
240 | -{ | ||
241 | - std::stringstream ss; | ||
242 | - | ||
243 | - ss << JOBJECT_START | ||
244 | - << JFIELD_ERROR(ERROR_SUCCESS) << JFIELD_CONT | ||
245 | - << JFIELD_ORG("urls", JOBJECT_START) | ||
246 | - << JFIELD_NAME("logs") << JOBJECT_START | ||
247 | - << JFIELD_STR("uri", req->uri()+"/logs") << JFIELD_CONT | ||
248 | - << JFIELD_STR("desc", "system log settings") << JFIELD_CONT | ||
249 | - << JFIELD_STR("GET", "query logs tank/level/file") << JFIELD_CONT | ||
250 | - << JFIELD_STR("PUT", "update logs tank/level/file") | ||
251 | - << JOBJECT_END | ||
252 | - << JOBJECT_END | ||
253 | - << JOBJECT_END; | ||
254 | - | ||
255 | - return res_json(skt, req, ss.str()); | ||
256 | -} | ||
257 | - | ||
258 | -SrsApiConfigsLogs::SrsApiConfigsLogs() | ||
259 | -{ | ||
260 | -} | ||
261 | - | ||
262 | -SrsApiConfigsLogs::~SrsApiConfigsLogs() | ||
263 | -{ | ||
264 | -} | ||
265 | - | ||
266 | -bool SrsApiConfigsLogs::can_handle(const char* path, int length, const char** /*pchild*/) | ||
267 | -{ | ||
268 | - return srs_path_equals("/logs", path, length); | ||
269 | -} | ||
270 | - | ||
271 | -bool SrsApiConfigsLogs::is_handler_valid(SrsHttpMessage* req, int& status_code, string& reason_phrase) | ||
272 | -{ | ||
273 | - if (!req->is_http_get() && !req->is_http_put()) { | ||
274 | - status_code = HTTP_MethodNotAllowed; | ||
275 | - reason_phrase = HTTP_MethodNotAllowed_str; | ||
276 | - | ||
277 | - return false; | ||
278 | - } | ||
279 | - | ||
280 | - return SrsHttpHandler::is_handler_valid(req, status_code, reason_phrase); | ||
281 | -} | ||
282 | - | ||
283 | -int SrsApiConfigsLogs::do_process_request(SrsSocket* skt, SrsHttpMessage* req) | ||
284 | -{ | ||
285 | - int ret = ERROR_SUCCESS; | ||
286 | - | ||
287 | - // HTTP GET | ||
288 | - if (req->is_http_get()) { | ||
289 | - std::stringstream ss; | ||
290 | - ss << JOBJECT_START | ||
291 | - << JFIELD_ERROR(ERROR_SUCCESS) << JFIELD_CONT | ||
292 | - << JFIELD_ORG("data", JOBJECT_START) | ||
293 | - << JFIELD_STR("tank", (_srs_config->get_log_tank_file()? "file":"console")) << JFIELD_CONT | ||
294 | - << JFIELD_STR("level", _srs_config->get_log_level()) << JFIELD_CONT | ||
295 | - << JFIELD_STR("cwd", _srs_config->cwd()) << JFIELD_CONT | ||
296 | - << JFIELD_STR("file", _srs_config->get_log_file()) | ||
297 | - << JOBJECT_END | ||
298 | - << JOBJECT_END; | ||
299 | - | ||
300 | - return res_json(skt, req, ss.str()); | ||
301 | - } | ||
302 | - | ||
303 | - // HTTP PUT | ||
304 | - srs_trace("http api PUT logs, req is: %s", req->body().c_str()); | ||
305 | - | ||
306 | - SrsJsonAny* json = SrsJsonAny::loads(req->body_raw()); | ||
307 | - SrsAutoFree(SrsJsonAny, json); | ||
308 | - | ||
309 | - if (!json) { | ||
310 | - return response_error(skt, req, ERROR_HTTP_API_LOGS, "invalid PUT json"); | ||
311 | - } else if (!json->is_object()) { | ||
312 | - return response_error(skt, req, ERROR_HTTP_API_LOGS, "invalid PUT json logs params"); | ||
313 | - } | ||
314 | - | ||
315 | - SrsJsonObject* o = json->to_object(); | ||
316 | - SrsJsonAny* prop = NULL; | ||
317 | - if ((prop = o->ensure_property_string("file")) != NULL && _srs_config->set_log_file(prop->to_str())) { | ||
318 | - if ((ret = _srs_config->force_reload_log_file()) != ERROR_SUCCESS) { | ||
319 | - return response_error(skt, req, ret, "reload log file failed"); | ||
320 | - } | ||
321 | - srs_warn("http api reload log file to %s", prop->to_str().c_str()); | ||
322 | - } | ||
323 | - if ((prop = o->ensure_property_string("tank")) != NULL && _srs_config->set_log_tank(prop->to_str())) { | ||
324 | - if ((ret = _srs_config->force_reload_log_tank()) != ERROR_SUCCESS) { | ||
325 | - return response_error(skt, req, ret, "reload log tank failed"); | ||
326 | - } | ||
327 | - srs_warn("http api reload log tank to %s", prop->to_str().c_str()); | ||
328 | - } | ||
329 | - if ((prop = o->ensure_property_string("level")) != NULL && _srs_config->set_log_level(prop->to_str())) { | ||
330 | - if ((ret = _srs_config->force_reload_log_level()) != ERROR_SUCCESS) { | ||
331 | - return response_error(skt, req, ret, "reload log level failed"); | ||
332 | - } | ||
333 | - srs_warn("http api reload log level to %s", prop->to_str().c_str()); | ||
334 | - } | ||
335 | - | ||
336 | - return response_error(skt, req, ret, "PUT logs success."); | ||
337 | -} | ||
338 | - | ||
339 | SrsApiVersion::SrsApiVersion() | 223 | SrsApiVersion::SrsApiVersion() |
340 | { | 224 | { |
341 | } | 225 | } |
@@ -87,29 +87,6 @@ protected: | @@ -87,29 +87,6 @@ protected: | ||
87 | virtual int do_process_request(SrsSocket* skt, SrsHttpMessage* req); | 87 | virtual int do_process_request(SrsSocket* skt, SrsHttpMessage* req); |
88 | }; | 88 | }; |
89 | 89 | ||
90 | -class SrsApiConfigs : public SrsHttpHandler | ||
91 | -{ | ||
92 | -public: | ||
93 | - SrsApiConfigs(); | ||
94 | - virtual ~SrsApiConfigs(); | ||
95 | -public: | ||
96 | - virtual bool can_handle(const char* path, int length, const char** pchild); | ||
97 | -protected: | ||
98 | - virtual int do_process_request(SrsSocket* skt, SrsHttpMessage* req); | ||
99 | -}; | ||
100 | - | ||
101 | -class SrsApiConfigsLogs : public SrsHttpHandler | ||
102 | -{ | ||
103 | -public: | ||
104 | - SrsApiConfigsLogs(); | ||
105 | - virtual ~SrsApiConfigsLogs(); | ||
106 | -public: | ||
107 | - virtual bool can_handle(const char* path, int length, const char** pchild); | ||
108 | -protected: | ||
109 | - virtual bool is_handler_valid(SrsHttpMessage* req, int& status_code, std::string& reason_phrase); | ||
110 | - virtual int do_process_request(SrsSocket* skt, SrsHttpMessage* req); | ||
111 | -}; | ||
112 | - | ||
113 | class SrsApiVersion : public SrsHttpHandler | 90 | class SrsApiVersion : public SrsHttpHandler |
114 | { | 91 | { |
115 | public: | 92 | public: |
@@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | @@ -31,7 +31,7 @@ CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. | ||
31 | // current release version | 31 | // current release version |
32 | #define VERSION_MAJOR "0" | 32 | #define VERSION_MAJOR "0" |
33 | #define VERSION_MINOR "9" | 33 | #define VERSION_MINOR "9" |
34 | -#define VERSION_REVISION "147" | 34 | +#define VERSION_REVISION "148" |
35 | #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION | 35 | #define RTMP_SIG_SRS_VERSION VERSION_MAJOR"."VERSION_MINOR"."VERSION_REVISION |
36 | // server info. | 36 | // server info. |
37 | #define RTMP_SIG_SRS_KEY "SRS" | 37 | #define RTMP_SIG_SRS_KEY "SRS" |
-
请 注册 或 登录 后发表评论