Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
野花太放肆
jenkins
提交
f3599aa5
J
jenkins
项目概览
野花太放肆
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
f3599aa5
编写于
4月 08, 2020
作者:
O
Oleg Nenashev
提交者:
GitHub
4月 08, 2020
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #4614 from daniel-beck/FileParameterValue-DBS
Use DirectoryBrowserSupport to serve FileParameterValue
上级
e7efc567
bc8ea6cd
变更
4
隐藏空白更改
内联
并排
Showing
4 changed file
with
25 addition
and
50 deletion
+25
-50
core/src/main/java/hudson/model/FileParameterValue.java
core/src/main/java/hudson/model/FileParameterValue.java
+4
-39
core/src/main/resources/hudson/model/FileParameterValue/value.jelly
...ain/resources/hudson/model/FileParameterValue/value.jelly
+18
-11
core/src/main/resources/hudson/model/FileParameterValue/value.properties
...esources/hudson/model/FileParameterValue/value.properties
+1
-0
core/src/main/resources/hudson/model/Messages.properties
core/src/main/resources/hudson/model/Messages.properties
+2
-0
未找到文件。
core/src/main/java/hudson/model/FileParameterValue.java
浏览文件 @
f3599aa5
...
...
@@ -226,46 +226,11 @@ public class FileParameterValue extends ParameterValue {
*
* @param request
* @param response
* @throws ServletException
* @throws IOException
*/
public
void
doDynamic
(
StaplerRequest
request
,
StaplerResponse
response
)
throws
ServletException
,
IOException
{
if
((
"/"
+
originalFileName
).
equals
(
request
.
getRestOfPath
()))
{
AbstractBuild
build
=
(
AbstractBuild
)
request
.
findAncestor
(
AbstractBuild
.
class
).
getObject
();
File
fileParameter
=
getLocationUnderBuild
(
build
);
if
(!
ALLOW_FOLDER_TRAVERSAL_OUTSIDE_WORKSPACE
)
{
File
fileParameterFolder
=
getFileParameterFolderUnderBuild
(
build
);
//TODO can be replaced by Util#isDescendant in 2.80+
Path
child
=
fileParameter
.
getAbsoluteFile
().
toPath
().
normalize
();
Path
parent
=
fileParameterFolder
.
getAbsoluteFile
().
toPath
().
normalize
();
if
(!
child
.
startsWith
(
parent
))
{
throw
new
IllegalStateException
(
"The fileParameter tried to escape the expected folder: "
+
location
);
}
}
if
(
fileParameter
.
isFile
())
{
try
(
InputStream
data
=
Files
.
newInputStream
(
fileParameter
.
toPath
()))
{
long
lastModified
=
fileParameter
.
lastModified
();
long
contentLength
=
fileParameter
.
length
();
if
(
request
.
hasParameter
(
"view"
))
{
response
.
serveFile
(
request
,
data
,
lastModified
,
contentLength
,
"plain.txt"
);
}
else
{
String
csp
=
SystemProperties
.
getString
(
DirectoryBrowserSupport
.
class
.
getName
()
+
".CSP"
,
DirectoryBrowserSupport
.
DEFAULT_CSP_VALUE
);
if
(!
csp
.
trim
().
equals
(
""
))
{
// allow users to prevent sending this header by setting empty system property
for
(
String
header
:
new
String
[]{
"Content-Security-Policy"
,
"X-WebKit-CSP"
,
"X-Content-Security-Policy"
})
{
response
.
setHeader
(
header
,
csp
);
}
}
response
.
serveFile
(
request
,
data
,
lastModified
,
contentLength
,
originalFileName
);
}
}
catch
(
InvalidPathException
e
)
{
throw
new
IOException
(
e
);
}
}
}
public
DirectoryBrowserSupport
doDynamic
(
StaplerRequest
request
,
StaplerResponse
response
)
{
AbstractBuild
build
=
(
AbstractBuild
)
request
.
findAncestor
(
AbstractBuild
.
class
).
getObject
();
File
fileParameter
=
getFileParameterFolderUnderBuild
(
build
);
return
new
DirectoryBrowserSupport
(
build
,
new
FilePath
(
fileParameter
),
Messages
.
FileParameterValue_IndexTitle
(),
"folder.png"
,
false
);
}
/**
...
...
core/src/main/resources/hudson/model/FileParameterValue/value.jelly
浏览文件 @
f3599aa5
...
...
@@ -26,16 +26,23 @@ THE SOFTWARE.
<j:jelly xmlns:j="jelly:core" xmlns:st="jelly:stapler" xmlns:d="jelly:define"
xmlns:l="/lib/layout" xmlns:t="/lib/hudson" xmlns:f="/lib/form"
xmlns:i="jelly:fmt" xmlns:p="/lib/hudson/project">
<j:set var="escapeEntryTitleAndDescription" value="false"/>
<f:entry title="${h.escape(it.name)}" description="${it.formattedDescription}">
<j:if test="${it.originalFileName != null}">
<j:invokeStatic var="encodedName" className="hudson.Util" method="rawEncode">
<j:arg value="${it.name}" />
</j:invokeStatic>
<j:set var="path" value="parameter/${encodedName}/${it.originalFileName}"/>
<a href="${path}">${it.originalFileName}</a>
<st:nbsp/>
<a href="${path}?view">${%view}</a>
</j:if>
<j:set var="escapeEntryTitleAndDescription" value="false"/>
<f:entry title="${h.escape(it.name)}" description="${it.formattedDescription}">
<j:choose>
<j:when test="${it.originalFileName != null and it.originalFileName != ''}">
<j:invokeStatic var="encodedName" className="hudson.Util" method="rawEncode">
<j:arg value="${it.name}" />
</j:invokeStatic>
<j:set var="path" value="parameter/${encodedName}/${encodedName}"/>
<a href="${path}">${%open}</a>
<st:nbsp/>
<a href="${path}/*view*">${%view}</a>
</j:when>
<j:otherwise>
<em>
${%nofile}
</em>
</j:otherwise>
</j:choose>
</f:entry>
</j:jelly>
\ No newline at end of file
core/src/main/resources/hudson/model/FileParameterValue/value.properties
0 → 100644
浏览文件 @
f3599aa5
nofile
=
(No file was uploaded)
core/src/main/resources/hudson/model/Messages.properties
浏览文件 @
f3599aa5
...
...
@@ -412,3 +412,5 @@ ManagementLink.Category.TROUBLESHOOTING=Troubleshooting
ManagementLink.Category.TOOLS
=
Tools and Actions
ManagementLink.Category.MISC
=
Other
ManagementLink.Category.UNCATEGORIZED
=
Uncategorized
FileParameterValue.IndexTitle
=
File Parameters
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录