insomnia/packages/insomnia-app/app/network/url-matches-cert-host.js
Gregory Schier 549ce23ce8
Merge All Repositories into Monorepo for easier maintenance (#629)
* All projects into monorepo

* Update CI

* More CI updates

* Extracted a bunch of things into packages

* Publish

 - insomnia-plugin-base64@1.0.1
 - insomnia-plugin-default-headers@1.0.2
 - insomnia-plugin-file@1.0.1
 - insomnia-plugin-hash@1.0.1
 - insomnia-plugin-now@1.0.1
 - insomnia-plugin-request@1.0.1
 - insomnia-plugin-response@1.0.1
 - insomnia-plugin-uuid@1.0.1
 - insomnia-cookies@0.0.2
 - insomnia-importers@1.5.2
 - insomnia-prettify@0.0.3
 - insomnia-url@0.0.2
 - insomnia-xpath@0.0.2

* A bunch of small fixes

* Improved build script

* Fixed

* Merge dangling files

* Usability refactor

* Handle duplicate plugin names
2017-11-26 20:45:40 +00:00

38 lines
1.1 KiB
JavaScript

import {parse as urlParse} from 'url';
import certificateUrlParse from './certificate-url-parse';
import {escapeRegex} from '../common/misc';
import {setDefaultProtocol} from 'insomnia-url';
const DEFAULT_PORT = 443;
export 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 = escapeRegex(cHostname || '').replace(/\\\*/g, '.*');
const cPortRegex = escapeRegex(cPort || '').replace(/\\\*/g, '.*');
// Check ports
if ((cPort + '').includes('*')) {
if (!(port || '').match(`^${cPortRegex}$`)) {
return false;
}
} else {
if (assumedCPort !== assumedPort) {
return false;
}
}
// Check hostnames
if (!(hostname || '').match(`^${cHostnameRegex}$`)) {
return false;
}
// Everything matches
return true;
}