Fix sanitizing logic to use new utils parser

This commit is contained in:
Ilya Ig. Petrov 2017-10-31 21:20:56 +05:00
parent 9495910261
commit e4bf2292b4

View File

@ -403,16 +403,18 @@ export default function getProxyEditor(theState) {
const errors = splitBySemi(this.state.stashedExports) const errors = splitBySemi(this.state.stashedExports)
.map((proxyAsString) => { .map((proxyAsString) => {
const [rawType, crededAddr, ...rest] = proxyAsString.split(/\s+/); const {
if (rest && rest.length) { type,
return new Error( creds,
`"${rest.join(', ')}" кажется мне лишним. Вы забыли ";"?` hostname,
); port,
} } = theState.utils.parseProxyScheme(proxyAsString);
const crededAddr = `${creds ? `${creds}@` : ''}${hostname}:${port}`;
const knownTypes = PROXY_TYPE_LABEL_PAIRS.map(([type, label]) => type); const knownTypes = PROXY_TYPE_LABEL_PAIRS.map(([type, label]) => type);
if( !knownTypes.includes(rawType.toUpperCase()) ) { if( !knownTypes.includes(type.toUpperCase()) ) {
return new Error( return new Error(
`Неверный тип ${rawType}. Известные типы: ${knownTypes.join(', ')}.` `Неверный тип ${type}. Известные типы: ${knownTypes.join(', ')}.`
); );
} }
if (!(crededAddr && /^(?:[^@]+@)?[^:]+:\d+$/.test(crededAddr))) { if (!(crededAddr && /^(?:[^@]+@)?[^:]+:\d+$/.test(crededAddr))) {
@ -420,16 +422,10 @@ export default function getProxyEditor(theState) {
`Адрес прокси "${crededAddr || ''}" не соответствует формату "<опц_логин>:<опц_пароль>@<домен_или_IP>:<порт_из_цифр>".` `Адрес прокси "${crededAddr || ''}" не соответствует формату "<опц_логин>:<опц_пароль>@<домен_или_IP>:<порт_из_цифр>".`
); );
} }
let [creds, addr] = crededAddr.split('@'); const portInt = parseInt(port);
if (!addr) { if (portInt < 0 || portInt > 65535) {
addr = creds;
creds = '';
}
const [hostname, rawPort] = addr.split(':');
const port = parseInt(rawPort);
if (port < 0 || port > 65535) {
return new Error( return new Error(
`Порт "${rawPort}" должен быть целым числом от 0 до 65535.` `Порт "${port}" должен быть целым числом от 0 до 65535.`
); );
} }
return false; return false;