UNPKG

@herbertgao/surgio

Version:

Generating rules for Surge, Clash, Quantumult like a PRO

38 lines 1.3 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.parseTrojanUri = void 0; const url_1 = require("url"); const logger_1 = require("@surgio/logger"); const types_1 = require("../types"); const logger = (0, logger_1.createLogger)({ service: 'surgio:utils:trojan' }); const parseTrojanUri = (str) => { logger.debug('Trojan URI', str); const scheme = new url_1.URL(str); if (scheme.protocol !== 'trojan:') { throw new Error('Invalid Trojan URI.'); } const allowInsecure = scheme.searchParams.get('allowInsecure') === '1' || scheme.searchParams.get('allowInsecure') === 'true'; const sni = scheme.searchParams.get('sni') || scheme.searchParams.get('peer'); return { type: types_1.NodeTypeEnum.Trojan, hostname: scheme.hostname, port: scheme.port, password: scheme.username, nodeName: scheme.hash ? decodeURIComponent(scheme.hash.slice(1)) : `${scheme.hostname}:${scheme.port}`, ...(allowInsecure ? { skipCertVerify: true, } : null), ...(sni ? { sni, } : null), }; }; exports.parseTrojanUri = parseTrojanUri; //# sourceMappingURL=trojan.js.map