正在显示
3 个修改的文件
包含
92 行增加
和
9 行删除
| @@ -721,16 +721,9 @@ int SrsConfig::reload_vhost(SrsConfDirective* old_root) | @@ -721,16 +721,9 @@ int SrsConfig::reload_vhost(SrsConfDirective* old_root) | ||
| 721 | 721 | ||
| 722 | // ENABLED => DISABLED | 722 | // ENABLED => DISABLED |
| 723 | if (get_vhost_enabled(old_vhost) && !get_vhost_enabled(new_vhost)) { | 723 | if (get_vhost_enabled(old_vhost) && !get_vhost_enabled(new_vhost)) { |
| 724 | - srs_trace("vhost %s removed, reload it.", vhost.c_str()); | ||
| 725 | - for (it = subscribes.begin(); it != subscribes.end(); ++it) { | ||
| 726 | - ISrsReloadHandler* subscribe = *it; | ||
| 727 | - if ((ret = subscribe->on_reload_vhost_removed(vhost)) != ERROR_SUCCESS) { | ||
| 728 | - srs_error("notify subscribes removed " | ||
| 729 | - "vhost %s failed. ret=%d", vhost.c_str(), ret); | 724 | + if ((ret = do_reload_vhost_removed(vhost)) != ERROR_SUCCESS) { |
| 730 | return ret; | 725 | return ret; |
| 731 | } | 726 | } |
| 732 | - } | ||
| 733 | - srs_trace("reload removed vhost %s success.", vhost.c_str()); | ||
| 734 | continue; | 727 | continue; |
| 735 | } | 728 | } |
| 736 | 729 | ||
| @@ -2514,6 +2507,42 @@ int SrsConfig::raw_delete_vhost(string vhost, bool& applied) | @@ -2514,6 +2507,42 @@ int SrsConfig::raw_delete_vhost(string vhost, bool& applied) | ||
| 2514 | return ret; | 2507 | return ret; |
| 2515 | } | 2508 | } |
| 2516 | 2509 | ||
| 2510 | +int SrsConfig::raw_disable_vhost(string vhost, bool& applied) | ||
| 2511 | +{ | ||
| 2512 | + int ret = ERROR_SUCCESS; | ||
| 2513 | + | ||
| 2514 | + applied = false; | ||
| 2515 | + | ||
| 2516 | + SrsConfDirective* conf = root->get("vhost", vhost); | ||
| 2517 | + conf->get_or_create("enabled")->set_arg0("off"); | ||
| 2518 | + | ||
| 2519 | + if ((ret = do_reload_vhost_removed(vhost)) != ERROR_SUCCESS) { | ||
| 2520 | + return ret; | ||
| 2521 | + } | ||
| 2522 | + | ||
| 2523 | + applied = true; | ||
| 2524 | + | ||
| 2525 | + return ret; | ||
| 2526 | +} | ||
| 2527 | + | ||
| 2528 | +int SrsConfig::raw_enable_vhost(string vhost, bool& applied) | ||
| 2529 | +{ | ||
| 2530 | + int ret = ERROR_SUCCESS; | ||
| 2531 | + | ||
| 2532 | + applied = false; | ||
| 2533 | + | ||
| 2534 | + SrsConfDirective* conf = root->get("vhost", vhost); | ||
| 2535 | + conf->get_or_create("enabled")->set_arg0("on"); | ||
| 2536 | + | ||
| 2537 | + if ((ret = do_reload_vhost_added(vhost)) != ERROR_SUCCESS) { | ||
| 2538 | + return ret; | ||
| 2539 | + } | ||
| 2540 | + | ||
| 2541 | + applied = true; | ||
| 2542 | + | ||
| 2543 | + return ret; | ||
| 2544 | +} | ||
| 2545 | + | ||
| 2517 | int SrsConfig::do_reload_listen() | 2546 | int SrsConfig::do_reload_listen() |
| 2518 | { | 2547 | { |
| 2519 | int ret = ERROR_SUCCESS; | 2548 | int ret = ERROR_SUCCESS; |
| @@ -2670,6 +2699,26 @@ int SrsConfig::do_reload_vhost_added(string vhost) | @@ -2670,6 +2699,26 @@ int SrsConfig::do_reload_vhost_added(string vhost) | ||
| 2670 | return ret; | 2699 | return ret; |
| 2671 | } | 2700 | } |
| 2672 | 2701 | ||
| 2702 | +int SrsConfig::do_reload_vhost_removed(string vhost) | ||
| 2703 | +{ | ||
| 2704 | + int ret = ERROR_SUCCESS; | ||
| 2705 | + | ||
| 2706 | + srs_trace("vhost %s removed, reload it.", vhost.c_str()); | ||
| 2707 | + | ||
| 2708 | + vector<ISrsReloadHandler*>::iterator it; | ||
| 2709 | + for (it = subscribes.begin(); it != subscribes.end(); ++it) { | ||
| 2710 | + ISrsReloadHandler* subscribe = *it; | ||
| 2711 | + if ((ret = subscribe->on_reload_vhost_removed(vhost)) != ERROR_SUCCESS) { | ||
| 2712 | + srs_error("notify subscribes removed " | ||
| 2713 | + "vhost %s failed. ret=%d", vhost.c_str(), ret); | ||
| 2714 | + return ret; | ||
| 2715 | + } | ||
| 2716 | + } | ||
| 2717 | + srs_trace("reload removed vhost %s success.", vhost.c_str()); | ||
| 2718 | + | ||
| 2719 | + return ret; | ||
| 2720 | +} | ||
| 2721 | + | ||
| 2673 | string SrsConfig::config() | 2722 | string SrsConfig::config() |
| 2674 | { | 2723 | { |
| 2675 | return config_file; | 2724 | return config_file; |
| @@ -390,6 +390,14 @@ public: | @@ -390,6 +390,14 @@ public: | ||
| 390 | * raw delete the disabled vhost. | 390 | * raw delete the disabled vhost. |
| 391 | */ | 391 | */ |
| 392 | virtual int raw_delete_vhost(std::string vhost, bool& applied); | 392 | virtual int raw_delete_vhost(std::string vhost, bool& applied); |
| 393 | + /** | ||
| 394 | + * raw disable the enabled vhost. | ||
| 395 | + */ | ||
| 396 | + virtual int raw_disable_vhost(std::string vhost, bool& applied); | ||
| 397 | + /** | ||
| 398 | + * raw enable the disabled vhost. | ||
| 399 | + */ | ||
| 400 | + virtual int raw_enable_vhost(std::string vhost, bool& applied); | ||
| 393 | private: | 401 | private: |
| 394 | virtual int do_reload_listen(); | 402 | virtual int do_reload_listen(); |
| 395 | virtual int do_reload_pid(); | 403 | virtual int do_reload_pid(); |
| @@ -400,6 +408,7 @@ private: | @@ -400,6 +408,7 @@ private: | ||
| 400 | virtual int do_reload_utc_time(); | 408 | virtual int do_reload_utc_time(); |
| 401 | virtual int do_reload_pithy_print_ms(); | 409 | virtual int do_reload_pithy_print_ms(); |
| 402 | virtual int do_reload_vhost_added(std::string vhost); | 410 | virtual int do_reload_vhost_added(std::string vhost); |
| 411 | + virtual int do_reload_vhost_removed(std::string vhost); | ||
| 403 | public: | 412 | public: |
| 404 | /** | 413 | /** |
| 405 | * get the config file path. | 414 | * get the config file path. |
| @@ -1155,7 +1155,7 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r) | @@ -1155,7 +1155,7 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r) | ||
| 1155 | } else if (scope == "vhost") { | 1155 | } else if (scope == "vhost") { |
| 1156 | std::string param = r->query_get("param"); | 1156 | std::string param = r->query_get("param"); |
| 1157 | std::string data = r->query_get("data"); | 1157 | std::string data = r->query_get("data"); |
| 1158 | - if (param != "create" && param != "update" && param != "delete") { | 1158 | + if (param != "create" && param != "update" && param != "delete" && param != "disable" && param != "enable") { |
| 1159 | ret = ERROR_SYSTEM_CONFIG_RAW_NOT_ALLOWED; | 1159 | ret = ERROR_SYSTEM_CONFIG_RAW_NOT_ALLOWED; |
| 1160 | srs_error("raw api query invalid scope=%s, param=%s. ret=%d", scope.c_str(), param.c_str(), ret); | 1160 | srs_error("raw api query invalid scope=%s, param=%s. ret=%d", scope.c_str(), param.c_str(), ret); |
| 1161 | return srs_api_response_code(w, r, ret); | 1161 | return srs_api_response_code(w, r, ret); |
| @@ -1202,7 +1202,32 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r) | @@ -1202,7 +1202,32 @@ int SrsGoApiRaw::serve_http(ISrsHttpResponseWriter* w, ISrsHttpMessage* r) | ||
| 1202 | srs_error("raw api update vhost=%s, param=%s failed. ret=%d", value.c_str(), param.c_str(), ret); | 1202 | srs_error("raw api update vhost=%s, param=%s failed. ret=%d", value.c_str(), param.c_str(), ret); |
| 1203 | return srs_api_response_code(w, r, ret); | 1203 | return srs_api_response_code(w, r, ret); |
| 1204 | } | 1204 | } |
| 1205 | + } else if (param == "disable") { | ||
| 1206 | + // when disable, the vhost must exists and enabled. | ||
| 1207 | + SrsConfDirective* vhost = _srs_config->get_vhost(value, false); | ||
| 1208 | + if (param.empty() || !vhost || !_srs_config->get_vhost_enabled(vhost)) { | ||
| 1209 | + ret = ERROR_SYSTEM_CONFIG_RAW_PARAMS; | ||
| 1210 | + srs_error("raw api update check vhost=%s, param=%s failed. ret=%d", value.c_str(), param.c_str(), ret); | ||
| 1211 | + return srs_api_response_code(w, r, ret); | ||
| 1212 | + } | ||
| 1213 | + | ||
| 1214 | + if ((ret = _srs_config->raw_disable_vhost(value, applied)) != ERROR_SUCCESS) { | ||
| 1215 | + srs_error("raw api update vhost=%s, param=%s failed. ret=%d", value.c_str(), param.c_str(), ret); | ||
| 1216 | + return srs_api_response_code(w, r, ret); | ||
| 1217 | + } | ||
| 1218 | + } else if (param == "enable") { | ||
| 1219 | + // when enable, the vhost must exists and disabled. | ||
| 1220 | + SrsConfDirective* vhost = _srs_config->get_vhost(value, false); | ||
| 1221 | + if (param.empty() || !vhost || _srs_config->get_vhost_enabled(vhost)) { | ||
| 1222 | + ret = ERROR_SYSTEM_CONFIG_RAW_PARAMS; | ||
| 1223 | + srs_error("raw api update check vhost=%s, param=%s failed. ret=%d", value.c_str(), param.c_str(), ret); | ||
| 1224 | + return srs_api_response_code(w, r, ret); | ||
| 1225 | + } | ||
| 1205 | 1226 | ||
| 1227 | + if ((ret = _srs_config->raw_enable_vhost(value, applied)) != ERROR_SUCCESS) { | ||
| 1228 | + srs_error("raw api update vhost=%s, param=%s failed. ret=%d", value.c_str(), param.c_str(), ret); | ||
| 1229 | + return srs_api_response_code(w, r, ret); | ||
| 1230 | + } | ||
| 1206 | } | 1231 | } |
| 1207 | } | 1232 | } |
| 1208 | 1233 |
-
请 注册 或 登录 后发表评论