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
28d20955
Commit
28d20955
authored
5 years ago
by
xiongziliang
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
http服务器支持查找index.html文件
parent
4c398216
隐藏空白字符变更
内嵌
并排
正在显示
1 个修改的文件
包含
42 行增加
和
13 行删除
+42
-13
src/Http/HttpSession.cpp
+42
-13
没有找到文件。
src/Http/HttpSession.cpp
查看文件 @
28d20955
...
@@ -266,6 +266,25 @@ inline bool HttpSession::checkLiveFlvStream(){
...
@@ -266,6 +266,25 @@ inline bool HttpSession::checkLiveFlvStream(){
inline
bool
makeMeun
(
const
string
&
httpPath
,
const
string
&
strFullPath
,
const
string
&
vhost
,
string
&
strRet
)
;
inline
bool
makeMeun
(
const
string
&
httpPath
,
const
string
&
strFullPath
,
const
string
&
vhost
,
string
&
strRet
)
;
inline
static
string
findIndexFile
(
const
string
&
dir
){
DIR
*
pDir
;
dirent
*
pDirent
;
if
((
pDir
=
opendir
(
dir
.
data
()))
==
NULL
)
{
return
""
;
}
set
<
string
>
setFile
;
while
((
pDirent
=
readdir
(
pDir
))
!=
NULL
)
{
static
set
<
const
char
*
,
StrCaseCompare
>
indexSet
=
{
"index.html"
,
"index.htm"
,
"index"
};
if
(
indexSet
.
find
(
pDirent
->
d_name
)
!=
indexSet
.
end
()){
closedir
(
pDir
);
return
pDirent
->
d_name
;
}
}
closedir
(
pDir
);
return
""
;
}
inline
bool
HttpSession
::
Handle_Req_GET
(
int64_t
&
content_len
)
{
inline
bool
HttpSession
::
Handle_Req_GET
(
int64_t
&
content_len
)
{
//先看看是否为WebSocket请求
//先看看是否为WebSocket请求
if
(
checkWebSocket
()){
if
(
checkWebSocket
()){
...
@@ -299,20 +318,30 @@ inline bool HttpSession::Handle_Req_GET(int64_t &content_len) {
...
@@ -299,20 +318,30 @@ inline bool HttpSession::Handle_Req_GET(int64_t &content_len) {
GET_CONFIG_AND_REGISTER
(
string
,
rootPath
,
Http
::
kRootPath
);
GET_CONFIG_AND_REGISTER
(
string
,
rootPath
,
Http
::
kRootPath
);
string
strFile
=
enableVhost
?
rootPath
+
"/"
+
_mediaInfo
.
_vhost
+
_parser
.
Url
()
:
rootPath
+
_parser
.
Url
();
string
strFile
=
enableVhost
?
rootPath
+
"/"
+
_mediaInfo
.
_vhost
+
_parser
.
Url
()
:
rootPath
+
_parser
.
Url
();
replace
(
strFile
,
"//"
,
"/"
);
replace
(
strFile
,
"//"
,
"/"
);
bool
bClose
=
(
strcasecmp
(
_parser
[
"Connection"
].
data
(),
"close"
)
==
0
)
||
(
++
_iReqCnt
>
reqCnt
);
bool
bClose
=
(
strcasecmp
(
_parser
[
"Connection"
].
data
(),
"close"
)
==
0
)
||
(
++
_iReqCnt
>
reqCnt
);
//访问的是文件夹
if
(
strFile
.
back
()
==
'/'
||
File
::
is_dir
(
strFile
.
data
()))
{
do
{
//生成文件夹菜单索引
//访问的是文件夹
string
strMeun
;
if
(
strFile
.
back
()
==
'/'
||
File
::
is_dir
(
strFile
.
data
()))
{
if
(
!
makeMeun
(
_parser
.
Url
(),
strFile
,
_mediaInfo
.
_vhost
,
strMeun
))
{
auto
indexFile
=
findIndexFile
(
strFile
);
//文件夹不存在
if
(
!
indexFile
.
empty
()){
sendNotFound
(
bClose
);
//发现该文件夹下有index文件
return
!
bClose
;
strFile
=
strFile
+
"/"
+
indexFile
;
}
replace
(
strFile
,
"//"
,
"/"
);
sendResponse
(
"200 OK"
,
makeHttpHeader
(
bClose
,
strMeun
.
size
()
),
strMeun
);
break
;
return
!
bClose
;
}
}
//生成文件夹菜单索引
string
strMeun
;
if
(
!
makeMeun
(
_parser
.
Url
(),
strFile
,
_mediaInfo
.
_vhost
,
strMeun
))
{
//文件夹不存在
sendNotFound
(
bClose
);
return
!
bClose
;
}
sendResponse
(
"200 OK"
,
makeHttpHeader
(
bClose
,
strMeun
.
size
()
),
strMeun
);
return
!
bClose
;
}
}
while
(
0
);
//访问的是文件
//访问的是文件
struct
stat
tFileStat
;
struct
stat
tFileStat
;
if
(
0
!=
stat
(
strFile
.
data
(),
&
tFileStat
))
{
if
(
0
!=
stat
(
strFile
.
data
(),
&
tFileStat
))
{
...
...
This diff is collapsed.
Click to expand it.
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论