Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Z
ZLMediaKit
概览
Overview
Details
Activity
Cycle Analytics
版本库
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
问题
0
Issues
0
列表
Board
标记
里程碑
合并请求
0
Merge Requests
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
Snippets
成员
Collapse sidebar
Close sidebar
活动
图像
聊天
创建新问题
作业
提交
Issue Boards
Open sidebar
张翔宇
ZLMediaKit
Commits
7539042d
Commit
7539042d
authored
5 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
敏感接口添加secret认证
parent
40c1d1ca
显示空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
25 行增加
和
2 行删除
+25
-2
server/WebApi.cpp
+24
-1
server/WebHook.cpp
+1
-1
没有找到文件。
server/WebApi.cpp
查看文件 @
7539042d
...
...
@@ -54,8 +54,11 @@ typedef enum {
#define API_FIELD "api."
const
char
kApiDebug
[]
=
API_FIELD
"apiDebug"
;
const
char
kSecret
[]
=
API_FIELD
"secret"
;
static
onceToken
token
([]()
{
mINI
::
Instance
()[
kApiDebug
]
=
"1"
;
mINI
::
Instance
()[
kSecret
]
=
"035c73f7-bb6b-4889-a715-d9eb2d1925cc"
;
});
}
//namespace API
...
...
@@ -190,6 +193,12 @@ bool checkArgs(Args &&args,First &&first,KeyTypes && ...keys){
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
recursive_mutex
s_proxyMapMtx
;
...
...
@@ -198,6 +207,8 @@ static recursive_mutex s_proxyMapMtx;
void
installWebApi
()
{
addHttpListener
();
GET_CONFIG_AND_REGISTER
(
string
,
api_secret
,
API
::
kSecret
);
/**
* 获取线程负载
*/
...
...
@@ -220,6 +231,10 @@ void installWebApi() {
* 获取服务器配置
*/
API_REGIST
(
api
,
getServerConfig
,
{
CHECK_SECRET
();
if
(
api_secret
!=
allArgs
[
"secret"
]){
throw
AuthException
(
"secret错误"
);
}
Value
obj
;
for
(
auto
&
pr
:
mINI
::
Instance
())
{
obj
[
pr
.
first
]
=
(
string
&
)
pr
.
second
;
...
...
@@ -231,6 +246,7 @@ void installWebApi() {
* 设置服务器配置
*/
API_REGIST
(
api
,
setServerConfig
,
{
CHECK_SECRET
();
auto
&
ini
=
mINI
::
Instance
();
int
changed
=
0
;
for
(
auto
&
pr
:
allArgs
)
{
...
...
@@ -256,6 +272,7 @@ void installWebApi() {
* 获取服务器api列表
*/
API_REGIST
(
api
,
getApiList
,{
CHECK_SECRET
();
for
(
auto
&
pr
:
s_map_api
){
val
[
"data"
].
append
(
pr
.
first
);
}
...
...
@@ -265,6 +282,7 @@ void installWebApi() {
* 重启服务器
*/
API_REGIST
(
api
,
restartServer
,{
CHECK_SECRET
();
EventPollerPool
::
Instance
().
getPoller
()
->
doDelayTask
(
1000
,[](){
//尝试正常退出
::
kill
(
getpid
(),
SIGINT
);
...
...
@@ -282,6 +300,7 @@ void installWebApi() {
API_REGIST
(
api
,
getMediaList
,{
CHECK_SECRET
();
//获取所有MediaSource列表
val
[
"code"
]
=
0
;
val
[
"msg"
]
=
"success"
;
...
...
@@ -309,6 +328,7 @@ void installWebApi() {
});
API_REGIST
(
api
,
kick_pusher
,{
CHECK_SECRET
();
CHECK_ARGS
(
"schema"
,
"vhost"
,
"app"
,
"stream"
);
//踢掉推流器
auto
src
=
MediaSource
::
find
(
allArgs
[
"schema"
],
...
...
@@ -326,6 +346,7 @@ void installWebApi() {
});
API_REGIST
(
api
,
kick_session
,{
CHECK_SECRET
();
CHECK_ARGS
(
"id"
);
//踢掉tcp会话
auto
id
=
allArgs
[
"id"
];
...
...
@@ -347,7 +368,8 @@ void installWebApi() {
API_REGIST
(
api
,
addStreamProxy
,{
CHECK_ARGS
(
"vhost"
,
"app"
,
"stream"
,
"url"
);
CHECK_SECRET
();
CHECK_ARGS
(
"vhost"
,
"app"
,
"stream"
,
"url"
,
"secret"
);
//添加拉流代理
PlayerProxy
::
Ptr
player
(
new
PlayerProxy
(
allArgs
[
"vhost"
],
...
...
@@ -367,6 +389,7 @@ void installWebApi() {
});
API_REGIST
(
api
,
delStreamProxy
,{
CHECK_SECRET
();
CHECK_ARGS
(
"id"
);
lock_guard
<
recursive_mutex
>
lck
(
s_proxyMapMtx
);
val
[
"data"
][
"flag"
]
=
s_proxyMap
.
erase
(
allArgs
[
"id"
].
as
<
uint64_t
>
())
==
1
;
...
...
This diff is collapsed.
Click to expand it.
server/WebHook.cpp
查看文件 @
7539042d
...
...
@@ -54,7 +54,7 @@ onceToken token([](){
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
()[
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
);
}
//namespace Hook
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论