Class ReverseProxySetupMonitor
- java.lang.Object
-
- hudson.model.AbstractModelObject
-
- hudson.model.AdministrativeMonitor
-
- hudson.diagnosis.ReverseProxySetupMonitor
-
- All Implemented Interfaces:
ExtensionPoint
,ModelObject
,SearchableModelObject
,SearchItem
,org.kohsuke.stapler.StaplerProxy
@Extension @Symbol("reverseProxy") public class ReverseProxySetupMonitor extends AdministrativeMonitor
Looks out for a broken reverse proxy setup that doesn't rewrite the location header correctly.Have the JavaScript make an AJAX call, to which we respond with 302 redirect. If the reverse proxy is done correctly, this will be handled by web methods, but otherwise we'll report that as an error. Unfortunately,
XmlHttpRequest
doesn't expose properties that allow the client-side JavaScript to learn the details of the failure, so we have to make do with limited information.- Author:
- Kohsuke Kawaguchi
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface hudson.ExtensionPoint
ExtensionPoint.LegacyInstancesAreScopedToHudson
-
-
Field Summary
-
Fields inherited from class hudson.model.AdministrativeMonitor
id
-
-
Constructor Summary
Constructors Constructor Description ReverseProxySetupMonitor()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description org.kohsuke.stapler.HttpResponse
doAct(String no)
Depending on whether the user said "yes" or "no", send him to the right place.org.kohsuke.stapler.HttpResponse
doTest(org.kohsuke.stapler.StaplerRequest request, boolean testWithContext)
String
getDisplayName()
Permission
getRequiredPermission()
Required permission to view this admin monitor.void
getTestForReverseProxySetup(String rest)
boolean
isActivated()
Returns true if this monitor is activated and wants to produce a warning message.-
Methods inherited from class hudson.model.AdministrativeMonitor
all, disable, doDisable, getSearchUrl, getTarget, getUrl, isEnabled, isSecurity
-
Methods inherited from class hudson.model.AbstractModelObject
getSearch, getSearchIndex, getSearchName, makeSearchIndex, requirePOST, sendError, sendError, sendError, sendError, sendError
-
-
-
-
Method Detail
-
isActivated
public boolean isActivated()
Description copied from class:AdministrativeMonitor
Returns true if this monitor is activated and wants to produce a warning message.This method is called from the HTML rendering thread, so it should run efficiently.
- Specified by:
isActivated
in classAdministrativeMonitor
-
doTest
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) @RestrictedSince("2.235") public org.kohsuke.stapler.HttpResponse doTest(org.kohsuke.stapler.StaplerRequest request, @QueryParameter boolean testWithContext)
-
getTestForReverseProxySetup
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) @RestrictedSince("2.235") @StaplerDispatchable public void getTestForReverseProxySetup(String rest)
-
getRequiredPermission
public Permission getRequiredPermission()
Description copied from class:AdministrativeMonitor
Required permission to view this admin monitor. By defaultJenkins.ADMINISTER
, butJenkins.SYSTEM_READ
is also supported.Changing this permission check to return
Jenkins.SYSTEM_READ
will make the active administrative monitor appear onmanage.jelly
and on the globally visibleAdministrativeMonitorsDecorator
to users without Administer permission.AdministrativeMonitor.doDisable(StaplerRequest, StaplerResponse)
will still always require Administer permission.Implementers need to ensure that
doAct
and other web methods perform necessary permission checks: Users with System Read permissions are expected to be limited to read-only access. Form UI elements that change system state, e.g. toggling a feature on or off, need to be hidden from users lacking Administer permission.- Overrides:
getRequiredPermission
in classAdministrativeMonitor
-
doAct
@Restricted(org.kohsuke.accmod.restrictions.DoNotUse.class) @RestrictedSince("2.235") public org.kohsuke.stapler.HttpResponse doAct(@QueryParameter String no) throws IOException
Depending on whether the user said "yes" or "no", send him to the right place.- Throws:
IOException
-
getDisplayName
public String getDisplayName()
- Specified by:
getDisplayName
in interfaceModelObject
- Overrides:
getDisplayName
in classAdministrativeMonitor
-
-