1
0
mirror of https://github.com/simple-icons/simple-icons.git synced 2024-11-16 00:59:07 +02:00

Forbid the usage of non secure URLs (#7855)

* Forbid the usage of non secure URLs

* Document in CONTRIBUTING

* Add test to forbid HTTP URLs in documentation pages
This commit is contained in:
Álvaro Mondéjar 2022-09-24 17:37:03 +02:00 committed by GitHub
parent ad7de0434e
commit 3ee620b9d6
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
7 changed files with 112 additions and 81 deletions

View File

@ -231,8 +231,9 @@
}, },
"url": { "url": {
"$id": "#url", "$id": "#url",
"description": "HTTPS-only URL for a source",
"type": "string", "type": "string",
"pattern": "^https?://[^\\s]+$" "pattern": "^https://[^\\s]+$"
} }
}, },
"type": "object", "type": "object",

View File

@ -291,6 +291,8 @@ Here is the object of the fictional brand from before, but with all optional val
} }
``` ```
> Non secured HTTP URLs are forbidden. If a brand's website only supports HTTP, you must still declare the URL using the `https://` protocol.
#### Source Guidelines #### Source Guidelines
We use the source URL as a reference for the current SVG in our repository and as a jumping-off point to find updates if the logo changes. If you used one of the sources listed below, make sure to follow these guidelines. If you're unsure about the source URL you can open a Pull Request and ask for help from others. We use the source URL as a reference for the current SVG in our repository and as a jumping-off point to find updates if the logo changes. If you used one of the sources listed below, make sure to follow these guidelines. If you're unsure about the source URL you can open a Pull Request and ask for help from others.

View File

@ -27,4 +27,4 @@ For these and/or other purposes and motivations, and without any expectation of
3. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person’s Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work. 3. Affirmer disclaims responsibility for clearing rights of other persons that may apply to the Work or any use thereof, including without limitation any person’s Copyright and Related Rights in the Work. Further, Affirmer disclaims responsibility for obtaining any necessary consents, permissions or other rights required for any use of the Work.
4. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work. 4. Affirmer understands and acknowledges that Creative Commons is not a party to this document and has no duty or obligation with respect to this CC0 or use of the Work.
For more information, please see http://creativecommons.org/publicdomain/zero/1.0/. For more information, please see https://creativecommons.org/publicdomain/zero/1.0/.

View File

@ -118,12 +118,12 @@
{ {
"title": "ACM", "title": "ACM",
"hex": "0085CA", "hex": "0085CA",
"source": "http://identitystandards.acm.org/" "source": "https://identitystandards.acm.org/"
}, },
{ {
"title": "ActiGraph", "title": "ActiGraph",
"hex": "0B2C4A", "hex": "0B2C4A",
"source": "http://www.actigraphcorp.com/" "source": "https://www.actigraphcorp.com/"
}, },
{ {
"title": "Activision", "title": "Activision",
@ -148,7 +148,7 @@
{ {
"title": "AddThis", "title": "AddThis",
"hex": "FF6550", "hex": "FF6550",
"source": "http://www.addthis.com/" "source": "https://www.addthis.com/"
}, },
{ {
"title": "AdGuard", "title": "AdGuard",
@ -265,7 +265,7 @@
{ {
"title": "Aerospike", "title": "Aerospike",
"hex": "C41E25", "hex": "C41E25",
"source": "http://pages.aerospike.com/rs/aerospike/images/Acid_Whitepaper.pdf" "source": "https://pages.aerospike.com/rs/aerospike/images/Acid_Whitepaper.pdf"
}, },
{ {
"title": "AEW", "title": "AEW",
@ -335,7 +335,7 @@
{ {
"title": "Air China", "title": "Air China",
"hex": "E30E17", "hex": "E30E17",
"source": "http://www.airchina.com.cn/en/investor_relations/" "source": "https://www.airchina.com.cn/en/investor_relations/"
}, },
{ {
"title": "Air France", "title": "Air France",
@ -410,7 +410,7 @@
{ {
"title": "Alfa Romeo", "title": "Alfa Romeo",
"hex": "981E32", "hex": "981E32",
"source": "http://www.fcaci.com/x/Alfa" "source": "https://www.fcaci.com/x/Alfa"
}, },
{ {
"title": "Alfred", "title": "Alfred",
@ -465,7 +465,7 @@
{ {
"title": "AlloCiné", "title": "AlloCiné",
"hex": "FECC00", "hex": "FECC00",
"source": "http://www.allocine.fr/" "source": "https://www.allocine.fr/"
}, },
{ {
"title": "AllTrails", "title": "AllTrails",
@ -796,7 +796,7 @@
{ {
"title": "Apache CloudStack", "title": "Apache CloudStack",
"hex": "2AA5DC", "hex": "2AA5DC",
"source": "http://cloudstack.apache.org/trademark-guidelines.html" "source": "https://cloudstack.apache.org/trademark-guidelines.html"
}, },
{ {
"title": "Apache Cordova", "title": "Apache Cordova",
@ -1269,7 +1269,7 @@
{ {
"title": "Azure DevOps", "title": "Azure DevOps",
"hex": "0078D7", "hex": "0078D7",
"source": "http://azure.com/devops" "source": "https://azure.microsoft.com/products/devops/"
}, },
{ {
"title": "Azure Functions", "title": "Azure Functions",
@ -1627,7 +1627,7 @@
{ {
"title": "Bootstrap", "title": "Bootstrap",
"hex": "7952B3", "hex": "7952B3",
"source": "http://getbootstrap.com/about" "source": "https://getbootstrap.com/about"
}, },
{ {
"title": "BorgBackup", "title": "BorgBackup",
@ -1890,7 +1890,7 @@
{ {
"title": "Castro", "title": "Castro",
"hex": "00B265", "hex": "00B265",
"source": "http://supertop.co/castro/press/" "source": "https://supertop.co/castro/press/"
}, },
{ {
"title": "Caterpillar", "title": "Caterpillar",
@ -2192,7 +2192,7 @@
{ {
"title": "Co-op", "title": "Co-op",
"hex": "00B1E7", "hex": "00B1E7",
"source": "http://www.co-operative.coop/corporate/press/logos/" "source": "https://www.co-operative.coop/media/assets"
}, },
{ {
"title": "Cockpit", "title": "Cockpit",
@ -2271,7 +2271,7 @@
{ {
"title": "Codeforces", "title": "Codeforces",
"hex": "1F8ACB", "hex": "1F8ACB",
"source": "http://codeforces.com/" "source": "https://codeforces.com/"
}, },
{ {
"title": "CodeIgniter", "title": "CodeIgniter",
@ -2594,12 +2594,12 @@
{ {
"title": "CSS Wizardry", "title": "CSS Wizardry",
"hex": "F43059", "hex": "F43059",
"source": "http://csswizardry.com" "source": "https://csswizardry.com"
}, },
{ {
"title": "CSS3", "title": "CSS3",
"hex": "1572B6", "hex": "1572B6",
"source": "http://www.w3.org/html/logo/" "source": "https://www.w3.org/html/logo/"
}, },
{ {
"title": "Cucumber", "title": "Cucumber",
@ -2842,7 +2842,7 @@
"title": "del.icio.us", "title": "del.icio.us",
"slug": "delicious", "slug": "delicious",
"hex": "0000FF", "hex": "0000FF",
"source": "http://del.icio.us/", "source": "https://del.icio.us/",
"aliases": { "aliases": {
"aka": [ "aka": [
"Delicious" "Delicious"
@ -2916,7 +2916,7 @@
{ {
"title": "DeviantArt", "title": "DeviantArt",
"hex": "05CC47", "hex": "05CC47",
"source": "http://help.deviantart.com/21" "source": "https://help.deviantart.com/21"
}, },
{ {
"title": "Devpost", "title": "Devpost",
@ -3381,7 +3381,7 @@
{ {
"title": "Empire Kred", "title": "Empire Kred",
"hex": "72BE50", "hex": "72BE50",
"source": "http://www.empire.kred" "source": "https://www.empire.kred"
}, },
{ {
"title": "Enpass", "title": "Enpass",
@ -3529,7 +3529,7 @@
{ {
"title": "Expo", "title": "Expo",
"hex": "000020", "hex": "000020",
"source": "http://expo.io/brand/" "source": "https://expo.io/brand/"
}, },
{ {
"title": "Express", "title": "Express",
@ -3665,7 +3665,7 @@
{ {
"title": "FeatHub", "title": "FeatHub",
"hex": "9B9B9B", "hex": "9B9B9B",
"source": "http://feathub.com/" "source": "https://feathub.com/"
}, },
{ {
"title": "FedEx", "title": "FedEx",
@ -3706,7 +3706,7 @@
{ {
"title": "Fiat", "title": "Fiat",
"hex": "941711", "hex": "941711",
"source": "http://www.fcaci.com/x/FIATv15" "source": "https://www.fcaci.com/x/FIATv15"
}, },
{ {
"title": "Fido Alliance", "title": "Fido Alliance",
@ -3775,7 +3775,7 @@
{ {
"title": "Fitbit", "title": "Fitbit",
"hex": "00B0B9", "hex": "00B0B9",
"source": "http://www.fitbit.com/uk/home" "source": "https://www.fitbit.com/uk/home"
}, },
{ {
"title": "FITE", "title": "FITE",
@ -3880,7 +3880,7 @@
{ {
"title": "Fnac", "title": "Fnac",
"hex": "E1A925", "hex": "E1A925",
"source": "http://www.fnac.com/" "source": "https://www.fnac.com/"
}, },
{ {
"title": "Folium", "title": "Folium",
@ -3925,7 +3925,7 @@
{ {
"title": "Fortinet", "title": "Fortinet",
"hex": "EE3124", "hex": "EE3124",
"source": "http://www.fortinet.com/" "source": "https://www.fortinet.com/"
}, },
{ {
"title": "Fortran", "title": "Fortran",
@ -4179,7 +4179,7 @@
{ {
"title": "Git", "title": "Git",
"hex": "F05032", "hex": "F05032",
"source": "http://git-scm.com/downloads/logos", "source": "https://git-scm.com/downloads/logos",
"license": { "license": {
"type": "CC-BY-3.0" "type": "CC-BY-3.0"
} }
@ -4381,7 +4381,7 @@
{ {
"title": "GoldenLine", "title": "GoldenLine",
"hex": "FFE005", "hex": "FFE005",
"source": "http://www.goldenline.pl" "source": "https://www.goldenline.pl"
}, },
{ {
"title": "Goodreads", "title": "Goodreads",
@ -4575,7 +4575,7 @@
{ {
"title": "Google Sheets", "title": "Google Sheets",
"hex": "34A853", "hex": "34A853",
"source": "http://sheets.google.com/" "source": "https://sheets.google.com/"
}, },
{ {
"title": "Google Street View", "title": "Google Street View",
@ -4642,7 +4642,7 @@
{ {
"title": "Grav", "title": "Grav",
"hex": "221E1F", "hex": "221E1F",
"source": "http://getgrav.org/media" "source": "https://getgrav.org/media"
}, },
{ {
"title": "Gravatar", "title": "Gravatar",
@ -4844,7 +4844,7 @@
{ {
"title": "Hatena Bookmark", "title": "Hatena Bookmark",
"hex": "00A4DE", "hex": "00A4DE",
"source": "http://hatenacorp.jp/press/resource" "source": "https://hatenacorp.jp/press/resource"
}, },
{ {
"title": "haveibeenpwned", "title": "haveibeenpwned",
@ -5049,7 +5049,7 @@
{ {
"title": "HTML5", "title": "HTML5",
"hex": "E34F26", "hex": "E34F26",
"source": "http://www.w3.org/html/logo/" "source": "https://www.w3.org/html/logo/"
}, },
{ {
"title": "HTTPie", "title": "HTTPie",
@ -5473,7 +5473,7 @@
"title": "Jabber", "title": "Jabber",
"hex": "CC0000", "hex": "CC0000",
"source": "https://commons.wikimedia.org/wiki/File:Jabber-bulb.svg", "source": "https://commons.wikimedia.org/wiki/File:Jabber-bulb.svg",
"guidelines": "http://www.jabber.org/faq.html#logo", "guidelines": "https://www.jabber.org/faq.html#logo",
"license": { "license": {
"type": "CC-BY-2.5" "type": "CC-BY-2.5"
} }
@ -5525,8 +5525,8 @@
{ {
"title": "Jeep", "title": "Jeep",
"hex": "000000", "hex": "000000",
"source": "http://www.fcaci.com/x/JEEPv15", "source": "https://www.fcaci.com/x/JEEPv15",
"guidelines": "http://www.fcaci.com/x/JEEPv15" "guidelines": "https://www.fcaci.com/x/JEEPv15"
}, },
{ {
"title": "Jekyll", "title": "Jekyll",
@ -5989,8 +5989,8 @@
{ {
"title": "Komoot", "title": "Komoot",
"hex": "6AA127", "hex": "6AA127",
"source": "http://newsroom.komoot.com/media_kits/219423/", "source": "https://newsroom.komoot.com/media_kits/219423/",
"guidelines": "http://newsroom.komoot.com/media_kits/219423/" "guidelines": "https://newsroom.komoot.com/media_kits/219423/"
}, },
{ {
"title": "Konami", "title": "Konami",
@ -6282,8 +6282,8 @@
{ {
"title": "LINE", "title": "LINE",
"hex": "00C300", "hex": "00C300",
"source": "http://line.me/en/logo", "source": "https://line.me/en/logo",
"guidelines": "http://line.me/en/logo" "guidelines": "https://line.me/en/logo"
}, },
{ {
"title": "LineageOS", "title": "LineageOS",
@ -6379,7 +6379,7 @@
{ {
"title": "LiveJournal", "title": "LiveJournal",
"hex": "00B0EA", "hex": "00B0EA",
"source": "http://www.livejournal.com" "source": "https://www.livejournal.com"
}, },
{ {
"title": "Livewire", "title": "Livewire",
@ -6522,7 +6522,7 @@
{ {
"title": "Magento", "title": "Magento",
"hex": "EE672F", "hex": "EE672F",
"source": "http://magento.com" "source": "https://magento.com"
}, },
{ {
"title": "Magisk", "title": "Magisk",
@ -6537,8 +6537,8 @@
{ {
"title": "MailChimp", "title": "MailChimp",
"hex": "FFE01B", "hex": "FFE01B",
"source": "http://mailchimp.com/about/brand-assets", "source": "https://mailchimp.com/about/brand-assets",
"guidelines": "http://mailchimp.com/about/brand-assets" "guidelines": "https://mailchimp.com/about/brand-assets"
}, },
{ {
"title": "Mailgun", "title": "Mailgun",
@ -6554,7 +6554,7 @@
{ {
"title": "MakerBot", "title": "MakerBot",
"hex": "FF1E0D", "hex": "FF1E0D",
"source": "http://www.makerbot.com/makerbot-press-assets" "source": "https://www.makerbot.com/makerbot-press-assets"
}, },
{ {
"title": "MAMP", "title": "MAMP",
@ -6675,7 +6675,7 @@
{ {
"title": "Matternet", "title": "Matternet",
"hex": "261C29", "hex": "261C29",
"source": "http://mttr.net" "source": "https://mttr.net"
}, },
{ {
"title": "Max", "title": "Max",
@ -6813,7 +6813,7 @@
{ {
"title": "Meteor", "title": "Meteor",
"hex": "DE4F4F", "hex": "DE4F4F",
"source": "http://logo.meteorapp.com/" "source": "https://logo.meteorapp.com/"
}, },
{ {
"title": "Metro", "title": "Metro",
@ -6853,7 +6853,7 @@
{ {
"title": "Microgenetics", "title": "Microgenetics",
"hex": "FF0000", "hex": "FF0000",
"source": "http://microgenetics.co.uk/" "source": "https://microgenetics.co.uk/"
}, },
{ {
"title": "MicroPython", "title": "MicroPython",
@ -7313,7 +7313,7 @@
{ {
"title": "NetApp", "title": "NetApp",
"hex": "0067C5", "hex": "0067C5",
"source": "http://www.netapp.com/", "source": "https://www.netapp.com/",
"guidelines": "https://www.netapp.com/company/legal/trademark-guidelines/" "guidelines": "https://www.netapp.com/company/legal/trademark-guidelines/"
}, },
{ {
@ -7643,7 +7643,7 @@
{ {
"title": "OCaml", "title": "OCaml",
"hex": "EC6813", "hex": "EC6813",
"source": "http://ocaml.org/img/OCaml_Sticker.svg", "source": "https://ocaml.org/img/OCaml_Sticker.svg",
"guidelines": "https://ocaml.org/docs/logos.html", "guidelines": "https://ocaml.org/docs/logos.html",
"license": { "license": {
"type": "Unlicense" "type": "Unlicense"
@ -8099,7 +8099,7 @@
{ {
"title": "Parity Substrate", "title": "Parity Substrate",
"hex": "282828", "hex": "282828",
"source": "http://substrate.dev/" "source": "https://substrate.dev/"
}, },
{ {
"title": "Parse.ly", "title": "Parse.ly",
@ -8110,7 +8110,7 @@
{ {
"title": "Passport", "title": "Passport",
"hex": "34E27A", "hex": "34E27A",
"source": "http://www.passportjs.org/" "source": "https://www.passportjs.org/"
}, },
{ {
"title": "Pastebin", "title": "Pastebin",
@ -8179,8 +8179,8 @@
{ {
"title": "Pepsi", "title": "Pepsi",
"hex": "2151A1", "hex": "2151A1",
"source": "http://gillettepepsicola.com/promotions-media/media-kit/", "source": "https://gillettepepsicola.com/promotions-media/media-kit/",
"guidelines": "http://gillettepepsicola.com/promotions-media/media-kit/" "guidelines": "https://gillettepepsicola.com/promotions-media/media-kit/"
}, },
{ {
"title": "Percy", "title": "Percy",
@ -8256,7 +8256,7 @@
{ {
"title": "PHP", "title": "PHP",
"hex": "777BB4", "hex": "777BB4",
"source": "http://php.net/download-logos.php", "source": "https://php.net/download-logos.php",
"license": { "license": {
"type": "CC-BY-SA-4.0" "type": "CC-BY-SA-4.0"
} }
@ -9144,8 +9144,8 @@
{ {
"title": "Ram", "title": "Ram",
"hex": "000000", "hex": "000000",
"source": "http://www.fcaci.com/x/RAMv15", "source": "https://www.fcaci.com/x/RAMv15",
"guidelines": "http://www.fcaci.com/x/RAMv15" "guidelines": "https://www.fcaci.com/x/RAMv15"
}, },
{ {
"title": "Rancher", "title": "Rancher",
@ -9639,7 +9639,7 @@
{ {
"title": "Ruby on Rails", "title": "Ruby on Rails",
"hex": "CC0000", "hex": "CC0000",
"source": "http://rubyonrails.org/", "source": "https://rubyonrails.org/",
"guidelines": "https://rubyonrails.org/trademarks/" "guidelines": "https://rubyonrails.org/trademarks/"
}, },
{ {
@ -9738,7 +9738,7 @@
{ {
"title": "San Francisco Municipal Railway", "title": "San Francisco Municipal Railway",
"hex": "BA0C2F", "hex": "BA0C2F",
"source": "http://www.actransit.org/wp-content/uploads/HSP_CC-sched.pdf" "source": "https://www.actransit.org/wp-content/uploads/HSP_CC-sched.pdf"
}, },
{ {
"title": "SanDisk", "title": "SanDisk",
@ -9758,8 +9758,8 @@
{ {
"title": "Sass", "title": "Sass",
"hex": "CC6699", "hex": "CC6699",
"source": "http://sass-lang.com/styleguide/brand", "source": "https://sass-lang.com/styleguide/brand",
"guidelines": "http://sass-lang.com/styleguide/brand", "guidelines": "https://sass-lang.com/styleguide/brand",
"license": { "license": {
"type": "CC-BY-NC-SA-3.0" "type": "CC-BY-NC-SA-3.0"
} }
@ -9927,8 +9927,8 @@
{ {
"title": "Sencha", "title": "Sencha",
"hex": "86BC40", "hex": "86BC40",
"source": "http://design.sencha.com/", "source": "https://design.sencha.com/",
"guidelines": "http://design.sencha.com/productlogo.html" "guidelines": "https://design.sencha.com/productlogo.html"
}, },
{ {
"title": "Sennheiser", "title": "Sennheiser",
@ -9959,7 +9959,7 @@
{ {
"title": "Server Fault", "title": "Server Fault",
"hex": "E7282D", "hex": "E7282D",
"source": "http://stackoverflow.com/company/logos", "source": "https://stackoverflow.com/company/logos",
"guidelines": "https://stackoverflow.com/legal/trademark-guidance" "guidelines": "https://stackoverflow.com/legal/trademark-guidance"
}, },
{ {
@ -10116,7 +10116,7 @@
{ {
"title": "SitePoint", "title": "SitePoint",
"hex": "258AAF", "hex": "258AAF",
"source": "http://www.sitepoint.com" "source": "https://www.sitepoint.com"
}, },
{ {
"title": "Sketch", "title": "Sketch",
@ -10163,7 +10163,7 @@
{ {
"title": "Skype", "title": "Skype",
"hex": "00AFF0", "hex": "00AFF0",
"source": "http://blogs.skype.com/?attachment_id=56273" "source": "https://blogs.skype.com/?attachment_id=56273"
}, },
{ {
"title": "Skype for Business", "title": "Skype for Business",
@ -10407,7 +10407,7 @@
{ {
"title": "Spacemacs", "title": "Spacemacs",
"hex": "9266CC", "hex": "9266CC",
"source": "http://spacemacs.org/", "source": "https://spacemacs.org/",
"license": { "license": {
"type": "CC-BY-SA-4.0" "type": "CC-BY-SA-4.0"
} }
@ -10560,7 +10560,7 @@
"title": "Squarespace", "title": "Squarespace",
"hex": "000000", "hex": "000000",
"source": "https://www.squarespace.com/logo-guidelines", "source": "https://www.squarespace.com/logo-guidelines",
"guidelines": "http://www.squarespace.com/brand-guidelines" "guidelines": "https://www.squarespace.com/brand-guidelines"
}, },
{ {
"title": "SSRN", "title": "SSRN",
@ -10570,7 +10570,7 @@
{ {
"title": "Stack Exchange", "title": "Stack Exchange",
"hex": "1E5397", "hex": "1E5397",
"source": "http://stackoverflow.com/company/logos", "source": "https://stackoverflow.com/company/logos",
"guidelines": "https://stackoverflow.com/legal/trademark-guidance" "guidelines": "https://stackoverflow.com/legal/trademark-guidance"
}, },
{ {
@ -10714,7 +10714,7 @@
{ {
"title": "Stencyl", "title": "Stencyl",
"hex": "8E1C04", "hex": "8E1C04",
"source": "http://www.stencyl.com/about/press/" "source": "https://www.stencyl.com/about/press/"
}, },
{ {
"title": "Stimulus", "title": "Stimulus",
@ -10782,7 +10782,7 @@
{ {
"title": "StubHub", "title": "StubHub",
"hex": "003168", "hex": "003168",
"source": "http://www.stubhub.com" "source": "https://www.stubhub.com"
}, },
{ {
"title": "styled-components", "title": "styled-components",
@ -10822,7 +10822,7 @@
{ {
"title": "Subversion", "title": "Subversion",
"hex": "809CC9", "hex": "809CC9",
"source": "http://subversion.apache.org/logo" "source": "https://subversion.apache.org/logo"
}, },
{ {
"title": "suckless", "title": "suckless",
@ -11328,7 +11328,7 @@
{ {
"title": "Tinder", "title": "Tinder",
"hex": "FF6B6B", "hex": "FF6B6B",
"source": "http://www.gotinder.com/press" "source": "https://www.gotinder.com/press"
}, },
{ {
"title": "TinyLetter", "title": "TinyLetter",
@ -11601,7 +11601,7 @@
{ {
"title": "Twoo", "title": "Twoo",
"hex": "FF7102", "hex": "FF7102",
"source": "http://www.twoo.com/about/press" "source": "https://www.twoo.com/about/press"
}, },
{ {
"title": "Typeform", "title": "Typeform",
@ -12024,7 +12024,7 @@
{ {
"title": "VLC media player", "title": "VLC media player",
"hex": "FF8800", "hex": "FF8800",
"source": "http://git.videolan.org/?p=vlc.git;a=tree;f=extras/package/macosx/asset_sources" "source": "https://git.videolan.org/?p=vlc.git;a=tree;f=extras/package/macosx/asset_sources"
}, },
{ {
"title": "VMware", "title": "VMware",
@ -12268,7 +12268,7 @@
{ {
"title": "WEBTOON", "title": "WEBTOON",
"hex": "00D564", "hex": "00D564",
"source": "http://webtoons.com/" "source": "https://webtoons.com/"
}, },
{ {
"title": "WeChat", "title": "WeChat",
@ -12421,7 +12421,7 @@
{ {
"title": "Wire", "title": "Wire",
"hex": "000000", "hex": "000000",
"source": "http://brand.wire.com", "source": "https://brand.wire.com",
"guidelines": "https://brand.wire.com/" "guidelines": "https://brand.wire.com/"
}, },
{ {
@ -12454,7 +12454,7 @@
{ {
"title": "Wix", "title": "Wix",
"hex": "0C6EFC", "hex": "0C6EFC",
"source": "http://www.wix.com/about/design-assets" "source": "https://www.wix.com/about/design-assets"
}, },
{ {
"title": "Wizz Air", "title": "Wizz Air",
@ -12464,17 +12464,17 @@
{ {
"title": "Wolfram", "title": "Wolfram",
"hex": "DD1100", "hex": "DD1100",
"source": "http://company.wolfram.com/press-center/wolfram-corporate/" "source": "https://company.wolfram.com/press-center/wolfram-corporate/"
}, },
{ {
"title": "Wolfram Language", "title": "Wolfram Language",
"hex": "DD1100", "hex": "DD1100",
"source": "http://company.wolfram.com/press-center/language/" "source": "https://company.wolfram.com/press-center/language/"
}, },
{ {
"title": "Wolfram Mathematica", "title": "Wolfram Mathematica",
"hex": "DD1100", "hex": "DD1100",
"source": "http://company.wolfram.com/press-center/mathematica/" "source": "https://company.wolfram.com/press-center/mathematica/"
}, },
{ {
"title": "Woo", "title": "Woo",

View File

@ -28,6 +28,8 @@ const TITLE_TO_SLUG_CHARS_REGEX = RegExp(
const TITLE_TO_SLUG_RANGE_REGEX = /[^a-z0-9]/g; const TITLE_TO_SLUG_RANGE_REGEX = /[^a-z0-9]/g;
export const URL_REGEX = /^https:\/\/[^\s]+$/;
/** /**
* Get the slug/filename for an icon. * Get the slug/filename for an icon.
* @param {Object} icon The icon data as it appears in _data/simple-icons.json * @param {Object} icon The icon data as it appears in _data/simple-icons.json

View File

@ -5,6 +5,7 @@ import { strict as assert } from 'node:assert';
import { import {
getThirdPartyExtensions, getThirdPartyExtensions,
getDirnameFromImportMeta, getDirnameFromImportMeta,
URL_REGEX,
} from '../scripts/utils.js'; } from '../scripts/utils.js';
const __dirname = getDirnameFromImportMeta(import.meta.url); const __dirname = getDirnameFromImportMeta(import.meta.url);
@ -63,3 +64,26 @@ test('README third party extensions must be alphabetically sorted', async () =>
'Wrong alphabetical order of third party extensions in README.', 'Wrong alphabetical order of third party extensions in README.',
); );
}); });
test('Only allow HTTPS links in documentation pages', async () => {
const ignoreHttpLinks = ['http://www.w3.org/2000/svg'];
const docsFiles = fs
.readdirSync(root)
.filter((fname) => fname.endsWith('.md'));
const linksGetter = new RegExp('http://[^\\s"\']+', 'g');
for (let docsFile of docsFiles) {
const docsFilePath = path.join(root, docsFile);
const docsFileContent = fs.readFileSync(docsFilePath, 'utf8');
Array.from(docsFileContent.matchAll(linksGetter)).forEach((match) => {
const link = match[0];
assert.ok(
ignoreHttpLinks.includes(link) || link.startsWith('https://'),
`Link '${link}' in '${docsFile}' (at index ${match.index})` +
` must use the HTTPS protocol.`,
);
});
}
});

View File

@ -2,6 +2,7 @@ import fs from 'node:fs';
import path from 'node:path'; import path from 'node:path';
import { strict as assert } from 'node:assert'; import { strict as assert } from 'node:assert';
import { describe, it } from 'mocha'; import { describe, it } from 'mocha';
import { URL_REGEX } from '../scripts/utils.js';
const iconsDir = path.resolve(process.cwd(), 'icons'); const iconsDir = path.resolve(process.cwd(), 'icons');
@ -29,6 +30,7 @@ export const testIcon = (icon, subject, slug) => {
it('has the correct "source"', () => { it('has the correct "source"', () => {
assert.equal(subject.source, icon.source); assert.equal(subject.source, icon.source);
assert.match(subject.source, URL_REGEX);
}); });
it('has an "svg" value', () => { it('has an "svg" value', () => {
@ -53,7 +55,7 @@ export const testIcon = (icon, subject, slug) => {
if (icon.license.type === 'custom') { if (icon.license.type === 'custom') {
assert.equal(subject.license.url, icon.license.url); assert.equal(subject.license.url, icon.license.url);
} else { } else {
assert.match(subject.license.url, /^https?:\/\/[^\s]+$/); assert.match(subject.license.url, URL_REGEX);
} }
} else { } else {
assert.equal(subject.license, undefined); assert.equal(subject.license, undefined);