diff --git a/core/src/main/java/hudson/Functions.java b/core/src/main/java/hudson/Functions.java index 663de31dd6..3ce3e03883 100644 --- a/core/src/main/java/hudson/Functions.java +++ b/core/src/main/java/hudson/Functions.java @@ -1874,7 +1874,7 @@ public class Functions { /** * Obtains the host name of the Hudson server that clients can use to talk back to. *
- * This is primarily used in {@code slave-agent.jnlp.jelly} to specify the destination
+ * This is primarily used in {@code jenkins-agent.jnlp.jelly} to specify the destination
* that the agents talk to.
*/
public String getServerName() {
diff --git a/core/src/main/java/hudson/slaves/SlaveComputer.java b/core/src/main/java/hudson/slaves/SlaveComputer.java
index eff15c5dd1..9d79829343 100644
--- a/core/src/main/java/hudson/slaves/SlaveComputer.java
+++ b/core/src/main/java/hudson/slaves/SlaveComputer.java
@@ -814,13 +814,24 @@ public class SlaveComputer extends Computer {
@WebMethod(name="slave-agent.jnlp")
public HttpResponse doSlaveAgentJnlp(StaplerRequest req, StaplerResponse res) {
- return new EncryptedSlaveAgentJnlpFile(this, "slave-agent.jnlp.jelly", getName(), CONNECT);
+
+ return doJenkinsAgentJnlp(req, res);
+ }
+
+ @WebMethod(name="jenkins-agent.jnlp")
+ public HttpResponse doJenkinsAgentJnlp(StaplerRequest req, StaplerResponse res) {
+ return new EncryptedSlaveAgentJnlpFile(this, "jenkins-agent.jnlp.jelly", getName(), CONNECT);
}
class LowPermissionResponse {
+ @WebMethod(name="jenkins-agent.jnlp")
+ public HttpResponse doJenkinsAgentJnlp(StaplerRequest req, StaplerResponse res) {
+ return SlaveComputer.this.doJenkinsAgentJnlp(req, res);
+ }
+
@WebMethod(name="slave-agent.jnlp")
public HttpResponse doSlaveAgentJnlp(StaplerRequest req, StaplerResponse res) {
- return SlaveComputer.this.doSlaveAgentJnlp(req, res);
+ return SlaveComputer.this.doJenkinsAgentJnlp(req, res);
}
}
diff --git a/core/src/main/java/jenkins/model/Jenkins.java b/core/src/main/java/jenkins/model/Jenkins.java
index 8cdfaa0cf7..9286a93bd4 100644
--- a/core/src/main/java/jenkins/model/Jenkins.java
+++ b/core/src/main/java/jenkins/model/Jenkins.java
@@ -4820,7 +4820,7 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
}
// TODO SlaveComputer.doSlaveAgentJnlp; there should be an annotation to request unprotected access
- if (restOfPath.matches("/computer/[^/]+/slave-agent[.]jnlp")
+ if ((isAgentJnlpPath(restOfPath, "jenkins") || (isAgentJnlpPath(restOfPath, "slave")))
&& "true".equals(Stapler.getCurrentRequest().getParameter("encrypt"))) {
return false;
}
@@ -4828,6 +4828,10 @@ public class Jenkins extends AbstractCIBase implements DirectlyModifiableTopLeve
return true;
}
+ private boolean isAgentJnlpPath(String restOfPath, String prefix) {
+ return restOfPath.matches("/computer/[^/]+/" + prefix+ "-agent[.]jnlp");
+ }
+
/**
* Gets a list of unprotected root actions.
* These URL prefixes should be exempted from access control checks by container-managed security.
diff --git a/core/src/main/resources/hudson/slaves/JNLPLauncher/main.jelly b/core/src/main/resources/hudson/slaves/JNLPLauncher/main.jelly
index 404e30b9f0..3cade5dd6a 100644
--- a/core/src/main/resources/hudson/slaves/JNLPLauncher/main.jelly
+++ b/core/src/main/resources/hudson/slaves/JNLPLauncher/main.jelly
@@ -41,7 +41,7 @@ THE SOFTWARE.
-
+
${%Run from agent command line:}
${%Or if the agent is headless:}
${%Launch agent from browser}
@@ -64,13 +64,13 @@ THE SOFTWARE.
javaws ${h.inferHudsonURL(request)}${it.url}slave-agent.jnlp
+ javaws ${h.inferHudsonURL(request)}${it.url}jenkins-agent.jnlp
java${it.launcher.vmargs == null ? '' : ' ' + it.launcher.vmargs} -jar agent.jar -jnlpUrl ${h.inferHudsonURL(request)}${it.url}slave-agent.jnlp ${it.launcher.getWorkDirOptions(it)}
+ java${it.launcher.vmargs == null ? '' : ' ' + it.launcher.vmargs} -jar agent.jar -jnlpUrl ${h.inferHudsonURL(request)}${it.url}jenkins-agent.jnlp ${it.launcher.getWorkDirOptions(it)}
java${it.launcher.vmargs == null ? '' : ' ' + it.launcher.vmargs} -jar agent.jar -jnlpUrl ${h.inferHudsonURL(request)}${it.url}slave-agent.jnlp -secret ${it.jnlpMac} ${it.launcher.getWorkDirOptions(it)}
+ java${it.launcher.vmargs == null ? '' : ' ' + it.launcher.vmargs} -jar agent.jar -jnlpUrl ${h.inferHudsonURL(request)}${it.url}jenkins-agent.jnlp -secret ${it.jnlpMac} ${it.launcher.getWorkDirOptions(it)}
${%Run from agent command line, with the secret stored in a file:}
echo ${it.jnlpMac} > secret-file
-java${it.launcher.vmargs == null ? '' : ' ' + it.launcher.vmargs} -jar agent.jar -jnlpUrl ${h.inferHudsonURL(request)}${it.url}slave-agent.jnlp -secret @secret-file ${it.launcher.getWorkDirOptions(it)}
+java${it.launcher.vmargs == null ? '' : ' ' + it.launcher.vmargs} -jar agent.jar -jnlpUrl ${h.inferHudsonURL(request)}${it.url}jenkins-agent.jnlp -secret @secret-file ${it.launcher.getWorkDirOptions(it)}
diff --git a/core/src/main/resources/hudson/slaves/SlaveComputer/jenkins-agent.jnlp.jelly b/core/src/main/resources/hudson/slaves/SlaveComputer/jenkins-agent.jnlp.jelly
new file mode 100644
index 0000000000..6e4dcc41ff
--- /dev/null
+++ b/core/src/main/resources/hudson/slaves/SlaveComputer/jenkins-agent.jnlp.jelly
@@ -0,0 +1,95 @@
+
+
+
+