mirror of
https://git.mirrors.martin98.com/https://github.com/sub-store-org/Sub-Store.git
synced 2026-04-01 03:53:20 +08:00
feat: 处理端口跳跃(感谢亚托莉佬)
This commit is contained in:
@@ -8,6 +8,7 @@ import {
|
||||
isValidPortNumber,
|
||||
isNotBlank,
|
||||
ipAddress,
|
||||
getRandomPort,
|
||||
} from '@/utils';
|
||||
import PROXY_PROCESSORS, { ApplyProcessor } from './processors';
|
||||
import PROXY_PREPROCESSORS from './preprocessors';
|
||||
@@ -220,6 +221,17 @@ function produce(proxies, targetPlatform, type, opts = {}) {
|
||||
delete proxy['tls-fingerprint'];
|
||||
}
|
||||
}
|
||||
|
||||
// 处理 端口跳跃
|
||||
if (proxy.ports) {
|
||||
if (!['ClashMeta'].includes(targetPlatform)) {
|
||||
proxy.ports = proxy.ports.replace(/\//g, ',');
|
||||
}
|
||||
if (!proxy.port) {
|
||||
proxy.port = getRandomPort(proxy.ports);
|
||||
}
|
||||
}
|
||||
|
||||
return proxy;
|
||||
});
|
||||
|
||||
@@ -274,6 +286,7 @@ export const ProxyUtils = {
|
||||
process: processFn,
|
||||
produce,
|
||||
ipAddress,
|
||||
getRandomPort,
|
||||
isIPv4,
|
||||
isIPv6,
|
||||
isIP,
|
||||
|
||||
@@ -94,6 +94,23 @@ function getPolicyDescriptor(str) {
|
||||
// };
|
||||
// })();
|
||||
|
||||
function getRandomInt(min, max) {
|
||||
min = Math.ceil(min);
|
||||
max = Math.floor(max);
|
||||
return Math.floor(Math.random() * (max - min + 1)) + min;
|
||||
}
|
||||
|
||||
function getRandomPort(portString) {
|
||||
let portParts = portString.split(/,|\//);
|
||||
let randomPart = portParts[Math.floor(Math.random() * portParts.length)];
|
||||
if (randomPart.includes('-')) {
|
||||
let [min, max] = randomPart.split('-').map(Number);
|
||||
return getRandomInt(min, max);
|
||||
} else {
|
||||
return Number(randomPart);
|
||||
}
|
||||
}
|
||||
|
||||
export {
|
||||
ipAddress,
|
||||
isIPv4,
|
||||
@@ -105,4 +122,5 @@ export {
|
||||
getIfPresent,
|
||||
// utf8ArrayToStr,
|
||||
getPolicyDescriptor,
|
||||
getRandomPort,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user