jenkinsci / customizable-header-plugin

Customizable header for Jenkins
https://plugins.jenkins.io/customizable-header/
MIT License
5 stars 3 forks source link

Host-relative application link logo URL is concatenated to Jenkins root URL #38

Closed KalleOlaviNiemitalo closed 1 year ago

KalleOlaviNiemitalo commented 1 year ago

Jenkins and plugins versions report

Environment ```text Jenkins: 2.414.3 OS: Windows Server 2012 R2 - 6.3 Java: 17.0.8.1 - Eclipse Adoptium (OpenJDK 64-Bit Server VM) --- Office-365-Connector:4.20.0 analysis-model-api:11.11.0 ansicolor:1.0.4 antisamy-markup-formatter:162.v0e6ec0fcfcf6 apache-httpcomponents-client-4-api:4.5.14-208.v438351942757 atlassian-bitbucket-server-integration:4.0.0 authentication-tokens:1.53.v1c90fd9191a_b_ authorize-project:1.7.1 azure-ad:412.vdf45b_6a_b_da_81 azure-sdk:157.v855da_0b_eb_dc2 basic-branch-build-strategies:81.v05e333931c7d bitbucket-server-checks:1.0-SNAPSHOT (private-49d94041-kalle) bootstrap5-api:5.3.2-2 bouncycastle-api:2.29 branch-api:2.1128.v717130d4f816 buildtriggerbadge:251.vdf6ef853f3f5 caffeine-api:3.1.8-133.v17b_1ff2e0599 checks-api:2.0.2 cloudbees-bitbucket-branch-source:848.v42c6a_317eda_e cloudbees-disk-usage-simple:187.v6378d330d1d4 cloudbees-folder:6.858.v898218f3609d command-launcher:107.v773860566e2e commons-httpclient3-api:3.1-3 commons-lang3-api:3.13.0-62.v7d18e55f51e2 commons-text-api:1.10.0-78.v3e7b_ea_d5a_fe1 compress-artifacts:98.vb_20f3c77ddf7 configuration-as-code:1714.v09593e830cfa copyartifact:722.v0662a_9b_e22a_c credentials:1304.v5ec13eecef46 credentials-binding:642.v737c34dea_6c2 customizable-header:40.v2e0e4f17e70c data-tables-api:1.13.6-5 display-url-api:2.200.vb_9327d658781 dtkit-api:3.0.2 durable-task:523.va_a_22cf15d5e0 echarts-api:5.4.0-7 extended-read-permission:53.v6499940139e5 fast-track:1.0.0 font-awesome-api:6.4.2-1 forensics-api:2.3.0 git:5.2.0 git-client:4.5.0 git-forensics:2.0.0 handy-uri-templates-2-api:2.1.8-22.v77d5b_75e6953 hudson-wsclean-plugin:1.0.8 instance-identity:173.va_37c494ec4e5 ionicons-api:56.v1b_1c8c49374e jackson2-api:2.15.3-366.vfe8d1fa_f8c87 jakarta-activation-api:2.0.1-3 jakarta-mail-api:2.0.1-3 javax-activation-api:1.2.0-6 javax-mail-api:1.6.2-9 jaxb:2.3.9-1 jdk-tool:73.vddf737284550 jersey2-api:2.41-133.va_03323b_a_1396 jira:3.11 job-restrictions:0.8 jquery3-api:3.7.1-1 junit:1240.vf9529b_881428 lockable-resources:1185.v0c528656ce04 mailer:463.vedf8358e006b_ manage-permission:1.0.1 matrix-auth:3.2.1 matrix-project:818.v7eb_e657db_924 metrics:4.2.18-442.v02e107157925 mina-sshd-api-common:2.11.0-86.v836f585d47fa_ mina-sshd-api-core:2.11.0-86.v836f585d47fa_ okhttp-api:4.11.0-157.v6852a_a_fa_ec11 pipeline-build-step:505.v5f0844d8d126 pipeline-graph-analysis:202.va_d268e64deb_3 pipeline-graph-view:202.v6da_a_9e590325 pipeline-groovy-lib:689.veec561a_dee13 pipeline-input-step:477.v339683a_8d55e pipeline-milestone-step:111.v449306f708b_7 pipeline-model-api:2.2144.v077a_d1928a_40 pipeline-model-definition:2.2144.v077a_d1928a_40 pipeline-model-extensions:2.2144.v077a_d1928a_40 pipeline-rest-api:2.33 pipeline-stage-step:305.ve96d0205c1c6 pipeline-stage-tags-metadata:2.2144.v077a_d1928a_40 pipeline-stage-view:2.33 pipeline-utility-steps:2.16.0 plain-credentials:143.v1b_df8b_d3b_e48 plugin-util-api:3.6.0 prism-api:1.29.0-8 resource-disposer:0.23 scm-api:676.v886669a_199a_a_ script-security:1275.v23895f409fb_d sidebar-link:2.4.1 simple-queue:1.4.4 snakeyaml-api:2.2-111.vc6598e30cc65 ssh-credentials:308.ve4497b_ccd8f4 sshd:3.312.v1c601b_c83b_0e structs:325.vcb_307d2a_2782 timestamper:1.26 token-macro:384.vf35b_f26814ec trilead-api:2.84.v72119de229b_7 variant:60.v7290fc0eb_b_cd warnings-ng:10.5.1 workflow-aggregator:596.v8c21c963d92d workflow-api:1283.v99c10937efcb_ workflow-basic-steps:1042.ve7b_140c4a_e0c workflow-cps:3806.va_3a_6988277b_2 workflow-durable-task-step:1289.v4d3e7b_01546b_ workflow-job:1360.vc6700e3136f5 workflow-multibranch:756.v891d88f2cd46 workflow-scm-step:415.v434365564324 workflow-step-api:639.v6eca_cd8c04a_a_ workflow-support:865.v43e78cc44e0d ws-cleanup:0.45 xunit:3.1.3 ```

What Operating System are you using (both controller, and any agents involved in the problem)?

Windows

Reproduction steps

  1. Install Jenkins at HTTP context path "/jenkins/".
  2. Install the customizable header plugin.
  3. Define an application link and set "/jenkins/userContent/jira.png" as its logo URL.

Expected Results

The image source URL should be https://example.com/jenkins/userContent/sidebar/jira.png or just /jenkins/userContent/sidebar/jira.png.

<a class="jenkins-dropdown__item" href="http://jira.example.com/" target="_blank">
      <div class="jenkins-dropdown__item__icon"><img alt="Example Jira" src="https://example.com/jenkins/userContent/sidebar/jira.png"></div>
      Example Jira
    </a>

Actual Results

The image source URL is https://example.com/jenkins//jenkins/userContent/sidebar/jira.png.

<a class="jenkins-dropdown__item" href="http://jira.example.com/" target="_blank">
      <div class="jenkins-dropdown__item__icon"><img alt="Example Jira" src="https://example.com/jenkins//jenkins/userContent/sidebar/jira.png"></div>
      Example Jira
    </a>

Anything else?

I originally had to include /jenkins/ in the logo URL as a workaround, as described in https://github.com/jenkinsci/customizable-header-plugin/issues/25#issuecomment-1769038398. Now with Customizable Header Version 40.v2e0e4f17e70c, this workaround instead causes the image not to be displayed.

Although the host-relative URL was a workaround, it could also be used for referencing non-Jenkins applications at the same host. If such an installation is deliberately not supported (e.g. for cross-origin security reasons), that would be good to call out in the description of the logo URL setting.

mawinter69 commented 1 year ago

The help of the image url explicitly states: An absolute url or an url relative to the root url of Jenkins.