insomnia/app/network/url-matches-cert-host.js
Paul Douglas Brimicombe cd54a74f2f Allow wildcards in client certificate hosts (#262)
* Allow wildcards in client certificate hosts

* Add test for certificate hosts that are only wildcards

* Constants should be upper case

* Fix function import for urlMatchesCertHost

* Document certificate host wildcards

* Prefer direct function exports in library files

* Use string substitution for wildcards when parsing certificate urls
2017-06-21 13:56:19 -07:00

20 lines
812 B
JavaScript

import {parse as urlParse} from 'url';
import certificateUrlParse from './certificate-url-parse';
import {setDefaultProtocol} from '../common/misc';
const DEFAULT_PORT = 443;
export default function urlMatchesCertHost (certificateHost, requestUrl) {
const cHostWithProtocol = setDefaultProtocol(certificateHost, 'https:');
const {hostname, port} = urlParse(requestUrl);
const {hostname: cHostname, port: cPort} = certificateUrlParse(cHostWithProtocol);
const assumedPort = parseInt(port) || DEFAULT_PORT;
const assumedCPort = parseInt(cPort) || DEFAULT_PORT;
const cHostnameRegex = (cHostname || '').replace(/([.+?^=!:${}()|[\]/\\])/g, '\\$1')
.replace(/\*/g, '.*');
return (assumedCPort === assumedPort && !!hostname.match(`^${cHostnameRegex}$`));
}