mirror of https://github.com/rancher/ui.git
61 lines
1.4 KiB
JavaScript
61 lines
1.4 KiB
JavaScript
import EmberObject from '@ember/object';
|
|
|
|
// hostIp:hostPort:containerPort
|
|
// hostIp::containerPort
|
|
// hostPort:containerPort
|
|
// containerPort
|
|
export function parsePortSpec(str, defaultProtocol = 'tcp') {
|
|
str = str.trim();
|
|
|
|
var match = str.match(/\/([a-z]+)$/i), parts, hostIp = '', hostPort, containerPort, protocol;
|
|
|
|
// Protocol
|
|
if ( match ) {
|
|
protocol = match[1].toLowerCase();
|
|
str = str.substr(0, str.length - match[0].length);
|
|
} else {
|
|
protocol = defaultProtocol;
|
|
}
|
|
|
|
// IPv6
|
|
if ( (str.indexOf('[') >= 0) && (match = str.match(/^(\[[^]+\]):/)) ) {
|
|
parts = str.substr(match[0].length).split(':');
|
|
parts.unshift(match[1]);
|
|
} else {
|
|
parts = str.split(':');
|
|
}
|
|
|
|
if ( parts.length >= 3 ) {
|
|
hostIp = parts[0];
|
|
hostPort = parts[1];
|
|
containerPort = parts[2];
|
|
} else if ( parts.length === 2 ) {
|
|
hostIp = null;
|
|
hostPort = parts[0];
|
|
containerPort = parts[1];
|
|
} else {
|
|
hostIp = null;
|
|
hostPort = '';
|
|
containerPort = parts[0];
|
|
}
|
|
|
|
return EmberObject.create({
|
|
host: (hostIp ? `${ hostIp }:` : '') + hostPort,
|
|
hostIp,
|
|
hostPort: parseInt(hostPort, 10) || null,
|
|
container: parseInt(containerPort, 10) || null,
|
|
protocol,
|
|
});
|
|
}
|
|
|
|
export function portToInt(str) {
|
|
str = (`${ str }`).trim();
|
|
if ( str.match(/^\d+$/) ) {
|
|
return parseInt(str, 10) || null;
|
|
}
|
|
|
|
return null;
|
|
}
|
|
|
|
export default { parsePortSpec, };
|