Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
xxadev
jenkins
提交
f574224c
J
jenkins
项目概览
xxadev
/
jenkins
与 Fork 源项目一致
从无法访问的项目Fork
通知
3
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,发现更多精彩内容 >>
提交
f574224c
编写于
11月 11, 2016
作者:
K
Kohsuke Kawaguchi
提交者:
GitHub
11月 11, 2016
浏览文件
操作
浏览文件
下载
差异文件
Merge pull request #71 from jenkinsci-cert/SECURITY-360
[SECURITY-360] system property to disable CLI
上级
0f5e70f1
fde9c42f
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
86 addition
and
5 deletion
+86
-5
core/src/main/java/hudson/cli/CLIAction.java
core/src/main/java/hudson/cli/CLIAction.java
+1
-2
core/src/main/java/hudson/cli/CliProtocol.java
core/src/main/java/hudson/cli/CliProtocol.java
+1
-1
core/src/main/java/hudson/cli/CliProtocol2.java
core/src/main/java/hudson/cli/CliProtocol2.java
+1
-1
core/src/main/java/jenkins/CLI.java
core/src/main/java/jenkins/CLI.java
+17
-0
pom.xml
pom.xml
+1
-1
test/src/test/java/jenkins/CLITest.java
test/src/test/java/jenkins/CLITest.java
+65
-0
未找到文件。
core/src/main/java/hudson/cli/CLIAction.java
浏览文件 @
f574224c
...
...
@@ -62,12 +62,11 @@ public class CLIAction implements UnprotectedRootAction, StaplerProxy {
}
public
String
getDisplayName
()
{
return
"Jenkins CLI"
;
}
public
String
getUrlName
()
{
return
"cli"
;
return
jenkins
.
CLI
.
DISABLED
?
null
:
"cli"
;
}
public
void
doCommand
(
StaplerRequest
req
,
StaplerResponse
rsp
)
throws
ServletException
,
IOException
{
...
...
core/src/main/java/hudson/cli/CliProtocol.java
浏览文件 @
f574224c
...
...
@@ -32,7 +32,7 @@ public class CliProtocol extends AgentProtocol {
@Override
public
String
getName
()
{
return
"CLI-connect"
;
return
jenkins
.
CLI
.
DISABLED
?
null
:
"CLI-connect"
;
}
@Override
...
...
core/src/main/java/hudson/cli/CliProtocol2.java
浏览文件 @
f574224c
...
...
@@ -24,7 +24,7 @@ import java.security.Signature;
public
class
CliProtocol2
extends
CliProtocol
{
@Override
public
String
getName
()
{
return
"CLI2-connect"
;
return
jenkins
.
CLI
.
DISABLED
?
null
:
"CLI2-connect"
;
}
@Override
...
...
core/src/main/java/jenkins/CLI.java
0 → 100644
浏览文件 @
f574224c
package
jenkins
;
import
org.kohsuke.accmod.Restricted
;
import
org.kohsuke.accmod.restrictions.NoExternalUse
;
/**
* Kill switch to disable the entire Jenkins CLI system.
*
* Marked as no external use because the CLI subsystem is nearing EOL.
*
* @author Kohsuke Kawaguchi
*/
@Restricted
(
NoExternalUse
.
class
)
public
class
CLI
{
// non-final to allow setting from $JENKINS_HOME/init.groovy.d
public
static
boolean
DISABLED
=
Boolean
.
getBoolean
(
CLI
.
class
.
getName
()+
".disabled"
);
}
pom.xml
浏览文件 @
f574224c
...
...
@@ -179,7 +179,7 @@ THE SOFTWARE.
<dependency>
<groupId>
org.jenkins-ci.main
</groupId>
<artifactId>
remoting
</artifactId>
<version>
2.53.3
-20160211.162333-3
</version>
<version>
2.53.3
</version>
</dependency>
<dependency>
...
...
test/src/test/java/jenkins/CLITest.java
0 → 100644
浏览文件 @
f574224c
package
jenkins
;
import
hudson.cli.FullDuplexHttpStream
;
import
hudson.model.Computer
;
import
hudson.model.Failure
;
import
hudson.remoting.Channel
;
import
org.junit.Rule
;
import
org.junit.Test
;
import
org.jvnet.hudson.test.JenkinsRule
;
import
java.io.FileNotFoundException
;
import
java.net.URL
;
import
static
org
.
junit
.
Assert
.*;
/**
* @author Kohsuke Kawaguchi
*/
public
class
CLITest
{
@Rule
public
JenkinsRule
j
=
new
JenkinsRule
();
/**
* Checks if the kill switch works correctly
*/
@Test
public
void
killSwitch
()
throws
Exception
{
// this should succeed, as a control case
makeHttpCall
();
makeJnlpCall
();
CLI
.
DISABLED
=
true
;
try
{
try
{
makeHttpCall
();
fail
(
"Should have been rejected"
);
}
catch
(
FileNotFoundException
e
)
{
// attempt to make a call should fail
}
try
{
makeJnlpCall
();
fail
(
"Should have been rejected"
);
}
catch
(
Exception
e
)
{
// attempt to make a call should fail
e
.
printStackTrace
();
// the current expected failure mode is EOFException, though we don't really care how it fails
}
}
finally
{
CLI
.
DISABLED
=
false
;
}
}
private
void
makeHttpCall
()
throws
Exception
{
FullDuplexHttpStream
con
=
new
FullDuplexHttpStream
(
new
URL
(
j
.
getURL
(),
"cli"
));
Channel
ch
=
new
Channel
(
"test connection"
,
Computer
.
threadPoolForRemoting
,
con
.
getInputStream
(),
con
.
getOutputStream
());
ch
.
close
();
}
private
void
makeJnlpCall
()
throws
Exception
{
int
r
=
hudson
.
cli
.
CLI
.
_main
(
new
String
[]{
"-s"
,
j
.
getURL
().
toString
(),
"version"
});
if
(
r
!=
0
)
throw
new
Failure
(
"CLI failed"
);
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录