Commit 7539042d by xiongziliang

敏感接口添加secret认证

parent 40c1d1ca
...@@ -54,8 +54,11 @@ typedef enum { ...@@ -54,8 +54,11 @@ typedef enum {
#define API_FIELD "api." #define API_FIELD "api."
const char kApiDebug[] = API_FIELD"apiDebug"; const char kApiDebug[] = API_FIELD"apiDebug";
const char kSecret[] = API_FIELD"secret";
static onceToken token([]() { static onceToken token([]() {
mINI::Instance()[kApiDebug] = "1"; mINI::Instance()[kApiDebug] = "1";
mINI::Instance()[kSecret] = "035c73f7-bb6b-4889-a715-d9eb2d1925cc";
}); });
}//namespace API }//namespace API
...@@ -190,6 +193,12 @@ bool checkArgs(Args &&args,First &&first,KeyTypes && ...keys){ ...@@ -190,6 +193,12 @@ bool checkArgs(Args &&args,First &&first,KeyTypes && ...keys){
throw InvalidArgs("缺少必要参数:" #__VA_ARGS__); \ throw InvalidArgs("缺少必要参数:" #__VA_ARGS__); \
} }
#define CHECK_SECRET() \
CHECK_ARGS("secret"); \
if(api_secret != allArgs["secret"]){ \
throw AuthException("secret错误"); \
}
static unordered_map<uint64_t ,PlayerProxy::Ptr> s_proxyMap; static unordered_map<uint64_t ,PlayerProxy::Ptr> s_proxyMap;
static recursive_mutex s_proxyMapMtx; static recursive_mutex s_proxyMapMtx;
...@@ -198,6 +207,8 @@ static recursive_mutex s_proxyMapMtx; ...@@ -198,6 +207,8 @@ static recursive_mutex s_proxyMapMtx;
void installWebApi() { void installWebApi() {
addHttpListener(); addHttpListener();
GET_CONFIG_AND_REGISTER(string,api_secret,API::kSecret);
/** /**
* 获取线程负载 * 获取线程负载
*/ */
...@@ -220,6 +231,10 @@ void installWebApi() { ...@@ -220,6 +231,10 @@ void installWebApi() {
* 获取服务器配置 * 获取服务器配置
*/ */
API_REGIST(api, getServerConfig, { API_REGIST(api, getServerConfig, {
CHECK_SECRET();
if(api_secret != allArgs["secret"]){
throw AuthException("secret错误");
}
Value obj; Value obj;
for (auto &pr : mINI::Instance()) { for (auto &pr : mINI::Instance()) {
obj[pr.first] = (string &) pr.second; obj[pr.first] = (string &) pr.second;
...@@ -231,6 +246,7 @@ void installWebApi() { ...@@ -231,6 +246,7 @@ void installWebApi() {
* 设置服务器配置 * 设置服务器配置
*/ */
API_REGIST(api, setServerConfig, { API_REGIST(api, setServerConfig, {
CHECK_SECRET();
auto &ini = mINI::Instance(); auto &ini = mINI::Instance();
int changed = 0; int changed = 0;
for (auto &pr : allArgs) { for (auto &pr : allArgs) {
...@@ -256,6 +272,7 @@ void installWebApi() { ...@@ -256,6 +272,7 @@ void installWebApi() {
* 获取服务器api列表 * 获取服务器api列表
*/ */
API_REGIST(api,getApiList,{ API_REGIST(api,getApiList,{
CHECK_SECRET();
for(auto &pr : s_map_api){ for(auto &pr : s_map_api){
val["data"].append(pr.first); val["data"].append(pr.first);
} }
...@@ -265,6 +282,7 @@ void installWebApi() { ...@@ -265,6 +282,7 @@ void installWebApi() {
* 重启服务器 * 重启服务器
*/ */
API_REGIST(api,restartServer,{ API_REGIST(api,restartServer,{
CHECK_SECRET();
EventPollerPool::Instance().getPoller()->doDelayTask(1000,[](){ EventPollerPool::Instance().getPoller()->doDelayTask(1000,[](){
//尝试正常退出 //尝试正常退出
::kill(getpid(), SIGINT); ::kill(getpid(), SIGINT);
...@@ -282,6 +300,7 @@ void installWebApi() { ...@@ -282,6 +300,7 @@ void installWebApi() {
API_REGIST(api,getMediaList,{ API_REGIST(api,getMediaList,{
CHECK_SECRET();
//获取所有MediaSource列表 //获取所有MediaSource列表
val["code"] = 0; val["code"] = 0;
val["msg"] = "success"; val["msg"] = "success";
...@@ -309,6 +328,7 @@ void installWebApi() { ...@@ -309,6 +328,7 @@ void installWebApi() {
}); });
API_REGIST(api,kick_pusher,{ API_REGIST(api,kick_pusher,{
CHECK_SECRET();
CHECK_ARGS("schema","vhost","app","stream"); CHECK_ARGS("schema","vhost","app","stream");
//踢掉推流器 //踢掉推流器
auto src = MediaSource::find(allArgs["schema"], auto src = MediaSource::find(allArgs["schema"],
...@@ -326,6 +346,7 @@ void installWebApi() { ...@@ -326,6 +346,7 @@ void installWebApi() {
}); });
API_REGIST(api,kick_session,{ API_REGIST(api,kick_session,{
CHECK_SECRET();
CHECK_ARGS("id"); CHECK_ARGS("id");
//踢掉tcp会话 //踢掉tcp会话
auto id = allArgs["id"]; auto id = allArgs["id"];
...@@ -347,7 +368,8 @@ void installWebApi() { ...@@ -347,7 +368,8 @@ void installWebApi() {
API_REGIST(api,addStreamProxy,{ API_REGIST(api,addStreamProxy,{
CHECK_ARGS("vhost","app","stream","url"); CHECK_SECRET();
CHECK_ARGS("vhost","app","stream","url","secret");
//添加拉流代理 //添加拉流代理
PlayerProxy::Ptr player(new PlayerProxy( PlayerProxy::Ptr player(new PlayerProxy(
allArgs["vhost"], allArgs["vhost"],
...@@ -367,6 +389,7 @@ void installWebApi() { ...@@ -367,6 +389,7 @@ void installWebApi() {
}); });
API_REGIST(api,delStreamProxy,{ API_REGIST(api,delStreamProxy,{
CHECK_SECRET();
CHECK_ARGS("id"); CHECK_ARGS("id");
lock_guard<recursive_mutex> lck(s_proxyMapMtx); lock_guard<recursive_mutex> lck(s_proxyMapMtx);
val["data"]["flag"] = s_proxyMap.erase(allArgs["id"].as<uint64_t>()) == 1; val["data"]["flag"] = s_proxyMap.erase(allArgs["id"].as<uint64_t>()) == 1;
......
...@@ -54,7 +54,7 @@ onceToken token([](){ ...@@ -54,7 +54,7 @@ onceToken token([](){
mINI::Instance()[kOnStreamChanged] = "http://127.0.0.1/index/hook/on_stream_changed"; mINI::Instance()[kOnStreamChanged] = "http://127.0.0.1/index/hook/on_stream_changed";
mINI::Instance()[kOnStreamNotFound] = "http://127.0.0.1/index/hook/on_stream_not_found"; mINI::Instance()[kOnStreamNotFound] = "http://127.0.0.1/index/hook/on_stream_not_found";
mINI::Instance()[kOnRecordMp4] = "http://127.0.0.1/index/hook/on_record_mp4"; mINI::Instance()[kOnRecordMp4] = "http://127.0.0.1/index/hook/on_record_mp4";
mINI::Instance()[kAdminParams] = "token=035c73f7-bb6b-4889-a715-d9eb2d1925cc"; mINI::Instance()[kAdminParams] = "secret=035c73f7-bb6b-4889-a715-d9eb2d1925cc";
},nullptr); },nullptr);
}//namespace Hook }//namespace Hook
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论