Class 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
  • Constructor Details

    • ReverseProxySetupMonitor

      public ReverseProxySetupMonitor()
  • Method Details

    • 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 class AdministrativeMonitor
    • 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 default Jenkins.ADMINISTER, but Jenkins.SYSTEM_READ is also supported.

      Changing this permission check to return Jenkins.SYSTEM_READ will make the active administrative monitor appear on manage.jelly and on the globally visible AdministrativeMonitorsDecorator 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 class AdministrativeMonitor
    • 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 interface ModelObject
      Overrides:
      getDisplayName in class AdministrativeMonitor