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
7e255379
Commit
7e255379
authored
5 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
流量汇报事件添加客户端ip和端口参数
parent
ead8b5a8
隐藏空白字符变更
内嵌
并排
正在显示
11 个修改的文件
包含
34 行增加
和
15 行删除
+34
-15
api/include/mk_events.h
+5
-1
api/source/mk_events.cpp
+3
-1
api/tests/server.c
+7
-3
server/WebHook.cpp
+3
-1
src/Common/config.h
+1
-1
src/Http/HttpFileManager.cpp
+5
-2
src/Http/HttpSession.cpp
+1
-1
src/Record/HlsMediaSource.cpp
+4
-2
src/Record/HlsMediaSource.h
+3
-1
src/Rtmp/RtmpSession.cpp
+1
-1
src/Rtsp/RtspSession.cpp
+1
-1
没有找到文件。
api/include/mk_events.h
查看文件 @
7e255379
...
...
@@ -162,11 +162,15 @@ typedef struct {
* @param total_bytes 耗费上下行总流量,单位字节数
* @param total_seconds 本次tcp会话时长,单位秒
* @param is_player 客户端是否为播放器
* @param peer_ip 客户端ip
* @param peer_port 客户端端口号
*/
void
(
API_CALL
*
on_mk_flow_report
)(
const
mk_media_info
url_info
,
uint64_t
total_bytes
,
uint64_t
total_seconds
,
int
is_player
);
int
is_player
,
const
char
*
peer_ip
,
uint16_t
peer_port
);
}
mk_events
;
...
...
This diff is collapsed.
Click to expand it.
api/source/mk_events.cpp
查看文件 @
7e255379
...
...
@@ -151,7 +151,9 @@ API_EXPORT void API_CALL mk_events_listen(const mk_events *events){
s_events
.
on_mk_flow_report
((
mk_media_info
)
&
args
,
totalBytes
,
totalDuration
,
isPlayer
);
isPlayer
,
peerIP
.
c_str
(),
peerPort
);
}
});
...
...
This diff is collapsed.
Click to expand it.
api/tests/server.c
查看文件 @
7e255379
...
...
@@ -372,19 +372,23 @@ void API_CALL on_mk_shell_login(const char *user_name,
* @param total_bytes 耗费上下行总流量,单位字节数
* @param total_seconds 本次tcp会话时长,单位秒
* @param is_player 客户端是否为播放器
* @param peer_ip 客户端ip
* @param peer_port 客户端端口号
*/
void
API_CALL
on_mk_flow_report
(
const
mk_media_info
url_info
,
uint64_t
total_bytes
,
uint64_t
total_seconds
,
int
is_player
)
{
int
is_player
,
const
char
*
peer_ip
,
uint16_t
peer_port
)
{
log_printf
(
LOG_LEV
,
"%s/%s/%s/%s, url params: %s,"
"total_bytes: %d, total_seconds: %d, is_player: %d"
,
"total_bytes: %d, total_seconds: %d, is_player: %d
, peer_ip:%s, peer_port:%d
"
,
mk_media_info_get_schema
(
url_info
),
mk_media_info_get_vhost
(
url_info
),
mk_media_info_get_app
(
url_info
),
mk_media_info_get_stream
(
url_info
),
mk_media_info_get_params
(
url_info
),
(
int
)
total_bytes
,
(
int
)
total_seconds
,
(
int
)
is_player
);
(
int
)
total_bytes
,
(
int
)
total_seconds
,
(
int
)
is_player
,
peer_ip
,
(
int
)
peer_port
);
}
static
int
flag
=
1
;
...
...
This diff is collapsed.
Click to expand it.
server/WebHook.cpp
查看文件 @
7e255379
...
...
@@ -269,13 +269,15 @@ void installWebHook(){
});
NoticeCenter
::
Instance
().
addListener
(
nullptr
,
Broadcast
::
kBroadcastFlowReport
,[](
BroadcastFlowReportArgs
){
if
(
!
hook_enable
||
args
.
_param_strs
==
hook_adminparams
||
hook_flowreport
.
empty
()){
if
(
!
hook_enable
||
args
.
_param_strs
==
hook_adminparams
||
hook_flowreport
.
empty
()
||
peerIP
==
"127.0.0.1"
){
return
;
}
auto
body
=
make_json
(
args
);
body
[
"totalBytes"
]
=
(
Json
::
UInt64
)
totalBytes
;
body
[
"duration"
]
=
(
Json
::
UInt64
)
totalDuration
;
body
[
"player"
]
=
isPlayer
;
body
[
"ip"
]
=
peerIP
;
body
[
"port"
]
=
peerPort
;
//执行hook
do_http_hook
(
hook_flowreport
,
body
,
nullptr
);
});
...
...
This diff is collapsed.
Click to expand it.
src/Common/config.h
查看文件 @
7e255379
...
...
@@ -127,7 +127,7 @@ extern const string kBroadcastShellLogin;
//停止rtsp/rtmp/http-flv会话后流量汇报事件广播
extern
const
string
kBroadcastFlowReport
;
#define BroadcastFlowReportArgs const MediaInfo &args,const uint64_t &totalBytes,const uint64_t &totalDuration,const bool &isPlayer
#define BroadcastFlowReportArgs const MediaInfo &args,const uint64_t &totalBytes,const uint64_t &totalDuration,const bool &isPlayer
, const string &peerIP,const uint16_t &peerPort
//未找到流后会广播该事件,请在监听该事件后去拉流或其他方式产生流,这样就能按需拉流了
extern
const
string
kBroadcastNotFoundStream
;
...
...
This diff is collapsed.
Click to expand it.
src/Http/HttpFileManager.cpp
查看文件 @
7e255379
...
...
@@ -378,8 +378,11 @@ static void canAccessPath(TcpSession &sender, const Parser &parser, const MediaI
}
bool
is_hls
=
mediaInfo
.
_schema
==
HLS_SCHEMA
;
string
peer_ip
=
sender
.
get_peer_ip
();
uint16_t
peer_port
=
sender
.
get_peer_port
();
//该用户从来未获取过cookie,这个时候我们广播是否允许该用户访问该http目录
HttpSession
::
HttpAccessPathInvoker
accessPathInvoker
=
[
callback
,
uid
,
path
,
is_dir
,
is_hls
,
mediaInfo
]
HttpSession
::
HttpAccessPathInvoker
accessPathInvoker
=
[
callback
,
uid
,
path
,
is_dir
,
is_hls
,
mediaInfo
,
peer_ip
,
peer_port
]
(
const
string
&
errMsg
,
const
string
&
cookie_path_in
,
int
cookieLifeSecond
)
{
HttpServerCookie
::
Ptr
cookie
;
if
(
cookieLifeSecond
)
{
...
...
@@ -402,7 +405,7 @@ static void canAccessPath(TcpSession &sender, const Parser &parser, const MediaI
attachment
.
_is_hls
=
is_hls
;
if
(
is_hls
){
//hls相关信息
attachment
.
_hls_data
=
std
::
make_shared
<
HlsCookieData
>
(
mediaInfo
);
attachment
.
_hls_data
=
std
::
make_shared
<
HlsCookieData
>
(
mediaInfo
,
peer_ip
,
peer_port
);
//hls未查找MediaSource
attachment
.
_have_find_media_source
=
false
;
}
...
...
This diff is collapsed.
Click to expand it.
src/Http/HttpSession.cpp
查看文件 @
7e255379
...
...
@@ -112,7 +112,7 @@ void HttpSession::onError(const SockException& err) {
GET_CONFIG
(
uint32_t
,
iFlowThreshold
,
General
::
kFlowThreshold
);
if
(
_ui64TotalBytes
>
iFlowThreshold
*
1024
){
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_mediaInfo
,
_ui64TotalBytes
,
_ticker
.
createdTime
()
/
1000
,
true
);
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_mediaInfo
,
_ui64TotalBytes
,
_ticker
.
createdTime
()
/
1000
,
true
,
get_peer_ip
(),
get_peer_port
()
);
}
return
;
}
...
...
This diff is collapsed.
Click to expand it.
src/Record/HlsMediaSource.cpp
查看文件 @
7e255379
...
...
@@ -28,8 +28,10 @@
namespace
mediakit
{
HlsCookieData
::
HlsCookieData
(
const
MediaInfo
&
info
)
{
HlsCookieData
::
HlsCookieData
(
const
MediaInfo
&
info
,
const
string
&
peer_ip
,
uint16_t
peer_port
)
{
_info
=
info
;
_peer_ip
=
peer_ip
;
_peer_port
=
peer_port
;
_added
=
std
::
make_shared
<
bool
>
(
false
);
addReaderCount
();
}
...
...
@@ -61,7 +63,7 @@ HlsCookieData::~HlsCookieData() {
WarnL
<<
"HLS播放器("
<<
_info
.
_vhost
<<
"/"
<<
_info
.
_app
<<
"/"
<<
_info
.
_streamid
<<
")断开,播放时间:"
<<
duration
;
GET_CONFIG
(
uint32_t
,
iFlowThreshold
,
General
::
kFlowThreshold
);
if
(
_bytes
>
iFlowThreshold
*
1024
)
{
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_info
,
_bytes
,
duration
,
true
);
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_info
,
_bytes
,
duration
,
true
,
_peer_ip
,
_peer_port
);
}
}
}
...
...
This diff is collapsed.
Click to expand it.
src/Record/HlsMediaSource.h
查看文件 @
7e255379
...
...
@@ -92,7 +92,7 @@ private:
class
HlsCookieData
{
public
:
typedef
std
::
shared_ptr
<
HlsCookieData
>
Ptr
;
HlsCookieData
(
const
MediaInfo
&
info
);
HlsCookieData
(
const
MediaInfo
&
info
,
const
string
&
peer_ip
,
uint16_t
peer_port
);
~
HlsCookieData
();
void
addByteUsage
(
uint64_t
bytes
);
private
:
...
...
@@ -100,6 +100,8 @@ private:
private
:
uint64_t
_bytes
=
0
;
MediaInfo
_info
;
string
_peer_ip
;
uint16_t
_peer_port
;
std
::
shared_ptr
<
bool
>
_added
;
weak_ptr
<
HlsMediaSource
>
_src
;
Ticker
_ticker
;
...
...
This diff is collapsed.
Click to expand it.
src/Rtmp/RtmpSession.cpp
查看文件 @
7e255379
...
...
@@ -55,7 +55,7 @@ void RtmpSession::onError(const SockException& err) {
GET_CONFIG
(
uint32_t
,
iFlowThreshold
,
General
::
kFlowThreshold
);
if
(
_ui64TotalBytes
>
iFlowThreshold
*
1024
){
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_mediaInfo
,
_ui64TotalBytes
,
_ticker
.
createdTime
()
/
1000
,
isPlayer
);
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_mediaInfo
,
_ui64TotalBytes
,
_ticker
.
createdTime
()
/
1000
,
isPlayer
,
get_peer_ip
(),
get_peer_port
()
);
}
}
...
...
This diff is collapsed.
Click to expand it.
src/Rtsp/RtspSession.cpp
查看文件 @
7e255379
...
...
@@ -106,7 +106,7 @@ void RtspSession::onError(const SockException& err) {
//流量统计事件广播
GET_CONFIG
(
uint32_t
,
iFlowThreshold
,
General
::
kFlowThreshold
);
if
(
_ui64TotalBytes
>
iFlowThreshold
*
1024
){
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_mediaInfo
,
_ui64TotalBytes
,
_ticker
.
createdTime
()
/
1000
,
isPlayer
);
NoticeCenter
::
Instance
().
emitEvent
(
Broadcast
::
kBroadcastFlowReport
,
_mediaInfo
,
_ui64TotalBytes
,
_ticker
.
createdTime
()
/
1000
,
isPlayer
,
get_peer_ip
(),
get_peer_port
()
);
}
}
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论