diff --git a/server.js b/server.js index 94f5bf1225287..b286b662f0770 100644 --- a/server.js +++ b/server.js @@ -5874,21 +5874,22 @@ cache(function(data, match, sendBadge, request) { })); // Test if a webpage is online -camp.route(/^\/website(-(([^-]|--)*?)-(([^-]|--)*)(-(([^-]|--)+)-(([^-]|--)+))?)?\/([^/]+)\/(.+)\.(svg|png|gif|jpg|json)$/, +camp.route(/^\/website(-(([^-/]|--|\/\/)+)-(([^-/]|--|\/\/)+)(-(([^-/]|--|\/\/)+)-(([^-/]|--|\/\/)+))?)?(-(([^-/]|--|\/\/)+))?\/([^/]+)\/(.+)\.(svg|png|gif|jpg|json)$/, cache(function(data, match, sendBadge, request) { - var onlineMessage = escapeFormat(match[2] != null ? match[2] : "online"); - var offlineMessage = escapeFormat(match[4] != null ? match[4] : "offline"); - var onlineColor = escapeFormat(match[7] != null ? match[7] : "brightgreen"); - var offlineColor = escapeFormat(match[9] != null ? match[9] : "red"); - var userProtocol = match[11]; - var userURI = match[12]; - var format = match[13]; + var onlineMessage = escapeFormatSlashes(match[2] != null ? match[2] : "online"); + var offlineMessage = escapeFormatSlashes(match[4] != null ? match[4] : "offline"); + var onlineColor = escapeFormatSlashes(match[7] != null ? match[7] : "brightgreen"); + var offlineColor = escapeFormatSlashes(match[9] != null ? match[9] : "red"); + var label = escapeFormatSlashes(match[12] != null ? match[12] : "website"); + var userProtocol = match[14]; + var userURI = match[15]; + var format = match[16]; var withProtocolURI = userProtocol + "://" + userURI; var options = { method: 'HEAD', uri: withProtocolURI, }; - var badgeData = getBadgeData('website', data); + var badgeData = getBadgeData(label, data); badgeData.colorscheme = undefined; request(options, function(err, res) { // We consider all HTTP status codes below 310 as success. @@ -6332,6 +6333,13 @@ function escapeFormat(t) { .replace(/__/g, '_').replace(/--/g, '-'); } +function escapeFormatSlashes(t) { + return escapeFormat(t) + // Double slash + .replace(/\/\//g, '/'); +} + + function sixHex(s) { return /^[0-9a-fA-F]{6}$/.test(s); } function getLabel(label, data) { diff --git a/try.html b/try.html index 9acb97c84c859..1dee997c8e7ea 100644 --- a/try.html +++ b/try.html @@ -405,8 +405,8 @@
https://img.shields.io/chrome-web-store/d/nimelepbpejjlbmoobocpfnjhihnpked.svg
https://img.shields.io/website-up-down-green-red/http/shields.io.svg
https://img.shields.io/website-up-down-green-red-my--website/http/shields.io.svg
…/website/…
…/website-label/…
…/website-up-down/…
…/website-up-down-label/…
…/website-up-down-green-orange/…
…/website-up-down-green-orange-label/…
Dashes --
@@ -1239,6 +1245,10 @@ Like This? | → | _ Underscore |
Slashes //
+ | → + | / Slash + |
_ or Space
| → | Space
|