diff --git a/headscale/Makefile b/headscale/Makefile index 86cb0940..f29a4380 100644 --- a/headscale/Makefile +++ b/headscale/Makefile @@ -6,8 +6,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=headscale -PKG_VERSION:=0.28.0 -PKG_RELEASE:=2 +PKG_VERSION:=0.29.0 +PKG_RELEASE:=3 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz PKG_SOURCE_URL:=https://codeload.github.com/juanfont/headscale/tar.gz/v$(PKG_VERSION)? diff --git a/luci-app-daede/Makefile b/luci-app-daede/Makefile index af9dcf52..0e1530cf 100644 --- a/luci-app-daede/Makefile +++ b/luci-app-daede/Makefile @@ -6,7 +6,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-daede PKG_VERSION:=1.13.0 -PKG_RELEASE:=12 +PKG_RELEASE:=13 PKG_MAINTAINER:=kenzok8 PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME) @@ -78,6 +78,9 @@ define Package/$(PKG_NAME)/install $(INSTALL_BIN) ./root/usr/share/luci-app-daede/proxy-check.sh $(1)/usr/share/luci-app-daede/proxy-check.sh $(INSTALL_BIN) ./root/usr/share/luci-app-daede/fetch-clash-yaml.sh $(1)/usr/share/luci-app-daede/fetch-clash-yaml.sh + $(INSTALL_DIR) $(1)/www/cgi-bin + $(INSTALL_BIN) ./root/www/cgi-bin/daede-sub $(1)/www/cgi-bin/daede-sub + $(INSTALL_DIR) $(1)/www/luci-static/resources/view/daede $(INSTALL_DATA) ./htdocs/luci-static/resources/view/daede/*.js $(1)/www/luci-static/resources/view/daede/ $(INSTALL_DIR) $(1)/www/luci-static/resources/view/daede/vendor diff --git a/luci-app-daede/htdocs/luci-static/resources/view/daede/airport-sync.js b/luci-app-daede/htdocs/luci-static/resources/view/daede/airport-sync.js index a6eeaccb..e27c9dae 100644 --- a/luci-app-daede/htdocs/luci-static/resources/view/daede/airport-sync.js +++ b/luci-app-daede/htdocs/luci-static/resources/view/daede/airport-sync.js @@ -98,6 +98,7 @@ function parseAirportSection(section) { name: String(section.name || ''), source_hash: String(section.source_hash || ''), group_id: String(section.group_id || ''), + subscription_id: String(section.subscription_id || ''), node_ids: list(section.node_id) }; } @@ -109,6 +110,7 @@ function airportSectionValues(record) { name: String(record.name || ''), source_hash: String(record.sourceHash || record.source_hash || ''), group_id: String(record.groupId || record.group_id || ''), + subscription_id: String(record.subscriptionId || record.subscription_id || ''), node_id: list(record.nodeIds || record.node_ids) }; } diff --git a/luci-app-daede/htdocs/luci-static/resources/view/daede/converter.js b/luci-app-daede/htdocs/luci-static/resources/view/daede/converter.js index badc70a6..70b5a552 100644 --- a/luci-app-daede/htdocs/luci-static/resources/view/daede/converter.js +++ b/luci-app-daede/htdocs/luci-static/resources/view/daede/converter.js @@ -12,6 +12,7 @@ const FETCHER = '/usr/share/luci-app-daede/fetch-clash-yaml.sh'; const GENERATOR = '/usr/share/luci-app-daede/gen-dae-config.sh'; +const SUB_STAGE = '/tmp/daede-sub.txt'; const FETCH_CHUNK_BYTES = 16384; function decodeHexChunks(chunks) { @@ -130,17 +131,6 @@ function requestDaedCredentials() { }); } -function uniqueNodeTag(existing, index) { - let n = index + 1; - let tag = 'converted_' + n; - while (existing[tag]) { - n++; - tag = 'converted_' + n; - } - existing[tag] = true; - return tag; -} - function applyUciChanges() { return uci.save().then(function() { return uci.changes().then(function(changes) { @@ -165,7 +155,12 @@ function writeAirportRecord(existing, record) { const sid = existing && existing.sid ? existing.sid : uci.add('daede', 'airport'); const values = airportSync.airportSectionValues(record); Object.keys(values).forEach(function(key) { - uci.set('daede', sid, key, values[key]); + const v = values[key]; + // uci/set rejects an empty list value; clear the option instead. + if (Array.isArray(v) && v.length === 0) + uci.unset('daede', sid, key); + else + uci.set('daede', sid, key, v); }); return sid; } @@ -485,114 +480,125 @@ return view.extend({ const existingAirport = currentAirport(); const airportId = existingAirport ? existingAirport.id : airportSync.makeAirportId(); const groupName = airportSync.backendGroupName(airportName.value, 'dae', airportId); - const batchId = Date.now().toString(36); - const foundGroupSection = existingAirport && existingAirport.group_id ? uciSection('dae', existingAirport.group_id) : null; - const foundOldGroup = foundGroupSection && foundGroupSection.name === existingAirport.name ? foundGroupSection : null; + // the group sources this tag; gen-dae-config slugs tag and source the + // same way, so subtag() resolves even for CJK/hyphen names. + const subTag = groupName; + const subUrl = 'file://subscriptions/' + airportId + '.sub'; + const subContent = items.map(function(item) { return item.link; }).join('\n') + '\n'; + + let subSid = existingAirport && existingAirport.subscription_id ? existingAirport.subscription_id : ''; + let groupSid = existingAirport && existingAirport.group_id ? existingAirport.group_id : ''; + const foundOldSub = (subSid && uciSection('dae', subSid)) || null; + const foundOldGroup = (groupSid && uciSection('dae', groupSid)) || null; + const oldSubSection = foundOldSub ? JSON.parse(JSON.stringify(foundOldSub)) : null; const oldGroupSection = foundOldGroup ? JSON.parse(JSON.stringify(foundOldGroup)) : null; - const usedTags = {}; - const nodesByLink = {}; - (uci.sections('dae', 'node') || []).forEach(function(section) { - if (section.tag) - usedTags[section.tag] = true; - if (section.link) - nodesByLink[clashConverter.normalizeLink(section.link)] = section; - }); - const oldOwned = existingAirport ? existingAirport.node_ids : []; - const owned = []; - const sources = []; - const created = []; - items.forEach(function(item, index) { - const existingNode = nodesByLink[clashConverter.normalizeLink(item.link)]; - if (existingNode) { - sources.push(existingNode.tag); - if (oldOwned.indexOf(existingNode['.name']) >= 0) - owned.push(existingNode['.name']); - return; - } - const sid = uci.add('dae', 'node', airportId + '_node_' + batchId + '_' + (index + 1)); - const tag = uniqueNodeTag(usedTags, index); - uci.set('dae', sid, 'tag', tag); - uci.set('dae', sid, 'link', item.link); - uci.set('dae', sid, 'enabled', '1'); - sources.push(tag); - owned.push(sid); - created.push(sid); - }); - - let groupSid = foundOldGroup ? existingAirport.group_id : ''; + const oldNodeIds = existingAirport ? existingAirport.node_ids : []; + let subCreated = false; let groupCreated = false; - if (!groupSid) { - const groupBase = airportId + '_group'; - groupSid = groupBase; - let suffix = 2; - while (uci.get('dae', groupSid)) - groupSid = groupBase + '_' + suffix++; - uci.add('dae', 'group', groupSid); - groupCreated = true; - } - uci.set('dae', groupSid, 'name', groupName); - uci.set('dae', groupSid, 'policy', 'min_moving_avg'); - uci.set('dae', groupSid, 'source', sources); - return applyUciChanges().then(runGenerator).catch(function(error) { - created.forEach(function(sid) { uci.remove('dae', sid); }); - if (groupCreated) { - uci.remove('dae', groupSid); - } else if (oldGroupSection) { - const current = uciSection('dae', groupSid) || {}; - Object.keys(current).forEach(function(key) { - if (key.charAt(0) !== '.' && !Object.prototype.hasOwnProperty.call(oldGroupSection, key)) - uci.unset('dae', groupSid, key); - }); - Object.keys(oldGroupSection).forEach(function(key) { - if (key.charAt(0) !== '.') - uci.set('dae', groupSid, key, oldGroupSection[key]); - }); + const restoreSection = function(sid, snapshot) { + const current = uciSection('dae', sid) || {}; + Object.keys(current).forEach(function(key) { + if (key.charAt(0) !== '.' && !Object.prototype.hasOwnProperty.call(snapshot, key)) + uci.unset('dae', sid, key); + }); + Object.keys(snapshot).forEach(function(key) { + if (key.charAt(0) !== '.') + uci.set('dae', sid, key, snapshot[key]); + }); + }; + + // 1. stage the converted links and let the backend write the local + // .sub file (mkdir + chmod 0600 — dae rejects loose perms). + return fs.write(SUB_STAGE, subContent).then(function() { + return fs.exec(GENERATOR, [ 'write-sub', airportId ]); + }).then(function(res) { + if (res && res.code !== 0) + throw new Error((res && (res.stderr || res.stdout)) || _('Failed to write subscription file')); + + // 2. one file:// subscription for the whole airport + if (!foundOldSub) { + subSid = uci.add('dae', 'subscription', airportId + '_sub'); + subCreated = true; } - return applyUciChanges().then(runGenerator).catch(function() {}).then(function() { throw error; }); + uci.set('dae', subSid, 'tag', subTag); + uci.set('dae', subSid, 'url', subUrl); + uci.set('dae', subSid, 'enabled', '1'); + + // 3. group that sources the subscription + if (!foundOldGroup) { + const groupBase = airportId + '_group'; + groupSid = groupBase; + let suffix = 2; + while (uci.get('dae', groupSid)) + groupSid = groupBase + '_' + suffix++; + uci.add('dae', 'group', groupSid); + groupCreated = true; + } + uci.set('dae', groupSid, 'name', groupName); + uci.set('dae', groupSid, 'policy', 'min_moving_avg'); + uci.set('dae', groupSid, 'source', [ subTag ]); + + return applyUciChanges().then(runGenerator).catch(function(error) { + if (subCreated) uci.remove('dae', subSid); + else if (oldSubSection) restoreSection(subSid, oldSubSection); + if (groupCreated) uci.remove('dae', groupSid); + else if (oldGroupSection) restoreSection(groupSid, oldGroupSection); + return applyUciChanges().then(runGenerator).catch(function() {}) + .then(function() { + if (subCreated) return fs.exec(GENERATOR, [ 'delete-sub', airportId ]).catch(function() {}); + }) + .then(function() { throw error; }); + }); }).then(function() { - const referencedTags = {}; - (uci.sections('dae', 'group') || []).filter(function(group) { - return group['.name'] !== groupSid; - }).forEach(function(group) { - const source = Array.isArray(group.source) ? group.source : (group.source ? [ group.source ] : []); - source.forEach(function(tag) { referencedTags[tag] = true; }); + // 4. drop this airport's legacy converted_N manual nodes + oldNodeIds.forEach(function(sid) { + if (uciSection('dae', sid)) uci.remove('dae', sid); }); - const stale = oldOwned.filter(function(sid) { - const section = uciSection('dae', sid); - return owned.indexOf(sid) < 0 && !(section && referencedTags[section.tag]); - }); - stale.forEach(function(sid) { uci.remove('dae', sid); }); writeAirportRecord(existingAirport, { id: airportId, backend: 'dae', name: airportName.value.trim(), sourceHash: state.sourceHash, groupId: groupSid, - nodeIds: owned + subscriptionId: subSid, + nodeIds: [] }); return applyUciChanges().then(runGenerator); }).then(function() { items.forEach(function(item) { item.duplicate = true; item.selected = false; }); - return { added: created.length, duplicates: items.length - created.length, failed: 0 }; + return { added: items.length, duplicates: 0, failed: 0 }; }); }; const importDaed = function(items) { let credentials; let token = ''; - let existingAirport = currentAirport(); + const existingAirport = currentAirport(); const airportId = existingAirport ? existingAirport.id : airportSync.makeAirportId(); const name = airportName.value.trim(); - const managedName = airportSync.backendId(airportId); const groupName = airportSync.backendGroupName(name, 'daed', airportId); - const batchTag = managedName + Date.now().toString(36); const endpoint = daedEndpoint(); + // daed can't read file:// — it HTTP-fetches a subscription link. Stage + // the converted links (base64) and let daed pull them from the + // loopback-only CGI, so the import lands as ONE subscription. + const subToken = airportSync.backendId(airportId) + Date.now().toString(36); + const stageFile = '/tmp/daede-daedsub-' + subToken; + const subUrl = 'http://127.0.0.1/cgi-bin/daede-sub?t=' + subToken; + const b64 = btoa(items.map(function(item) { return item.link; }).join('\n') + '\n'); + let before; - const createdIds = []; + let newSubId = ''; let createdGroupId = ''; let groupReady = false; - return requestDaedCredentials().then(function(value) { + const oldSubId = existingAirport ? existingAirport.subscription_id : ''; + const oldNodeIds = existingAirport ? existingAirport.node_ids : []; + + const dropStage = function() { return fs.exec('/bin/rm', [ '-f', stageFile ]).catch(function() {}); }; + + return fs.write(stageFile, b64).then(function() { + return requestDaedCredentials(); + }).then(function(value) { credentials = value; return graphQL(endpoint, 'query Login($username:String!,$password:String!){token(username:$username,password:$password)}', @@ -601,61 +607,33 @@ return view.extend({ token = login.token; credentials.password = ''; credentials = null; - return graphQL(endpoint, 'query AirportState{nodes(first:10000){edges{id link tag}} groups{id name nodes{id}}}', {}, token); + return graphQL(endpoint, 'query State{groups{id name nodes{id} subscriptions{subscription{id}}}}', {}, token); }).then(function(dataValue) { before = dataValue; - const existing = {}; - (before.nodes.edges || []).forEach(function(node) { - existing[clashConverter.normalizeLink(node.link)] = node; - }); - const fresh = items.filter(function(item) { - const duplicate = existing[clashConverter.normalizeLink(item.link)]; - if (duplicate) { - item.duplicate = true; - } - return !duplicate; - }); - if (!fresh.length) - return { importNodes: [], fresh: fresh, existing: existing }; + // drop this airport's previous subscription first: the new one + // reuses the same tag (group name) and daed enforces unique tags. + if (!oldSubId) + return null; + return graphQL(endpoint, 'mutation RmSub($ids:[ID!]!){removeSubscriptions(ids:$ids)}', { ids: [ oldSubId ] }, token).catch(function() {}); + }).then(function() { + // import the whole converted batch as one subscription return graphQL(endpoint, - 'mutation ImportNodes($args:[ImportArgument!]!){importNodes(rollbackError:false,args:$args){link error node{id}}}', - { args: fresh.map(function(item, index) { return { link: item.link, tag: batchTag + (index + 1) }; }) }, token) - .then(function(value) { value.fresh = fresh; value.existing = existing; return value; }); + 'mutation Import($a:ImportArgument!){importSubscription(rollbackError:false,arg:$a){sub{id} nodeImportResult{error}}}', + { a: { link: subUrl, tag: groupName } }, token); }).then(function(result) { - const rows = result.importNodes || []; - const nodeIds = []; - const ownedIds = []; - const rowByLink = {}; - rows.forEach(function(row) { - rowByLink[clashConverter.normalizeLink(row.link)] = row; - }); - let failed = rows.filter(function(row) { return !!row.error && row.error !== 'node already exists'; }).length; - items.forEach(function(item) { - const key = clashConverter.normalizeLink(item.link); - const row = rowByLink[key]; - const old = result.existing[key]; - const id = row && row.node && row.node.id || old && old.id; - if (id) - nodeIds.push(id); - if (row && !row.error && row.node) { - ownedIds.push(row.node.id); - createdIds.push(row.node.id); - } - else if (existingAirport && existingAirport.node_ids.indexOf(id) >= 0) - ownedIds.push(id); - }); - if (!nodeIds.length) { - const details = rows.filter(function(row) { return !!row.error; }).map(function(row) { - return row.error; - }).filter(function(error, index, errors) { - return errors.indexOf(error) === index; - }).join('; '); + const sub = result.importSubscription && result.importSubscription.sub; + if (!sub || !sub.id) { + const rows = (result.importSubscription && result.importSubscription.nodeImportResult) || []; + const details = rows.map(function(r) { return r.error; }).filter(Boolean).join('; '); throw new Error(details || _('No usable nodes were imported')); } + newSubId = sub.id; + const rows = result.importSubscription.nodeImportResult || []; + const failed = rows.filter(function(r) { return !!r.error && r.error !== 'node already exists'; }).length; + const oldGroup = airportSync.findManagedGroup(before.groups, existingAirport); - const group = oldGroup; - const ensureGroup = group - ? Promise.resolve(group.id) + const ensureGroup = oldGroup + ? Promise.resolve(oldGroup.id) : graphQL(endpoint, 'mutation CreateGroup($name:String!,$policy:Policy!){createGroup(name:$name,policy:$policy){id}}', { name: groupName, policy: 'min_moving_avg' }, token).then(function(value) { @@ -663,64 +641,65 @@ return view.extend({ return createdGroupId; }); return ensureGroup.then(function(groupId) { - const rename = group && group.name !== groupName - ? graphQL(endpoint, 'mutation RenameGroup($id:ID!,$name:String!){renameGroup(id:$id,name:$name)}', { id: groupId, name: groupName }, token) + const rename = oldGroup && oldGroup.name !== groupName + ? graphQL(endpoint, 'mutation Rename($id:ID!,$name:String!){renameGroup(id:$id,name:$name)}', { id: groupId, name: groupName }, token) : Promise.resolve(); return rename.then(function() { - return graphQL(endpoint, 'mutation SetPolicy($id:ID!,$policy:Policy!){groupSetPolicy(id:$id,policy:$policy)}', { id: groupId, policy: 'min_moving_avg' }, token); + return graphQL(endpoint, 'mutation Pol($id:ID!,$policy:Policy!){groupSetPolicy(id:$id,policy:$policy)}', { id: groupId, policy: 'min_moving_avg' }, token); }).then(function() { - return graphQL(endpoint, 'mutation AddNodes($id:ID!,$nodeIDs:[ID!]!){groupAddNodes(id:$id,nodeIDs:$nodeIDs)}', { id: groupId, nodeIDs: nodeIds }, token); + // attach the whole subscription to the group + return graphQL(endpoint, 'mutation AddSubs($id:ID!,$ids:[ID!]!){groupAddSubscriptions(id:$id,subscriptionIDs:$ids)}', { id: groupId, ids: [ newSubId ] }, token); }).then(function() { groupReady = true; - const oldMembers = group ? group.nodes.map(function(node) { return node.id; }) : []; - const removedMembers = oldMembers.filter(function(id) { return nodeIds.indexOf(id) < 0; }); - return (removedMembers.length - ? graphQL(endpoint, 'mutation DelNodes($id:ID!,$nodeIDs:[ID!]!){groupDelNodes(id:$id,nodeIDs:$nodeIDs)}', { id: groupId, nodeIDs: removedMembers }, token) - : Promise.resolve()).catch(function() { - failed++; + // scrub the group of its previous members: old manual nodes + // (from the legacy importNodes flow) and any other subscription. + const oldMemberNodes = oldGroup ? (oldGroup.nodes || []).map(function(n) { return n.id; }) : []; + const oldGroupSubs = oldGroup + ? (oldGroup.subscriptions || []).map(function(s) { return s.subscription && s.subscription.id; }).filter(function(id) { return id && id !== newSubId; }) + : []; + const scrub = []; + if (oldMemberNodes.length) + scrub.push(graphQL(endpoint, 'mutation DelNodes($id:ID!,$nodeIDs:[ID!]!){groupDelNodes(id:$id,nodeIDs:$nodeIDs)}', { id: groupId, nodeIDs: oldMemberNodes }, token).catch(function() {})); + if (oldGroupSubs.length) + scrub.push(graphQL(endpoint, 'mutation DelSubs($id:ID!,$ids:[ID!]!){groupDelSubscriptions(id:$id,subscriptionIDs:$ids)}', { id: groupId, ids: oldGroupSubs }, token).catch(function() {})); + return Promise.all(scrub).then(function() { + // delete this airport's orphaned legacy manual nodes (the old + // subscription was already removed before the import). + if (!oldNodeIds.length) + return null; + return graphQL(endpoint, 'mutation Rm($ids:[ID!]!){removeNodes(ids:$ids)}', { ids: oldNodeIds }, token).catch(function() {}); }).then(function() { - const otherAirportNodes = airportRecords().filter(function(record) { - return record.backend === 'daed' && (!existingAirport || record.id !== existingAirport.id); - }).map(function(record) { return record.node_ids; }); - const otherGroupNodes = before.groups.filter(function(other) { - return other.id !== groupId; - }).map(function(other) { return other.nodes.map(function(node) { return node.id; }); }); - const stale = airportSync.safeOldNodeIds(existingAirport ? existingAirport.node_ids : [], ownedIds, otherAirportNodes, otherGroupNodes); - return (stale.length - ? graphQL(endpoint, 'mutation RemoveNodes($ids:[ID!]!){removeNodes(ids:$ids)}', { ids: stale }, token) - : Promise.resolve()).catch(function() { - failed++; - }).then(function() { - writeAirportRecord(existingAirport, { - id: airportId, - backend: 'daed', - name: name, - sourceHash: state.sourceHash, - groupId: groupId, - nodeIds: ownedIds - }); - return applyUciChanges().then(function() { - items.forEach(function(item) { item.duplicate = true; item.selected = false; }); - return { added: ownedIds.length, duplicates: items.length - ownedIds.length, failed: failed }; - }); + writeAirportRecord(existingAirport, { + id: airportId, + backend: 'daed', + name: name, + sourceHash: state.sourceHash, + groupId: groupId, + subscriptionId: newSubId, + nodeIds: [] + }); + return applyUciChanges().then(function() { + items.forEach(function(item) { item.duplicate = true; item.selected = false; }); + return { added: items.length, duplicates: 0, failed: failed }; }); }); }); }); }).catch(function(error) { - if (groupReady || !token || (!createdIds.length && !createdGroupId)) + if (groupReady || !token || (!newSubId && !createdGroupId)) throw error; const cleanup = []; - if (createdIds.length) - cleanup.push(graphQL(endpoint, 'mutation RemoveNodes($ids:[ID!]!){removeNodes(ids:$ids)}', { ids: createdIds }, token)); + if (newSubId) + cleanup.push(graphQL(endpoint, 'mutation Rm($ids:[ID!]!){removeSubscriptions(ids:$ids)}', { ids: [ newSubId ] }, token)); if (createdGroupId) - cleanup.push(graphQL(endpoint, 'mutation RemoveGroup($id:ID!){removeGroup(id:$id)}', { id: createdGroupId }, token)); + cleanup.push(graphQL(endpoint, 'mutation RmG($id:ID!){removeGroup(id:$id)}', { id: createdGroupId }, token)); return Promise.all(cleanup).catch(function() {}).then(function() { throw error; }); }).finally(function() { if (credentials) credentials.password = ''; credentials = null; token = ''; + return dropStage(); }); }; diff --git a/luci-app-daede/htdocs/luci-static/resources/view/daede/updates.js b/luci-app-daede/htdocs/luci-static/resources/view/daede/updates.js index 6a09594b..9f5bc80f 100644 --- a/luci-app-daede/htdocs/luci-static/resources/view/daede/updates.js +++ b/luci-app-daede/htdocs/luci-static/resources/view/daede/updates.js @@ -168,7 +168,7 @@ return view.extend({ }; // run a backgrounded script and stream its log into the log pane until it - // logs "done (rc=N)"; then refresh the badges. Result shows inline (no popup). + // logs a final ✓/✗ status line; then refresh the badges. Inline, no popup. const runJob = function(script, arg, btn, logPath) { const orig = btn.textContent; btn.disabled = true; @@ -177,7 +177,7 @@ return view.extend({ const poll = function() { return L.resolveDefault(fs.read_direct(logPath, 'text'), '').then(function(c) { if (c) { logPane.textContent = c; logPane.classList.add('show'); } - if (/done \(rc=\d+\)/.test(c)) { refresh(); return; } + if (/[✓✗]/.test(c)) { refresh(); return; } if (tries++ > 90) return; return new Promise(function(r) { setTimeout(r, 2000); }).then(poll); }); diff --git a/luci-app-daede/root/usr/share/luci-app-daede/config-backup.sh b/luci-app-daede/root/usr/share/luci-app-daede/config-backup.sh index 3d89425c..59994209 100755 --- a/luci-app-daede/root/usr/share/luci-app-daede/config-backup.sh +++ b/luci-app-daede/root/usr/share/luci-app-daede/config-backup.sh @@ -59,7 +59,7 @@ import) fi rm -f "$tmp" "$IMPORT_B64" if [ "$rc" = 0 ]; then echo "result: config restored, backend restarted"; else echo "result: import failed"; fi - echo "$(date '+%F %T') done (rc=$rc)" + if [ "$rc" = 0 ]; then echo "$(date '+%F %T') ✓ 完成"; else echo "$(date '+%F %T') ✗ 失败 (rc=$rc)"; fi ) /dev/null 2>&1 & echo "started in background, see $LOG" ;; diff --git a/luci-app-daede/root/usr/share/luci-app-daede/gen-dae-config.sh b/luci-app-daede/root/usr/share/luci-app-daede/gen-dae-config.sh index dfe3b5a9..c65775bf 100755 --- a/luci-app-daede/root/usr/share/luci-app-daede/gen-dae-config.sh +++ b/luci-app-daede/root/usr/share/luci-app-daede/gen-dae-config.sh @@ -21,6 +21,8 @@ CONFIG_DAE="/etc/dae/config.dae" TMP_GEN="/tmp/dae-gen.dae" DAE_BIN="/usr/bin/dae" DAE_INITD="/etc/init.d/dae" +SUBS_DIR="/etc/dae/subscriptions" +SUB_STAGE="/tmp/daede-sub.txt" # dae single-quoted strings have no escaping; strip quotes/newlines defensively. sanitize() { @@ -378,10 +380,36 @@ do_import() { echo "ok" } +# Converter writes a batch of share links to a local file that dae reads as a +# file:// subscription, so a converted airport is one subscription instead of +# hundreds of manual nodes. $1=id (airport id), reads links from SUB_STAGE. +# id is restricted to [A-Za-z0-9_] to keep the path inside SUBS_DIR. +do_write_sub() { + local id="$1" + case "$id" in ''|*[!A-Za-z0-9_]*) echo "bad id" >&2; return 2 ;; esac + [ -f "$SUB_STAGE" ] || { echo "no staged data" >&2; return 1; } + mkdir -p "$SUBS_DIR" + # dae rejects subscription/config files readable by group/other (needs <=0640) + cp "$SUB_STAGE" "$SUBS_DIR/$id.sub.tmp" || { echo "write failed" >&2; return 1; } + chmod 0600 "$SUBS_DIR/$id.sub.tmp" + mv "$SUBS_DIR/$id.sub.tmp" "$SUBS_DIR/$id.sub" + rm -f "$SUB_STAGE" + echo "ok" +} + +do_delete_sub() { + local id="$1" + case "$id" in ''|*[!A-Za-z0-9_]*) return 0 ;; esac + rm -f "$SUBS_DIR/$id.sub" + echo "ok" +} + # ===================== entry ===================== case "$1" in - generate) generate ;; - import) do_import ;; - *) echo "usage: $0 {generate|import}" >&2; exit 2 ;; + generate) generate ;; + import) do_import ;; + write-sub) do_write_sub "$2" ;; + delete-sub) do_delete_sub "$2" ;; + *) echo "usage: $0 {generate|import|write-sub |delete-sub }" >&2; exit 2 ;; esac diff --git a/luci-app-daede/root/usr/share/luci-app-daede/update-geo.sh b/luci-app-daede/root/usr/share/luci-app-daede/update-geo.sh index e18cd04a..83fd3884 100755 --- a/luci-app-daede/root/usr/share/luci-app-daede/update-geo.sh +++ b/luci-app-daede/root/usr/share/luci-app-daede/update-geo.sh @@ -70,7 +70,7 @@ fi echo "$(date '+%F %T') updated $DEST ($size bytes)" fi fi - echo "$(date '+%F %T') done (rc=$rc)" + if [ "$rc" = 0 ]; then echo "$(date '+%F %T') ✓ 完成"; else echo "$(date '+%F %T') ✗ 失败 (rc=$rc)"; fi ) /dev/null 2>&1 & echo "started in background, see $LOG" diff --git a/luci-app-daede/root/usr/share/luci-app-daede/update-pkg.sh b/luci-app-daede/root/usr/share/luci-app-daede/update-pkg.sh index 9edf64af..615bb852 100755 --- a/luci-app-daede/root/usr/share/luci-app-daede/update-pkg.sh +++ b/luci-app-daede/root/usr/share/luci-app-daede/update-pkg.sh @@ -85,7 +85,7 @@ fi exit 3 fi - echo "$(date '+%F %T') done (rc=$rc)" + if [ "$rc" = 0 ]; then echo "$(date '+%F %T') ✓ 完成"; else echo "$(date '+%F %T') ✗ 失败 (rc=$rc)"; fi # luci-app-daede upgrade replaces ACL JSON — reload rpcd so changes apply. if [ "$PKG" = "luci-app-daede" ] && [ "$rc" = "0" ]; then diff --git a/luci-app-daede/root/usr/share/rpcd/acl.d/luci-app-daede.json b/luci-app-daede/root/usr/share/rpcd/acl.d/luci-app-daede.json index 656b69d0..8698a530 100644 --- a/luci-app-daede/root/usr/share/rpcd/acl.d/luci-app-daede.json +++ b/luci-app-daede/root/usr/share/rpcd/acl.d/luci-app-daede.json @@ -42,7 +42,12 @@ "/etc/dae/config.dae": [ "write" ], "/tmp/dae-validate.dae": [ "write" ], "/tmp/daede-import.b64": [ "write" ], + "/tmp/daede-sub.txt": [ "write" ], + "/tmp/daede-daedsub-*": [ "write" ], + "/bin/rm -f /tmp/daede-daedsub-*": [ "exec" ], "/usr/share/luci-app-daede/config-backup.sh import": [ "exec" ], + "/usr/share/luci-app-daede/gen-dae-config.sh write-sub *": [ "exec" ], + "/usr/share/luci-app-daede/gen-dae-config.sh delete-sub *": [ "exec" ], "/etc/config/daede": [ "write" ], "/var/log/dae/dae.log": [ "write" ], "/var/log/daed/daed.log": [ "write" ], diff --git a/luci-app-daede/root/www/cgi-bin/daede-sub b/luci-app-daede/root/www/cgi-bin/daede-sub new file mode 100644 index 00000000..081acb31 --- /dev/null +++ b/luci-app-daede/root/www/cgi-bin/daede-sub @@ -0,0 +1,25 @@ +#!/bin/sh +# daede-sub - serve a converter's staged node list to the local daed only. +# +# daed (dae-wing) can only build a subscription by HTTP-fetching a link, and it +# does not read file:// like dae core. So the converter stages the base64 share +# links in /tmp/daede-daedsub- and points daed's importSubscription at +# http://127.0.0.1/cgi-bin/daede-sub?t=. This CGI is the read side. +# +# Locked to loopback (REMOTE_ADDR), so even though uhttpd listens on the LAN no +# remote client can pull the links. The frontend deletes the staged file after +# the import (success or failure), so the exposure is one local fetch. + +deny() { printf 'Status: 403 Forbidden\r\nContent-Type: text/plain\r\n\r\nforbidden\n'; exit 0; } + +[ "$REMOTE_ADDR" = "127.0.0.1" ] || deny + +# token: only [A-Za-z0-9] so the path can't escape /tmp +t=$(printf '%s' "$QUERY_STRING" | sed -n 's/^.*\bt=\([A-Za-z0-9]\{1,64\}\).*$/\1/p') +[ -n "$t" ] || deny + +f="/tmp/daede-daedsub-$t" +[ -f "$f" ] || deny + +printf 'Content-Type: text/plain\r\n\r\n' +cat "$f" diff --git a/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js b/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js index cb4b4755..80cc1464 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/fchomo.js @@ -184,6 +184,7 @@ const load_balance_strategy = [ ]; const outbound_type = [ + ['rematch', _('Rematch'), _('Rematching routing rules')], ['direct', _('DIRECT') + ' - ' + _('TCP/UDP')], ['http', _('HTTP') + ' - ' + _('TCP')], ['socks5', _('SOCKS5') + ' - ' + _('TCP/UDP')], @@ -281,6 +282,7 @@ const rules_type = [ //['IN-TYPE'], //['IN-USER'], //['IN-NAME'], + ['REMATCH-NAME'], ['PROCESS-PATH'], ['PROCESS-PATH-REGEX'], @@ -300,7 +302,7 @@ const rules_type = [ const rules_type_allowparms = [ // params only available for types other than - // https://github.com/muink/mihomo/blob/300eb8b12a75504c4bd4a6037d2f6503fd3b347f/rules/parser.go#L12 + // https://github.com/muink/mihomo/blob/ea19cda0c9b666aa0fc1b0412ae6fbc0ea9d44e0/rules/parser.go#L12 'GEOIP', 'IP-ASN', 'IP-CIDR', @@ -1192,6 +1194,31 @@ function loadSubRuleGroup(preadds, section_id) { return this.super('load', section_id); } +function loadRematchName(preadds, section_id) { + delete this.keylist; + delete this.vallist; + + preadds?.forEach((arr) => { + this.value.apply(this, arr); + }); + let names = {}; + for (const section_type of ['rules', 'subrules']) + uci.sections(this.config, section_type, (res) => { + if (res.enabled !== '0') + try { + const obj = JSON.parse(res?.entry?.trim() || '{}'); + for (const p of obj.payload || []) + if (p.type === 'REMATCH-NAME') + names[p.factor] = p.factor; + } catch {} + }); + Object.keys(names).forEach((name) => { + this.value(name, name); + }); + + return this.super('load', section_id); +} + function renderStatus(ElId, isRunning, instance, noGlobal) { const visible = isRunning && (isRunning.http || isRunning.https); @@ -1797,6 +1824,7 @@ return baseclass.extend({ loadProviderLabel, loadRulesetLabel, loadSubRuleGroup, + loadRematchName, // render renderStatus, updateStatus, diff --git a/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js b/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js index 46959f8a..7d7c3778 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/fchomo/listeners.js @@ -602,6 +602,10 @@ function renderListeners(s, uciconfig, isClient) { /* Extra fields */ if (isClient) { + o = s.taboption('field_general', form.Value, 'routing_mark', _('Routing mark (Fwmark)')); + o.datatype = 'uinteger'; + o.editable = true; + o = s.taboption('field_general', hm.ListValue, 'rule', _('Sub rule'), _('Name of the Sub rule used for inbound matching.')); o.value.apply(o, ['', _('null')]); diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js index b5a18bfc..902af06e 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/client.js @@ -310,7 +310,7 @@ const parseRulesYaml = hm.parseYaml.extend({ if (!entry) return null; - // key mapping // 2026/01/18 + // key mapping // 2026/06/12 let config = { id: this.id, label: '%s %s'.format(this.id.slice(0,7), _('(Imported)')), @@ -365,7 +365,7 @@ const parseRulesYaml = hm.parseYaml.extend({ ParseRule(tp, payload, target, params) { // parse rules - // https://github.com/muink/mihomo/blob/487de9b5482d838acc33b067045a0dc293e35d40/rules/parser.go#L12 + // https://github.com/muink/mihomo/blob/ea19cda0c9b666aa0fc1b0412ae6fbc0ea9d44e0/rules/parser.go#L12 // nested ParseRule let logical_payload, subrule; @@ -427,7 +427,7 @@ const parseRulesYaml = hm.parseYaml.extend({ parseRules(line) { // parse rules - // https://github.com/muink/mihomo/blob/300eb8b12a75504c4bd4a6037d2f6503fd3b347f/config/config.go#L1038-L1062 + // https://github.com/muink/mihomo/blob/ad730ae9744971dfaa75bda20cfc2ffe07eeb59d/config/config.go#L1090-L1118 let [tp, payload, target, params] = this.ParseRulePayload(line, true); if (!target) return null; // error: format invalid @@ -561,6 +561,14 @@ function renderPayload(s, total, uciconfig) { o.depends(Object.fromEntries([[prefix + 'type', /\bPROCESS\b/]])); initPayload(o, n, 'factor', uciconfig); + o = s.option(form.Value, prefix + 'rematchname', _('Factor') + ` ${n+1}`); + o.value('rematch1'); + o.validate = hm.validateAuthUsername; + if (n === 0) + o.depends('type', 'REMATCH-NAME'); + o.depends(prefix + 'type', 'REMATCH-NAME'); + initPayload(o, n, 'factor', uciconfig); + o = s.option(form.Value, prefix + 'uint', _('Factor') + ` ${n+1}`); o.datatype = 'uinteger'; if (n === 0) @@ -571,7 +579,7 @@ function renderPayload(s, total, uciconfig) { o = s.option(form.Value, prefix + 'ip', _('Factor') + ` ${n+1}`); o.datatype = 'cidr'; if (n === 0) { - o.depends({type: /\b(CIDR|CIDR6)\b/}); + o.depends({type: /\bCIDR6?\b/}); o.depends({type: /\bIP-SUFFIX\b/}); } o.depends(Object.fromEntries([[prefix + 'type', /\bCIDR6?\b/]])); @@ -1386,6 +1394,9 @@ return view.extend({ so.placeholder = '7853'; so.rmempty = false; + so = ss.option(form.Value, 'routing_mark', _('Listen routing mark (Fwmark)')); + so.datatype = 'uinteger' + so = ss.option(form.Flag, 'ipv6', _('IPv6 support')); so.default = so.enabled; diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js index 287e2072..f067529c 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/global.js @@ -648,6 +648,9 @@ return view.extend({ 'To access the API on a private network from a public website, it must be enabled.')); so.default = so.enabled; + so = ss.option(form.Value, 'external_controller_routing_mark', _('API routing mark (Fwmark)')); + so.datatype = 'uinteger'; + so = ss.option(form.Value, 'external_controller_port', _('API HTTP port')); so.datatype = 'port'; so.placeholder = '9090'; diff --git a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js index a5388c0f..e51e3882 100644 --- a/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js +++ b/luci-app-fchomo/htdocs/luci-static/resources/view/fchomo/node.js @@ -247,7 +247,7 @@ return view.extend({ so.default = so.enabled; so.editable = true; - so = ss.taboption('field_general', form.ListValue, 'type', _('Type')); + so = ss.taboption('field_general', form.RichListValue, 'type', _('Type')); so.default = hm.outbound_type[0][0]; hm.outbound_type.forEach((res) => { so.value.apply(so, res); @@ -256,12 +256,24 @@ return view.extend({ so = ss.taboption('field_general', form.Value, 'server', _('Server address')); so.datatype = 'host'; so.rmempty = false; - so.depends({type: 'direct', '!reverse': true}); + so.depends({type: /^(rematch|direct)$/, '!reverse': true}); so = ss.taboption('field_general', form.Value, 'port', _('Port')); so.datatype = 'port'; so.rmempty = false; - so.depends({type: /^(direct|mieru)$/, '!reverse': true}); + so.depends({type: /^(rematch|direct|mieru)$/, '!reverse': true}); + + /* Rematch fields */ + so = ss.taboption('field_general', form.ListValue, 'target_rematch_name', _('REMATCH-NAME marking')); + so.load = L.bind(hm.loadRematchName, so, [['', _('-- Please choose --')]]); + so.rmempty = false; + so.depends('type', 'rematch'); + so.modalonly = true; + + so = ss.taboption('field_general', form.ListValue, 'target_sub_rule', _('Use sub rule')); + so.load = L.bind(hm.loadSubRuleGroup, so, [['', _('-- Please choose --')]]); + so.depends('type', 'rematch'); + so.modalonly = true; /* HTTP / SOCKS fields */ /* hm.validateAuth */ @@ -579,6 +591,11 @@ return view.extend({ so.depends('type', 'tuic'); so.modalonly = true; + so = ss.taboption('field_general', form.Flag, 'tuic_fast_open', _('Enable fast open')); + so.default = so.disabled; + so.depends('type', 'tuic'); + so.modalonly = true; + so = ss.taboption('field_general', form.Flag, 'tuic_reduce_rtt', _('Enable 0-RTT handshake'), _('Enable 0-RTT QUIC connection handshake on the client side. This is not impacting much on the performance, as the protocol is fully multiplexed.
' + 'Disabling this is highly recommended, as it is vulnerable to replay attacks.')); @@ -721,18 +738,38 @@ return view.extend({ so.datatype = 'ip4addr(1)'; so.placeholder = '172.16.0.2'; so.rmempty = false; - so.depends('type', 'masque'); + so.depends({type: 'masque', masque_network: /^(|h2)$/}); so.modalonly = true; so = ss.taboption('field_general', form.Value, 'masque_ipv6', _('Local IPv6 address'), _('The %s address used by local machine in the Cloudflare WARP network.').format('IPv6')); so.datatype = 'ip6addr(1)'; - so.depends('type', 'masque'); + so.depends({type: 'masque', masque_network: /^(|h2)$/}); so.modalonly = true; so = ss.taboption('field_general', form.Value, 'masque_mtu', _('MTU')); so.datatype = 'range(0,9000)'; so.placeholder = '1280'; + so.depends({type: 'masque', masque_network: /^(|h2)$/}); + so.modalonly = true; + + so = ss.taboption('field_general', form.ListValue, 'masque_network', _('Network')); + so.default = ''; + so.value('', _('h3')); + so.value('h3-l4proxy', _('h3-l4proxy')); + so.value('h2', _('h2')); + so.validate = function(section_id, value) { + const udp = this.section.getUIElement(section_id, 'udp').node.querySelector('input'); + + // Force disabled + if (value === 'h3-l4proxy') { + udp.checked = false; + udp.disabled = true; + } else + udp.removeAttribute('disabled'); + + return true; + } so.depends('type', 'masque'); so.modalonly = true; @@ -889,7 +926,8 @@ return view.extend({ hm.congestion_controller.forEach((res) => { so.value.apply(so, res); }) - so.depends({type: /^(tuic|masque|trusttunnel)$/}); + so.depends({type: /^(tuic|trusttunnel)$/}); + so.depends({type: 'masque', masque_network: /^(|h3-l4proxy)$/}); so.modalonly = true; so = ss.taboption('field_general', form.ListValue, 'bbr_profile', _('BBR profile')); @@ -903,7 +941,7 @@ return view.extend({ so = ss.taboption('field_general', form.Flag, 'udp', _('UDP')); so.default = so.disabled; - so.depends({type: /^(direct|socks5|ss|mieru|vmess|vless|trojan|anytls|trusttunnel|masque|wireguard)$/}); + so.depends({type: /^(rematch|direct|socks5|ss|mieru|vmess|vless|trojan|anytls|trusttunnel|masque|wireguard)$/}); so.depends({type: 'snell', snell_version: /^(3|4|5)$/}); so.modalonly = true; @@ -1038,7 +1076,7 @@ return view.extend({ return true; } - so.depends({type: /^(http|socks5|vmess|vless|trojan|anytls|hysteria|hysteria2|tuic|masque|trusttunnel)$/}); + so.depends({type: /^(http|socks5|vmess|vless|trojan|anytls|hysteria|hysteria2|tuic|trusttunnel)$/}); so.modalonly = true; so = ss.taboption('field_tls', form.Flag, 'tls_disable_sni', _('Disable SNI'), @@ -1081,9 +1119,6 @@ return view.extend({ case 'vless': def_alpn = ['h3', 'h2', 'http/1.1']; break; - case 'masque': - def_alpn = ['h2']; - break; case 'trusttunnel': def_alpn = ['h3', 'h2']; break; @@ -1096,7 +1131,7 @@ return view.extend({ return true; } - so.depends({tls: '1', type: /^(vmess|vless|trojan|anytls|hysteria|hysteria2|tuic|masque|trusttunnel)$/}); + so.depends({tls: '1', type: /^(vmess|vless|trojan|anytls|hysteria|hysteria2|tuic|trusttunnel)$/}); so.depends({type: 'ss', plugin: 'shadow-tls'}); so.modalonly = true; @@ -1470,10 +1505,12 @@ return view.extend({ /* Dial fields */ so = ss.taboption('field_dial', form.Flag, 'tfo', _('TFO')); so.default = so.disabled; + so.depends({type: /^(rematch)$/, '!reverse': true}); so.modalonly = true; so = ss.taboption('field_dial', form.Flag, 'mptcp', _('mpTCP')); so.default = so.disabled; + so.depends({type: /^(rematch)$/, '!reverse': true}); so.modalonly = true; /* Features are implemented in proxy chain @@ -1487,11 +1524,13 @@ return view.extend({ _('Priority: Proxy Node > Global.')); so.multiple = false; so.noaliases = true; + so.depends({type: /^(rematch)$/, '!reverse': true}); so.modalonly = true; - so = ss.taboption('field_dial', form.Value, 'routing_mark', _('Routing mark'), + so = ss.taboption('field_dial', form.Value, 'routing_mark', _('Routing mark (Fwmark)'), _('Priority: Proxy Node > Global.')); so.datatype = 'uinteger'; + so.depends({type: /^(rematch)$/, '!reverse': true}); so.modalonly = true; so = ss.taboption('field_dial', form.ListValue, 'ip_version', _('IP version')); @@ -1499,6 +1538,7 @@ return view.extend({ hm.ip_version.forEach((res) => { so.value.apply(so, res); }) + so.depends({type: /^(rematch)$/, '!reverse': true}); so.modalonly = true; /* Proxy Node END */ @@ -1874,7 +1914,7 @@ return view.extend({ so.depends({type: 'inline', '!reverse': true}); so.modalonly = true; - so = ss.taboption('field_override', form.Value, 'override_routing_mark', _('Routing mark'), + so = ss.taboption('field_override', form.Value, 'override_routing_mark', _('Routing mark (Fwmark)'), _('Priority: Proxy Node > Global.')); so.datatype = 'uinteger'; so.depends({type: 'inline', '!reverse': true}); diff --git a/luci-app-fchomo/po/templates/fchomo.pot b/luci-app-fchomo/po/templates/fchomo.pot index a9ab0796..078d0d0c 100644 --- a/luci-app-fchomo/po/templates/fchomo.pot +++ b/luci-app-fchomo/po/templates/fchomo.pot @@ -5,53 +5,55 @@ msgstr "Content-Type: text/plain; charset=UTF-8" msgid "%s log" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:250 #: htdocs/luci-static/resources/fchomo.js:251 #: htdocs/luci-static/resources/fchomo.js:252 #: htdocs/luci-static/resources/fchomo.js:253 #: htdocs/luci-static/resources/fchomo.js:254 #: htdocs/luci-static/resources/fchomo.js:255 +#: htdocs/luci-static/resources/fchomo.js:256 msgid "%s ports" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:615 -#: htdocs/luci-static/resources/fchomo.js:618 +#: htdocs/luci-static/resources/fchomo.js:617 +#: htdocs/luci-static/resources/fchomo.js:620 #: htdocs/luci-static/resources/view/fchomo/client.js:316 msgid "(Imported)" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:991 -#: htdocs/luci-static/resources/fchomo/listeners.js:999 -#: htdocs/luci-static/resources/fchomo/listeners.js:1008 +#: htdocs/luci-static/resources/fchomo/listeners.js:1002 +#: htdocs/luci-static/resources/fchomo/listeners.js:1010 +#: htdocs/luci-static/resources/fchomo/listeners.js:1019 #: htdocs/luci-static/resources/view/fchomo/global.js:564 #: htdocs/luci-static/resources/view/fchomo/global.js:570 -#: htdocs/luci-static/resources/view/fchomo/node.js:1124 -#: htdocs/luci-static/resources/view/fchomo/node.js:1130 -#: htdocs/luci-static/resources/view/fchomo/node.js:1138 -#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/view/fchomo/node.js:1159 +#: htdocs/luci-static/resources/view/fchomo/node.js:1165 +#: htdocs/luci-static/resources/view/fchomo/node.js:1173 +#: htdocs/luci-static/resources/view/fchomo/node.js:1179 msgid "(mTLS)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:861 -#: htdocs/luci-static/resources/view/fchomo/client.js:862 -#: htdocs/luci-static/resources/view/fchomo/client.js:1044 -#: htdocs/luci-static/resources/view/fchomo/client.js:1045 -#: htdocs/luci-static/resources/view/fchomo/client.js:1058 -#: htdocs/luci-static/resources/view/fchomo/client.js:1059 -#: htdocs/luci-static/resources/view/fchomo/client.js:1288 -#: htdocs/luci-static/resources/view/fchomo/node.js:1993 -#: htdocs/luci-static/resources/view/fchomo/node.js:1999 -#: htdocs/luci-static/resources/view/fchomo/node.js:2013 -#: htdocs/luci-static/resources/view/fchomo/node.js:2019 +#: htdocs/luci-static/resources/view/fchomo/client.js:869 +#: htdocs/luci-static/resources/view/fchomo/client.js:870 +#: htdocs/luci-static/resources/view/fchomo/client.js:1052 +#: htdocs/luci-static/resources/view/fchomo/client.js:1053 +#: htdocs/luci-static/resources/view/fchomo/client.js:1066 +#: htdocs/luci-static/resources/view/fchomo/client.js:1067 +#: htdocs/luci-static/resources/view/fchomo/client.js:1296 +#: htdocs/luci-static/resources/view/fchomo/node.js:268 +#: htdocs/luci-static/resources/view/fchomo/node.js:274 +#: htdocs/luci-static/resources/view/fchomo/node.js:2035 +#: htdocs/luci-static/resources/view/fchomo/node.js:2041 +#: htdocs/luci-static/resources/view/fchomo/node.js:2055 +#: htdocs/luci-static/resources/view/fchomo/node.js:2061 msgid "-- Please choose --" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:402 +#: htdocs/luci-static/resources/fchomo.js:404 msgid "0-RTT reuse." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:399 -#: htdocs/luci-static/resources/fchomo.js:403 +#: htdocs/luci-static/resources/fchomo.js:401 +#: htdocs/luci-static/resources/fchomo.js:405 msgid "1-RTT only." msgstr "" @@ -59,32 +61,32 @@ msgstr "" msgid "163Music" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:349 +#: htdocs/luci-static/resources/fchomo.js:351 msgid "2022-blake3-aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:350 +#: htdocs/luci-static/resources/fchomo.js:352 msgid "2022-blake3-aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:351 +#: htdocs/luci-static/resources/fchomo.js:353 msgid "2022-blake3-chacha20-poly1305" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:690 +#: htdocs/luci-static/resources/view/fchomo/client.js:698 msgid "0 or 1 only." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:969 -#: htdocs/luci-static/resources/fchomo/listeners.js:984 -#: htdocs/luci-static/resources/fchomo/listeners.js:1009 -#: htdocs/luci-static/resources/view/fchomo/node.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1145 +#: htdocs/luci-static/resources/fchomo/listeners.js:980 +#: htdocs/luci-static/resources/fchomo/listeners.js:995 +#: htdocs/luci-static/resources/fchomo/listeners.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1166 +#: htdocs/luci-static/resources/view/fchomo/node.js:1180 msgid "Save your configuration before uploading files!" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:286 -#: htdocs/luci-static/resources/view/fchomo/node.js:402 +#: htdocs/luci-static/resources/view/fchomo/node.js:414 msgid "" "A base64 string is used to fine-tune network behavior.
Please refer to " "the document" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:794 -#: htdocs/luci-static/resources/view/fchomo/global.js:857 -#: htdocs/luci-static/resources/view/fchomo/global.js:891 +#: htdocs/luci-static/resources/view/fchomo/global.js:797 +#: htdocs/luci-static/resources/view/fchomo/global.js:860 +#: htdocs/luci-static/resources/view/fchomo/global.js:894 msgid "All allowed" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:247 +#: htdocs/luci-static/resources/fchomo.js:248 msgid "All ports" msgstr "" @@ -244,11 +250,11 @@ msgid "" "network from a public website, it must be enabled." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:896 +#: htdocs/luci-static/resources/fchomo/listeners.js:961 msgid "Allow insecure connections" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:798 +#: htdocs/luci-static/resources/view/fchomo/node.js:835 msgid "Allowed IPs" msgstr "" @@ -261,12 +267,12 @@ msgid "Already in updating." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:543 -#: htdocs/luci-static/resources/view/fchomo/node.js:668 +#: htdocs/luci-static/resources/view/fchomo/node.js:685 msgid "Alter ID" msgstr "" #: htdocs/luci-static/resources/fchomo.js:163 -#: htdocs/luci-static/resources/fchomo.js:198 +#: htdocs/luci-static/resources/fchomo.js:199 msgid "AnyTLS" msgstr "" @@ -274,12 +280,12 @@ msgstr "" msgid "Application version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:819 +#: htdocs/luci-static/resources/view/fchomo/global.js:822 msgid "As the TOP upstream of dnsmasq" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:820 -#: htdocs/luci-static/resources/view/fchomo/global.js:827 +#: htdocs/luci-static/resources/view/fchomo/global.js:823 +#: htdocs/luci-static/resources/view/fchomo/global.js:830 msgid "As the TOP upstream of dnsmasq." msgstr "" @@ -287,16 +293,16 @@ msgstr "" msgid "Auth timeout" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:690 +#: htdocs/luci-static/resources/view/fchomo/node.js:707 msgid "Authenticated length" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:440 -#: htdocs/luci-static/resources/fchomo/listeners.js:1163 +#: htdocs/luci-static/resources/fchomo/listeners.js:1174 #: htdocs/luci-static/resources/view/fchomo/global.js:423 -#: htdocs/luci-static/resources/view/fchomo/node.js:482 -#: htdocs/luci-static/resources/view/fchomo/node.js:506 -#: htdocs/luci-static/resources/view/fchomo/node.js:1326 +#: htdocs/luci-static/resources/view/fchomo/node.js:494 +#: htdocs/luci-static/resources/view/fchomo/node.js:518 +#: htdocs/luci-static/resources/view/fchomo/node.js:1361 msgid "Auto" msgstr "" @@ -312,8 +318,8 @@ msgstr "" msgid "Auto update resources." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:629 -#: htdocs/luci-static/resources/view/fchomo/node.js:895 +#: htdocs/luci-static/resources/fchomo/listeners.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:933 msgid "BBR profile" msgstr "" @@ -321,11 +327,11 @@ msgstr "" msgid "Baidu" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:705 +#: htdocs/luci-static/resources/view/fchomo/node.js:722 msgid "Base64 encoded ECDSA private key on the NIST P-256 curve." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:713 +#: htdocs/luci-static/resources/view/fchomo/node.js:730 msgid "Base64 encoded ECDSA public key on the NIST P-256 curve." msgstr "" @@ -346,23 +352,23 @@ msgstr "" msgid "Binary mrs" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:755 -#: htdocs/luci-static/resources/view/fchomo/node.js:1485 -#: htdocs/luci-static/resources/view/fchomo/node.js:1867 +#: htdocs/luci-static/resources/view/fchomo/global.js:758 +#: htdocs/luci-static/resources/view/fchomo/node.js:1522 +#: htdocs/luci-static/resources/view/fchomo/node.js:1909 msgid "Bind interface" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1486 -#: htdocs/luci-static/resources/view/fchomo/node.js:1868 +#: htdocs/luci-static/resources/view/fchomo/node.js:1523 +#: htdocs/luci-static/resources/view/fchomo/node.js:1910 msgid "Bind outbound interface.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:756 +#: htdocs/luci-static/resources/view/fchomo/global.js:759 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:796 +#: htdocs/luci-static/resources/view/fchomo/global.js:799 msgid "Black list" msgstr "" @@ -370,16 +376,16 @@ msgstr "" msgid "Block DNS queries" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1690 -#: htdocs/luci-static/resources/view/fchomo/client.js:1699 +#: htdocs/luci-static/resources/view/fchomo/client.js:1701 +#: htdocs/luci-static/resources/view/fchomo/client.js:1710 msgid "Bootstrap DNS policy (Node)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1392 +#: htdocs/luci-static/resources/view/fchomo/client.js:1403 msgid "Bootstrap DNS server" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1399 +#: htdocs/luci-static/resources/view/fchomo/client.js:1410 msgid "Bootstrap DNS server (Node)" msgstr "" @@ -387,11 +393,11 @@ msgstr "" msgid "BundleMRS version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:858 +#: htdocs/luci-static/resources/view/fchomo/global.js:861 msgid "Bypass CN" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:892 +#: htdocs/luci-static/resources/view/fchomo/global.js:895 msgid "Bypass DSCP" msgstr "" @@ -399,10 +405,10 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:439 #: htdocs/luci-static/resources/fchomo/listeners.js:440 #: htdocs/luci-static/resources/fchomo/listeners.js:441 -#: htdocs/luci-static/resources/view/fchomo/node.js:480 -#: htdocs/luci-static/resources/view/fchomo/node.js:481 -#: htdocs/luci-static/resources/view/fchomo/node.js:482 -#: htdocs/luci-static/resources/view/fchomo/node.js:483 +#: htdocs/luci-static/resources/view/fchomo/node.js:492 +#: htdocs/luci-static/resources/view/fchomo/node.js:493 +#: htdocs/luci-static/resources/view/fchomo/node.js:494 +#: htdocs/luci-static/resources/view/fchomo/node.js:495 msgid "CDN support" msgstr "" @@ -418,21 +424,21 @@ msgstr "" msgid "CORS allowed origins, * will be used if empty." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:731 +#: htdocs/luci-static/resources/fchomo.js:733 msgid "Cancel" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1103 +#: htdocs/luci-static/resources/view/fchomo/node.js:1138 msgid "Cert fingerprint" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1104 +#: htdocs/luci-static/resources/view/fchomo/node.js:1139 msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:961 -#: htdocs/luci-static/resources/view/fchomo/node.js:1124 +#: htdocs/luci-static/resources/fchomo/listeners.js:972 +#: htdocs/luci-static/resources/view/fchomo/node.js:1159 msgid "Certificate path" msgstr "" @@ -463,14 +469,14 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:255 #: htdocs/luci-static/resources/fchomo/listeners.js:354 -#: htdocs/luci-static/resources/view/fchomo/node.js:355 -#: htdocs/luci-static/resources/view/fchomo/node.js:414 -#: htdocs/luci-static/resources/view/fchomo/node.js:674 +#: htdocs/luci-static/resources/view/fchomo/node.js:367 +#: htdocs/luci-static/resources/view/fchomo/node.js:426 +#: htdocs/luci-static/resources/view/fchomo/node.js:691 msgid "Chipher" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:363 -#: htdocs/luci-static/resources/view/fchomo/node.js:423 +#: htdocs/luci-static/resources/view/fchomo/node.js:435 msgid "Chipher must be enabled if obfuscate downlink is disabled." msgstr "" @@ -484,25 +490,25 @@ msgid "" "to download the latest initial package." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:727 -#: htdocs/luci-static/resources/fchomo/listeners.js:1000 +#: htdocs/luci-static/resources/fchomo/listeners.js:731 +#: htdocs/luci-static/resources/fchomo/listeners.js:1011 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:959 -#: htdocs/luci-static/resources/view/fchomo/node.js:1125 -#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:997 +#: htdocs/luci-static/resources/view/fchomo/node.js:1160 +#: htdocs/luci-static/resources/view/fchomo/node.js:1174 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:22 msgid "Client" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:999 +#: htdocs/luci-static/resources/fchomo/listeners.js:1010 msgid "Client Auth Certificate path" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:991 +#: htdocs/luci-static/resources/fchomo/listeners.js:1002 msgid "Client Auth type" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1170 +#: htdocs/luci-static/resources/view/fchomo/node.js:1205 msgid "Client fingerprint" msgstr "" @@ -518,21 +524,21 @@ msgstr "" msgid "Collecting data..." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:248 #: htdocs/luci-static/resources/fchomo.js:249 +#: htdocs/luci-static/resources/fchomo.js:250 msgid "Common ports (bypass P2P traffic)" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1378 +#: htdocs/luci-static/resources/fchomo.js:1405 msgid "Complete" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1811 +#: htdocs/luci-static/resources/view/fchomo/node.js:1853 msgid "Configuration Items" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:621 -#: htdocs/luci-static/resources/view/fchomo/node.js:887 +#: htdocs/luci-static/resources/fchomo/listeners.js:625 +#: htdocs/luci-static/resources/view/fchomo/node.js:924 msgid "Congestion controller" msgstr "" @@ -540,7 +546,7 @@ msgstr "" msgid "Connection check" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:539 +#: htdocs/luci-static/resources/view/fchomo/node.js:551 msgid "Connection reuse" msgstr "" @@ -548,19 +554,19 @@ msgstr "" msgid "Conservative" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:600 +#: htdocs/luci-static/resources/fchomo.js:602 msgid "Content copied to clipboard!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:671 -#: htdocs/luci-static/resources/view/fchomo/node.js:1658 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 +#: htdocs/luci-static/resources/view/fchomo/client.js:679 +#: htdocs/luci-static/resources/view/fchomo/node.js:1698 +#: htdocs/luci-static/resources/view/fchomo/node.js:1724 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:348 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:374 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1657 +#: htdocs/luci-static/resources/view/fchomo/node.js:1697 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:347 msgid "Contents" msgstr "" @@ -569,7 +575,7 @@ msgstr "" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:602 +#: htdocs/luci-static/resources/fchomo.js:604 msgid "Copy" msgstr "" @@ -581,21 +587,21 @@ msgstr "" msgid "Cron expression" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:910 +#: htdocs/luci-static/resources/view/fchomo/global.js:913 msgid "Custom Direct List" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1782 +#: htdocs/luci-static/resources/view/fchomo/node.js:1824 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:415 msgid "Custom HTTP header." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:928 +#: htdocs/luci-static/resources/view/fchomo/global.js:931 msgid "Custom Proxy List" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:378 -#: htdocs/luci-static/resources/view/fchomo/node.js:438 +#: htdocs/luci-static/resources/view/fchomo/node.js:450 msgid "Custom byte layout" msgstr "" @@ -604,12 +610,12 @@ msgid "" "Custom internal hosts. Support yaml or json format." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:187 +#: htdocs/luci-static/resources/fchomo.js:188 msgid "DIRECT" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1742 -#: htdocs/luci-static/resources/view/fchomo/client.js:1751 +#: htdocs/luci-static/resources/view/fchomo/client.js:1753 +#: htdocs/luci-static/resources/view/fchomo/client.js:1762 msgid "DNS policy" msgstr "" @@ -617,19 +623,19 @@ msgstr "" msgid "DNS port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:874 -#: htdocs/luci-static/resources/view/fchomo/client.js:1438 -#: htdocs/luci-static/resources/view/fchomo/client.js:1447 -#: htdocs/luci-static/resources/view/fchomo/node.js:745 -#: htdocs/luci-static/resources/view/fchomo/node.js:828 +#: htdocs/luci-static/resources/view/fchomo/client.js:882 +#: htdocs/luci-static/resources/view/fchomo/client.js:1449 +#: htdocs/luci-static/resources/view/fchomo/client.js:1458 +#: htdocs/luci-static/resources/view/fchomo/node.js:782 +#: htdocs/luci-static/resources/view/fchomo/node.js:865 msgid "DNS server" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1378 +#: htdocs/luci-static/resources/view/fchomo/client.js:1386 msgid "DNS settings" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:895 +#: htdocs/luci-static/resources/view/fchomo/global.js:898 msgid "DSCP list" msgstr "" @@ -645,7 +651,7 @@ msgstr "" msgid "Default DNS (issued by WAN)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1413 +#: htdocs/luci-static/resources/view/fchomo/client.js:1424 msgid "Default DNS server" msgstr "" @@ -653,15 +659,15 @@ msgstr "" msgid "Derive from priv-key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:799 +#: htdocs/luci-static/resources/view/fchomo/node.js:836 msgid "Destination addresses allowed to be forwarded via Wireguard." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1992 +#: htdocs/luci-static/resources/view/fchomo/node.js:2034 msgid "Destination provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1998 +#: htdocs/luci-static/resources/view/fchomo/node.js:2040 msgid "Destination proxy node" msgstr "" @@ -669,8 +675,8 @@ msgstr "" msgid "Dial fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2005 -#: htdocs/luci-static/resources/view/fchomo/node.js:2025 +#: htdocs/luci-static/resources/view/fchomo/node.js:2047 +#: htdocs/luci-static/resources/view/fchomo/node.js:2067 msgid "Different chain head/tail" msgstr "" @@ -678,29 +684,29 @@ msgstr "" msgid "Direct" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:798 +#: htdocs/luci-static/resources/view/fchomo/global.js:801 msgid "Direct IPv4 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:801 +#: htdocs/luci-static/resources/view/fchomo/global.js:804 msgid "Direct IPv6 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:804 +#: htdocs/luci-static/resources/view/fchomo/global.js:807 msgid "Direct MAC-s" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:194 #: htdocs/luci-static/resources/view/fchomo/global.js:424 -#: htdocs/luci-static/resources/view/fchomo/node.js:310 +#: htdocs/luci-static/resources/view/fchomo/node.js:322 msgid "Disable" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:732 +#: htdocs/luci-static/resources/view/fchomo/global.js:735 msgid "Disable ECN of quic-go" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:729 +#: htdocs/luci-static/resources/view/fchomo/global.js:732 msgid "Disable GSO of quic-go" msgstr "" @@ -708,55 +714,55 @@ msgstr "" msgid "Disable ICMP Forwarding" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1044 +#: htdocs/luci-static/resources/view/fchomo/node.js:1082 msgid "Disable SNI" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1095 +#: htdocs/luci-static/resources/view/fchomo/client.js:1103 msgid "Disable UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:726 +#: htdocs/luci-static/resources/view/fchomo/global.js:729 msgid "Disable safe path check" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:821 +#: htdocs/luci-static/resources/view/fchomo/client.js:829 msgid "" "Do not resolve the domain connection to IP for this match.
Only works " "for pure domain inbound connections without DNS resolution. e.g., socks5h" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:844 -#: htdocs/luci-static/resources/view/fchomo/client.js:849 -#: htdocs/luci-static/resources/view/fchomo/client.js:1825 -#: htdocs/luci-static/resources/view/fchomo/client.js:1832 -#: htdocs/luci-static/resources/view/fchomo/client.js:1834 +#: htdocs/luci-static/resources/view/fchomo/client.js:852 +#: htdocs/luci-static/resources/view/fchomo/client.js:857 +#: htdocs/luci-static/resources/view/fchomo/client.js:1836 +#: htdocs/luci-static/resources/view/fchomo/client.js:1843 +#: htdocs/luci-static/resources/view/fchomo/client.js:1845 msgid "Domain" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1045 +#: htdocs/luci-static/resources/view/fchomo/node.js:1083 msgid "Donot send server name in ClientHello." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1587 -#: htdocs/luci-static/resources/view/fchomo/node.js:1117 -#: htdocs/luci-static/resources/view/fchomo/node.js:1851 +#: htdocs/luci-static/resources/view/fchomo/client.js:1598 +#: htdocs/luci-static/resources/view/fchomo/node.js:1152 +#: htdocs/luci-static/resources/view/fchomo/node.js:1893 msgid "Donot verifying server certificate." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1464 +#: htdocs/luci-static/resources/view/fchomo/node.js:1499 msgid "Download bandwidth" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1465 +#: htdocs/luci-static/resources/view/fchomo/node.js:1500 msgid "Download bandwidth in Mbps." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1257 +#: htdocs/luci-static/resources/fchomo.js:1284 msgid "Download failed: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1255 +#: htdocs/luci-static/resources/fchomo.js:1282 msgid "Download successful." msgstr "" @@ -764,24 +770,24 @@ msgstr "" msgid "Dual stack" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1164 +#: htdocs/luci-static/resources/view/fchomo/node.js:1199 msgid "ECH HTTPS record query servername" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1057 -#: htdocs/luci-static/resources/view/fchomo/node.js:1158 +#: htdocs/luci-static/resources/fchomo/listeners.js:1068 +#: htdocs/luci-static/resources/view/fchomo/node.js:1193 msgid "ECH config" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1016 +#: htdocs/luci-static/resources/fchomo/listeners.js:1027 msgid "ECH key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1621 +#: htdocs/luci-static/resources/view/fchomo/client.js:1632 msgid "ECS override" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1605 +#: htdocs/luci-static/resources/view/fchomo/client.js:1616 msgid "EDNS Client Subnet" msgstr "" @@ -789,11 +795,11 @@ msgstr "" msgid "ETag support" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1304 +#: htdocs/luci-static/resources/view/fchomo/node.js:1339 msgid "Early Data first packet length limit." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1310 +#: htdocs/luci-static/resources/view/fchomo/node.js:1345 msgid "Early Data header name" msgstr "" @@ -801,10 +807,6 @@ msgstr "" msgid "Edit inbound" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:214 -msgid "Edit node" -msgstr "" - #: htdocs/luci-static/resources/view/fchomo/node.js:214 msgid "Edit outbound" msgstr "" @@ -813,102 +815,106 @@ msgstr "" msgid "Edit ruleset" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1655 +#: htdocs/luci-static/resources/view/fchomo/node.js:1695 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:345 msgid "Editer" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:393 +#: htdocs/luci-static/resources/fchomo.js:395 msgid "Eliminate encryption header characteristics" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1086 +#: htdocs/luci-static/resources/view/fchomo/client.js:1094 msgid "Empty fallback" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:133 -#: htdocs/luci-static/resources/view/fchomo/client.js:932 -#: htdocs/luci-static/resources/view/fchomo/client.js:1026 -#: htdocs/luci-static/resources/view/fchomo/client.js:1272 -#: htdocs/luci-static/resources/view/fchomo/client.js:1364 -#: htdocs/luci-static/resources/view/fchomo/client.js:1503 -#: htdocs/luci-static/resources/view/fchomo/client.js:1734 -#: htdocs/luci-static/resources/view/fchomo/client.js:1790 +#: htdocs/luci-static/resources/view/fchomo/client.js:940 +#: htdocs/luci-static/resources/view/fchomo/client.js:1034 +#: htdocs/luci-static/resources/view/fchomo/client.js:1280 +#: htdocs/luci-static/resources/view/fchomo/client.js:1372 +#: htdocs/luci-static/resources/view/fchomo/client.js:1514 +#: htdocs/luci-static/resources/view/fchomo/client.js:1745 +#: htdocs/luci-static/resources/view/fchomo/client.js:1801 #: htdocs/luci-static/resources/view/fchomo/global.js:422 -#: htdocs/luci-static/resources/view/fchomo/global.js:701 +#: htdocs/luci-static/resources/view/fchomo/global.js:704 #: htdocs/luci-static/resources/view/fchomo/node.js:246 -#: htdocs/luci-static/resources/view/fchomo/node.js:1628 -#: htdocs/luci-static/resources/view/fchomo/node.js:1890 -#: htdocs/luci-static/resources/view/fchomo/node.js:1979 +#: htdocs/luci-static/resources/view/fchomo/node.js:1668 +#: htdocs/luci-static/resources/view/fchomo/node.js:1932 +#: htdocs/luci-static/resources/view/fchomo/node.js:2021 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:272 #: htdocs/luci-static/resources/view/fchomo/server.js:49 msgid "Enable" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:583 +#: htdocs/luci-static/resources/view/fchomo/node.js:600 msgid "" "Enable 0-RTT QUIC connection handshake on the client side. This is not " "impacting much on the performance, as the protocol is fully multiplexed.
Disabling this is highly recommended, as it is vulnerable to replay attacks." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:582 +#: htdocs/luci-static/resources/view/fchomo/node.js:599 msgid "Enable 0-RTT handshake" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:735 +#: htdocs/luci-static/resources/view/fchomo/global.js:738 msgid "" "Enable
IP4P " "conversion for outbound connections" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1152 +#: htdocs/luci-static/resources/view/fchomo/node.js:1187 msgid "Enable ECH" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1452 +#: htdocs/luci-static/resources/view/fchomo/node.js:1487 msgid "Enable TCP Brutal" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1453 +#: htdocs/luci-static/resources/view/fchomo/node.js:1488 msgid "Enable TCP Brutal congestion control algorithm" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1441 +#: htdocs/luci-static/resources/view/fchomo/node.js:594 +msgid "Enable fast open" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1476 msgid "Enable multiplexing only for TCP." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:424 -#: htdocs/luci-static/resources/view/fchomo/node.js:466 +#: htdocs/luci-static/resources/view/fchomo/node.js:478 msgid "Enable obfuscate for downlink" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1435 +#: htdocs/luci-static/resources/view/fchomo/node.js:1470 msgid "Enable padding" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1446 +#: htdocs/luci-static/resources/view/fchomo/node.js:1481 msgid "Enable statistic" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:911 -#: htdocs/luci-static/resources/view/fchomo/node.js:1833 +#: htdocs/luci-static/resources/view/fchomo/node.js:949 +#: htdocs/luci-static/resources/view/fchomo/node.js:1875 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:201 -#: htdocs/luci-static/resources/view/fchomo/node.js:317 +#: htdocs/luci-static/resources/view/fchomo/node.js:329 msgid "" "Enabling obfuscation will make the server incompatible with standard QUIC " "connections, losing the ability to masquerade with HTTP/3." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:690 +#: htdocs/luci-static/resources/fchomo/listeners.js:694 msgid "Encryption method" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:712 +#: htdocs/luci-static/resources/view/fchomo/node.js:729 msgid "Endpoint pubkic key" msgstr "" @@ -916,8 +922,8 @@ msgstr "" msgid "Endpoint-Independent NAT" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:723 -#: htdocs/luci-static/resources/view/fchomo/client.js:866 +#: htdocs/luci-static/resources/view/fchomo/client.js:731 +#: htdocs/luci-static/resources/view/fchomo/client.js:874 msgid "Entry" msgstr "" @@ -925,24 +931,24 @@ msgstr "" msgid "Error" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1139 +#: htdocs/luci-static/resources/view/fchomo/client.js:1147 msgid "" "Exceeding this triggers a forced health check. 5 will be used " "if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1948 +#: htdocs/luci-static/resources/view/fchomo/node.js:1990 msgid "Exclude matched node types." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1176 +#: htdocs/luci-static/resources/view/fchomo/client.js:1184 msgid "" "Exclude matched node types. Available types see here." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1171 -#: htdocs/luci-static/resources/view/fchomo/node.js:1941 +#: htdocs/luci-static/resources/view/fchomo/client.js:1179 +#: htdocs/luci-static/resources/view/fchomo/node.js:1983 msgid "Exclude nodes that meet keywords or regexps." msgstr "" @@ -950,138 +956,139 @@ msgstr "" msgid "Expand/Collapse result" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1926 +#: htdocs/luci-static/resources/view/fchomo/client.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:1968 msgid "Expected HTTP code. 204 will be used if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1133 -#: htdocs/luci-static/resources/view/fchomo/node.js:1928 +#: htdocs/luci-static/resources/view/fchomo/client.js:1141 +#: htdocs/luci-static/resources/view/fchomo/node.js:1970 msgid "Expected status" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:450 -#: htdocs/luci-static/resources/fchomo.js:453 -#: htdocs/luci-static/resources/fchomo.js:456 -#: htdocs/luci-static/resources/fchomo.js:1395 -#: htdocs/luci-static/resources/fchomo.js:1403 -#: htdocs/luci-static/resources/fchomo.js:1411 -#: htdocs/luci-static/resources/fchomo.js:1434 -#: htdocs/luci-static/resources/fchomo.js:1437 -#: htdocs/luci-static/resources/fchomo.js:1444 -#: htdocs/luci-static/resources/fchomo.js:1460 -#: htdocs/luci-static/resources/fchomo.js:1469 -#: htdocs/luci-static/resources/fchomo.js:1481 -#: htdocs/luci-static/resources/fchomo.js:1484 -#: htdocs/luci-static/resources/fchomo.js:1494 -#: htdocs/luci-static/resources/fchomo.js:1506 -#: htdocs/luci-static/resources/fchomo.js:1509 -#: htdocs/luci-static/resources/fchomo.js:1519 -#: htdocs/luci-static/resources/fchomo.js:1529 -#: htdocs/luci-static/resources/fchomo.js:1564 -#: htdocs/luci-static/resources/fchomo.js:1566 -#: htdocs/luci-static/resources/fchomo.js:1579 -#: htdocs/luci-static/resources/fchomo.js:1585 -#: htdocs/luci-static/resources/fchomo.js:1592 -#: htdocs/luci-static/resources/fchomo.js:1601 +#: htdocs/luci-static/resources/fchomo.js:452 +#: htdocs/luci-static/resources/fchomo.js:455 +#: htdocs/luci-static/resources/fchomo.js:458 +#: htdocs/luci-static/resources/fchomo.js:1422 +#: htdocs/luci-static/resources/fchomo.js:1430 +#: htdocs/luci-static/resources/fchomo.js:1438 +#: htdocs/luci-static/resources/fchomo.js:1461 +#: htdocs/luci-static/resources/fchomo.js:1464 +#: htdocs/luci-static/resources/fchomo.js:1471 +#: htdocs/luci-static/resources/fchomo.js:1487 +#: htdocs/luci-static/resources/fchomo.js:1496 +#: htdocs/luci-static/resources/fchomo.js:1508 +#: htdocs/luci-static/resources/fchomo.js:1511 +#: htdocs/luci-static/resources/fchomo.js:1521 +#: htdocs/luci-static/resources/fchomo.js:1533 +#: htdocs/luci-static/resources/fchomo.js:1536 +#: htdocs/luci-static/resources/fchomo.js:1546 +#: htdocs/luci-static/resources/fchomo.js:1556 +#: htdocs/luci-static/resources/fchomo.js:1591 +#: htdocs/luci-static/resources/fchomo.js:1593 +#: htdocs/luci-static/resources/fchomo.js:1606 +#: htdocs/luci-static/resources/fchomo.js:1612 +#: htdocs/luci-static/resources/fchomo.js:1619 +#: htdocs/luci-static/resources/fchomo.js:1628 #: htdocs/luci-static/resources/fchomo/listeners.js:363 #: htdocs/luci-static/resources/fchomo/listeners.js:410 -#: htdocs/luci-static/resources/fchomo/listeners.js:719 -#: htdocs/luci-static/resources/fchomo/listeners.js:750 -#: htdocs/luci-static/resources/fchomo/listeners.js:851 +#: htdocs/luci-static/resources/fchomo/listeners.js:723 +#: htdocs/luci-static/resources/fchomo/listeners.js:754 +#: htdocs/luci-static/resources/fchomo/listeners.js:855 #: htdocs/luci-static/resources/view/fchomo/client.js:69 -#: htdocs/luci-static/resources/view/fchomo/client.js:1020 -#: htdocs/luci-static/resources/view/fchomo/client.js:1518 -#: htdocs/luci-static/resources/view/fchomo/global.js:901 -#: htdocs/luci-static/resources/view/fchomo/node.js:423 -#: htdocs/luci-static/resources/view/fchomo/node.js:459 -#: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:514 -#: htdocs/luci-static/resources/view/fchomo/node.js:982 -#: htdocs/luci-static/resources/view/fchomo/node.js:1109 -#: htdocs/luci-static/resources/view/fchomo/node.js:2005 -#: htdocs/luci-static/resources/view/fchomo/node.js:2025 +#: htdocs/luci-static/resources/view/fchomo/client.js:1028 +#: htdocs/luci-static/resources/view/fchomo/client.js:1529 +#: htdocs/luci-static/resources/view/fchomo/global.js:904 +#: htdocs/luci-static/resources/view/fchomo/node.js:435 +#: htdocs/luci-static/resources/view/fchomo/node.js:471 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 +#: htdocs/luci-static/resources/view/fchomo/node.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/view/fchomo/node.js:2047 +#: htdocs/luci-static/resources/view/fchomo/node.js:2067 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:300 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:314 msgid "Expecting: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1124 -#: htdocs/luci-static/resources/fchomo/listeners.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1219 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 -#: htdocs/luci-static/resources/view/fchomo/node.js:1234 +#: htdocs/luci-static/resources/fchomo/listeners.js:1135 +#: htdocs/luci-static/resources/fchomo/listeners.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1254 +#: htdocs/luci-static/resources/view/fchomo/node.js:1261 +#: htdocs/luci-static/resources/view/fchomo/node.js:1269 msgid "Expecting: only support %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:720 +#: htdocs/luci-static/resources/view/fchomo/global.js:723 msgid "Experimental" msgstr "" #: htdocs/luci-static/resources/view/fchomo/client.js:551 #: htdocs/luci-static/resources/view/fchomo/client.js:564 -#: htdocs/luci-static/resources/view/fchomo/client.js:571 -#: htdocs/luci-static/resources/view/fchomo/client.js:581 -#: htdocs/luci-static/resources/view/fchomo/client.js:588 +#: htdocs/luci-static/resources/view/fchomo/client.js:572 +#: htdocs/luci-static/resources/view/fchomo/client.js:579 +#: htdocs/luci-static/resources/view/fchomo/client.js:589 #: htdocs/luci-static/resources/view/fchomo/client.js:596 -#: htdocs/luci-static/resources/view/fchomo/client.js:603 -#: htdocs/luci-static/resources/view/fchomo/client.js:670 +#: htdocs/luci-static/resources/view/fchomo/client.js:604 +#: htdocs/luci-static/resources/view/fchomo/client.js:611 +#: htdocs/luci-static/resources/view/fchomo/client.js:678 msgid "Factor" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1336 +#: htdocs/luci-static/resources/fchomo.js:1363 msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1289 +#: htdocs/luci-static/resources/fchomo.js:1316 msgid "Failed to generate %s, error: %s." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1701 +#: htdocs/luci-static/resources/fchomo.js:1728 msgid "Failed to upload %s, error: %s." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1720 +#: htdocs/luci-static/resources/fchomo.js:1747 msgid "Failed to upload, error: %s." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:240 +#: htdocs/luci-static/resources/fchomo.js:241 #: htdocs/luci-static/resources/fchomo/listeners.js:449 msgid "Fallback" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1407 -#: htdocs/luci-static/resources/view/fchomo/client.js:1420 +#: htdocs/luci-static/resources/view/fchomo/client.js:1418 +#: htdocs/luci-static/resources/view/fchomo/client.js:1431 msgid "Fallback DNS server" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1804 +#: htdocs/luci-static/resources/view/fchomo/client.js:1815 msgid "Fallback filter" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1166 -#: htdocs/luci-static/resources/view/fchomo/node.js:1935 +#: htdocs/luci-static/resources/view/fchomo/client.js:1174 +#: htdocs/luci-static/resources/view/fchomo/node.js:1977 msgid "Filter nodes that meet keywords or regexps." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1671 +#: htdocs/luci-static/resources/view/fchomo/client.js:1682 msgid "Filter record type:" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1639 -#: htdocs/luci-static/resources/view/fchomo/client.js:1655 +#: htdocs/luci-static/resources/view/fchomo/client.js:1650 +#: htdocs/luci-static/resources/view/fchomo/client.js:1666 msgid "Filter record: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1406 +#: htdocs/luci-static/resources/view/fchomo/client.js:1417 msgid "Final DNS server" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1408 +#: htdocs/luci-static/resources/view/fchomo/client.js:1419 msgid "Final DNS server (For non-poisoned domains)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1410 +#: htdocs/luci-static/resources/view/fchomo/client.js:1421 msgid "Final DNS server (For poisoned domains)" msgstr "" @@ -1090,30 +1097,30 @@ msgid "Firewall" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:535 -#: htdocs/luci-static/resources/view/fchomo/node.js:660 +#: htdocs/luci-static/resources/view/fchomo/node.js:677 msgid "Flow" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1155 +#: htdocs/luci-static/resources/view/fchomo/client.js:1163 msgid "" "For details, see %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1132 -#: htdocs/luci-static/resources/view/fchomo/node.js:1801 -#: htdocs/luci-static/resources/view/fchomo/node.js:1927 +#: htdocs/luci-static/resources/view/fchomo/client.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1843 +#: htdocs/luci-static/resources/view/fchomo/node.js:1969 msgid "" "For format see %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:740 -#: htdocs/luci-static/resources/view/fchomo/node.js:823 +#: htdocs/luci-static/resources/view/fchomo/node.js:777 +#: htdocs/luci-static/resources/view/fchomo/node.js:860 msgid "Force DNS remote resolution." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:680 +#: htdocs/luci-static/resources/view/fchomo/global.js:683 msgid "Forced sniffing domain" msgstr "" @@ -1128,7 +1135,7 @@ msgstr "" msgid "FullCombo Shark!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1259 +#: htdocs/luci-static/resources/view/fchomo/node.js:1294 msgid "GET" msgstr "" @@ -1137,7 +1144,7 @@ msgid "GFW list version" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:196 -#: htdocs/luci-static/resources/view/fchomo/node.js:312 +#: htdocs/luci-static/resources/view/fchomo/node.js:324 msgid "Gecko" msgstr "" @@ -1146,9 +1153,9 @@ msgid "General" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:119 -#: htdocs/luci-static/resources/view/fchomo/client.js:1011 +#: htdocs/luci-static/resources/view/fchomo/client.js:1019 #: htdocs/luci-static/resources/view/fchomo/node.js:233 -#: htdocs/luci-static/resources/view/fchomo/node.js:1618 +#: htdocs/luci-static/resources/view/fchomo/node.js:1658 msgid "General fields" msgstr "" @@ -1156,17 +1163,17 @@ msgstr "" msgid "General settings" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:551 #: htdocs/luci-static/resources/fchomo.js:553 -#: htdocs/luci-static/resources/fchomo.js:567 +#: htdocs/luci-static/resources/fchomo.js:555 #: htdocs/luci-static/resources/fchomo.js:569 +#: htdocs/luci-static/resources/fchomo.js:571 #: htdocs/luci-static/resources/fchomo/listeners.js:341 #: htdocs/luci-static/resources/fchomo/listeners.js:385 #: htdocs/luci-static/resources/fchomo/listeners.js:387 -#: htdocs/luci-static/resources/fchomo/listeners.js:823 -#: htdocs/luci-static/resources/fchomo/listeners.js:1049 +#: htdocs/luci-static/resources/fchomo/listeners.js:827 +#: htdocs/luci-static/resources/fchomo/listeners.js:1060 #: htdocs/luci-static/resources/view/fchomo/global.js:608 -#: htdocs/luci-static/resources/view/fchomo/node.js:1769 +#: htdocs/luci-static/resources/view/fchomo/node.js:1811 msgid "Generate" msgstr "" @@ -1182,17 +1189,17 @@ msgstr "" msgid "GeoSite version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1814 +#: htdocs/luci-static/resources/view/fchomo/client.js:1825 msgid "Geoip code" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1811 +#: htdocs/luci-static/resources/view/fchomo/client.js:1822 msgid "Geoip enable" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:845 -#: htdocs/luci-static/resources/view/fchomo/client.js:854 -#: htdocs/luci-static/resources/view/fchomo/client.js:1823 +#: htdocs/luci-static/resources/view/fchomo/client.js:853 +#: htdocs/luci-static/resources/view/fchomo/client.js:862 +#: htdocs/luci-static/resources/view/fchomo/client.js:1834 msgid "Geosite" msgstr "" @@ -1213,7 +1220,7 @@ msgstr "" msgid "Global Authentication" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:684 +#: htdocs/luci-static/resources/view/fchomo/node.js:701 msgid "Global padding" msgstr "" @@ -1221,7 +1228,7 @@ msgstr "" msgid "Google" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:253 +#: htdocs/luci-static/resources/fchomo.js:254 msgid "Google FCM" msgstr "" @@ -1229,58 +1236,58 @@ msgstr "" msgid "Grant access to fchomo configuration" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1036 +#: htdocs/luci-static/resources/view/fchomo/client.js:1044 msgid "Group" msgstr "" #: htdocs/luci-static/resources/fchomo.js:153 -#: htdocs/luci-static/resources/fchomo.js:188 +#: htdocs/luci-static/resources/fchomo.js:189 #: htdocs/luci-static/resources/fchomo/listeners.js:569 -#: htdocs/luci-static/resources/view/fchomo/node.js:846 -#: htdocs/luci-static/resources/view/fchomo/node.js:1208 -#: htdocs/luci-static/resources/view/fchomo/node.js:1219 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 +#: htdocs/luci-static/resources/view/fchomo/node.js:883 +#: htdocs/luci-static/resources/view/fchomo/node.js:1243 +#: htdocs/luci-static/resources/view/fchomo/node.js:1254 +#: htdocs/luci-static/resources/view/fchomo/node.js:1261 msgid "HTTP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:279 -#: htdocs/luci-static/resources/view/fchomo/node.js:1281 -#: htdocs/luci-static/resources/view/fchomo/node.js:1781 +#: htdocs/luci-static/resources/view/fchomo/node.js:291 +#: htdocs/luci-static/resources/view/fchomo/node.js:1316 +#: htdocs/luci-static/resources/view/fchomo/node.js:1823 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:414 msgid "HTTP header" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:430 -#: htdocs/luci-static/resources/view/fchomo/node.js:472 +#: htdocs/luci-static/resources/view/fchomo/node.js:484 msgid "HTTP mask" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:435 -#: htdocs/luci-static/resources/view/fchomo/node.js:477 -#: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:514 +#: htdocs/luci-static/resources/view/fchomo/node.js:489 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 msgid "HTTP mask mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:502 +#: htdocs/luci-static/resources/view/fchomo/node.js:514 msgid "HTTP mask multiplex" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:487 -#: htdocs/luci-static/resources/view/fchomo/node.js:492 +#: htdocs/luci-static/resources/view/fchomo/node.js:499 +#: htdocs/luci-static/resources/view/fchomo/node.js:504 msgid "HTTP mask: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1258 +#: htdocs/luci-static/resources/view/fchomo/node.js:1293 msgid "HTTP request method" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:445 -#: htdocs/luci-static/resources/view/fchomo/node.js:498 +#: htdocs/luci-static/resources/view/fchomo/node.js:510 msgid "HTTP root path" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1570 +#: htdocs/luci-static/resources/view/fchomo/client.js:1581 msgid "HTTP/3" msgstr "" @@ -1290,17 +1297,17 @@ msgid "" "returned if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1209 -#: htdocs/luci-static/resources/view/fchomo/node.js:1220 -#: htdocs/luci-static/resources/view/fchomo/node.js:1227 +#: htdocs/luci-static/resources/view/fchomo/node.js:1244 +#: htdocs/luci-static/resources/view/fchomo/node.js:1255 +#: htdocs/luci-static/resources/view/fchomo/node.js:1262 msgid "HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:876 +#: htdocs/luci-static/resources/view/fchomo/global.js:879 msgid "Handle domain" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:394 +#: htdocs/luci-static/resources/view/fchomo/node.js:406 msgid "Handshake mode" msgstr "" @@ -1316,57 +1323,57 @@ msgstr "" msgid "Header to read real client IP from (e.g. X-Forwarded-For)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:751 +#: htdocs/luci-static/resources/view/fchomo/node.js:788 msgid "Health check" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1101 -#: htdocs/luci-static/resources/view/fchomo/node.js:1895 +#: htdocs/luci-static/resources/view/fchomo/client.js:1109 +#: htdocs/luci-static/resources/view/fchomo/node.js:1937 msgid "Health check URL" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1130 -#: htdocs/luci-static/resources/view/fchomo/node.js:1925 +#: htdocs/luci-static/resources/view/fchomo/client.js:1138 +#: htdocs/luci-static/resources/view/fchomo/node.js:1967 msgid "Health check expected status" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1110 -#: htdocs/luci-static/resources/view/fchomo/node.js:1905 +#: htdocs/luci-static/resources/view/fchomo/client.js:1118 +#: htdocs/luci-static/resources/view/fchomo/node.js:1947 msgid "Health check interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1117 -#: htdocs/luci-static/resources/view/fchomo/node.js:1912 +#: htdocs/luci-static/resources/view/fchomo/client.js:1125 +#: htdocs/luci-static/resources/view/fchomo/node.js:1954 msgid "Health check timeout" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1013 -#: htdocs/luci-static/resources/view/fchomo/node.js:1620 +#: htdocs/luci-static/resources/view/fchomo/client.js:1021 +#: htdocs/luci-static/resources/view/fchomo/node.js:1660 msgid "Health fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:589 +#: htdocs/luci-static/resources/view/fchomo/node.js:606 msgid "Heartbeat interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1181 +#: htdocs/luci-static/resources/view/fchomo/client.js:1189 msgid "Hidden" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:575 -#: htdocs/luci-static/resources/view/fchomo/node.js:852 +#: htdocs/luci-static/resources/view/fchomo/node.js:889 msgid "Host that supports TLS 1.3" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:349 +#: htdocs/luci-static/resources/view/fchomo/node.js:361 msgid "Host-key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:344 +#: htdocs/luci-static/resources/view/fchomo/node.js:356 msgid "Host-key algorithms" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:492 +#: htdocs/luci-static/resources/view/fchomo/node.js:504 msgid "Host/SNI override" msgstr "" @@ -1376,7 +1383,7 @@ msgid "Hosts" msgstr "" #: htdocs/luci-static/resources/fchomo.js:165 -#: htdocs/luci-static/resources/fchomo.js:200 +#: htdocs/luci-static/resources/fchomo.js:201 msgid "Hysteria2" msgstr "" @@ -1389,21 +1396,21 @@ msgstr "" msgid "Hysteria2 Realm fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1816 -#: htdocs/luci-static/resources/view/fchomo/client.js:1829 +#: htdocs/luci-static/resources/view/fchomo/client.js:1827 +#: htdocs/luci-static/resources/view/fchomo/client.js:1840 msgid "IP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1827 +#: htdocs/luci-static/resources/view/fchomo/client.js:1838 msgid "IP CIDR" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:551 +#: htdocs/luci-static/resources/view/fchomo/node.js:563 msgid "IP override" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1497 -#: htdocs/luci-static/resources/view/fchomo/node.js:1881 +#: htdocs/luci-static/resources/view/fchomo/node.js:1536 +#: htdocs/luci-static/resources/view/fchomo/node.js:1923 msgid "IP version" msgstr "" @@ -1415,20 +1422,20 @@ msgstr "" msgid "IPv6 only" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1389 +#: htdocs/luci-static/resources/view/fchomo/client.js:1400 #: htdocs/luci-static/resources/view/fchomo/global.js:436 msgid "IPv6 support" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1187 +#: htdocs/luci-static/resources/view/fchomo/client.js:1195 msgid "Icon" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:650 msgid "Idle session check interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:640 +#: htdocs/luci-static/resources/view/fchomo/node.js:657 msgid "Idle session timeout" msgstr "" @@ -1436,7 +1443,7 @@ msgstr "" msgid "Idle timeout" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1437 +#: htdocs/luci-static/resources/fchomo.js:1464 msgid "If All ports is selected, uncheck others" msgstr "" @@ -1448,24 +1455,24 @@ msgstr "" msgid "Ignore client bandwidth" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:736 +#: htdocs/luci-static/resources/fchomo.js:738 msgid "Import" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:949 -#: htdocs/luci-static/resources/view/fchomo/client.js:1005 -#: htdocs/luci-static/resources/view/fchomo/client.js:1210 -#: htdocs/luci-static/resources/view/fchomo/client.js:1261 -#: htdocs/luci-static/resources/view/fchomo/client.js:1329 -#: htdocs/luci-static/resources/view/fchomo/client.js:1353 -#: htdocs/luci-static/resources/view/fchomo/client.js:1454 -#: htdocs/luci-static/resources/view/fchomo/client.js:1492 -#: htdocs/luci-static/resources/view/fchomo/client.js:1706 -#: htdocs/luci-static/resources/view/fchomo/client.js:1723 -#: htdocs/luci-static/resources/view/fchomo/client.js:1758 -#: htdocs/luci-static/resources/view/fchomo/client.js:1779 -#: htdocs/luci-static/resources/view/fchomo/node.js:1522 -#: htdocs/luci-static/resources/view/fchomo/node.js:1606 +#: htdocs/luci-static/resources/view/fchomo/client.js:957 +#: htdocs/luci-static/resources/view/fchomo/client.js:1013 +#: htdocs/luci-static/resources/view/fchomo/client.js:1218 +#: htdocs/luci-static/resources/view/fchomo/client.js:1269 +#: htdocs/luci-static/resources/view/fchomo/client.js:1337 +#: htdocs/luci-static/resources/view/fchomo/client.js:1361 +#: htdocs/luci-static/resources/view/fchomo/client.js:1465 +#: htdocs/luci-static/resources/view/fchomo/client.js:1503 +#: htdocs/luci-static/resources/view/fchomo/client.js:1717 +#: htdocs/luci-static/resources/view/fchomo/client.js:1734 +#: htdocs/luci-static/resources/view/fchomo/client.js:1769 +#: htdocs/luci-static/resources/view/fchomo/client.js:1790 +#: htdocs/luci-static/resources/view/fchomo/node.js:1562 +#: htdocs/luci-static/resources/view/fchomo/node.js:1646 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:154 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:249 msgid "Import mihomo config" @@ -1479,55 +1486,55 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:176 #: htdocs/luci-static/resources/fchomo/listeners.js:182 -#: htdocs/luci-static/resources/view/fchomo/node.js:298 -#: htdocs/luci-static/resources/view/fchomo/node.js:304 -#: htdocs/luci-static/resources/view/fchomo/node.js:1839 -#: htdocs/luci-static/resources/view/fchomo/node.js:1845 +#: htdocs/luci-static/resources/view/fchomo/node.js:310 +#: htdocs/luci-static/resources/view/fchomo/node.js:316 +#: htdocs/luci-static/resources/view/fchomo/node.js:1881 +#: htdocs/luci-static/resources/view/fchomo/node.js:1887 msgid "In Mbps." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1696 +#: htdocs/luci-static/resources/view/fchomo/node.js:1736 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:392 msgid "In bytes. %s will be used if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:590 -#: htdocs/luci-static/resources/view/fchomo/node.js:597 +#: htdocs/luci-static/resources/view/fchomo/node.js:607 +#: htdocs/luci-static/resources/view/fchomo/node.js:614 msgid "In millisecond." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1118 -#: htdocs/luci-static/resources/view/fchomo/client.js:1147 -#: htdocs/luci-static/resources/view/fchomo/node.js:1913 +#: htdocs/luci-static/resources/view/fchomo/client.js:1126 +#: htdocs/luci-static/resources/view/fchomo/client.js:1155 +#: htdocs/luci-static/resources/view/fchomo/node.js:1955 msgid "In millisecond. %s will be used if empty." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1350 +#: htdocs/luci-static/resources/view/fchomo/node.js:1385 msgid "In milliseconds." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:418 #: htdocs/luci-static/resources/fchomo/listeners.js:487 #: htdocs/luci-static/resources/fchomo/listeners.js:494 -#: htdocs/luci-static/resources/view/fchomo/node.js:634 -#: htdocs/luci-static/resources/view/fchomo/node.js:641 -#: htdocs/luci-static/resources/view/fchomo/node.js:1297 +#: htdocs/luci-static/resources/view/fchomo/node.js:651 +#: htdocs/luci-static/resources/view/fchomo/node.js:658 +#: htdocs/luci-static/resources/view/fchomo/node.js:1332 msgid "In seconds." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1111 +#: htdocs/luci-static/resources/view/fchomo/client.js:1119 #: htdocs/luci-static/resources/view/fchomo/global.js:446 #: htdocs/luci-static/resources/view/fchomo/global.js:451 #: htdocs/luci-static/resources/view/fchomo/global.js:536 -#: htdocs/luci-static/resources/view/fchomo/node.js:292 -#: htdocs/luci-static/resources/view/fchomo/node.js:1702 -#: htdocs/luci-static/resources/view/fchomo/node.js:1906 +#: htdocs/luci-static/resources/view/fchomo/node.js:304 +#: htdocs/luci-static/resources/view/fchomo/node.js:1742 +#: htdocs/luci-static/resources/view/fchomo/node.js:1948 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:398 msgid "In seconds. %s will be used if empty." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:739 -#: htdocs/luci-static/resources/view/fchomo/node.js:971 +#: htdocs/luci-static/resources/fchomo/listeners.js:743 +#: htdocs/luci-static/resources/view/fchomo/node.js:1009 msgid "" "In the order of one Padding-Length and one Padding-" "Interval, infinite concatenation." @@ -1539,27 +1546,27 @@ msgstr "" msgid "Inbound" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1071 +#: htdocs/luci-static/resources/view/fchomo/client.js:1079 msgid "Include all" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1076 +#: htdocs/luci-static/resources/view/fchomo/client.js:1084 msgid "Include all node" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1081 +#: htdocs/luci-static/resources/view/fchomo/client.js:1089 msgid "Include all provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1082 +#: htdocs/luci-static/resources/view/fchomo/client.js:1090 msgid "Includes all Provider." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1072 +#: htdocs/luci-static/resources/view/fchomo/client.js:1080 msgid "Includes all Proxy Node and Provider." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1077 +#: htdocs/luci-static/resources/view/fchomo/client.js:1085 msgid "Includes all Proxy Node." msgstr "" @@ -1567,62 +1574,62 @@ msgstr "" msgid "Info" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1635 +#: htdocs/luci-static/resources/view/fchomo/node.js:1675 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:288 msgid "Inline" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:748 +#: htdocs/luci-static/resources/view/fchomo/global.js:751 msgid "Interface Control" msgstr "" #: htdocs/luci-static/resources/fchomo.js:52 #: htdocs/luci-static/resources/fchomo.js:59 #: htdocs/luci-static/resources/fchomo.js:172 -#: htdocs/luci-static/resources/fchomo.js:375 -#: htdocs/luci-static/resources/view/fchomo/node.js:1855 +#: htdocs/luci-static/resources/fchomo.js:377 +#: htdocs/luci-static/resources/view/fchomo/node.js:1897 msgid "Keep default" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1386 +#: htdocs/luci-static/resources/view/fchomo/node.js:1421 msgid "Keep-alive period" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:296 -#: htdocs/luci-static/resources/view/fchomo/node.js:408 +#: htdocs/luci-static/resources/view/fchomo/node.js:420 msgid "Key" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:976 -#: htdocs/luci-static/resources/view/fchomo/node.js:1138 +#: htdocs/luci-static/resources/fchomo/listeners.js:987 +#: htdocs/luci-static/resources/view/fchomo/node.js:1173 msgid "Key path" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:758 +#: htdocs/luci-static/resources/fchomo/listeners.js:762 msgid "Keypairs" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:128 -#: htdocs/luci-static/resources/view/fchomo/client.js:1016 -#: htdocs/luci-static/resources/view/fchomo/client.js:1267 -#: htdocs/luci-static/resources/view/fchomo/client.js:1359 -#: htdocs/luci-static/resources/view/fchomo/client.js:1498 -#: htdocs/luci-static/resources/view/fchomo/client.js:1729 -#: htdocs/luci-static/resources/view/fchomo/client.js:1785 +#: htdocs/luci-static/resources/view/fchomo/client.js:1024 +#: htdocs/luci-static/resources/view/fchomo/client.js:1275 +#: htdocs/luci-static/resources/view/fchomo/client.js:1367 +#: htdocs/luci-static/resources/view/fchomo/client.js:1509 +#: htdocs/luci-static/resources/view/fchomo/client.js:1740 +#: htdocs/luci-static/resources/view/fchomo/client.js:1796 #: htdocs/luci-static/resources/view/fchomo/node.js:241 -#: htdocs/luci-static/resources/view/fchomo/node.js:1623 -#: htdocs/luci-static/resources/view/fchomo/node.js:1974 +#: htdocs/luci-static/resources/view/fchomo/node.js:1663 +#: htdocs/luci-static/resources/view/fchomo/node.js:2016 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:267 msgid "Label" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1124 -#: htdocs/luci-static/resources/view/fchomo/node.js:1919 +#: htdocs/luci-static/resources/view/fchomo/client.js:1132 +#: htdocs/luci-static/resources/view/fchomo/node.js:1961 msgid "Lazy" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:437 -#: htdocs/luci-static/resources/view/fchomo/node.js:479 +#: htdocs/luci-static/resources/view/fchomo/node.js:491 msgid "Legacy" msgstr "" @@ -1636,8 +1643,8 @@ msgstr "" msgid "Less compatibility and sometimes better performance." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:957 -#: htdocs/luci-static/resources/view/fchomo/node.js:1057 +#: htdocs/luci-static/resources/fchomo/listeners.js:968 +#: htdocs/luci-static/resources/view/fchomo/node.js:1095 msgid "List of supported application level protocols, in order of preference." msgstr "" @@ -1649,12 +1656,12 @@ msgstr "" msgid "Listen fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:750 +#: htdocs/luci-static/resources/view/fchomo/global.js:753 msgid "Listen interfaces" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:153 -#: htdocs/luci-static/resources/view/fchomo/client.js:1384 +#: htdocs/luci-static/resources/view/fchomo/client.js:1392 msgid "Listen port" msgstr "" @@ -1662,22 +1669,26 @@ msgstr "" msgid "Listen ports" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:242 +#: htdocs/luci-static/resources/view/fchomo/client.js:1397 +msgid "Listen routing mark (Fwmark)" +msgstr "" + +#: htdocs/luci-static/resources/fchomo.js:243 msgid "Load balance" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1633 +#: htdocs/luci-static/resources/view/fchomo/node.js:1673 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:286 msgid "Local" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:727 -#: htdocs/luci-static/resources/view/fchomo/node.js:770 +#: htdocs/luci-static/resources/view/fchomo/node.js:744 +#: htdocs/luci-static/resources/view/fchomo/node.js:807 msgid "Local IPv6 address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:719 -#: htdocs/luci-static/resources/view/fchomo/node.js:762 +#: htdocs/luci-static/resources/view/fchomo/node.js:736 +#: htdocs/luci-static/resources/view/fchomo/node.js:799 msgid "Local address" msgstr "" @@ -1701,24 +1712,24 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:373 #: htdocs/luci-static/resources/fchomo/listeners.js:374 #: htdocs/luci-static/resources/fchomo/listeners.js:379 -#: htdocs/luci-static/resources/view/fchomo/node.js:432 -#: htdocs/luci-static/resources/view/fchomo/node.js:433 -#: htdocs/luci-static/resources/view/fchomo/node.js:434 -#: htdocs/luci-static/resources/view/fchomo/node.js:439 +#: htdocs/luci-static/resources/view/fchomo/node.js:444 +#: htdocs/luci-static/resources/view/fchomo/node.js:445 +#: htdocs/luci-static/resources/view/fchomo/node.js:446 +#: htdocs/luci-static/resources/view/fchomo/node.js:451 msgid "Low-entropy data stream" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:450 +#: htdocs/luci-static/resources/fchomo.js:452 msgid "Lowercase only" msgstr "" #: htdocs/luci-static/resources/view/fchomo/global.js:523 -#: htdocs/luci-static/resources/view/fchomo/node.js:733 -#: htdocs/luci-static/resources/view/fchomo/node.js:816 +#: htdocs/luci-static/resources/view/fchomo/node.js:750 +#: htdocs/luci-static/resources/view/fchomo/node.js:853 msgid "MTU" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:202 +#: htdocs/luci-static/resources/fchomo.js:203 msgid "Masque" msgstr "" @@ -1726,70 +1737,70 @@ msgstr "" msgid "Masquerade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:850 +#: htdocs/luci-static/resources/view/fchomo/client.js:858 msgid "Match domain. Support wildcards." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1833 +#: htdocs/luci-static/resources/view/fchomo/client.js:1844 msgid "Match domain. Support wildcards.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:855 +#: htdocs/luci-static/resources/view/fchomo/client.js:863 msgid "Match geosite." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1824 +#: htdocs/luci-static/resources/view/fchomo/client.js:1835 msgid "Match geosite.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1815 +#: htdocs/luci-static/resources/view/fchomo/client.js:1826 msgid "Match response with geoip.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1828 +#: htdocs/luci-static/resources/view/fchomo/client.js:1839 msgid "Match response with ipcidr.
" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:860 +#: htdocs/luci-static/resources/view/fchomo/client.js:868 msgid "Match rule set." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1303 +#: htdocs/luci-static/resources/view/fchomo/node.js:1338 msgid "Max Early Data" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:480 -#: htdocs/luci-static/resources/view/fchomo/node.js:576 +#: htdocs/luci-static/resources/view/fchomo/node.js:588 msgid "Max UDP relay packet size" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1175 +#: htdocs/luci-static/resources/fchomo/listeners.js:1186 msgid "Max buffered posts" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1361 +#: htdocs/luci-static/resources/view/fchomo/node.js:1396 msgid "Max concurrency" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1366 +#: htdocs/luci-static/resources/view/fchomo/node.js:1401 msgid "Max connections" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1138 +#: htdocs/luci-static/resources/view/fchomo/client.js:1146 msgid "Max count of failures" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:181 -#: htdocs/luci-static/resources/view/fchomo/node.js:303 +#: htdocs/luci-static/resources/view/fchomo/node.js:315 msgid "Max download speed" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1186 -#: htdocs/luci-static/resources/view/fchomo/node.js:1343 +#: htdocs/luci-static/resources/fchomo/listeners.js:1197 +#: htdocs/luci-static/resources/view/fchomo/node.js:1378 msgid "Max each POST bytes" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:603 +#: htdocs/luci-static/resources/view/fchomo/node.js:620 msgid "Max open streams" msgstr "" @@ -1801,56 +1812,56 @@ msgstr "" msgid "Max realms per client IP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 msgid "Max request times" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1381 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 msgid "Max reusable seconds" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1371 +#: htdocs/luci-static/resources/view/fchomo/node.js:1406 msgid "Max reuse times" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:175 -#: htdocs/luci-static/resources/view/fchomo/node.js:297 +#: htdocs/luci-static/resources/view/fchomo/node.js:309 msgid "Max upload speed" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1407 -#: htdocs/luci-static/resources/view/fchomo/node.js:1427 +#: htdocs/luci-static/resources/view/fchomo/node.js:1442 +#: htdocs/luci-static/resources/view/fchomo/node.js:1462 msgid "Maximum connections" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1425 +#: htdocs/luci-static/resources/view/fchomo/node.js:1460 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:402 -#: htdocs/luci-static/resources/view/fchomo/node.js:451 +#: htdocs/luci-static/resources/view/fchomo/node.js:463 msgid "Maximum padding rate" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:410 -#: htdocs/luci-static/resources/view/fchomo/node.js:459 +#: htdocs/luci-static/resources/view/fchomo/node.js:471 msgid "" "Maximum padding rate must be greater than or equal to the minimum padding " "rate." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1424 +#: htdocs/luci-static/resources/view/fchomo/node.js:1459 msgid "Maximum streams" msgstr "" #: htdocs/luci-static/resources/fchomo.js:157 -#: htdocs/luci-static/resources/fchomo.js:192 +#: htdocs/luci-static/resources/fchomo.js:193 msgid "Mieru" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:904 +#: htdocs/luci-static/resources/view/fchomo/client.js:912 #: htdocs/luci-static/resources/view/fchomo/log.js:149 #: htdocs/luci-static/resources/view/fchomo/log.js:154 msgid "Mihomo client" @@ -1862,26 +1873,26 @@ msgstr "" msgid "Mihomo server" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:647 +#: htdocs/luci-static/resources/view/fchomo/node.js:664 msgid "Min of idle sessions to keep" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1349 +#: htdocs/luci-static/resources/view/fchomo/node.js:1384 msgid "Min posts interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1416 +#: htdocs/luci-static/resources/view/fchomo/node.js:1451 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:395 -#: htdocs/luci-static/resources/view/fchomo/node.js:444 +#: htdocs/luci-static/resources/view/fchomo/node.js:456 msgid "Minimum padding rate" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1415 -#: htdocs/luci-static/resources/view/fchomo/node.js:1427 +#: htdocs/luci-static/resources/view/fchomo/node.js:1450 +#: htdocs/luci-static/resources/view/fchomo/node.js:1462 msgid "Minimum streams" msgstr "" @@ -1898,7 +1909,7 @@ msgstr "" msgid "Mixed port" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1393 +#: htdocs/luci-static/resources/view/fchomo/node.js:1428 msgid "Multiplex" msgstr "" @@ -1907,20 +1918,20 @@ msgstr "" msgid "Multiplex fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:385 +#: htdocs/luci-static/resources/view/fchomo/node.js:397 msgid "Multiplexing" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:614 -#: htdocs/luci-static/resources/view/fchomo/client.js:689 +#: htdocs/luci-static/resources/view/fchomo/client.js:622 +#: htdocs/luci-static/resources/view/fchomo/client.js:697 msgid "NOT" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:612 +#: htdocs/luci-static/resources/fchomo/listeners.js:616 msgid "Name of the Proxy group as outbound." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1708 +#: htdocs/luci-static/resources/view/fchomo/node.js:1748 msgid "Name of the Proxy group to download provider." msgstr "" @@ -1928,23 +1939,27 @@ msgstr "" msgid "Name of the Proxy group to download rule set." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:606 +#: htdocs/luci-static/resources/fchomo/listeners.js:610 msgid "Name of the Sub rule used for inbound matching." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:560 +#: htdocs/luci-static/resources/view/fchomo/node.js:572 msgid "Native UDP" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:392 +#: htdocs/luci-static/resources/fchomo.js:394 msgid "Native appearance" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:638 +#: htdocs/luci-static/resources/view/fchomo/node.js:756 +msgid "Network" +msgstr "" + +#: htdocs/luci-static/resources/fchomo/listeners.js:642 msgid "Network type" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1857 +#: htdocs/luci-static/resources/view/fchomo/node.js:1899 msgid "No" msgstr "" @@ -1952,24 +1967,24 @@ msgstr "" msgid "No Authentication IP ranges" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1170 +#: htdocs/luci-static/resources/fchomo/listeners.js:1181 msgid "No SSE header" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1518 +#: htdocs/luci-static/resources/view/fchomo/client.js:1529 msgid "No add'l params" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1333 +#: htdocs/luci-static/resources/view/fchomo/node.js:1368 msgid "No gRPC header" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1125 -#: htdocs/luci-static/resources/view/fchomo/node.js:1920 +#: htdocs/luci-static/resources/view/fchomo/client.js:1133 +#: htdocs/luci-static/resources/view/fchomo/node.js:1962 msgid "No testing is performed when this provider node is not in use." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:697 +#: htdocs/luci-static/resources/fchomo.js:699 msgid "No valid %s found." msgstr "" @@ -1977,31 +1992,31 @@ msgstr "" msgid "No valid rule-set link found." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1043 +#: htdocs/luci-static/resources/view/fchomo/client.js:1051 #: htdocs/luci-static/resources/view/fchomo/node.js:228 msgid "Node" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1170 -#: htdocs/luci-static/resources/view/fchomo/node.js:1940 +#: htdocs/luci-static/resources/view/fchomo/client.js:1178 +#: htdocs/luci-static/resources/view/fchomo/node.js:1982 msgid "Node exclude filter" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1175 -#: htdocs/luci-static/resources/view/fchomo/node.js:1947 +#: htdocs/luci-static/resources/view/fchomo/client.js:1183 +#: htdocs/luci-static/resources/view/fchomo/node.js:1989 msgid "Node exclude type" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1165 -#: htdocs/luci-static/resources/view/fchomo/node.js:1934 +#: htdocs/luci-static/resources/view/fchomo/client.js:1173 +#: htdocs/luci-static/resources/view/fchomo/node.js:1976 msgid "Node filter" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1146 +#: htdocs/luci-static/resources/view/fchomo/client.js:1154 msgid "Node switch tolerance" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:419 +#: htdocs/luci-static/resources/fchomo.js:421 msgid "None" msgstr "" @@ -2009,70 +2024,70 @@ msgstr "" msgid "Not Installed" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1215 +#: htdocs/luci-static/resources/fchomo.js:1242 msgid "Not Running" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:505 +#: htdocs/luci-static/resources/view/fchomo/node.js:517 msgid "OFF" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:507 +#: htdocs/luci-static/resources/view/fchomo/node.js:519 msgid "ON" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:568 -#: htdocs/luci-static/resources/view/fchomo/node.js:845 +#: htdocs/luci-static/resources/view/fchomo/node.js:882 msgid "Obfs Mode" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:213 -#: htdocs/luci-static/resources/view/fchomo/node.js:329 +#: htdocs/luci-static/resources/view/fchomo/node.js:341 msgid "Obfuscate maximum packet size" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:208 -#: htdocs/luci-static/resources/view/fchomo/node.js:324 +#: htdocs/luci-static/resources/view/fchomo/node.js:336 msgid "Obfuscate minimum packet size" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:200 -#: htdocs/luci-static/resources/view/fchomo/node.js:316 +#: htdocs/luci-static/resources/view/fchomo/node.js:328 msgid "Obfuscate password" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:193 #: htdocs/luci-static/resources/fchomo/listeners.js:370 -#: htdocs/luci-static/resources/view/fchomo/node.js:309 -#: htdocs/luci-static/resources/view/fchomo/node.js:430 +#: htdocs/luci-static/resources/view/fchomo/node.js:321 +#: htdocs/luci-static/resources/view/fchomo/node.js:442 msgid "Obfuscate type" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:371 #: htdocs/luci-static/resources/fchomo/listeners.js:372 -#: htdocs/luci-static/resources/view/fchomo/node.js:431 -#: htdocs/luci-static/resources/view/fchomo/node.js:432 +#: htdocs/luci-static/resources/view/fchomo/node.js:443 +#: htdocs/luci-static/resources/view/fchomo/node.js:444 msgid "Obfuscated as %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:901 +#: htdocs/luci-static/resources/view/fchomo/global.js:904 msgid "One or more numbers in the range 0-63 separated by commas" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:897 +#: htdocs/luci-static/resources/fchomo/listeners.js:962 msgid "Only applicable when %s are used as a frontend." msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:379 -#: htdocs/luci-static/resources/view/fchomo/node.js:439 +#: htdocs/luci-static/resources/view/fchomo/node.js:451 msgid "Only applies to the %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:751 +#: htdocs/luci-static/resources/view/fchomo/global.js:754 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1209 +#: htdocs/luci-static/resources/fchomo.js:1236 msgid "Open Dashboard" msgstr "" @@ -2084,33 +2099,33 @@ msgstr "" msgid "Outbound" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:676 -#: htdocs/luci-static/resources/view/fchomo/global.js:714 +#: htdocs/luci-static/resources/view/fchomo/global.js:679 +#: htdocs/luci-static/resources/view/fchomo/global.js:717 msgid "Override destination" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1012 -#: htdocs/luci-static/resources/view/fchomo/node.js:1619 +#: htdocs/luci-static/resources/view/fchomo/client.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1659 msgid "Override fields" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:552 +#: htdocs/luci-static/resources/view/fchomo/node.js:564 msgid "Override the IP address of the server that DNS response." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:883 +#: htdocs/luci-static/resources/view/fchomo/client.js:891 msgid "Override the Proxy group of DNS server." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:677 +#: htdocs/luci-static/resources/view/fchomo/global.js:680 msgid "Override the connection destination address with the sniffed domain." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1622 +#: htdocs/luci-static/resources/view/fchomo/client.js:1633 msgid "Override the existing ECS in original request." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1165 +#: htdocs/luci-static/resources/view/fchomo/node.js:1200 msgid "Overrides the domain name used for HTTPS record queries." msgstr "" @@ -2118,19 +2133,19 @@ msgstr "" msgid "Overview" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1260 +#: htdocs/luci-static/resources/view/fchomo/node.js:1295 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1261 +#: htdocs/luci-static/resources/view/fchomo/node.js:1296 msgid "PUT" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:696 +#: htdocs/luci-static/resources/view/fchomo/node.js:713 msgid "Packet encoding" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1338 +#: htdocs/luci-static/resources/view/fchomo/node.js:1373 msgid "Padding bytes" msgstr "" @@ -2138,17 +2153,17 @@ msgstr "" msgid "Padding scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:737 -#: htdocs/luci-static/resources/view/fchomo/node.js:969 +#: htdocs/luci-static/resources/fchomo/listeners.js:741 +#: htdocs/luci-static/resources/view/fchomo/node.js:1007 msgid "Paddings" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:166 #: htdocs/luci-static/resources/fchomo/listeners.js:263 #: htdocs/luci-static/resources/fchomo/listeners.js:589 -#: htdocs/luci-static/resources/view/fchomo/node.js:273 -#: htdocs/luci-static/resources/view/fchomo/node.js:363 -#: htdocs/luci-static/resources/view/fchomo/node.js:860 +#: htdocs/luci-static/resources/view/fchomo/node.js:285 +#: htdocs/luci-static/resources/view/fchomo/node.js:375 +#: htdocs/luci-static/resources/view/fchomo/node.js:897 msgid "Password" msgstr "" @@ -2160,13 +2175,13 @@ msgstr "" msgid "Path in bundle: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:677 -#: htdocs/luci-static/resources/view/fchomo/node.js:1683 +#: htdocs/luci-static/resources/fchomo/listeners.js:681 +#: htdocs/luci-static/resources/view/fchomo/node.js:1723 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:373 msgid "Payload" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:784 +#: htdocs/luci-static/resources/view/fchomo/node.js:821 msgid "Peer pubkic key" msgstr "" @@ -2176,11 +2191,11 @@ msgid "" "it is not needed." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:811 +#: htdocs/luci-static/resources/view/fchomo/node.js:848 msgid "Periodically sends data packets to maintain connection persistence." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:810 +#: htdocs/luci-static/resources/view/fchomo/node.js:847 msgid "Persistent keepalive" msgstr "" @@ -2188,7 +2203,7 @@ msgstr "" msgid "Plain text" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:878 +#: htdocs/luci-static/resources/view/fchomo/global.js:881 msgid "" "Please ensure that the DNS query of the domains to be processed in the DNS " "policy
are send via DIRECT/Proxy Node in the same semantics as Routing " @@ -2201,8 +2216,8 @@ msgid "" "standards." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1656 -#: htdocs/luci-static/resources/view/fchomo/node.js:1682 +#: htdocs/luci-static/resources/view/fchomo/node.js:1696 +#: htdocs/luci-static/resources/view/fchomo/node.js:1722 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:346 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:372 msgid "" @@ -2210,19 +2225,19 @@ msgid "" "a>." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:950 -#: htdocs/luci-static/resources/view/fchomo/client.js:1211 -#: htdocs/luci-static/resources/view/fchomo/client.js:1330 -#: htdocs/luci-static/resources/view/fchomo/client.js:1455 -#: htdocs/luci-static/resources/view/fchomo/client.js:1707 -#: htdocs/luci-static/resources/view/fchomo/client.js:1759 -#: htdocs/luci-static/resources/view/fchomo/node.js:1523 +#: htdocs/luci-static/resources/view/fchomo/client.js:958 +#: htdocs/luci-static/resources/view/fchomo/client.js:1219 +#: htdocs/luci-static/resources/view/fchomo/client.js:1338 +#: htdocs/luci-static/resources/view/fchomo/client.js:1466 +#: htdocs/luci-static/resources/view/fchomo/client.js:1718 +#: htdocs/luci-static/resources/view/fchomo/client.js:1770 +#: htdocs/luci-static/resources/view/fchomo/node.js:1563 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:155 msgid "Please type %s fields of mihomo config.
" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:560 -#: htdocs/luci-static/resources/view/fchomo/node.js:834 +#: htdocs/luci-static/resources/view/fchomo/node.js:871 msgid "Plugin" msgstr "" @@ -2231,12 +2246,12 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:582 #: htdocs/luci-static/resources/fchomo/listeners.js:589 #: htdocs/luci-static/resources/fchomo/listeners.js:595 -#: htdocs/luci-static/resources/view/fchomo/node.js:845 -#: htdocs/luci-static/resources/view/fchomo/node.js:852 -#: htdocs/luci-static/resources/view/fchomo/node.js:860 -#: htdocs/luci-static/resources/view/fchomo/node.js:866 -#: htdocs/luci-static/resources/view/fchomo/node.js:874 -#: htdocs/luci-static/resources/view/fchomo/node.js:880 +#: htdocs/luci-static/resources/view/fchomo/node.js:882 +#: htdocs/luci-static/resources/view/fchomo/node.js:889 +#: htdocs/luci-static/resources/view/fchomo/node.js:897 +#: htdocs/luci-static/resources/view/fchomo/node.js:903 +#: htdocs/luci-static/resources/view/fchomo/node.js:911 +#: htdocs/luci-static/resources/view/fchomo/node.js:917 msgid "Plugin:" msgstr "" @@ -2244,36 +2259,36 @@ msgstr "" msgid "Port" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1446 +#: htdocs/luci-static/resources/fchomo.js:1473 msgid "Port %s alrealy exists!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:291 +#: htdocs/luci-static/resources/view/fchomo/node.js:303 msgid "Port hop interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:373 +#: htdocs/luci-static/resources/view/fchomo/node.js:385 msgid "Port range" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:711 +#: htdocs/luci-static/resources/view/fchomo/global.js:714 msgid "Ports" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:153 -#: htdocs/luci-static/resources/view/fchomo/node.js:286 +#: htdocs/luci-static/resources/view/fchomo/node.js:298 msgid "Ports pool" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:225 #: htdocs/luci-static/resources/fchomo/listeners.js:456 -#: htdocs/luci-static/resources/view/fchomo/node.js:522 -#: htdocs/luci-static/resources/view/fchomo/node.js:791 +#: htdocs/luci-static/resources/view/fchomo/node.js:534 +#: htdocs/luci-static/resources/view/fchomo/node.js:828 msgid "Pre-shared key" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:875 -#: htdocs/luci-static/resources/view/fchomo/node.js:1004 +#: htdocs/luci-static/resources/fchomo/listeners.js:879 +#: htdocs/luci-static/resources/view/fchomo/node.js:1042 msgid "Pre-shared key of rendezvous server" msgstr "" @@ -2290,25 +2305,25 @@ msgid "" "Prevent ICMP loopback issues in some cases. Ping will not show real delay." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:757 -#: htdocs/luci-static/resources/view/fchomo/global.js:774 -#: htdocs/luci-static/resources/view/fchomo/node.js:1487 -#: htdocs/luci-static/resources/view/fchomo/node.js:1493 -#: htdocs/luci-static/resources/view/fchomo/node.js:1869 -#: htdocs/luci-static/resources/view/fchomo/node.js:1876 +#: htdocs/luci-static/resources/view/fchomo/global.js:760 +#: htdocs/luci-static/resources/view/fchomo/global.js:777 +#: htdocs/luci-static/resources/view/fchomo/node.js:1524 +#: htdocs/luci-static/resources/view/fchomo/node.js:1531 +#: htdocs/luci-static/resources/view/fchomo/node.js:1911 +#: htdocs/luci-static/resources/view/fchomo/node.js:1918 msgid "Priority: Proxy Node > Global." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:335 +#: htdocs/luci-static/resources/view/fchomo/node.js:347 msgid "Priv-key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:339 +#: htdocs/luci-static/resources/view/fchomo/node.js:351 msgid "Priv-key passphrase" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:704 -#: htdocs/luci-static/resources/view/fchomo/node.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:721 +#: htdocs/luci-static/resources/view/fchomo/node.js:813 msgid "Private key" msgstr "" @@ -2316,69 +2331,69 @@ msgstr "" msgid "Process matching mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:705 -#: htdocs/luci-static/resources/view/fchomo/node.js:1399 +#: htdocs/luci-static/resources/view/fchomo/global.js:708 +#: htdocs/luci-static/resources/view/fchomo/node.js:1434 msgid "Protocol" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:691 +#: htdocs/luci-static/resources/view/fchomo/node.js:708 msgid "Protocol parameter. Enable length block encryption." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:685 +#: htdocs/luci-static/resources/view/fchomo/node.js:702 msgid "" "Protocol parameter. Will waste traffic randomly if enabled (enabled by " "default in v2ray and cannot be disabled)." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1057 -#: htdocs/luci-static/resources/view/fchomo/node.js:1506 -#: htdocs/luci-static/resources/view/fchomo/node.js:1515 -#: htdocs/luci-static/resources/view/fchomo/node.js:1985 +#: htdocs/luci-static/resources/view/fchomo/client.js:1065 +#: htdocs/luci-static/resources/view/fchomo/node.js:1546 +#: htdocs/luci-static/resources/view/fchomo/node.js:1555 +#: htdocs/luci-static/resources/view/fchomo/node.js:2027 msgid "Provider" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1689 +#: htdocs/luci-static/resources/view/fchomo/node.js:1729 msgid "Provider URL" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:924 -#: htdocs/luci-static/resources/view/fchomo/client.js:942 -#: htdocs/luci-static/resources/view/fchomo/client.js:1411 +#: htdocs/luci-static/resources/view/fchomo/client.js:932 +#: htdocs/luci-static/resources/view/fchomo/client.js:950 +#: htdocs/luci-static/resources/view/fchomo/client.js:1422 msgid "Proxy Group" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:807 +#: htdocs/luci-static/resources/view/fchomo/global.js:810 msgid "Proxy IPv4 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:810 +#: htdocs/luci-static/resources/view/fchomo/global.js:813 msgid "Proxy IPv6 IP-s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:813 +#: htdocs/luci-static/resources/view/fchomo/global.js:816 msgid "Proxy MAC-s" msgstr "" #: htdocs/luci-static/resources/view/fchomo/node.js:219 -#: htdocs/luci-static/resources/view/fchomo/node.js:1984 +#: htdocs/luci-static/resources/view/fchomo/node.js:2026 msgid "Proxy Node" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1960 -#: htdocs/luci-static/resources/view/fchomo/node.js:1969 +#: htdocs/luci-static/resources/view/fchomo/node.js:2002 +#: htdocs/luci-static/resources/view/fchomo/node.js:2011 msgid "Proxy chain" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:611 -#: htdocs/luci-static/resources/view/fchomo/client.js:784 -#: htdocs/luci-static/resources/view/fchomo/client.js:1553 -#: htdocs/luci-static/resources/view/fchomo/node.js:1707 +#: htdocs/luci-static/resources/fchomo/listeners.js:615 +#: htdocs/luci-static/resources/view/fchomo/client.js:792 +#: htdocs/luci-static/resources/view/fchomo/client.js:1564 +#: htdocs/luci-static/resources/view/fchomo/node.js:1747 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:403 msgid "Proxy group" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:882 +#: htdocs/luci-static/resources/view/fchomo/client.js:890 msgid "Proxy group override" msgstr "" @@ -2386,76 +2401,80 @@ msgstr "" msgid "Proxy mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:816 +#: htdocs/luci-static/resources/view/fchomo/global.js:819 msgid "Proxy routerself" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:561 -#: htdocs/luci-static/resources/view/fchomo/node.js:756 +#: htdocs/luci-static/resources/view/fchomo/node.js:573 +#: htdocs/luci-static/resources/view/fchomo/node.js:793 msgid "QUIC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:927 +#: htdocs/luci-static/resources/view/fchomo/client.js:935 #: htdocs/luci-static/resources/view/fchomo/server.js:44 msgid "Quick Reload" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1064 -#: htdocs/luci-static/resources/view/fchomo/node.js:1179 +#: htdocs/luci-static/resources/fchomo/listeners.js:1075 +#: htdocs/luci-static/resources/view/fchomo/node.js:1214 msgid "REALITY" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1194 +#: htdocs/luci-static/resources/view/fchomo/node.js:1229 msgid "REALITY X25519MLKEM768 PQC support" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1101 +#: htdocs/luci-static/resources/fchomo/listeners.js:1112 msgid "REALITY certificate issued to" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1069 +#: htdocs/luci-static/resources/fchomo/listeners.js:1080 msgid "REALITY handshake server" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1076 +#: htdocs/luci-static/resources/fchomo/listeners.js:1087 msgid "REALITY private key" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1091 -#: htdocs/luci-static/resources/view/fchomo/node.js:1184 +#: htdocs/luci-static/resources/fchomo/listeners.js:1102 +#: htdocs/luci-static/resources/view/fchomo/node.js:1219 msgid "REALITY public key" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1095 -#: htdocs/luci-static/resources/view/fchomo/node.js:1189 +#: htdocs/luci-static/resources/fchomo/listeners.js:1106 +#: htdocs/luci-static/resources/view/fchomo/node.js:1224 msgid "REALITY short ID" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:708 -#: htdocs/luci-static/resources/fchomo/listeners.js:727 -#: htdocs/luci-static/resources/view/fchomo/node.js:959 +#: htdocs/luci-static/resources/view/fchomo/node.js:267 +msgid "REMATCH-NAME marking" +msgstr "" + +#: htdocs/luci-static/resources/fchomo/listeners.js:712 +#: htdocs/luci-static/resources/fchomo/listeners.js:731 +#: htdocs/luci-static/resources/view/fchomo/node.js:997 msgid "RTT" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:384 +#: htdocs/luci-static/resources/fchomo.js:386 msgid "Random" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:665 +#: htdocs/luci-static/resources/view/fchomo/global.js:668 msgid "Random will be used if empty." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:394 +#: htdocs/luci-static/resources/fchomo.js:396 msgid "Randomized traffic characteristics" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:864 -#: htdocs/luci-static/resources/view/fchomo/node.js:993 +#: htdocs/luci-static/resources/fchomo/listeners.js:868 +#: htdocs/luci-static/resources/view/fchomo/node.js:1031 msgid "Realm" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:880 -#: htdocs/luci-static/resources/view/fchomo/node.js:1009 +#: htdocs/luci-static/resources/fchomo/listeners.js:884 +#: htdocs/luci-static/resources/view/fchomo/node.js:1047 msgid "Realm ID" msgstr "" @@ -2483,8 +2502,8 @@ msgstr "" msgid "Refresh every %s seconds." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1202 -#: htdocs/luci-static/resources/view/fchomo/client.js:928 +#: htdocs/luci-static/resources/fchomo.js:1229 +#: htdocs/luci-static/resources/view/fchomo/client.js:936 #: htdocs/luci-static/resources/view/fchomo/global.js:193 #: htdocs/luci-static/resources/view/fchomo/server.js:45 msgid "Reload" @@ -2494,69 +2513,77 @@ msgstr "" msgid "Reload All" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1634 +#: htdocs/luci-static/resources/fchomo.js:187 +msgid "Rematch" +msgstr "" + +#: htdocs/luci-static/resources/fchomo.js:187 +msgid "Rematching routing rules" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1674 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:287 msgid "Remote" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:739 -#: htdocs/luci-static/resources/view/fchomo/node.js:822 +#: htdocs/luci-static/resources/view/fchomo/node.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:859 msgid "Remote DNS resolve" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1367 +#: htdocs/luci-static/resources/fchomo.js:1394 msgid "Remove" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1372 -#: htdocs/luci-static/resources/view/fchomo/node.js:1610 -#: htdocs/luci-static/resources/view/fchomo/node.js:1612 +#: htdocs/luci-static/resources/fchomo.js:1399 +#: htdocs/luci-static/resources/view/fchomo/node.js:1650 +#: htdocs/luci-static/resources/view/fchomo/node.js:1652 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:259 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:261 msgid "Remove idles" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:869 -#: htdocs/luci-static/resources/view/fchomo/node.js:998 +#: htdocs/luci-static/resources/fchomo/listeners.js:873 +#: htdocs/luci-static/resources/view/fchomo/node.js:1036 msgid "Rendezvous server" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1799 +#: htdocs/luci-static/resources/view/fchomo/node.js:1841 msgid "Replace name" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1800 +#: htdocs/luci-static/resources/view/fchomo/node.js:1842 msgid "Replace node name." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:368 +#: htdocs/luci-static/resources/fchomo.js:370 msgid "Request" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1149 -#: htdocs/luci-static/resources/view/fchomo/node.js:1267 -#: htdocs/luci-static/resources/view/fchomo/node.js:1274 +#: htdocs/luci-static/resources/fchomo/listeners.js:1160 +#: htdocs/luci-static/resources/view/fchomo/node.js:1302 +#: htdocs/luci-static/resources/view/fchomo/node.js:1309 msgid "Request path" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:596 +#: htdocs/luci-static/resources/view/fchomo/node.js:613 msgid "Request timeout" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:371 +#: htdocs/luci-static/resources/fchomo.js:373 msgid "Require and verify" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:369 +#: htdocs/luci-static/resources/fchomo.js:371 msgid "Require any" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:402 -#: htdocs/luci-static/resources/view/fchomo/node.js:1195 +#: htdocs/luci-static/resources/fchomo.js:404 +#: htdocs/luci-static/resources/view/fchomo/node.js:1230 msgid "Requires server support." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:805 +#: htdocs/luci-static/resources/view/fchomo/node.js:842 msgid "Reserved field bytes" msgstr "" @@ -2564,78 +2591,76 @@ msgstr "" msgid "Resources management" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:880 +#: htdocs/luci-static/resources/view/fchomo/node.js:917 msgid "Restls script" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1182 +#: htdocs/luci-static/resources/view/fchomo/client.js:1190 msgid "" "Returns hidden status in the API to hide the display of this proxy group." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1188 +#: htdocs/luci-static/resources/view/fchomo/client.js:1196 msgid "" "Returns the string input for icon in the API to display in this proxy group." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:506 +#: htdocs/luci-static/resources/view/fchomo/node.js:518 msgid "Reuse HTTP connections to reduce RTT for each connection establishment." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:503 -#: htdocs/luci-static/resources/view/fchomo/node.js:507 +#: htdocs/luci-static/resources/view/fchomo/node.js:515 +#: htdocs/luci-static/resources/view/fchomo/node.js:519 msgid "Reusing a single tunnel to carry multiple target connections within it." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:835 +#: htdocs/luci-static/resources/view/fchomo/global.js:838 msgid "Routing Control" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:890 #: htdocs/luci-static/resources/view/fchomo/global.js:893 +#: htdocs/luci-static/resources/view/fchomo/global.js:896 msgid "Routing DSCP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:860 +#: htdocs/luci-static/resources/view/fchomo/global.js:863 msgid "Routing GFW" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1492 -#: htdocs/luci-static/resources/view/fchomo/node.js:1875 -msgid "Routing mark" -msgstr "" - -#: htdocs/luci-static/resources/view/fchomo/global.js:773 +#: htdocs/luci-static/resources/fchomo/listeners.js:605 +#: htdocs/luci-static/resources/view/fchomo/global.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:1530 +#: htdocs/luci-static/resources/view/fchomo/node.js:1917 msgid "Routing mark (Fwmark)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:855 +#: htdocs/luci-static/resources/view/fchomo/global.js:858 msgid "Routing mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:856 +#: htdocs/luci-static/resources/view/fchomo/global.js:859 msgid "Routing mode of the traffic enters mihomo via firewall rules." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:877 +#: htdocs/luci-static/resources/view/fchomo/global.js:880 msgid "Routing mode will be handle domain." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:837 -#: htdocs/luci-static/resources/view/fchomo/global.js:846 +#: htdocs/luci-static/resources/view/fchomo/global.js:840 +#: htdocs/luci-static/resources/view/fchomo/global.js:849 msgid "Routing ports" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1194 -#: htdocs/luci-static/resources/view/fchomo/client.js:1203 +#: htdocs/luci-static/resources/view/fchomo/client.js:1202 +#: htdocs/luci-static/resources/view/fchomo/client.js:1211 msgid "Routing rule" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:767 +#: htdocs/luci-static/resources/view/fchomo/global.js:770 msgid "Routing rule priority" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:761 +#: htdocs/luci-static/resources/view/fchomo/global.js:764 msgid "Routing table ID" msgstr "" @@ -2643,8 +2668,8 @@ msgstr "" msgid "Rule" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:846 -#: htdocs/luci-static/resources/view/fchomo/client.js:859 +#: htdocs/luci-static/resources/view/fchomo/client.js:854 +#: htdocs/luci-static/resources/view/fchomo/client.js:867 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:147 msgid "Rule set" msgstr "" @@ -2661,11 +2686,11 @@ msgstr "" msgid "Ruleset-URI-Scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1215 +#: htdocs/luci-static/resources/fchomo.js:1242 msgid "Running" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:250 +#: htdocs/luci-static/resources/fchomo.js:251 msgid "SMTP" msgstr "" @@ -2673,33 +2698,33 @@ msgstr "" msgid "SOCKS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:189 +#: htdocs/luci-static/resources/fchomo.js:190 msgid "SOCKS5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:205 +#: htdocs/luci-static/resources/fchomo.js:206 msgid "SSH" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:251 +#: htdocs/luci-static/resources/fchomo.js:252 msgid "STUN" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:886 -#: htdocs/luci-static/resources/view/fchomo/node.js:1015 +#: htdocs/luci-static/resources/fchomo/listeners.js:890 +#: htdocs/luci-static/resources/view/fchomo/node.js:1053 msgid "STUN servers" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1286 +#: htdocs/luci-static/resources/view/fchomo/client.js:1294 msgid "SUB-RULE" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:916 +#: htdocs/luci-static/resources/view/fchomo/node.js:954 msgid "SUoT version" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:195 -#: htdocs/luci-static/resources/view/fchomo/node.js:311 +#: htdocs/luci-static/resources/view/fchomo/node.js:323 msgid "Salamander" msgstr "" @@ -2720,7 +2745,7 @@ msgstr "" msgid "Segment maximum size" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:239 +#: htdocs/luci-static/resources/fchomo.js:240 msgid "Select" msgstr "" @@ -2728,18 +2753,18 @@ msgstr "" msgid "Select Dashboard" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:408 +#: htdocs/luci-static/resources/fchomo.js:410 msgid "Send padding randomly 0-3333 bytes with 50% probability." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:397 -#: htdocs/luci-static/resources/fchomo.js:398 +#: htdocs/luci-static/resources/fchomo.js:399 +#: htdocs/luci-static/resources/fchomo.js:400 msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:708 -#: htdocs/luci-static/resources/fchomo/listeners.js:962 -#: htdocs/luci-static/resources/fchomo/listeners.js:977 +#: htdocs/luci-static/resources/fchomo/listeners.js:712 +#: htdocs/luci-static/resources/fchomo/listeners.js:973 +#: htdocs/luci-static/resources/fchomo/listeners.js:988 #: htdocs/luci-static/resources/view/fchomo/server.js:58 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:62 msgid "Server" @@ -2749,9 +2774,9 @@ msgstr "" msgid "Server address" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1143 -#: htdocs/luci-static/resources/view/fchomo/node.js:1246 -#: htdocs/luci-static/resources/view/fchomo/node.js:1252 +#: htdocs/luci-static/resources/fchomo/listeners.js:1154 +#: htdocs/luci-static/resources/view/fchomo/node.js:1281 +#: htdocs/luci-static/resources/view/fchomo/node.js:1287 msgid "Server hostname" msgstr "" @@ -2764,26 +2789,26 @@ msgid "Service status" msgstr "" #: htdocs/luci-static/resources/fchomo.js:156 -#: htdocs/luci-static/resources/fchomo.js:190 +#: htdocs/luci-static/resources/fchomo.js:191 msgid "Shadowsocks" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:506 -#: htdocs/luci-static/resources/view/fchomo/node.js:615 +#: htdocs/luci-static/resources/view/fchomo/node.js:632 msgid "Shadowsocks chipher" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:501 -#: htdocs/luci-static/resources/view/fchomo/node.js:610 +#: htdocs/luci-static/resources/view/fchomo/node.js:627 msgid "Shadowsocks encrypt" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:514 -#: htdocs/luci-static/resources/view/fchomo/node.js:623 +#: htdocs/luci-static/resources/view/fchomo/node.js:640 msgid "Shadowsocks password" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1447 +#: htdocs/luci-static/resources/view/fchomo/node.js:1482 msgid "Show connections in the dashboard for breaking connections easier." msgstr "" @@ -2795,52 +2820,52 @@ msgstr "" msgid "Simple round-robin all nodes" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1695 +#: htdocs/luci-static/resources/view/fchomo/node.js:1735 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:391 msgid "Size limit" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1586 -#: htdocs/luci-static/resources/view/fchomo/node.js:1116 -#: htdocs/luci-static/resources/view/fchomo/node.js:1850 +#: htdocs/luci-static/resources/view/fchomo/client.js:1597 +#: htdocs/luci-static/resources/view/fchomo/node.js:1151 +#: htdocs/luci-static/resources/view/fchomo/node.js:1892 msgid "Skip cert verify" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:683 +#: htdocs/luci-static/resources/view/fchomo/global.js:686 msgid "Skiped sniffing domain" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:689 +#: htdocs/luci-static/resources/view/fchomo/global.js:692 msgid "Skiped sniffing dst address" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:686 +#: htdocs/luci-static/resources/view/fchomo/global.js:689 msgid "Skiped sniffing src address" msgstr "" #: htdocs/luci-static/resources/fchomo.js:159 -#: htdocs/luci-static/resources/fchomo.js:194 +#: htdocs/luci-static/resources/fchomo.js:195 msgid "Snell" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:693 +#: htdocs/luci-static/resources/view/fchomo/global.js:696 msgid "Sniff protocol" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:670 +#: htdocs/luci-static/resources/view/fchomo/global.js:673 msgid "Sniffer" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:673 +#: htdocs/luci-static/resources/view/fchomo/global.js:676 msgid "Sniffer settings" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:440 +#: htdocs/luci-static/resources/fchomo.js:442 msgid "Specify a ID" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:838 -#: htdocs/luci-static/resources/view/fchomo/global.js:847 +#: htdocs/luci-static/resources/view/fchomo/global.js:841 +#: htdocs/luci-static/resources/view/fchomo/global.js:850 msgid "" "Specify target ports to be proxied. Multiple ports must be separated by " "commas." @@ -2854,30 +2879,30 @@ msgstr "" msgid "Standard" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:254 +#: htdocs/luci-static/resources/fchomo.js:255 msgid "Steam Client" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:255 +#: htdocs/luci-static/resources/fchomo.js:256 msgid "Steam P2P" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1154 -#: htdocs/luci-static/resources/view/fchomo/client.js:1156 +#: htdocs/luci-static/resources/view/fchomo/client.js:1162 +#: htdocs/luci-static/resources/view/fchomo/client.js:1164 msgid "Strategy" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:605 -#: htdocs/luci-static/resources/view/fchomo/client.js:1313 -#: htdocs/luci-static/resources/view/fchomo/client.js:1322 +#: htdocs/luci-static/resources/fchomo/listeners.js:609 +#: htdocs/luci-static/resources/view/fchomo/client.js:1321 +#: htdocs/luci-static/resources/view/fchomo/client.js:1330 msgid "Sub rule" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1368 +#: htdocs/luci-static/resources/view/fchomo/client.js:1376 msgid "Sub rule group" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:700 +#: htdocs/luci-static/resources/fchomo.js:702 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:231 msgid "Successfully imported %s %s of total %s." msgstr "" @@ -2886,12 +2911,12 @@ msgstr "" msgid "Successfully updated." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1717 +#: htdocs/luci-static/resources/fchomo.js:1744 msgid "Successfully uploaded." msgstr "" #: htdocs/luci-static/resources/fchomo.js:158 -#: htdocs/luci-static/resources/fchomo.js:193 +#: htdocs/luci-static/resources/fchomo.js:194 msgid "Sudoku" msgstr "" @@ -2916,17 +2941,17 @@ msgstr "" #: htdocs/luci-static/resources/fchomo.js:161 #: htdocs/luci-static/resources/fchomo.js:162 #: htdocs/luci-static/resources/fchomo.js:163 -#: htdocs/luci-static/resources/fchomo.js:188 -#: htdocs/luci-static/resources/fchomo.js:193 +#: htdocs/luci-static/resources/fchomo.js:189 #: htdocs/luci-static/resources/fchomo.js:194 #: htdocs/luci-static/resources/fchomo.js:195 #: htdocs/luci-static/resources/fchomo.js:196 #: htdocs/luci-static/resources/fchomo.js:197 #: htdocs/luci-static/resources/fchomo.js:198 -#: htdocs/luci-static/resources/fchomo.js:205 -#: htdocs/luci-static/resources/fchomo/listeners.js:639 -#: htdocs/luci-static/resources/view/fchomo/client.js:590 -#: htdocs/luci-static/resources/view/fchomo/client.js:680 +#: htdocs/luci-static/resources/fchomo.js:199 +#: htdocs/luci-static/resources/fchomo.js:206 +#: htdocs/luci-static/resources/fchomo/listeners.js:643 +#: htdocs/luci-static/resources/view/fchomo/client.js:598 +#: htdocs/luci-static/resources/view/fchomo/client.js:688 msgid "TCP" msgstr "" @@ -2934,7 +2959,7 @@ msgstr "" msgid "TCP concurrency" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1440 +#: htdocs/luci-static/resources/view/fchomo/node.js:1475 msgid "TCP only" msgstr "" @@ -2953,34 +2978,34 @@ msgstr "" #: htdocs/luci-static/resources/fchomo.js:166 #: htdocs/luci-static/resources/fchomo.js:167 #: htdocs/luci-static/resources/fchomo.js:168 -#: htdocs/luci-static/resources/fchomo.js:187 -#: htdocs/luci-static/resources/fchomo.js:189 +#: htdocs/luci-static/resources/fchomo.js:188 #: htdocs/luci-static/resources/fchomo.js:190 -#: htdocs/luci-static/resources/fchomo.js:192 -#: htdocs/luci-static/resources/fchomo.js:203 +#: htdocs/luci-static/resources/fchomo.js:191 +#: htdocs/luci-static/resources/fchomo.js:193 +#: htdocs/luci-static/resources/fchomo.js:204 msgid "TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1471 -#: htdocs/luci-static/resources/view/fchomo/node.js:1817 +#: htdocs/luci-static/resources/view/fchomo/node.js:1506 +#: htdocs/luci-static/resources/view/fchomo/node.js:1859 msgid "TFO" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:570 -#: htdocs/luci-static/resources/fchomo/listeners.js:902 +#: htdocs/luci-static/resources/fchomo/listeners.js:900 #: htdocs/luci-static/resources/view/fchomo/global.js:550 -#: htdocs/luci-static/resources/view/fchomo/node.js:487 -#: htdocs/luci-static/resources/view/fchomo/node.js:847 -#: htdocs/luci-static/resources/view/fchomo/node.js:1025 +#: htdocs/luci-static/resources/view/fchomo/node.js:499 +#: htdocs/luci-static/resources/view/fchomo/node.js:884 +#: htdocs/luci-static/resources/view/fchomo/node.js:1063 msgid "TLS" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:956 -#: htdocs/luci-static/resources/view/fchomo/node.js:1056 +#: htdocs/luci-static/resources/fchomo/listeners.js:967 +#: htdocs/luci-static/resources/view/fchomo/node.js:1094 msgid "TLS ALPN" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1050 +#: htdocs/luci-static/resources/view/fchomo/node.js:1088 msgid "TLS SNI" msgstr "" @@ -2990,11 +3015,11 @@ msgid "TLS fields" msgstr "" #: htdocs/luci-static/resources/fchomo.js:164 -#: htdocs/luci-static/resources/fchomo.js:201 +#: htdocs/luci-static/resources/fchomo.js:202 msgid "TUIC" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:252 +#: htdocs/luci-static/resources/fchomo.js:253 msgid "TURN" msgstr "" @@ -3007,35 +3032,35 @@ msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:720 -#: htdocs/luci-static/resources/view/fchomo/node.js:728 +#: htdocs/luci-static/resources/view/fchomo/node.js:737 +#: htdocs/luci-static/resources/view/fchomo/node.js:745 msgid "The %s address used by local machine in the Cloudflare WARP network." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:763 -#: htdocs/luci-static/resources/view/fchomo/node.js:771 +#: htdocs/luci-static/resources/view/fchomo/node.js:800 +#: htdocs/luci-static/resources/view/fchomo/node.js:808 msgid "The %s address used by local machine in the Wireguard network." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:977 -#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/fchomo/listeners.js:988 +#: htdocs/luci-static/resources/view/fchomo/node.js:1174 msgid "The %s private key, in PEM format." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:962 -#: htdocs/luci-static/resources/fchomo/listeners.js:1000 +#: htdocs/luci-static/resources/fchomo/listeners.js:973 +#: htdocs/luci-static/resources/fchomo/listeners.js:1011 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:1125 +#: htdocs/luci-static/resources/view/fchomo/node.js:1160 msgid "The %s public key, in PEM format." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1159 +#: htdocs/luci-static/resources/view/fchomo/node.js:1194 msgid "" "The ECH parameter of the HTTPS record for the domain. Leave empty to resolve " "via DNS." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:409 +#: htdocs/luci-static/resources/view/fchomo/node.js:421 msgid "The ED25519 available private key or UUID provided by Sudoku server." msgstr "" @@ -3047,41 +3072,41 @@ msgstr "" msgid "The default value is 2:00 every day." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:740 -#: htdocs/luci-static/resources/view/fchomo/node.js:972 +#: htdocs/luci-static/resources/fchomo/listeners.js:744 +#: htdocs/luci-static/resources/view/fchomo/node.js:1010 msgid "" "The first padding must have a probability of 100% and at least 35 bytes." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1816 +#: htdocs/luci-static/resources/view/fchomo/client.js:1827 msgid "The matching %s will be deemed as not-poisoned." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1825 -#: htdocs/luci-static/resources/view/fchomo/client.js:1829 -#: htdocs/luci-static/resources/view/fchomo/client.js:1834 +#: htdocs/luci-static/resources/view/fchomo/client.js:1836 +#: htdocs/luci-static/resources/view/fchomo/client.js:1840 +#: htdocs/luci-static/resources/view/fchomo/client.js:1845 msgid "The matching %s will be deemed as poisoned." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:738 -#: htdocs/luci-static/resources/view/fchomo/node.js:970 +#: htdocs/luci-static/resources/fchomo/listeners.js:742 +#: htdocs/luci-static/resources/view/fchomo/node.js:1008 msgid "The server and client can set different padding parameters." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1058 +#: htdocs/luci-static/resources/fchomo/listeners.js:1069 #: htdocs/luci-static/resources/view/fchomo/global.js:615 msgid "This ECH parameter needs to be added to the HTTPS record of the domain." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1589 -#: htdocs/luci-static/resources/view/fchomo/node.js:1119 -#: htdocs/luci-static/resources/view/fchomo/node.js:1853 +#: htdocs/luci-static/resources/view/fchomo/client.js:1600 +#: htdocs/luci-static/resources/view/fchomo/node.js:1154 +#: htdocs/luci-static/resources/view/fchomo/node.js:1895 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:566 +#: htdocs/luci-static/resources/view/fchomo/node.js:578 msgid "" "This is the TUIC port of the SUoT protocol, designed to provide a QUIC " "stream based UDP relay mode that TUIC does not provide." @@ -3098,11 +3123,11 @@ msgid "" "kmod-tun" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:882 +#: htdocs/luci-static/resources/view/fchomo/global.js:885 msgid "To enable, you need to install dnsmasq-full." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:780 +#: htdocs/luci-static/resources/view/fchomo/global.js:783 msgid "Tproxy Fwmark/fwmask" msgstr "" @@ -3111,22 +3136,22 @@ msgid "Tproxy port" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:285 -#: htdocs/luci-static/resources/view/fchomo/node.js:401 +#: htdocs/luci-static/resources/view/fchomo/node.js:413 msgid "Traffic pattern" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2012 +#: htdocs/luci-static/resources/view/fchomo/node.js:2054 msgid "Transit proxy group" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:2018 +#: htdocs/luci-static/resources/view/fchomo/node.js:2060 msgid "Transit proxy node" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:273 -#: htdocs/luci-static/resources/fchomo/listeners.js:1109 -#: htdocs/luci-static/resources/view/fchomo/node.js:378 -#: htdocs/luci-static/resources/view/fchomo/node.js:1201 +#: htdocs/luci-static/resources/fchomo/listeners.js:1120 +#: htdocs/luci-static/resources/view/fchomo/node.js:390 +#: htdocs/luci-static/resources/view/fchomo/node.js:1236 msgid "Transport" msgstr "" @@ -3135,22 +3160,22 @@ msgstr "" msgid "Transport fields" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1114 -#: htdocs/luci-static/resources/view/fchomo/node.js:1206 +#: htdocs/luci-static/resources/fchomo/listeners.js:1125 +#: htdocs/luci-static/resources/view/fchomo/node.js:1241 msgid "Transport type" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:803 +#: htdocs/luci-static/resources/view/fchomo/client.js:811 msgid "Treat the destination IP as the source IP." msgstr "" #: htdocs/luci-static/resources/fchomo.js:162 -#: htdocs/luci-static/resources/fchomo.js:197 +#: htdocs/luci-static/resources/fchomo.js:198 msgid "Trojan" msgstr "" #: htdocs/luci-static/resources/fchomo.js:167 -#: htdocs/luci-static/resources/fchomo.js:203 +#: htdocs/luci-static/resources/fchomo.js:204 msgid "TrustTunnel" msgstr "" @@ -3158,7 +3183,7 @@ msgstr "" msgid "Trusted proxy header" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:785 +#: htdocs/luci-static/resources/view/fchomo/global.js:788 msgid "Tun Fwmark/fwmask" msgstr "" @@ -3180,29 +3205,29 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:142 #: htdocs/luci-static/resources/view/fchomo/client.js:531 -#: htdocs/luci-static/resources/view/fchomo/client.js:644 -#: htdocs/luci-static/resources/view/fchomo/client.js:738 -#: htdocs/luci-static/resources/view/fchomo/client.js:843 -#: htdocs/luci-static/resources/view/fchomo/client.js:1030 +#: htdocs/luci-static/resources/view/fchomo/client.js:652 +#: htdocs/luci-static/resources/view/fchomo/client.js:746 +#: htdocs/luci-static/resources/view/fchomo/client.js:851 +#: htdocs/luci-static/resources/view/fchomo/client.js:1038 #: htdocs/luci-static/resources/view/fchomo/node.js:250 -#: htdocs/luci-static/resources/view/fchomo/node.js:1632 -#: htdocs/luci-static/resources/view/fchomo/node.js:1983 +#: htdocs/luci-static/resources/view/fchomo/node.js:1672 +#: htdocs/luci-static/resources/view/fchomo/node.js:2025 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:285 msgid "Type" msgstr "" #: htdocs/luci-static/resources/fchomo.js:164 #: htdocs/luci-static/resources/fchomo.js:165 -#: htdocs/luci-static/resources/fchomo.js:200 #: htdocs/luci-static/resources/fchomo.js:201 #: htdocs/luci-static/resources/fchomo.js:202 -#: htdocs/luci-static/resources/fchomo.js:204 -#: htdocs/luci-static/resources/fchomo/listeners.js:640 -#: htdocs/luci-static/resources/fchomo/listeners.js:645 -#: htdocs/luci-static/resources/view/fchomo/client.js:589 -#: htdocs/luci-static/resources/view/fchomo/client.js:679 -#: htdocs/luci-static/resources/view/fchomo/node.js:904 -#: htdocs/luci-static/resources/view/fchomo/node.js:1827 +#: htdocs/luci-static/resources/fchomo.js:203 +#: htdocs/luci-static/resources/fchomo.js:205 +#: htdocs/luci-static/resources/fchomo/listeners.js:644 +#: htdocs/luci-static/resources/fchomo/listeners.js:649 +#: htdocs/luci-static/resources/view/fchomo/client.js:597 +#: htdocs/luci-static/resources/view/fchomo/client.js:687 +#: htdocs/luci-static/resources/view/fchomo/node.js:942 +#: htdocs/luci-static/resources/view/fchomo/node.js:1869 msgid "UDP" msgstr "" @@ -3210,42 +3235,42 @@ msgstr "" msgid "UDP NAT expiration time" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:565 +#: htdocs/luci-static/resources/view/fchomo/node.js:577 msgid "UDP over stream" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:571 +#: htdocs/luci-static/resources/view/fchomo/node.js:583 msgid "UDP over stream version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:558 +#: htdocs/luci-static/resources/view/fchomo/node.js:570 msgid "UDP packet relay mode." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:557 +#: htdocs/luci-static/resources/view/fchomo/node.js:569 msgid "UDP relay mode" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:373 #: htdocs/luci-static/resources/fchomo/listeners.js:374 -#: htdocs/luci-static/resources/view/fchomo/node.js:433 -#: htdocs/luci-static/resources/view/fchomo/node.js:434 +#: htdocs/luci-static/resources/view/fchomo/node.js:445 +#: htdocs/luci-static/resources/view/fchomo/node.js:446 msgid "UP: %s; DOWN: %s" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:241 +#: htdocs/luci-static/resources/fchomo.js:242 msgid "URL test" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:294 #: htdocs/luci-static/resources/fchomo/listeners.js:474 #: htdocs/luci-static/resources/fchomo/listeners.js:529 -#: htdocs/luci-static/resources/view/fchomo/node.js:545 -#: htdocs/luci-static/resources/view/fchomo/node.js:654 +#: htdocs/luci-static/resources/view/fchomo/node.js:557 +#: htdocs/luci-static/resources/view/fchomo/node.js:671 msgid "UUID" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1260 +#: htdocs/luci-static/resources/fchomo.js:1287 msgid "Unable to download unsupported type: %s" msgstr "" @@ -3270,8 +3295,8 @@ msgstr "" msgid "Unknown error: %s" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:910 -#: htdocs/luci-static/resources/view/fchomo/node.js:1832 +#: htdocs/luci-static/resources/view/fchomo/node.js:948 +#: htdocs/luci-static/resources/view/fchomo/node.js:1874 msgid "UoT" msgstr "" @@ -3279,22 +3304,22 @@ msgstr "" msgid "Update failed." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1701 +#: htdocs/luci-static/resources/view/fchomo/node.js:1741 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:397 msgid "Update interval" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1458 +#: htdocs/luci-static/resources/view/fchomo/node.js:1493 msgid "Upload bandwidth" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 +#: htdocs/luci-static/resources/view/fchomo/node.js:1494 msgid "Upload bandwidth in Mbps." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:968 -#: htdocs/luci-static/resources/fchomo/listeners.js:1008 -#: htdocs/luci-static/resources/view/fchomo/node.js:1130 +#: htdocs/luci-static/resources/fchomo/listeners.js:979 +#: htdocs/luci-static/resources/fchomo/listeners.js:1019 +#: htdocs/luci-static/resources/view/fchomo/node.js:1165 msgid "Upload certificate" msgstr "" @@ -3302,41 +3327,45 @@ msgstr "" msgid "Upload initial package" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:983 -#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/fchomo/listeners.js:994 +#: htdocs/luci-static/resources/view/fchomo/node.js:1179 msgid "Upload key" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:971 -#: htdocs/luci-static/resources/fchomo/listeners.js:986 -#: htdocs/luci-static/resources/fchomo/listeners.js:1011 +#: htdocs/luci-static/resources/fchomo/listeners.js:982 +#: htdocs/luci-static/resources/fchomo/listeners.js:997 +#: htdocs/luci-static/resources/fchomo/listeners.js:1022 #: htdocs/luci-static/resources/view/fchomo/global.js:306 -#: htdocs/luci-static/resources/view/fchomo/node.js:1133 -#: htdocs/luci-static/resources/view/fchomo/node.js:1147 +#: htdocs/luci-static/resources/view/fchomo/node.js:1168 +#: htdocs/luci-static/resources/view/fchomo/node.js:1182 msgid "Upload..." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1409 +#: htdocs/luci-static/resources/view/fchomo/node.js:273 +msgid "Use sub rule" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/client.js:1420 msgid "" "Used to resolve domains that can be directly connected. Can use domestic DNS " "servers or ECS." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1411 +#: htdocs/luci-static/resources/view/fchomo/client.js:1422 msgid "" "Used to resolve domains you want to proxy. Recommended to configure %s for " "DNS servers." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1393 +#: htdocs/luci-static/resources/view/fchomo/client.js:1404 msgid "Used to resolve the domain of the DNS server. Must be IP." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1400 +#: htdocs/luci-static/resources/view/fchomo/client.js:1411 msgid "Used to resolve the domain of the Proxy node." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1051 +#: htdocs/luci-static/resources/view/fchomo/node.js:1089 msgid "Used to verify the hostname on the returned certificates." msgstr "" @@ -3349,50 +3378,50 @@ msgid "User-hint is mandatory" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:161 -#: htdocs/luci-static/resources/view/fchomo/node.js:268 +#: htdocs/luci-static/resources/view/fchomo/node.js:280 msgid "Username" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:793 +#: htdocs/luci-static/resources/view/fchomo/global.js:796 msgid "Users filter mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1315 +#: htdocs/luci-static/resources/view/fchomo/node.js:1350 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1320 +#: htdocs/luci-static/resources/view/fchomo/node.js:1355 msgid "V2ray HTTPUpgrade fast open" msgstr "" #: htdocs/luci-static/resources/fchomo.js:161 -#: htdocs/luci-static/resources/fchomo.js:196 +#: htdocs/luci-static/resources/fchomo.js:197 msgid "VLESS" msgstr "" #: htdocs/luci-static/resources/fchomo.js:160 -#: htdocs/luci-static/resources/fchomo.js:195 +#: htdocs/luci-static/resources/fchomo.js:196 msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1638 -#: htdocs/luci-static/resources/view/fchomo/node.js:1989 +#: htdocs/luci-static/resources/view/fchomo/node.js:1678 +#: htdocs/luci-static/resources/view/fchomo/node.js:2031 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:328 msgid "Value" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:370 +#: htdocs/luci-static/resources/fchomo.js:372 msgid "Verify if given" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:463 #: htdocs/luci-static/resources/fchomo/listeners.js:595 -#: htdocs/luci-static/resources/view/fchomo/node.js:529 -#: htdocs/luci-static/resources/view/fchomo/node.js:866 +#: htdocs/luci-static/resources/view/fchomo/node.js:541 +#: htdocs/luci-static/resources/view/fchomo/node.js:903 msgid "Version" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:874 +#: htdocs/luci-static/resources/view/fchomo/node.js:911 msgid "Version hint" msgstr "" @@ -3401,7 +3430,7 @@ msgstr "" msgid "Vless Encryption fields" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:407 +#: htdocs/luci-static/resources/fchomo.js:409 msgid "Wait a random 0-111 milliseconds with 75% probability." msgstr "" @@ -3410,15 +3439,15 @@ msgid "Warning" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:441 -#: htdocs/luci-static/resources/fchomo/listeners.js:1116 -#: htdocs/luci-static/resources/fchomo/listeners.js:1125 -#: htdocs/luci-static/resources/fchomo/listeners.js:1132 -#: htdocs/luci-static/resources/view/fchomo/node.js:483 -#: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:1211 -#: htdocs/luci-static/resources/view/fchomo/node.js:1222 -#: htdocs/luci-static/resources/view/fchomo/node.js:1229 -#: htdocs/luci-static/resources/view/fchomo/node.js:1235 +#: htdocs/luci-static/resources/fchomo/listeners.js:1127 +#: htdocs/luci-static/resources/fchomo/listeners.js:1136 +#: htdocs/luci-static/resources/fchomo/listeners.js:1143 +#: htdocs/luci-static/resources/view/fchomo/node.js:495 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 +#: htdocs/luci-static/resources/view/fchomo/node.js:1246 +#: htdocs/luci-static/resources/view/fchomo/node.js:1257 +#: htdocs/luci-static/resources/view/fchomo/node.js:1264 +#: htdocs/luci-static/resources/view/fchomo/node.js:1270 msgid "WebSocket" msgstr "" @@ -3426,56 +3455,56 @@ msgstr "" msgid "When used as a server, HomeProxy is a better choice." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:795 +#: htdocs/luci-static/resources/view/fchomo/global.js:798 msgid "White list" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:204 +#: htdocs/luci-static/resources/fchomo.js:205 msgid "WireGuard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:785 +#: htdocs/luci-static/resources/view/fchomo/node.js:822 msgid "WireGuard peer public key." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:792 +#: htdocs/luci-static/resources/view/fchomo/node.js:829 msgid "WireGuard pre-shared key." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:777 +#: htdocs/luci-static/resources/view/fchomo/node.js:814 msgid "WireGuard requires base64-encoded private keys." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1117 -#: htdocs/luci-static/resources/fchomo/listeners.js:1126 -#: htdocs/luci-static/resources/view/fchomo/node.js:1212 -#: htdocs/luci-static/resources/view/fchomo/node.js:1230 +#: htdocs/luci-static/resources/fchomo/listeners.js:1128 +#: htdocs/luci-static/resources/fchomo/listeners.js:1137 +#: htdocs/luci-static/resources/view/fchomo/node.js:1247 +#: htdocs/luci-static/resources/view/fchomo/node.js:1265 msgid "XHTTP" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1162 -#: htdocs/luci-static/resources/view/fchomo/node.js:1325 +#: htdocs/luci-static/resources/fchomo/listeners.js:1173 +#: htdocs/luci-static/resources/view/fchomo/node.js:1360 msgid "XHTTP mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1356 +#: htdocs/luci-static/resources/view/fchomo/node.js:1391 msgid "XMUX" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1361 -#: htdocs/luci-static/resources/view/fchomo/node.js:1366 -#: htdocs/luci-static/resources/view/fchomo/node.js:1371 -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 -#: htdocs/luci-static/resources/view/fchomo/node.js:1381 -#: htdocs/luci-static/resources/view/fchomo/node.js:1386 +#: htdocs/luci-static/resources/view/fchomo/node.js:1396 +#: htdocs/luci-static/resources/view/fchomo/node.js:1401 +#: htdocs/luci-static/resources/view/fchomo/node.js:1406 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 +#: htdocs/luci-static/resources/view/fchomo/node.js:1421 msgid "XMUX:" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:699 +#: htdocs/luci-static/resources/fchomo/listeners.js:703 msgid "XOR mode" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:699 +#: htdocs/luci-static/resources/view/fchomo/node.js:716 msgid "Xudp (Xray-core)" msgstr "" @@ -3483,7 +3512,7 @@ msgstr "" msgid "Yaml text" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1856 +#: htdocs/luci-static/resources/view/fchomo/node.js:1898 msgid "Yes" msgstr "" @@ -3491,31 +3520,31 @@ msgstr "" msgid "YouTube" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1699 +#: htdocs/luci-static/resources/fchomo.js:1726 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:343 -#: htdocs/luci-static/resources/fchomo.js:356 -#: htdocs/luci-static/resources/fchomo.js:361 -#: htdocs/luci-static/resources/view/fchomo/node.js:679 +#: htdocs/luci-static/resources/fchomo.js:345 +#: htdocs/luci-static/resources/fchomo.js:358 +#: htdocs/luci-static/resources/fchomo.js:363 +#: htdocs/luci-static/resources/view/fchomo/node.js:696 msgid "aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:344 +#: htdocs/luci-static/resources/fchomo.js:346 msgid "aes-192-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:345 -#: htdocs/luci-static/resources/fchomo.js:362 +#: htdocs/luci-static/resources/fchomo.js:347 +#: htdocs/luci-static/resources/fchomo.js:364 msgid "aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1718 +#: htdocs/luci-static/resources/view/fchomo/node.js:1758 msgid "age private key" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1777 +#: htdocs/luci-static/resources/view/fchomo/node.js:1819 msgid "age public key" msgstr "" @@ -3527,7 +3556,7 @@ msgstr "" msgid "age-x25519" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:676 +#: htdocs/luci-static/resources/view/fchomo/node.js:693 msgid "auto" msgstr "" @@ -3535,19 +3564,19 @@ msgstr "" msgid "bbr" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:973 -#: htdocs/luci-static/resources/fchomo/listeners.js:1013 -#: htdocs/luci-static/resources/view/fchomo/node.js:1135 +#: htdocs/luci-static/resources/fchomo/listeners.js:984 +#: htdocs/luci-static/resources/fchomo/listeners.js:1024 +#: htdocs/luci-static/resources/view/fchomo/node.js:1170 msgid "certificate" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:346 -#: htdocs/luci-static/resources/fchomo.js:357 -#: htdocs/luci-static/resources/fchomo.js:363 +#: htdocs/luci-static/resources/fchomo.js:348 +#: htdocs/luci-static/resources/fchomo.js:359 +#: htdocs/luci-static/resources/fchomo.js:365 msgid "chacha20-ietf-poly1305" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:680 +#: htdocs/luci-static/resources/view/fchomo/node.js:697 msgid "chacha20-poly1305" msgstr "" @@ -3555,50 +3584,50 @@ msgstr "" msgid "cubic" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:651 -#: htdocs/luci-static/resources/fchomo/listeners.js:682 +#: htdocs/luci-static/resources/fchomo/listeners.js:655 +#: htdocs/luci-static/resources/fchomo/listeners.js:686 msgid "decryption" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:829 +#: htdocs/luci-static/resources/view/fchomo/global.js:832 msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1844 +#: htdocs/luci-static/resources/view/fchomo/node.js:1886 msgid "down" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:686 -#: htdocs/luci-static/resources/view/fchomo/node.js:924 -#: htdocs/luci-static/resources/view/fchomo/node.js:947 +#: htdocs/luci-static/resources/fchomo/listeners.js:690 +#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:985 msgid "encryption" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:425 -#: htdocs/luci-static/resources/view/fchomo/node.js:467 +#: htdocs/luci-static/resources/view/fchomo/node.js:479 msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink." msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1115 -#: htdocs/luci-static/resources/fchomo/listeners.js:1124 -#: htdocs/luci-static/resources/fchomo/listeners.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1210 -#: htdocs/luci-static/resources/view/fchomo/node.js:1221 -#: htdocs/luci-static/resources/view/fchomo/node.js:1228 -#: htdocs/luci-static/resources/view/fchomo/node.js:1234 +#: htdocs/luci-static/resources/fchomo/listeners.js:1126 +#: htdocs/luci-static/resources/fchomo/listeners.js:1135 +#: htdocs/luci-static/resources/fchomo/listeners.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1245 +#: htdocs/luci-static/resources/view/fchomo/node.js:1256 +#: htdocs/luci-static/resources/view/fchomo/node.js:1263 +#: htdocs/luci-static/resources/view/fchomo/node.js:1269 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1291 +#: htdocs/luci-static/resources/view/fchomo/node.js:1326 msgid "gRPC User-Agent" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1296 +#: htdocs/luci-static/resources/view/fchomo/node.js:1331 msgid "gRPC ping interval" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1156 -#: htdocs/luci-static/resources/view/fchomo/node.js:1287 +#: htdocs/luci-static/resources/fchomo/listeners.js:1167 +#: htdocs/luci-static/resources/view/fchomo/node.js:1322 msgid "gRPC service name" msgstr "" @@ -3606,11 +3635,23 @@ msgstr "" msgid "gVisor" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1403 +#: htdocs/luci-static/resources/view/fchomo/node.js:760 +msgid "h2" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1438 msgid "h2mux" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:851 +#: htdocs/luci-static/resources/view/fchomo/node.js:758 +msgid "h3" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:759 +msgid "h3-l4proxy" +msgstr "" + +#: htdocs/luci-static/resources/fchomo/listeners.js:855 msgid "least one keypair required" msgstr "" @@ -3618,23 +3659,23 @@ msgstr "" msgid "metacubexd" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1003 -#: htdocs/luci-static/resources/view/fchomo/client.js:1259 -#: htdocs/luci-static/resources/view/fchomo/client.js:1351 -#: htdocs/luci-static/resources/view/fchomo/client.js:1490 -#: htdocs/luci-static/resources/view/fchomo/client.js:1721 -#: htdocs/luci-static/resources/view/fchomo/client.js:1777 -#: htdocs/luci-static/resources/view/fchomo/node.js:1604 +#: htdocs/luci-static/resources/view/fchomo/client.js:1011 +#: htdocs/luci-static/resources/view/fchomo/client.js:1267 +#: htdocs/luci-static/resources/view/fchomo/client.js:1359 +#: htdocs/luci-static/resources/view/fchomo/client.js:1501 +#: htdocs/luci-static/resources/view/fchomo/client.js:1732 +#: htdocs/luci-static/resources/view/fchomo/client.js:1788 +#: htdocs/luci-static/resources/view/fchomo/node.js:1644 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:247 msgid "mihomo config" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:389 +#: htdocs/luci-static/resources/fchomo.js:391 msgid "mlkem768x25519plus" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1475 -#: htdocs/luci-static/resources/view/fchomo/node.js:1822 +#: htdocs/luci-static/resources/view/fchomo/node.js:1511 +#: htdocs/luci-static/resources/view/fchomo/node.js:1864 msgid "mpTCP" msgstr "" @@ -3642,24 +3683,24 @@ msgstr "" msgid "new_reno" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:820 +#: htdocs/luci-static/resources/view/fchomo/client.js:828 msgid "no-resolve" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1434 -#: htdocs/luci-static/resources/fchomo.js:1529 -#: htdocs/luci-static/resources/fchomo.js:1564 -#: htdocs/luci-static/resources/fchomo.js:1592 +#: htdocs/luci-static/resources/fchomo.js:1461 +#: htdocs/luci-static/resources/fchomo.js:1556 +#: htdocs/luci-static/resources/fchomo.js:1591 +#: htdocs/luci-static/resources/fchomo.js:1619 msgid "non-empty value" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:341 -#: htdocs/luci-static/resources/fchomo.js:355 -#: htdocs/luci-static/resources/fchomo.js:367 +#: htdocs/luci-static/resources/fchomo.js:343 +#: htdocs/luci-static/resources/fchomo.js:357 +#: htdocs/luci-static/resources/fchomo.js:369 #: htdocs/luci-static/resources/fchomo/listeners.js:561 -#: htdocs/luci-static/resources/view/fchomo/node.js:677 -#: htdocs/luci-static/resources/view/fchomo/node.js:697 -#: htdocs/luci-static/resources/view/fchomo/node.js:835 +#: htdocs/luci-static/resources/view/fchomo/node.js:694 +#: htdocs/luci-static/resources/view/fchomo/node.js:714 +#: htdocs/luci-static/resources/view/fchomo/node.js:872 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:324 msgid "none" msgstr "" @@ -3668,49 +3709,49 @@ msgstr "" msgid "not found" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1020 +#: htdocs/luci-static/resources/view/fchomo/client.js:1028 msgid "not included \",\"" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:227 -#: htdocs/luci-static/resources/fchomo/listeners.js:607 -#: htdocs/luci-static/resources/fchomo/listeners.js:608 +#: htdocs/luci-static/resources/fchomo.js:228 +#: htdocs/luci-static/resources/fchomo/listeners.js:611 +#: htdocs/luci-static/resources/fchomo/listeners.js:612 msgid "null" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:562 -#: htdocs/luci-static/resources/view/fchomo/node.js:836 +#: htdocs/luci-static/resources/view/fchomo/node.js:873 msgid "obfs-simple" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:514 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 msgid "only applies when %s is %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:512 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 msgid "only applies when %s is not %s." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1802 +#: htdocs/luci-static/resources/view/fchomo/node.js:1844 msgid "override.proxy-name" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:698 +#: htdocs/luci-static/resources/view/fchomo/node.js:715 msgid "packet addr (v2ray-core v5+)" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1166 -#: htdocs/luci-static/resources/view/fchomo/node.js:1329 +#: htdocs/luci-static/resources/fchomo/listeners.js:1177 +#: htdocs/luci-static/resources/view/fchomo/node.js:1364 msgid "packet-up" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:439 -#: htdocs/luci-static/resources/view/fchomo/node.js:481 +#: htdocs/luci-static/resources/view/fchomo/node.js:493 msgid "poll" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:988 -#: htdocs/luci-static/resources/view/fchomo/node.js:1149 +#: htdocs/luci-static/resources/fchomo/listeners.js:999 +#: htdocs/luci-static/resources/view/fchomo/node.js:1184 msgid "private key" msgstr "" @@ -3718,12 +3759,12 @@ msgstr "" msgid "razord-meta" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1183 -#: htdocs/luci-static/resources/view/fchomo/client.js:1189 +#: htdocs/luci-static/resources/view/fchomo/client.js:1191 +#: htdocs/luci-static/resources/view/fchomo/client.js:1197 msgid "requires front-end adaptation using the API." msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:840 +#: htdocs/luci-static/resources/view/fchomo/node.js:877 msgid "restls" msgstr "" @@ -3732,38 +3773,38 @@ msgid "rule-set" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:563 -#: htdocs/luci-static/resources/view/fchomo/node.js:839 +#: htdocs/luci-static/resources/view/fchomo/node.js:876 msgid "shadow-tls" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1401 +#: htdocs/luci-static/resources/view/fchomo/node.js:1436 msgid "smux" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:438 -#: htdocs/luci-static/resources/view/fchomo/node.js:480 +#: htdocs/luci-static/resources/view/fchomo/node.js:492 msgid "split-stream" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:802 +#: htdocs/luci-static/resources/view/fchomo/client.js:810 msgid "src" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1164 -#: htdocs/luci-static/resources/view/fchomo/node.js:1327 +#: htdocs/luci-static/resources/fchomo/listeners.js:1175 +#: htdocs/luci-static/resources/view/fchomo/node.js:1362 msgid "stream-one" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1165 -#: htdocs/luci-static/resources/view/fchomo/node.js:1328 +#: htdocs/luci-static/resources/fchomo/listeners.js:1176 +#: htdocs/luci-static/resources/view/fchomo/node.js:1363 msgid "stream-up" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1181 +#: htdocs/luci-static/resources/fchomo/listeners.js:1192 msgid "stream-up server seconds" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:514 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 msgid "stream/poll/auto" msgstr "" @@ -3775,100 +3816,100 @@ msgstr "" msgid "unchecked" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:453 +#: htdocs/luci-static/resources/fchomo.js:455 msgid "unique UCI identifier" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:456 +#: htdocs/luci-static/resources/fchomo.js:458 msgid "unique identifier" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1601 +#: htdocs/luci-static/resources/fchomo.js:1628 msgid "unique value" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1838 +#: htdocs/luci-static/resources/view/fchomo/node.js:1880 msgid "up" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:464 #: htdocs/luci-static/resources/fchomo/listeners.js:596 -#: htdocs/luci-static/resources/view/fchomo/node.js:530 -#: htdocs/luci-static/resources/view/fchomo/node.js:572 -#: htdocs/luci-static/resources/view/fchomo/node.js:867 -#: htdocs/luci-static/resources/view/fchomo/node.js:917 +#: htdocs/luci-static/resources/view/fchomo/node.js:542 +#: htdocs/luci-static/resources/view/fchomo/node.js:584 +#: htdocs/luci-static/resources/view/fchomo/node.js:904 +#: htdocs/luci-static/resources/view/fchomo/node.js:955 msgid "v1" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:465 #: htdocs/luci-static/resources/fchomo/listeners.js:597 -#: htdocs/luci-static/resources/view/fchomo/node.js:531 -#: htdocs/luci-static/resources/view/fchomo/node.js:868 -#: htdocs/luci-static/resources/view/fchomo/node.js:918 +#: htdocs/luci-static/resources/view/fchomo/node.js:543 +#: htdocs/luci-static/resources/view/fchomo/node.js:905 +#: htdocs/luci-static/resources/view/fchomo/node.js:956 msgid "v2" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:466 #: htdocs/luci-static/resources/fchomo/listeners.js:598 -#: htdocs/luci-static/resources/view/fchomo/node.js:532 -#: htdocs/luci-static/resources/view/fchomo/node.js:869 +#: htdocs/luci-static/resources/view/fchomo/node.js:544 +#: htdocs/luci-static/resources/view/fchomo/node.js:906 msgid "v3" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:467 -#: htdocs/luci-static/resources/view/fchomo/node.js:533 +#: htdocs/luci-static/resources/view/fchomo/node.js:545 msgid "v4" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:468 -#: htdocs/luci-static/resources/view/fchomo/node.js:534 +#: htdocs/luci-static/resources/view/fchomo/node.js:546 msgid "v5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1481 -#: htdocs/luci-static/resources/fchomo.js:1484 +#: htdocs/luci-static/resources/fchomo.js:1508 +#: htdocs/luci-static/resources/fchomo.js:1511 msgid "valid JSON format" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1109 +#: htdocs/luci-static/resources/view/fchomo/node.js:1144 msgid "valid SHA256 string with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1506 -#: htdocs/luci-static/resources/fchomo.js:1509 +#: htdocs/luci-static/resources/fchomo.js:1533 +#: htdocs/luci-static/resources/fchomo.js:1536 msgid "valid URL" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1519 +#: htdocs/luci-static/resources/fchomo.js:1546 msgid "valid base64 key with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1579 -#: htdocs/luci-static/resources/fchomo.js:1585 +#: htdocs/luci-static/resources/fchomo.js:1606 +#: htdocs/luci-static/resources/fchomo.js:1612 msgid "valid format: 2x, 2p, 4v" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1566 +#: htdocs/luci-static/resources/fchomo.js:1593 msgid "valid key length with %d characters" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1444 +#: htdocs/luci-static/resources/fchomo.js:1471 msgid "valid port value" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1494 +#: htdocs/luci-static/resources/fchomo.js:1521 msgid "valid uuid" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:413 +#: htdocs/luci-static/resources/fchomo.js:415 msgid "vless-mlkem768" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:412 +#: htdocs/luci-static/resources/fchomo.js:414 msgid "vless-x25519" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:347 +#: htdocs/luci-static/resources/fchomo.js:349 msgid "xchacha20-ietf-poly1305" msgstr "" @@ -3876,7 +3917,7 @@ msgstr "" msgid "yacd-meta" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1402 +#: htdocs/luci-static/resources/view/fchomo/node.js:1437 msgid "yamux" msgstr "" @@ -3884,10 +3925,10 @@ msgstr "" msgid "zashboard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:678 +#: htdocs/luci-static/resources/view/fchomo/node.js:695 msgid "zero" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1262 +#: htdocs/luci-static/resources/fchomo.js:1289 msgid "🡇" msgstr "" diff --git a/luci-app-fchomo/po/zh_Hans/fchomo.po b/luci-app-fchomo/po/zh_Hans/fchomo.po index d7ce1a8d..3d10be2c 100644 --- a/luci-app-fchomo/po/zh_Hans/fchomo.po +++ b/luci-app-fchomo/po/zh_Hans/fchomo.po @@ -12,53 +12,55 @@ msgstr "" msgid "%s log" msgstr "%s 日志" -#: htdocs/luci-static/resources/fchomo.js:250 #: htdocs/luci-static/resources/fchomo.js:251 #: htdocs/luci-static/resources/fchomo.js:252 #: htdocs/luci-static/resources/fchomo.js:253 #: htdocs/luci-static/resources/fchomo.js:254 #: htdocs/luci-static/resources/fchomo.js:255 +#: htdocs/luci-static/resources/fchomo.js:256 msgid "%s ports" msgstr "%s 端口" -#: htdocs/luci-static/resources/fchomo.js:615 -#: htdocs/luci-static/resources/fchomo.js:618 +#: htdocs/luci-static/resources/fchomo.js:617 +#: htdocs/luci-static/resources/fchomo.js:620 #: htdocs/luci-static/resources/view/fchomo/client.js:316 msgid "(Imported)" msgstr "(已导入)" -#: htdocs/luci-static/resources/fchomo/listeners.js:991 -#: htdocs/luci-static/resources/fchomo/listeners.js:999 -#: htdocs/luci-static/resources/fchomo/listeners.js:1008 +#: htdocs/luci-static/resources/fchomo/listeners.js:1002 +#: htdocs/luci-static/resources/fchomo/listeners.js:1010 +#: htdocs/luci-static/resources/fchomo/listeners.js:1019 #: htdocs/luci-static/resources/view/fchomo/global.js:564 #: htdocs/luci-static/resources/view/fchomo/global.js:570 -#: htdocs/luci-static/resources/view/fchomo/node.js:1124 -#: htdocs/luci-static/resources/view/fchomo/node.js:1130 -#: htdocs/luci-static/resources/view/fchomo/node.js:1138 -#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/view/fchomo/node.js:1159 +#: htdocs/luci-static/resources/view/fchomo/node.js:1165 +#: htdocs/luci-static/resources/view/fchomo/node.js:1173 +#: htdocs/luci-static/resources/view/fchomo/node.js:1179 msgid "(mTLS)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:861 -#: htdocs/luci-static/resources/view/fchomo/client.js:862 -#: htdocs/luci-static/resources/view/fchomo/client.js:1044 -#: htdocs/luci-static/resources/view/fchomo/client.js:1045 -#: htdocs/luci-static/resources/view/fchomo/client.js:1058 -#: htdocs/luci-static/resources/view/fchomo/client.js:1059 -#: htdocs/luci-static/resources/view/fchomo/client.js:1288 -#: htdocs/luci-static/resources/view/fchomo/node.js:1993 -#: htdocs/luci-static/resources/view/fchomo/node.js:1999 -#: htdocs/luci-static/resources/view/fchomo/node.js:2013 -#: htdocs/luci-static/resources/view/fchomo/node.js:2019 +#: htdocs/luci-static/resources/view/fchomo/client.js:869 +#: htdocs/luci-static/resources/view/fchomo/client.js:870 +#: htdocs/luci-static/resources/view/fchomo/client.js:1052 +#: htdocs/luci-static/resources/view/fchomo/client.js:1053 +#: htdocs/luci-static/resources/view/fchomo/client.js:1066 +#: htdocs/luci-static/resources/view/fchomo/client.js:1067 +#: htdocs/luci-static/resources/view/fchomo/client.js:1296 +#: htdocs/luci-static/resources/view/fchomo/node.js:268 +#: htdocs/luci-static/resources/view/fchomo/node.js:274 +#: htdocs/luci-static/resources/view/fchomo/node.js:2035 +#: htdocs/luci-static/resources/view/fchomo/node.js:2041 +#: htdocs/luci-static/resources/view/fchomo/node.js:2055 +#: htdocs/luci-static/resources/view/fchomo/node.js:2061 msgid "-- Please choose --" msgstr "-- 请选择 --" -#: htdocs/luci-static/resources/fchomo.js:402 +#: htdocs/luci-static/resources/fchomo.js:404 msgid "0-RTT reuse." msgstr "0-RTT 重用。" -#: htdocs/luci-static/resources/fchomo.js:399 -#: htdocs/luci-static/resources/fchomo.js:403 +#: htdocs/luci-static/resources/fchomo.js:401 +#: htdocs/luci-static/resources/fchomo.js:405 msgid "1-RTT only." msgstr "仅限 1-RTT。" @@ -66,32 +68,32 @@ msgstr "仅限 1-RTT。" msgid "163Music" msgstr "网抑云" -#: htdocs/luci-static/resources/fchomo.js:349 +#: htdocs/luci-static/resources/fchomo.js:351 msgid "2022-blake3-aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:350 +#: htdocs/luci-static/resources/fchomo.js:352 msgid "2022-blake3-aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:351 +#: htdocs/luci-static/resources/fchomo.js:353 msgid "2022-blake3-chacha20-poly1305" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:690 +#: htdocs/luci-static/resources/view/fchomo/client.js:698 msgid "0 or 1 only." msgstr "仅限 01。" -#: htdocs/luci-static/resources/fchomo/listeners.js:969 -#: htdocs/luci-static/resources/fchomo/listeners.js:984 -#: htdocs/luci-static/resources/fchomo/listeners.js:1009 -#: htdocs/luci-static/resources/view/fchomo/node.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1145 +#: htdocs/luci-static/resources/fchomo/listeners.js:980 +#: htdocs/luci-static/resources/fchomo/listeners.js:995 +#: htdocs/luci-static/resources/fchomo/listeners.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1166 +#: htdocs/luci-static/resources/view/fchomo/node.js:1180 msgid "Save your configuration before uploading files!" msgstr "上传文件前请先保存配置!" #: htdocs/luci-static/resources/fchomo/listeners.js:286 -#: htdocs/luci-static/resources/view/fchomo/node.js:402 +#: htdocs/luci-static/resources/view/fchomo/node.js:414 msgid "" "A base64 string is used to fine-tune network behavior.
Please refer to " "the document" msgstr "客户端维护的 NAT 映射 的老化时间。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:794 -#: htdocs/luci-static/resources/view/fchomo/global.js:857 -#: htdocs/luci-static/resources/view/fchomo/global.js:891 +#: htdocs/luci-static/resources/view/fchomo/global.js:797 +#: htdocs/luci-static/resources/view/fchomo/global.js:860 +#: htdocs/luci-static/resources/view/fchomo/global.js:894 msgid "All allowed" msgstr "允许所有" -#: htdocs/luci-static/resources/fchomo.js:247 +#: htdocs/luci-static/resources/fchomo.js:248 msgid "All ports" msgstr "所有端口" @@ -255,11 +261,11 @@ msgid "" msgstr "" "允许从私有网络访问。
要从公共网站访问私有网络上的 API,则必须启用。" -#: htdocs/luci-static/resources/fchomo/listeners.js:896 +#: htdocs/luci-static/resources/fchomo/listeners.js:961 msgid "Allow insecure connections" msgstr "允许不安全的连接" -#: htdocs/luci-static/resources/view/fchomo/node.js:798 +#: htdocs/luci-static/resources/view/fchomo/node.js:835 msgid "Allowed IPs" msgstr "允许的 IP" @@ -272,12 +278,12 @@ msgid "Already in updating." msgstr "已在更新中。" #: htdocs/luci-static/resources/fchomo/listeners.js:543 -#: htdocs/luci-static/resources/view/fchomo/node.js:668 +#: htdocs/luci-static/resources/view/fchomo/node.js:685 msgid "Alter ID" msgstr "额外 ID" #: htdocs/luci-static/resources/fchomo.js:163 -#: htdocs/luci-static/resources/fchomo.js:198 +#: htdocs/luci-static/resources/fchomo.js:199 msgid "AnyTLS" msgstr "" @@ -285,12 +291,12 @@ msgstr "" msgid "Application version" msgstr "应用版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:819 +#: htdocs/luci-static/resources/view/fchomo/global.js:822 msgid "As the TOP upstream of dnsmasq" msgstr "作为 dnsmasq 的最优先上游" -#: htdocs/luci-static/resources/view/fchomo/global.js:820 -#: htdocs/luci-static/resources/view/fchomo/global.js:827 +#: htdocs/luci-static/resources/view/fchomo/global.js:823 +#: htdocs/luci-static/resources/view/fchomo/global.js:830 msgid "As the TOP upstream of dnsmasq." msgstr "作为 dnsmasq 的最优先上游。" @@ -298,16 +304,16 @@ msgstr "作为 dnsmasq 的最优先上游。" msgid "Auth timeout" msgstr "认证超时" -#: htdocs/luci-static/resources/view/fchomo/node.js:690 +#: htdocs/luci-static/resources/view/fchomo/node.js:707 msgid "Authenticated length" msgstr "认证长度" #: htdocs/luci-static/resources/fchomo/listeners.js:440 -#: htdocs/luci-static/resources/fchomo/listeners.js:1163 +#: htdocs/luci-static/resources/fchomo/listeners.js:1174 #: htdocs/luci-static/resources/view/fchomo/global.js:423 -#: htdocs/luci-static/resources/view/fchomo/node.js:482 -#: htdocs/luci-static/resources/view/fchomo/node.js:506 -#: htdocs/luci-static/resources/view/fchomo/node.js:1326 +#: htdocs/luci-static/resources/view/fchomo/node.js:494 +#: htdocs/luci-static/resources/view/fchomo/node.js:518 +#: htdocs/luci-static/resources/view/fchomo/node.js:1361 msgid "Auto" msgstr "自动" @@ -323,8 +329,8 @@ msgstr "自动更新" msgid "Auto update resources." msgstr "自动更新资源文件。" -#: htdocs/luci-static/resources/fchomo/listeners.js:629 -#: htdocs/luci-static/resources/view/fchomo/node.js:895 +#: htdocs/luci-static/resources/fchomo/listeners.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:933 msgid "BBR profile" msgstr "BBR 配置文件" @@ -332,11 +338,11 @@ msgstr "BBR 配置文件" msgid "Baidu" msgstr "百度" -#: htdocs/luci-static/resources/view/fchomo/node.js:705 +#: htdocs/luci-static/resources/view/fchomo/node.js:722 msgid "Base64 encoded ECDSA private key on the NIST P-256 curve." msgstr "基于 NIST P-256 曲线的 Base64 编码 ECDSA 私钥。" -#: htdocs/luci-static/resources/view/fchomo/node.js:713 +#: htdocs/luci-static/resources/view/fchomo/node.js:730 msgid "Base64 encoded ECDSA public key on the NIST P-256 curve." msgstr "基于 NIST P-256 曲线的 Base64 编码 ECDSA 公钥。" @@ -357,23 +363,23 @@ msgstr "二进制格式仅支持 domain/ipcidr" msgid "Binary mrs" msgstr "二进制 mrs" -#: htdocs/luci-static/resources/view/fchomo/global.js:755 -#: htdocs/luci-static/resources/view/fchomo/node.js:1485 -#: htdocs/luci-static/resources/view/fchomo/node.js:1867 +#: htdocs/luci-static/resources/view/fchomo/global.js:758 +#: htdocs/luci-static/resources/view/fchomo/node.js:1522 +#: htdocs/luci-static/resources/view/fchomo/node.js:1909 msgid "Bind interface" msgstr "绑定接口" -#: htdocs/luci-static/resources/view/fchomo/node.js:1486 -#: htdocs/luci-static/resources/view/fchomo/node.js:1868 +#: htdocs/luci-static/resources/view/fchomo/node.js:1523 +#: htdocs/luci-static/resources/view/fchomo/node.js:1910 msgid "Bind outbound interface.
" msgstr "绑定出站接口。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:756 +#: htdocs/luci-static/resources/view/fchomo/global.js:759 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect.
" msgstr "绑定出站流量至指定接口。留空自动检测。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:796 +#: htdocs/luci-static/resources/view/fchomo/global.js:799 msgid "Black list" msgstr "黑名单" @@ -381,16 +387,16 @@ msgstr "黑名单" msgid "Block DNS queries" msgstr "封锁 DNS 请求" -#: htdocs/luci-static/resources/view/fchomo/client.js:1690 -#: htdocs/luci-static/resources/view/fchomo/client.js:1699 +#: htdocs/luci-static/resources/view/fchomo/client.js:1701 +#: htdocs/luci-static/resources/view/fchomo/client.js:1710 msgid "Bootstrap DNS policy (Node)" msgstr "引导 DNS 策略 (节点)" -#: htdocs/luci-static/resources/view/fchomo/client.js:1392 +#: htdocs/luci-static/resources/view/fchomo/client.js:1403 msgid "Bootstrap DNS server" msgstr "引导 DNS 服务器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1399 +#: htdocs/luci-static/resources/view/fchomo/client.js:1410 msgid "Bootstrap DNS server (Node)" msgstr "引导 DNS 服务器 (节点)" @@ -398,11 +404,11 @@ msgstr "引导 DNS 服务器 (节点)" msgid "BundleMRS version" msgstr "BundleMRS 版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:858 +#: htdocs/luci-static/resources/view/fchomo/global.js:861 msgid "Bypass CN" msgstr "绕过 CN 流量" -#: htdocs/luci-static/resources/view/fchomo/global.js:892 +#: htdocs/luci-static/resources/view/fchomo/global.js:895 msgid "Bypass DSCP" msgstr "绕过 DSCP" @@ -410,10 +416,10 @@ msgstr "绕过 DSCP" #: htdocs/luci-static/resources/fchomo/listeners.js:439 #: htdocs/luci-static/resources/fchomo/listeners.js:440 #: htdocs/luci-static/resources/fchomo/listeners.js:441 -#: htdocs/luci-static/resources/view/fchomo/node.js:480 -#: htdocs/luci-static/resources/view/fchomo/node.js:481 -#: htdocs/luci-static/resources/view/fchomo/node.js:482 -#: htdocs/luci-static/resources/view/fchomo/node.js:483 +#: htdocs/luci-static/resources/view/fchomo/node.js:492 +#: htdocs/luci-static/resources/view/fchomo/node.js:493 +#: htdocs/luci-static/resources/view/fchomo/node.js:494 +#: htdocs/luci-static/resources/view/fchomo/node.js:495 msgid "CDN support" msgstr "CDN 支持" @@ -429,21 +435,21 @@ msgstr "CORS 允许私有网络" msgid "CORS allowed origins, * will be used if empty." msgstr "CORS 允许的来源,留空则使用 *。" -#: htdocs/luci-static/resources/fchomo.js:731 +#: htdocs/luci-static/resources/fchomo.js:733 msgid "Cancel" msgstr "取消" -#: htdocs/luci-static/resources/view/fchomo/node.js:1103 +#: htdocs/luci-static/resources/view/fchomo/node.js:1138 msgid "Cert fingerprint" msgstr "证书指纹" -#: htdocs/luci-static/resources/view/fchomo/node.js:1104 +#: htdocs/luci-static/resources/view/fchomo/node.js:1139 msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "证书指纹。用于实现 SSL证书固定 并防止 MitM。" -#: htdocs/luci-static/resources/fchomo/listeners.js:961 -#: htdocs/luci-static/resources/view/fchomo/node.js:1124 +#: htdocs/luci-static/resources/fchomo/listeners.js:972 +#: htdocs/luci-static/resources/view/fchomo/node.js:1159 msgid "Certificate path" msgstr "证书路径" @@ -474,14 +480,14 @@ msgstr "大陆域名列表版本" #: htdocs/luci-static/resources/fchomo/listeners.js:255 #: htdocs/luci-static/resources/fchomo/listeners.js:354 -#: htdocs/luci-static/resources/view/fchomo/node.js:355 -#: htdocs/luci-static/resources/view/fchomo/node.js:414 -#: htdocs/luci-static/resources/view/fchomo/node.js:674 +#: htdocs/luci-static/resources/view/fchomo/node.js:367 +#: htdocs/luci-static/resources/view/fchomo/node.js:426 +#: htdocs/luci-static/resources/view/fchomo/node.js:691 msgid "Chipher" msgstr "加密方法" #: htdocs/luci-static/resources/fchomo/listeners.js:363 -#: htdocs/luci-static/resources/view/fchomo/node.js:423 +#: htdocs/luci-static/resources/view/fchomo/node.js:435 msgid "Chipher must be enabled if obfuscate downlink is disabled." msgstr "如果下行链路混淆功能被禁用,则必须启用加密。" @@ -497,25 +503,25 @@ msgstr "" "点击
此处下载" "最新的初始包。" -#: htdocs/luci-static/resources/fchomo/listeners.js:727 -#: htdocs/luci-static/resources/fchomo/listeners.js:1000 +#: htdocs/luci-static/resources/fchomo/listeners.js:731 +#: htdocs/luci-static/resources/fchomo/listeners.js:1011 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:959 -#: htdocs/luci-static/resources/view/fchomo/node.js:1125 -#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:997 +#: htdocs/luci-static/resources/view/fchomo/node.js:1160 +#: htdocs/luci-static/resources/view/fchomo/node.js:1174 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:22 msgid "Client" msgstr "客户端" -#: htdocs/luci-static/resources/fchomo/listeners.js:999 +#: htdocs/luci-static/resources/fchomo/listeners.js:1010 msgid "Client Auth Certificate path" msgstr "客户端认证证书路径" -#: htdocs/luci-static/resources/fchomo/listeners.js:991 +#: htdocs/luci-static/resources/fchomo/listeners.js:1002 msgid "Client Auth type" msgstr "客户端认证类型" -#: htdocs/luci-static/resources/view/fchomo/node.js:1170 +#: htdocs/luci-static/resources/view/fchomo/node.js:1205 msgid "Client fingerprint" msgstr "客户端指纹" @@ -531,21 +537,21 @@ msgstr "客户端状态" msgid "Collecting data..." msgstr "收集数据中..." -#: htdocs/luci-static/resources/fchomo.js:248 #: htdocs/luci-static/resources/fchomo.js:249 +#: htdocs/luci-static/resources/fchomo.js:250 msgid "Common ports (bypass P2P traffic)" msgstr "常用端口(绕过 P2P 流量)" -#: htdocs/luci-static/resources/fchomo.js:1378 +#: htdocs/luci-static/resources/fchomo.js:1405 msgid "Complete" msgstr "完成" -#: htdocs/luci-static/resources/view/fchomo/node.js:1811 +#: htdocs/luci-static/resources/view/fchomo/node.js:1853 msgid "Configuration Items" msgstr "配置项" -#: htdocs/luci-static/resources/fchomo/listeners.js:621 -#: htdocs/luci-static/resources/view/fchomo/node.js:887 +#: htdocs/luci-static/resources/fchomo/listeners.js:625 +#: htdocs/luci-static/resources/view/fchomo/node.js:924 msgid "Congestion controller" msgstr "拥塞控制器" @@ -553,7 +559,7 @@ msgstr "拥塞控制器" msgid "Connection check" msgstr "连接检查" -#: htdocs/luci-static/resources/view/fchomo/node.js:539 +#: htdocs/luci-static/resources/view/fchomo/node.js:551 msgid "Connection reuse" msgstr "连接复用" @@ -561,19 +567,19 @@ msgstr "连接复用" msgid "Conservative" msgstr "保守" -#: htdocs/luci-static/resources/fchomo.js:600 +#: htdocs/luci-static/resources/fchomo.js:602 msgid "Content copied to clipboard!" msgstr "内容已复制到剪贴板!" -#: htdocs/luci-static/resources/view/fchomo/client.js:671 -#: htdocs/luci-static/resources/view/fchomo/node.js:1658 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 +#: htdocs/luci-static/resources/view/fchomo/client.js:679 +#: htdocs/luci-static/resources/view/fchomo/node.js:1698 +#: htdocs/luci-static/resources/view/fchomo/node.js:1724 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:348 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:374 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "内容将不会被验证,请确保输入正确。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1657 +#: htdocs/luci-static/resources/view/fchomo/node.js:1697 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:347 msgid "Contents" msgstr "内容" @@ -582,7 +588,7 @@ msgstr "内容" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:602 +#: htdocs/luci-static/resources/fchomo.js:604 msgid "Copy" msgstr "复制" @@ -594,21 +600,21 @@ msgstr "核心版本" msgid "Cron expression" msgstr "Cron 表达式" -#: htdocs/luci-static/resources/view/fchomo/global.js:910 +#: htdocs/luci-static/resources/view/fchomo/global.js:913 msgid "Custom Direct List" msgstr "自定义直连列表" -#: htdocs/luci-static/resources/view/fchomo/node.js:1782 +#: htdocs/luci-static/resources/view/fchomo/node.js:1824 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:415 msgid "Custom HTTP header." msgstr "自定义 HTTP header。" -#: htdocs/luci-static/resources/view/fchomo/global.js:928 +#: htdocs/luci-static/resources/view/fchomo/global.js:931 msgid "Custom Proxy List" msgstr "自定义代理列表" #: htdocs/luci-static/resources/fchomo/listeners.js:378 -#: htdocs/luci-static/resources/view/fchomo/node.js:438 +#: htdocs/luci-static/resources/view/fchomo/node.js:450 msgid "Custom byte layout" msgstr "自定义字节布局" @@ -617,12 +623,12 @@ msgid "" "Custom internal hosts. Support yaml or json format." msgstr "自定义内部 hosts。支持 yamljson 格式。" -#: htdocs/luci-static/resources/fchomo.js:187 +#: htdocs/luci-static/resources/fchomo.js:188 msgid "DIRECT" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1742 -#: htdocs/luci-static/resources/view/fchomo/client.js:1751 +#: htdocs/luci-static/resources/view/fchomo/client.js:1753 +#: htdocs/luci-static/resources/view/fchomo/client.js:1762 msgid "DNS policy" msgstr "DNS 策略" @@ -630,19 +636,19 @@ msgstr "DNS 策略" msgid "DNS port" msgstr " DNS 端口" -#: htdocs/luci-static/resources/view/fchomo/client.js:874 -#: htdocs/luci-static/resources/view/fchomo/client.js:1438 -#: htdocs/luci-static/resources/view/fchomo/client.js:1447 -#: htdocs/luci-static/resources/view/fchomo/node.js:745 -#: htdocs/luci-static/resources/view/fchomo/node.js:828 +#: htdocs/luci-static/resources/view/fchomo/client.js:882 +#: htdocs/luci-static/resources/view/fchomo/client.js:1449 +#: htdocs/luci-static/resources/view/fchomo/client.js:1458 +#: htdocs/luci-static/resources/view/fchomo/node.js:782 +#: htdocs/luci-static/resources/view/fchomo/node.js:865 msgid "DNS server" msgstr "DNS 服务器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1378 +#: htdocs/luci-static/resources/view/fchomo/client.js:1386 msgid "DNS settings" msgstr "DNS 设置" -#: htdocs/luci-static/resources/view/fchomo/global.js:895 +#: htdocs/luci-static/resources/view/fchomo/global.js:898 msgid "DSCP list" msgstr "DSCP 列表" @@ -658,7 +664,7 @@ msgstr "调试" msgid "Default DNS (issued by WAN)" msgstr "默认 DNS(由 WAN 下发)" -#: htdocs/luci-static/resources/view/fchomo/client.js:1413 +#: htdocs/luci-static/resources/view/fchomo/client.js:1424 msgid "Default DNS server" msgstr "默认 DNS 服务器" @@ -666,15 +672,15 @@ msgstr "默认 DNS 服务器" msgid "Derive from priv-key" msgstr "从私钥派生" -#: htdocs/luci-static/resources/view/fchomo/node.js:799 +#: htdocs/luci-static/resources/view/fchomo/node.js:836 msgid "Destination addresses allowed to be forwarded via Wireguard." msgstr "允许通过 WireGuard 转发的目的地址" -#: htdocs/luci-static/resources/view/fchomo/node.js:1992 +#: htdocs/luci-static/resources/view/fchomo/node.js:2034 msgid "Destination provider" msgstr "落地供应商" -#: htdocs/luci-static/resources/view/fchomo/node.js:1998 +#: htdocs/luci-static/resources/view/fchomo/node.js:2040 msgid "Destination proxy node" msgstr "落地代理节点" @@ -682,8 +688,8 @@ msgstr "落地代理节点" msgid "Dial fields" msgstr "拨号字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:2005 -#: htdocs/luci-static/resources/view/fchomo/node.js:2025 +#: htdocs/luci-static/resources/view/fchomo/node.js:2047 +#: htdocs/luci-static/resources/view/fchomo/node.js:2067 msgid "Different chain head/tail" msgstr "不同的链头/链尾" @@ -691,29 +697,29 @@ msgstr "不同的链头/链尾" msgid "Direct" msgstr "直连" -#: htdocs/luci-static/resources/view/fchomo/global.js:798 +#: htdocs/luci-static/resources/view/fchomo/global.js:801 msgid "Direct IPv4 IP-s" msgstr "直连 IPv4 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:801 +#: htdocs/luci-static/resources/view/fchomo/global.js:804 msgid "Direct IPv6 IP-s" msgstr "直连 IPv6 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:804 +#: htdocs/luci-static/resources/view/fchomo/global.js:807 msgid "Direct MAC-s" msgstr "直连 MAC 地址" #: htdocs/luci-static/resources/fchomo/listeners.js:194 #: htdocs/luci-static/resources/view/fchomo/global.js:424 -#: htdocs/luci-static/resources/view/fchomo/node.js:310 +#: htdocs/luci-static/resources/view/fchomo/node.js:322 msgid "Disable" msgstr "禁用" -#: htdocs/luci-static/resources/view/fchomo/global.js:732 +#: htdocs/luci-static/resources/view/fchomo/global.js:735 msgid "Disable ECN of quic-go" msgstr "禁用 quic-go 的 显式拥塞通知(ECN)" -#: htdocs/luci-static/resources/view/fchomo/global.js:729 +#: htdocs/luci-static/resources/view/fchomo/global.js:732 msgid "Disable GSO of quic-go" msgstr "禁用 quic-go 的 通用分段卸载(GSO)" @@ -721,19 +727,19 @@ msgstr "禁用 quic-go 的 通用分段卸载(GSO)" msgid "Disable ICMP Forwarding" msgstr "禁用 ICMP 转发" -#: htdocs/luci-static/resources/view/fchomo/node.js:1044 +#: htdocs/luci-static/resources/view/fchomo/node.js:1082 msgid "Disable SNI" msgstr "禁用 SNI" -#: htdocs/luci-static/resources/view/fchomo/client.js:1095 +#: htdocs/luci-static/resources/view/fchomo/client.js:1103 msgid "Disable UDP" msgstr "禁用 UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:726 +#: htdocs/luci-static/resources/view/fchomo/global.js:729 msgid "Disable safe path check" msgstr "禁用安全路径检查" -#: htdocs/luci-static/resources/view/fchomo/client.js:821 +#: htdocs/luci-static/resources/view/fchomo/client.js:829 msgid "" "Do not resolve the domain connection to IP for this match.
Only works " "for pure domain inbound connections without DNS resolution. e.g., socks5h" @@ -741,37 +747,37 @@ msgstr "" "不要将域名连接解析为 IP 以进行此次匹配。
仅对未经 DNS 解析的纯域名入站连" "接有效。例如,socks5h" -#: htdocs/luci-static/resources/view/fchomo/client.js:844 -#: htdocs/luci-static/resources/view/fchomo/client.js:849 -#: htdocs/luci-static/resources/view/fchomo/client.js:1825 -#: htdocs/luci-static/resources/view/fchomo/client.js:1832 -#: htdocs/luci-static/resources/view/fchomo/client.js:1834 +#: htdocs/luci-static/resources/view/fchomo/client.js:852 +#: htdocs/luci-static/resources/view/fchomo/client.js:857 +#: htdocs/luci-static/resources/view/fchomo/client.js:1836 +#: htdocs/luci-static/resources/view/fchomo/client.js:1843 +#: htdocs/luci-static/resources/view/fchomo/client.js:1845 msgid "Domain" msgstr "域名" -#: htdocs/luci-static/resources/view/fchomo/node.js:1045 +#: htdocs/luci-static/resources/view/fchomo/node.js:1083 msgid "Donot send server name in ClientHello." msgstr "不要在 ClientHello 中发送服务器名称。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1587 -#: htdocs/luci-static/resources/view/fchomo/node.js:1117 -#: htdocs/luci-static/resources/view/fchomo/node.js:1851 +#: htdocs/luci-static/resources/view/fchomo/client.js:1598 +#: htdocs/luci-static/resources/view/fchomo/node.js:1152 +#: htdocs/luci-static/resources/view/fchomo/node.js:1893 msgid "Donot verifying server certificate." msgstr "不验证服务器证书。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1464 +#: htdocs/luci-static/resources/view/fchomo/node.js:1499 msgid "Download bandwidth" msgstr "下载带宽" -#: htdocs/luci-static/resources/view/fchomo/node.js:1465 +#: htdocs/luci-static/resources/view/fchomo/node.js:1500 msgid "Download bandwidth in Mbps." msgstr "下载带宽(单位:Mbps)。" -#: htdocs/luci-static/resources/fchomo.js:1257 +#: htdocs/luci-static/resources/fchomo.js:1284 msgid "Download failed: %s" msgstr "下载失败: %s" -#: htdocs/luci-static/resources/fchomo.js:1255 +#: htdocs/luci-static/resources/fchomo.js:1282 msgid "Download successful." msgstr "下载成功。" @@ -779,24 +785,24 @@ msgstr "下载成功。" msgid "Dual stack" msgstr "双栈" -#: htdocs/luci-static/resources/view/fchomo/node.js:1164 +#: htdocs/luci-static/resources/view/fchomo/node.js:1199 msgid "ECH HTTPS record query servername" msgstr "ECH HTTPS 记录查询域名" -#: htdocs/luci-static/resources/fchomo/listeners.js:1057 -#: htdocs/luci-static/resources/view/fchomo/node.js:1158 +#: htdocs/luci-static/resources/fchomo/listeners.js:1068 +#: htdocs/luci-static/resources/view/fchomo/node.js:1193 msgid "ECH config" msgstr "ECH 配置" -#: htdocs/luci-static/resources/fchomo/listeners.js:1016 +#: htdocs/luci-static/resources/fchomo/listeners.js:1027 msgid "ECH key" msgstr "ECH 密钥" -#: htdocs/luci-static/resources/view/fchomo/client.js:1621 +#: htdocs/luci-static/resources/view/fchomo/client.js:1632 msgid "ECS override" msgstr "强制覆盖 ECS" -#: htdocs/luci-static/resources/view/fchomo/client.js:1605 +#: htdocs/luci-static/resources/view/fchomo/client.js:1616 msgid "EDNS Client Subnet" msgstr "EDNS 客户端子网" @@ -804,11 +810,11 @@ msgstr "EDNS 客户端子网" msgid "ETag support" msgstr "ETag 支持" -#: htdocs/luci-static/resources/view/fchomo/node.js:1304 +#: htdocs/luci-static/resources/view/fchomo/node.js:1339 msgid "Early Data first packet length limit." msgstr "前置数据长度阈值" -#: htdocs/luci-static/resources/view/fchomo/node.js:1310 +#: htdocs/luci-static/resources/view/fchomo/node.js:1345 msgid "Early Data header name" msgstr "前置数据标头" @@ -816,10 +822,6 @@ msgstr "前置数据标头" msgid "Edit inbound" msgstr "编辑入站" -#: htdocs/luci-static/resources/view/fchomo/node.js:214 -msgid "Edit node" -msgstr "编辑节点" - #: htdocs/luci-static/resources/view/fchomo/node.js:214 msgid "Edit outbound" msgstr "编辑出站" @@ -828,39 +830,39 @@ msgstr "编辑出站" msgid "Edit ruleset" msgstr "编辑规则集" -#: htdocs/luci-static/resources/view/fchomo/node.js:1655 +#: htdocs/luci-static/resources/view/fchomo/node.js:1695 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:345 msgid "Editer" msgstr "编辑器" -#: htdocs/luci-static/resources/fchomo.js:393 +#: htdocs/luci-static/resources/fchomo.js:395 msgid "Eliminate encryption header characteristics" msgstr "消除加密头特征" -#: htdocs/luci-static/resources/view/fchomo/client.js:1086 +#: htdocs/luci-static/resources/view/fchomo/client.js:1094 msgid "Empty fallback" msgstr "为空时回退" #: htdocs/luci-static/resources/fchomo/listeners.js:133 -#: htdocs/luci-static/resources/view/fchomo/client.js:932 -#: htdocs/luci-static/resources/view/fchomo/client.js:1026 -#: htdocs/luci-static/resources/view/fchomo/client.js:1272 -#: htdocs/luci-static/resources/view/fchomo/client.js:1364 -#: htdocs/luci-static/resources/view/fchomo/client.js:1503 -#: htdocs/luci-static/resources/view/fchomo/client.js:1734 -#: htdocs/luci-static/resources/view/fchomo/client.js:1790 +#: htdocs/luci-static/resources/view/fchomo/client.js:940 +#: htdocs/luci-static/resources/view/fchomo/client.js:1034 +#: htdocs/luci-static/resources/view/fchomo/client.js:1280 +#: htdocs/luci-static/resources/view/fchomo/client.js:1372 +#: htdocs/luci-static/resources/view/fchomo/client.js:1514 +#: htdocs/luci-static/resources/view/fchomo/client.js:1745 +#: htdocs/luci-static/resources/view/fchomo/client.js:1801 #: htdocs/luci-static/resources/view/fchomo/global.js:422 -#: htdocs/luci-static/resources/view/fchomo/global.js:701 +#: htdocs/luci-static/resources/view/fchomo/global.js:704 #: htdocs/luci-static/resources/view/fchomo/node.js:246 -#: htdocs/luci-static/resources/view/fchomo/node.js:1628 -#: htdocs/luci-static/resources/view/fchomo/node.js:1890 -#: htdocs/luci-static/resources/view/fchomo/node.js:1979 +#: htdocs/luci-static/resources/view/fchomo/node.js:1668 +#: htdocs/luci-static/resources/view/fchomo/node.js:1932 +#: htdocs/luci-static/resources/view/fchomo/node.js:2021 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:272 #: htdocs/luci-static/resources/view/fchomo/server.js:49 msgid "Enable" msgstr "启用" -#: htdocs/luci-static/resources/view/fchomo/node.js:583 +#: htdocs/luci-static/resources/view/fchomo/node.js:600 msgid "" "Enable 0-RTT QUIC connection handshake on the client side. This is not " "impacting much on the performance, as the protocol is fully multiplexed.
强烈建议禁用此功能,因为它容易受到重放攻击。" -#: htdocs/luci-static/resources/view/fchomo/node.js:582 +#: htdocs/luci-static/resources/view/fchomo/node.js:599 msgid "Enable 0-RTT handshake" msgstr "启用 0-RTT 握手" -#: htdocs/luci-static/resources/view/fchomo/global.js:735 +#: htdocs/luci-static/resources/view/fchomo/global.js:738 msgid "" "Enable IP4P " "conversion for outbound connections" @@ -881,53 +883,57 @@ msgstr "" "为出站连接启用 IP4P 转换" -#: htdocs/luci-static/resources/view/fchomo/node.js:1152 +#: htdocs/luci-static/resources/view/fchomo/node.js:1187 msgid "Enable ECH" msgstr "启用 ECH" -#: htdocs/luci-static/resources/view/fchomo/node.js:1452 +#: htdocs/luci-static/resources/view/fchomo/node.js:1487 msgid "Enable TCP Brutal" msgstr "启用 TCP Brutal" -#: htdocs/luci-static/resources/view/fchomo/node.js:1453 +#: htdocs/luci-static/resources/view/fchomo/node.js:1488 msgid "Enable TCP Brutal congestion control algorithm" msgstr "启用 TCP Brutal 拥塞控制算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1441 +#: htdocs/luci-static/resources/view/fchomo/node.js:594 +msgid "Enable fast open" +msgstr "启用 Fast open" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1476 msgid "Enable multiplexing only for TCP." msgstr "仅为 TCP 启用多路复用。" #: htdocs/luci-static/resources/fchomo/listeners.js:424 -#: htdocs/luci-static/resources/view/fchomo/node.js:466 +#: htdocs/luci-static/resources/view/fchomo/node.js:478 msgid "Enable obfuscate for downlink" msgstr "启用下行链路混淆" -#: htdocs/luci-static/resources/view/fchomo/node.js:1435 +#: htdocs/luci-static/resources/view/fchomo/node.js:1470 msgid "Enable padding" msgstr "启用填充" -#: htdocs/luci-static/resources/view/fchomo/node.js:1446 +#: htdocs/luci-static/resources/view/fchomo/node.js:1481 msgid "Enable statistic" msgstr "启用统计" -#: htdocs/luci-static/resources/view/fchomo/node.js:911 -#: htdocs/luci-static/resources/view/fchomo/node.js:1833 +#: htdocs/luci-static/resources/view/fchomo/node.js:949 +#: htdocs/luci-static/resources/view/fchomo/node.js:1875 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "启用 SUoT 协议,需要服务端支持。与多路复用冲突。" #: htdocs/luci-static/resources/fchomo/listeners.js:201 -#: htdocs/luci-static/resources/view/fchomo/node.js:317 +#: htdocs/luci-static/resources/view/fchomo/node.js:329 msgid "" "Enabling obfuscation will make the server incompatible with standard QUIC " "connections, losing the ability to masquerade with HTTP/3." msgstr "启用混淆将使服务器与标准的 QUIC 连接不兼容,失去 HTTP/3 伪装的能力。" -#: htdocs/luci-static/resources/fchomo/listeners.js:690 +#: htdocs/luci-static/resources/fchomo/listeners.js:694 msgid "Encryption method" msgstr "加密方法" -#: htdocs/luci-static/resources/view/fchomo/node.js:712 +#: htdocs/luci-static/resources/view/fchomo/node.js:729 msgid "Endpoint pubkic key" msgstr "端点公钥" @@ -935,8 +941,8 @@ msgstr "端点公钥" msgid "Endpoint-Independent NAT" msgstr "端点独立 NAT" -#: htdocs/luci-static/resources/view/fchomo/client.js:723 -#: htdocs/luci-static/resources/view/fchomo/client.js:866 +#: htdocs/luci-static/resources/view/fchomo/client.js:731 +#: htdocs/luci-static/resources/view/fchomo/client.js:874 msgid "Entry" msgstr "条目" @@ -944,17 +950,17 @@ msgstr "条目" msgid "Error" msgstr "错误" -#: htdocs/luci-static/resources/view/fchomo/client.js:1139 +#: htdocs/luci-static/resources/view/fchomo/client.js:1147 msgid "" "Exceeding this triggers a forced health check. 5 will be used " "if empty." msgstr "超过此限制将会触发强制健康检查。留空则使用 5。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1948 +#: htdocs/luci-static/resources/view/fchomo/node.js:1990 msgid "Exclude matched node types." msgstr "排除匹配的节点类型。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1176 +#: htdocs/luci-static/resources/view/fchomo/client.js:1184 msgid "" "Exclude matched node types. Available types see here." @@ -962,8 +968,8 @@ msgstr "" "排除匹配的节点类型。可用类型请参见此处。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1171 -#: htdocs/luci-static/resources/view/fchomo/node.js:1941 +#: htdocs/luci-static/resources/view/fchomo/client.js:1179 +#: htdocs/luci-static/resources/view/fchomo/node.js:1983 msgid "Exclude nodes that meet keywords or regexps." msgstr "排除匹配关键词或表达式的节点。" @@ -971,138 +977,139 @@ msgstr "排除匹配关键词或表达式的节点。" msgid "Expand/Collapse result" msgstr "展开/收起 结果" -#: htdocs/luci-static/resources/view/fchomo/client.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1926 +#: htdocs/luci-static/resources/view/fchomo/client.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:1968 msgid "Expected HTTP code. 204 will be used if empty." msgstr "预期的 HTTP code。留空则使用 204。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1133 -#: htdocs/luci-static/resources/view/fchomo/node.js:1928 +#: htdocs/luci-static/resources/view/fchomo/client.js:1141 +#: htdocs/luci-static/resources/view/fchomo/node.js:1970 msgid "Expected status" msgstr "预期状态" -#: htdocs/luci-static/resources/fchomo.js:450 -#: htdocs/luci-static/resources/fchomo.js:453 -#: htdocs/luci-static/resources/fchomo.js:456 -#: htdocs/luci-static/resources/fchomo.js:1395 -#: htdocs/luci-static/resources/fchomo.js:1403 -#: htdocs/luci-static/resources/fchomo.js:1411 -#: htdocs/luci-static/resources/fchomo.js:1434 -#: htdocs/luci-static/resources/fchomo.js:1437 -#: htdocs/luci-static/resources/fchomo.js:1444 -#: htdocs/luci-static/resources/fchomo.js:1460 -#: htdocs/luci-static/resources/fchomo.js:1469 -#: htdocs/luci-static/resources/fchomo.js:1481 -#: htdocs/luci-static/resources/fchomo.js:1484 -#: htdocs/luci-static/resources/fchomo.js:1494 -#: htdocs/luci-static/resources/fchomo.js:1506 -#: htdocs/luci-static/resources/fchomo.js:1509 -#: htdocs/luci-static/resources/fchomo.js:1519 -#: htdocs/luci-static/resources/fchomo.js:1529 -#: htdocs/luci-static/resources/fchomo.js:1564 -#: htdocs/luci-static/resources/fchomo.js:1566 -#: htdocs/luci-static/resources/fchomo.js:1579 -#: htdocs/luci-static/resources/fchomo.js:1585 -#: htdocs/luci-static/resources/fchomo.js:1592 -#: htdocs/luci-static/resources/fchomo.js:1601 +#: htdocs/luci-static/resources/fchomo.js:452 +#: htdocs/luci-static/resources/fchomo.js:455 +#: htdocs/luci-static/resources/fchomo.js:458 +#: htdocs/luci-static/resources/fchomo.js:1422 +#: htdocs/luci-static/resources/fchomo.js:1430 +#: htdocs/luci-static/resources/fchomo.js:1438 +#: htdocs/luci-static/resources/fchomo.js:1461 +#: htdocs/luci-static/resources/fchomo.js:1464 +#: htdocs/luci-static/resources/fchomo.js:1471 +#: htdocs/luci-static/resources/fchomo.js:1487 +#: htdocs/luci-static/resources/fchomo.js:1496 +#: htdocs/luci-static/resources/fchomo.js:1508 +#: htdocs/luci-static/resources/fchomo.js:1511 +#: htdocs/luci-static/resources/fchomo.js:1521 +#: htdocs/luci-static/resources/fchomo.js:1533 +#: htdocs/luci-static/resources/fchomo.js:1536 +#: htdocs/luci-static/resources/fchomo.js:1546 +#: htdocs/luci-static/resources/fchomo.js:1556 +#: htdocs/luci-static/resources/fchomo.js:1591 +#: htdocs/luci-static/resources/fchomo.js:1593 +#: htdocs/luci-static/resources/fchomo.js:1606 +#: htdocs/luci-static/resources/fchomo.js:1612 +#: htdocs/luci-static/resources/fchomo.js:1619 +#: htdocs/luci-static/resources/fchomo.js:1628 #: htdocs/luci-static/resources/fchomo/listeners.js:363 #: htdocs/luci-static/resources/fchomo/listeners.js:410 -#: htdocs/luci-static/resources/fchomo/listeners.js:719 -#: htdocs/luci-static/resources/fchomo/listeners.js:750 -#: htdocs/luci-static/resources/fchomo/listeners.js:851 +#: htdocs/luci-static/resources/fchomo/listeners.js:723 +#: htdocs/luci-static/resources/fchomo/listeners.js:754 +#: htdocs/luci-static/resources/fchomo/listeners.js:855 #: htdocs/luci-static/resources/view/fchomo/client.js:69 -#: htdocs/luci-static/resources/view/fchomo/client.js:1020 -#: htdocs/luci-static/resources/view/fchomo/client.js:1518 -#: htdocs/luci-static/resources/view/fchomo/global.js:901 -#: htdocs/luci-static/resources/view/fchomo/node.js:423 -#: htdocs/luci-static/resources/view/fchomo/node.js:459 -#: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:514 -#: htdocs/luci-static/resources/view/fchomo/node.js:982 -#: htdocs/luci-static/resources/view/fchomo/node.js:1109 -#: htdocs/luci-static/resources/view/fchomo/node.js:2005 -#: htdocs/luci-static/resources/view/fchomo/node.js:2025 +#: htdocs/luci-static/resources/view/fchomo/client.js:1028 +#: htdocs/luci-static/resources/view/fchomo/client.js:1529 +#: htdocs/luci-static/resources/view/fchomo/global.js:904 +#: htdocs/luci-static/resources/view/fchomo/node.js:435 +#: htdocs/luci-static/resources/view/fchomo/node.js:471 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 +#: htdocs/luci-static/resources/view/fchomo/node.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/view/fchomo/node.js:2047 +#: htdocs/luci-static/resources/view/fchomo/node.js:2067 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:300 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:314 msgid "Expecting: %s" msgstr "请输入:%s" -#: htdocs/luci-static/resources/fchomo/listeners.js:1124 -#: htdocs/luci-static/resources/fchomo/listeners.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1219 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 -#: htdocs/luci-static/resources/view/fchomo/node.js:1234 +#: htdocs/luci-static/resources/fchomo/listeners.js:1135 +#: htdocs/luci-static/resources/fchomo/listeners.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1254 +#: htdocs/luci-static/resources/view/fchomo/node.js:1261 +#: htdocs/luci-static/resources/view/fchomo/node.js:1269 msgid "Expecting: only support %s." msgstr "请输入:仅支援 %s." -#: htdocs/luci-static/resources/view/fchomo/global.js:720 +#: htdocs/luci-static/resources/view/fchomo/global.js:723 msgid "Experimental" msgstr "实验性" #: htdocs/luci-static/resources/view/fchomo/client.js:551 #: htdocs/luci-static/resources/view/fchomo/client.js:564 -#: htdocs/luci-static/resources/view/fchomo/client.js:571 -#: htdocs/luci-static/resources/view/fchomo/client.js:581 -#: htdocs/luci-static/resources/view/fchomo/client.js:588 +#: htdocs/luci-static/resources/view/fchomo/client.js:572 +#: htdocs/luci-static/resources/view/fchomo/client.js:579 +#: htdocs/luci-static/resources/view/fchomo/client.js:589 #: htdocs/luci-static/resources/view/fchomo/client.js:596 -#: htdocs/luci-static/resources/view/fchomo/client.js:603 -#: htdocs/luci-static/resources/view/fchomo/client.js:670 +#: htdocs/luci-static/resources/view/fchomo/client.js:604 +#: htdocs/luci-static/resources/view/fchomo/client.js:611 +#: htdocs/luci-static/resources/view/fchomo/client.js:678 msgid "Factor" msgstr "条件" -#: htdocs/luci-static/resources/fchomo.js:1336 +#: htdocs/luci-static/resources/fchomo.js:1363 msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s" msgstr "无法执行 \"/etc/init.d/fchomo %s %s\" 原因: %s" -#: htdocs/luci-static/resources/fchomo.js:1289 +#: htdocs/luci-static/resources/fchomo.js:1316 msgid "Failed to generate %s, error: %s." msgstr "生成 %s 失败,错误:%s。" -#: htdocs/luci-static/resources/fchomo.js:1701 +#: htdocs/luci-static/resources/fchomo.js:1728 msgid "Failed to upload %s, error: %s." msgstr "上传 %s 失败,错误:%s。" -#: htdocs/luci-static/resources/fchomo.js:1720 +#: htdocs/luci-static/resources/fchomo.js:1747 msgid "Failed to upload, error: %s." msgstr "上传失败,错误:%s。" -#: htdocs/luci-static/resources/fchomo.js:240 +#: htdocs/luci-static/resources/fchomo.js:241 #: htdocs/luci-static/resources/fchomo/listeners.js:449 msgid "Fallback" msgstr "自动回退" -#: htdocs/luci-static/resources/view/fchomo/client.js:1407 -#: htdocs/luci-static/resources/view/fchomo/client.js:1420 +#: htdocs/luci-static/resources/view/fchomo/client.js:1418 +#: htdocs/luci-static/resources/view/fchomo/client.js:1431 msgid "Fallback DNS server" msgstr "後備 DNS 服务器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1804 +#: htdocs/luci-static/resources/view/fchomo/client.js:1815 msgid "Fallback filter" msgstr "後備过滤器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1166 -#: htdocs/luci-static/resources/view/fchomo/node.js:1935 +#: htdocs/luci-static/resources/view/fchomo/client.js:1174 +#: htdocs/luci-static/resources/view/fchomo/node.js:1977 msgid "Filter nodes that meet keywords or regexps." msgstr "过滤匹配关键字或表达式的节点。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1671 +#: htdocs/luci-static/resources/view/fchomo/client.js:1682 msgid "Filter record type:" msgstr "过滤记录类型:" -#: htdocs/luci-static/resources/view/fchomo/client.js:1639 -#: htdocs/luci-static/resources/view/fchomo/client.js:1655 +#: htdocs/luci-static/resources/view/fchomo/client.js:1650 +#: htdocs/luci-static/resources/view/fchomo/client.js:1666 msgid "Filter record: %s" msgstr "过滤 %s 记录" -#: htdocs/luci-static/resources/view/fchomo/client.js:1406 +#: htdocs/luci-static/resources/view/fchomo/client.js:1417 msgid "Final DNS server" msgstr "兜底 DNS 服务器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1408 +#: htdocs/luci-static/resources/view/fchomo/client.js:1419 msgid "Final DNS server (For non-poisoned domains)" msgstr "兜底 DNS 服务器 (用于未被投毒污染的域名)" -#: htdocs/luci-static/resources/view/fchomo/client.js:1410 +#: htdocs/luci-static/resources/view/fchomo/client.js:1421 msgid "Final DNS server (For poisoned domains)" msgstr "兜底 DNS 服务器 (用于已被投毒污染的域名)" @@ -1111,11 +1118,11 @@ msgid "Firewall" msgstr "防火墙" #: htdocs/luci-static/resources/fchomo/listeners.js:535 -#: htdocs/luci-static/resources/view/fchomo/node.js:660 +#: htdocs/luci-static/resources/view/fchomo/node.js:677 msgid "Flow" msgstr "流控" -#: htdocs/luci-static/resources/view/fchomo/client.js:1155 +#: htdocs/luci-static/resources/view/fchomo/client.js:1163 msgid "" "For details, see %s." @@ -1123,9 +1130,9 @@ msgstr "" "实现细节请参阅 %s." -#: htdocs/luci-static/resources/view/fchomo/client.js:1132 -#: htdocs/luci-static/resources/view/fchomo/node.js:1801 -#: htdocs/luci-static/resources/view/fchomo/node.js:1927 +#: htdocs/luci-static/resources/view/fchomo/client.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1843 +#: htdocs/luci-static/resources/view/fchomo/node.js:1969 msgid "" "For format see %s." @@ -1133,12 +1140,12 @@ msgstr "" "格式请参阅 %s." -#: htdocs/luci-static/resources/view/fchomo/node.js:740 -#: htdocs/luci-static/resources/view/fchomo/node.js:823 +#: htdocs/luci-static/resources/view/fchomo/node.js:777 +#: htdocs/luci-static/resources/view/fchomo/node.js:860 msgid "Force DNS remote resolution." msgstr "强制 DNS 远程解析。" -#: htdocs/luci-static/resources/view/fchomo/global.js:680 +#: htdocs/luci-static/resources/view/fchomo/global.js:683 msgid "Forced sniffing domain" msgstr "强制嗅探域名" @@ -1153,7 +1160,7 @@ msgstr "格式" msgid "FullCombo Shark!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1259 +#: htdocs/luci-static/resources/view/fchomo/node.js:1294 msgid "GET" msgstr "" @@ -1162,7 +1169,7 @@ msgid "GFW list version" msgstr "GFW 域名列表版本" #: htdocs/luci-static/resources/fchomo/listeners.js:196 -#: htdocs/luci-static/resources/view/fchomo/node.js:312 +#: htdocs/luci-static/resources/view/fchomo/node.js:324 msgid "Gecko" msgstr "" @@ -1171,9 +1178,9 @@ msgid "General" msgstr "常规" #: htdocs/luci-static/resources/fchomo/listeners.js:119 -#: htdocs/luci-static/resources/view/fchomo/client.js:1011 +#: htdocs/luci-static/resources/view/fchomo/client.js:1019 #: htdocs/luci-static/resources/view/fchomo/node.js:233 -#: htdocs/luci-static/resources/view/fchomo/node.js:1618 +#: htdocs/luci-static/resources/view/fchomo/node.js:1658 msgid "General fields" msgstr "常规字段" @@ -1181,17 +1188,17 @@ msgstr "常规字段" msgid "General settings" msgstr "常规设置" -#: htdocs/luci-static/resources/fchomo.js:551 #: htdocs/luci-static/resources/fchomo.js:553 -#: htdocs/luci-static/resources/fchomo.js:567 +#: htdocs/luci-static/resources/fchomo.js:555 #: htdocs/luci-static/resources/fchomo.js:569 +#: htdocs/luci-static/resources/fchomo.js:571 #: htdocs/luci-static/resources/fchomo/listeners.js:341 #: htdocs/luci-static/resources/fchomo/listeners.js:385 #: htdocs/luci-static/resources/fchomo/listeners.js:387 -#: htdocs/luci-static/resources/fchomo/listeners.js:823 -#: htdocs/luci-static/resources/fchomo/listeners.js:1049 +#: htdocs/luci-static/resources/fchomo/listeners.js:827 +#: htdocs/luci-static/resources/fchomo/listeners.js:1060 #: htdocs/luci-static/resources/view/fchomo/global.js:608 -#: htdocs/luci-static/resources/view/fchomo/node.js:1769 +#: htdocs/luci-static/resources/view/fchomo/node.js:1811 msgid "Generate" msgstr "生成" @@ -1207,17 +1214,17 @@ msgstr "GeoIP 版本" msgid "GeoSite version" msgstr "GeoSite 版本" -#: htdocs/luci-static/resources/view/fchomo/client.js:1814 +#: htdocs/luci-static/resources/view/fchomo/client.js:1825 msgid "Geoip code" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1811 +#: htdocs/luci-static/resources/view/fchomo/client.js:1822 msgid "Geoip enable" msgstr "Geoip 启用" -#: htdocs/luci-static/resources/view/fchomo/client.js:845 -#: htdocs/luci-static/resources/view/fchomo/client.js:854 -#: htdocs/luci-static/resources/view/fchomo/client.js:1823 +#: htdocs/luci-static/resources/view/fchomo/client.js:853 +#: htdocs/luci-static/resources/view/fchomo/client.js:862 +#: htdocs/luci-static/resources/view/fchomo/client.js:1834 msgid "Geosite" msgstr "" @@ -1238,7 +1245,7 @@ msgstr "全局" msgid "Global Authentication" msgstr "全局认证" -#: htdocs/luci-static/resources/view/fchomo/node.js:684 +#: htdocs/luci-static/resources/view/fchomo/node.js:701 msgid "Global padding" msgstr "全局填充" @@ -1246,7 +1253,7 @@ msgstr "全局填充" msgid "Google" msgstr "谷歌" -#: htdocs/luci-static/resources/fchomo.js:253 +#: htdocs/luci-static/resources/fchomo.js:254 msgid "Google FCM" msgstr "谷歌 FCM" @@ -1254,58 +1261,58 @@ msgstr "谷歌 FCM" msgid "Grant access to fchomo configuration" msgstr "授予 fchomo 访问 UCI 配置的权限" -#: htdocs/luci-static/resources/view/fchomo/client.js:1036 +#: htdocs/luci-static/resources/view/fchomo/client.js:1044 msgid "Group" msgstr "组" #: htdocs/luci-static/resources/fchomo.js:153 -#: htdocs/luci-static/resources/fchomo.js:188 +#: htdocs/luci-static/resources/fchomo.js:189 #: htdocs/luci-static/resources/fchomo/listeners.js:569 -#: htdocs/luci-static/resources/view/fchomo/node.js:846 -#: htdocs/luci-static/resources/view/fchomo/node.js:1208 -#: htdocs/luci-static/resources/view/fchomo/node.js:1219 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 +#: htdocs/luci-static/resources/view/fchomo/node.js:883 +#: htdocs/luci-static/resources/view/fchomo/node.js:1243 +#: htdocs/luci-static/resources/view/fchomo/node.js:1254 +#: htdocs/luci-static/resources/view/fchomo/node.js:1261 msgid "HTTP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:279 -#: htdocs/luci-static/resources/view/fchomo/node.js:1281 -#: htdocs/luci-static/resources/view/fchomo/node.js:1781 +#: htdocs/luci-static/resources/view/fchomo/node.js:291 +#: htdocs/luci-static/resources/view/fchomo/node.js:1316 +#: htdocs/luci-static/resources/view/fchomo/node.js:1823 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:414 msgid "HTTP header" msgstr "HTTP header" #: htdocs/luci-static/resources/fchomo/listeners.js:430 -#: htdocs/luci-static/resources/view/fchomo/node.js:472 +#: htdocs/luci-static/resources/view/fchomo/node.js:484 msgid "HTTP mask" msgstr "HTTP 伪装" #: htdocs/luci-static/resources/fchomo/listeners.js:435 -#: htdocs/luci-static/resources/view/fchomo/node.js:477 -#: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:514 +#: htdocs/luci-static/resources/view/fchomo/node.js:489 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 msgid "HTTP mask mode" msgstr "HTTP 伪装模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:502 +#: htdocs/luci-static/resources/view/fchomo/node.js:514 msgid "HTTP mask multiplex" msgstr "HTTP 伪装多路复用" -#: htdocs/luci-static/resources/view/fchomo/node.js:487 -#: htdocs/luci-static/resources/view/fchomo/node.js:492 +#: htdocs/luci-static/resources/view/fchomo/node.js:499 +#: htdocs/luci-static/resources/view/fchomo/node.js:504 msgid "HTTP mask: %s" msgstr "HTTP 伪装: %s" -#: htdocs/luci-static/resources/view/fchomo/node.js:1258 +#: htdocs/luci-static/resources/view/fchomo/node.js:1293 msgid "HTTP request method" msgstr "HTTP 请求方法" #: htdocs/luci-static/resources/fchomo/listeners.js:445 -#: htdocs/luci-static/resources/view/fchomo/node.js:498 +#: htdocs/luci-static/resources/view/fchomo/node.js:510 msgid "HTTP root path" msgstr "HTTP 根路径" -#: htdocs/luci-static/resources/view/fchomo/client.js:1570 +#: htdocs/luci-static/resources/view/fchomo/client.js:1581 msgid "HTTP/3" msgstr "" @@ -1315,17 +1322,17 @@ msgid "" "returned if empty." msgstr "身份验证失败时的 HTTP3 服务器响应。默认返回 404 页面。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1209 -#: htdocs/luci-static/resources/view/fchomo/node.js:1220 -#: htdocs/luci-static/resources/view/fchomo/node.js:1227 +#: htdocs/luci-static/resources/view/fchomo/node.js:1244 +#: htdocs/luci-static/resources/view/fchomo/node.js:1255 +#: htdocs/luci-static/resources/view/fchomo/node.js:1262 msgid "HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:876 +#: htdocs/luci-static/resources/view/fchomo/global.js:879 msgid "Handle domain" msgstr "处理域名" -#: htdocs/luci-static/resources/view/fchomo/node.js:394 +#: htdocs/luci-static/resources/view/fchomo/node.js:406 msgid "Handshake mode" msgstr "握手模式" @@ -1341,57 +1348,57 @@ msgstr "握手超时" msgid "Header to read real client IP from (e.g. X-Forwarded-For)" msgstr "用于读取客户端真实 IP 的 Header(例如 X-Forwarded-For)" -#: htdocs/luci-static/resources/view/fchomo/node.js:751 +#: htdocs/luci-static/resources/view/fchomo/node.js:788 msgid "Health check" msgstr "健康检查" -#: htdocs/luci-static/resources/view/fchomo/client.js:1101 -#: htdocs/luci-static/resources/view/fchomo/node.js:1895 +#: htdocs/luci-static/resources/view/fchomo/client.js:1109 +#: htdocs/luci-static/resources/view/fchomo/node.js:1937 msgid "Health check URL" msgstr "健康检查 URL" -#: htdocs/luci-static/resources/view/fchomo/client.js:1130 -#: htdocs/luci-static/resources/view/fchomo/node.js:1925 +#: htdocs/luci-static/resources/view/fchomo/client.js:1138 +#: htdocs/luci-static/resources/view/fchomo/node.js:1967 msgid "Health check expected status" msgstr "健康检查预期状态" -#: htdocs/luci-static/resources/view/fchomo/client.js:1110 -#: htdocs/luci-static/resources/view/fchomo/node.js:1905 +#: htdocs/luci-static/resources/view/fchomo/client.js:1118 +#: htdocs/luci-static/resources/view/fchomo/node.js:1947 msgid "Health check interval" msgstr "健康检查间隔" -#: htdocs/luci-static/resources/view/fchomo/client.js:1117 -#: htdocs/luci-static/resources/view/fchomo/node.js:1912 +#: htdocs/luci-static/resources/view/fchomo/client.js:1125 +#: htdocs/luci-static/resources/view/fchomo/node.js:1954 msgid "Health check timeout" msgstr "健康检查超时" -#: htdocs/luci-static/resources/view/fchomo/client.js:1013 -#: htdocs/luci-static/resources/view/fchomo/node.js:1620 +#: htdocs/luci-static/resources/view/fchomo/client.js:1021 +#: htdocs/luci-static/resources/view/fchomo/node.js:1660 msgid "Health fields" msgstr "健康字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:589 +#: htdocs/luci-static/resources/view/fchomo/node.js:606 msgid "Heartbeat interval" msgstr "心跳间隔" -#: htdocs/luci-static/resources/view/fchomo/client.js:1181 +#: htdocs/luci-static/resources/view/fchomo/client.js:1189 msgid "Hidden" msgstr "隐藏" #: htdocs/luci-static/resources/fchomo/listeners.js:575 -#: htdocs/luci-static/resources/view/fchomo/node.js:852 +#: htdocs/luci-static/resources/view/fchomo/node.js:889 msgid "Host that supports TLS 1.3" msgstr "主机名称 (支援 TLS 1.3)" -#: htdocs/luci-static/resources/view/fchomo/node.js:349 +#: htdocs/luci-static/resources/view/fchomo/node.js:361 msgid "Host-key" msgstr "主机密钥" -#: htdocs/luci-static/resources/view/fchomo/node.js:344 +#: htdocs/luci-static/resources/view/fchomo/node.js:356 msgid "Host-key algorithms" msgstr "主机密钥算法" -#: htdocs/luci-static/resources/view/fchomo/node.js:492 +#: htdocs/luci-static/resources/view/fchomo/node.js:504 msgid "Host/SNI override" msgstr "主机/SNI 覆盖" @@ -1401,7 +1408,7 @@ msgid "Hosts" msgstr "" #: htdocs/luci-static/resources/fchomo.js:165 -#: htdocs/luci-static/resources/fchomo.js:200 +#: htdocs/luci-static/resources/fchomo.js:201 msgid "Hysteria2" msgstr "" @@ -1414,21 +1421,21 @@ msgstr "Hysteria2 Realm" msgid "Hysteria2 Realm fields" msgstr "Hysteria2 Realm 字段" -#: htdocs/luci-static/resources/view/fchomo/client.js:1816 -#: htdocs/luci-static/resources/view/fchomo/client.js:1829 +#: htdocs/luci-static/resources/view/fchomo/client.js:1827 +#: htdocs/luci-static/resources/view/fchomo/client.js:1840 msgid "IP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1827 +#: htdocs/luci-static/resources/view/fchomo/client.js:1838 msgid "IP CIDR" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:551 +#: htdocs/luci-static/resources/view/fchomo/node.js:563 msgid "IP override" msgstr "IP 覆写" -#: htdocs/luci-static/resources/view/fchomo/node.js:1497 -#: htdocs/luci-static/resources/view/fchomo/node.js:1881 +#: htdocs/luci-static/resources/view/fchomo/node.js:1536 +#: htdocs/luci-static/resources/view/fchomo/node.js:1923 msgid "IP version" msgstr "IP 版本" @@ -1440,20 +1447,20 @@ msgstr "仅 IPv4" msgid "IPv6 only" msgstr "仅 IPv6" -#: htdocs/luci-static/resources/view/fchomo/client.js:1389 +#: htdocs/luci-static/resources/view/fchomo/client.js:1400 #: htdocs/luci-static/resources/view/fchomo/global.js:436 msgid "IPv6 support" msgstr "IPv6 支持" -#: htdocs/luci-static/resources/view/fchomo/client.js:1187 +#: htdocs/luci-static/resources/view/fchomo/client.js:1195 msgid "Icon" msgstr "图标" -#: htdocs/luci-static/resources/view/fchomo/node.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:650 msgid "Idle session check interval" msgstr "闲置会话检查间隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:640 +#: htdocs/luci-static/resources/view/fchomo/node.js:657 msgid "Idle session timeout" msgstr "闲置会话超时" @@ -1461,7 +1468,7 @@ msgstr "闲置会话超时" msgid "Idle timeout" msgstr "闲置超时" -#: htdocs/luci-static/resources/fchomo.js:1437 +#: htdocs/luci-static/resources/fchomo.js:1464 msgid "If All ports is selected, uncheck others" msgstr "如果选择了“所有端口”,则取消选中“其他”" @@ -1473,24 +1480,24 @@ msgstr "如果选择了“阻止”,则取消选中“其他”" msgid "Ignore client bandwidth" msgstr "忽略客户端带宽" -#: htdocs/luci-static/resources/fchomo.js:736 +#: htdocs/luci-static/resources/fchomo.js:738 msgid "Import" msgstr "导入" -#: htdocs/luci-static/resources/view/fchomo/client.js:949 -#: htdocs/luci-static/resources/view/fchomo/client.js:1005 -#: htdocs/luci-static/resources/view/fchomo/client.js:1210 -#: htdocs/luci-static/resources/view/fchomo/client.js:1261 -#: htdocs/luci-static/resources/view/fchomo/client.js:1329 -#: htdocs/luci-static/resources/view/fchomo/client.js:1353 -#: htdocs/luci-static/resources/view/fchomo/client.js:1454 -#: htdocs/luci-static/resources/view/fchomo/client.js:1492 -#: htdocs/luci-static/resources/view/fchomo/client.js:1706 -#: htdocs/luci-static/resources/view/fchomo/client.js:1723 -#: htdocs/luci-static/resources/view/fchomo/client.js:1758 -#: htdocs/luci-static/resources/view/fchomo/client.js:1779 -#: htdocs/luci-static/resources/view/fchomo/node.js:1522 -#: htdocs/luci-static/resources/view/fchomo/node.js:1606 +#: htdocs/luci-static/resources/view/fchomo/client.js:957 +#: htdocs/luci-static/resources/view/fchomo/client.js:1013 +#: htdocs/luci-static/resources/view/fchomo/client.js:1218 +#: htdocs/luci-static/resources/view/fchomo/client.js:1269 +#: htdocs/luci-static/resources/view/fchomo/client.js:1337 +#: htdocs/luci-static/resources/view/fchomo/client.js:1361 +#: htdocs/luci-static/resources/view/fchomo/client.js:1465 +#: htdocs/luci-static/resources/view/fchomo/client.js:1503 +#: htdocs/luci-static/resources/view/fchomo/client.js:1717 +#: htdocs/luci-static/resources/view/fchomo/client.js:1734 +#: htdocs/luci-static/resources/view/fchomo/client.js:1769 +#: htdocs/luci-static/resources/view/fchomo/client.js:1790 +#: htdocs/luci-static/resources/view/fchomo/node.js:1562 +#: htdocs/luci-static/resources/view/fchomo/node.js:1646 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:154 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:249 msgid "Import mihomo config" @@ -1504,55 +1511,55 @@ msgstr "导入规则集链接" #: htdocs/luci-static/resources/fchomo/listeners.js:176 #: htdocs/luci-static/resources/fchomo/listeners.js:182 -#: htdocs/luci-static/resources/view/fchomo/node.js:298 -#: htdocs/luci-static/resources/view/fchomo/node.js:304 -#: htdocs/luci-static/resources/view/fchomo/node.js:1839 -#: htdocs/luci-static/resources/view/fchomo/node.js:1845 +#: htdocs/luci-static/resources/view/fchomo/node.js:310 +#: htdocs/luci-static/resources/view/fchomo/node.js:316 +#: htdocs/luci-static/resources/view/fchomo/node.js:1881 +#: htdocs/luci-static/resources/view/fchomo/node.js:1887 msgid "In Mbps." msgstr "单位为 Mbps。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1696 +#: htdocs/luci-static/resources/view/fchomo/node.js:1736 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:392 msgid "In bytes. %s will be used if empty." msgstr "单位为字节。留空则使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:590 -#: htdocs/luci-static/resources/view/fchomo/node.js:597 +#: htdocs/luci-static/resources/view/fchomo/node.js:607 +#: htdocs/luci-static/resources/view/fchomo/node.js:614 msgid "In millisecond." msgstr "单位为毫秒。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1118 -#: htdocs/luci-static/resources/view/fchomo/client.js:1147 -#: htdocs/luci-static/resources/view/fchomo/node.js:1913 +#: htdocs/luci-static/resources/view/fchomo/client.js:1126 +#: htdocs/luci-static/resources/view/fchomo/client.js:1155 +#: htdocs/luci-static/resources/view/fchomo/node.js:1955 msgid "In millisecond. %s will be used if empty." msgstr "单位为毫秒。留空则使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1350 +#: htdocs/luci-static/resources/view/fchomo/node.js:1385 msgid "In milliseconds." msgstr "单位为毫秒。" #: htdocs/luci-static/resources/fchomo/listeners.js:418 #: htdocs/luci-static/resources/fchomo/listeners.js:487 #: htdocs/luci-static/resources/fchomo/listeners.js:494 -#: htdocs/luci-static/resources/view/fchomo/node.js:634 -#: htdocs/luci-static/resources/view/fchomo/node.js:641 -#: htdocs/luci-static/resources/view/fchomo/node.js:1297 +#: htdocs/luci-static/resources/view/fchomo/node.js:651 +#: htdocs/luci-static/resources/view/fchomo/node.js:658 +#: htdocs/luci-static/resources/view/fchomo/node.js:1332 msgid "In seconds." msgstr "单位为秒。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1111 +#: htdocs/luci-static/resources/view/fchomo/client.js:1119 #: htdocs/luci-static/resources/view/fchomo/global.js:446 #: htdocs/luci-static/resources/view/fchomo/global.js:451 #: htdocs/luci-static/resources/view/fchomo/global.js:536 -#: htdocs/luci-static/resources/view/fchomo/node.js:292 -#: htdocs/luci-static/resources/view/fchomo/node.js:1702 -#: htdocs/luci-static/resources/view/fchomo/node.js:1906 +#: htdocs/luci-static/resources/view/fchomo/node.js:304 +#: htdocs/luci-static/resources/view/fchomo/node.js:1742 +#: htdocs/luci-static/resources/view/fchomo/node.js:1948 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:398 msgid "In seconds. %s will be used if empty." msgstr "单位为秒。留空则使用 %s。" -#: htdocs/luci-static/resources/fchomo/listeners.js:739 -#: htdocs/luci-static/resources/view/fchomo/node.js:971 +#: htdocs/luci-static/resources/fchomo/listeners.js:743 +#: htdocs/luci-static/resources/view/fchomo/node.js:1009 msgid "" "In the order of one Padding-Length and one Padding-" "Interval, infinite concatenation." @@ -1566,27 +1573,27 @@ msgstr "" msgid "Inbound" msgstr "入站" -#: htdocs/luci-static/resources/view/fchomo/client.js:1071 +#: htdocs/luci-static/resources/view/fchomo/client.js:1079 msgid "Include all" msgstr "引入所有" -#: htdocs/luci-static/resources/view/fchomo/client.js:1076 +#: htdocs/luci-static/resources/view/fchomo/client.js:1084 msgid "Include all node" msgstr "引入所有节点" -#: htdocs/luci-static/resources/view/fchomo/client.js:1081 +#: htdocs/luci-static/resources/view/fchomo/client.js:1089 msgid "Include all provider" msgstr "引入所有供应商" -#: htdocs/luci-static/resources/view/fchomo/client.js:1082 +#: htdocs/luci-static/resources/view/fchomo/client.js:1090 msgid "Includes all Provider." msgstr "引入所有供应商。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1072 +#: htdocs/luci-static/resources/view/fchomo/client.js:1080 msgid "Includes all Proxy Node and Provider." msgstr "引入所有代理节点及供应商。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1077 +#: htdocs/luci-static/resources/view/fchomo/client.js:1085 msgid "Includes all Proxy Node." msgstr "引入所有代理节点。" @@ -1594,62 +1601,62 @@ msgstr "引入所有代理节点。" msgid "Info" msgstr "信息" -#: htdocs/luci-static/resources/view/fchomo/node.js:1635 +#: htdocs/luci-static/resources/view/fchomo/node.js:1675 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:288 msgid "Inline" msgstr "内嵌" -#: htdocs/luci-static/resources/view/fchomo/global.js:748 +#: htdocs/luci-static/resources/view/fchomo/global.js:751 msgid "Interface Control" msgstr "接口控制" #: htdocs/luci-static/resources/fchomo.js:52 #: htdocs/luci-static/resources/fchomo.js:59 #: htdocs/luci-static/resources/fchomo.js:172 -#: htdocs/luci-static/resources/fchomo.js:375 -#: htdocs/luci-static/resources/view/fchomo/node.js:1855 +#: htdocs/luci-static/resources/fchomo.js:377 +#: htdocs/luci-static/resources/view/fchomo/node.js:1897 msgid "Keep default" msgstr "保持缺省" -#: htdocs/luci-static/resources/view/fchomo/node.js:1386 +#: htdocs/luci-static/resources/view/fchomo/node.js:1421 msgid "Keep-alive period" msgstr "Keep-alive 周期" #: htdocs/luci-static/resources/fchomo/listeners.js:296 -#: htdocs/luci-static/resources/view/fchomo/node.js:408 +#: htdocs/luci-static/resources/view/fchomo/node.js:420 msgid "Key" msgstr "密钥" -#: htdocs/luci-static/resources/fchomo/listeners.js:976 -#: htdocs/luci-static/resources/view/fchomo/node.js:1138 +#: htdocs/luci-static/resources/fchomo/listeners.js:987 +#: htdocs/luci-static/resources/view/fchomo/node.js:1173 msgid "Key path" msgstr "证书路径" -#: htdocs/luci-static/resources/fchomo/listeners.js:758 +#: htdocs/luci-static/resources/fchomo/listeners.js:762 msgid "Keypairs" msgstr "密钥对" #: htdocs/luci-static/resources/fchomo/listeners.js:128 -#: htdocs/luci-static/resources/view/fchomo/client.js:1016 -#: htdocs/luci-static/resources/view/fchomo/client.js:1267 -#: htdocs/luci-static/resources/view/fchomo/client.js:1359 -#: htdocs/luci-static/resources/view/fchomo/client.js:1498 -#: htdocs/luci-static/resources/view/fchomo/client.js:1729 -#: htdocs/luci-static/resources/view/fchomo/client.js:1785 +#: htdocs/luci-static/resources/view/fchomo/client.js:1024 +#: htdocs/luci-static/resources/view/fchomo/client.js:1275 +#: htdocs/luci-static/resources/view/fchomo/client.js:1367 +#: htdocs/luci-static/resources/view/fchomo/client.js:1509 +#: htdocs/luci-static/resources/view/fchomo/client.js:1740 +#: htdocs/luci-static/resources/view/fchomo/client.js:1796 #: htdocs/luci-static/resources/view/fchomo/node.js:241 -#: htdocs/luci-static/resources/view/fchomo/node.js:1623 -#: htdocs/luci-static/resources/view/fchomo/node.js:1974 +#: htdocs/luci-static/resources/view/fchomo/node.js:1663 +#: htdocs/luci-static/resources/view/fchomo/node.js:2016 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:267 msgid "Label" msgstr "标签" -#: htdocs/luci-static/resources/view/fchomo/client.js:1124 -#: htdocs/luci-static/resources/view/fchomo/node.js:1919 +#: htdocs/luci-static/resources/view/fchomo/client.js:1132 +#: htdocs/luci-static/resources/view/fchomo/node.js:1961 msgid "Lazy" msgstr "懒惰状态" #: htdocs/luci-static/resources/fchomo/listeners.js:437 -#: htdocs/luci-static/resources/view/fchomo/node.js:479 +#: htdocs/luci-static/resources/view/fchomo/node.js:491 msgid "Legacy" msgstr "传统" @@ -1665,8 +1672,8 @@ msgstr "" msgid "Less compatibility and sometimes better performance." msgstr "有时性能更好。" -#: htdocs/luci-static/resources/fchomo/listeners.js:957 -#: htdocs/luci-static/resources/view/fchomo/node.js:1057 +#: htdocs/luci-static/resources/fchomo/listeners.js:968 +#: htdocs/luci-static/resources/view/fchomo/node.js:1095 msgid "List of supported application level protocols, in order of preference." msgstr "支持的应用层协议协商列表,按顺序排列。" @@ -1678,12 +1685,12 @@ msgstr "监听地址" msgid "Listen fields" msgstr "监听字段" -#: htdocs/luci-static/resources/view/fchomo/global.js:750 +#: htdocs/luci-static/resources/view/fchomo/global.js:753 msgid "Listen interfaces" msgstr "监听接口" #: htdocs/luci-static/resources/fchomo/listeners.js:153 -#: htdocs/luci-static/resources/view/fchomo/client.js:1384 +#: htdocs/luci-static/resources/view/fchomo/client.js:1392 msgid "Listen port" msgstr "监听端口" @@ -1691,22 +1698,26 @@ msgstr "监听端口" msgid "Listen ports" msgstr "监听端口" -#: htdocs/luci-static/resources/fchomo.js:242 +#: htdocs/luci-static/resources/view/fchomo/client.js:1397 +msgid "Listen routing mark (Fwmark)" +msgstr "监听路由标记 (Fwmark)" + +#: htdocs/luci-static/resources/fchomo.js:243 msgid "Load balance" msgstr "负载均衡" -#: htdocs/luci-static/resources/view/fchomo/node.js:1633 +#: htdocs/luci-static/resources/view/fchomo/node.js:1673 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:286 msgid "Local" msgstr "本地" -#: htdocs/luci-static/resources/view/fchomo/node.js:727 -#: htdocs/luci-static/resources/view/fchomo/node.js:770 +#: htdocs/luci-static/resources/view/fchomo/node.js:744 +#: htdocs/luci-static/resources/view/fchomo/node.js:807 msgid "Local IPv6 address" msgstr "本地 IPv6 地址" -#: htdocs/luci-static/resources/view/fchomo/node.js:719 -#: htdocs/luci-static/resources/view/fchomo/node.js:762 +#: htdocs/luci-static/resources/view/fchomo/node.js:736 +#: htdocs/luci-static/resources/view/fchomo/node.js:799 msgid "Local address" msgstr "本地地址" @@ -1730,24 +1741,24 @@ msgstr "日志等级" #: htdocs/luci-static/resources/fchomo/listeners.js:373 #: htdocs/luci-static/resources/fchomo/listeners.js:374 #: htdocs/luci-static/resources/fchomo/listeners.js:379 -#: htdocs/luci-static/resources/view/fchomo/node.js:432 -#: htdocs/luci-static/resources/view/fchomo/node.js:433 -#: htdocs/luci-static/resources/view/fchomo/node.js:434 -#: htdocs/luci-static/resources/view/fchomo/node.js:439 +#: htdocs/luci-static/resources/view/fchomo/node.js:444 +#: htdocs/luci-static/resources/view/fchomo/node.js:445 +#: htdocs/luci-static/resources/view/fchomo/node.js:446 +#: htdocs/luci-static/resources/view/fchomo/node.js:451 msgid "Low-entropy data stream" msgstr "低熵数据流" -#: htdocs/luci-static/resources/fchomo.js:450 +#: htdocs/luci-static/resources/fchomo.js:452 msgid "Lowercase only" msgstr "仅限小写" #: htdocs/luci-static/resources/view/fchomo/global.js:523 -#: htdocs/luci-static/resources/view/fchomo/node.js:733 -#: htdocs/luci-static/resources/view/fchomo/node.js:816 +#: htdocs/luci-static/resources/view/fchomo/node.js:750 +#: htdocs/luci-static/resources/view/fchomo/node.js:853 msgid "MTU" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:202 +#: htdocs/luci-static/resources/fchomo.js:203 msgid "Masque" msgstr "" @@ -1755,70 +1766,70 @@ msgstr "" msgid "Masquerade" msgstr "伪装" -#: htdocs/luci-static/resources/view/fchomo/client.js:850 +#: htdocs/luci-static/resources/view/fchomo/client.js:858 msgid "Match domain. Support wildcards." msgstr "匹配域名。支持通配符。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1833 +#: htdocs/luci-static/resources/view/fchomo/client.js:1844 msgid "Match domain. Support wildcards.
" msgstr "匹配域名。支持通配符。
" -#: htdocs/luci-static/resources/view/fchomo/client.js:855 +#: htdocs/luci-static/resources/view/fchomo/client.js:863 msgid "Match geosite." msgstr "匹配 geosite。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1824 +#: htdocs/luci-static/resources/view/fchomo/client.js:1835 msgid "Match geosite.
" msgstr "匹配 geosite。
" -#: htdocs/luci-static/resources/view/fchomo/client.js:1815 +#: htdocs/luci-static/resources/view/fchomo/client.js:1826 msgid "Match response with geoip.
" msgstr "匹配响应通过 geoip。
" -#: htdocs/luci-static/resources/view/fchomo/client.js:1828 +#: htdocs/luci-static/resources/view/fchomo/client.js:1839 msgid "Match response with ipcidr.
" msgstr "匹配响应通过 ipcidr
" -#: htdocs/luci-static/resources/view/fchomo/client.js:860 +#: htdocs/luci-static/resources/view/fchomo/client.js:868 msgid "Match rule set." msgstr "匹配规则集。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1303 +#: htdocs/luci-static/resources/view/fchomo/node.js:1338 msgid "Max Early Data" msgstr "前置数据最大值" #: htdocs/luci-static/resources/fchomo/listeners.js:480 -#: htdocs/luci-static/resources/view/fchomo/node.js:576 +#: htdocs/luci-static/resources/view/fchomo/node.js:588 msgid "Max UDP relay packet size" msgstr "UDP 中继数据包最大尺寸" -#: htdocs/luci-static/resources/fchomo/listeners.js:1175 +#: htdocs/luci-static/resources/fchomo/listeners.js:1186 msgid "Max buffered posts" msgstr "POST 最大缓冲" -#: htdocs/luci-static/resources/view/fchomo/node.js:1361 +#: htdocs/luci-static/resources/view/fchomo/node.js:1396 msgid "Max concurrency" msgstr "最大并发" -#: htdocs/luci-static/resources/view/fchomo/node.js:1366 +#: htdocs/luci-static/resources/view/fchomo/node.js:1401 msgid "Max connections" msgstr "最大连接数" -#: htdocs/luci-static/resources/view/fchomo/client.js:1138 +#: htdocs/luci-static/resources/view/fchomo/client.js:1146 msgid "Max count of failures" msgstr "最大失败次数" #: htdocs/luci-static/resources/fchomo/listeners.js:181 -#: htdocs/luci-static/resources/view/fchomo/node.js:303 +#: htdocs/luci-static/resources/view/fchomo/node.js:315 msgid "Max download speed" msgstr "最大下载速度" -#: htdocs/luci-static/resources/fchomo/listeners.js:1186 -#: htdocs/luci-static/resources/view/fchomo/node.js:1343 +#: htdocs/luci-static/resources/fchomo/listeners.js:1197 +#: htdocs/luci-static/resources/view/fchomo/node.js:1378 msgid "Max each POST bytes" msgstr "POST 最大字节数" -#: htdocs/luci-static/resources/view/fchomo/node.js:603 +#: htdocs/luci-static/resources/view/fchomo/node.js:620 msgid "Max open streams" msgstr "限制打开流的数量" @@ -1830,29 +1841,29 @@ msgstr "最大 Realms 总数" msgid "Max realms per client IP" msgstr "每客户端 IP 最大 Realms 总数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 msgid "Max request times" msgstr "最大请求次数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1381 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 msgid "Max reusable seconds" msgstr "最大可复用秒数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1371 +#: htdocs/luci-static/resources/view/fchomo/node.js:1406 msgid "Max reuse times" msgstr "最大复用次数" #: htdocs/luci-static/resources/fchomo/listeners.js:175 -#: htdocs/luci-static/resources/view/fchomo/node.js:297 +#: htdocs/luci-static/resources/view/fchomo/node.js:309 msgid "Max upload speed" msgstr "最大上传速度" -#: htdocs/luci-static/resources/view/fchomo/node.js:1407 -#: htdocs/luci-static/resources/view/fchomo/node.js:1427 +#: htdocs/luci-static/resources/view/fchomo/node.js:1442 +#: htdocs/luci-static/resources/view/fchomo/node.js:1462 msgid "Maximum connections" msgstr "最大连接数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1425 +#: htdocs/luci-static/resources/view/fchomo/node.js:1460 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." @@ -1861,27 +1872,27 @@ msgstr "" "%s 冲突。" #: htdocs/luci-static/resources/fchomo/listeners.js:402 -#: htdocs/luci-static/resources/view/fchomo/node.js:451 +#: htdocs/luci-static/resources/view/fchomo/node.js:463 msgid "Maximum padding rate" msgstr "最大填充率" #: htdocs/luci-static/resources/fchomo/listeners.js:410 -#: htdocs/luci-static/resources/view/fchomo/node.js:459 +#: htdocs/luci-static/resources/view/fchomo/node.js:471 msgid "" "Maximum padding rate must be greater than or equal to the minimum padding " "rate." msgstr "最大填充率必须大于等于最小填充率。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1424 +#: htdocs/luci-static/resources/view/fchomo/node.js:1459 msgid "Maximum streams" msgstr "最大流数量" #: htdocs/luci-static/resources/fchomo.js:157 -#: htdocs/luci-static/resources/fchomo.js:192 +#: htdocs/luci-static/resources/fchomo.js:193 msgid "Mieru" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:904 +#: htdocs/luci-static/resources/view/fchomo/client.js:912 #: htdocs/luci-static/resources/view/fchomo/log.js:149 #: htdocs/luci-static/resources/view/fchomo/log.js:154 msgid "Mihomo client" @@ -1893,26 +1904,26 @@ msgstr "Mihomo 客户端" msgid "Mihomo server" msgstr "Mihomo 服务端" -#: htdocs/luci-static/resources/view/fchomo/node.js:647 +#: htdocs/luci-static/resources/view/fchomo/node.js:664 msgid "Min of idle sessions to keep" msgstr "要保留的最少闲置会话数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1349 +#: htdocs/luci-static/resources/view/fchomo/node.js:1384 msgid "Min posts interval" msgstr "POST 请求最小间隔时间" -#: htdocs/luci-static/resources/view/fchomo/node.js:1416 +#: htdocs/luci-static/resources/view/fchomo/node.js:1451 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "在打开新连接之前,连接中的最小多路复用流数量。" #: htdocs/luci-static/resources/fchomo/listeners.js:395 -#: htdocs/luci-static/resources/view/fchomo/node.js:444 +#: htdocs/luci-static/resources/view/fchomo/node.js:456 msgid "Minimum padding rate" msgstr "最小填充率" -#: htdocs/luci-static/resources/view/fchomo/node.js:1415 -#: htdocs/luci-static/resources/view/fchomo/node.js:1427 +#: htdocs/luci-static/resources/view/fchomo/node.js:1450 +#: htdocs/luci-static/resources/view/fchomo/node.js:1462 msgid "Minimum streams" msgstr "最小流数量" @@ -1929,7 +1940,7 @@ msgstr "混合 系统 TCP 栈和 gVisor UDP 栈。" msgid "Mixed port" msgstr "混合端口" -#: htdocs/luci-static/resources/view/fchomo/node.js:1393 +#: htdocs/luci-static/resources/view/fchomo/node.js:1428 msgid "Multiplex" msgstr "多路复用" @@ -1938,20 +1949,20 @@ msgstr "多路复用" msgid "Multiplex fields" msgstr "多路复用字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:385 +#: htdocs/luci-static/resources/view/fchomo/node.js:397 msgid "Multiplexing" msgstr "多路复用" -#: htdocs/luci-static/resources/view/fchomo/client.js:614 -#: htdocs/luci-static/resources/view/fchomo/client.js:689 +#: htdocs/luci-static/resources/view/fchomo/client.js:622 +#: htdocs/luci-static/resources/view/fchomo/client.js:697 msgid "NOT" msgstr "NOT" -#: htdocs/luci-static/resources/fchomo/listeners.js:612 +#: htdocs/luci-static/resources/fchomo/listeners.js:616 msgid "Name of the Proxy group as outbound." msgstr "出站代理组的名称。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1708 +#: htdocs/luci-static/resources/view/fchomo/node.js:1748 msgid "Name of the Proxy group to download provider." msgstr "用于下载供应商订阅的代理组名称。" @@ -1959,23 +1970,27 @@ msgstr "用于下载供应商订阅的代理组名称。" msgid "Name of the Proxy group to download rule set." msgstr "用于下载规则集订阅的代理组名称。" -#: htdocs/luci-static/resources/fchomo/listeners.js:606 +#: htdocs/luci-static/resources/fchomo/listeners.js:610 msgid "Name of the Sub rule used for inbound matching." msgstr "用于入站匹配的子规则名称。" -#: htdocs/luci-static/resources/view/fchomo/node.js:560 +#: htdocs/luci-static/resources/view/fchomo/node.js:572 msgid "Native UDP" msgstr "原生 UDP" -#: htdocs/luci-static/resources/fchomo.js:392 +#: htdocs/luci-static/resources/fchomo.js:394 msgid "Native appearance" msgstr "原生外观" -#: htdocs/luci-static/resources/fchomo/listeners.js:638 +#: htdocs/luci-static/resources/view/fchomo/node.js:756 +msgid "Network" +msgstr "" + +#: htdocs/luci-static/resources/fchomo/listeners.js:642 msgid "Network type" msgstr "网络类型" -#: htdocs/luci-static/resources/view/fchomo/node.js:1857 +#: htdocs/luci-static/resources/view/fchomo/node.js:1899 msgid "No" msgstr "" @@ -1983,24 +1998,24 @@ msgstr "" msgid "No Authentication IP ranges" msgstr "无需认证的 IP 范围" -#: htdocs/luci-static/resources/fchomo/listeners.js:1170 +#: htdocs/luci-static/resources/fchomo/listeners.js:1181 msgid "No SSE header" msgstr "无 SSE header" -#: htdocs/luci-static/resources/view/fchomo/client.js:1518 +#: htdocs/luci-static/resources/view/fchomo/client.js:1529 msgid "No add'l params" msgstr "无附加参数" -#: htdocs/luci-static/resources/view/fchomo/node.js:1333 +#: htdocs/luci-static/resources/view/fchomo/node.js:1368 msgid "No gRPC header" msgstr "无 gRPC header" -#: htdocs/luci-static/resources/view/fchomo/client.js:1125 -#: htdocs/luci-static/resources/view/fchomo/node.js:1920 +#: htdocs/luci-static/resources/view/fchomo/client.js:1133 +#: htdocs/luci-static/resources/view/fchomo/node.js:1962 msgid "No testing is performed when this provider node is not in use." msgstr "当此供应商的节点未使用时,不执行任何测试。" -#: htdocs/luci-static/resources/fchomo.js:697 +#: htdocs/luci-static/resources/fchomo.js:699 msgid "No valid %s found." msgstr "未找到有效的%s。" @@ -2008,31 +2023,31 @@ msgstr "未找到有效的%s。" msgid "No valid rule-set link found." msgstr "未找到有效的规则集链接。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1043 +#: htdocs/luci-static/resources/view/fchomo/client.js:1051 #: htdocs/luci-static/resources/view/fchomo/node.js:228 msgid "Node" msgstr "节点" -#: htdocs/luci-static/resources/view/fchomo/client.js:1170 -#: htdocs/luci-static/resources/view/fchomo/node.js:1940 +#: htdocs/luci-static/resources/view/fchomo/client.js:1178 +#: htdocs/luci-static/resources/view/fchomo/node.js:1982 msgid "Node exclude filter" msgstr "排除节点" -#: htdocs/luci-static/resources/view/fchomo/client.js:1175 -#: htdocs/luci-static/resources/view/fchomo/node.js:1947 +#: htdocs/luci-static/resources/view/fchomo/client.js:1183 +#: htdocs/luci-static/resources/view/fchomo/node.js:1989 msgid "Node exclude type" msgstr "排除节点类型" -#: htdocs/luci-static/resources/view/fchomo/client.js:1165 -#: htdocs/luci-static/resources/view/fchomo/node.js:1934 +#: htdocs/luci-static/resources/view/fchomo/client.js:1173 +#: htdocs/luci-static/resources/view/fchomo/node.js:1976 msgid "Node filter" msgstr "过滤节点" -#: htdocs/luci-static/resources/view/fchomo/client.js:1146 +#: htdocs/luci-static/resources/view/fchomo/client.js:1154 msgid "Node switch tolerance" msgstr "节点切换容差" -#: htdocs/luci-static/resources/fchomo.js:419 +#: htdocs/luci-static/resources/fchomo.js:421 msgid "None" msgstr "无" @@ -2040,70 +2055,70 @@ msgstr "无" msgid "Not Installed" msgstr "未安装" -#: htdocs/luci-static/resources/fchomo.js:1215 +#: htdocs/luci-static/resources/fchomo.js:1242 msgid "Not Running" msgstr "未在运行" -#: htdocs/luci-static/resources/view/fchomo/node.js:505 +#: htdocs/luci-static/resources/view/fchomo/node.js:517 msgid "OFF" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:507 +#: htdocs/luci-static/resources/view/fchomo/node.js:519 msgid "ON" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:568 -#: htdocs/luci-static/resources/view/fchomo/node.js:845 +#: htdocs/luci-static/resources/view/fchomo/node.js:882 msgid "Obfs Mode" msgstr "Obfs 模式" #: htdocs/luci-static/resources/fchomo/listeners.js:213 -#: htdocs/luci-static/resources/view/fchomo/node.js:329 +#: htdocs/luci-static/resources/view/fchomo/node.js:341 msgid "Obfuscate maximum packet size" msgstr "混淆最大数据包大小" #: htdocs/luci-static/resources/fchomo/listeners.js:208 -#: htdocs/luci-static/resources/view/fchomo/node.js:324 +#: htdocs/luci-static/resources/view/fchomo/node.js:336 msgid "Obfuscate minimum packet size" msgstr "混淆最小数据包大小" #: htdocs/luci-static/resources/fchomo/listeners.js:200 -#: htdocs/luci-static/resources/view/fchomo/node.js:316 +#: htdocs/luci-static/resources/view/fchomo/node.js:328 msgid "Obfuscate password" msgstr "混淆密码" #: htdocs/luci-static/resources/fchomo/listeners.js:193 #: htdocs/luci-static/resources/fchomo/listeners.js:370 -#: htdocs/luci-static/resources/view/fchomo/node.js:309 -#: htdocs/luci-static/resources/view/fchomo/node.js:430 +#: htdocs/luci-static/resources/view/fchomo/node.js:321 +#: htdocs/luci-static/resources/view/fchomo/node.js:442 msgid "Obfuscate type" msgstr "混淆类型" #: htdocs/luci-static/resources/fchomo/listeners.js:371 #: htdocs/luci-static/resources/fchomo/listeners.js:372 -#: htdocs/luci-static/resources/view/fchomo/node.js:431 -#: htdocs/luci-static/resources/view/fchomo/node.js:432 +#: htdocs/luci-static/resources/view/fchomo/node.js:443 +#: htdocs/luci-static/resources/view/fchomo/node.js:444 msgid "Obfuscated as %s" msgstr "混淆为%s" -#: htdocs/luci-static/resources/view/fchomo/global.js:901 +#: htdocs/luci-static/resources/view/fchomo/global.js:904 msgid "One or more numbers in the range 0-63 separated by commas" msgstr "0-63 范围内的一个或多个数字,以逗号分隔" -#: htdocs/luci-static/resources/fchomo/listeners.js:897 +#: htdocs/luci-static/resources/fchomo/listeners.js:962 msgid "Only applicable when %s are used as a frontend." msgstr "仅当 %s 用作前端时适用。" #: htdocs/luci-static/resources/fchomo/listeners.js:379 -#: htdocs/luci-static/resources/view/fchomo/node.js:439 +#: htdocs/luci-static/resources/view/fchomo/node.js:451 msgid "Only applies to the %s." msgstr "只对%s生效。" -#: htdocs/luci-static/resources/view/fchomo/global.js:751 +#: htdocs/luci-static/resources/view/fchomo/global.js:754 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "只处理来自指定接口的流量。留空表示全部。" -#: htdocs/luci-static/resources/fchomo.js:1209 +#: htdocs/luci-static/resources/fchomo.js:1236 msgid "Open Dashboard" msgstr "打开面板" @@ -2115,33 +2130,33 @@ msgstr "运行模式" msgid "Outbound" msgstr "出站" -#: htdocs/luci-static/resources/view/fchomo/global.js:676 -#: htdocs/luci-static/resources/view/fchomo/global.js:714 +#: htdocs/luci-static/resources/view/fchomo/global.js:679 +#: htdocs/luci-static/resources/view/fchomo/global.js:717 msgid "Override destination" msgstr "覆盖目标地址" -#: htdocs/luci-static/resources/view/fchomo/client.js:1012 -#: htdocs/luci-static/resources/view/fchomo/node.js:1619 +#: htdocs/luci-static/resources/view/fchomo/client.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1659 msgid "Override fields" msgstr "覆盖字段" -#: htdocs/luci-static/resources/view/fchomo/node.js:552 +#: htdocs/luci-static/resources/view/fchomo/node.js:564 msgid "Override the IP address of the server that DNS response." msgstr "覆盖 DNS 回应的服务器的 IP 地址。" -#: htdocs/luci-static/resources/view/fchomo/client.js:883 +#: htdocs/luci-static/resources/view/fchomo/client.js:891 msgid "Override the Proxy group of DNS server." msgstr "覆盖 DNS 服务器所使用的代理组。" -#: htdocs/luci-static/resources/view/fchomo/global.js:677 +#: htdocs/luci-static/resources/view/fchomo/global.js:680 msgid "Override the connection destination address with the sniffed domain." msgstr "使用嗅探到的域名覆盖连接目标。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1622 +#: htdocs/luci-static/resources/view/fchomo/client.js:1633 msgid "Override the existing ECS in original request." msgstr "覆盖原始请求中已有的 ECS。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1165 +#: htdocs/luci-static/resources/view/fchomo/node.js:1200 msgid "Overrides the domain name used for HTTPS record queries." msgstr "覆盖用于 HTTPS 记录查询的域名。" @@ -2149,19 +2164,19 @@ msgstr "覆盖用于 HTTPS 记录查询的域名。" msgid "Overview" msgstr "概览" -#: htdocs/luci-static/resources/view/fchomo/node.js:1260 +#: htdocs/luci-static/resources/view/fchomo/node.js:1295 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1261 +#: htdocs/luci-static/resources/view/fchomo/node.js:1296 msgid "PUT" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:696 +#: htdocs/luci-static/resources/view/fchomo/node.js:713 msgid "Packet encoding" msgstr "数据包编码" -#: htdocs/luci-static/resources/view/fchomo/node.js:1338 +#: htdocs/luci-static/resources/view/fchomo/node.js:1373 msgid "Padding bytes" msgstr "填充字节" @@ -2169,17 +2184,17 @@ msgstr "填充字节" msgid "Padding scheme" msgstr "填充方案" -#: htdocs/luci-static/resources/fchomo/listeners.js:737 -#: htdocs/luci-static/resources/view/fchomo/node.js:969 +#: htdocs/luci-static/resources/fchomo/listeners.js:741 +#: htdocs/luci-static/resources/view/fchomo/node.js:1007 msgid "Paddings" msgstr "填充 (Paddings)" #: htdocs/luci-static/resources/fchomo/listeners.js:166 #: htdocs/luci-static/resources/fchomo/listeners.js:263 #: htdocs/luci-static/resources/fchomo/listeners.js:589 -#: htdocs/luci-static/resources/view/fchomo/node.js:273 -#: htdocs/luci-static/resources/view/fchomo/node.js:363 -#: htdocs/luci-static/resources/view/fchomo/node.js:860 +#: htdocs/luci-static/resources/view/fchomo/node.js:285 +#: htdocs/luci-static/resources/view/fchomo/node.js:375 +#: htdocs/luci-static/resources/view/fchomo/node.js:897 msgid "Password" msgstr "密码" @@ -2191,13 +2206,13 @@ msgstr "捆绑包路径" msgid "Path in bundle: %s" msgstr "在捆绑包%s中的路径" -#: htdocs/luci-static/resources/fchomo/listeners.js:677 -#: htdocs/luci-static/resources/view/fchomo/node.js:1683 +#: htdocs/luci-static/resources/fchomo/listeners.js:681 +#: htdocs/luci-static/resources/view/fchomo/node.js:1723 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:373 msgid "Payload" msgstr "Payload" -#: htdocs/luci-static/resources/view/fchomo/node.js:784 +#: htdocs/luci-static/resources/view/fchomo/node.js:821 msgid "Peer pubkic key" msgstr "对端公钥" @@ -2207,11 +2222,11 @@ msgid "" "it is not needed." msgstr "性能可能会略有下降,建议仅在需要时开启。" -#: htdocs/luci-static/resources/view/fchomo/node.js:811 +#: htdocs/luci-static/resources/view/fchomo/node.js:848 msgid "Periodically sends data packets to maintain connection persistence." msgstr "定期发送数据包以维持连接持久性。" -#: htdocs/luci-static/resources/view/fchomo/node.js:810 +#: htdocs/luci-static/resources/view/fchomo/node.js:847 msgid "Persistent keepalive" msgstr "持久连接" @@ -2219,7 +2234,7 @@ msgstr "持久连接" msgid "Plain text" msgstr "纯文本 text" -#: htdocs/luci-static/resources/view/fchomo/global.js:878 +#: htdocs/luci-static/resources/view/fchomo/global.js:881 msgid "" "Please ensure that the DNS query of the domains to be processed in the DNS " "policy
are send via DIRECT/Proxy Node in the same semantics as Routing " @@ -2234,8 +2249,8 @@ msgid "" "standards." msgstr "链接格式标准请参考
%s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1656 -#: htdocs/luci-static/resources/view/fchomo/node.js:1682 +#: htdocs/luci-static/resources/view/fchomo/node.js:1696 +#: htdocs/luci-static/resources/view/fchomo/node.js:1722 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:346 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:372 msgid "" @@ -2244,19 +2259,19 @@ msgid "" msgstr "" "请输入 %s。" -#: htdocs/luci-static/resources/view/fchomo/client.js:950 -#: htdocs/luci-static/resources/view/fchomo/client.js:1211 -#: htdocs/luci-static/resources/view/fchomo/client.js:1330 -#: htdocs/luci-static/resources/view/fchomo/client.js:1455 -#: htdocs/luci-static/resources/view/fchomo/client.js:1707 -#: htdocs/luci-static/resources/view/fchomo/client.js:1759 -#: htdocs/luci-static/resources/view/fchomo/node.js:1523 +#: htdocs/luci-static/resources/view/fchomo/client.js:958 +#: htdocs/luci-static/resources/view/fchomo/client.js:1219 +#: htdocs/luci-static/resources/view/fchomo/client.js:1338 +#: htdocs/luci-static/resources/view/fchomo/client.js:1466 +#: htdocs/luci-static/resources/view/fchomo/client.js:1718 +#: htdocs/luci-static/resources/view/fchomo/client.js:1770 +#: htdocs/luci-static/resources/view/fchomo/node.js:1563 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:155 msgid "Please type %s fields of mihomo config.
" msgstr "请输入 mihomo 配置的 %s 字段。
" #: htdocs/luci-static/resources/fchomo/listeners.js:560 -#: htdocs/luci-static/resources/view/fchomo/node.js:834 +#: htdocs/luci-static/resources/view/fchomo/node.js:871 msgid "Plugin" msgstr "插件" @@ -2265,12 +2280,12 @@ msgstr "插件" #: htdocs/luci-static/resources/fchomo/listeners.js:582 #: htdocs/luci-static/resources/fchomo/listeners.js:589 #: htdocs/luci-static/resources/fchomo/listeners.js:595 -#: htdocs/luci-static/resources/view/fchomo/node.js:845 -#: htdocs/luci-static/resources/view/fchomo/node.js:852 -#: htdocs/luci-static/resources/view/fchomo/node.js:860 -#: htdocs/luci-static/resources/view/fchomo/node.js:866 -#: htdocs/luci-static/resources/view/fchomo/node.js:874 -#: htdocs/luci-static/resources/view/fchomo/node.js:880 +#: htdocs/luci-static/resources/view/fchomo/node.js:882 +#: htdocs/luci-static/resources/view/fchomo/node.js:889 +#: htdocs/luci-static/resources/view/fchomo/node.js:897 +#: htdocs/luci-static/resources/view/fchomo/node.js:903 +#: htdocs/luci-static/resources/view/fchomo/node.js:911 +#: htdocs/luci-static/resources/view/fchomo/node.js:917 msgid "Plugin:" msgstr "插件:" @@ -2278,36 +2293,36 @@ msgstr "插件:" msgid "Port" msgstr "端口" -#: htdocs/luci-static/resources/fchomo.js:1446 +#: htdocs/luci-static/resources/fchomo.js:1473 msgid "Port %s alrealy exists!" msgstr "端口 %s 已存在!" -#: htdocs/luci-static/resources/view/fchomo/node.js:291 +#: htdocs/luci-static/resources/view/fchomo/node.js:303 msgid "Port hop interval" msgstr "端口跳跃间隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:373 +#: htdocs/luci-static/resources/view/fchomo/node.js:385 msgid "Port range" msgstr "端口范围" -#: htdocs/luci-static/resources/view/fchomo/global.js:711 +#: htdocs/luci-static/resources/view/fchomo/global.js:714 msgid "Ports" msgstr "端口" #: htdocs/luci-static/resources/fchomo/listeners.js:153 -#: htdocs/luci-static/resources/view/fchomo/node.js:286 +#: htdocs/luci-static/resources/view/fchomo/node.js:298 msgid "Ports pool" msgstr "端口池" #: htdocs/luci-static/resources/fchomo/listeners.js:225 #: htdocs/luci-static/resources/fchomo/listeners.js:456 -#: htdocs/luci-static/resources/view/fchomo/node.js:522 -#: htdocs/luci-static/resources/view/fchomo/node.js:791 +#: htdocs/luci-static/resources/view/fchomo/node.js:534 +#: htdocs/luci-static/resources/view/fchomo/node.js:828 msgid "Pre-shared key" msgstr "预共享密钥" -#: htdocs/luci-static/resources/fchomo/listeners.js:875 -#: htdocs/luci-static/resources/view/fchomo/node.js:1004 +#: htdocs/luci-static/resources/fchomo/listeners.js:879 +#: htdocs/luci-static/resources/view/fchomo/node.js:1042 msgid "Pre-shared key of rendezvous server" msgstr "牵线服务器的预共享密钥" @@ -2324,25 +2339,25 @@ msgid "" "Prevent ICMP loopback issues in some cases. Ping will not show real delay." msgstr "防止某些情况下的 ICMP 环回问题。Ping 不会显示实际延迟。" -#: htdocs/luci-static/resources/view/fchomo/global.js:757 -#: htdocs/luci-static/resources/view/fchomo/global.js:774 -#: htdocs/luci-static/resources/view/fchomo/node.js:1487 -#: htdocs/luci-static/resources/view/fchomo/node.js:1493 -#: htdocs/luci-static/resources/view/fchomo/node.js:1869 -#: htdocs/luci-static/resources/view/fchomo/node.js:1876 +#: htdocs/luci-static/resources/view/fchomo/global.js:760 +#: htdocs/luci-static/resources/view/fchomo/global.js:777 +#: htdocs/luci-static/resources/view/fchomo/node.js:1524 +#: htdocs/luci-static/resources/view/fchomo/node.js:1531 +#: htdocs/luci-static/resources/view/fchomo/node.js:1911 +#: htdocs/luci-static/resources/view/fchomo/node.js:1918 msgid "Priority: Proxy Node > Global." msgstr "优先级: 代理节点 > 全局。" -#: htdocs/luci-static/resources/view/fchomo/node.js:335 +#: htdocs/luci-static/resources/view/fchomo/node.js:347 msgid "Priv-key" msgstr "密钥" -#: htdocs/luci-static/resources/view/fchomo/node.js:339 +#: htdocs/luci-static/resources/view/fchomo/node.js:351 msgid "Priv-key passphrase" msgstr "密钥密码" -#: htdocs/luci-static/resources/view/fchomo/node.js:704 -#: htdocs/luci-static/resources/view/fchomo/node.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:721 +#: htdocs/luci-static/resources/view/fchomo/node.js:813 msgid "Private key" msgstr "私钥" @@ -2350,69 +2365,69 @@ msgstr "私钥" msgid "Process matching mode" msgstr "进程匹配模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:705 -#: htdocs/luci-static/resources/view/fchomo/node.js:1399 +#: htdocs/luci-static/resources/view/fchomo/global.js:708 +#: htdocs/luci-static/resources/view/fchomo/node.js:1434 msgid "Protocol" msgstr "协议" -#: htdocs/luci-static/resources/view/fchomo/node.js:691 +#: htdocs/luci-static/resources/view/fchomo/node.js:708 msgid "Protocol parameter. Enable length block encryption." msgstr "协议参数。启用长度块加密。" -#: htdocs/luci-static/resources/view/fchomo/node.js:685 +#: htdocs/luci-static/resources/view/fchomo/node.js:702 msgid "" "Protocol parameter. Will waste traffic randomly if enabled (enabled by " "default in v2ray and cannot be disabled)." msgstr "协议参数。 如启用会随机浪费流量(在 v2ray 中默认启用并且无法禁用)。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1057 -#: htdocs/luci-static/resources/view/fchomo/node.js:1506 -#: htdocs/luci-static/resources/view/fchomo/node.js:1515 -#: htdocs/luci-static/resources/view/fchomo/node.js:1985 +#: htdocs/luci-static/resources/view/fchomo/client.js:1065 +#: htdocs/luci-static/resources/view/fchomo/node.js:1546 +#: htdocs/luci-static/resources/view/fchomo/node.js:1555 +#: htdocs/luci-static/resources/view/fchomo/node.js:2027 msgid "Provider" msgstr "供应商" -#: htdocs/luci-static/resources/view/fchomo/node.js:1689 +#: htdocs/luci-static/resources/view/fchomo/node.js:1729 msgid "Provider URL" msgstr "供应商订阅 URL" -#: htdocs/luci-static/resources/view/fchomo/client.js:924 -#: htdocs/luci-static/resources/view/fchomo/client.js:942 -#: htdocs/luci-static/resources/view/fchomo/client.js:1411 +#: htdocs/luci-static/resources/view/fchomo/client.js:932 +#: htdocs/luci-static/resources/view/fchomo/client.js:950 +#: htdocs/luci-static/resources/view/fchomo/client.js:1422 msgid "Proxy Group" msgstr "代理组" -#: htdocs/luci-static/resources/view/fchomo/global.js:807 +#: htdocs/luci-static/resources/view/fchomo/global.js:810 msgid "Proxy IPv4 IP-s" msgstr "代理 IPv4 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:810 +#: htdocs/luci-static/resources/view/fchomo/global.js:813 msgid "Proxy IPv6 IP-s" msgstr "代理 IPv6 地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:813 +#: htdocs/luci-static/resources/view/fchomo/global.js:816 msgid "Proxy MAC-s" msgstr "代理 MAC 地址" #: htdocs/luci-static/resources/view/fchomo/node.js:219 -#: htdocs/luci-static/resources/view/fchomo/node.js:1984 +#: htdocs/luci-static/resources/view/fchomo/node.js:2026 msgid "Proxy Node" msgstr "代理节点" -#: htdocs/luci-static/resources/view/fchomo/node.js:1960 -#: htdocs/luci-static/resources/view/fchomo/node.js:1969 +#: htdocs/luci-static/resources/view/fchomo/node.js:2002 +#: htdocs/luci-static/resources/view/fchomo/node.js:2011 msgid "Proxy chain" msgstr "代理链" -#: htdocs/luci-static/resources/fchomo/listeners.js:611 -#: htdocs/luci-static/resources/view/fchomo/client.js:784 -#: htdocs/luci-static/resources/view/fchomo/client.js:1553 -#: htdocs/luci-static/resources/view/fchomo/node.js:1707 +#: htdocs/luci-static/resources/fchomo/listeners.js:615 +#: htdocs/luci-static/resources/view/fchomo/client.js:792 +#: htdocs/luci-static/resources/view/fchomo/client.js:1564 +#: htdocs/luci-static/resources/view/fchomo/node.js:1747 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:403 msgid "Proxy group" msgstr "代理组" -#: htdocs/luci-static/resources/view/fchomo/client.js:882 +#: htdocs/luci-static/resources/view/fchomo/client.js:890 msgid "Proxy group override" msgstr "代理组覆盖" @@ -2420,76 +2435,80 @@ msgstr "代理组覆盖" msgid "Proxy mode" msgstr "代理模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:816 +#: htdocs/luci-static/resources/view/fchomo/global.js:819 msgid "Proxy routerself" msgstr "代理路由器自身" -#: htdocs/luci-static/resources/view/fchomo/node.js:561 -#: htdocs/luci-static/resources/view/fchomo/node.js:756 +#: htdocs/luci-static/resources/view/fchomo/node.js:573 +#: htdocs/luci-static/resources/view/fchomo/node.js:793 msgid "QUIC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:927 +#: htdocs/luci-static/resources/view/fchomo/client.js:935 #: htdocs/luci-static/resources/view/fchomo/server.js:44 msgid "Quick Reload" msgstr "快速重载" -#: htdocs/luci-static/resources/fchomo/listeners.js:1064 -#: htdocs/luci-static/resources/view/fchomo/node.js:1179 +#: htdocs/luci-static/resources/fchomo/listeners.js:1075 +#: htdocs/luci-static/resources/view/fchomo/node.js:1214 msgid "REALITY" msgstr "REALITY" -#: htdocs/luci-static/resources/view/fchomo/node.js:1194 +#: htdocs/luci-static/resources/view/fchomo/node.js:1229 msgid "REALITY X25519MLKEM768 PQC support" msgstr "REALITY X25519MLKEM768 后量子加密支持" -#: htdocs/luci-static/resources/fchomo/listeners.js:1101 +#: htdocs/luci-static/resources/fchomo/listeners.js:1112 msgid "REALITY certificate issued to" msgstr "REALITY 证书颁发给" -#: htdocs/luci-static/resources/fchomo/listeners.js:1069 +#: htdocs/luci-static/resources/fchomo/listeners.js:1080 msgid "REALITY handshake server" msgstr "REALITY 握手服务器" -#: htdocs/luci-static/resources/fchomo/listeners.js:1076 +#: htdocs/luci-static/resources/fchomo/listeners.js:1087 msgid "REALITY private key" msgstr "REALITY 私钥" -#: htdocs/luci-static/resources/fchomo/listeners.js:1091 -#: htdocs/luci-static/resources/view/fchomo/node.js:1184 +#: htdocs/luci-static/resources/fchomo/listeners.js:1102 +#: htdocs/luci-static/resources/view/fchomo/node.js:1219 msgid "REALITY public key" msgstr "REALITY 公钥" -#: htdocs/luci-static/resources/fchomo/listeners.js:1095 -#: htdocs/luci-static/resources/view/fchomo/node.js:1189 +#: htdocs/luci-static/resources/fchomo/listeners.js:1106 +#: htdocs/luci-static/resources/view/fchomo/node.js:1224 msgid "REALITY short ID" msgstr "REALITY 标识符" -#: htdocs/luci-static/resources/fchomo/listeners.js:708 -#: htdocs/luci-static/resources/fchomo/listeners.js:727 -#: htdocs/luci-static/resources/view/fchomo/node.js:959 +#: htdocs/luci-static/resources/view/fchomo/node.js:267 +msgid "REMATCH-NAME marking" +msgstr "REMATCH-NAME 打标" + +#: htdocs/luci-static/resources/fchomo/listeners.js:712 +#: htdocs/luci-static/resources/fchomo/listeners.js:731 +#: htdocs/luci-static/resources/view/fchomo/node.js:997 msgid "RTT" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:384 +#: htdocs/luci-static/resources/fchomo.js:386 msgid "Random" msgstr "随机" -#: htdocs/luci-static/resources/view/fchomo/global.js:665 +#: htdocs/luci-static/resources/view/fchomo/global.js:668 msgid "Random will be used if empty." msgstr "留空将使用随机令牌。" -#: htdocs/luci-static/resources/fchomo.js:394 +#: htdocs/luci-static/resources/fchomo.js:396 msgid "Randomized traffic characteristics" msgstr "随机化流量特征" -#: htdocs/luci-static/resources/fchomo/listeners.js:864 -#: htdocs/luci-static/resources/view/fchomo/node.js:993 +#: htdocs/luci-static/resources/fchomo/listeners.js:868 +#: htdocs/luci-static/resources/view/fchomo/node.js:1031 msgid "Realm" msgstr "Realm" -#: htdocs/luci-static/resources/fchomo/listeners.js:880 -#: htdocs/luci-static/resources/view/fchomo/node.js:1009 +#: htdocs/luci-static/resources/fchomo/listeners.js:884 +#: htdocs/luci-static/resources/view/fchomo/node.js:1047 msgid "Realm ID" msgstr "Realm ID" @@ -2517,8 +2536,8 @@ msgstr "Redirect TCP + Tun UDP" msgid "Refresh every %s seconds." msgstr "每 %s 秒刷新。" -#: htdocs/luci-static/resources/fchomo.js:1202 -#: htdocs/luci-static/resources/view/fchomo/client.js:928 +#: htdocs/luci-static/resources/fchomo.js:1229 +#: htdocs/luci-static/resources/view/fchomo/client.js:936 #: htdocs/luci-static/resources/view/fchomo/global.js:193 #: htdocs/luci-static/resources/view/fchomo/server.js:45 msgid "Reload" @@ -2528,69 +2547,77 @@ msgstr "重载" msgid "Reload All" msgstr "重载所有" -#: htdocs/luci-static/resources/view/fchomo/node.js:1634 +#: htdocs/luci-static/resources/fchomo.js:187 +msgid "Rematch" +msgstr "再路由" + +#: htdocs/luci-static/resources/fchomo.js:187 +msgid "Rematching routing rules" +msgstr "重新匹配路由规则" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1674 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:287 msgid "Remote" msgstr "远程" -#: htdocs/luci-static/resources/view/fchomo/node.js:739 -#: htdocs/luci-static/resources/view/fchomo/node.js:822 +#: htdocs/luci-static/resources/view/fchomo/node.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:859 msgid "Remote DNS resolve" msgstr "远程 DNS 解析" -#: htdocs/luci-static/resources/fchomo.js:1367 +#: htdocs/luci-static/resources/fchomo.js:1394 msgid "Remove" msgstr "移除" -#: htdocs/luci-static/resources/fchomo.js:1372 -#: htdocs/luci-static/resources/view/fchomo/node.js:1610 -#: htdocs/luci-static/resources/view/fchomo/node.js:1612 +#: htdocs/luci-static/resources/fchomo.js:1399 +#: htdocs/luci-static/resources/view/fchomo/node.js:1650 +#: htdocs/luci-static/resources/view/fchomo/node.js:1652 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:259 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:261 msgid "Remove idles" msgstr "移除闲置" -#: htdocs/luci-static/resources/fchomo/listeners.js:869 -#: htdocs/luci-static/resources/view/fchomo/node.js:998 +#: htdocs/luci-static/resources/fchomo/listeners.js:873 +#: htdocs/luci-static/resources/view/fchomo/node.js:1036 msgid "Rendezvous server" msgstr "牵线服务器" -#: htdocs/luci-static/resources/view/fchomo/node.js:1799 +#: htdocs/luci-static/resources/view/fchomo/node.js:1841 msgid "Replace name" msgstr "名称替换" -#: htdocs/luci-static/resources/view/fchomo/node.js:1800 +#: htdocs/luci-static/resources/view/fchomo/node.js:1842 msgid "Replace node name." msgstr "替换节点名称" -#: htdocs/luci-static/resources/fchomo.js:368 +#: htdocs/luci-static/resources/fchomo.js:370 msgid "Request" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1149 -#: htdocs/luci-static/resources/view/fchomo/node.js:1267 -#: htdocs/luci-static/resources/view/fchomo/node.js:1274 +#: htdocs/luci-static/resources/fchomo/listeners.js:1160 +#: htdocs/luci-static/resources/view/fchomo/node.js:1302 +#: htdocs/luci-static/resources/view/fchomo/node.js:1309 msgid "Request path" msgstr "请求路径" -#: htdocs/luci-static/resources/view/fchomo/node.js:596 +#: htdocs/luci-static/resources/view/fchomo/node.js:613 msgid "Request timeout" msgstr "请求超时" -#: htdocs/luci-static/resources/fchomo.js:371 +#: htdocs/luci-static/resources/fchomo.js:373 msgid "Require and verify" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:369 +#: htdocs/luci-static/resources/fchomo.js:371 msgid "Require any" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:402 -#: htdocs/luci-static/resources/view/fchomo/node.js:1195 +#: htdocs/luci-static/resources/fchomo.js:404 +#: htdocs/luci-static/resources/view/fchomo/node.js:1230 msgid "Requires server support." msgstr "需要服务器支持。" -#: htdocs/luci-static/resources/view/fchomo/node.js:805 +#: htdocs/luci-static/resources/view/fchomo/node.js:842 msgid "Reserved field bytes" msgstr "保留字段字节" @@ -2598,78 +2625,76 @@ msgstr "保留字段字节" msgid "Resources management" msgstr "资源管理" -#: htdocs/luci-static/resources/view/fchomo/node.js:880 +#: htdocs/luci-static/resources/view/fchomo/node.js:917 msgid "Restls script" msgstr "Restls 剧本" -#: htdocs/luci-static/resources/view/fchomo/client.js:1182 +#: htdocs/luci-static/resources/view/fchomo/client.js:1190 msgid "" "Returns hidden status in the API to hide the display of this proxy group." msgstr "在 API 返回 hidden 状态,以隐藏该代理组显示。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1188 +#: htdocs/luci-static/resources/view/fchomo/client.js:1196 msgid "" "Returns the string input for icon in the API to display in this proxy group." msgstr "在 API 返回 icon 所输入的字符串,以在该代理组显示。" -#: htdocs/luci-static/resources/view/fchomo/node.js:506 +#: htdocs/luci-static/resources/view/fchomo/node.js:518 msgid "Reuse HTTP connections to reduce RTT for each connection establishment." msgstr "重用 HTTP 连接以减少每次建立连接的 RTT。" -#: htdocs/luci-static/resources/view/fchomo/node.js:503 -#: htdocs/luci-static/resources/view/fchomo/node.js:507 +#: htdocs/luci-static/resources/view/fchomo/node.js:515 +#: htdocs/luci-static/resources/view/fchomo/node.js:519 msgid "Reusing a single tunnel to carry multiple target connections within it." msgstr "复用单条隧道使其内部承载多条目标连线。" -#: htdocs/luci-static/resources/view/fchomo/global.js:835 +#: htdocs/luci-static/resources/view/fchomo/global.js:838 msgid "Routing Control" msgstr "路由控制" -#: htdocs/luci-static/resources/view/fchomo/global.js:890 #: htdocs/luci-static/resources/view/fchomo/global.js:893 +#: htdocs/luci-static/resources/view/fchomo/global.js:896 msgid "Routing DSCP" msgstr "路由 DSCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:860 +#: htdocs/luci-static/resources/view/fchomo/global.js:863 msgid "Routing GFW" msgstr "路由 GFW 流量" -#: htdocs/luci-static/resources/view/fchomo/node.js:1492 -#: htdocs/luci-static/resources/view/fchomo/node.js:1875 -msgid "Routing mark" -msgstr "路由标记" - -#: htdocs/luci-static/resources/view/fchomo/global.js:773 +#: htdocs/luci-static/resources/fchomo/listeners.js:605 +#: htdocs/luci-static/resources/view/fchomo/global.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:1530 +#: htdocs/luci-static/resources/view/fchomo/node.js:1917 msgid "Routing mark (Fwmark)" msgstr "路由标记 (Fwmark)" -#: htdocs/luci-static/resources/view/fchomo/global.js:855 +#: htdocs/luci-static/resources/view/fchomo/global.js:858 msgid "Routing mode" msgstr "路由模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:856 +#: htdocs/luci-static/resources/view/fchomo/global.js:859 msgid "Routing mode of the traffic enters mihomo via firewall rules." msgstr "流量通过防火墙规则进入 mihomo 的路由模式。" -#: htdocs/luci-static/resources/view/fchomo/global.js:877 +#: htdocs/luci-static/resources/view/fchomo/global.js:880 msgid "Routing mode will be handle domain." msgstr "路由模式将处理域名。" -#: htdocs/luci-static/resources/view/fchomo/global.js:837 -#: htdocs/luci-static/resources/view/fchomo/global.js:846 +#: htdocs/luci-static/resources/view/fchomo/global.js:840 +#: htdocs/luci-static/resources/view/fchomo/global.js:849 msgid "Routing ports" msgstr "路由端口" -#: htdocs/luci-static/resources/view/fchomo/client.js:1194 -#: htdocs/luci-static/resources/view/fchomo/client.js:1203 +#: htdocs/luci-static/resources/view/fchomo/client.js:1202 +#: htdocs/luci-static/resources/view/fchomo/client.js:1211 msgid "Routing rule" msgstr "路由规则" -#: htdocs/luci-static/resources/view/fchomo/global.js:767 +#: htdocs/luci-static/resources/view/fchomo/global.js:770 msgid "Routing rule priority" msgstr "路由规则优先权" -#: htdocs/luci-static/resources/view/fchomo/global.js:761 +#: htdocs/luci-static/resources/view/fchomo/global.js:764 msgid "Routing table ID" msgstr "路由表 ID" @@ -2677,8 +2702,8 @@ msgstr "路由表 ID" msgid "Rule" msgstr "规则" -#: htdocs/luci-static/resources/view/fchomo/client.js:846 -#: htdocs/luci-static/resources/view/fchomo/client.js:859 +#: htdocs/luci-static/resources/view/fchomo/client.js:854 +#: htdocs/luci-static/resources/view/fchomo/client.js:867 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:147 msgid "Rule set" msgstr "规则集" @@ -2695,11 +2720,11 @@ msgstr "规则集" msgid "Ruleset-URI-Scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1215 +#: htdocs/luci-static/resources/fchomo.js:1242 msgid "Running" msgstr "正在运行" -#: htdocs/luci-static/resources/fchomo.js:250 +#: htdocs/luci-static/resources/fchomo.js:251 msgid "SMTP" msgstr "" @@ -2707,33 +2732,33 @@ msgstr "" msgid "SOCKS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:189 +#: htdocs/luci-static/resources/fchomo.js:190 msgid "SOCKS5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:205 +#: htdocs/luci-static/resources/fchomo.js:206 msgid "SSH" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:251 +#: htdocs/luci-static/resources/fchomo.js:252 msgid "STUN" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:886 -#: htdocs/luci-static/resources/view/fchomo/node.js:1015 +#: htdocs/luci-static/resources/fchomo/listeners.js:890 +#: htdocs/luci-static/resources/view/fchomo/node.js:1053 msgid "STUN servers" msgstr "STUN 服务器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1286 +#: htdocs/luci-static/resources/view/fchomo/client.js:1294 msgid "SUB-RULE" msgstr "SUB-RULE" -#: htdocs/luci-static/resources/view/fchomo/node.js:916 +#: htdocs/luci-static/resources/view/fchomo/node.js:954 msgid "SUoT version" msgstr "SUoT 版本" #: htdocs/luci-static/resources/fchomo/listeners.js:195 -#: htdocs/luci-static/resources/view/fchomo/node.js:311 +#: htdocs/luci-static/resources/view/fchomo/node.js:323 msgid "Salamander" msgstr "Salamander" @@ -2754,7 +2779,7 @@ msgstr "" msgid "Segment maximum size" msgstr "分段最大尺寸" -#: htdocs/luci-static/resources/fchomo.js:239 +#: htdocs/luci-static/resources/fchomo.js:240 msgid "Select" msgstr "手动选择" @@ -2762,18 +2787,18 @@ msgstr "手动选择" msgid "Select Dashboard" msgstr "选择面板" -#: htdocs/luci-static/resources/fchomo.js:408 +#: htdocs/luci-static/resources/fchomo.js:410 msgid "Send padding randomly 0-3333 bytes with 50% probability." msgstr "以 50% 的概率发送随机 0-3333 字节的填充。" -#: htdocs/luci-static/resources/fchomo.js:397 -#: htdocs/luci-static/resources/fchomo.js:398 +#: htdocs/luci-static/resources/fchomo.js:399 +#: htdocs/luci-static/resources/fchomo.js:400 msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse." msgstr "发送 300-600 秒的随机票证,以供客户端 0-RTT 重用。" -#: htdocs/luci-static/resources/fchomo/listeners.js:708 -#: htdocs/luci-static/resources/fchomo/listeners.js:962 -#: htdocs/luci-static/resources/fchomo/listeners.js:977 +#: htdocs/luci-static/resources/fchomo/listeners.js:712 +#: htdocs/luci-static/resources/fchomo/listeners.js:973 +#: htdocs/luci-static/resources/fchomo/listeners.js:988 #: htdocs/luci-static/resources/view/fchomo/server.js:58 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:62 msgid "Server" @@ -2783,9 +2808,9 @@ msgstr "服务端" msgid "Server address" msgstr "服务器地址" -#: htdocs/luci-static/resources/fchomo/listeners.js:1143 -#: htdocs/luci-static/resources/view/fchomo/node.js:1246 -#: htdocs/luci-static/resources/view/fchomo/node.js:1252 +#: htdocs/luci-static/resources/fchomo/listeners.js:1154 +#: htdocs/luci-static/resources/view/fchomo/node.js:1281 +#: htdocs/luci-static/resources/view/fchomo/node.js:1287 msgid "Server hostname" msgstr "服务器主机名称" @@ -2798,26 +2823,26 @@ msgid "Service status" msgstr "服务状态" #: htdocs/luci-static/resources/fchomo.js:156 -#: htdocs/luci-static/resources/fchomo.js:190 +#: htdocs/luci-static/resources/fchomo.js:191 msgid "Shadowsocks" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:506 -#: htdocs/luci-static/resources/view/fchomo/node.js:615 +#: htdocs/luci-static/resources/view/fchomo/node.js:632 msgid "Shadowsocks chipher" msgstr "Shadowsocks 加密方法" #: htdocs/luci-static/resources/fchomo/listeners.js:501 -#: htdocs/luci-static/resources/view/fchomo/node.js:610 +#: htdocs/luci-static/resources/view/fchomo/node.js:627 msgid "Shadowsocks encrypt" msgstr "Shadowsocks 加密" #: htdocs/luci-static/resources/fchomo/listeners.js:514 -#: htdocs/luci-static/resources/view/fchomo/node.js:623 +#: htdocs/luci-static/resources/view/fchomo/node.js:640 msgid "Shadowsocks password" msgstr "Shadowsocks 密码" -#: htdocs/luci-static/resources/view/fchomo/node.js:1447 +#: htdocs/luci-static/resources/view/fchomo/node.js:1482 msgid "Show connections in the dashboard for breaking connections easier." msgstr "在面板中显示连接以便于打断连接。" @@ -2829,52 +2854,52 @@ msgstr "静音" msgid "Simple round-robin all nodes" msgstr "简单轮替所有节点" -#: htdocs/luci-static/resources/view/fchomo/node.js:1695 +#: htdocs/luci-static/resources/view/fchomo/node.js:1735 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:391 msgid "Size limit" msgstr "大小限制" -#: htdocs/luci-static/resources/view/fchomo/client.js:1586 -#: htdocs/luci-static/resources/view/fchomo/node.js:1116 -#: htdocs/luci-static/resources/view/fchomo/node.js:1850 +#: htdocs/luci-static/resources/view/fchomo/client.js:1597 +#: htdocs/luci-static/resources/view/fchomo/node.js:1151 +#: htdocs/luci-static/resources/view/fchomo/node.js:1892 msgid "Skip cert verify" msgstr "跳过证书验证" -#: htdocs/luci-static/resources/view/fchomo/global.js:683 +#: htdocs/luci-static/resources/view/fchomo/global.js:686 msgid "Skiped sniffing domain" msgstr "跳过嗅探域名" -#: htdocs/luci-static/resources/view/fchomo/global.js:689 +#: htdocs/luci-static/resources/view/fchomo/global.js:692 msgid "Skiped sniffing dst address" msgstr "跳过嗅探目标地址" -#: htdocs/luci-static/resources/view/fchomo/global.js:686 +#: htdocs/luci-static/resources/view/fchomo/global.js:689 msgid "Skiped sniffing src address" msgstr "跳过嗅探来源地址" #: htdocs/luci-static/resources/fchomo.js:159 -#: htdocs/luci-static/resources/fchomo.js:194 +#: htdocs/luci-static/resources/fchomo.js:195 msgid "Snell" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:693 +#: htdocs/luci-static/resources/view/fchomo/global.js:696 msgid "Sniff protocol" msgstr "嗅探协议" -#: htdocs/luci-static/resources/view/fchomo/global.js:670 +#: htdocs/luci-static/resources/view/fchomo/global.js:673 msgid "Sniffer" msgstr "嗅探器" -#: htdocs/luci-static/resources/view/fchomo/global.js:673 +#: htdocs/luci-static/resources/view/fchomo/global.js:676 msgid "Sniffer settings" msgstr "嗅探器设置" -#: htdocs/luci-static/resources/fchomo.js:440 +#: htdocs/luci-static/resources/fchomo.js:442 msgid "Specify a ID" msgstr "指定一个ID" -#: htdocs/luci-static/resources/view/fchomo/global.js:838 -#: htdocs/luci-static/resources/view/fchomo/global.js:847 +#: htdocs/luci-static/resources/view/fchomo/global.js:841 +#: htdocs/luci-static/resources/view/fchomo/global.js:850 msgid "" "Specify target ports to be proxied. Multiple ports must be separated by " "commas." @@ -2888,30 +2913,30 @@ msgstr "堆栈" msgid "Standard" msgstr "标准" -#: htdocs/luci-static/resources/fchomo.js:254 +#: htdocs/luci-static/resources/fchomo.js:255 msgid "Steam Client" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:255 +#: htdocs/luci-static/resources/fchomo.js:256 msgid "Steam P2P" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1154 -#: htdocs/luci-static/resources/view/fchomo/client.js:1156 +#: htdocs/luci-static/resources/view/fchomo/client.js:1162 +#: htdocs/luci-static/resources/view/fchomo/client.js:1164 msgid "Strategy" msgstr "策略" -#: htdocs/luci-static/resources/fchomo/listeners.js:605 -#: htdocs/luci-static/resources/view/fchomo/client.js:1313 -#: htdocs/luci-static/resources/view/fchomo/client.js:1322 +#: htdocs/luci-static/resources/fchomo/listeners.js:609 +#: htdocs/luci-static/resources/view/fchomo/client.js:1321 +#: htdocs/luci-static/resources/view/fchomo/client.js:1330 msgid "Sub rule" msgstr "子规则" -#: htdocs/luci-static/resources/view/fchomo/client.js:1368 +#: htdocs/luci-static/resources/view/fchomo/client.js:1376 msgid "Sub rule group" msgstr "子规则组" -#: htdocs/luci-static/resources/fchomo.js:700 +#: htdocs/luci-static/resources/fchomo.js:702 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:231 msgid "Successfully imported %s %s of total %s." msgstr "已成功导入 %s 个%s (共 %s 个)。" @@ -2920,12 +2945,12 @@ msgstr "已成功导入 %s 个%s (共 %s 个)。" msgid "Successfully updated." msgstr "更新成功。" -#: htdocs/luci-static/resources/fchomo.js:1717 +#: htdocs/luci-static/resources/fchomo.js:1744 msgid "Successfully uploaded." msgstr "已成功上传。" #: htdocs/luci-static/resources/fchomo.js:158 -#: htdocs/luci-static/resources/fchomo.js:193 +#: htdocs/luci-static/resources/fchomo.js:194 msgid "Sudoku" msgstr "" @@ -2952,17 +2977,17 @@ msgstr "系统 DNS" #: htdocs/luci-static/resources/fchomo.js:161 #: htdocs/luci-static/resources/fchomo.js:162 #: htdocs/luci-static/resources/fchomo.js:163 -#: htdocs/luci-static/resources/fchomo.js:188 -#: htdocs/luci-static/resources/fchomo.js:193 +#: htdocs/luci-static/resources/fchomo.js:189 #: htdocs/luci-static/resources/fchomo.js:194 #: htdocs/luci-static/resources/fchomo.js:195 #: htdocs/luci-static/resources/fchomo.js:196 #: htdocs/luci-static/resources/fchomo.js:197 #: htdocs/luci-static/resources/fchomo.js:198 -#: htdocs/luci-static/resources/fchomo.js:205 -#: htdocs/luci-static/resources/fchomo/listeners.js:639 -#: htdocs/luci-static/resources/view/fchomo/client.js:590 -#: htdocs/luci-static/resources/view/fchomo/client.js:680 +#: htdocs/luci-static/resources/fchomo.js:199 +#: htdocs/luci-static/resources/fchomo.js:206 +#: htdocs/luci-static/resources/fchomo/listeners.js:643 +#: htdocs/luci-static/resources/view/fchomo/client.js:598 +#: htdocs/luci-static/resources/view/fchomo/client.js:688 msgid "TCP" msgstr "TCP" @@ -2970,7 +2995,7 @@ msgstr "TCP" msgid "TCP concurrency" msgstr "TCP 并发" -#: htdocs/luci-static/resources/view/fchomo/node.js:1440 +#: htdocs/luci-static/resources/view/fchomo/node.js:1475 msgid "TCP only" msgstr "仅 TCP" @@ -2989,34 +3014,34 @@ msgstr "TCP-Keep-Alive 间隔" #: htdocs/luci-static/resources/fchomo.js:166 #: htdocs/luci-static/resources/fchomo.js:167 #: htdocs/luci-static/resources/fchomo.js:168 -#: htdocs/luci-static/resources/fchomo.js:187 -#: htdocs/luci-static/resources/fchomo.js:189 +#: htdocs/luci-static/resources/fchomo.js:188 #: htdocs/luci-static/resources/fchomo.js:190 -#: htdocs/luci-static/resources/fchomo.js:192 -#: htdocs/luci-static/resources/fchomo.js:203 +#: htdocs/luci-static/resources/fchomo.js:191 +#: htdocs/luci-static/resources/fchomo.js:193 +#: htdocs/luci-static/resources/fchomo.js:204 msgid "TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1471 -#: htdocs/luci-static/resources/view/fchomo/node.js:1817 +#: htdocs/luci-static/resources/view/fchomo/node.js:1506 +#: htdocs/luci-static/resources/view/fchomo/node.js:1859 msgid "TFO" msgstr "TCP 快速打开 (TFO)" #: htdocs/luci-static/resources/fchomo/listeners.js:570 -#: htdocs/luci-static/resources/fchomo/listeners.js:902 +#: htdocs/luci-static/resources/fchomo/listeners.js:900 #: htdocs/luci-static/resources/view/fchomo/global.js:550 -#: htdocs/luci-static/resources/view/fchomo/node.js:487 -#: htdocs/luci-static/resources/view/fchomo/node.js:847 -#: htdocs/luci-static/resources/view/fchomo/node.js:1025 +#: htdocs/luci-static/resources/view/fchomo/node.js:499 +#: htdocs/luci-static/resources/view/fchomo/node.js:884 +#: htdocs/luci-static/resources/view/fchomo/node.js:1063 msgid "TLS" msgstr "TLS" -#: htdocs/luci-static/resources/fchomo/listeners.js:956 -#: htdocs/luci-static/resources/view/fchomo/node.js:1056 +#: htdocs/luci-static/resources/fchomo/listeners.js:967 +#: htdocs/luci-static/resources/view/fchomo/node.js:1094 msgid "TLS ALPN" msgstr "TLS ALPN" -#: htdocs/luci-static/resources/view/fchomo/node.js:1050 +#: htdocs/luci-static/resources/view/fchomo/node.js:1088 msgid "TLS SNI" msgstr "" @@ -3026,11 +3051,11 @@ msgid "TLS fields" msgstr "TLS字段" #: htdocs/luci-static/resources/fchomo.js:164 -#: htdocs/luci-static/resources/fchomo.js:201 +#: htdocs/luci-static/resources/fchomo.js:202 msgid "TUIC" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:252 +#: htdocs/luci-static/resources/fchomo.js:253 msgid "TURN" msgstr "" @@ -3043,35 +3068,35 @@ msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "让客户端使用 BBR 流控算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:720 -#: htdocs/luci-static/resources/view/fchomo/node.js:728 +#: htdocs/luci-static/resources/view/fchomo/node.js:737 +#: htdocs/luci-static/resources/view/fchomo/node.js:745 msgid "The %s address used by local machine in the Cloudflare WARP network." msgstr "Cloudflare WARP 网络中使用的本机 %s 地址。" -#: htdocs/luci-static/resources/view/fchomo/node.js:763 -#: htdocs/luci-static/resources/view/fchomo/node.js:771 +#: htdocs/luci-static/resources/view/fchomo/node.js:800 +#: htdocs/luci-static/resources/view/fchomo/node.js:808 msgid "The %s address used by local machine in the Wireguard network." msgstr "WireGuard 网络中使用的本机 %s 地址。" -#: htdocs/luci-static/resources/fchomo/listeners.js:977 -#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/fchomo/listeners.js:988 +#: htdocs/luci-static/resources/view/fchomo/node.js:1174 msgid "The %s private key, in PEM format." msgstr "%s私钥,需要 PEM 格式。" -#: htdocs/luci-static/resources/fchomo/listeners.js:962 -#: htdocs/luci-static/resources/fchomo/listeners.js:1000 +#: htdocs/luci-static/resources/fchomo/listeners.js:973 +#: htdocs/luci-static/resources/fchomo/listeners.js:1011 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:1125 +#: htdocs/luci-static/resources/view/fchomo/node.js:1160 msgid "The %s public key, in PEM format." msgstr "%s公钥,需要 PEM 格式。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1159 +#: htdocs/luci-static/resources/view/fchomo/node.js:1194 msgid "" "The ECH parameter of the HTTPS record for the domain. Leave empty to resolve " "via DNS." msgstr "域名的 HTTPS 记录的 ECH 参数。留空则通过 DNS 解析。" -#: htdocs/luci-static/resources/view/fchomo/node.js:409 +#: htdocs/luci-static/resources/view/fchomo/node.js:421 msgid "The ED25519 available private key or UUID provided by Sudoku server." msgstr "Sudoku 服务器提供的 ED25519 可用私钥 或 UUID。" @@ -3083,42 +3108,42 @@ msgstr "Sudoku 生成的 ED25519 主公钥 或 UUID。" msgid "The default value is 2:00 every day." msgstr "默认值为每天 2:00。" -#: htdocs/luci-static/resources/fchomo/listeners.js:740 -#: htdocs/luci-static/resources/view/fchomo/node.js:972 +#: htdocs/luci-static/resources/fchomo/listeners.js:744 +#: htdocs/luci-static/resources/view/fchomo/node.js:1010 msgid "" "The first padding must have a probability of 100% and at least 35 bytes." msgstr "首个填充必须为 100% 的概率并且至少 35 字节。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1816 +#: htdocs/luci-static/resources/view/fchomo/client.js:1827 msgid "The matching %s will be deemed as not-poisoned." msgstr "匹配 %s 的将被视为未被投毒污染。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1825 -#: htdocs/luci-static/resources/view/fchomo/client.js:1829 -#: htdocs/luci-static/resources/view/fchomo/client.js:1834 +#: htdocs/luci-static/resources/view/fchomo/client.js:1836 +#: htdocs/luci-static/resources/view/fchomo/client.js:1840 +#: htdocs/luci-static/resources/view/fchomo/client.js:1845 msgid "The matching %s will be deemed as poisoned." msgstr "匹配 %s 的将被视为已被投毒污染。" -#: htdocs/luci-static/resources/fchomo/listeners.js:738 -#: htdocs/luci-static/resources/view/fchomo/node.js:970 +#: htdocs/luci-static/resources/fchomo/listeners.js:742 +#: htdocs/luci-static/resources/view/fchomo/node.js:1008 msgid "The server and client can set different padding parameters." msgstr "服务器和客户端可以设置不同的填充参数。" -#: htdocs/luci-static/resources/fchomo/listeners.js:1058 +#: htdocs/luci-static/resources/fchomo/listeners.js:1069 #: htdocs/luci-static/resources/view/fchomo/global.js:615 msgid "This ECH parameter needs to be added to the HTTPS record of the domain." msgstr "此 ECH 参数需要添加到域名的 HTTPS 记录中。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1589 -#: htdocs/luci-static/resources/view/fchomo/node.js:1119 -#: htdocs/luci-static/resources/view/fchomo/node.js:1853 +#: htdocs/luci-static/resources/view/fchomo/client.js:1600 +#: htdocs/luci-static/resources/view/fchomo/node.js:1154 +#: htdocs/luci-static/resources/view/fchomo/node.js:1895 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" msgstr "" "这是危险行为,您的流量将几乎等同于明文!使用风险自负!" -#: htdocs/luci-static/resources/view/fchomo/node.js:566 +#: htdocs/luci-static/resources/view/fchomo/node.js:578 msgid "" "This is the TUIC port of the SUoT protocol, designed to provide a QUIC " "stream based UDP relay mode that TUIC does not provide." @@ -3138,11 +3163,11 @@ msgid "" msgstr "" "要启用 Tun 支持,您需要安装 ip-fullkmod-tun。" -#: htdocs/luci-static/resources/view/fchomo/global.js:882 +#: htdocs/luci-static/resources/view/fchomo/global.js:885 msgid "To enable, you need to install dnsmasq-full." msgstr "要启用,您需要安装 dnsmasq-full。" -#: htdocs/luci-static/resources/view/fchomo/global.js:780 +#: htdocs/luci-static/resources/view/fchomo/global.js:783 msgid "Tproxy Fwmark/fwmask" msgstr "Tproxy Fwmark/fwmask" @@ -3151,22 +3176,22 @@ msgid "Tproxy port" msgstr "Tproxy 端口" #: htdocs/luci-static/resources/fchomo/listeners.js:285 -#: htdocs/luci-static/resources/view/fchomo/node.js:401 +#: htdocs/luci-static/resources/view/fchomo/node.js:413 msgid "Traffic pattern" msgstr "流量模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:2012 +#: htdocs/luci-static/resources/view/fchomo/node.js:2054 msgid "Transit proxy group" msgstr "中转代理组" -#: htdocs/luci-static/resources/view/fchomo/node.js:2018 +#: htdocs/luci-static/resources/view/fchomo/node.js:2060 msgid "Transit proxy node" msgstr "中转代理节点" #: htdocs/luci-static/resources/fchomo/listeners.js:273 -#: htdocs/luci-static/resources/fchomo/listeners.js:1109 -#: htdocs/luci-static/resources/view/fchomo/node.js:378 -#: htdocs/luci-static/resources/view/fchomo/node.js:1201 +#: htdocs/luci-static/resources/fchomo/listeners.js:1120 +#: htdocs/luci-static/resources/view/fchomo/node.js:390 +#: htdocs/luci-static/resources/view/fchomo/node.js:1236 msgid "Transport" msgstr "传输层" @@ -3175,22 +3200,22 @@ msgstr "传输层" msgid "Transport fields" msgstr "传输层字段" -#: htdocs/luci-static/resources/fchomo/listeners.js:1114 -#: htdocs/luci-static/resources/view/fchomo/node.js:1206 +#: htdocs/luci-static/resources/fchomo/listeners.js:1125 +#: htdocs/luci-static/resources/view/fchomo/node.js:1241 msgid "Transport type" msgstr "传输层类型" -#: htdocs/luci-static/resources/view/fchomo/client.js:803 +#: htdocs/luci-static/resources/view/fchomo/client.js:811 msgid "Treat the destination IP as the source IP." msgstr "将 目标 IP 视为 来源 IP。" #: htdocs/luci-static/resources/fchomo.js:162 -#: htdocs/luci-static/resources/fchomo.js:197 +#: htdocs/luci-static/resources/fchomo.js:198 msgid "Trojan" msgstr "" #: htdocs/luci-static/resources/fchomo.js:167 -#: htdocs/luci-static/resources/fchomo.js:203 +#: htdocs/luci-static/resources/fchomo.js:204 msgid "TrustTunnel" msgstr "" @@ -3198,7 +3223,7 @@ msgstr "" msgid "Trusted proxy header" msgstr "可信代理 Header" -#: htdocs/luci-static/resources/view/fchomo/global.js:785 +#: htdocs/luci-static/resources/view/fchomo/global.js:788 msgid "Tun Fwmark/fwmask" msgstr "Tun Fwmark/fwmask" @@ -3220,29 +3245,29 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:142 #: htdocs/luci-static/resources/view/fchomo/client.js:531 -#: htdocs/luci-static/resources/view/fchomo/client.js:644 -#: htdocs/luci-static/resources/view/fchomo/client.js:738 -#: htdocs/luci-static/resources/view/fchomo/client.js:843 -#: htdocs/luci-static/resources/view/fchomo/client.js:1030 +#: htdocs/luci-static/resources/view/fchomo/client.js:652 +#: htdocs/luci-static/resources/view/fchomo/client.js:746 +#: htdocs/luci-static/resources/view/fchomo/client.js:851 +#: htdocs/luci-static/resources/view/fchomo/client.js:1038 #: htdocs/luci-static/resources/view/fchomo/node.js:250 -#: htdocs/luci-static/resources/view/fchomo/node.js:1632 -#: htdocs/luci-static/resources/view/fchomo/node.js:1983 +#: htdocs/luci-static/resources/view/fchomo/node.js:1672 +#: htdocs/luci-static/resources/view/fchomo/node.js:2025 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:285 msgid "Type" msgstr "类型" #: htdocs/luci-static/resources/fchomo.js:164 #: htdocs/luci-static/resources/fchomo.js:165 -#: htdocs/luci-static/resources/fchomo.js:200 #: htdocs/luci-static/resources/fchomo.js:201 #: htdocs/luci-static/resources/fchomo.js:202 -#: htdocs/luci-static/resources/fchomo.js:204 -#: htdocs/luci-static/resources/fchomo/listeners.js:640 -#: htdocs/luci-static/resources/fchomo/listeners.js:645 -#: htdocs/luci-static/resources/view/fchomo/client.js:589 -#: htdocs/luci-static/resources/view/fchomo/client.js:679 -#: htdocs/luci-static/resources/view/fchomo/node.js:904 -#: htdocs/luci-static/resources/view/fchomo/node.js:1827 +#: htdocs/luci-static/resources/fchomo.js:203 +#: htdocs/luci-static/resources/fchomo.js:205 +#: htdocs/luci-static/resources/fchomo/listeners.js:644 +#: htdocs/luci-static/resources/fchomo/listeners.js:649 +#: htdocs/luci-static/resources/view/fchomo/client.js:597 +#: htdocs/luci-static/resources/view/fchomo/client.js:687 +#: htdocs/luci-static/resources/view/fchomo/node.js:942 +#: htdocs/luci-static/resources/view/fchomo/node.js:1869 msgid "UDP" msgstr "UDP" @@ -3250,42 +3275,42 @@ msgstr "UDP" msgid "UDP NAT expiration time" msgstr "UDP NAT 过期时间" -#: htdocs/luci-static/resources/view/fchomo/node.js:565 +#: htdocs/luci-static/resources/view/fchomo/node.js:577 msgid "UDP over stream" msgstr "UDP over stream" -#: htdocs/luci-static/resources/view/fchomo/node.js:571 +#: htdocs/luci-static/resources/view/fchomo/node.js:583 msgid "UDP over stream version" msgstr "UDP over stream 版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:558 +#: htdocs/luci-static/resources/view/fchomo/node.js:570 msgid "UDP packet relay mode." msgstr "UDP 包中继模式。" -#: htdocs/luci-static/resources/view/fchomo/node.js:557 +#: htdocs/luci-static/resources/view/fchomo/node.js:569 msgid "UDP relay mode" msgstr "UDP 中继模式" #: htdocs/luci-static/resources/fchomo/listeners.js:373 #: htdocs/luci-static/resources/fchomo/listeners.js:374 -#: htdocs/luci-static/resources/view/fchomo/node.js:433 -#: htdocs/luci-static/resources/view/fchomo/node.js:434 +#: htdocs/luci-static/resources/view/fchomo/node.js:445 +#: htdocs/luci-static/resources/view/fchomo/node.js:446 msgid "UP: %s; DOWN: %s" msgstr "上传: %s; 下载: %s" -#: htdocs/luci-static/resources/fchomo.js:241 +#: htdocs/luci-static/resources/fchomo.js:242 msgid "URL test" msgstr "自动选择" #: htdocs/luci-static/resources/fchomo/listeners.js:294 #: htdocs/luci-static/resources/fchomo/listeners.js:474 #: htdocs/luci-static/resources/fchomo/listeners.js:529 -#: htdocs/luci-static/resources/view/fchomo/node.js:545 -#: htdocs/luci-static/resources/view/fchomo/node.js:654 +#: htdocs/luci-static/resources/view/fchomo/node.js:557 +#: htdocs/luci-static/resources/view/fchomo/node.js:671 msgid "UUID" msgstr "UUID" -#: htdocs/luci-static/resources/fchomo.js:1260 +#: htdocs/luci-static/resources/fchomo.js:1287 msgid "Unable to download unsupported type: %s" msgstr "无法下载不支持的类型: %s" @@ -3310,8 +3335,8 @@ msgstr "未知错误。" msgid "Unknown error: %s" msgstr "未知错误:%s" -#: htdocs/luci-static/resources/view/fchomo/node.js:910 -#: htdocs/luci-static/resources/view/fchomo/node.js:1832 +#: htdocs/luci-static/resources/view/fchomo/node.js:948 +#: htdocs/luci-static/resources/view/fchomo/node.js:1874 msgid "UoT" msgstr "UDP over TCP (UoT)" @@ -3319,22 +3344,22 @@ msgstr "UDP over TCP (UoT)" msgid "Update failed." msgstr "更新失败。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1701 +#: htdocs/luci-static/resources/view/fchomo/node.js:1741 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:397 msgid "Update interval" msgstr "更新间隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:1458 +#: htdocs/luci-static/resources/view/fchomo/node.js:1493 msgid "Upload bandwidth" msgstr "上传带宽" -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 +#: htdocs/luci-static/resources/view/fchomo/node.js:1494 msgid "Upload bandwidth in Mbps." msgstr "上传带宽(单位:Mbps)。" -#: htdocs/luci-static/resources/fchomo/listeners.js:968 -#: htdocs/luci-static/resources/fchomo/listeners.js:1008 -#: htdocs/luci-static/resources/view/fchomo/node.js:1130 +#: htdocs/luci-static/resources/fchomo/listeners.js:979 +#: htdocs/luci-static/resources/fchomo/listeners.js:1019 +#: htdocs/luci-static/resources/view/fchomo/node.js:1165 msgid "Upload certificate" msgstr "上传证书" @@ -3342,41 +3367,45 @@ msgstr "上传证书" msgid "Upload initial package" msgstr "上传初始资源包" -#: htdocs/luci-static/resources/fchomo/listeners.js:983 -#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/fchomo/listeners.js:994 +#: htdocs/luci-static/resources/view/fchomo/node.js:1179 msgid "Upload key" msgstr "上传密钥" -#: htdocs/luci-static/resources/fchomo/listeners.js:971 -#: htdocs/luci-static/resources/fchomo/listeners.js:986 -#: htdocs/luci-static/resources/fchomo/listeners.js:1011 +#: htdocs/luci-static/resources/fchomo/listeners.js:982 +#: htdocs/luci-static/resources/fchomo/listeners.js:997 +#: htdocs/luci-static/resources/fchomo/listeners.js:1022 #: htdocs/luci-static/resources/view/fchomo/global.js:306 -#: htdocs/luci-static/resources/view/fchomo/node.js:1133 -#: htdocs/luci-static/resources/view/fchomo/node.js:1147 +#: htdocs/luci-static/resources/view/fchomo/node.js:1168 +#: htdocs/luci-static/resources/view/fchomo/node.js:1182 msgid "Upload..." msgstr "上传..." -#: htdocs/luci-static/resources/view/fchomo/client.js:1409 +#: htdocs/luci-static/resources/view/fchomo/node.js:273 +msgid "Use sub rule" +msgstr "使用子规则" + +#: htdocs/luci-static/resources/view/fchomo/client.js:1420 msgid "" "Used to resolve domains that can be directly connected. Can use domestic DNS " "servers or ECS." msgstr "用于解析可直连的域名。可以使用国内 DNS 服务器或 ECS。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1411 +#: htdocs/luci-static/resources/view/fchomo/client.js:1422 msgid "" "Used to resolve domains you want to proxy. Recommended to configure %s for " "DNS servers." msgstr "用于解析想要代理的域名。建议为 DNS 服务器配置%s。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1393 +#: htdocs/luci-static/resources/view/fchomo/client.js:1404 msgid "Used to resolve the domain of the DNS server. Must be IP." msgstr "用于解析 DNS 服务器的域名。必须是 IP。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1400 +#: htdocs/luci-static/resources/view/fchomo/client.js:1411 msgid "Used to resolve the domain of the Proxy node." msgstr "用于解析代理节点的域名。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1051 +#: htdocs/luci-static/resources/view/fchomo/node.js:1089 msgid "Used to verify the hostname on the returned certificates." msgstr "用于验证返回的证书上的主机名。" @@ -3389,50 +3418,50 @@ msgid "User-hint is mandatory" msgstr "User-hint 是必填项" #: htdocs/luci-static/resources/fchomo/listeners.js:161 -#: htdocs/luci-static/resources/view/fchomo/node.js:268 +#: htdocs/luci-static/resources/view/fchomo/node.js:280 msgid "Username" msgstr "用户名" -#: htdocs/luci-static/resources/view/fchomo/global.js:793 +#: htdocs/luci-static/resources/view/fchomo/global.js:796 msgid "Users filter mode" msgstr "使用者过滤模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1315 +#: htdocs/luci-static/resources/view/fchomo/node.js:1350 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1320 +#: htdocs/luci-static/resources/view/fchomo/node.js:1355 msgid "V2ray HTTPUpgrade fast open" msgstr "" #: htdocs/luci-static/resources/fchomo.js:161 -#: htdocs/luci-static/resources/fchomo.js:196 +#: htdocs/luci-static/resources/fchomo.js:197 msgid "VLESS" msgstr "" #: htdocs/luci-static/resources/fchomo.js:160 -#: htdocs/luci-static/resources/fchomo.js:195 +#: htdocs/luci-static/resources/fchomo.js:196 msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1638 -#: htdocs/luci-static/resources/view/fchomo/node.js:1989 +#: htdocs/luci-static/resources/view/fchomo/node.js:1678 +#: htdocs/luci-static/resources/view/fchomo/node.js:2031 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:328 msgid "Value" msgstr "可视化值" -#: htdocs/luci-static/resources/fchomo.js:370 +#: htdocs/luci-static/resources/fchomo.js:372 msgid "Verify if given" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:463 #: htdocs/luci-static/resources/fchomo/listeners.js:595 -#: htdocs/luci-static/resources/view/fchomo/node.js:529 -#: htdocs/luci-static/resources/view/fchomo/node.js:866 +#: htdocs/luci-static/resources/view/fchomo/node.js:541 +#: htdocs/luci-static/resources/view/fchomo/node.js:903 msgid "Version" msgstr "版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:874 +#: htdocs/luci-static/resources/view/fchomo/node.js:911 msgid "Version hint" msgstr "" @@ -3441,7 +3470,7 @@ msgstr "" msgid "Vless Encryption fields" msgstr "Vless Encryption 字段" -#: htdocs/luci-static/resources/fchomo.js:407 +#: htdocs/luci-static/resources/fchomo.js:409 msgid "Wait a random 0-111 milliseconds with 75% probability." msgstr "以 75% 的概率等待随机 0-111 毫秒。" @@ -3450,15 +3479,15 @@ msgid "Warning" msgstr "警告" #: htdocs/luci-static/resources/fchomo/listeners.js:441 -#: htdocs/luci-static/resources/fchomo/listeners.js:1116 -#: htdocs/luci-static/resources/fchomo/listeners.js:1125 -#: htdocs/luci-static/resources/fchomo/listeners.js:1132 -#: htdocs/luci-static/resources/view/fchomo/node.js:483 -#: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:1211 -#: htdocs/luci-static/resources/view/fchomo/node.js:1222 -#: htdocs/luci-static/resources/view/fchomo/node.js:1229 -#: htdocs/luci-static/resources/view/fchomo/node.js:1235 +#: htdocs/luci-static/resources/fchomo/listeners.js:1127 +#: htdocs/luci-static/resources/fchomo/listeners.js:1136 +#: htdocs/luci-static/resources/fchomo/listeners.js:1143 +#: htdocs/luci-static/resources/view/fchomo/node.js:495 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 +#: htdocs/luci-static/resources/view/fchomo/node.js:1246 +#: htdocs/luci-static/resources/view/fchomo/node.js:1257 +#: htdocs/luci-static/resources/view/fchomo/node.js:1264 +#: htdocs/luci-static/resources/view/fchomo/node.js:1270 msgid "WebSocket" msgstr "" @@ -3466,56 +3495,56 @@ msgstr "" msgid "When used as a server, HomeProxy is a better choice." msgstr "用作服务端时,HomeProxy 是更好的选择。" -#: htdocs/luci-static/resources/view/fchomo/global.js:795 +#: htdocs/luci-static/resources/view/fchomo/global.js:798 msgid "White list" msgstr "白名单" -#: htdocs/luci-static/resources/fchomo.js:204 +#: htdocs/luci-static/resources/fchomo.js:205 msgid "WireGuard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:785 +#: htdocs/luci-static/resources/view/fchomo/node.js:822 msgid "WireGuard peer public key." msgstr "WireGuard 对端公钥。" -#: htdocs/luci-static/resources/view/fchomo/node.js:792 +#: htdocs/luci-static/resources/view/fchomo/node.js:829 msgid "WireGuard pre-shared key." msgstr "WireGuard 预共享密钥。" -#: htdocs/luci-static/resources/view/fchomo/node.js:777 +#: htdocs/luci-static/resources/view/fchomo/node.js:814 msgid "WireGuard requires base64-encoded private keys." msgstr "WireGuard 要求 base64 编码的私钥。" -#: htdocs/luci-static/resources/fchomo/listeners.js:1117 -#: htdocs/luci-static/resources/fchomo/listeners.js:1126 -#: htdocs/luci-static/resources/view/fchomo/node.js:1212 -#: htdocs/luci-static/resources/view/fchomo/node.js:1230 +#: htdocs/luci-static/resources/fchomo/listeners.js:1128 +#: htdocs/luci-static/resources/fchomo/listeners.js:1137 +#: htdocs/luci-static/resources/view/fchomo/node.js:1247 +#: htdocs/luci-static/resources/view/fchomo/node.js:1265 msgid "XHTTP" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1162 -#: htdocs/luci-static/resources/view/fchomo/node.js:1325 +#: htdocs/luci-static/resources/fchomo/listeners.js:1173 +#: htdocs/luci-static/resources/view/fchomo/node.js:1360 msgid "XHTTP mode" msgstr "XHTTP 模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1356 +#: htdocs/luci-static/resources/view/fchomo/node.js:1391 msgid "XMUX" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1361 -#: htdocs/luci-static/resources/view/fchomo/node.js:1366 -#: htdocs/luci-static/resources/view/fchomo/node.js:1371 -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 -#: htdocs/luci-static/resources/view/fchomo/node.js:1381 -#: htdocs/luci-static/resources/view/fchomo/node.js:1386 +#: htdocs/luci-static/resources/view/fchomo/node.js:1396 +#: htdocs/luci-static/resources/view/fchomo/node.js:1401 +#: htdocs/luci-static/resources/view/fchomo/node.js:1406 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 +#: htdocs/luci-static/resources/view/fchomo/node.js:1421 msgid "XMUX:" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:699 +#: htdocs/luci-static/resources/fchomo/listeners.js:703 msgid "XOR mode" msgstr "XOR 模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:699 +#: htdocs/luci-static/resources/view/fchomo/node.js:716 msgid "Xudp (Xray-core)" msgstr "" @@ -3523,7 +3552,7 @@ msgstr "" msgid "Yaml text" msgstr "Yaml 格式文本" -#: htdocs/luci-static/resources/view/fchomo/node.js:1856 +#: htdocs/luci-static/resources/view/fchomo/node.js:1898 msgid "Yes" msgstr "" @@ -3531,31 +3560,31 @@ msgstr "" msgid "YouTube" msgstr "油管" -#: htdocs/luci-static/resources/fchomo.js:1699 +#: htdocs/luci-static/resources/fchomo.js:1726 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "您的 %s 已成功上传。大小:%sB。" -#: htdocs/luci-static/resources/fchomo.js:343 -#: htdocs/luci-static/resources/fchomo.js:356 -#: htdocs/luci-static/resources/fchomo.js:361 -#: htdocs/luci-static/resources/view/fchomo/node.js:679 +#: htdocs/luci-static/resources/fchomo.js:345 +#: htdocs/luci-static/resources/fchomo.js:358 +#: htdocs/luci-static/resources/fchomo.js:363 +#: htdocs/luci-static/resources/view/fchomo/node.js:696 msgid "aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:344 +#: htdocs/luci-static/resources/fchomo.js:346 msgid "aes-192-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:345 -#: htdocs/luci-static/resources/fchomo.js:362 +#: htdocs/luci-static/resources/fchomo.js:347 +#: htdocs/luci-static/resources/fchomo.js:364 msgid "aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1718 +#: htdocs/luci-static/resources/view/fchomo/node.js:1758 msgid "age private key" msgstr "age 私钥" -#: htdocs/luci-static/resources/view/fchomo/node.js:1777 +#: htdocs/luci-static/resources/view/fchomo/node.js:1819 msgid "age public key" msgstr "age 公钥" @@ -3567,7 +3596,7 @@ msgstr "" msgid "age-x25519" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:676 +#: htdocs/luci-static/resources/view/fchomo/node.js:693 msgid "auto" msgstr "自动" @@ -3575,19 +3604,19 @@ msgstr "自动" msgid "bbr" msgstr "bbr" -#: htdocs/luci-static/resources/fchomo/listeners.js:973 -#: htdocs/luci-static/resources/fchomo/listeners.js:1013 -#: htdocs/luci-static/resources/view/fchomo/node.js:1135 +#: htdocs/luci-static/resources/fchomo/listeners.js:984 +#: htdocs/luci-static/resources/fchomo/listeners.js:1024 +#: htdocs/luci-static/resources/view/fchomo/node.js:1170 msgid "certificate" msgstr "证书" -#: htdocs/luci-static/resources/fchomo.js:346 -#: htdocs/luci-static/resources/fchomo.js:357 -#: htdocs/luci-static/resources/fchomo.js:363 +#: htdocs/luci-static/resources/fchomo.js:348 +#: htdocs/luci-static/resources/fchomo.js:359 +#: htdocs/luci-static/resources/fchomo.js:365 msgid "chacha20-ietf-poly1305" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:680 +#: htdocs/luci-static/resources/view/fchomo/node.js:697 msgid "chacha20-poly1305" msgstr "" @@ -3595,50 +3624,50 @@ msgstr "" msgid "cubic" msgstr "cubic" -#: htdocs/luci-static/resources/fchomo/listeners.js:651 -#: htdocs/luci-static/resources/fchomo/listeners.js:682 +#: htdocs/luci-static/resources/fchomo/listeners.js:655 +#: htdocs/luci-static/resources/fchomo/listeners.js:686 msgid "decryption" msgstr "decryption" -#: htdocs/luci-static/resources/view/fchomo/global.js:829 +#: htdocs/luci-static/resources/view/fchomo/global.js:832 msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)" msgstr "dnsmasq 自行选择上游服务器。 (可能影响 CDN 准确性)" -#: htdocs/luci-static/resources/view/fchomo/node.js:1844 +#: htdocs/luci-static/resources/view/fchomo/node.js:1886 msgid "down" msgstr "Hysteria 下载速率" -#: htdocs/luci-static/resources/fchomo/listeners.js:686 -#: htdocs/luci-static/resources/view/fchomo/node.js:924 -#: htdocs/luci-static/resources/view/fchomo/node.js:947 +#: htdocs/luci-static/resources/fchomo/listeners.js:690 +#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:985 msgid "encryption" msgstr "encryption" #: htdocs/luci-static/resources/fchomo/listeners.js:425 -#: htdocs/luci-static/resources/view/fchomo/node.js:467 +#: htdocs/luci-static/resources/view/fchomo/node.js:479 msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink." msgstr "false = 带宽优化下行 true = 纯 Sudoku 下行。" -#: htdocs/luci-static/resources/fchomo/listeners.js:1115 -#: htdocs/luci-static/resources/fchomo/listeners.js:1124 -#: htdocs/luci-static/resources/fchomo/listeners.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1210 -#: htdocs/luci-static/resources/view/fchomo/node.js:1221 -#: htdocs/luci-static/resources/view/fchomo/node.js:1228 -#: htdocs/luci-static/resources/view/fchomo/node.js:1234 +#: htdocs/luci-static/resources/fchomo/listeners.js:1126 +#: htdocs/luci-static/resources/fchomo/listeners.js:1135 +#: htdocs/luci-static/resources/fchomo/listeners.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1245 +#: htdocs/luci-static/resources/view/fchomo/node.js:1256 +#: htdocs/luci-static/resources/view/fchomo/node.js:1263 +#: htdocs/luci-static/resources/view/fchomo/node.js:1269 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1291 +#: htdocs/luci-static/resources/view/fchomo/node.js:1326 msgid "gRPC User-Agent" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1296 +#: htdocs/luci-static/resources/view/fchomo/node.js:1331 msgid "gRPC ping interval" msgstr "gRPC ping 间隔" -#: htdocs/luci-static/resources/fchomo/listeners.js:1156 -#: htdocs/luci-static/resources/view/fchomo/node.js:1287 +#: htdocs/luci-static/resources/fchomo/listeners.js:1167 +#: htdocs/luci-static/resources/view/fchomo/node.js:1322 msgid "gRPC service name" msgstr "gRPC 服务名称" @@ -3646,11 +3675,23 @@ msgstr "gRPC 服务名称" msgid "gVisor" msgstr "gVisor" -#: htdocs/luci-static/resources/view/fchomo/node.js:1403 +#: htdocs/luci-static/resources/view/fchomo/node.js:760 +msgid "h2" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1438 msgid "h2mux" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:851 +#: htdocs/luci-static/resources/view/fchomo/node.js:758 +msgid "h3" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:759 +msgid "h3-l4proxy" +msgstr "" + +#: htdocs/luci-static/resources/fchomo/listeners.js:855 msgid "least one keypair required" msgstr "至少需要一对密钥" @@ -3658,23 +3699,23 @@ msgstr "至少需要一对密钥" msgid "metacubexd" msgstr "metacubexd" -#: htdocs/luci-static/resources/view/fchomo/client.js:1003 -#: htdocs/luci-static/resources/view/fchomo/client.js:1259 -#: htdocs/luci-static/resources/view/fchomo/client.js:1351 -#: htdocs/luci-static/resources/view/fchomo/client.js:1490 -#: htdocs/luci-static/resources/view/fchomo/client.js:1721 -#: htdocs/luci-static/resources/view/fchomo/client.js:1777 -#: htdocs/luci-static/resources/view/fchomo/node.js:1604 +#: htdocs/luci-static/resources/view/fchomo/client.js:1011 +#: htdocs/luci-static/resources/view/fchomo/client.js:1267 +#: htdocs/luci-static/resources/view/fchomo/client.js:1359 +#: htdocs/luci-static/resources/view/fchomo/client.js:1501 +#: htdocs/luci-static/resources/view/fchomo/client.js:1732 +#: htdocs/luci-static/resources/view/fchomo/client.js:1788 +#: htdocs/luci-static/resources/view/fchomo/node.js:1644 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:247 msgid "mihomo config" msgstr "mihomo 配置" -#: htdocs/luci-static/resources/fchomo.js:389 +#: htdocs/luci-static/resources/fchomo.js:391 msgid "mlkem768x25519plus" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1475 -#: htdocs/luci-static/resources/view/fchomo/node.js:1822 +#: htdocs/luci-static/resources/view/fchomo/node.js:1511 +#: htdocs/luci-static/resources/view/fchomo/node.js:1864 msgid "mpTCP" msgstr "多路径 TCP (mpTCP)" @@ -3682,24 +3723,24 @@ msgstr "多路径 TCP (mpTCP)" msgid "new_reno" msgstr "new_reno" -#: htdocs/luci-static/resources/view/fchomo/client.js:820 +#: htdocs/luci-static/resources/view/fchomo/client.js:828 msgid "no-resolve" msgstr "no-resolve" -#: htdocs/luci-static/resources/fchomo.js:1434 -#: htdocs/luci-static/resources/fchomo.js:1529 -#: htdocs/luci-static/resources/fchomo.js:1564 -#: htdocs/luci-static/resources/fchomo.js:1592 +#: htdocs/luci-static/resources/fchomo.js:1461 +#: htdocs/luci-static/resources/fchomo.js:1556 +#: htdocs/luci-static/resources/fchomo.js:1591 +#: htdocs/luci-static/resources/fchomo.js:1619 msgid "non-empty value" msgstr "非空值" -#: htdocs/luci-static/resources/fchomo.js:341 -#: htdocs/luci-static/resources/fchomo.js:355 -#: htdocs/luci-static/resources/fchomo.js:367 +#: htdocs/luci-static/resources/fchomo.js:343 +#: htdocs/luci-static/resources/fchomo.js:357 +#: htdocs/luci-static/resources/fchomo.js:369 #: htdocs/luci-static/resources/fchomo/listeners.js:561 -#: htdocs/luci-static/resources/view/fchomo/node.js:677 -#: htdocs/luci-static/resources/view/fchomo/node.js:697 -#: htdocs/luci-static/resources/view/fchomo/node.js:835 +#: htdocs/luci-static/resources/view/fchomo/node.js:694 +#: htdocs/luci-static/resources/view/fchomo/node.js:714 +#: htdocs/luci-static/resources/view/fchomo/node.js:872 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:324 msgid "none" msgstr "无" @@ -3708,49 +3749,49 @@ msgstr "无" msgid "not found" msgstr "未找到" -#: htdocs/luci-static/resources/view/fchomo/client.js:1020 +#: htdocs/luci-static/resources/view/fchomo/client.js:1028 msgid "not included \",\"" msgstr "不包含 \",\"" -#: htdocs/luci-static/resources/fchomo.js:227 -#: htdocs/luci-static/resources/fchomo/listeners.js:607 -#: htdocs/luci-static/resources/fchomo/listeners.js:608 +#: htdocs/luci-static/resources/fchomo.js:228 +#: htdocs/luci-static/resources/fchomo/listeners.js:611 +#: htdocs/luci-static/resources/fchomo/listeners.js:612 msgid "null" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:562 -#: htdocs/luci-static/resources/view/fchomo/node.js:836 +#: htdocs/luci-static/resources/view/fchomo/node.js:873 msgid "obfs-simple" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:514 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 msgid "only applies when %s is %s." msgstr "仅当 %s 为 %s 时适用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:512 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 msgid "only applies when %s is not %s." msgstr "仅当 %s 不为 %s 时适用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1802 +#: htdocs/luci-static/resources/view/fchomo/node.js:1844 msgid "override.proxy-name" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:698 +#: htdocs/luci-static/resources/view/fchomo/node.js:715 msgid "packet addr (v2ray-core v5+)" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1166 -#: htdocs/luci-static/resources/view/fchomo/node.js:1329 +#: htdocs/luci-static/resources/fchomo/listeners.js:1177 +#: htdocs/luci-static/resources/view/fchomo/node.js:1364 msgid "packet-up" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:439 -#: htdocs/luci-static/resources/view/fchomo/node.js:481 +#: htdocs/luci-static/resources/view/fchomo/node.js:493 msgid "poll" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:988 -#: htdocs/luci-static/resources/view/fchomo/node.js:1149 +#: htdocs/luci-static/resources/fchomo/listeners.js:999 +#: htdocs/luci-static/resources/view/fchomo/node.js:1184 msgid "private key" msgstr "私钥" @@ -3758,12 +3799,12 @@ msgstr "私钥" msgid "razord-meta" msgstr "razord-meta" -#: htdocs/luci-static/resources/view/fchomo/client.js:1183 -#: htdocs/luci-static/resources/view/fchomo/client.js:1189 +#: htdocs/luci-static/resources/view/fchomo/client.js:1191 +#: htdocs/luci-static/resources/view/fchomo/client.js:1197 msgid "requires front-end adaptation using the API." msgstr "需要使用 API 的前端适配。" -#: htdocs/luci-static/resources/view/fchomo/node.js:840 +#: htdocs/luci-static/resources/view/fchomo/node.js:877 msgid "restls" msgstr "" @@ -3772,38 +3813,38 @@ msgid "rule-set" msgstr "规则集" #: htdocs/luci-static/resources/fchomo/listeners.js:563 -#: htdocs/luci-static/resources/view/fchomo/node.js:839 +#: htdocs/luci-static/resources/view/fchomo/node.js:876 msgid "shadow-tls" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1401 +#: htdocs/luci-static/resources/view/fchomo/node.js:1436 msgid "smux" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:438 -#: htdocs/luci-static/resources/view/fchomo/node.js:480 +#: htdocs/luci-static/resources/view/fchomo/node.js:492 msgid "split-stream" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:802 +#: htdocs/luci-static/resources/view/fchomo/client.js:810 msgid "src" msgstr "src" -#: htdocs/luci-static/resources/fchomo/listeners.js:1164 -#: htdocs/luci-static/resources/view/fchomo/node.js:1327 +#: htdocs/luci-static/resources/fchomo/listeners.js:1175 +#: htdocs/luci-static/resources/view/fchomo/node.js:1362 msgid "stream-one" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1165 -#: htdocs/luci-static/resources/view/fchomo/node.js:1328 +#: htdocs/luci-static/resources/fchomo/listeners.js:1176 +#: htdocs/luci-static/resources/view/fchomo/node.js:1363 msgid "stream-up" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1181 +#: htdocs/luci-static/resources/fchomo/listeners.js:1192 msgid "stream-up server seconds" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:514 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 msgid "stream/poll/auto" msgstr "" @@ -3815,100 +3856,100 @@ msgstr "" msgid "unchecked" msgstr "未检查" -#: htdocs/luci-static/resources/fchomo.js:453 +#: htdocs/luci-static/resources/fchomo.js:455 msgid "unique UCI identifier" msgstr "独立 UCI 标识" -#: htdocs/luci-static/resources/fchomo.js:456 +#: htdocs/luci-static/resources/fchomo.js:458 msgid "unique identifier" msgstr "独立标识" -#: htdocs/luci-static/resources/fchomo.js:1601 +#: htdocs/luci-static/resources/fchomo.js:1628 msgid "unique value" msgstr "独立值" -#: htdocs/luci-static/resources/view/fchomo/node.js:1838 +#: htdocs/luci-static/resources/view/fchomo/node.js:1880 msgid "up" msgstr "Hysteria 上传速率" #: htdocs/luci-static/resources/fchomo/listeners.js:464 #: htdocs/luci-static/resources/fchomo/listeners.js:596 -#: htdocs/luci-static/resources/view/fchomo/node.js:530 -#: htdocs/luci-static/resources/view/fchomo/node.js:572 -#: htdocs/luci-static/resources/view/fchomo/node.js:867 -#: htdocs/luci-static/resources/view/fchomo/node.js:917 +#: htdocs/luci-static/resources/view/fchomo/node.js:542 +#: htdocs/luci-static/resources/view/fchomo/node.js:584 +#: htdocs/luci-static/resources/view/fchomo/node.js:904 +#: htdocs/luci-static/resources/view/fchomo/node.js:955 msgid "v1" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:465 #: htdocs/luci-static/resources/fchomo/listeners.js:597 -#: htdocs/luci-static/resources/view/fchomo/node.js:531 -#: htdocs/luci-static/resources/view/fchomo/node.js:868 -#: htdocs/luci-static/resources/view/fchomo/node.js:918 +#: htdocs/luci-static/resources/view/fchomo/node.js:543 +#: htdocs/luci-static/resources/view/fchomo/node.js:905 +#: htdocs/luci-static/resources/view/fchomo/node.js:956 msgid "v2" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:466 #: htdocs/luci-static/resources/fchomo/listeners.js:598 -#: htdocs/luci-static/resources/view/fchomo/node.js:532 -#: htdocs/luci-static/resources/view/fchomo/node.js:869 +#: htdocs/luci-static/resources/view/fchomo/node.js:544 +#: htdocs/luci-static/resources/view/fchomo/node.js:906 msgid "v3" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:467 -#: htdocs/luci-static/resources/view/fchomo/node.js:533 +#: htdocs/luci-static/resources/view/fchomo/node.js:545 msgid "v4" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:468 -#: htdocs/luci-static/resources/view/fchomo/node.js:534 +#: htdocs/luci-static/resources/view/fchomo/node.js:546 msgid "v5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1481 -#: htdocs/luci-static/resources/fchomo.js:1484 +#: htdocs/luci-static/resources/fchomo.js:1508 +#: htdocs/luci-static/resources/fchomo.js:1511 msgid "valid JSON format" msgstr "有效的 JSON 格式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1109 +#: htdocs/luci-static/resources/view/fchomo/node.js:1144 msgid "valid SHA256 string with %d characters" msgstr "包含 %d 个字符的有效 SHA256 字符串" -#: htdocs/luci-static/resources/fchomo.js:1506 -#: htdocs/luci-static/resources/fchomo.js:1509 +#: htdocs/luci-static/resources/fchomo.js:1533 +#: htdocs/luci-static/resources/fchomo.js:1536 msgid "valid URL" msgstr "有效网址" -#: htdocs/luci-static/resources/fchomo.js:1519 +#: htdocs/luci-static/resources/fchomo.js:1546 msgid "valid base64 key with %d characters" msgstr "包含 %d 个字符的有效 base64 密钥" -#: htdocs/luci-static/resources/fchomo.js:1579 -#: htdocs/luci-static/resources/fchomo.js:1585 +#: htdocs/luci-static/resources/fchomo.js:1606 +#: htdocs/luci-static/resources/fchomo.js:1612 msgid "valid format: 2x, 2p, 4v" msgstr "有效格式: 2x, 2p, 4v" -#: htdocs/luci-static/resources/fchomo.js:1566 +#: htdocs/luci-static/resources/fchomo.js:1593 msgid "valid key length with %d characters" msgstr "包含 %d 个字符的有效密钥" -#: htdocs/luci-static/resources/fchomo.js:1444 +#: htdocs/luci-static/resources/fchomo.js:1471 msgid "valid port value" msgstr "有效端口值" -#: htdocs/luci-static/resources/fchomo.js:1494 +#: htdocs/luci-static/resources/fchomo.js:1521 msgid "valid uuid" msgstr "有效 uuid" -#: htdocs/luci-static/resources/fchomo.js:413 +#: htdocs/luci-static/resources/fchomo.js:415 msgid "vless-mlkem768" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:412 +#: htdocs/luci-static/resources/fchomo.js:414 msgid "vless-x25519" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:347 +#: htdocs/luci-static/resources/fchomo.js:349 msgid "xchacha20-ietf-poly1305" msgstr "" @@ -3916,7 +3957,7 @@ msgstr "" msgid "yacd-meta" msgstr "yacd-meta" -#: htdocs/luci-static/resources/view/fchomo/node.js:1402 +#: htdocs/luci-static/resources/view/fchomo/node.js:1437 msgid "yamux" msgstr "" @@ -3924,14 +3965,29 @@ msgstr "" msgid "zashboard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:678 +#: htdocs/luci-static/resources/view/fchomo/node.js:695 msgid "zero" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1262 +#: htdocs/luci-static/resources/fchomo.js:1289 msgid "🡇" msgstr "" +#~ msgid "API routing mark (SO_MARK)" +#~ msgstr "API 路由标记 (SO_MARK)" + +#~ msgid "Listen routing mark (SO_MARK)" +#~ msgstr "监听路由标记 (SO_MARK)" + +#~ msgid "Routing mark (SO_MARK)" +#~ msgstr "路由标记 (SO_MARK)" + +#~ msgid "Edit node" +#~ msgstr "编辑节点" + +#~ msgid "Routing mark" +#~ msgstr "路由标记" + #~ msgid "Obfuscated as ASCII data stream" #~ msgstr "混淆为 ASCII 数据流" diff --git a/luci-app-fchomo/po/zh_Hant/fchomo.po b/luci-app-fchomo/po/zh_Hant/fchomo.po index 41341762..9404fe33 100644 --- a/luci-app-fchomo/po/zh_Hant/fchomo.po +++ b/luci-app-fchomo/po/zh_Hant/fchomo.po @@ -12,53 +12,55 @@ msgstr "" msgid "%s log" msgstr "%s 日誌" -#: htdocs/luci-static/resources/fchomo.js:250 #: htdocs/luci-static/resources/fchomo.js:251 #: htdocs/luci-static/resources/fchomo.js:252 #: htdocs/luci-static/resources/fchomo.js:253 #: htdocs/luci-static/resources/fchomo.js:254 #: htdocs/luci-static/resources/fchomo.js:255 +#: htdocs/luci-static/resources/fchomo.js:256 msgid "%s ports" msgstr "%s 連接埠" -#: htdocs/luci-static/resources/fchomo.js:615 -#: htdocs/luci-static/resources/fchomo.js:618 +#: htdocs/luci-static/resources/fchomo.js:617 +#: htdocs/luci-static/resources/fchomo.js:620 #: htdocs/luci-static/resources/view/fchomo/client.js:316 msgid "(Imported)" msgstr "(已導入)" -#: htdocs/luci-static/resources/fchomo/listeners.js:991 -#: htdocs/luci-static/resources/fchomo/listeners.js:999 -#: htdocs/luci-static/resources/fchomo/listeners.js:1008 +#: htdocs/luci-static/resources/fchomo/listeners.js:1002 +#: htdocs/luci-static/resources/fchomo/listeners.js:1010 +#: htdocs/luci-static/resources/fchomo/listeners.js:1019 #: htdocs/luci-static/resources/view/fchomo/global.js:564 #: htdocs/luci-static/resources/view/fchomo/global.js:570 -#: htdocs/luci-static/resources/view/fchomo/node.js:1124 -#: htdocs/luci-static/resources/view/fchomo/node.js:1130 -#: htdocs/luci-static/resources/view/fchomo/node.js:1138 -#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/view/fchomo/node.js:1159 +#: htdocs/luci-static/resources/view/fchomo/node.js:1165 +#: htdocs/luci-static/resources/view/fchomo/node.js:1173 +#: htdocs/luci-static/resources/view/fchomo/node.js:1179 msgid "(mTLS)" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:861 -#: htdocs/luci-static/resources/view/fchomo/client.js:862 -#: htdocs/luci-static/resources/view/fchomo/client.js:1044 -#: htdocs/luci-static/resources/view/fchomo/client.js:1045 -#: htdocs/luci-static/resources/view/fchomo/client.js:1058 -#: htdocs/luci-static/resources/view/fchomo/client.js:1059 -#: htdocs/luci-static/resources/view/fchomo/client.js:1288 -#: htdocs/luci-static/resources/view/fchomo/node.js:1993 -#: htdocs/luci-static/resources/view/fchomo/node.js:1999 -#: htdocs/luci-static/resources/view/fchomo/node.js:2013 -#: htdocs/luci-static/resources/view/fchomo/node.js:2019 +#: htdocs/luci-static/resources/view/fchomo/client.js:869 +#: htdocs/luci-static/resources/view/fchomo/client.js:870 +#: htdocs/luci-static/resources/view/fchomo/client.js:1052 +#: htdocs/luci-static/resources/view/fchomo/client.js:1053 +#: htdocs/luci-static/resources/view/fchomo/client.js:1066 +#: htdocs/luci-static/resources/view/fchomo/client.js:1067 +#: htdocs/luci-static/resources/view/fchomo/client.js:1296 +#: htdocs/luci-static/resources/view/fchomo/node.js:268 +#: htdocs/luci-static/resources/view/fchomo/node.js:274 +#: htdocs/luci-static/resources/view/fchomo/node.js:2035 +#: htdocs/luci-static/resources/view/fchomo/node.js:2041 +#: htdocs/luci-static/resources/view/fchomo/node.js:2055 +#: htdocs/luci-static/resources/view/fchomo/node.js:2061 msgid "-- Please choose --" msgstr "-- 請選擇 --" -#: htdocs/luci-static/resources/fchomo.js:402 +#: htdocs/luci-static/resources/fchomo.js:404 msgid "0-RTT reuse." msgstr "0-RTT 重用。" -#: htdocs/luci-static/resources/fchomo.js:399 -#: htdocs/luci-static/resources/fchomo.js:403 +#: htdocs/luci-static/resources/fchomo.js:401 +#: htdocs/luci-static/resources/fchomo.js:405 msgid "1-RTT only." msgstr "僅限 1-RTT。" @@ -66,32 +68,32 @@ msgstr "僅限 1-RTT。" msgid "163Music" msgstr "網易雲音樂" -#: htdocs/luci-static/resources/fchomo.js:349 +#: htdocs/luci-static/resources/fchomo.js:351 msgid "2022-blake3-aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:350 +#: htdocs/luci-static/resources/fchomo.js:352 msgid "2022-blake3-aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:351 +#: htdocs/luci-static/resources/fchomo.js:353 msgid "2022-blake3-chacha20-poly1305" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:690 +#: htdocs/luci-static/resources/view/fchomo/client.js:698 msgid "0 or 1 only." msgstr "僅限 01。" -#: htdocs/luci-static/resources/fchomo/listeners.js:969 -#: htdocs/luci-static/resources/fchomo/listeners.js:984 -#: htdocs/luci-static/resources/fchomo/listeners.js:1009 -#: htdocs/luci-static/resources/view/fchomo/node.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1145 +#: htdocs/luci-static/resources/fchomo/listeners.js:980 +#: htdocs/luci-static/resources/fchomo/listeners.js:995 +#: htdocs/luci-static/resources/fchomo/listeners.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1166 +#: htdocs/luci-static/resources/view/fchomo/node.js:1180 msgid "Save your configuration before uploading files!" msgstr "上傳文件前請先保存配置!" #: htdocs/luci-static/resources/fchomo/listeners.js:286 -#: htdocs/luci-static/resources/view/fchomo/node.js:402 +#: htdocs/luci-static/resources/view/fchomo/node.js:414 msgid "" "A base64 string is used to fine-tune network behavior.
Please refer to " "the document" msgstr "客戶端維護的 NAT 映射 的老化時間。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:794 -#: htdocs/luci-static/resources/view/fchomo/global.js:857 -#: htdocs/luci-static/resources/view/fchomo/global.js:891 +#: htdocs/luci-static/resources/view/fchomo/global.js:797 +#: htdocs/luci-static/resources/view/fchomo/global.js:860 +#: htdocs/luci-static/resources/view/fchomo/global.js:894 msgid "All allowed" msgstr "允許所有" -#: htdocs/luci-static/resources/fchomo.js:247 +#: htdocs/luci-static/resources/fchomo.js:248 msgid "All ports" msgstr "所有連接埠" @@ -255,11 +261,11 @@ msgid "" msgstr "" "允許從私有網路訪問。
要從公共網站訪問私有網路上的 API,則必須啟用。" -#: htdocs/luci-static/resources/fchomo/listeners.js:896 +#: htdocs/luci-static/resources/fchomo/listeners.js:961 msgid "Allow insecure connections" msgstr "允許不安全的連線" -#: htdocs/luci-static/resources/view/fchomo/node.js:798 +#: htdocs/luci-static/resources/view/fchomo/node.js:835 msgid "Allowed IPs" msgstr "允許的 IP" @@ -272,12 +278,12 @@ msgid "Already in updating." msgstr "已在更新中。" #: htdocs/luci-static/resources/fchomo/listeners.js:543 -#: htdocs/luci-static/resources/view/fchomo/node.js:668 +#: htdocs/luci-static/resources/view/fchomo/node.js:685 msgid "Alter ID" msgstr "額外 ID" #: htdocs/luci-static/resources/fchomo.js:163 -#: htdocs/luci-static/resources/fchomo.js:198 +#: htdocs/luci-static/resources/fchomo.js:199 msgid "AnyTLS" msgstr "" @@ -285,12 +291,12 @@ msgstr "" msgid "Application version" msgstr "應用版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:819 +#: htdocs/luci-static/resources/view/fchomo/global.js:822 msgid "As the TOP upstream of dnsmasq" msgstr "作為 dnsmasq 的最優先上游" -#: htdocs/luci-static/resources/view/fchomo/global.js:820 -#: htdocs/luci-static/resources/view/fchomo/global.js:827 +#: htdocs/luci-static/resources/view/fchomo/global.js:823 +#: htdocs/luci-static/resources/view/fchomo/global.js:830 msgid "As the TOP upstream of dnsmasq." msgstr "作為 dnsmasq 的最優先上游。" @@ -298,16 +304,16 @@ msgstr "作為 dnsmasq 的最優先上游。" msgid "Auth timeout" msgstr "認證超時" -#: htdocs/luci-static/resources/view/fchomo/node.js:690 +#: htdocs/luci-static/resources/view/fchomo/node.js:707 msgid "Authenticated length" msgstr "認證長度" #: htdocs/luci-static/resources/fchomo/listeners.js:440 -#: htdocs/luci-static/resources/fchomo/listeners.js:1163 +#: htdocs/luci-static/resources/fchomo/listeners.js:1174 #: htdocs/luci-static/resources/view/fchomo/global.js:423 -#: htdocs/luci-static/resources/view/fchomo/node.js:482 -#: htdocs/luci-static/resources/view/fchomo/node.js:506 -#: htdocs/luci-static/resources/view/fchomo/node.js:1326 +#: htdocs/luci-static/resources/view/fchomo/node.js:494 +#: htdocs/luci-static/resources/view/fchomo/node.js:518 +#: htdocs/luci-static/resources/view/fchomo/node.js:1361 msgid "Auto" msgstr "自動" @@ -323,8 +329,8 @@ msgstr "自動更新" msgid "Auto update resources." msgstr "自動更新資源文件。" -#: htdocs/luci-static/resources/fchomo/listeners.js:629 -#: htdocs/luci-static/resources/view/fchomo/node.js:895 +#: htdocs/luci-static/resources/fchomo/listeners.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:933 msgid "BBR profile" msgstr "BBR 設定檔" @@ -332,11 +338,11 @@ msgstr "BBR 設定檔" msgid "Baidu" msgstr "百度" -#: htdocs/luci-static/resources/view/fchomo/node.js:705 +#: htdocs/luci-static/resources/view/fchomo/node.js:722 msgid "Base64 encoded ECDSA private key on the NIST P-256 curve." msgstr "基於 NIST P-256 曲線的 Base64 編碼 ECDSA 私鑰。" -#: htdocs/luci-static/resources/view/fchomo/node.js:713 +#: htdocs/luci-static/resources/view/fchomo/node.js:730 msgid "Base64 encoded ECDSA public key on the NIST P-256 curve." msgstr "基於 NIST P-256 曲線的 Base64 編碼 ECDSA 公鑰。" @@ -357,23 +363,23 @@ msgstr "二進位格式僅支持 domain/ipcidr" msgid "Binary mrs" msgstr "二進位 mrs" -#: htdocs/luci-static/resources/view/fchomo/global.js:755 -#: htdocs/luci-static/resources/view/fchomo/node.js:1485 -#: htdocs/luci-static/resources/view/fchomo/node.js:1867 +#: htdocs/luci-static/resources/view/fchomo/global.js:758 +#: htdocs/luci-static/resources/view/fchomo/node.js:1522 +#: htdocs/luci-static/resources/view/fchomo/node.js:1909 msgid "Bind interface" msgstr "綁定介面" -#: htdocs/luci-static/resources/view/fchomo/node.js:1486 -#: htdocs/luci-static/resources/view/fchomo/node.js:1868 +#: htdocs/luci-static/resources/view/fchomo/node.js:1523 +#: htdocs/luci-static/resources/view/fchomo/node.js:1910 msgid "Bind outbound interface.
" msgstr "綁定出站介面。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:756 +#: htdocs/luci-static/resources/view/fchomo/global.js:759 msgid "" "Bind outbound traffic to specific interface. Leave empty to auto detect.
" msgstr "綁定出站流量至指定介面。留空自動檢測。
" -#: htdocs/luci-static/resources/view/fchomo/global.js:796 +#: htdocs/luci-static/resources/view/fchomo/global.js:799 msgid "Black list" msgstr "黑名單" @@ -381,16 +387,16 @@ msgstr "黑名單" msgid "Block DNS queries" msgstr "封鎖 DNS 請求" -#: htdocs/luci-static/resources/view/fchomo/client.js:1690 -#: htdocs/luci-static/resources/view/fchomo/client.js:1699 +#: htdocs/luci-static/resources/view/fchomo/client.js:1701 +#: htdocs/luci-static/resources/view/fchomo/client.js:1710 msgid "Bootstrap DNS policy (Node)" msgstr "引導 DNS 策略 (節點)" -#: htdocs/luci-static/resources/view/fchomo/client.js:1392 +#: htdocs/luci-static/resources/view/fchomo/client.js:1403 msgid "Bootstrap DNS server" msgstr "引導 DNS 伺服器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1399 +#: htdocs/luci-static/resources/view/fchomo/client.js:1410 msgid "Bootstrap DNS server (Node)" msgstr "引導 DNS 伺服器 (節點)" @@ -398,11 +404,11 @@ msgstr "引導 DNS 伺服器 (節點)" msgid "BundleMRS version" msgstr "BundleMRS 版本" -#: htdocs/luci-static/resources/view/fchomo/global.js:858 +#: htdocs/luci-static/resources/view/fchomo/global.js:861 msgid "Bypass CN" msgstr "繞過 CN 流量" -#: htdocs/luci-static/resources/view/fchomo/global.js:892 +#: htdocs/luci-static/resources/view/fchomo/global.js:895 msgid "Bypass DSCP" msgstr "繞過 DSCP" @@ -410,10 +416,10 @@ msgstr "繞過 DSCP" #: htdocs/luci-static/resources/fchomo/listeners.js:439 #: htdocs/luci-static/resources/fchomo/listeners.js:440 #: htdocs/luci-static/resources/fchomo/listeners.js:441 -#: htdocs/luci-static/resources/view/fchomo/node.js:480 -#: htdocs/luci-static/resources/view/fchomo/node.js:481 -#: htdocs/luci-static/resources/view/fchomo/node.js:482 -#: htdocs/luci-static/resources/view/fchomo/node.js:483 +#: htdocs/luci-static/resources/view/fchomo/node.js:492 +#: htdocs/luci-static/resources/view/fchomo/node.js:493 +#: htdocs/luci-static/resources/view/fchomo/node.js:494 +#: htdocs/luci-static/resources/view/fchomo/node.js:495 msgid "CDN support" msgstr "CDN 支援" @@ -429,21 +435,21 @@ msgstr "CORS 允許私有網路" msgid "CORS allowed origins, * will be used if empty." msgstr "CORS 允許的來源,留空則使用 *。" -#: htdocs/luci-static/resources/fchomo.js:731 +#: htdocs/luci-static/resources/fchomo.js:733 msgid "Cancel" msgstr "取消" -#: htdocs/luci-static/resources/view/fchomo/node.js:1103 +#: htdocs/luci-static/resources/view/fchomo/node.js:1138 msgid "Cert fingerprint" msgstr "憑證指紋" -#: htdocs/luci-static/resources/view/fchomo/node.js:1104 +#: htdocs/luci-static/resources/view/fchomo/node.js:1139 msgid "" "Certificate fingerprint. Used to implement SSL Pinning and prevent MitM." msgstr "憑證指紋。用於實現 SSL憑證固定 並防止 MitM。" -#: htdocs/luci-static/resources/fchomo/listeners.js:961 -#: htdocs/luci-static/resources/view/fchomo/node.js:1124 +#: htdocs/luci-static/resources/fchomo/listeners.js:972 +#: htdocs/luci-static/resources/view/fchomo/node.js:1159 msgid "Certificate path" msgstr "憑證路徑" @@ -474,14 +480,14 @@ msgstr "大陸網域清單版本" #: htdocs/luci-static/resources/fchomo/listeners.js:255 #: htdocs/luci-static/resources/fchomo/listeners.js:354 -#: htdocs/luci-static/resources/view/fchomo/node.js:355 -#: htdocs/luci-static/resources/view/fchomo/node.js:414 -#: htdocs/luci-static/resources/view/fchomo/node.js:674 +#: htdocs/luci-static/resources/view/fchomo/node.js:367 +#: htdocs/luci-static/resources/view/fchomo/node.js:426 +#: htdocs/luci-static/resources/view/fchomo/node.js:691 msgid "Chipher" msgstr "加密方法" #: htdocs/luci-static/resources/fchomo/listeners.js:363 -#: htdocs/luci-static/resources/view/fchomo/node.js:423 +#: htdocs/luci-static/resources/view/fchomo/node.js:435 msgid "Chipher must be enabled if obfuscate downlink is disabled." msgstr "如果下行鏈路混淆功能已停用,則必須啟用加密。" @@ -497,25 +503,25 @@ msgstr "" "點擊
此處下載" "最新的初始包。" -#: htdocs/luci-static/resources/fchomo/listeners.js:727 -#: htdocs/luci-static/resources/fchomo/listeners.js:1000 +#: htdocs/luci-static/resources/fchomo/listeners.js:731 +#: htdocs/luci-static/resources/fchomo/listeners.js:1011 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:959 -#: htdocs/luci-static/resources/view/fchomo/node.js:1125 -#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:997 +#: htdocs/luci-static/resources/view/fchomo/node.js:1160 +#: htdocs/luci-static/resources/view/fchomo/node.js:1174 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:22 msgid "Client" msgstr "客戶端" -#: htdocs/luci-static/resources/fchomo/listeners.js:999 +#: htdocs/luci-static/resources/fchomo/listeners.js:1010 msgid "Client Auth Certificate path" msgstr "客戶端認證憑證路徑" -#: htdocs/luci-static/resources/fchomo/listeners.js:991 +#: htdocs/luci-static/resources/fchomo/listeners.js:1002 msgid "Client Auth type" msgstr "客戶端認證類型" -#: htdocs/luci-static/resources/view/fchomo/node.js:1170 +#: htdocs/luci-static/resources/view/fchomo/node.js:1205 msgid "Client fingerprint" msgstr "客戶端指紋" @@ -531,21 +537,21 @@ msgstr "客戶端狀態" msgid "Collecting data..." msgstr "收集資料中..." -#: htdocs/luci-static/resources/fchomo.js:248 #: htdocs/luci-static/resources/fchomo.js:249 +#: htdocs/luci-static/resources/fchomo.js:250 msgid "Common ports (bypass P2P traffic)" msgstr "常用連接埠(繞過 P2P 流量)" -#: htdocs/luci-static/resources/fchomo.js:1378 +#: htdocs/luci-static/resources/fchomo.js:1405 msgid "Complete" msgstr "完成" -#: htdocs/luci-static/resources/view/fchomo/node.js:1811 +#: htdocs/luci-static/resources/view/fchomo/node.js:1853 msgid "Configuration Items" msgstr "配置項" -#: htdocs/luci-static/resources/fchomo/listeners.js:621 -#: htdocs/luci-static/resources/view/fchomo/node.js:887 +#: htdocs/luci-static/resources/fchomo/listeners.js:625 +#: htdocs/luci-static/resources/view/fchomo/node.js:924 msgid "Congestion controller" msgstr "擁塞控制器" @@ -553,7 +559,7 @@ msgstr "擁塞控制器" msgid "Connection check" msgstr "連接檢查" -#: htdocs/luci-static/resources/view/fchomo/node.js:539 +#: htdocs/luci-static/resources/view/fchomo/node.js:551 msgid "Connection reuse" msgstr "連接重用" @@ -561,19 +567,19 @@ msgstr "連接重用" msgid "Conservative" msgstr "保守" -#: htdocs/luci-static/resources/fchomo.js:600 +#: htdocs/luci-static/resources/fchomo.js:602 msgid "Content copied to clipboard!" msgstr "內容已複製到剪貼簿!" -#: htdocs/luci-static/resources/view/fchomo/client.js:671 -#: htdocs/luci-static/resources/view/fchomo/node.js:1658 -#: htdocs/luci-static/resources/view/fchomo/node.js:1684 +#: htdocs/luci-static/resources/view/fchomo/client.js:679 +#: htdocs/luci-static/resources/view/fchomo/node.js:1698 +#: htdocs/luci-static/resources/view/fchomo/node.js:1724 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:348 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:374 msgid "Content will not be verified, Please make sure you enter it correctly." msgstr "內容將不會被驗證,請確保輸入正確。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1657 +#: htdocs/luci-static/resources/view/fchomo/node.js:1697 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:347 msgid "Contents" msgstr "內容" @@ -582,7 +588,7 @@ msgstr "內容" msgid "Contents have been saved." msgstr "" -#: htdocs/luci-static/resources/fchomo.js:602 +#: htdocs/luci-static/resources/fchomo.js:604 msgid "Copy" msgstr "複製" @@ -594,21 +600,21 @@ msgstr "核心版本" msgid "Cron expression" msgstr "Cron 表達式" -#: htdocs/luci-static/resources/view/fchomo/global.js:910 +#: htdocs/luci-static/resources/view/fchomo/global.js:913 msgid "Custom Direct List" msgstr "自訂直連清單" -#: htdocs/luci-static/resources/view/fchomo/node.js:1782 +#: htdocs/luci-static/resources/view/fchomo/node.js:1824 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:415 msgid "Custom HTTP header." msgstr "自訂 HTTP header。" -#: htdocs/luci-static/resources/view/fchomo/global.js:928 +#: htdocs/luci-static/resources/view/fchomo/global.js:931 msgid "Custom Proxy List" msgstr "自訂代理清單" #: htdocs/luci-static/resources/fchomo/listeners.js:378 -#: htdocs/luci-static/resources/view/fchomo/node.js:438 +#: htdocs/luci-static/resources/view/fchomo/node.js:450 msgid "Custom byte layout" msgstr "自訂位元組佈局" @@ -617,12 +623,12 @@ msgid "" "Custom internal hosts. Support yaml or json format." msgstr "自訂內部 hosts。支援 yamljson 格式。" -#: htdocs/luci-static/resources/fchomo.js:187 +#: htdocs/luci-static/resources/fchomo.js:188 msgid "DIRECT" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1742 -#: htdocs/luci-static/resources/view/fchomo/client.js:1751 +#: htdocs/luci-static/resources/view/fchomo/client.js:1753 +#: htdocs/luci-static/resources/view/fchomo/client.js:1762 msgid "DNS policy" msgstr "DNS 策略" @@ -630,19 +636,19 @@ msgstr "DNS 策略" msgid "DNS port" msgstr " DNS 連接埠" -#: htdocs/luci-static/resources/view/fchomo/client.js:874 -#: htdocs/luci-static/resources/view/fchomo/client.js:1438 -#: htdocs/luci-static/resources/view/fchomo/client.js:1447 -#: htdocs/luci-static/resources/view/fchomo/node.js:745 -#: htdocs/luci-static/resources/view/fchomo/node.js:828 +#: htdocs/luci-static/resources/view/fchomo/client.js:882 +#: htdocs/luci-static/resources/view/fchomo/client.js:1449 +#: htdocs/luci-static/resources/view/fchomo/client.js:1458 +#: htdocs/luci-static/resources/view/fchomo/node.js:782 +#: htdocs/luci-static/resources/view/fchomo/node.js:865 msgid "DNS server" msgstr "DNS 伺服器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1378 +#: htdocs/luci-static/resources/view/fchomo/client.js:1386 msgid "DNS settings" msgstr "DNS 設定" -#: htdocs/luci-static/resources/view/fchomo/global.js:895 +#: htdocs/luci-static/resources/view/fchomo/global.js:898 msgid "DSCP list" msgstr "DSCP 清單" @@ -658,7 +664,7 @@ msgstr "調試" msgid "Default DNS (issued by WAN)" msgstr "預設 DNS(由 WAN 下發)" -#: htdocs/luci-static/resources/view/fchomo/client.js:1413 +#: htdocs/luci-static/resources/view/fchomo/client.js:1424 msgid "Default DNS server" msgstr "預設 DNS 伺服器" @@ -666,15 +672,15 @@ msgstr "預設 DNS 伺服器" msgid "Derive from priv-key" msgstr "從私鑰派生" -#: htdocs/luci-static/resources/view/fchomo/node.js:799 +#: htdocs/luci-static/resources/view/fchomo/node.js:836 msgid "Destination addresses allowed to be forwarded via Wireguard." msgstr "允許通過 WireGuard 轉發的目的位址" -#: htdocs/luci-static/resources/view/fchomo/node.js:1992 +#: htdocs/luci-static/resources/view/fchomo/node.js:2034 msgid "Destination provider" msgstr "落地供應商" -#: htdocs/luci-static/resources/view/fchomo/node.js:1998 +#: htdocs/luci-static/resources/view/fchomo/node.js:2040 msgid "Destination proxy node" msgstr "落地代理節點" @@ -682,8 +688,8 @@ msgstr "落地代理節點" msgid "Dial fields" msgstr "撥號欄位" -#: htdocs/luci-static/resources/view/fchomo/node.js:2005 -#: htdocs/luci-static/resources/view/fchomo/node.js:2025 +#: htdocs/luci-static/resources/view/fchomo/node.js:2047 +#: htdocs/luci-static/resources/view/fchomo/node.js:2067 msgid "Different chain head/tail" msgstr "不同的鏈頭/鏈尾" @@ -691,29 +697,29 @@ msgstr "不同的鏈頭/鏈尾" msgid "Direct" msgstr "直連" -#: htdocs/luci-static/resources/view/fchomo/global.js:798 +#: htdocs/luci-static/resources/view/fchomo/global.js:801 msgid "Direct IPv4 IP-s" msgstr "直連 IPv4 位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:801 +#: htdocs/luci-static/resources/view/fchomo/global.js:804 msgid "Direct IPv6 IP-s" msgstr "直連 IPv6 位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:804 +#: htdocs/luci-static/resources/view/fchomo/global.js:807 msgid "Direct MAC-s" msgstr "直連 MAC 位址" #: htdocs/luci-static/resources/fchomo/listeners.js:194 #: htdocs/luci-static/resources/view/fchomo/global.js:424 -#: htdocs/luci-static/resources/view/fchomo/node.js:310 +#: htdocs/luci-static/resources/view/fchomo/node.js:322 msgid "Disable" msgstr "停用" -#: htdocs/luci-static/resources/view/fchomo/global.js:732 +#: htdocs/luci-static/resources/view/fchomo/global.js:735 msgid "Disable ECN of quic-go" msgstr "停用 quic-go 的 明確壅塞通知(ECN)" -#: htdocs/luci-static/resources/view/fchomo/global.js:729 +#: htdocs/luci-static/resources/view/fchomo/global.js:732 msgid "Disable GSO of quic-go" msgstr "停用 quic-go 的 通用分段卸載(GSO)" @@ -721,19 +727,19 @@ msgstr "停用 quic-go 的 通用分段卸載(GSO)" msgid "Disable ICMP Forwarding" msgstr "禁用 ICMP 轉發" -#: htdocs/luci-static/resources/view/fchomo/node.js:1044 +#: htdocs/luci-static/resources/view/fchomo/node.js:1082 msgid "Disable SNI" msgstr "停用 SNI" -#: htdocs/luci-static/resources/view/fchomo/client.js:1095 +#: htdocs/luci-static/resources/view/fchomo/client.js:1103 msgid "Disable UDP" msgstr "停用 UDP" -#: htdocs/luci-static/resources/view/fchomo/global.js:726 +#: htdocs/luci-static/resources/view/fchomo/global.js:729 msgid "Disable safe path check" msgstr "禁用安全路徑檢查" -#: htdocs/luci-static/resources/view/fchomo/client.js:821 +#: htdocs/luci-static/resources/view/fchomo/client.js:829 msgid "" "Do not resolve the domain connection to IP for this match.
Only works " "for pure domain inbound connections without DNS resolution. e.g., socks5h" @@ -741,37 +747,37 @@ msgstr "" "不要將網域連線解析為 IP 以進行此次匹配。
僅對未經 DNS 解析的純網域入站連" "線有效。例如,socks5h" -#: htdocs/luci-static/resources/view/fchomo/client.js:844 -#: htdocs/luci-static/resources/view/fchomo/client.js:849 -#: htdocs/luci-static/resources/view/fchomo/client.js:1825 -#: htdocs/luci-static/resources/view/fchomo/client.js:1832 -#: htdocs/luci-static/resources/view/fchomo/client.js:1834 +#: htdocs/luci-static/resources/view/fchomo/client.js:852 +#: htdocs/luci-static/resources/view/fchomo/client.js:857 +#: htdocs/luci-static/resources/view/fchomo/client.js:1836 +#: htdocs/luci-static/resources/view/fchomo/client.js:1843 +#: htdocs/luci-static/resources/view/fchomo/client.js:1845 msgid "Domain" msgstr "網域" -#: htdocs/luci-static/resources/view/fchomo/node.js:1045 +#: htdocs/luci-static/resources/view/fchomo/node.js:1083 msgid "Donot send server name in ClientHello." msgstr "不要在 ClientHello 中傳送伺服器名稱。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1587 -#: htdocs/luci-static/resources/view/fchomo/node.js:1117 -#: htdocs/luci-static/resources/view/fchomo/node.js:1851 +#: htdocs/luci-static/resources/view/fchomo/client.js:1598 +#: htdocs/luci-static/resources/view/fchomo/node.js:1152 +#: htdocs/luci-static/resources/view/fchomo/node.js:1893 msgid "Donot verifying server certificate." msgstr "不驗證伺服器憑證。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1464 +#: htdocs/luci-static/resources/view/fchomo/node.js:1499 msgid "Download bandwidth" msgstr "下載頻寬" -#: htdocs/luci-static/resources/view/fchomo/node.js:1465 +#: htdocs/luci-static/resources/view/fchomo/node.js:1500 msgid "Download bandwidth in Mbps." msgstr "下載頻寬(單位:Mbps)。" -#: htdocs/luci-static/resources/fchomo.js:1257 +#: htdocs/luci-static/resources/fchomo.js:1284 msgid "Download failed: %s" msgstr "下載失敗: %s" -#: htdocs/luci-static/resources/fchomo.js:1255 +#: htdocs/luci-static/resources/fchomo.js:1282 msgid "Download successful." msgstr "下載成功。" @@ -779,24 +785,24 @@ msgstr "下載成功。" msgid "Dual stack" msgstr "雙棧" -#: htdocs/luci-static/resources/view/fchomo/node.js:1164 +#: htdocs/luci-static/resources/view/fchomo/node.js:1199 msgid "ECH HTTPS record query servername" msgstr "ECH HTTPS 記錄查詢網域" -#: htdocs/luci-static/resources/fchomo/listeners.js:1057 -#: htdocs/luci-static/resources/view/fchomo/node.js:1158 +#: htdocs/luci-static/resources/fchomo/listeners.js:1068 +#: htdocs/luci-static/resources/view/fchomo/node.js:1193 msgid "ECH config" msgstr "ECH 配置" -#: htdocs/luci-static/resources/fchomo/listeners.js:1016 +#: htdocs/luci-static/resources/fchomo/listeners.js:1027 msgid "ECH key" msgstr "ECH 密鑰" -#: htdocs/luci-static/resources/view/fchomo/client.js:1621 +#: htdocs/luci-static/resources/view/fchomo/client.js:1632 msgid "ECS override" msgstr "強制覆蓋 ECS" -#: htdocs/luci-static/resources/view/fchomo/client.js:1605 +#: htdocs/luci-static/resources/view/fchomo/client.js:1616 msgid "EDNS Client Subnet" msgstr "EDNS 客戶端子網" @@ -804,11 +810,11 @@ msgstr "EDNS 客戶端子網" msgid "ETag support" msgstr "ETag 支援" -#: htdocs/luci-static/resources/view/fchomo/node.js:1304 +#: htdocs/luci-static/resources/view/fchomo/node.js:1339 msgid "Early Data first packet length limit." msgstr "前置數據長度閾值" -#: htdocs/luci-static/resources/view/fchomo/node.js:1310 +#: htdocs/luci-static/resources/view/fchomo/node.js:1345 msgid "Early Data header name" msgstr "前置數據標頭" @@ -816,10 +822,6 @@ msgstr "前置數據標頭" msgid "Edit inbound" msgstr "編輯入站" -#: htdocs/luci-static/resources/view/fchomo/node.js:214 -msgid "Edit node" -msgstr "編輯節點" - #: htdocs/luci-static/resources/view/fchomo/node.js:214 msgid "Edit outbound" msgstr "編輯出站" @@ -828,39 +830,39 @@ msgstr "編輯出站" msgid "Edit ruleset" msgstr "編輯規則集" -#: htdocs/luci-static/resources/view/fchomo/node.js:1655 +#: htdocs/luci-static/resources/view/fchomo/node.js:1695 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:345 msgid "Editer" msgstr "編輯器" -#: htdocs/luci-static/resources/fchomo.js:393 +#: htdocs/luci-static/resources/fchomo.js:395 msgid "Eliminate encryption header characteristics" msgstr "消除加密頭特徵" -#: htdocs/luci-static/resources/view/fchomo/client.js:1086 +#: htdocs/luci-static/resources/view/fchomo/client.js:1094 msgid "Empty fallback" msgstr "為空時回退" #: htdocs/luci-static/resources/fchomo/listeners.js:133 -#: htdocs/luci-static/resources/view/fchomo/client.js:932 -#: htdocs/luci-static/resources/view/fchomo/client.js:1026 -#: htdocs/luci-static/resources/view/fchomo/client.js:1272 -#: htdocs/luci-static/resources/view/fchomo/client.js:1364 -#: htdocs/luci-static/resources/view/fchomo/client.js:1503 -#: htdocs/luci-static/resources/view/fchomo/client.js:1734 -#: htdocs/luci-static/resources/view/fchomo/client.js:1790 +#: htdocs/luci-static/resources/view/fchomo/client.js:940 +#: htdocs/luci-static/resources/view/fchomo/client.js:1034 +#: htdocs/luci-static/resources/view/fchomo/client.js:1280 +#: htdocs/luci-static/resources/view/fchomo/client.js:1372 +#: htdocs/luci-static/resources/view/fchomo/client.js:1514 +#: htdocs/luci-static/resources/view/fchomo/client.js:1745 +#: htdocs/luci-static/resources/view/fchomo/client.js:1801 #: htdocs/luci-static/resources/view/fchomo/global.js:422 -#: htdocs/luci-static/resources/view/fchomo/global.js:701 +#: htdocs/luci-static/resources/view/fchomo/global.js:704 #: htdocs/luci-static/resources/view/fchomo/node.js:246 -#: htdocs/luci-static/resources/view/fchomo/node.js:1628 -#: htdocs/luci-static/resources/view/fchomo/node.js:1890 -#: htdocs/luci-static/resources/view/fchomo/node.js:1979 +#: htdocs/luci-static/resources/view/fchomo/node.js:1668 +#: htdocs/luci-static/resources/view/fchomo/node.js:1932 +#: htdocs/luci-static/resources/view/fchomo/node.js:2021 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:272 #: htdocs/luci-static/resources/view/fchomo/server.js:49 msgid "Enable" msgstr "啟用" -#: htdocs/luci-static/resources/view/fchomo/node.js:583 +#: htdocs/luci-static/resources/view/fchomo/node.js:600 msgid "" "Enable 0-RTT QUIC connection handshake on the client side. This is not " "impacting much on the performance, as the protocol is fully multiplexed.
強烈建議停用此功能,因為它容易受到重放攻擊。" -#: htdocs/luci-static/resources/view/fchomo/node.js:582 +#: htdocs/luci-static/resources/view/fchomo/node.js:599 msgid "Enable 0-RTT handshake" msgstr "啟用 0-RTT 握手" -#: htdocs/luci-static/resources/view/fchomo/global.js:735 +#: htdocs/luci-static/resources/view/fchomo/global.js:738 msgid "" "Enable IP4P " "conversion for outbound connections" @@ -881,53 +883,57 @@ msgstr "" "為出站連線啟用 IP4P 轉換" -#: htdocs/luci-static/resources/view/fchomo/node.js:1152 +#: htdocs/luci-static/resources/view/fchomo/node.js:1187 msgid "Enable ECH" msgstr "啟用 ECH" -#: htdocs/luci-static/resources/view/fchomo/node.js:1452 +#: htdocs/luci-static/resources/view/fchomo/node.js:1487 msgid "Enable TCP Brutal" msgstr "啟用 TCP Brutal" -#: htdocs/luci-static/resources/view/fchomo/node.js:1453 +#: htdocs/luci-static/resources/view/fchomo/node.js:1488 msgid "Enable TCP Brutal congestion control algorithm" msgstr "啟用 TCP Brutal 擁塞控制演算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1441 +#: htdocs/luci-static/resources/view/fchomo/node.js:594 +msgid "Enable fast open" +msgstr "啟用 Fast open" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1476 msgid "Enable multiplexing only for TCP." msgstr "僅為 TCP 啟用多路復用。" #: htdocs/luci-static/resources/fchomo/listeners.js:424 -#: htdocs/luci-static/resources/view/fchomo/node.js:466 +#: htdocs/luci-static/resources/view/fchomo/node.js:478 msgid "Enable obfuscate for downlink" msgstr "啟用下行鏈路混淆" -#: htdocs/luci-static/resources/view/fchomo/node.js:1435 +#: htdocs/luci-static/resources/view/fchomo/node.js:1470 msgid "Enable padding" msgstr "啟用填充" -#: htdocs/luci-static/resources/view/fchomo/node.js:1446 +#: htdocs/luci-static/resources/view/fchomo/node.js:1481 msgid "Enable statistic" msgstr "啟用統計" -#: htdocs/luci-static/resources/view/fchomo/node.js:911 -#: htdocs/luci-static/resources/view/fchomo/node.js:1833 +#: htdocs/luci-static/resources/view/fchomo/node.js:949 +#: htdocs/luci-static/resources/view/fchomo/node.js:1875 msgid "" "Enable the SUoT protocol, requires server support. Conflict with Multiplex." msgstr "啟用 SUoT 協議,需要服務端支援。與多路復用衝突。" #: htdocs/luci-static/resources/fchomo/listeners.js:201 -#: htdocs/luci-static/resources/view/fchomo/node.js:317 +#: htdocs/luci-static/resources/view/fchomo/node.js:329 msgid "" "Enabling obfuscation will make the server incompatible with standard QUIC " "connections, losing the ability to masquerade with HTTP/3." msgstr "啟用混淆將使伺服器與標準的 QUIC 連線不相容,失去 HTTP/3 偽裝的能力。" -#: htdocs/luci-static/resources/fchomo/listeners.js:690 +#: htdocs/luci-static/resources/fchomo/listeners.js:694 msgid "Encryption method" msgstr "加密方法" -#: htdocs/luci-static/resources/view/fchomo/node.js:712 +#: htdocs/luci-static/resources/view/fchomo/node.js:729 msgid "Endpoint pubkic key" msgstr "端點公鑰" @@ -935,8 +941,8 @@ msgstr "端點公鑰" msgid "Endpoint-Independent NAT" msgstr "端點獨立 NAT" -#: htdocs/luci-static/resources/view/fchomo/client.js:723 -#: htdocs/luci-static/resources/view/fchomo/client.js:866 +#: htdocs/luci-static/resources/view/fchomo/client.js:731 +#: htdocs/luci-static/resources/view/fchomo/client.js:874 msgid "Entry" msgstr "條目" @@ -944,17 +950,17 @@ msgstr "條目" msgid "Error" msgstr "錯誤" -#: htdocs/luci-static/resources/view/fchomo/client.js:1139 +#: htdocs/luci-static/resources/view/fchomo/client.js:1147 msgid "" "Exceeding this triggers a forced health check. 5 will be used " "if empty." msgstr "超過此限制將會觸發強制健康檢查。留空則使用 5。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1948 +#: htdocs/luci-static/resources/view/fchomo/node.js:1990 msgid "Exclude matched node types." msgstr "排除匹配的節點類型。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1176 +#: htdocs/luci-static/resources/view/fchomo/client.js:1184 msgid "" "Exclude matched node types. Available types see here." @@ -962,8 +968,8 @@ msgstr "" "排除匹配的節點類型。可用類型請參考此處。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1171 -#: htdocs/luci-static/resources/view/fchomo/node.js:1941 +#: htdocs/luci-static/resources/view/fchomo/client.js:1179 +#: htdocs/luci-static/resources/view/fchomo/node.js:1983 msgid "Exclude nodes that meet keywords or regexps." msgstr "排除匹配關鍵字或表達式的節點。" @@ -971,138 +977,139 @@ msgstr "排除匹配關鍵字或表達式的節點。" msgid "Expand/Collapse result" msgstr "展開/收起 結果" -#: htdocs/luci-static/resources/view/fchomo/client.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1926 +#: htdocs/luci-static/resources/view/fchomo/client.js:1139 +#: htdocs/luci-static/resources/view/fchomo/node.js:1968 msgid "Expected HTTP code. 204 will be used if empty." msgstr "預期的 HTTP code。留空則使用 204。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1133 -#: htdocs/luci-static/resources/view/fchomo/node.js:1928 +#: htdocs/luci-static/resources/view/fchomo/client.js:1141 +#: htdocs/luci-static/resources/view/fchomo/node.js:1970 msgid "Expected status" msgstr "預期狀態" -#: htdocs/luci-static/resources/fchomo.js:450 -#: htdocs/luci-static/resources/fchomo.js:453 -#: htdocs/luci-static/resources/fchomo.js:456 -#: htdocs/luci-static/resources/fchomo.js:1395 -#: htdocs/luci-static/resources/fchomo.js:1403 -#: htdocs/luci-static/resources/fchomo.js:1411 -#: htdocs/luci-static/resources/fchomo.js:1434 -#: htdocs/luci-static/resources/fchomo.js:1437 -#: htdocs/luci-static/resources/fchomo.js:1444 -#: htdocs/luci-static/resources/fchomo.js:1460 -#: htdocs/luci-static/resources/fchomo.js:1469 -#: htdocs/luci-static/resources/fchomo.js:1481 -#: htdocs/luci-static/resources/fchomo.js:1484 -#: htdocs/luci-static/resources/fchomo.js:1494 -#: htdocs/luci-static/resources/fchomo.js:1506 -#: htdocs/luci-static/resources/fchomo.js:1509 -#: htdocs/luci-static/resources/fchomo.js:1519 -#: htdocs/luci-static/resources/fchomo.js:1529 -#: htdocs/luci-static/resources/fchomo.js:1564 -#: htdocs/luci-static/resources/fchomo.js:1566 -#: htdocs/luci-static/resources/fchomo.js:1579 -#: htdocs/luci-static/resources/fchomo.js:1585 -#: htdocs/luci-static/resources/fchomo.js:1592 -#: htdocs/luci-static/resources/fchomo.js:1601 +#: htdocs/luci-static/resources/fchomo.js:452 +#: htdocs/luci-static/resources/fchomo.js:455 +#: htdocs/luci-static/resources/fchomo.js:458 +#: htdocs/luci-static/resources/fchomo.js:1422 +#: htdocs/luci-static/resources/fchomo.js:1430 +#: htdocs/luci-static/resources/fchomo.js:1438 +#: htdocs/luci-static/resources/fchomo.js:1461 +#: htdocs/luci-static/resources/fchomo.js:1464 +#: htdocs/luci-static/resources/fchomo.js:1471 +#: htdocs/luci-static/resources/fchomo.js:1487 +#: htdocs/luci-static/resources/fchomo.js:1496 +#: htdocs/luci-static/resources/fchomo.js:1508 +#: htdocs/luci-static/resources/fchomo.js:1511 +#: htdocs/luci-static/resources/fchomo.js:1521 +#: htdocs/luci-static/resources/fchomo.js:1533 +#: htdocs/luci-static/resources/fchomo.js:1536 +#: htdocs/luci-static/resources/fchomo.js:1546 +#: htdocs/luci-static/resources/fchomo.js:1556 +#: htdocs/luci-static/resources/fchomo.js:1591 +#: htdocs/luci-static/resources/fchomo.js:1593 +#: htdocs/luci-static/resources/fchomo.js:1606 +#: htdocs/luci-static/resources/fchomo.js:1612 +#: htdocs/luci-static/resources/fchomo.js:1619 +#: htdocs/luci-static/resources/fchomo.js:1628 #: htdocs/luci-static/resources/fchomo/listeners.js:363 #: htdocs/luci-static/resources/fchomo/listeners.js:410 -#: htdocs/luci-static/resources/fchomo/listeners.js:719 -#: htdocs/luci-static/resources/fchomo/listeners.js:750 -#: htdocs/luci-static/resources/fchomo/listeners.js:851 +#: htdocs/luci-static/resources/fchomo/listeners.js:723 +#: htdocs/luci-static/resources/fchomo/listeners.js:754 +#: htdocs/luci-static/resources/fchomo/listeners.js:855 #: htdocs/luci-static/resources/view/fchomo/client.js:69 -#: htdocs/luci-static/resources/view/fchomo/client.js:1020 -#: htdocs/luci-static/resources/view/fchomo/client.js:1518 -#: htdocs/luci-static/resources/view/fchomo/global.js:901 -#: htdocs/luci-static/resources/view/fchomo/node.js:423 -#: htdocs/luci-static/resources/view/fchomo/node.js:459 -#: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:514 -#: htdocs/luci-static/resources/view/fchomo/node.js:982 -#: htdocs/luci-static/resources/view/fchomo/node.js:1109 -#: htdocs/luci-static/resources/view/fchomo/node.js:2005 -#: htdocs/luci-static/resources/view/fchomo/node.js:2025 +#: htdocs/luci-static/resources/view/fchomo/client.js:1028 +#: htdocs/luci-static/resources/view/fchomo/client.js:1529 +#: htdocs/luci-static/resources/view/fchomo/global.js:904 +#: htdocs/luci-static/resources/view/fchomo/node.js:435 +#: htdocs/luci-static/resources/view/fchomo/node.js:471 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 +#: htdocs/luci-static/resources/view/fchomo/node.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/view/fchomo/node.js:2047 +#: htdocs/luci-static/resources/view/fchomo/node.js:2067 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:300 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:314 msgid "Expecting: %s" msgstr "請輸入:%s" -#: htdocs/luci-static/resources/fchomo/listeners.js:1124 -#: htdocs/luci-static/resources/fchomo/listeners.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1219 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 -#: htdocs/luci-static/resources/view/fchomo/node.js:1234 +#: htdocs/luci-static/resources/fchomo/listeners.js:1135 +#: htdocs/luci-static/resources/fchomo/listeners.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1254 +#: htdocs/luci-static/resources/view/fchomo/node.js:1261 +#: htdocs/luci-static/resources/view/fchomo/node.js:1269 msgid "Expecting: only support %s." msgstr "請輸入:僅支援 %s." -#: htdocs/luci-static/resources/view/fchomo/global.js:720 +#: htdocs/luci-static/resources/view/fchomo/global.js:723 msgid "Experimental" msgstr "實驗性" #: htdocs/luci-static/resources/view/fchomo/client.js:551 #: htdocs/luci-static/resources/view/fchomo/client.js:564 -#: htdocs/luci-static/resources/view/fchomo/client.js:571 -#: htdocs/luci-static/resources/view/fchomo/client.js:581 -#: htdocs/luci-static/resources/view/fchomo/client.js:588 +#: htdocs/luci-static/resources/view/fchomo/client.js:572 +#: htdocs/luci-static/resources/view/fchomo/client.js:579 +#: htdocs/luci-static/resources/view/fchomo/client.js:589 #: htdocs/luci-static/resources/view/fchomo/client.js:596 -#: htdocs/luci-static/resources/view/fchomo/client.js:603 -#: htdocs/luci-static/resources/view/fchomo/client.js:670 +#: htdocs/luci-static/resources/view/fchomo/client.js:604 +#: htdocs/luci-static/resources/view/fchomo/client.js:611 +#: htdocs/luci-static/resources/view/fchomo/client.js:678 msgid "Factor" msgstr "條件" -#: htdocs/luci-static/resources/fchomo.js:1336 +#: htdocs/luci-static/resources/fchomo.js:1363 msgid "Failed to execute \"/etc/init.d/fchomo %s %s\" reason: %s" msgstr "無法執行 \"/etc/init.d/fchomo %s %s\" 原因: %s" -#: htdocs/luci-static/resources/fchomo.js:1289 +#: htdocs/luci-static/resources/fchomo.js:1316 msgid "Failed to generate %s, error: %s." msgstr "生成 %s 失敗,錯誤:%s。" -#: htdocs/luci-static/resources/fchomo.js:1701 +#: htdocs/luci-static/resources/fchomo.js:1728 msgid "Failed to upload %s, error: %s." msgstr "上傳 %s 失敗,錯誤:%s。" -#: htdocs/luci-static/resources/fchomo.js:1720 +#: htdocs/luci-static/resources/fchomo.js:1747 msgid "Failed to upload, error: %s." msgstr "上傳失敗,錯誤:%s。" -#: htdocs/luci-static/resources/fchomo.js:240 +#: htdocs/luci-static/resources/fchomo.js:241 #: htdocs/luci-static/resources/fchomo/listeners.js:449 msgid "Fallback" msgstr "自動回退" -#: htdocs/luci-static/resources/view/fchomo/client.js:1407 -#: htdocs/luci-static/resources/view/fchomo/client.js:1420 +#: htdocs/luci-static/resources/view/fchomo/client.js:1418 +#: htdocs/luci-static/resources/view/fchomo/client.js:1431 msgid "Fallback DNS server" msgstr "後備 DNS 伺服器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1804 +#: htdocs/luci-static/resources/view/fchomo/client.js:1815 msgid "Fallback filter" msgstr "後備過濾器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1166 -#: htdocs/luci-static/resources/view/fchomo/node.js:1935 +#: htdocs/luci-static/resources/view/fchomo/client.js:1174 +#: htdocs/luci-static/resources/view/fchomo/node.js:1977 msgid "Filter nodes that meet keywords or regexps." msgstr "過濾匹配關鍵字或表達式的節點。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1671 +#: htdocs/luci-static/resources/view/fchomo/client.js:1682 msgid "Filter record type:" msgstr "過濾記錄類型:" -#: htdocs/luci-static/resources/view/fchomo/client.js:1639 -#: htdocs/luci-static/resources/view/fchomo/client.js:1655 +#: htdocs/luci-static/resources/view/fchomo/client.js:1650 +#: htdocs/luci-static/resources/view/fchomo/client.js:1666 msgid "Filter record: %s" msgstr "過濾 %s 記錄" -#: htdocs/luci-static/resources/view/fchomo/client.js:1406 +#: htdocs/luci-static/resources/view/fchomo/client.js:1417 msgid "Final DNS server" msgstr "兜底 DNS 伺服器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1408 +#: htdocs/luci-static/resources/view/fchomo/client.js:1419 msgid "Final DNS server (For non-poisoned domains)" msgstr "兜底 DNS 伺服器 (用於未被投毒汙染的網域)" -#: htdocs/luci-static/resources/view/fchomo/client.js:1410 +#: htdocs/luci-static/resources/view/fchomo/client.js:1421 msgid "Final DNS server (For poisoned domains)" msgstr "兜底 DNS 伺服器 (用於已被投毒汙染的網域)" @@ -1111,11 +1118,11 @@ msgid "Firewall" msgstr "防火牆" #: htdocs/luci-static/resources/fchomo/listeners.js:535 -#: htdocs/luci-static/resources/view/fchomo/node.js:660 +#: htdocs/luci-static/resources/view/fchomo/node.js:677 msgid "Flow" msgstr "流控" -#: htdocs/luci-static/resources/view/fchomo/client.js:1155 +#: htdocs/luci-static/resources/view/fchomo/client.js:1163 msgid "" "For details, see %s." @@ -1123,9 +1130,9 @@ msgstr "" "實作細節請參閱 %s." -#: htdocs/luci-static/resources/view/fchomo/client.js:1132 -#: htdocs/luci-static/resources/view/fchomo/node.js:1801 -#: htdocs/luci-static/resources/view/fchomo/node.js:1927 +#: htdocs/luci-static/resources/view/fchomo/client.js:1140 +#: htdocs/luci-static/resources/view/fchomo/node.js:1843 +#: htdocs/luci-static/resources/view/fchomo/node.js:1969 msgid "" "For format see %s." @@ -1133,12 +1140,12 @@ msgstr "" "格式請參閱 %s." -#: htdocs/luci-static/resources/view/fchomo/node.js:740 -#: htdocs/luci-static/resources/view/fchomo/node.js:823 +#: htdocs/luci-static/resources/view/fchomo/node.js:777 +#: htdocs/luci-static/resources/view/fchomo/node.js:860 msgid "Force DNS remote resolution." msgstr "強制 DNS 遠端解析。" -#: htdocs/luci-static/resources/view/fchomo/global.js:680 +#: htdocs/luci-static/resources/view/fchomo/global.js:683 msgid "Forced sniffing domain" msgstr "強制嗅探網域" @@ -1153,7 +1160,7 @@ msgstr "格式" msgid "FullCombo Shark!" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1259 +#: htdocs/luci-static/resources/view/fchomo/node.js:1294 msgid "GET" msgstr "" @@ -1162,7 +1169,7 @@ msgid "GFW list version" msgstr "GFW 網域清單版本" #: htdocs/luci-static/resources/fchomo/listeners.js:196 -#: htdocs/luci-static/resources/view/fchomo/node.js:312 +#: htdocs/luci-static/resources/view/fchomo/node.js:324 msgid "Gecko" msgstr "" @@ -1171,9 +1178,9 @@ msgid "General" msgstr "常規" #: htdocs/luci-static/resources/fchomo/listeners.js:119 -#: htdocs/luci-static/resources/view/fchomo/client.js:1011 +#: htdocs/luci-static/resources/view/fchomo/client.js:1019 #: htdocs/luci-static/resources/view/fchomo/node.js:233 -#: htdocs/luci-static/resources/view/fchomo/node.js:1618 +#: htdocs/luci-static/resources/view/fchomo/node.js:1658 msgid "General fields" msgstr "常規欄位" @@ -1181,17 +1188,17 @@ msgstr "常規欄位" msgid "General settings" msgstr "常規設定" -#: htdocs/luci-static/resources/fchomo.js:551 #: htdocs/luci-static/resources/fchomo.js:553 -#: htdocs/luci-static/resources/fchomo.js:567 +#: htdocs/luci-static/resources/fchomo.js:555 #: htdocs/luci-static/resources/fchomo.js:569 +#: htdocs/luci-static/resources/fchomo.js:571 #: htdocs/luci-static/resources/fchomo/listeners.js:341 #: htdocs/luci-static/resources/fchomo/listeners.js:385 #: htdocs/luci-static/resources/fchomo/listeners.js:387 -#: htdocs/luci-static/resources/fchomo/listeners.js:823 -#: htdocs/luci-static/resources/fchomo/listeners.js:1049 +#: htdocs/luci-static/resources/fchomo/listeners.js:827 +#: htdocs/luci-static/resources/fchomo/listeners.js:1060 #: htdocs/luci-static/resources/view/fchomo/global.js:608 -#: htdocs/luci-static/resources/view/fchomo/node.js:1769 +#: htdocs/luci-static/resources/view/fchomo/node.js:1811 msgid "Generate" msgstr "生成" @@ -1207,17 +1214,17 @@ msgstr "GeoIP 版本" msgid "GeoSite version" msgstr "GeoSite 版本" -#: htdocs/luci-static/resources/view/fchomo/client.js:1814 +#: htdocs/luci-static/resources/view/fchomo/client.js:1825 msgid "Geoip code" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1811 +#: htdocs/luci-static/resources/view/fchomo/client.js:1822 msgid "Geoip enable" msgstr "Geoip 啟用" -#: htdocs/luci-static/resources/view/fchomo/client.js:845 -#: htdocs/luci-static/resources/view/fchomo/client.js:854 -#: htdocs/luci-static/resources/view/fchomo/client.js:1823 +#: htdocs/luci-static/resources/view/fchomo/client.js:853 +#: htdocs/luci-static/resources/view/fchomo/client.js:862 +#: htdocs/luci-static/resources/view/fchomo/client.js:1834 msgid "Geosite" msgstr "" @@ -1238,7 +1245,7 @@ msgstr "全域" msgid "Global Authentication" msgstr "全域認證" -#: htdocs/luci-static/resources/view/fchomo/node.js:684 +#: htdocs/luci-static/resources/view/fchomo/node.js:701 msgid "Global padding" msgstr "全域填充" @@ -1246,7 +1253,7 @@ msgstr "全域填充" msgid "Google" msgstr "Google" -#: htdocs/luci-static/resources/fchomo.js:253 +#: htdocs/luci-static/resources/fchomo.js:254 msgid "Google FCM" msgstr "" @@ -1254,58 +1261,58 @@ msgstr "" msgid "Grant access to fchomo configuration" msgstr "授予 fchomo 存取 UCI 配置的權限" -#: htdocs/luci-static/resources/view/fchomo/client.js:1036 +#: htdocs/luci-static/resources/view/fchomo/client.js:1044 msgid "Group" msgstr "組" #: htdocs/luci-static/resources/fchomo.js:153 -#: htdocs/luci-static/resources/fchomo.js:188 +#: htdocs/luci-static/resources/fchomo.js:189 #: htdocs/luci-static/resources/fchomo/listeners.js:569 -#: htdocs/luci-static/resources/view/fchomo/node.js:846 -#: htdocs/luci-static/resources/view/fchomo/node.js:1208 -#: htdocs/luci-static/resources/view/fchomo/node.js:1219 -#: htdocs/luci-static/resources/view/fchomo/node.js:1226 +#: htdocs/luci-static/resources/view/fchomo/node.js:883 +#: htdocs/luci-static/resources/view/fchomo/node.js:1243 +#: htdocs/luci-static/resources/view/fchomo/node.js:1254 +#: htdocs/luci-static/resources/view/fchomo/node.js:1261 msgid "HTTP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:279 -#: htdocs/luci-static/resources/view/fchomo/node.js:1281 -#: htdocs/luci-static/resources/view/fchomo/node.js:1781 +#: htdocs/luci-static/resources/view/fchomo/node.js:291 +#: htdocs/luci-static/resources/view/fchomo/node.js:1316 +#: htdocs/luci-static/resources/view/fchomo/node.js:1823 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:414 msgid "HTTP header" msgstr "HTTP header" #: htdocs/luci-static/resources/fchomo/listeners.js:430 -#: htdocs/luci-static/resources/view/fchomo/node.js:472 +#: htdocs/luci-static/resources/view/fchomo/node.js:484 msgid "HTTP mask" msgstr "HTTP 偽裝" #: htdocs/luci-static/resources/fchomo/listeners.js:435 -#: htdocs/luci-static/resources/view/fchomo/node.js:477 -#: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:514 +#: htdocs/luci-static/resources/view/fchomo/node.js:489 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 msgid "HTTP mask mode" msgstr "HTTP 偽裝模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:502 +#: htdocs/luci-static/resources/view/fchomo/node.js:514 msgid "HTTP mask multiplex" msgstr "HTTP 偽裝多路復用" -#: htdocs/luci-static/resources/view/fchomo/node.js:487 -#: htdocs/luci-static/resources/view/fchomo/node.js:492 +#: htdocs/luci-static/resources/view/fchomo/node.js:499 +#: htdocs/luci-static/resources/view/fchomo/node.js:504 msgid "HTTP mask: %s" msgstr "HTTP 偽裝: %s" -#: htdocs/luci-static/resources/view/fchomo/node.js:1258 +#: htdocs/luci-static/resources/view/fchomo/node.js:1293 msgid "HTTP request method" msgstr "HTTP 請求方法" #: htdocs/luci-static/resources/fchomo/listeners.js:445 -#: htdocs/luci-static/resources/view/fchomo/node.js:498 +#: htdocs/luci-static/resources/view/fchomo/node.js:510 msgid "HTTP root path" msgstr "HTTP 根路徑" -#: htdocs/luci-static/resources/view/fchomo/client.js:1570 +#: htdocs/luci-static/resources/view/fchomo/client.js:1581 msgid "HTTP/3" msgstr "" @@ -1315,17 +1322,17 @@ msgid "" "returned if empty." msgstr "身份驗證失敗時的 HTTP3 伺服器回應。預設回傳 404 頁面。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1209 -#: htdocs/luci-static/resources/view/fchomo/node.js:1220 -#: htdocs/luci-static/resources/view/fchomo/node.js:1227 +#: htdocs/luci-static/resources/view/fchomo/node.js:1244 +#: htdocs/luci-static/resources/view/fchomo/node.js:1255 +#: htdocs/luci-static/resources/view/fchomo/node.js:1262 msgid "HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:876 +#: htdocs/luci-static/resources/view/fchomo/global.js:879 msgid "Handle domain" msgstr "處理網域" -#: htdocs/luci-static/resources/view/fchomo/node.js:394 +#: htdocs/luci-static/resources/view/fchomo/node.js:406 msgid "Handshake mode" msgstr "握手模式" @@ -1341,57 +1348,57 @@ msgstr "握手超時" msgid "Header to read real client IP from (e.g. X-Forwarded-For)" msgstr "用於讀取客戶端真實 IP 的 Header(例如 X-Forwarded-For)" -#: htdocs/luci-static/resources/view/fchomo/node.js:751 +#: htdocs/luci-static/resources/view/fchomo/node.js:788 msgid "Health check" msgstr "健康檢查" -#: htdocs/luci-static/resources/view/fchomo/client.js:1101 -#: htdocs/luci-static/resources/view/fchomo/node.js:1895 +#: htdocs/luci-static/resources/view/fchomo/client.js:1109 +#: htdocs/luci-static/resources/view/fchomo/node.js:1937 msgid "Health check URL" msgstr "健康檢查 URL" -#: htdocs/luci-static/resources/view/fchomo/client.js:1130 -#: htdocs/luci-static/resources/view/fchomo/node.js:1925 +#: htdocs/luci-static/resources/view/fchomo/client.js:1138 +#: htdocs/luci-static/resources/view/fchomo/node.js:1967 msgid "Health check expected status" msgstr "健康檢查预期状态" -#: htdocs/luci-static/resources/view/fchomo/client.js:1110 -#: htdocs/luci-static/resources/view/fchomo/node.js:1905 +#: htdocs/luci-static/resources/view/fchomo/client.js:1118 +#: htdocs/luci-static/resources/view/fchomo/node.js:1947 msgid "Health check interval" msgstr "健康檢查間隔" -#: htdocs/luci-static/resources/view/fchomo/client.js:1117 -#: htdocs/luci-static/resources/view/fchomo/node.js:1912 +#: htdocs/luci-static/resources/view/fchomo/client.js:1125 +#: htdocs/luci-static/resources/view/fchomo/node.js:1954 msgid "Health check timeout" msgstr "健康檢查超时" -#: htdocs/luci-static/resources/view/fchomo/client.js:1013 -#: htdocs/luci-static/resources/view/fchomo/node.js:1620 +#: htdocs/luci-static/resources/view/fchomo/client.js:1021 +#: htdocs/luci-static/resources/view/fchomo/node.js:1660 msgid "Health fields" msgstr "健康欄位" -#: htdocs/luci-static/resources/view/fchomo/node.js:589 +#: htdocs/luci-static/resources/view/fchomo/node.js:606 msgid "Heartbeat interval" msgstr "心跳間隔" -#: htdocs/luci-static/resources/view/fchomo/client.js:1181 +#: htdocs/luci-static/resources/view/fchomo/client.js:1189 msgid "Hidden" msgstr "隱藏" #: htdocs/luci-static/resources/fchomo/listeners.js:575 -#: htdocs/luci-static/resources/view/fchomo/node.js:852 +#: htdocs/luci-static/resources/view/fchomo/node.js:889 msgid "Host that supports TLS 1.3" msgstr "主機名稱 (支援 TLS 1.3)" -#: htdocs/luci-static/resources/view/fchomo/node.js:349 +#: htdocs/luci-static/resources/view/fchomo/node.js:361 msgid "Host-key" msgstr "主機金鑰" -#: htdocs/luci-static/resources/view/fchomo/node.js:344 +#: htdocs/luci-static/resources/view/fchomo/node.js:356 msgid "Host-key algorithms" msgstr "主機金鑰演算法" -#: htdocs/luci-static/resources/view/fchomo/node.js:492 +#: htdocs/luci-static/resources/view/fchomo/node.js:504 msgid "Host/SNI override" msgstr "主機/SNI 覆蓋" @@ -1401,7 +1408,7 @@ msgid "Hosts" msgstr "" #: htdocs/luci-static/resources/fchomo.js:165 -#: htdocs/luci-static/resources/fchomo.js:200 +#: htdocs/luci-static/resources/fchomo.js:201 msgid "Hysteria2" msgstr "" @@ -1414,21 +1421,21 @@ msgstr "Hysteria2 Realm" msgid "Hysteria2 Realm fields" msgstr "Hysteria2 Realm 欄位" -#: htdocs/luci-static/resources/view/fchomo/client.js:1816 -#: htdocs/luci-static/resources/view/fchomo/client.js:1829 +#: htdocs/luci-static/resources/view/fchomo/client.js:1827 +#: htdocs/luci-static/resources/view/fchomo/client.js:1840 msgid "IP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1827 +#: htdocs/luci-static/resources/view/fchomo/client.js:1838 msgid "IP CIDR" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:551 +#: htdocs/luci-static/resources/view/fchomo/node.js:563 msgid "IP override" msgstr "IP 覆寫" -#: htdocs/luci-static/resources/view/fchomo/node.js:1497 -#: htdocs/luci-static/resources/view/fchomo/node.js:1881 +#: htdocs/luci-static/resources/view/fchomo/node.js:1536 +#: htdocs/luci-static/resources/view/fchomo/node.js:1923 msgid "IP version" msgstr "IP 版本" @@ -1440,20 +1447,20 @@ msgstr "僅 IPv4" msgid "IPv6 only" msgstr "僅 IPv6" -#: htdocs/luci-static/resources/view/fchomo/client.js:1389 +#: htdocs/luci-static/resources/view/fchomo/client.js:1400 #: htdocs/luci-static/resources/view/fchomo/global.js:436 msgid "IPv6 support" msgstr "IPv6 支援" -#: htdocs/luci-static/resources/view/fchomo/client.js:1187 +#: htdocs/luci-static/resources/view/fchomo/client.js:1195 msgid "Icon" msgstr "圖標" -#: htdocs/luci-static/resources/view/fchomo/node.js:633 +#: htdocs/luci-static/resources/view/fchomo/node.js:650 msgid "Idle session check interval" msgstr "閒置會話檢查間隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:640 +#: htdocs/luci-static/resources/view/fchomo/node.js:657 msgid "Idle session timeout" msgstr "閒置會話逾時" @@ -1461,7 +1468,7 @@ msgstr "閒置會話逾時" msgid "Idle timeout" msgstr "閒置逾時" -#: htdocs/luci-static/resources/fchomo.js:1437 +#: htdocs/luci-static/resources/fchomo.js:1464 msgid "If All ports is selected, uncheck others" msgstr "如果選擇了“所有連接埠”,則取消選取“其他”" @@ -1473,24 +1480,24 @@ msgstr "如果選擇了“封鎖”,則取消選取“其他”" msgid "Ignore client bandwidth" msgstr "忽略客戶端頻寬" -#: htdocs/luci-static/resources/fchomo.js:736 +#: htdocs/luci-static/resources/fchomo.js:738 msgid "Import" msgstr "導入" -#: htdocs/luci-static/resources/view/fchomo/client.js:949 -#: htdocs/luci-static/resources/view/fchomo/client.js:1005 -#: htdocs/luci-static/resources/view/fchomo/client.js:1210 -#: htdocs/luci-static/resources/view/fchomo/client.js:1261 -#: htdocs/luci-static/resources/view/fchomo/client.js:1329 -#: htdocs/luci-static/resources/view/fchomo/client.js:1353 -#: htdocs/luci-static/resources/view/fchomo/client.js:1454 -#: htdocs/luci-static/resources/view/fchomo/client.js:1492 -#: htdocs/luci-static/resources/view/fchomo/client.js:1706 -#: htdocs/luci-static/resources/view/fchomo/client.js:1723 -#: htdocs/luci-static/resources/view/fchomo/client.js:1758 -#: htdocs/luci-static/resources/view/fchomo/client.js:1779 -#: htdocs/luci-static/resources/view/fchomo/node.js:1522 -#: htdocs/luci-static/resources/view/fchomo/node.js:1606 +#: htdocs/luci-static/resources/view/fchomo/client.js:957 +#: htdocs/luci-static/resources/view/fchomo/client.js:1013 +#: htdocs/luci-static/resources/view/fchomo/client.js:1218 +#: htdocs/luci-static/resources/view/fchomo/client.js:1269 +#: htdocs/luci-static/resources/view/fchomo/client.js:1337 +#: htdocs/luci-static/resources/view/fchomo/client.js:1361 +#: htdocs/luci-static/resources/view/fchomo/client.js:1465 +#: htdocs/luci-static/resources/view/fchomo/client.js:1503 +#: htdocs/luci-static/resources/view/fchomo/client.js:1717 +#: htdocs/luci-static/resources/view/fchomo/client.js:1734 +#: htdocs/luci-static/resources/view/fchomo/client.js:1769 +#: htdocs/luci-static/resources/view/fchomo/client.js:1790 +#: htdocs/luci-static/resources/view/fchomo/node.js:1562 +#: htdocs/luci-static/resources/view/fchomo/node.js:1646 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:154 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:249 msgid "Import mihomo config" @@ -1504,55 +1511,55 @@ msgstr "導入規則集連結" #: htdocs/luci-static/resources/fchomo/listeners.js:176 #: htdocs/luci-static/resources/fchomo/listeners.js:182 -#: htdocs/luci-static/resources/view/fchomo/node.js:298 -#: htdocs/luci-static/resources/view/fchomo/node.js:304 -#: htdocs/luci-static/resources/view/fchomo/node.js:1839 -#: htdocs/luci-static/resources/view/fchomo/node.js:1845 +#: htdocs/luci-static/resources/view/fchomo/node.js:310 +#: htdocs/luci-static/resources/view/fchomo/node.js:316 +#: htdocs/luci-static/resources/view/fchomo/node.js:1881 +#: htdocs/luci-static/resources/view/fchomo/node.js:1887 msgid "In Mbps." msgstr "單位為 Mbps。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1696 +#: htdocs/luci-static/resources/view/fchomo/node.js:1736 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:392 msgid "In bytes. %s will be used if empty." msgstr "單位為位元組。留空則使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:590 -#: htdocs/luci-static/resources/view/fchomo/node.js:597 +#: htdocs/luci-static/resources/view/fchomo/node.js:607 +#: htdocs/luci-static/resources/view/fchomo/node.js:614 msgid "In millisecond." msgstr "單位為毫秒。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1118 -#: htdocs/luci-static/resources/view/fchomo/client.js:1147 -#: htdocs/luci-static/resources/view/fchomo/node.js:1913 +#: htdocs/luci-static/resources/view/fchomo/client.js:1126 +#: htdocs/luci-static/resources/view/fchomo/client.js:1155 +#: htdocs/luci-static/resources/view/fchomo/node.js:1955 msgid "In millisecond. %s will be used if empty." msgstr "單位為毫秒。留空則使用 %s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1350 +#: htdocs/luci-static/resources/view/fchomo/node.js:1385 msgid "In milliseconds." msgstr "單位為毫秒。" #: htdocs/luci-static/resources/fchomo/listeners.js:418 #: htdocs/luci-static/resources/fchomo/listeners.js:487 #: htdocs/luci-static/resources/fchomo/listeners.js:494 -#: htdocs/luci-static/resources/view/fchomo/node.js:634 -#: htdocs/luci-static/resources/view/fchomo/node.js:641 -#: htdocs/luci-static/resources/view/fchomo/node.js:1297 +#: htdocs/luci-static/resources/view/fchomo/node.js:651 +#: htdocs/luci-static/resources/view/fchomo/node.js:658 +#: htdocs/luci-static/resources/view/fchomo/node.js:1332 msgid "In seconds." msgstr "單位為秒。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1111 +#: htdocs/luci-static/resources/view/fchomo/client.js:1119 #: htdocs/luci-static/resources/view/fchomo/global.js:446 #: htdocs/luci-static/resources/view/fchomo/global.js:451 #: htdocs/luci-static/resources/view/fchomo/global.js:536 -#: htdocs/luci-static/resources/view/fchomo/node.js:292 -#: htdocs/luci-static/resources/view/fchomo/node.js:1702 -#: htdocs/luci-static/resources/view/fchomo/node.js:1906 +#: htdocs/luci-static/resources/view/fchomo/node.js:304 +#: htdocs/luci-static/resources/view/fchomo/node.js:1742 +#: htdocs/luci-static/resources/view/fchomo/node.js:1948 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:398 msgid "In seconds. %s will be used if empty." msgstr "單位為秒。留空則使用 %s。" -#: htdocs/luci-static/resources/fchomo/listeners.js:739 -#: htdocs/luci-static/resources/view/fchomo/node.js:971 +#: htdocs/luci-static/resources/fchomo/listeners.js:743 +#: htdocs/luci-static/resources/view/fchomo/node.js:1009 msgid "" "In the order of one Padding-Length and one Padding-" "Interval, infinite concatenation." @@ -1566,27 +1573,27 @@ msgstr "" msgid "Inbound" msgstr "入站" -#: htdocs/luci-static/resources/view/fchomo/client.js:1071 +#: htdocs/luci-static/resources/view/fchomo/client.js:1079 msgid "Include all" msgstr "引入所有" -#: htdocs/luci-static/resources/view/fchomo/client.js:1076 +#: htdocs/luci-static/resources/view/fchomo/client.js:1084 msgid "Include all node" msgstr "引入所有節點" -#: htdocs/luci-static/resources/view/fchomo/client.js:1081 +#: htdocs/luci-static/resources/view/fchomo/client.js:1089 msgid "Include all provider" msgstr "引入所有供應商" -#: htdocs/luci-static/resources/view/fchomo/client.js:1082 +#: htdocs/luci-static/resources/view/fchomo/client.js:1090 msgid "Includes all Provider." msgstr "引入所有供應商。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1072 +#: htdocs/luci-static/resources/view/fchomo/client.js:1080 msgid "Includes all Proxy Node and Provider." msgstr "引入所有代理節點及供應商。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1077 +#: htdocs/luci-static/resources/view/fchomo/client.js:1085 msgid "Includes all Proxy Node." msgstr "引入所有代理節點。" @@ -1594,62 +1601,62 @@ msgstr "引入所有代理節點。" msgid "Info" msgstr "訊息" -#: htdocs/luci-static/resources/view/fchomo/node.js:1635 +#: htdocs/luci-static/resources/view/fchomo/node.js:1675 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:288 msgid "Inline" msgstr "內嵌" -#: htdocs/luci-static/resources/view/fchomo/global.js:748 +#: htdocs/luci-static/resources/view/fchomo/global.js:751 msgid "Interface Control" msgstr "介面控制" #: htdocs/luci-static/resources/fchomo.js:52 #: htdocs/luci-static/resources/fchomo.js:59 #: htdocs/luci-static/resources/fchomo.js:172 -#: htdocs/luci-static/resources/fchomo.js:375 -#: htdocs/luci-static/resources/view/fchomo/node.js:1855 +#: htdocs/luci-static/resources/fchomo.js:377 +#: htdocs/luci-static/resources/view/fchomo/node.js:1897 msgid "Keep default" msgstr "保持預設" -#: htdocs/luci-static/resources/view/fchomo/node.js:1386 +#: htdocs/luci-static/resources/view/fchomo/node.js:1421 msgid "Keep-alive period" msgstr "Keep-alive 週期" #: htdocs/luci-static/resources/fchomo/listeners.js:296 -#: htdocs/luci-static/resources/view/fchomo/node.js:408 +#: htdocs/luci-static/resources/view/fchomo/node.js:420 msgid "Key" msgstr "密鑰" -#: htdocs/luci-static/resources/fchomo/listeners.js:976 -#: htdocs/luci-static/resources/view/fchomo/node.js:1138 +#: htdocs/luci-static/resources/fchomo/listeners.js:987 +#: htdocs/luci-static/resources/view/fchomo/node.js:1173 msgid "Key path" msgstr "憑證路徑" -#: htdocs/luci-static/resources/fchomo/listeners.js:758 +#: htdocs/luci-static/resources/fchomo/listeners.js:762 msgid "Keypairs" msgstr "密鑰對" #: htdocs/luci-static/resources/fchomo/listeners.js:128 -#: htdocs/luci-static/resources/view/fchomo/client.js:1016 -#: htdocs/luci-static/resources/view/fchomo/client.js:1267 -#: htdocs/luci-static/resources/view/fchomo/client.js:1359 -#: htdocs/luci-static/resources/view/fchomo/client.js:1498 -#: htdocs/luci-static/resources/view/fchomo/client.js:1729 -#: htdocs/luci-static/resources/view/fchomo/client.js:1785 +#: htdocs/luci-static/resources/view/fchomo/client.js:1024 +#: htdocs/luci-static/resources/view/fchomo/client.js:1275 +#: htdocs/luci-static/resources/view/fchomo/client.js:1367 +#: htdocs/luci-static/resources/view/fchomo/client.js:1509 +#: htdocs/luci-static/resources/view/fchomo/client.js:1740 +#: htdocs/luci-static/resources/view/fchomo/client.js:1796 #: htdocs/luci-static/resources/view/fchomo/node.js:241 -#: htdocs/luci-static/resources/view/fchomo/node.js:1623 -#: htdocs/luci-static/resources/view/fchomo/node.js:1974 +#: htdocs/luci-static/resources/view/fchomo/node.js:1663 +#: htdocs/luci-static/resources/view/fchomo/node.js:2016 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:267 msgid "Label" msgstr "標籤" -#: htdocs/luci-static/resources/view/fchomo/client.js:1124 -#: htdocs/luci-static/resources/view/fchomo/node.js:1919 +#: htdocs/luci-static/resources/view/fchomo/client.js:1132 +#: htdocs/luci-static/resources/view/fchomo/node.js:1961 msgid "Lazy" msgstr "懶惰狀態" #: htdocs/luci-static/resources/fchomo/listeners.js:437 -#: htdocs/luci-static/resources/view/fchomo/node.js:479 +#: htdocs/luci-static/resources/view/fchomo/node.js:491 msgid "Legacy" msgstr "傳統" @@ -1665,8 +1672,8 @@ msgstr "" msgid "Less compatibility and sometimes better performance." msgstr "有時效能較好。" -#: htdocs/luci-static/resources/fchomo/listeners.js:957 -#: htdocs/luci-static/resources/view/fchomo/node.js:1057 +#: htdocs/luci-static/resources/fchomo/listeners.js:968 +#: htdocs/luci-static/resources/view/fchomo/node.js:1095 msgid "List of supported application level protocols, in order of preference." msgstr "支援的應用層協議協商清單,依序排列。" @@ -1678,12 +1685,12 @@ msgstr "監聽位址" msgid "Listen fields" msgstr "監聽欄位" -#: htdocs/luci-static/resources/view/fchomo/global.js:750 +#: htdocs/luci-static/resources/view/fchomo/global.js:753 msgid "Listen interfaces" msgstr "監聽介面" #: htdocs/luci-static/resources/fchomo/listeners.js:153 -#: htdocs/luci-static/resources/view/fchomo/client.js:1384 +#: htdocs/luci-static/resources/view/fchomo/client.js:1392 msgid "Listen port" msgstr "監聽埠" @@ -1691,22 +1698,26 @@ msgstr "監聽埠" msgid "Listen ports" msgstr "監聽埠" -#: htdocs/luci-static/resources/fchomo.js:242 +#: htdocs/luci-static/resources/view/fchomo/client.js:1397 +msgid "Listen routing mark (Fwmark)" +msgstr "監聽路由標記 (Fwmark)" + +#: htdocs/luci-static/resources/fchomo.js:243 msgid "Load balance" msgstr "負載均衡" -#: htdocs/luci-static/resources/view/fchomo/node.js:1633 +#: htdocs/luci-static/resources/view/fchomo/node.js:1673 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:286 msgid "Local" msgstr "本地" -#: htdocs/luci-static/resources/view/fchomo/node.js:727 -#: htdocs/luci-static/resources/view/fchomo/node.js:770 +#: htdocs/luci-static/resources/view/fchomo/node.js:744 +#: htdocs/luci-static/resources/view/fchomo/node.js:807 msgid "Local IPv6 address" msgstr "本地 IPv6 位址" -#: htdocs/luci-static/resources/view/fchomo/node.js:719 -#: htdocs/luci-static/resources/view/fchomo/node.js:762 +#: htdocs/luci-static/resources/view/fchomo/node.js:736 +#: htdocs/luci-static/resources/view/fchomo/node.js:799 msgid "Local address" msgstr "本地位址" @@ -1730,24 +1741,24 @@ msgstr "日誌等級" #: htdocs/luci-static/resources/fchomo/listeners.js:373 #: htdocs/luci-static/resources/fchomo/listeners.js:374 #: htdocs/luci-static/resources/fchomo/listeners.js:379 -#: htdocs/luci-static/resources/view/fchomo/node.js:432 -#: htdocs/luci-static/resources/view/fchomo/node.js:433 -#: htdocs/luci-static/resources/view/fchomo/node.js:434 -#: htdocs/luci-static/resources/view/fchomo/node.js:439 +#: htdocs/luci-static/resources/view/fchomo/node.js:444 +#: htdocs/luci-static/resources/view/fchomo/node.js:445 +#: htdocs/luci-static/resources/view/fchomo/node.js:446 +#: htdocs/luci-static/resources/view/fchomo/node.js:451 msgid "Low-entropy data stream" msgstr "低熵資料流" -#: htdocs/luci-static/resources/fchomo.js:450 +#: htdocs/luci-static/resources/fchomo.js:452 msgid "Lowercase only" msgstr "僅限小寫" #: htdocs/luci-static/resources/view/fchomo/global.js:523 -#: htdocs/luci-static/resources/view/fchomo/node.js:733 -#: htdocs/luci-static/resources/view/fchomo/node.js:816 +#: htdocs/luci-static/resources/view/fchomo/node.js:750 +#: htdocs/luci-static/resources/view/fchomo/node.js:853 msgid "MTU" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:202 +#: htdocs/luci-static/resources/fchomo.js:203 msgid "Masque" msgstr "" @@ -1755,70 +1766,70 @@ msgstr "" msgid "Masquerade" msgstr "偽裝" -#: htdocs/luci-static/resources/view/fchomo/client.js:850 +#: htdocs/luci-static/resources/view/fchomo/client.js:858 msgid "Match domain. Support wildcards." msgstr "匹配網域。支援通配符。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1833 +#: htdocs/luci-static/resources/view/fchomo/client.js:1844 msgid "Match domain. Support wildcards.
" msgstr "匹配網域。支援通配符。
" -#: htdocs/luci-static/resources/view/fchomo/client.js:855 +#: htdocs/luci-static/resources/view/fchomo/client.js:863 msgid "Match geosite." msgstr "匹配 geosite。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1824 +#: htdocs/luci-static/resources/view/fchomo/client.js:1835 msgid "Match geosite.
" msgstr "匹配 geosite。
" -#: htdocs/luci-static/resources/view/fchomo/client.js:1815 +#: htdocs/luci-static/resources/view/fchomo/client.js:1826 msgid "Match response with geoip.
" msgstr "匹配回應通過 geoip。
" -#: htdocs/luci-static/resources/view/fchomo/client.js:1828 +#: htdocs/luci-static/resources/view/fchomo/client.js:1839 msgid "Match response with ipcidr.
" msgstr "匹配回應通過 ipcidr
" -#: htdocs/luci-static/resources/view/fchomo/client.js:860 +#: htdocs/luci-static/resources/view/fchomo/client.js:868 msgid "Match rule set." msgstr "匹配規則集。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1303 +#: htdocs/luci-static/resources/view/fchomo/node.js:1338 msgid "Max Early Data" msgstr "前置數據最大值" #: htdocs/luci-static/resources/fchomo/listeners.js:480 -#: htdocs/luci-static/resources/view/fchomo/node.js:576 +#: htdocs/luci-static/resources/view/fchomo/node.js:588 msgid "Max UDP relay packet size" msgstr "UDP 中繼數據包最大尺寸" -#: htdocs/luci-static/resources/fchomo/listeners.js:1175 +#: htdocs/luci-static/resources/fchomo/listeners.js:1186 msgid "Max buffered posts" msgstr "POST 最大緩衝" -#: htdocs/luci-static/resources/view/fchomo/node.js:1361 +#: htdocs/luci-static/resources/view/fchomo/node.js:1396 msgid "Max concurrency" msgstr "最大並發" -#: htdocs/luci-static/resources/view/fchomo/node.js:1366 +#: htdocs/luci-static/resources/view/fchomo/node.js:1401 msgid "Max connections" msgstr "最大連線數" -#: htdocs/luci-static/resources/view/fchomo/client.js:1138 +#: htdocs/luci-static/resources/view/fchomo/client.js:1146 msgid "Max count of failures" msgstr "最大失敗次數" #: htdocs/luci-static/resources/fchomo/listeners.js:181 -#: htdocs/luci-static/resources/view/fchomo/node.js:303 +#: htdocs/luci-static/resources/view/fchomo/node.js:315 msgid "Max download speed" msgstr "最大下載速度" -#: htdocs/luci-static/resources/fchomo/listeners.js:1186 -#: htdocs/luci-static/resources/view/fchomo/node.js:1343 +#: htdocs/luci-static/resources/fchomo/listeners.js:1197 +#: htdocs/luci-static/resources/view/fchomo/node.js:1378 msgid "Max each POST bytes" msgstr "POST 最大位元組數" -#: htdocs/luci-static/resources/view/fchomo/node.js:603 +#: htdocs/luci-static/resources/view/fchomo/node.js:620 msgid "Max open streams" msgstr "限制打開流的數量" @@ -1830,29 +1841,29 @@ msgstr "最大 Realms 數量" msgid "Max realms per client IP" msgstr "每客戶端 IP 最大 Realms 數量" -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 msgid "Max request times" msgstr "最大請求次數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1381 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 msgid "Max reusable seconds" msgstr "最大可重用秒數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1371 +#: htdocs/luci-static/resources/view/fchomo/node.js:1406 msgid "Max reuse times" msgstr "最大重用次數" #: htdocs/luci-static/resources/fchomo/listeners.js:175 -#: htdocs/luci-static/resources/view/fchomo/node.js:297 +#: htdocs/luci-static/resources/view/fchomo/node.js:309 msgid "Max upload speed" msgstr "最大上傳速度" -#: htdocs/luci-static/resources/view/fchomo/node.js:1407 -#: htdocs/luci-static/resources/view/fchomo/node.js:1427 +#: htdocs/luci-static/resources/view/fchomo/node.js:1442 +#: htdocs/luci-static/resources/view/fchomo/node.js:1462 msgid "Maximum connections" msgstr "最大連線數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1425 +#: htdocs/luci-static/resources/view/fchomo/node.js:1460 msgid "" "Maximum multiplexed streams in a connection before opening a new connection." "
Conflict with %s and %s." @@ -1861,27 +1872,27 @@ msgstr "" "%s 衝突。" #: htdocs/luci-static/resources/fchomo/listeners.js:402 -#: htdocs/luci-static/resources/view/fchomo/node.js:451 +#: htdocs/luci-static/resources/view/fchomo/node.js:463 msgid "Maximum padding rate" msgstr "最大填充率" #: htdocs/luci-static/resources/fchomo/listeners.js:410 -#: htdocs/luci-static/resources/view/fchomo/node.js:459 +#: htdocs/luci-static/resources/view/fchomo/node.js:471 msgid "" "Maximum padding rate must be greater than or equal to the minimum padding " "rate." msgstr "最大填充率必須大於等于最小填充率。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1424 +#: htdocs/luci-static/resources/view/fchomo/node.js:1459 msgid "Maximum streams" msgstr "最大流數量" #: htdocs/luci-static/resources/fchomo.js:157 -#: htdocs/luci-static/resources/fchomo.js:192 +#: htdocs/luci-static/resources/fchomo.js:193 msgid "Mieru" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:904 +#: htdocs/luci-static/resources/view/fchomo/client.js:912 #: htdocs/luci-static/resources/view/fchomo/log.js:149 #: htdocs/luci-static/resources/view/fchomo/log.js:154 msgid "Mihomo client" @@ -1893,26 +1904,26 @@ msgstr "Mihomo 客戶端" msgid "Mihomo server" msgstr "Mihomo 服務端" -#: htdocs/luci-static/resources/view/fchomo/node.js:647 +#: htdocs/luci-static/resources/view/fchomo/node.js:664 msgid "Min of idle sessions to keep" msgstr "要保留的最少閒置會話數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1349 +#: htdocs/luci-static/resources/view/fchomo/node.js:1384 msgid "Min posts interval" msgstr "POST 請求最小間隔時間" -#: htdocs/luci-static/resources/view/fchomo/node.js:1416 +#: htdocs/luci-static/resources/view/fchomo/node.js:1451 msgid "" "Minimum multiplexed streams in a connection before opening a new connection." msgstr "在開啟新連線之前,連線中的最小多路復用流數量。" #: htdocs/luci-static/resources/fchomo/listeners.js:395 -#: htdocs/luci-static/resources/view/fchomo/node.js:444 +#: htdocs/luci-static/resources/view/fchomo/node.js:456 msgid "Minimum padding rate" msgstr "最小填充率" -#: htdocs/luci-static/resources/view/fchomo/node.js:1415 -#: htdocs/luci-static/resources/view/fchomo/node.js:1427 +#: htdocs/luci-static/resources/view/fchomo/node.js:1450 +#: htdocs/luci-static/resources/view/fchomo/node.js:1462 msgid "Minimum streams" msgstr "最小流數量" @@ -1929,7 +1940,7 @@ msgstr "混合 系統 TCP 堆栈和 gVisor UDP 堆栈 msgid "Mixed port" msgstr "混合連接埠" -#: htdocs/luci-static/resources/view/fchomo/node.js:1393 +#: htdocs/luci-static/resources/view/fchomo/node.js:1428 msgid "Multiplex" msgstr "多路復用" @@ -1938,20 +1949,20 @@ msgstr "多路復用" msgid "Multiplex fields" msgstr "多路復用欄位" -#: htdocs/luci-static/resources/view/fchomo/node.js:385 +#: htdocs/luci-static/resources/view/fchomo/node.js:397 msgid "Multiplexing" msgstr "多路復用" -#: htdocs/luci-static/resources/view/fchomo/client.js:614 -#: htdocs/luci-static/resources/view/fchomo/client.js:689 +#: htdocs/luci-static/resources/view/fchomo/client.js:622 +#: htdocs/luci-static/resources/view/fchomo/client.js:697 msgid "NOT" msgstr "NOT" -#: htdocs/luci-static/resources/fchomo/listeners.js:612 +#: htdocs/luci-static/resources/fchomo/listeners.js:616 msgid "Name of the Proxy group as outbound." msgstr "出站代理組的名稱。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1708 +#: htdocs/luci-static/resources/view/fchomo/node.js:1748 msgid "Name of the Proxy group to download provider." msgstr "用於下載供應商訂閱的代理組名稱。" @@ -1959,23 +1970,27 @@ msgstr "用於下載供應商訂閱的代理組名稱。" msgid "Name of the Proxy group to download rule set." msgstr "用於下載規則集訂閱的代理組名稱。" -#: htdocs/luci-static/resources/fchomo/listeners.js:606 +#: htdocs/luci-static/resources/fchomo/listeners.js:610 msgid "Name of the Sub rule used for inbound matching." msgstr "用於入站匹配的子規則名稱。" -#: htdocs/luci-static/resources/view/fchomo/node.js:560 +#: htdocs/luci-static/resources/view/fchomo/node.js:572 msgid "Native UDP" msgstr "原生 UDP" -#: htdocs/luci-static/resources/fchomo.js:392 +#: htdocs/luci-static/resources/fchomo.js:394 msgid "Native appearance" msgstr "原生外觀" -#: htdocs/luci-static/resources/fchomo/listeners.js:638 +#: htdocs/luci-static/resources/view/fchomo/node.js:756 +msgid "Network" +msgstr "" + +#: htdocs/luci-static/resources/fchomo/listeners.js:642 msgid "Network type" msgstr "網路類型" -#: htdocs/luci-static/resources/view/fchomo/node.js:1857 +#: htdocs/luci-static/resources/view/fchomo/node.js:1899 msgid "No" msgstr "" @@ -1983,24 +1998,24 @@ msgstr "" msgid "No Authentication IP ranges" msgstr "無需認證的 IP 範圍" -#: htdocs/luci-static/resources/fchomo/listeners.js:1170 +#: htdocs/luci-static/resources/fchomo/listeners.js:1181 msgid "No SSE header" msgstr "無 SSE header" -#: htdocs/luci-static/resources/view/fchomo/client.js:1518 +#: htdocs/luci-static/resources/view/fchomo/client.js:1529 msgid "No add'l params" msgstr "無附加參數" -#: htdocs/luci-static/resources/view/fchomo/node.js:1333 +#: htdocs/luci-static/resources/view/fchomo/node.js:1368 msgid "No gRPC header" msgstr "無 gRPC header" -#: htdocs/luci-static/resources/view/fchomo/client.js:1125 -#: htdocs/luci-static/resources/view/fchomo/node.js:1920 +#: htdocs/luci-static/resources/view/fchomo/client.js:1133 +#: htdocs/luci-static/resources/view/fchomo/node.js:1962 msgid "No testing is performed when this provider node is not in use." msgstr "當此供應商的節點未使用時,不執行任何測試。" -#: htdocs/luci-static/resources/fchomo.js:697 +#: htdocs/luci-static/resources/fchomo.js:699 msgid "No valid %s found." msgstr "未找到有效的%s。" @@ -2008,31 +2023,31 @@ msgstr "未找到有效的%s。" msgid "No valid rule-set link found." msgstr "未找到有效的規則集連結。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1043 +#: htdocs/luci-static/resources/view/fchomo/client.js:1051 #: htdocs/luci-static/resources/view/fchomo/node.js:228 msgid "Node" msgstr "節點" -#: htdocs/luci-static/resources/view/fchomo/client.js:1170 -#: htdocs/luci-static/resources/view/fchomo/node.js:1940 +#: htdocs/luci-static/resources/view/fchomo/client.js:1178 +#: htdocs/luci-static/resources/view/fchomo/node.js:1982 msgid "Node exclude filter" msgstr "排除節點" -#: htdocs/luci-static/resources/view/fchomo/client.js:1175 -#: htdocs/luci-static/resources/view/fchomo/node.js:1947 +#: htdocs/luci-static/resources/view/fchomo/client.js:1183 +#: htdocs/luci-static/resources/view/fchomo/node.js:1989 msgid "Node exclude type" msgstr "排除節點類型" -#: htdocs/luci-static/resources/view/fchomo/client.js:1165 -#: htdocs/luci-static/resources/view/fchomo/node.js:1934 +#: htdocs/luci-static/resources/view/fchomo/client.js:1173 +#: htdocs/luci-static/resources/view/fchomo/node.js:1976 msgid "Node filter" msgstr "過濾節點" -#: htdocs/luci-static/resources/view/fchomo/client.js:1146 +#: htdocs/luci-static/resources/view/fchomo/client.js:1154 msgid "Node switch tolerance" msgstr "節點切換容差" -#: htdocs/luci-static/resources/fchomo.js:419 +#: htdocs/luci-static/resources/fchomo.js:421 msgid "None" msgstr "無" @@ -2040,70 +2055,70 @@ msgstr "無" msgid "Not Installed" msgstr "未安裝" -#: htdocs/luci-static/resources/fchomo.js:1215 +#: htdocs/luci-static/resources/fchomo.js:1242 msgid "Not Running" msgstr "未在運作" -#: htdocs/luci-static/resources/view/fchomo/node.js:505 +#: htdocs/luci-static/resources/view/fchomo/node.js:517 msgid "OFF" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:507 +#: htdocs/luci-static/resources/view/fchomo/node.js:519 msgid "ON" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:568 -#: htdocs/luci-static/resources/view/fchomo/node.js:845 +#: htdocs/luci-static/resources/view/fchomo/node.js:882 msgid "Obfs Mode" msgstr "Obfs 模式" #: htdocs/luci-static/resources/fchomo/listeners.js:213 -#: htdocs/luci-static/resources/view/fchomo/node.js:329 +#: htdocs/luci-static/resources/view/fchomo/node.js:341 msgid "Obfuscate maximum packet size" msgstr "混淆最大資料包大小" #: htdocs/luci-static/resources/fchomo/listeners.js:208 -#: htdocs/luci-static/resources/view/fchomo/node.js:324 +#: htdocs/luci-static/resources/view/fchomo/node.js:336 msgid "Obfuscate minimum packet size" msgstr "混淆最小資料包大小" #: htdocs/luci-static/resources/fchomo/listeners.js:200 -#: htdocs/luci-static/resources/view/fchomo/node.js:316 +#: htdocs/luci-static/resources/view/fchomo/node.js:328 msgid "Obfuscate password" msgstr "混淆密碼" #: htdocs/luci-static/resources/fchomo/listeners.js:193 #: htdocs/luci-static/resources/fchomo/listeners.js:370 -#: htdocs/luci-static/resources/view/fchomo/node.js:309 -#: htdocs/luci-static/resources/view/fchomo/node.js:430 +#: htdocs/luci-static/resources/view/fchomo/node.js:321 +#: htdocs/luci-static/resources/view/fchomo/node.js:442 msgid "Obfuscate type" msgstr "混淆類型" #: htdocs/luci-static/resources/fchomo/listeners.js:371 #: htdocs/luci-static/resources/fchomo/listeners.js:372 -#: htdocs/luci-static/resources/view/fchomo/node.js:431 -#: htdocs/luci-static/resources/view/fchomo/node.js:432 +#: htdocs/luci-static/resources/view/fchomo/node.js:443 +#: htdocs/luci-static/resources/view/fchomo/node.js:444 msgid "Obfuscated as %s" msgstr "混淆為%s" -#: htdocs/luci-static/resources/view/fchomo/global.js:901 +#: htdocs/luci-static/resources/view/fchomo/global.js:904 msgid "One or more numbers in the range 0-63 separated by commas" msgstr "0-63 範圍內的一個或多個數字,以逗號分隔" -#: htdocs/luci-static/resources/fchomo/listeners.js:897 +#: htdocs/luci-static/resources/fchomo/listeners.js:962 msgid "Only applicable when %s are used as a frontend." msgstr "僅當 %s 用作前端時適用。" #: htdocs/luci-static/resources/fchomo/listeners.js:379 -#: htdocs/luci-static/resources/view/fchomo/node.js:439 +#: htdocs/luci-static/resources/view/fchomo/node.js:451 msgid "Only applies to the %s." msgstr "只對%s生效。" -#: htdocs/luci-static/resources/view/fchomo/global.js:751 +#: htdocs/luci-static/resources/view/fchomo/global.js:754 msgid "Only process traffic from specific interfaces. Leave empty for all." msgstr "只處理來自指定介面的流量。留空表示全部。" -#: htdocs/luci-static/resources/fchomo.js:1209 +#: htdocs/luci-static/resources/fchomo.js:1236 msgid "Open Dashboard" msgstr "打開面板" @@ -2115,33 +2130,33 @@ msgstr "運作模式" msgid "Outbound" msgstr "出站" -#: htdocs/luci-static/resources/view/fchomo/global.js:676 -#: htdocs/luci-static/resources/view/fchomo/global.js:714 +#: htdocs/luci-static/resources/view/fchomo/global.js:679 +#: htdocs/luci-static/resources/view/fchomo/global.js:717 msgid "Override destination" msgstr "覆蓋目標位址" -#: htdocs/luci-static/resources/view/fchomo/client.js:1012 -#: htdocs/luci-static/resources/view/fchomo/node.js:1619 +#: htdocs/luci-static/resources/view/fchomo/client.js:1020 +#: htdocs/luci-static/resources/view/fchomo/node.js:1659 msgid "Override fields" msgstr "覆蓋欄位" -#: htdocs/luci-static/resources/view/fchomo/node.js:552 +#: htdocs/luci-static/resources/view/fchomo/node.js:564 msgid "Override the IP address of the server that DNS response." msgstr "覆蓋 DNS 回應的伺服器的 IP 位址。" -#: htdocs/luci-static/resources/view/fchomo/client.js:883 +#: htdocs/luci-static/resources/view/fchomo/client.js:891 msgid "Override the Proxy group of DNS server." msgstr "覆蓋 DNS 伺服器所使用的代理組。" -#: htdocs/luci-static/resources/view/fchomo/global.js:677 +#: htdocs/luci-static/resources/view/fchomo/global.js:680 msgid "Override the connection destination address with the sniffed domain." msgstr "使用嗅探到的網域覆寫連線目標。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1622 +#: htdocs/luci-static/resources/view/fchomo/client.js:1633 msgid "Override the existing ECS in original request." msgstr "覆蓋原始請求中已有的 ECS。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1165 +#: htdocs/luci-static/resources/view/fchomo/node.js:1200 msgid "Overrides the domain name used for HTTPS record queries." msgstr "覆蓋用於 HTTPS 記錄查詢的網域。" @@ -2149,19 +2164,19 @@ msgstr "覆蓋用於 HTTPS 記錄查詢的網域。" msgid "Overview" msgstr "概覽" -#: htdocs/luci-static/resources/view/fchomo/node.js:1260 +#: htdocs/luci-static/resources/view/fchomo/node.js:1295 msgid "POST" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1261 +#: htdocs/luci-static/resources/view/fchomo/node.js:1296 msgid "PUT" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:696 +#: htdocs/luci-static/resources/view/fchomo/node.js:713 msgid "Packet encoding" msgstr "數據包編碼" -#: htdocs/luci-static/resources/view/fchomo/node.js:1338 +#: htdocs/luci-static/resources/view/fchomo/node.js:1373 msgid "Padding bytes" msgstr "填充位元組" @@ -2169,17 +2184,17 @@ msgstr "填充位元組" msgid "Padding scheme" msgstr "填充方案" -#: htdocs/luci-static/resources/fchomo/listeners.js:737 -#: htdocs/luci-static/resources/view/fchomo/node.js:969 +#: htdocs/luci-static/resources/fchomo/listeners.js:741 +#: htdocs/luci-static/resources/view/fchomo/node.js:1007 msgid "Paddings" msgstr "填充 (Paddings)" #: htdocs/luci-static/resources/fchomo/listeners.js:166 #: htdocs/luci-static/resources/fchomo/listeners.js:263 #: htdocs/luci-static/resources/fchomo/listeners.js:589 -#: htdocs/luci-static/resources/view/fchomo/node.js:273 -#: htdocs/luci-static/resources/view/fchomo/node.js:363 -#: htdocs/luci-static/resources/view/fchomo/node.js:860 +#: htdocs/luci-static/resources/view/fchomo/node.js:285 +#: htdocs/luci-static/resources/view/fchomo/node.js:375 +#: htdocs/luci-static/resources/view/fchomo/node.js:897 msgid "Password" msgstr "密碼" @@ -2191,13 +2206,13 @@ msgstr "捆綁包路徑" msgid "Path in bundle: %s" msgstr "在捆綁包%s中的路徑" -#: htdocs/luci-static/resources/fchomo/listeners.js:677 -#: htdocs/luci-static/resources/view/fchomo/node.js:1683 +#: htdocs/luci-static/resources/fchomo/listeners.js:681 +#: htdocs/luci-static/resources/view/fchomo/node.js:1723 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:373 msgid "Payload" msgstr "Payload" -#: htdocs/luci-static/resources/view/fchomo/node.js:784 +#: htdocs/luci-static/resources/view/fchomo/node.js:821 msgid "Peer pubkic key" msgstr "對端公鑰" @@ -2207,11 +2222,11 @@ msgid "" "it is not needed." msgstr "效能可能會略有下降,建議僅在需要時開啟。" -#: htdocs/luci-static/resources/view/fchomo/node.js:811 +#: htdocs/luci-static/resources/view/fchomo/node.js:848 msgid "Periodically sends data packets to maintain connection persistence." msgstr "定期發送資料包以維持連線持久性。" -#: htdocs/luci-static/resources/view/fchomo/node.js:810 +#: htdocs/luci-static/resources/view/fchomo/node.js:847 msgid "Persistent keepalive" msgstr "持久連接" @@ -2219,7 +2234,7 @@ msgstr "持久連接" msgid "Plain text" msgstr "純文本 text" -#: htdocs/luci-static/resources/view/fchomo/global.js:878 +#: htdocs/luci-static/resources/view/fchomo/global.js:881 msgid "" "Please ensure that the DNS query of the domains to be processed in the DNS " "policy
are send via DIRECT/Proxy Node in the same semantics as Routing " @@ -2234,8 +2249,8 @@ msgid "" "standards." msgstr "連結格式標準請參考
%s。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1656 -#: htdocs/luci-static/resources/view/fchomo/node.js:1682 +#: htdocs/luci-static/resources/view/fchomo/node.js:1696 +#: htdocs/luci-static/resources/view/fchomo/node.js:1722 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:346 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:372 msgid "" @@ -2244,19 +2259,19 @@ msgid "" msgstr "" "請輸入 %s。" -#: htdocs/luci-static/resources/view/fchomo/client.js:950 -#: htdocs/luci-static/resources/view/fchomo/client.js:1211 -#: htdocs/luci-static/resources/view/fchomo/client.js:1330 -#: htdocs/luci-static/resources/view/fchomo/client.js:1455 -#: htdocs/luci-static/resources/view/fchomo/client.js:1707 -#: htdocs/luci-static/resources/view/fchomo/client.js:1759 -#: htdocs/luci-static/resources/view/fchomo/node.js:1523 +#: htdocs/luci-static/resources/view/fchomo/client.js:958 +#: htdocs/luci-static/resources/view/fchomo/client.js:1219 +#: htdocs/luci-static/resources/view/fchomo/client.js:1338 +#: htdocs/luci-static/resources/view/fchomo/client.js:1466 +#: htdocs/luci-static/resources/view/fchomo/client.js:1718 +#: htdocs/luci-static/resources/view/fchomo/client.js:1770 +#: htdocs/luci-static/resources/view/fchomo/node.js:1563 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:155 msgid "Please type %s fields of mihomo config.
" msgstr "請輸入 mihomo 配置的 %s 欄位。
" #: htdocs/luci-static/resources/fchomo/listeners.js:560 -#: htdocs/luci-static/resources/view/fchomo/node.js:834 +#: htdocs/luci-static/resources/view/fchomo/node.js:871 msgid "Plugin" msgstr "插件" @@ -2265,12 +2280,12 @@ msgstr "插件" #: htdocs/luci-static/resources/fchomo/listeners.js:582 #: htdocs/luci-static/resources/fchomo/listeners.js:589 #: htdocs/luci-static/resources/fchomo/listeners.js:595 -#: htdocs/luci-static/resources/view/fchomo/node.js:845 -#: htdocs/luci-static/resources/view/fchomo/node.js:852 -#: htdocs/luci-static/resources/view/fchomo/node.js:860 -#: htdocs/luci-static/resources/view/fchomo/node.js:866 -#: htdocs/luci-static/resources/view/fchomo/node.js:874 -#: htdocs/luci-static/resources/view/fchomo/node.js:880 +#: htdocs/luci-static/resources/view/fchomo/node.js:882 +#: htdocs/luci-static/resources/view/fchomo/node.js:889 +#: htdocs/luci-static/resources/view/fchomo/node.js:897 +#: htdocs/luci-static/resources/view/fchomo/node.js:903 +#: htdocs/luci-static/resources/view/fchomo/node.js:911 +#: htdocs/luci-static/resources/view/fchomo/node.js:917 msgid "Plugin:" msgstr "插件:" @@ -2278,36 +2293,36 @@ msgstr "插件:" msgid "Port" msgstr "連接埠" -#: htdocs/luci-static/resources/fchomo.js:1446 +#: htdocs/luci-static/resources/fchomo.js:1473 msgid "Port %s alrealy exists!" msgstr "連接埠 %s 已存在!" -#: htdocs/luci-static/resources/view/fchomo/node.js:291 +#: htdocs/luci-static/resources/view/fchomo/node.js:303 msgid "Port hop interval" msgstr "連接埠跳躍間隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:373 +#: htdocs/luci-static/resources/view/fchomo/node.js:385 msgid "Port range" msgstr "連接埠範圍" -#: htdocs/luci-static/resources/view/fchomo/global.js:711 +#: htdocs/luci-static/resources/view/fchomo/global.js:714 msgid "Ports" msgstr "連接埠" #: htdocs/luci-static/resources/fchomo/listeners.js:153 -#: htdocs/luci-static/resources/view/fchomo/node.js:286 +#: htdocs/luci-static/resources/view/fchomo/node.js:298 msgid "Ports pool" msgstr "連接埠池" #: htdocs/luci-static/resources/fchomo/listeners.js:225 #: htdocs/luci-static/resources/fchomo/listeners.js:456 -#: htdocs/luci-static/resources/view/fchomo/node.js:522 -#: htdocs/luci-static/resources/view/fchomo/node.js:791 +#: htdocs/luci-static/resources/view/fchomo/node.js:534 +#: htdocs/luci-static/resources/view/fchomo/node.js:828 msgid "Pre-shared key" msgstr "預先共用金鑰" -#: htdocs/luci-static/resources/fchomo/listeners.js:875 -#: htdocs/luci-static/resources/view/fchomo/node.js:1004 +#: htdocs/luci-static/resources/fchomo/listeners.js:879 +#: htdocs/luci-static/resources/view/fchomo/node.js:1042 msgid "Pre-shared key of rendezvous server" msgstr "牽線伺服器的預先共用金鑰" @@ -2324,25 +2339,25 @@ msgid "" "Prevent ICMP loopback issues in some cases. Ping will not show real delay." msgstr "防止某些情況下的 ICMP 環回問題。 Ping 不會顯示實際延遲。" -#: htdocs/luci-static/resources/view/fchomo/global.js:757 -#: htdocs/luci-static/resources/view/fchomo/global.js:774 -#: htdocs/luci-static/resources/view/fchomo/node.js:1487 -#: htdocs/luci-static/resources/view/fchomo/node.js:1493 -#: htdocs/luci-static/resources/view/fchomo/node.js:1869 -#: htdocs/luci-static/resources/view/fchomo/node.js:1876 +#: htdocs/luci-static/resources/view/fchomo/global.js:760 +#: htdocs/luci-static/resources/view/fchomo/global.js:777 +#: htdocs/luci-static/resources/view/fchomo/node.js:1524 +#: htdocs/luci-static/resources/view/fchomo/node.js:1531 +#: htdocs/luci-static/resources/view/fchomo/node.js:1911 +#: htdocs/luci-static/resources/view/fchomo/node.js:1918 msgid "Priority: Proxy Node > Global." msgstr "優先權: 代理節點 > 全域。" -#: htdocs/luci-static/resources/view/fchomo/node.js:335 +#: htdocs/luci-static/resources/view/fchomo/node.js:347 msgid "Priv-key" msgstr "金鑰" -#: htdocs/luci-static/resources/view/fchomo/node.js:339 +#: htdocs/luci-static/resources/view/fchomo/node.js:351 msgid "Priv-key passphrase" msgstr "金鑰密碼" -#: htdocs/luci-static/resources/view/fchomo/node.js:704 -#: htdocs/luci-static/resources/view/fchomo/node.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:721 +#: htdocs/luci-static/resources/view/fchomo/node.js:813 msgid "Private key" msgstr "私鑰" @@ -2350,69 +2365,69 @@ msgstr "私鑰" msgid "Process matching mode" msgstr "進程匹配模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:705 -#: htdocs/luci-static/resources/view/fchomo/node.js:1399 +#: htdocs/luci-static/resources/view/fchomo/global.js:708 +#: htdocs/luci-static/resources/view/fchomo/node.js:1434 msgid "Protocol" msgstr "協議" -#: htdocs/luci-static/resources/view/fchomo/node.js:691 +#: htdocs/luci-static/resources/view/fchomo/node.js:708 msgid "Protocol parameter. Enable length block encryption." msgstr "協議參數。啟用長度塊加密。" -#: htdocs/luci-static/resources/view/fchomo/node.js:685 +#: htdocs/luci-static/resources/view/fchomo/node.js:702 msgid "" "Protocol parameter. Will waste traffic randomly if enabled (enabled by " "default in v2ray and cannot be disabled)." msgstr "協議參數。 如啟用會隨機浪費流量(在 v2ray 中預設為啟用且無法停用)。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1057 -#: htdocs/luci-static/resources/view/fchomo/node.js:1506 -#: htdocs/luci-static/resources/view/fchomo/node.js:1515 -#: htdocs/luci-static/resources/view/fchomo/node.js:1985 +#: htdocs/luci-static/resources/view/fchomo/client.js:1065 +#: htdocs/luci-static/resources/view/fchomo/node.js:1546 +#: htdocs/luci-static/resources/view/fchomo/node.js:1555 +#: htdocs/luci-static/resources/view/fchomo/node.js:2027 msgid "Provider" msgstr "供應商" -#: htdocs/luci-static/resources/view/fchomo/node.js:1689 +#: htdocs/luci-static/resources/view/fchomo/node.js:1729 msgid "Provider URL" msgstr "供應商訂閱 URL" -#: htdocs/luci-static/resources/view/fchomo/client.js:924 -#: htdocs/luci-static/resources/view/fchomo/client.js:942 -#: htdocs/luci-static/resources/view/fchomo/client.js:1411 +#: htdocs/luci-static/resources/view/fchomo/client.js:932 +#: htdocs/luci-static/resources/view/fchomo/client.js:950 +#: htdocs/luci-static/resources/view/fchomo/client.js:1422 msgid "Proxy Group" msgstr "代理組" -#: htdocs/luci-static/resources/view/fchomo/global.js:807 +#: htdocs/luci-static/resources/view/fchomo/global.js:810 msgid "Proxy IPv4 IP-s" msgstr "代理 IPv4 位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:810 +#: htdocs/luci-static/resources/view/fchomo/global.js:813 msgid "Proxy IPv6 IP-s" msgstr "代理 IPv6 位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:813 +#: htdocs/luci-static/resources/view/fchomo/global.js:816 msgid "Proxy MAC-s" msgstr "代理 MAC 位址" #: htdocs/luci-static/resources/view/fchomo/node.js:219 -#: htdocs/luci-static/resources/view/fchomo/node.js:1984 +#: htdocs/luci-static/resources/view/fchomo/node.js:2026 msgid "Proxy Node" msgstr "代理節點" -#: htdocs/luci-static/resources/view/fchomo/node.js:1960 -#: htdocs/luci-static/resources/view/fchomo/node.js:1969 +#: htdocs/luci-static/resources/view/fchomo/node.js:2002 +#: htdocs/luci-static/resources/view/fchomo/node.js:2011 msgid "Proxy chain" msgstr "代理鏈" -#: htdocs/luci-static/resources/fchomo/listeners.js:611 -#: htdocs/luci-static/resources/view/fchomo/client.js:784 -#: htdocs/luci-static/resources/view/fchomo/client.js:1553 -#: htdocs/luci-static/resources/view/fchomo/node.js:1707 +#: htdocs/luci-static/resources/fchomo/listeners.js:615 +#: htdocs/luci-static/resources/view/fchomo/client.js:792 +#: htdocs/luci-static/resources/view/fchomo/client.js:1564 +#: htdocs/luci-static/resources/view/fchomo/node.js:1747 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:403 msgid "Proxy group" msgstr "代理組" -#: htdocs/luci-static/resources/view/fchomo/client.js:882 +#: htdocs/luci-static/resources/view/fchomo/client.js:890 msgid "Proxy group override" msgstr "代理組覆蓋" @@ -2420,76 +2435,80 @@ msgstr "代理組覆蓋" msgid "Proxy mode" msgstr "代理模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:816 +#: htdocs/luci-static/resources/view/fchomo/global.js:819 msgid "Proxy routerself" msgstr "代理路由器自身" -#: htdocs/luci-static/resources/view/fchomo/node.js:561 -#: htdocs/luci-static/resources/view/fchomo/node.js:756 +#: htdocs/luci-static/resources/view/fchomo/node.js:573 +#: htdocs/luci-static/resources/view/fchomo/node.js:793 msgid "QUIC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:927 +#: htdocs/luci-static/resources/view/fchomo/client.js:935 #: htdocs/luci-static/resources/view/fchomo/server.js:44 msgid "Quick Reload" msgstr "快速重載" -#: htdocs/luci-static/resources/fchomo/listeners.js:1064 -#: htdocs/luci-static/resources/view/fchomo/node.js:1179 +#: htdocs/luci-static/resources/fchomo/listeners.js:1075 +#: htdocs/luci-static/resources/view/fchomo/node.js:1214 msgid "REALITY" msgstr "REALITY" -#: htdocs/luci-static/resources/view/fchomo/node.js:1194 +#: htdocs/luci-static/resources/view/fchomo/node.js:1229 msgid "REALITY X25519MLKEM768 PQC support" msgstr "REALITY X25519MLKEM768 後量子加密支援" -#: htdocs/luci-static/resources/fchomo/listeners.js:1101 +#: htdocs/luci-static/resources/fchomo/listeners.js:1112 msgid "REALITY certificate issued to" msgstr "REALITY 證書頒發給" -#: htdocs/luci-static/resources/fchomo/listeners.js:1069 +#: htdocs/luci-static/resources/fchomo/listeners.js:1080 msgid "REALITY handshake server" msgstr "REALITY 握手伺服器" -#: htdocs/luci-static/resources/fchomo/listeners.js:1076 +#: htdocs/luci-static/resources/fchomo/listeners.js:1087 msgid "REALITY private key" msgstr "REALITY 私鑰" -#: htdocs/luci-static/resources/fchomo/listeners.js:1091 -#: htdocs/luci-static/resources/view/fchomo/node.js:1184 +#: htdocs/luci-static/resources/fchomo/listeners.js:1102 +#: htdocs/luci-static/resources/view/fchomo/node.js:1219 msgid "REALITY public key" msgstr "REALITY 公鑰" -#: htdocs/luci-static/resources/fchomo/listeners.js:1095 -#: htdocs/luci-static/resources/view/fchomo/node.js:1189 +#: htdocs/luci-static/resources/fchomo/listeners.js:1106 +#: htdocs/luci-static/resources/view/fchomo/node.js:1224 msgid "REALITY short ID" msgstr "REALITY 標識符" -#: htdocs/luci-static/resources/fchomo/listeners.js:708 -#: htdocs/luci-static/resources/fchomo/listeners.js:727 -#: htdocs/luci-static/resources/view/fchomo/node.js:959 +#: htdocs/luci-static/resources/view/fchomo/node.js:267 +msgid "REMATCH-NAME marking" +msgstr "REMATCH-NAME 打標" + +#: htdocs/luci-static/resources/fchomo/listeners.js:712 +#: htdocs/luci-static/resources/fchomo/listeners.js:731 +#: htdocs/luci-static/resources/view/fchomo/node.js:997 msgid "RTT" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:384 +#: htdocs/luci-static/resources/fchomo.js:386 msgid "Random" msgstr "隨機" -#: htdocs/luci-static/resources/view/fchomo/global.js:665 +#: htdocs/luci-static/resources/view/fchomo/global.js:668 msgid "Random will be used if empty." msgstr "留空將使用隨機令牌。" -#: htdocs/luci-static/resources/fchomo.js:394 +#: htdocs/luci-static/resources/fchomo.js:396 msgid "Randomized traffic characteristics" msgstr "隨機化流量特徵" -#: htdocs/luci-static/resources/fchomo/listeners.js:864 -#: htdocs/luci-static/resources/view/fchomo/node.js:993 +#: htdocs/luci-static/resources/fchomo/listeners.js:868 +#: htdocs/luci-static/resources/view/fchomo/node.js:1031 msgid "Realm" msgstr "Realm" -#: htdocs/luci-static/resources/fchomo/listeners.js:880 -#: htdocs/luci-static/resources/view/fchomo/node.js:1009 +#: htdocs/luci-static/resources/fchomo/listeners.js:884 +#: htdocs/luci-static/resources/view/fchomo/node.js:1047 msgid "Realm ID" msgstr "Realm ID" @@ -2517,8 +2536,8 @@ msgstr "Redirect TCP + Tun UDP" msgid "Refresh every %s seconds." msgstr "每 %s 秒刷新。" -#: htdocs/luci-static/resources/fchomo.js:1202 -#: htdocs/luci-static/resources/view/fchomo/client.js:928 +#: htdocs/luci-static/resources/fchomo.js:1229 +#: htdocs/luci-static/resources/view/fchomo/client.js:936 #: htdocs/luci-static/resources/view/fchomo/global.js:193 #: htdocs/luci-static/resources/view/fchomo/server.js:45 msgid "Reload" @@ -2528,69 +2547,77 @@ msgstr "重載" msgid "Reload All" msgstr "重載所有" -#: htdocs/luci-static/resources/view/fchomo/node.js:1634 +#: htdocs/luci-static/resources/fchomo.js:187 +msgid "Rematch" +msgstr "再路由" + +#: htdocs/luci-static/resources/fchomo.js:187 +msgid "Rematching routing rules" +msgstr "重新匹配路由規則" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1674 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:287 msgid "Remote" msgstr "遠端" -#: htdocs/luci-static/resources/view/fchomo/node.js:739 -#: htdocs/luci-static/resources/view/fchomo/node.js:822 +#: htdocs/luci-static/resources/view/fchomo/node.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:859 msgid "Remote DNS resolve" msgstr "遠端 DNS 解析" -#: htdocs/luci-static/resources/fchomo.js:1367 +#: htdocs/luci-static/resources/fchomo.js:1394 msgid "Remove" msgstr "移除" -#: htdocs/luci-static/resources/fchomo.js:1372 -#: htdocs/luci-static/resources/view/fchomo/node.js:1610 -#: htdocs/luci-static/resources/view/fchomo/node.js:1612 +#: htdocs/luci-static/resources/fchomo.js:1399 +#: htdocs/luci-static/resources/view/fchomo/node.js:1650 +#: htdocs/luci-static/resources/view/fchomo/node.js:1652 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:259 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:261 msgid "Remove idles" msgstr "移除閒置" -#: htdocs/luci-static/resources/fchomo/listeners.js:869 -#: htdocs/luci-static/resources/view/fchomo/node.js:998 +#: htdocs/luci-static/resources/fchomo/listeners.js:873 +#: htdocs/luci-static/resources/view/fchomo/node.js:1036 msgid "Rendezvous server" msgstr "牽線伺服器" -#: htdocs/luci-static/resources/view/fchomo/node.js:1799 +#: htdocs/luci-static/resources/view/fchomo/node.js:1841 msgid "Replace name" msgstr "名稱替換" -#: htdocs/luci-static/resources/view/fchomo/node.js:1800 +#: htdocs/luci-static/resources/view/fchomo/node.js:1842 msgid "Replace node name." msgstr "替換節點名稱" -#: htdocs/luci-static/resources/fchomo.js:368 +#: htdocs/luci-static/resources/fchomo.js:370 msgid "Request" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1149 -#: htdocs/luci-static/resources/view/fchomo/node.js:1267 -#: htdocs/luci-static/resources/view/fchomo/node.js:1274 +#: htdocs/luci-static/resources/fchomo/listeners.js:1160 +#: htdocs/luci-static/resources/view/fchomo/node.js:1302 +#: htdocs/luci-static/resources/view/fchomo/node.js:1309 msgid "Request path" msgstr "請求路徑" -#: htdocs/luci-static/resources/view/fchomo/node.js:596 +#: htdocs/luci-static/resources/view/fchomo/node.js:613 msgid "Request timeout" msgstr "請求逾時" -#: htdocs/luci-static/resources/fchomo.js:371 +#: htdocs/luci-static/resources/fchomo.js:373 msgid "Require and verify" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:369 +#: htdocs/luci-static/resources/fchomo.js:371 msgid "Require any" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:402 -#: htdocs/luci-static/resources/view/fchomo/node.js:1195 +#: htdocs/luci-static/resources/fchomo.js:404 +#: htdocs/luci-static/resources/view/fchomo/node.js:1230 msgid "Requires server support." msgstr "需要伺服器支援。" -#: htdocs/luci-static/resources/view/fchomo/node.js:805 +#: htdocs/luci-static/resources/view/fchomo/node.js:842 msgid "Reserved field bytes" msgstr "保留字段位元組" @@ -2598,78 +2625,76 @@ msgstr "保留字段位元組" msgid "Resources management" msgstr "資源管理" -#: htdocs/luci-static/resources/view/fchomo/node.js:880 +#: htdocs/luci-static/resources/view/fchomo/node.js:917 msgid "Restls script" msgstr "Restls 劇本" -#: htdocs/luci-static/resources/view/fchomo/client.js:1182 +#: htdocs/luci-static/resources/view/fchomo/client.js:1190 msgid "" "Returns hidden status in the API to hide the display of this proxy group." msgstr "在 API 傳回 hidden 狀態,以隱藏該代理組顯示。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1188 +#: htdocs/luci-static/resources/view/fchomo/client.js:1196 msgid "" "Returns the string input for icon in the API to display in this proxy group." msgstr "在 API 傳回 icon 所輸入的字串,以在該代理組顯示。" -#: htdocs/luci-static/resources/view/fchomo/node.js:506 +#: htdocs/luci-static/resources/view/fchomo/node.js:518 msgid "Reuse HTTP connections to reduce RTT for each connection establishment." msgstr "重用 HTTP 連接以減少每次建立連接的 RTT。" -#: htdocs/luci-static/resources/view/fchomo/node.js:503 -#: htdocs/luci-static/resources/view/fchomo/node.js:507 +#: htdocs/luci-static/resources/view/fchomo/node.js:515 +#: htdocs/luci-static/resources/view/fchomo/node.js:519 msgid "Reusing a single tunnel to carry multiple target connections within it." msgstr "複用單條隧道使其內部承載多條目標連線。" -#: htdocs/luci-static/resources/view/fchomo/global.js:835 +#: htdocs/luci-static/resources/view/fchomo/global.js:838 msgid "Routing Control" msgstr "路由控制" -#: htdocs/luci-static/resources/view/fchomo/global.js:890 #: htdocs/luci-static/resources/view/fchomo/global.js:893 +#: htdocs/luci-static/resources/view/fchomo/global.js:896 msgid "Routing DSCP" msgstr "路由 DSCP" -#: htdocs/luci-static/resources/view/fchomo/global.js:860 +#: htdocs/luci-static/resources/view/fchomo/global.js:863 msgid "Routing GFW" msgstr "路由 GFW 流量" -#: htdocs/luci-static/resources/view/fchomo/node.js:1492 -#: htdocs/luci-static/resources/view/fchomo/node.js:1875 -msgid "Routing mark" -msgstr "路由標記" - -#: htdocs/luci-static/resources/view/fchomo/global.js:773 +#: htdocs/luci-static/resources/fchomo/listeners.js:605 +#: htdocs/luci-static/resources/view/fchomo/global.js:776 +#: htdocs/luci-static/resources/view/fchomo/node.js:1530 +#: htdocs/luci-static/resources/view/fchomo/node.js:1917 msgid "Routing mark (Fwmark)" msgstr "路由標記 (Fwmark)" -#: htdocs/luci-static/resources/view/fchomo/global.js:855 +#: htdocs/luci-static/resources/view/fchomo/global.js:858 msgid "Routing mode" msgstr "路由模式" -#: htdocs/luci-static/resources/view/fchomo/global.js:856 +#: htdocs/luci-static/resources/view/fchomo/global.js:859 msgid "Routing mode of the traffic enters mihomo via firewall rules." msgstr "流量經由防火牆規則進入 mihomo 的路由模式。" -#: htdocs/luci-static/resources/view/fchomo/global.js:877 +#: htdocs/luci-static/resources/view/fchomo/global.js:880 msgid "Routing mode will be handle domain." msgstr "路由模式將處理網域。" -#: htdocs/luci-static/resources/view/fchomo/global.js:837 -#: htdocs/luci-static/resources/view/fchomo/global.js:846 +#: htdocs/luci-static/resources/view/fchomo/global.js:840 +#: htdocs/luci-static/resources/view/fchomo/global.js:849 msgid "Routing ports" msgstr "路由連接埠" -#: htdocs/luci-static/resources/view/fchomo/client.js:1194 -#: htdocs/luci-static/resources/view/fchomo/client.js:1203 +#: htdocs/luci-static/resources/view/fchomo/client.js:1202 +#: htdocs/luci-static/resources/view/fchomo/client.js:1211 msgid "Routing rule" msgstr "路由規則" -#: htdocs/luci-static/resources/view/fchomo/global.js:767 +#: htdocs/luci-static/resources/view/fchomo/global.js:770 msgid "Routing rule priority" msgstr "路由規則優先權" -#: htdocs/luci-static/resources/view/fchomo/global.js:761 +#: htdocs/luci-static/resources/view/fchomo/global.js:764 msgid "Routing table ID" msgstr "路由表 ID" @@ -2677,8 +2702,8 @@ msgstr "路由表 ID" msgid "Rule" msgstr "規則" -#: htdocs/luci-static/resources/view/fchomo/client.js:846 -#: htdocs/luci-static/resources/view/fchomo/client.js:859 +#: htdocs/luci-static/resources/view/fchomo/client.js:854 +#: htdocs/luci-static/resources/view/fchomo/client.js:867 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:147 msgid "Rule set" msgstr "規則集" @@ -2695,11 +2720,11 @@ msgstr "規則集" msgid "Ruleset-URI-Scheme" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1215 +#: htdocs/luci-static/resources/fchomo.js:1242 msgid "Running" msgstr "正在運作" -#: htdocs/luci-static/resources/fchomo.js:250 +#: htdocs/luci-static/resources/fchomo.js:251 msgid "SMTP" msgstr "" @@ -2707,33 +2732,33 @@ msgstr "" msgid "SOCKS" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:189 +#: htdocs/luci-static/resources/fchomo.js:190 msgid "SOCKS5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:205 +#: htdocs/luci-static/resources/fchomo.js:206 msgid "SSH" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:251 +#: htdocs/luci-static/resources/fchomo.js:252 msgid "STUN" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:886 -#: htdocs/luci-static/resources/view/fchomo/node.js:1015 +#: htdocs/luci-static/resources/fchomo/listeners.js:890 +#: htdocs/luci-static/resources/view/fchomo/node.js:1053 msgid "STUN servers" msgstr "STUN 伺服器" -#: htdocs/luci-static/resources/view/fchomo/client.js:1286 +#: htdocs/luci-static/resources/view/fchomo/client.js:1294 msgid "SUB-RULE" msgstr "SUB-RULE" -#: htdocs/luci-static/resources/view/fchomo/node.js:916 +#: htdocs/luci-static/resources/view/fchomo/node.js:954 msgid "SUoT version" msgstr "SUoT 版本" #: htdocs/luci-static/resources/fchomo/listeners.js:195 -#: htdocs/luci-static/resources/view/fchomo/node.js:311 +#: htdocs/luci-static/resources/view/fchomo/node.js:323 msgid "Salamander" msgstr "Salamander" @@ -2754,7 +2779,7 @@ msgstr "" msgid "Segment maximum size" msgstr "分段最大尺寸" -#: htdocs/luci-static/resources/fchomo.js:239 +#: htdocs/luci-static/resources/fchomo.js:240 msgid "Select" msgstr "手動選擇" @@ -2762,18 +2787,18 @@ msgstr "手動選擇" msgid "Select Dashboard" msgstr "選擇面板" -#: htdocs/luci-static/resources/fchomo.js:408 +#: htdocs/luci-static/resources/fchomo.js:410 msgid "Send padding randomly 0-3333 bytes with 50% probability." msgstr "以 50% 的機率發送隨機 0 到 3333 位元組的填充。" -#: htdocs/luci-static/resources/fchomo.js:397 -#: htdocs/luci-static/resources/fchomo.js:398 +#: htdocs/luci-static/resources/fchomo.js:399 +#: htdocs/luci-static/resources/fchomo.js:400 msgid "Send random ticket of 300s-600s duration for client 0-RTT reuse." msgstr "發送 300-600 秒的隨機票證,以供客戶端 0-RTT 重用。" -#: htdocs/luci-static/resources/fchomo/listeners.js:708 -#: htdocs/luci-static/resources/fchomo/listeners.js:962 -#: htdocs/luci-static/resources/fchomo/listeners.js:977 +#: htdocs/luci-static/resources/fchomo/listeners.js:712 +#: htdocs/luci-static/resources/fchomo/listeners.js:973 +#: htdocs/luci-static/resources/fchomo/listeners.js:988 #: htdocs/luci-static/resources/view/fchomo/server.js:58 #: root/usr/share/luci/menu.d/luci-app-fchomo.json:62 msgid "Server" @@ -2783,9 +2808,9 @@ msgstr "服務端" msgid "Server address" msgstr "伺服器位址" -#: htdocs/luci-static/resources/fchomo/listeners.js:1143 -#: htdocs/luci-static/resources/view/fchomo/node.js:1246 -#: htdocs/luci-static/resources/view/fchomo/node.js:1252 +#: htdocs/luci-static/resources/fchomo/listeners.js:1154 +#: htdocs/luci-static/resources/view/fchomo/node.js:1281 +#: htdocs/luci-static/resources/view/fchomo/node.js:1287 msgid "Server hostname" msgstr "伺服器主機名稱" @@ -2798,26 +2823,26 @@ msgid "Service status" msgstr "服務狀態" #: htdocs/luci-static/resources/fchomo.js:156 -#: htdocs/luci-static/resources/fchomo.js:190 +#: htdocs/luci-static/resources/fchomo.js:191 msgid "Shadowsocks" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:506 -#: htdocs/luci-static/resources/view/fchomo/node.js:615 +#: htdocs/luci-static/resources/view/fchomo/node.js:632 msgid "Shadowsocks chipher" msgstr "Shadowsocks 加密方法" #: htdocs/luci-static/resources/fchomo/listeners.js:501 -#: htdocs/luci-static/resources/view/fchomo/node.js:610 +#: htdocs/luci-static/resources/view/fchomo/node.js:627 msgid "Shadowsocks encrypt" msgstr "Shadowsocks 加密" #: htdocs/luci-static/resources/fchomo/listeners.js:514 -#: htdocs/luci-static/resources/view/fchomo/node.js:623 +#: htdocs/luci-static/resources/view/fchomo/node.js:640 msgid "Shadowsocks password" msgstr "Shadowsocks 密碼" -#: htdocs/luci-static/resources/view/fchomo/node.js:1447 +#: htdocs/luci-static/resources/view/fchomo/node.js:1482 msgid "Show connections in the dashboard for breaking connections easier." msgstr "在面板中顯示連線以便於打斷連線。" @@ -2829,52 +2854,52 @@ msgstr "靜音" msgid "Simple round-robin all nodes" msgstr "簡單輪替所有節點" -#: htdocs/luci-static/resources/view/fchomo/node.js:1695 +#: htdocs/luci-static/resources/view/fchomo/node.js:1735 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:391 msgid "Size limit" msgstr "大小限制" -#: htdocs/luci-static/resources/view/fchomo/client.js:1586 -#: htdocs/luci-static/resources/view/fchomo/node.js:1116 -#: htdocs/luci-static/resources/view/fchomo/node.js:1850 +#: htdocs/luci-static/resources/view/fchomo/client.js:1597 +#: htdocs/luci-static/resources/view/fchomo/node.js:1151 +#: htdocs/luci-static/resources/view/fchomo/node.js:1892 msgid "Skip cert verify" msgstr "跳過憑證驗證" -#: htdocs/luci-static/resources/view/fchomo/global.js:683 +#: htdocs/luci-static/resources/view/fchomo/global.js:686 msgid "Skiped sniffing domain" msgstr "跳過嗅探網域" -#: htdocs/luci-static/resources/view/fchomo/global.js:689 +#: htdocs/luci-static/resources/view/fchomo/global.js:692 msgid "Skiped sniffing dst address" msgstr "跳過嗅探目標位址" -#: htdocs/luci-static/resources/view/fchomo/global.js:686 +#: htdocs/luci-static/resources/view/fchomo/global.js:689 msgid "Skiped sniffing src address" msgstr "跳過嗅探來源位址" #: htdocs/luci-static/resources/fchomo.js:159 -#: htdocs/luci-static/resources/fchomo.js:194 +#: htdocs/luci-static/resources/fchomo.js:195 msgid "Snell" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/global.js:693 +#: htdocs/luci-static/resources/view/fchomo/global.js:696 msgid "Sniff protocol" msgstr "嗅探協議" -#: htdocs/luci-static/resources/view/fchomo/global.js:670 +#: htdocs/luci-static/resources/view/fchomo/global.js:673 msgid "Sniffer" msgstr "嗅探器" -#: htdocs/luci-static/resources/view/fchomo/global.js:673 +#: htdocs/luci-static/resources/view/fchomo/global.js:676 msgid "Sniffer settings" msgstr "嗅探器設定" -#: htdocs/luci-static/resources/fchomo.js:440 +#: htdocs/luci-static/resources/fchomo.js:442 msgid "Specify a ID" msgstr "指定一個ID" -#: htdocs/luci-static/resources/view/fchomo/global.js:838 -#: htdocs/luci-static/resources/view/fchomo/global.js:847 +#: htdocs/luci-static/resources/view/fchomo/global.js:841 +#: htdocs/luci-static/resources/view/fchomo/global.js:850 msgid "" "Specify target ports to be proxied. Multiple ports must be separated by " "commas." @@ -2888,30 +2913,30 @@ msgstr "堆栈" msgid "Standard" msgstr "標準" -#: htdocs/luci-static/resources/fchomo.js:254 +#: htdocs/luci-static/resources/fchomo.js:255 msgid "Steam Client" msgstr "Steam 客戶端" -#: htdocs/luci-static/resources/fchomo.js:255 +#: htdocs/luci-static/resources/fchomo.js:256 msgid "Steam P2P" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:1154 -#: htdocs/luci-static/resources/view/fchomo/client.js:1156 +#: htdocs/luci-static/resources/view/fchomo/client.js:1162 +#: htdocs/luci-static/resources/view/fchomo/client.js:1164 msgid "Strategy" msgstr "策略" -#: htdocs/luci-static/resources/fchomo/listeners.js:605 -#: htdocs/luci-static/resources/view/fchomo/client.js:1313 -#: htdocs/luci-static/resources/view/fchomo/client.js:1322 +#: htdocs/luci-static/resources/fchomo/listeners.js:609 +#: htdocs/luci-static/resources/view/fchomo/client.js:1321 +#: htdocs/luci-static/resources/view/fchomo/client.js:1330 msgid "Sub rule" msgstr "子規則" -#: htdocs/luci-static/resources/view/fchomo/client.js:1368 +#: htdocs/luci-static/resources/view/fchomo/client.js:1376 msgid "Sub rule group" msgstr "子規則組" -#: htdocs/luci-static/resources/fchomo.js:700 +#: htdocs/luci-static/resources/fchomo.js:702 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:231 msgid "Successfully imported %s %s of total %s." msgstr "已成功匯入 %s 個%s (共 %s 個)。" @@ -2920,12 +2945,12 @@ msgstr "已成功匯入 %s 個%s (共 %s 個)。" msgid "Successfully updated." msgstr "更新成功。" -#: htdocs/luci-static/resources/fchomo.js:1717 +#: htdocs/luci-static/resources/fchomo.js:1744 msgid "Successfully uploaded." msgstr "已成功上傳。" #: htdocs/luci-static/resources/fchomo.js:158 -#: htdocs/luci-static/resources/fchomo.js:193 +#: htdocs/luci-static/resources/fchomo.js:194 msgid "Sudoku" msgstr "" @@ -2952,17 +2977,17 @@ msgstr "系統 DNS" #: htdocs/luci-static/resources/fchomo.js:161 #: htdocs/luci-static/resources/fchomo.js:162 #: htdocs/luci-static/resources/fchomo.js:163 -#: htdocs/luci-static/resources/fchomo.js:188 -#: htdocs/luci-static/resources/fchomo.js:193 +#: htdocs/luci-static/resources/fchomo.js:189 #: htdocs/luci-static/resources/fchomo.js:194 #: htdocs/luci-static/resources/fchomo.js:195 #: htdocs/luci-static/resources/fchomo.js:196 #: htdocs/luci-static/resources/fchomo.js:197 #: htdocs/luci-static/resources/fchomo.js:198 -#: htdocs/luci-static/resources/fchomo.js:205 -#: htdocs/luci-static/resources/fchomo/listeners.js:639 -#: htdocs/luci-static/resources/view/fchomo/client.js:590 -#: htdocs/luci-static/resources/view/fchomo/client.js:680 +#: htdocs/luci-static/resources/fchomo.js:199 +#: htdocs/luci-static/resources/fchomo.js:206 +#: htdocs/luci-static/resources/fchomo/listeners.js:643 +#: htdocs/luci-static/resources/view/fchomo/client.js:598 +#: htdocs/luci-static/resources/view/fchomo/client.js:688 msgid "TCP" msgstr "TCP" @@ -2970,7 +2995,7 @@ msgstr "TCP" msgid "TCP concurrency" msgstr "TCP 併發" -#: htdocs/luci-static/resources/view/fchomo/node.js:1440 +#: htdocs/luci-static/resources/view/fchomo/node.js:1475 msgid "TCP only" msgstr "僅 TCP" @@ -2989,34 +3014,34 @@ msgstr "TCP-Keep-Alive 間隔" #: htdocs/luci-static/resources/fchomo.js:166 #: htdocs/luci-static/resources/fchomo.js:167 #: htdocs/luci-static/resources/fchomo.js:168 -#: htdocs/luci-static/resources/fchomo.js:187 -#: htdocs/luci-static/resources/fchomo.js:189 +#: htdocs/luci-static/resources/fchomo.js:188 #: htdocs/luci-static/resources/fchomo.js:190 -#: htdocs/luci-static/resources/fchomo.js:192 -#: htdocs/luci-static/resources/fchomo.js:203 +#: htdocs/luci-static/resources/fchomo.js:191 +#: htdocs/luci-static/resources/fchomo.js:193 +#: htdocs/luci-static/resources/fchomo.js:204 msgid "TCP/UDP" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1471 -#: htdocs/luci-static/resources/view/fchomo/node.js:1817 +#: htdocs/luci-static/resources/view/fchomo/node.js:1506 +#: htdocs/luci-static/resources/view/fchomo/node.js:1859 msgid "TFO" msgstr "TCP 快速開啟 (TFO)" #: htdocs/luci-static/resources/fchomo/listeners.js:570 -#: htdocs/luci-static/resources/fchomo/listeners.js:902 +#: htdocs/luci-static/resources/fchomo/listeners.js:900 #: htdocs/luci-static/resources/view/fchomo/global.js:550 -#: htdocs/luci-static/resources/view/fchomo/node.js:487 -#: htdocs/luci-static/resources/view/fchomo/node.js:847 -#: htdocs/luci-static/resources/view/fchomo/node.js:1025 +#: htdocs/luci-static/resources/view/fchomo/node.js:499 +#: htdocs/luci-static/resources/view/fchomo/node.js:884 +#: htdocs/luci-static/resources/view/fchomo/node.js:1063 msgid "TLS" msgstr "TLS" -#: htdocs/luci-static/resources/fchomo/listeners.js:956 -#: htdocs/luci-static/resources/view/fchomo/node.js:1056 +#: htdocs/luci-static/resources/fchomo/listeners.js:967 +#: htdocs/luci-static/resources/view/fchomo/node.js:1094 msgid "TLS ALPN" msgstr "TLS ALPN" -#: htdocs/luci-static/resources/view/fchomo/node.js:1050 +#: htdocs/luci-static/resources/view/fchomo/node.js:1088 msgid "TLS SNI" msgstr "" @@ -3026,11 +3051,11 @@ msgid "TLS fields" msgstr "TLS欄位" #: htdocs/luci-static/resources/fchomo.js:164 -#: htdocs/luci-static/resources/fchomo.js:201 +#: htdocs/luci-static/resources/fchomo.js:202 msgid "TUIC" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:252 +#: htdocs/luci-static/resources/fchomo.js:253 msgid "TURN" msgstr "" @@ -3043,35 +3068,35 @@ msgid "" "Tell the client to use the BBR flow control algorithm instead of Hysteria CC." msgstr "讓客戶端使用 BBR 流控演算法。" -#: htdocs/luci-static/resources/view/fchomo/node.js:720 -#: htdocs/luci-static/resources/view/fchomo/node.js:728 +#: htdocs/luci-static/resources/view/fchomo/node.js:737 +#: htdocs/luci-static/resources/view/fchomo/node.js:745 msgid "The %s address used by local machine in the Cloudflare WARP network." msgstr "Cloudflare WARP 網路中使用的本機 %s 位址。" -#: htdocs/luci-static/resources/view/fchomo/node.js:763 -#: htdocs/luci-static/resources/view/fchomo/node.js:771 +#: htdocs/luci-static/resources/view/fchomo/node.js:800 +#: htdocs/luci-static/resources/view/fchomo/node.js:808 msgid "The %s address used by local machine in the Wireguard network." msgstr "WireGuard 網路中使用的本機 %s 位址。" -#: htdocs/luci-static/resources/fchomo/listeners.js:977 -#: htdocs/luci-static/resources/view/fchomo/node.js:1139 +#: htdocs/luci-static/resources/fchomo/listeners.js:988 +#: htdocs/luci-static/resources/view/fchomo/node.js:1174 msgid "The %s private key, in PEM format." msgstr "%s私鑰,需要 PEM 格式。" -#: htdocs/luci-static/resources/fchomo/listeners.js:962 -#: htdocs/luci-static/resources/fchomo/listeners.js:1000 +#: htdocs/luci-static/resources/fchomo/listeners.js:973 +#: htdocs/luci-static/resources/fchomo/listeners.js:1011 #: htdocs/luci-static/resources/view/fchomo/global.js:571 -#: htdocs/luci-static/resources/view/fchomo/node.js:1125 +#: htdocs/luci-static/resources/view/fchomo/node.js:1160 msgid "The %s public key, in PEM format." msgstr "%s公鑰,需要 PEM 格式。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1159 +#: htdocs/luci-static/resources/view/fchomo/node.js:1194 msgid "" "The ECH parameter of the HTTPS record for the domain. Leave empty to resolve " "via DNS." msgstr "網域的 HTTPS 記錄的 ECH 參數。留空則透過 DNS 解析。" -#: htdocs/luci-static/resources/view/fchomo/node.js:409 +#: htdocs/luci-static/resources/view/fchomo/node.js:421 msgid "The ED25519 available private key or UUID provided by Sudoku server." msgstr "Sudoku 伺服器提供的 ED25519 可用私鑰 或 UUID。" @@ -3083,42 +3108,42 @@ msgstr "Sudoku 產生的 ED25519 主公鑰 或 UUID。" msgid "The default value is 2:00 every day." msgstr "預設值為每天 2:00。" -#: htdocs/luci-static/resources/fchomo/listeners.js:740 -#: htdocs/luci-static/resources/view/fchomo/node.js:972 +#: htdocs/luci-static/resources/fchomo/listeners.js:744 +#: htdocs/luci-static/resources/view/fchomo/node.js:1010 msgid "" "The first padding must have a probability of 100% and at least 35 bytes." msgstr "首個填充必須為 100% 的機率並且至少 35 位元組。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1816 +#: htdocs/luci-static/resources/view/fchomo/client.js:1827 msgid "The matching %s will be deemed as not-poisoned." msgstr "匹配 %s 的將被視為未被投毒汙染。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1825 -#: htdocs/luci-static/resources/view/fchomo/client.js:1829 -#: htdocs/luci-static/resources/view/fchomo/client.js:1834 +#: htdocs/luci-static/resources/view/fchomo/client.js:1836 +#: htdocs/luci-static/resources/view/fchomo/client.js:1840 +#: htdocs/luci-static/resources/view/fchomo/client.js:1845 msgid "The matching %s will be deemed as poisoned." msgstr "匹配 %s 的將被視為已被投毒汙染。" -#: htdocs/luci-static/resources/fchomo/listeners.js:738 -#: htdocs/luci-static/resources/view/fchomo/node.js:970 +#: htdocs/luci-static/resources/fchomo/listeners.js:742 +#: htdocs/luci-static/resources/view/fchomo/node.js:1008 msgid "The server and client can set different padding parameters." msgstr "伺服器和客戶端可以設定不同的填充參數。" -#: htdocs/luci-static/resources/fchomo/listeners.js:1058 +#: htdocs/luci-static/resources/fchomo/listeners.js:1069 #: htdocs/luci-static/resources/view/fchomo/global.js:615 msgid "This ECH parameter needs to be added to the HTTPS record of the domain." msgstr "此 ECH 參數需要加入到網域的 HTTPS 記錄中。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1589 -#: htdocs/luci-static/resources/view/fchomo/node.js:1119 -#: htdocs/luci-static/resources/view/fchomo/node.js:1853 +#: htdocs/luci-static/resources/view/fchomo/client.js:1600 +#: htdocs/luci-static/resources/view/fchomo/node.js:1154 +#: htdocs/luci-static/resources/view/fchomo/node.js:1895 msgid "" "This is DANGEROUS, your traffic is almost like " "PLAIN TEXT! Use at your own risk!" msgstr "" "這是危險行為,您的流量將幾乎等同於明文!使用風險自負!" -#: htdocs/luci-static/resources/view/fchomo/node.js:566 +#: htdocs/luci-static/resources/view/fchomo/node.js:578 msgid "" "This is the TUIC port of the SUoT protocol, designed to provide a QUIC " "stream based UDP relay mode that TUIC does not provide." @@ -3138,11 +3163,11 @@ msgid "" msgstr "" "要啟用 Tun 支持,您需要安裝 ip-fullkmod-tun。" -#: htdocs/luci-static/resources/view/fchomo/global.js:882 +#: htdocs/luci-static/resources/view/fchomo/global.js:885 msgid "To enable, you need to install dnsmasq-full." msgstr "要啟用,您需要安裝 dnsmasq-full。" -#: htdocs/luci-static/resources/view/fchomo/global.js:780 +#: htdocs/luci-static/resources/view/fchomo/global.js:783 msgid "Tproxy Fwmark/fwmask" msgstr "Tproxy Fwmark/fwmask" @@ -3151,22 +3176,22 @@ msgid "Tproxy port" msgstr "Tproxy 連接埠" #: htdocs/luci-static/resources/fchomo/listeners.js:285 -#: htdocs/luci-static/resources/view/fchomo/node.js:401 +#: htdocs/luci-static/resources/view/fchomo/node.js:413 msgid "Traffic pattern" msgstr "流量模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:2012 +#: htdocs/luci-static/resources/view/fchomo/node.js:2054 msgid "Transit proxy group" msgstr "中轉代理組" -#: htdocs/luci-static/resources/view/fchomo/node.js:2018 +#: htdocs/luci-static/resources/view/fchomo/node.js:2060 msgid "Transit proxy node" msgstr "中轉代理節點" #: htdocs/luci-static/resources/fchomo/listeners.js:273 -#: htdocs/luci-static/resources/fchomo/listeners.js:1109 -#: htdocs/luci-static/resources/view/fchomo/node.js:378 -#: htdocs/luci-static/resources/view/fchomo/node.js:1201 +#: htdocs/luci-static/resources/fchomo/listeners.js:1120 +#: htdocs/luci-static/resources/view/fchomo/node.js:390 +#: htdocs/luci-static/resources/view/fchomo/node.js:1236 msgid "Transport" msgstr "傳輸層" @@ -3175,22 +3200,22 @@ msgstr "傳輸層" msgid "Transport fields" msgstr "傳輸層欄位" -#: htdocs/luci-static/resources/fchomo/listeners.js:1114 -#: htdocs/luci-static/resources/view/fchomo/node.js:1206 +#: htdocs/luci-static/resources/fchomo/listeners.js:1125 +#: htdocs/luci-static/resources/view/fchomo/node.js:1241 msgid "Transport type" msgstr "傳輸層類型" -#: htdocs/luci-static/resources/view/fchomo/client.js:803 +#: htdocs/luci-static/resources/view/fchomo/client.js:811 msgid "Treat the destination IP as the source IP." msgstr "將 目標 IP 視為 來源 IP。" #: htdocs/luci-static/resources/fchomo.js:162 -#: htdocs/luci-static/resources/fchomo.js:197 +#: htdocs/luci-static/resources/fchomo.js:198 msgid "Trojan" msgstr "" #: htdocs/luci-static/resources/fchomo.js:167 -#: htdocs/luci-static/resources/fchomo.js:203 +#: htdocs/luci-static/resources/fchomo.js:204 msgid "TrustTunnel" msgstr "" @@ -3198,7 +3223,7 @@ msgstr "" msgid "Trusted proxy header" msgstr "可信代理 Header" -#: htdocs/luci-static/resources/view/fchomo/global.js:785 +#: htdocs/luci-static/resources/view/fchomo/global.js:788 msgid "Tun Fwmark/fwmask" msgstr "Tun Fwmark/fwmask" @@ -3220,29 +3245,29 @@ msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:142 #: htdocs/luci-static/resources/view/fchomo/client.js:531 -#: htdocs/luci-static/resources/view/fchomo/client.js:644 -#: htdocs/luci-static/resources/view/fchomo/client.js:738 -#: htdocs/luci-static/resources/view/fchomo/client.js:843 -#: htdocs/luci-static/resources/view/fchomo/client.js:1030 +#: htdocs/luci-static/resources/view/fchomo/client.js:652 +#: htdocs/luci-static/resources/view/fchomo/client.js:746 +#: htdocs/luci-static/resources/view/fchomo/client.js:851 +#: htdocs/luci-static/resources/view/fchomo/client.js:1038 #: htdocs/luci-static/resources/view/fchomo/node.js:250 -#: htdocs/luci-static/resources/view/fchomo/node.js:1632 -#: htdocs/luci-static/resources/view/fchomo/node.js:1983 +#: htdocs/luci-static/resources/view/fchomo/node.js:1672 +#: htdocs/luci-static/resources/view/fchomo/node.js:2025 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:285 msgid "Type" msgstr "類型" #: htdocs/luci-static/resources/fchomo.js:164 #: htdocs/luci-static/resources/fchomo.js:165 -#: htdocs/luci-static/resources/fchomo.js:200 #: htdocs/luci-static/resources/fchomo.js:201 #: htdocs/luci-static/resources/fchomo.js:202 -#: htdocs/luci-static/resources/fchomo.js:204 -#: htdocs/luci-static/resources/fchomo/listeners.js:640 -#: htdocs/luci-static/resources/fchomo/listeners.js:645 -#: htdocs/luci-static/resources/view/fchomo/client.js:589 -#: htdocs/luci-static/resources/view/fchomo/client.js:679 -#: htdocs/luci-static/resources/view/fchomo/node.js:904 -#: htdocs/luci-static/resources/view/fchomo/node.js:1827 +#: htdocs/luci-static/resources/fchomo.js:203 +#: htdocs/luci-static/resources/fchomo.js:205 +#: htdocs/luci-static/resources/fchomo/listeners.js:644 +#: htdocs/luci-static/resources/fchomo/listeners.js:649 +#: htdocs/luci-static/resources/view/fchomo/client.js:597 +#: htdocs/luci-static/resources/view/fchomo/client.js:687 +#: htdocs/luci-static/resources/view/fchomo/node.js:942 +#: htdocs/luci-static/resources/view/fchomo/node.js:1869 msgid "UDP" msgstr "UDP" @@ -3250,42 +3275,42 @@ msgstr "UDP" msgid "UDP NAT expiration time" msgstr "UDP NAT 過期時間" -#: htdocs/luci-static/resources/view/fchomo/node.js:565 +#: htdocs/luci-static/resources/view/fchomo/node.js:577 msgid "UDP over stream" msgstr "UDP over stream" -#: htdocs/luci-static/resources/view/fchomo/node.js:571 +#: htdocs/luci-static/resources/view/fchomo/node.js:583 msgid "UDP over stream version" msgstr "UDP over stream 版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:558 +#: htdocs/luci-static/resources/view/fchomo/node.js:570 msgid "UDP packet relay mode." msgstr "UDP 包中繼模式。" -#: htdocs/luci-static/resources/view/fchomo/node.js:557 +#: htdocs/luci-static/resources/view/fchomo/node.js:569 msgid "UDP relay mode" msgstr "UDP 中繼模式" #: htdocs/luci-static/resources/fchomo/listeners.js:373 #: htdocs/luci-static/resources/fchomo/listeners.js:374 -#: htdocs/luci-static/resources/view/fchomo/node.js:433 -#: htdocs/luci-static/resources/view/fchomo/node.js:434 +#: htdocs/luci-static/resources/view/fchomo/node.js:445 +#: htdocs/luci-static/resources/view/fchomo/node.js:446 msgid "UP: %s; DOWN: %s" msgstr "上傳: %s; 下載: %s" -#: htdocs/luci-static/resources/fchomo.js:241 +#: htdocs/luci-static/resources/fchomo.js:242 msgid "URL test" msgstr "自動選擇" #: htdocs/luci-static/resources/fchomo/listeners.js:294 #: htdocs/luci-static/resources/fchomo/listeners.js:474 #: htdocs/luci-static/resources/fchomo/listeners.js:529 -#: htdocs/luci-static/resources/view/fchomo/node.js:545 -#: htdocs/luci-static/resources/view/fchomo/node.js:654 +#: htdocs/luci-static/resources/view/fchomo/node.js:557 +#: htdocs/luci-static/resources/view/fchomo/node.js:671 msgid "UUID" msgstr "UUID" -#: htdocs/luci-static/resources/fchomo.js:1260 +#: htdocs/luci-static/resources/fchomo.js:1287 msgid "Unable to download unsupported type: %s" msgstr "無法下載不支援的類型: %s" @@ -3310,8 +3335,8 @@ msgstr "未知錯誤。" msgid "Unknown error: %s" msgstr "未知錯誤:%s" -#: htdocs/luci-static/resources/view/fchomo/node.js:910 -#: htdocs/luci-static/resources/view/fchomo/node.js:1832 +#: htdocs/luci-static/resources/view/fchomo/node.js:948 +#: htdocs/luci-static/resources/view/fchomo/node.js:1874 msgid "UoT" msgstr "UDP over TCP (UoT)" @@ -3319,22 +3344,22 @@ msgstr "UDP over TCP (UoT)" msgid "Update failed." msgstr "更新失敗。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1701 +#: htdocs/luci-static/resources/view/fchomo/node.js:1741 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:397 msgid "Update interval" msgstr "更新間隔" -#: htdocs/luci-static/resources/view/fchomo/node.js:1458 +#: htdocs/luci-static/resources/view/fchomo/node.js:1493 msgid "Upload bandwidth" msgstr "上傳頻寬" -#: htdocs/luci-static/resources/view/fchomo/node.js:1459 +#: htdocs/luci-static/resources/view/fchomo/node.js:1494 msgid "Upload bandwidth in Mbps." msgstr "上傳頻寬(單位:Mbps)。" -#: htdocs/luci-static/resources/fchomo/listeners.js:968 -#: htdocs/luci-static/resources/fchomo/listeners.js:1008 -#: htdocs/luci-static/resources/view/fchomo/node.js:1130 +#: htdocs/luci-static/resources/fchomo/listeners.js:979 +#: htdocs/luci-static/resources/fchomo/listeners.js:1019 +#: htdocs/luci-static/resources/view/fchomo/node.js:1165 msgid "Upload certificate" msgstr "上傳憑證" @@ -3342,41 +3367,45 @@ msgstr "上傳憑證" msgid "Upload initial package" msgstr "上傳初始資源包" -#: htdocs/luci-static/resources/fchomo/listeners.js:983 -#: htdocs/luci-static/resources/view/fchomo/node.js:1144 +#: htdocs/luci-static/resources/fchomo/listeners.js:994 +#: htdocs/luci-static/resources/view/fchomo/node.js:1179 msgid "Upload key" msgstr "上傳金鑰" -#: htdocs/luci-static/resources/fchomo/listeners.js:971 -#: htdocs/luci-static/resources/fchomo/listeners.js:986 -#: htdocs/luci-static/resources/fchomo/listeners.js:1011 +#: htdocs/luci-static/resources/fchomo/listeners.js:982 +#: htdocs/luci-static/resources/fchomo/listeners.js:997 +#: htdocs/luci-static/resources/fchomo/listeners.js:1022 #: htdocs/luci-static/resources/view/fchomo/global.js:306 -#: htdocs/luci-static/resources/view/fchomo/node.js:1133 -#: htdocs/luci-static/resources/view/fchomo/node.js:1147 +#: htdocs/luci-static/resources/view/fchomo/node.js:1168 +#: htdocs/luci-static/resources/view/fchomo/node.js:1182 msgid "Upload..." msgstr "上傳..." -#: htdocs/luci-static/resources/view/fchomo/client.js:1409 +#: htdocs/luci-static/resources/view/fchomo/node.js:273 +msgid "Use sub rule" +msgstr "使用子規則" + +#: htdocs/luci-static/resources/view/fchomo/client.js:1420 msgid "" "Used to resolve domains that can be directly connected. Can use domestic DNS " "servers or ECS." msgstr "用於解析可直連的網域。可使用國內 DNS 伺服器或 ECS。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1411 +#: htdocs/luci-static/resources/view/fchomo/client.js:1422 msgid "" "Used to resolve domains you want to proxy. Recommended to configure %s for " "DNS servers." msgstr "用於解析想要代理的網域。建議為 DNS 伺服器配置%s。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1393 +#: htdocs/luci-static/resources/view/fchomo/client.js:1404 msgid "Used to resolve the domain of the DNS server. Must be IP." msgstr "用於解析 DNS 伺服器的網域。必須是 IP。" -#: htdocs/luci-static/resources/view/fchomo/client.js:1400 +#: htdocs/luci-static/resources/view/fchomo/client.js:1411 msgid "Used to resolve the domain of the Proxy node." msgstr "用於解析代理節點的網域。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1051 +#: htdocs/luci-static/resources/view/fchomo/node.js:1089 msgid "Used to verify the hostname on the returned certificates." msgstr "用於驗證傳回的憑證上的主機名稱。" @@ -3389,50 +3418,50 @@ msgid "User-hint is mandatory" msgstr "User-hint 是必填項" #: htdocs/luci-static/resources/fchomo/listeners.js:161 -#: htdocs/luci-static/resources/view/fchomo/node.js:268 +#: htdocs/luci-static/resources/view/fchomo/node.js:280 msgid "Username" msgstr "使用者名稱" -#: htdocs/luci-static/resources/view/fchomo/global.js:793 +#: htdocs/luci-static/resources/view/fchomo/global.js:796 msgid "Users filter mode" msgstr "使用者過濾模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1315 +#: htdocs/luci-static/resources/view/fchomo/node.js:1350 msgid "V2ray HTTPUpgrade" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1320 +#: htdocs/luci-static/resources/view/fchomo/node.js:1355 msgid "V2ray HTTPUpgrade fast open" msgstr "" #: htdocs/luci-static/resources/fchomo.js:161 -#: htdocs/luci-static/resources/fchomo.js:196 +#: htdocs/luci-static/resources/fchomo.js:197 msgid "VLESS" msgstr "" #: htdocs/luci-static/resources/fchomo.js:160 -#: htdocs/luci-static/resources/fchomo.js:195 +#: htdocs/luci-static/resources/fchomo.js:196 msgid "VMess" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1638 -#: htdocs/luci-static/resources/view/fchomo/node.js:1989 +#: htdocs/luci-static/resources/view/fchomo/node.js:1678 +#: htdocs/luci-static/resources/view/fchomo/node.js:2031 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:328 msgid "Value" msgstr "可視化值" -#: htdocs/luci-static/resources/fchomo.js:370 +#: htdocs/luci-static/resources/fchomo.js:372 msgid "Verify if given" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:463 #: htdocs/luci-static/resources/fchomo/listeners.js:595 -#: htdocs/luci-static/resources/view/fchomo/node.js:529 -#: htdocs/luci-static/resources/view/fchomo/node.js:866 +#: htdocs/luci-static/resources/view/fchomo/node.js:541 +#: htdocs/luci-static/resources/view/fchomo/node.js:903 msgid "Version" msgstr "版本" -#: htdocs/luci-static/resources/view/fchomo/node.js:874 +#: htdocs/luci-static/resources/view/fchomo/node.js:911 msgid "Version hint" msgstr "" @@ -3441,7 +3470,7 @@ msgstr "" msgid "Vless Encryption fields" msgstr "Vless Encryption 欄位" -#: htdocs/luci-static/resources/fchomo.js:407 +#: htdocs/luci-static/resources/fchomo.js:409 msgid "Wait a random 0-111 milliseconds with 75% probability." msgstr "以 75% 的機率等待隨機 0-111 毫秒。" @@ -3450,15 +3479,15 @@ msgid "Warning" msgstr "警告" #: htdocs/luci-static/resources/fchomo/listeners.js:441 -#: htdocs/luci-static/resources/fchomo/listeners.js:1116 -#: htdocs/luci-static/resources/fchomo/listeners.js:1125 -#: htdocs/luci-static/resources/fchomo/listeners.js:1132 -#: htdocs/luci-static/resources/view/fchomo/node.js:483 -#: htdocs/luci-static/resources/view/fchomo/node.js:512 -#: htdocs/luci-static/resources/view/fchomo/node.js:1211 -#: htdocs/luci-static/resources/view/fchomo/node.js:1222 -#: htdocs/luci-static/resources/view/fchomo/node.js:1229 -#: htdocs/luci-static/resources/view/fchomo/node.js:1235 +#: htdocs/luci-static/resources/fchomo/listeners.js:1127 +#: htdocs/luci-static/resources/fchomo/listeners.js:1136 +#: htdocs/luci-static/resources/fchomo/listeners.js:1143 +#: htdocs/luci-static/resources/view/fchomo/node.js:495 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 +#: htdocs/luci-static/resources/view/fchomo/node.js:1246 +#: htdocs/luci-static/resources/view/fchomo/node.js:1257 +#: htdocs/luci-static/resources/view/fchomo/node.js:1264 +#: htdocs/luci-static/resources/view/fchomo/node.js:1270 msgid "WebSocket" msgstr "" @@ -3466,56 +3495,56 @@ msgstr "" msgid "When used as a server, HomeProxy is a better choice." msgstr "用作服務端時,HomeProxy 是更好的選擇。" -#: htdocs/luci-static/resources/view/fchomo/global.js:795 +#: htdocs/luci-static/resources/view/fchomo/global.js:798 msgid "White list" msgstr "白名單" -#: htdocs/luci-static/resources/fchomo.js:204 +#: htdocs/luci-static/resources/fchomo.js:205 msgid "WireGuard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:785 +#: htdocs/luci-static/resources/view/fchomo/node.js:822 msgid "WireGuard peer public key." msgstr "WireGuard 對端公鑰。" -#: htdocs/luci-static/resources/view/fchomo/node.js:792 +#: htdocs/luci-static/resources/view/fchomo/node.js:829 msgid "WireGuard pre-shared key." msgstr "WireGuard 預先共用金鑰。" -#: htdocs/luci-static/resources/view/fchomo/node.js:777 +#: htdocs/luci-static/resources/view/fchomo/node.js:814 msgid "WireGuard requires base64-encoded private keys." msgstr "WireGuard 要求 base64 編碼的私鑰。" -#: htdocs/luci-static/resources/fchomo/listeners.js:1117 -#: htdocs/luci-static/resources/fchomo/listeners.js:1126 -#: htdocs/luci-static/resources/view/fchomo/node.js:1212 -#: htdocs/luci-static/resources/view/fchomo/node.js:1230 +#: htdocs/luci-static/resources/fchomo/listeners.js:1128 +#: htdocs/luci-static/resources/fchomo/listeners.js:1137 +#: htdocs/luci-static/resources/view/fchomo/node.js:1247 +#: htdocs/luci-static/resources/view/fchomo/node.js:1265 msgid "XHTTP" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1162 -#: htdocs/luci-static/resources/view/fchomo/node.js:1325 +#: htdocs/luci-static/resources/fchomo/listeners.js:1173 +#: htdocs/luci-static/resources/view/fchomo/node.js:1360 msgid "XHTTP mode" msgstr "XHTTP 模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1356 +#: htdocs/luci-static/resources/view/fchomo/node.js:1391 msgid "XMUX" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1361 -#: htdocs/luci-static/resources/view/fchomo/node.js:1366 -#: htdocs/luci-static/resources/view/fchomo/node.js:1371 -#: htdocs/luci-static/resources/view/fchomo/node.js:1376 -#: htdocs/luci-static/resources/view/fchomo/node.js:1381 -#: htdocs/luci-static/resources/view/fchomo/node.js:1386 +#: htdocs/luci-static/resources/view/fchomo/node.js:1396 +#: htdocs/luci-static/resources/view/fchomo/node.js:1401 +#: htdocs/luci-static/resources/view/fchomo/node.js:1406 +#: htdocs/luci-static/resources/view/fchomo/node.js:1411 +#: htdocs/luci-static/resources/view/fchomo/node.js:1416 +#: htdocs/luci-static/resources/view/fchomo/node.js:1421 msgid "XMUX:" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:699 +#: htdocs/luci-static/resources/fchomo/listeners.js:703 msgid "XOR mode" msgstr "XOR 模式" -#: htdocs/luci-static/resources/view/fchomo/node.js:699 +#: htdocs/luci-static/resources/view/fchomo/node.js:716 msgid "Xudp (Xray-core)" msgstr "" @@ -3523,7 +3552,7 @@ msgstr "" msgid "Yaml text" msgstr "Yaml 格式文本" -#: htdocs/luci-static/resources/view/fchomo/node.js:1856 +#: htdocs/luci-static/resources/view/fchomo/node.js:1898 msgid "Yes" msgstr "" @@ -3531,31 +3560,31 @@ msgstr "" msgid "YouTube" msgstr "YouTube" -#: htdocs/luci-static/resources/fchomo.js:1699 +#: htdocs/luci-static/resources/fchomo.js:1726 msgid "Your %s was successfully uploaded. Size: %sB." msgstr "您的 %s 已成功上傳。大小:%sB。" -#: htdocs/luci-static/resources/fchomo.js:343 -#: htdocs/luci-static/resources/fchomo.js:356 -#: htdocs/luci-static/resources/fchomo.js:361 -#: htdocs/luci-static/resources/view/fchomo/node.js:679 +#: htdocs/luci-static/resources/fchomo.js:345 +#: htdocs/luci-static/resources/fchomo.js:358 +#: htdocs/luci-static/resources/fchomo.js:363 +#: htdocs/luci-static/resources/view/fchomo/node.js:696 msgid "aes-128-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:344 +#: htdocs/luci-static/resources/fchomo.js:346 msgid "aes-192-gcm" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:345 -#: htdocs/luci-static/resources/fchomo.js:362 +#: htdocs/luci-static/resources/fchomo.js:347 +#: htdocs/luci-static/resources/fchomo.js:364 msgid "aes-256-gcm" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1718 +#: htdocs/luci-static/resources/view/fchomo/node.js:1758 msgid "age private key" msgstr "age 私鑰" -#: htdocs/luci-static/resources/view/fchomo/node.js:1777 +#: htdocs/luci-static/resources/view/fchomo/node.js:1819 msgid "age public key" msgstr "age 公鑰" @@ -3567,7 +3596,7 @@ msgstr "" msgid "age-x25519" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:676 +#: htdocs/luci-static/resources/view/fchomo/node.js:693 msgid "auto" msgstr "自動" @@ -3575,19 +3604,19 @@ msgstr "自動" msgid "bbr" msgstr "bbr" -#: htdocs/luci-static/resources/fchomo/listeners.js:973 -#: htdocs/luci-static/resources/fchomo/listeners.js:1013 -#: htdocs/luci-static/resources/view/fchomo/node.js:1135 +#: htdocs/luci-static/resources/fchomo/listeners.js:984 +#: htdocs/luci-static/resources/fchomo/listeners.js:1024 +#: htdocs/luci-static/resources/view/fchomo/node.js:1170 msgid "certificate" msgstr "憑證" -#: htdocs/luci-static/resources/fchomo.js:346 -#: htdocs/luci-static/resources/fchomo.js:357 -#: htdocs/luci-static/resources/fchomo.js:363 +#: htdocs/luci-static/resources/fchomo.js:348 +#: htdocs/luci-static/resources/fchomo.js:359 +#: htdocs/luci-static/resources/fchomo.js:365 msgid "chacha20-ietf-poly1305" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:680 +#: htdocs/luci-static/resources/view/fchomo/node.js:697 msgid "chacha20-poly1305" msgstr "" @@ -3595,50 +3624,50 @@ msgstr "" msgid "cubic" msgstr "cubic" -#: htdocs/luci-static/resources/fchomo/listeners.js:651 -#: htdocs/luci-static/resources/fchomo/listeners.js:682 +#: htdocs/luci-static/resources/fchomo/listeners.js:655 +#: htdocs/luci-static/resources/fchomo/listeners.js:686 msgid "decryption" msgstr "decryption" -#: htdocs/luci-static/resources/view/fchomo/global.js:829 +#: htdocs/luci-static/resources/view/fchomo/global.js:832 msgid "dnsmasq selects upstream on its own. (may affect CDN accuracy)" msgstr "dnsmasq 自行選擇上游服務器。 (可能影響 CDN 準確性)" -#: htdocs/luci-static/resources/view/fchomo/node.js:1844 +#: htdocs/luci-static/resources/view/fchomo/node.js:1886 msgid "down" msgstr "Hysteria 下載速率" -#: htdocs/luci-static/resources/fchomo/listeners.js:686 -#: htdocs/luci-static/resources/view/fchomo/node.js:924 -#: htdocs/luci-static/resources/view/fchomo/node.js:947 +#: htdocs/luci-static/resources/fchomo/listeners.js:690 +#: htdocs/luci-static/resources/view/fchomo/node.js:962 +#: htdocs/luci-static/resources/view/fchomo/node.js:985 msgid "encryption" msgstr "encryption" #: htdocs/luci-static/resources/fchomo/listeners.js:425 -#: htdocs/luci-static/resources/view/fchomo/node.js:467 +#: htdocs/luci-static/resources/view/fchomo/node.js:479 msgid "false = bandwidth optimized downlink; true = pure Sudoku downlink." msgstr "false = 頻寬最佳化下行 true = 純 Sudoku 下行。" -#: htdocs/luci-static/resources/fchomo/listeners.js:1115 -#: htdocs/luci-static/resources/fchomo/listeners.js:1124 -#: htdocs/luci-static/resources/fchomo/listeners.js:1131 -#: htdocs/luci-static/resources/view/fchomo/node.js:1210 -#: htdocs/luci-static/resources/view/fchomo/node.js:1221 -#: htdocs/luci-static/resources/view/fchomo/node.js:1228 -#: htdocs/luci-static/resources/view/fchomo/node.js:1234 +#: htdocs/luci-static/resources/fchomo/listeners.js:1126 +#: htdocs/luci-static/resources/fchomo/listeners.js:1135 +#: htdocs/luci-static/resources/fchomo/listeners.js:1142 +#: htdocs/luci-static/resources/view/fchomo/node.js:1245 +#: htdocs/luci-static/resources/view/fchomo/node.js:1256 +#: htdocs/luci-static/resources/view/fchomo/node.js:1263 +#: htdocs/luci-static/resources/view/fchomo/node.js:1269 msgid "gRPC" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1291 +#: htdocs/luci-static/resources/view/fchomo/node.js:1326 msgid "gRPC User-Agent" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1296 +#: htdocs/luci-static/resources/view/fchomo/node.js:1331 msgid "gRPC ping interval" msgstr "gRPC ping 間隔" -#: htdocs/luci-static/resources/fchomo/listeners.js:1156 -#: htdocs/luci-static/resources/view/fchomo/node.js:1287 +#: htdocs/luci-static/resources/fchomo/listeners.js:1167 +#: htdocs/luci-static/resources/view/fchomo/node.js:1322 msgid "gRPC service name" msgstr "gRPC 服務名稱" @@ -3646,11 +3675,23 @@ msgstr "gRPC 服務名稱" msgid "gVisor" msgstr "gVisor" -#: htdocs/luci-static/resources/view/fchomo/node.js:1403 +#: htdocs/luci-static/resources/view/fchomo/node.js:760 +msgid "h2" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:1438 msgid "h2mux" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:851 +#: htdocs/luci-static/resources/view/fchomo/node.js:758 +msgid "h3" +msgstr "" + +#: htdocs/luci-static/resources/view/fchomo/node.js:759 +msgid "h3-l4proxy" +msgstr "" + +#: htdocs/luci-static/resources/fchomo/listeners.js:855 msgid "least one keypair required" msgstr "至少需要一對密鑰" @@ -3658,23 +3699,23 @@ msgstr "至少需要一對密鑰" msgid "metacubexd" msgstr "metacubexd" -#: htdocs/luci-static/resources/view/fchomo/client.js:1003 -#: htdocs/luci-static/resources/view/fchomo/client.js:1259 -#: htdocs/luci-static/resources/view/fchomo/client.js:1351 -#: htdocs/luci-static/resources/view/fchomo/client.js:1490 -#: htdocs/luci-static/resources/view/fchomo/client.js:1721 -#: htdocs/luci-static/resources/view/fchomo/client.js:1777 -#: htdocs/luci-static/resources/view/fchomo/node.js:1604 +#: htdocs/luci-static/resources/view/fchomo/client.js:1011 +#: htdocs/luci-static/resources/view/fchomo/client.js:1267 +#: htdocs/luci-static/resources/view/fchomo/client.js:1359 +#: htdocs/luci-static/resources/view/fchomo/client.js:1501 +#: htdocs/luci-static/resources/view/fchomo/client.js:1732 +#: htdocs/luci-static/resources/view/fchomo/client.js:1788 +#: htdocs/luci-static/resources/view/fchomo/node.js:1644 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:247 msgid "mihomo config" msgstr "mihomo 配置" -#: htdocs/luci-static/resources/fchomo.js:389 +#: htdocs/luci-static/resources/fchomo.js:391 msgid "mlkem768x25519plus" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1475 -#: htdocs/luci-static/resources/view/fchomo/node.js:1822 +#: htdocs/luci-static/resources/view/fchomo/node.js:1511 +#: htdocs/luci-static/resources/view/fchomo/node.js:1864 msgid "mpTCP" msgstr "多路徑 TCP (mpTCP)" @@ -3682,24 +3723,24 @@ msgstr "多路徑 TCP (mpTCP)" msgid "new_reno" msgstr "new_reno" -#: htdocs/luci-static/resources/view/fchomo/client.js:820 +#: htdocs/luci-static/resources/view/fchomo/client.js:828 msgid "no-resolve" msgstr "no-resolve" -#: htdocs/luci-static/resources/fchomo.js:1434 -#: htdocs/luci-static/resources/fchomo.js:1529 -#: htdocs/luci-static/resources/fchomo.js:1564 -#: htdocs/luci-static/resources/fchomo.js:1592 +#: htdocs/luci-static/resources/fchomo.js:1461 +#: htdocs/luci-static/resources/fchomo.js:1556 +#: htdocs/luci-static/resources/fchomo.js:1591 +#: htdocs/luci-static/resources/fchomo.js:1619 msgid "non-empty value" msgstr "非空值" -#: htdocs/luci-static/resources/fchomo.js:341 -#: htdocs/luci-static/resources/fchomo.js:355 -#: htdocs/luci-static/resources/fchomo.js:367 +#: htdocs/luci-static/resources/fchomo.js:343 +#: htdocs/luci-static/resources/fchomo.js:357 +#: htdocs/luci-static/resources/fchomo.js:369 #: htdocs/luci-static/resources/fchomo/listeners.js:561 -#: htdocs/luci-static/resources/view/fchomo/node.js:677 -#: htdocs/luci-static/resources/view/fchomo/node.js:697 -#: htdocs/luci-static/resources/view/fchomo/node.js:835 +#: htdocs/luci-static/resources/view/fchomo/node.js:694 +#: htdocs/luci-static/resources/view/fchomo/node.js:714 +#: htdocs/luci-static/resources/view/fchomo/node.js:872 #: htdocs/luci-static/resources/view/fchomo/ruleset.js:324 msgid "none" msgstr "無" @@ -3708,49 +3749,49 @@ msgstr "無" msgid "not found" msgstr "未找到" -#: htdocs/luci-static/resources/view/fchomo/client.js:1020 +#: htdocs/luci-static/resources/view/fchomo/client.js:1028 msgid "not included \",\"" msgstr "不包含 \",\"" -#: htdocs/luci-static/resources/fchomo.js:227 -#: htdocs/luci-static/resources/fchomo/listeners.js:607 -#: htdocs/luci-static/resources/fchomo/listeners.js:608 +#: htdocs/luci-static/resources/fchomo.js:228 +#: htdocs/luci-static/resources/fchomo/listeners.js:611 +#: htdocs/luci-static/resources/fchomo/listeners.js:612 msgid "null" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:562 -#: htdocs/luci-static/resources/view/fchomo/node.js:836 +#: htdocs/luci-static/resources/view/fchomo/node.js:873 msgid "obfs-simple" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:514 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 msgid "only applies when %s is %s." msgstr "僅當 %s 為 %s 時適用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:512 +#: htdocs/luci-static/resources/view/fchomo/node.js:524 msgid "only applies when %s is not %s." msgstr "僅當 %s 不為 %s 時適用。" -#: htdocs/luci-static/resources/view/fchomo/node.js:1802 +#: htdocs/luci-static/resources/view/fchomo/node.js:1844 msgid "override.proxy-name" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:698 +#: htdocs/luci-static/resources/view/fchomo/node.js:715 msgid "packet addr (v2ray-core v5+)" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1166 -#: htdocs/luci-static/resources/view/fchomo/node.js:1329 +#: htdocs/luci-static/resources/fchomo/listeners.js:1177 +#: htdocs/luci-static/resources/view/fchomo/node.js:1364 msgid "packet-up" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:439 -#: htdocs/luci-static/resources/view/fchomo/node.js:481 +#: htdocs/luci-static/resources/view/fchomo/node.js:493 msgid "poll" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:988 -#: htdocs/luci-static/resources/view/fchomo/node.js:1149 +#: htdocs/luci-static/resources/fchomo/listeners.js:999 +#: htdocs/luci-static/resources/view/fchomo/node.js:1184 msgid "private key" msgstr "私鑰" @@ -3758,12 +3799,12 @@ msgstr "私鑰" msgid "razord-meta" msgstr "razord-meta" -#: htdocs/luci-static/resources/view/fchomo/client.js:1183 -#: htdocs/luci-static/resources/view/fchomo/client.js:1189 +#: htdocs/luci-static/resources/view/fchomo/client.js:1191 +#: htdocs/luci-static/resources/view/fchomo/client.js:1197 msgid "requires front-end adaptation using the API." msgstr "需要使用 API 的前端適配。" -#: htdocs/luci-static/resources/view/fchomo/node.js:840 +#: htdocs/luci-static/resources/view/fchomo/node.js:877 msgid "restls" msgstr "" @@ -3772,38 +3813,38 @@ msgid "rule-set" msgstr "規則集" #: htdocs/luci-static/resources/fchomo/listeners.js:563 -#: htdocs/luci-static/resources/view/fchomo/node.js:839 +#: htdocs/luci-static/resources/view/fchomo/node.js:876 msgid "shadow-tls" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:1401 +#: htdocs/luci-static/resources/view/fchomo/node.js:1436 msgid "smux" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:438 -#: htdocs/luci-static/resources/view/fchomo/node.js:480 +#: htdocs/luci-static/resources/view/fchomo/node.js:492 msgid "split-stream" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/client.js:802 +#: htdocs/luci-static/resources/view/fchomo/client.js:810 msgid "src" msgstr "src" -#: htdocs/luci-static/resources/fchomo/listeners.js:1164 -#: htdocs/luci-static/resources/view/fchomo/node.js:1327 +#: htdocs/luci-static/resources/fchomo/listeners.js:1175 +#: htdocs/luci-static/resources/view/fchomo/node.js:1362 msgid "stream-one" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1165 -#: htdocs/luci-static/resources/view/fchomo/node.js:1328 +#: htdocs/luci-static/resources/fchomo/listeners.js:1176 +#: htdocs/luci-static/resources/view/fchomo/node.js:1363 msgid "stream-up" msgstr "" -#: htdocs/luci-static/resources/fchomo/listeners.js:1181 +#: htdocs/luci-static/resources/fchomo/listeners.js:1192 msgid "stream-up server seconds" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:514 +#: htdocs/luci-static/resources/view/fchomo/node.js:526 msgid "stream/poll/auto" msgstr "" @@ -3815,100 +3856,100 @@ msgstr "" msgid "unchecked" msgstr "未檢查" -#: htdocs/luci-static/resources/fchomo.js:453 +#: htdocs/luci-static/resources/fchomo.js:455 msgid "unique UCI identifier" msgstr "獨立 UCI 識別" -#: htdocs/luci-static/resources/fchomo.js:456 +#: htdocs/luci-static/resources/fchomo.js:458 msgid "unique identifier" msgstr "獨立標識" -#: htdocs/luci-static/resources/fchomo.js:1601 +#: htdocs/luci-static/resources/fchomo.js:1628 msgid "unique value" msgstr "獨立值" -#: htdocs/luci-static/resources/view/fchomo/node.js:1838 +#: htdocs/luci-static/resources/view/fchomo/node.js:1880 msgid "up" msgstr "Hysteria 上傳速率" #: htdocs/luci-static/resources/fchomo/listeners.js:464 #: htdocs/luci-static/resources/fchomo/listeners.js:596 -#: htdocs/luci-static/resources/view/fchomo/node.js:530 -#: htdocs/luci-static/resources/view/fchomo/node.js:572 -#: htdocs/luci-static/resources/view/fchomo/node.js:867 -#: htdocs/luci-static/resources/view/fchomo/node.js:917 +#: htdocs/luci-static/resources/view/fchomo/node.js:542 +#: htdocs/luci-static/resources/view/fchomo/node.js:584 +#: htdocs/luci-static/resources/view/fchomo/node.js:904 +#: htdocs/luci-static/resources/view/fchomo/node.js:955 msgid "v1" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:465 #: htdocs/luci-static/resources/fchomo/listeners.js:597 -#: htdocs/luci-static/resources/view/fchomo/node.js:531 -#: htdocs/luci-static/resources/view/fchomo/node.js:868 -#: htdocs/luci-static/resources/view/fchomo/node.js:918 +#: htdocs/luci-static/resources/view/fchomo/node.js:543 +#: htdocs/luci-static/resources/view/fchomo/node.js:905 +#: htdocs/luci-static/resources/view/fchomo/node.js:956 msgid "v2" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:466 #: htdocs/luci-static/resources/fchomo/listeners.js:598 -#: htdocs/luci-static/resources/view/fchomo/node.js:532 -#: htdocs/luci-static/resources/view/fchomo/node.js:869 +#: htdocs/luci-static/resources/view/fchomo/node.js:544 +#: htdocs/luci-static/resources/view/fchomo/node.js:906 msgid "v3" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:467 -#: htdocs/luci-static/resources/view/fchomo/node.js:533 +#: htdocs/luci-static/resources/view/fchomo/node.js:545 msgid "v4" msgstr "" #: htdocs/luci-static/resources/fchomo/listeners.js:468 -#: htdocs/luci-static/resources/view/fchomo/node.js:534 +#: htdocs/luci-static/resources/view/fchomo/node.js:546 msgid "v5" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1481 -#: htdocs/luci-static/resources/fchomo.js:1484 +#: htdocs/luci-static/resources/fchomo.js:1508 +#: htdocs/luci-static/resources/fchomo.js:1511 msgid "valid JSON format" msgstr "有效的 JSON 格式" -#: htdocs/luci-static/resources/view/fchomo/node.js:1109 +#: htdocs/luci-static/resources/view/fchomo/node.js:1144 msgid "valid SHA256 string with %d characters" msgstr "包含 %d 個字元的有效 SHA256 字串" -#: htdocs/luci-static/resources/fchomo.js:1506 -#: htdocs/luci-static/resources/fchomo.js:1509 +#: htdocs/luci-static/resources/fchomo.js:1533 +#: htdocs/luci-static/resources/fchomo.js:1536 msgid "valid URL" msgstr "有效網址" -#: htdocs/luci-static/resources/fchomo.js:1519 +#: htdocs/luci-static/resources/fchomo.js:1546 msgid "valid base64 key with %d characters" msgstr "包含 %d 個字元的有效 base64 金鑰" -#: htdocs/luci-static/resources/fchomo.js:1579 -#: htdocs/luci-static/resources/fchomo.js:1585 +#: htdocs/luci-static/resources/fchomo.js:1606 +#: htdocs/luci-static/resources/fchomo.js:1612 msgid "valid format: 2x, 2p, 4v" msgstr "有效格式: 2x, 2p, 4v" -#: htdocs/luci-static/resources/fchomo.js:1566 +#: htdocs/luci-static/resources/fchomo.js:1593 msgid "valid key length with %d characters" msgstr "包含 %d 個字元的有效金鑰" -#: htdocs/luci-static/resources/fchomo.js:1444 +#: htdocs/luci-static/resources/fchomo.js:1471 msgid "valid port value" msgstr "有效連接埠值" -#: htdocs/luci-static/resources/fchomo.js:1494 +#: htdocs/luci-static/resources/fchomo.js:1521 msgid "valid uuid" msgstr "有效 uuid" -#: htdocs/luci-static/resources/fchomo.js:413 +#: htdocs/luci-static/resources/fchomo.js:415 msgid "vless-mlkem768" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:412 +#: htdocs/luci-static/resources/fchomo.js:414 msgid "vless-x25519" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:347 +#: htdocs/luci-static/resources/fchomo.js:349 msgid "xchacha20-ietf-poly1305" msgstr "" @@ -3916,7 +3957,7 @@ msgstr "" msgid "yacd-meta" msgstr "yacd-meta" -#: htdocs/luci-static/resources/view/fchomo/node.js:1402 +#: htdocs/luci-static/resources/view/fchomo/node.js:1437 msgid "yamux" msgstr "" @@ -3924,14 +3965,29 @@ msgstr "" msgid "zashboard" msgstr "" -#: htdocs/luci-static/resources/view/fchomo/node.js:678 +#: htdocs/luci-static/resources/view/fchomo/node.js:695 msgid "zero" msgstr "" -#: htdocs/luci-static/resources/fchomo.js:1262 +#: htdocs/luci-static/resources/fchomo.js:1289 msgid "🡇" msgstr "" +#~ msgid "API routing mark (SO_MARK)" +#~ msgstr "API 路由標記 (SO_MARK)" + +#~ msgid "Listen routing mark (SO_MARK)" +#~ msgstr "監聽路由標記 (SO_MARK)" + +#~ msgid "Routing mark (SO_MARK)" +#~ msgstr "路由標記 (SO_MARK)" + +#~ msgid "Edit node" +#~ msgstr "編輯節點" + +#~ msgid "Routing mark" +#~ msgstr "路由標記" + #~ msgid "Obfuscated as ASCII data stream" #~ msgstr "混淆為 ASCII 資料流" diff --git a/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc b/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc index 42119438..569efab3 100644 --- a/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc +++ b/luci-app-fchomo/root/usr/share/fchomo/generate_client.uc @@ -259,11 +259,13 @@ config.tls = { /* API START */ const api_port = uci.get(uciconf, uciapi, 'external_controller_port'); const api_tls_port = uci.get(uciconf, uciapi, 'external_controller_tls_port'); +const api_routing_mark = uci.get(uciconf, uciapi, 'external_controller_routing_mark'); /* API settings */ config["external-controller-cors"] = { "allow-origins": uci.get(uciconf, uciapi, 'external_controller_cors_allow_origins') || ['*'], "allow-private-network" : (uci.get(uciconf, uciapi, 'external_controller_cors_allow_private_network') === '0') ? false : true }; +config["external-controller-routing-mark"] = strToInt(api_routing_mark) || null; config["external-controller"] = api_port ? '[::]:' + api_port : null; config["external-controller-tls"] = api_tls_port ? '[::]:' + api_tls_port : null; config["external-doh-server"] = uci.get(uciconf, uciapi, 'external_doh_server'); @@ -386,6 +388,7 @@ config.dns = { enable: true, "prefer-h3": false, listen: '[::]:' + (uci.get(uciconf, ucidns, 'dns_port') || '7853'), + "listen-routing-mark": strToInt(uci.get(uciconf, ucidns, 'routing_mark')) || null, ipv6: (uci.get(uciconf, ucidns, 'ipv6') === '0') ? false : true, "enhanced-mode": 'redir-host', "use-hosts": true, @@ -479,14 +482,16 @@ uci.foreach(uciconf, ucinode, (cfg) => { "routing-mark": strToInt(cfg.routing_mark) || null, "ip-version": cfg.ip_version, - /* HTTP / SOCKS / Shadowsocks / VMess / VLESS / Trojan / hysteria2 / TUIC / SSH / WireGuard / Masque */ + /* Rematch */ + "target-rematch-name": cfg.target_rematch_name, + "target-sub-rule": cfg.target_sub_rule, + + /* HTTP / SOCKS / Shadowsocks / VMess / VLESS / Trojan / hysteria2 / TUIC / WireGuard / Masque */ username: cfg.username, uuid: cfg.vmess_uuid || cfg.uuid, cipher: cfg.vmess_chipher || cfg.shadowsocks_chipher, password: cfg.shadowsocks_password || cfg.password, headers: cfg.headers ? json(cfg.headers) : null, - "private-key": cfg.masque_private_key || cfg.wireguard_private_key || cfg.ssh_priv_key, - "public-key": cfg.masque_endpoint_public_key || cfg.wireguard_peer_public_key, ip: cfg.masque_ip || cfg.wireguard_ip, ipv6: cfg.masque_ipv6 || cfg.wireguard_ipv6, mtu: strToInt(cfg.masque_mtu ?? cfg.wireguard_mtu) || null, @@ -565,10 +570,10 @@ uci.foreach(uciconf, ucinode, (cfg) => { "udp-over-stream": strToBool(cfg.tuic_udp_over_stream), "udp-over-stream-version": cfg.tuic_udp_over_stream_version, "max-udp-relay-packet-size": strToInt(cfg.tuic_max_udp_relay_packet_size) || null, + "fast-open": strToBool(cfg.tuic_fast_open), "reduce-rtt": strToBool(cfg.tuic_reduce_rtt), "heartbeat-interval": strToInt(cfg.tuic_heartbeat) || null, "request-timeout": strToInt(cfg.tuic_request_timeout) || null, - // @"fast-open": true, "max-open-streams": strToInt(cfg.tuic_max_open_streams) || null, /* Trojan */ @@ -591,8 +596,11 @@ uci.foreach(uciconf, ucinode, (cfg) => { "packet-encoding": cfg.vmess_packet_encoding, encryption: cfg.vless_encryption === '1' ? cfg.vless_encryption_encryption : null, + /* Masque */ + network: cfg.masque_network || null, + /* TrustTunnel */ - "health-check": cfg.trusttunnel_health_check === '0' ? false : true, + "health-check": cfg.type === 'trusttunnel' ? (cfg.trusttunnel_health_check === '0' ? false : true) : null, quic: strToBool(cfg.trusttunnel_quic), /* WireGuard */ @@ -619,6 +627,7 @@ uci.foreach(uciconf, ucinode, (cfg) => { "udp-over-tcp": strToBool(cfg.uot), "udp-over-tcp-version": cfg.uot_version, + /* SSH / WireGuard / Masque */ /* TLS fields */ tls: (cfg.type in ['trojan', 'anytls', 'hysteria', 'hysteria2', 'tuic', 'trusttunnel']) ? null : strToBool(cfg.tls), "disable-sni": strToBool(cfg.tls_disable_sni), @@ -627,7 +636,8 @@ uci.foreach(uciconf, ucinode, (cfg) => { alpn: cfg.tls_alpn, // Array "skip-cert-verify": strToBool(cfg.tls_skip_cert_verify), certificate: cfg.tls_cert_path, // mTLS - "private-key": cfg.tls_key_path, // mTLS + "private-key": cfg.masque_private_key || cfg.wireguard_private_key || cfg.ssh_priv_key || cfg.tls_key_path, // mTLS/SSH/WireGuard/Masque + "public-key": cfg.masque_endpoint_public_key || cfg.wireguard_peer_public_key, // WireGuard/Masque "client-fingerprint": cfg.tls_client_fingerprint, "ech-opts": cfg.tls_ech === '1' ? { enable: true, diff --git a/luci-app-fchomo/root/usr/share/ucode/fchomo.uc b/luci-app-fchomo/root/usr/share/ucode/fchomo.uc index b39680a7..4e811211 100644 --- a/luci-app-fchomo/root/usr/share/ucode/fchomo.uc +++ b/luci-app-fchomo/root/usr/share/ucode/fchomo.uc @@ -217,8 +217,9 @@ export function parseListener(cfg, isClient, label) { type: cfg.type, listen: cfg.listen || '::', - port: cfg.port, + port: strToInt(cfg.port), ...(isClient ? { + "routing-mark": strToInt(cfg.routing_mark) || null, rule: cfg.rule, proxy: label, } : {}), diff --git a/luci-app-gecoosac/Makefile b/luci-app-gecoosac/Makefile index 9948128d..9b49d25a 100644 --- a/luci-app-gecoosac/Makefile +++ b/luci-app-gecoosac/Makefile @@ -7,10 +7,10 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-gecoosac PKG_VERSION:=2.2 -PKG_RELEASE:=8 +PKG_RELEASE:=9 LUCI_TITLE:=LuCI Support for gecoosac -LUCI_DEPENDS:=+luci-compat +gecoosac +LUCI_DEPENDS:=+gecoosac LUCI_PKGARCH:=all PKG_LICENSE:=AGPL-3.0-only diff --git a/luci-app-gecoosac/htdocs/luci-static/resources/view/gecoosac.js b/luci-app-gecoosac/htdocs/luci-static/resources/view/gecoosac.js new file mode 100644 index 00000000..c0e2efeb --- /dev/null +++ b/luci-app-gecoosac/htdocs/luci-static/resources/view/gecoosac.js @@ -0,0 +1,233 @@ +'use strict'; +'require form'; +'require poll'; +'require rpc'; +'require uci'; +'require ui'; +'require view'; + +const DEFAULT_UPLOAD_DIR = '/tmp/gecoosac/upload/'; +const DEFAULT_DB_DIR = '/etc/gecoosac/'; +const DEFAULT_CRT_FILE = '/etc/gecoosac/tls/gecoosac.crt'; +const DEFAULT_KEY_FILE = '/etc/gecoosac/tls/gecoosac.key'; +const DEFAULT_PID_DIR = '/var/run/'; + +const callServiceList = rpc.declare({ + object: 'service', + method: 'list', + params: [ 'name' ], + expect: { '': {} } +}); + +const callClearUpload = rpc.declare({ + object: 'luci.gecoosac', + method: 'clear_upload', + expect: { '': {} } +}); + +function validPort(value, defaultValue) { + const port = Number(value || defaultValue); + return Number.isInteger(port) && port >= 1 && port <= 65535 ? String(port) : defaultValue; +} + +function serviceRunning(status) { + const service = status && status.gecoosac; + const instances = service && service.instances; + + if (!instances) + return false; + + for (const name in instances) + if (instances[name] && instances[name].running) + return true; + + return false; +} + +function clientHost() { + let host = window.location.hostname; + + if (host.indexOf(':') !== -1 && host.charAt(0) !== '[') + host = '[' + host + ']'; + + return host; +} + +function clientUrl() { + const singlePort = uci.get('gecoosac', 'config', 'isonlyoneprot') !== '0'; + const https = uci.get('gecoosac', 'config', 'https') === '1'; + const port = singlePort + ? validPort(uci.get('gecoosac', 'config', 'port'), '60650') + : validPort(uci.get('gecoosac', 'config', 'm_port'), '8080'); + + return (singlePort || !https ? 'http://' : 'https://') + clientHost() + ':' + port; +} + +function renderStatusContent(status) { + const running = serviceRunning(status); + const text = running + ? _('The GecoosAC service is running.') + : _('The GecoosAC service is not running.'); + const state = E('span', { 'class': running ? 'gecoosac-running' : 'gecoosac-stopped' }, text); + + if (!running) + return E('p', {}, state); + + return E('p', {}, [ + state, + E('button', { + 'class': 'cbi-button cbi-button-reload', + 'click': function() { + const client = window.open(clientUrl(), '_blank', 'noopener'); + if (client) + client.opener = null; + } + }, _('Open the mgmt page')) + ]); +} + +function updateStatus(status) { + const node = document.getElementById('gecoosac_status'); + + if (!node) + return; + + while (node.firstChild) + node.removeChild(node.firstChild); + + node.appendChild(renderStatusContent(status)); +} + +function clearUploadError(res) { + return res && res.error ? _(res.error) : _('Upload directory was not cleared'); +} + +return view.extend({ + load() { + return Promise.all([ + uci.load('gecoosac'), + L.resolveDefault(callServiceList('gecoosac'), {}) + ]); + }, + + render(data) { + let m, s, o; + + m = new form.Map('gecoosac', _('Gecoos AC'), + _('Batch management Gecoos AP, Default password: admin') + '
' + + _('The current AC version %s, only supports AP 7.6 and above.').format('2.2')); + + s = m.section(form.TypedSection, 'gecoosac'); + s.anonymous = true; + s.render = function() { + poll.add(function() { + return L.resolveDefault(callServiceList('gecoosac'), {}).then(updateStatus); + }, 3); + + return E('fieldset', { 'class': 'cbi-section' }, [ + E('style', {}, [ + '#gecoosac_status .gecoosac-running{color:green}', + '#gecoosac_status .gecoosac-stopped{color:red}', + '#gecoosac_status .cbi-button{margin-left:1em}' + ].join('\n')), + E('div', { 'id': 'gecoosac_status' }, renderStatusContent(data[1])) + ]); + }; + + s = m.section(form.TypedSection, 'gecoosac', _('Global Settings')); + s.addremove = false; + s.anonymous = true; + + o = s.option(form.Flag, 'enabled', _('Enabled AC')); + o.rmempty = false; + + o = s.option(form.Value, 'port', _('Set interface port')); + o.placeholder = '60650'; + o.default = '60650'; + o.datatype = 'port'; + o.rmempty = false; + + o = s.option(form.Flag, 'isonlyoneprot', _('Single Port Mode'), + _('Do not enable the independent management port, only use one port for management.')); + o.default = '1'; + o.rmempty = false; + + o = s.option(form.Value, 'm_port', _('Set management port')); + o.placeholder = '8080'; + o.default = '8080'; + o.datatype = 'port'; + o.depends('isonlyoneprot', '0'); + + o = s.option(form.Flag, 'https', _('Enable HTTPS service'), + _('Default certificate files are generated when HTTPS starts; custom paths must point to readable files.')); + o.default = '0'; + o.depends('isonlyoneprot', '0'); + + o = s.option(form.Value, 'crt_file', _('Specify crt certificate file')); + o.placeholder = DEFAULT_CRT_FILE; + o.default = DEFAULT_CRT_FILE; + o.datatype = 'file'; + o.depends('https', '1'); + + o = s.option(form.Value, 'key_file', _('Specify key certificate file')); + o.placeholder = DEFAULT_KEY_FILE; + o.default = DEFAULT_KEY_FILE; + o.datatype = 'file'; + o.depends('https', '1'); + + o = s.option(form.Value, 'upload_dir', _('Upload dir path'), _('The path to upload AP upgrade firmware')); + o.placeholder = DEFAULT_UPLOAD_DIR; + o.default = DEFAULT_UPLOAD_DIR; + o.datatype = 'directory'; + o.rmempty = false; + + o = s.option(form.Value, 'db_dir', _('Database dir path'), _('The path to store the config database')); + o.placeholder = DEFAULT_DB_DIR; + o.default = DEFAULT_DB_DIR; + o.datatype = 'directory'; + o.rmempty = false; + + o = s.option(form.Value, 'piddir', _('PID dir path'), _('The path to store the AC program pid file')); + o.placeholder = DEFAULT_PID_DIR; + o.default = DEFAULT_PID_DIR; + o.datatype = 'directory'; + o.rmempty = false; + + o = s.option(form.ListValue, 'lang', _('Language')); + o.value('zh', _('Chinese')); + o.value('en', _('English')); + o.default = 'zh'; + o.rmempty = false; + + o = s.option(form.Flag, 'debug', _('Debug Mode')); + o.default = '0'; + o.rmempty = false; + + o = s.option(form.Flag, 'showtip', _('Show IP Tip'), + _('Show the IP 6.7.8.9 setup tip when it is not configured.')); + o.default = '0'; + o.rmempty = false; + + o = s.option(form.Flag, 'log', _('Enable Log')); + o.default = '0'; + o.rmempty = false; + + o = s.option(form.Button, '_clear_upload', _('Clear Upload Directory'), + _('Only files under the configured Gecoos upload directory will be removed.')); + o.inputstyle = 'remove'; + o.inputtitle = _('Clear'); + o.onclick = function() { + if (!confirm(_('Really clear the configured upload directory?'))) + return Promise.resolve(); + + return callClearUpload().then(function(res) { + if (res && res.result === true) + ui.addNotification(null, E('p', {}, _('Upload directory cleared'))); + else + ui.addNotification(null, E('p', {}, clearUploadError(res)), 'danger'); + }); + }; + + return m.render(); + } +}); diff --git a/luci-app-gecoosac/luasrc/controller/gecoosac.lua b/luci-app-gecoosac/luasrc/controller/gecoosac.lua deleted file mode 100644 index a23feccd..00000000 --- a/luci-app-gecoosac/luasrc/controller/gecoosac.lua +++ /dev/null @@ -1,39 +0,0 @@ -module("luci.controller.gecoosac", package.seeall) - -local fs = require "nixio.fs" -local sys = require "luci.sys" -local uci = require "luci.model.uci" - -local ACL_DEPENDS = { "luci-app-gecoosac" } - -local function service_running() - if not fs.access("/etc/init.d/gecoosac") then - return false - end - - return sys.call("/etc/init.d/gecoosac status >/dev/null 2>&1") == 0 -end - -function index() - if not fs.access("/etc/config/gecoosac") then - return - end - local page - page = entry({"admin", "services", "gecoosac"}, cbi("gecoosac"), _("Gecoos AC"), 100) - page.dependent = true - page.acl_depends = ACL_DEPENDS - page = entry({"admin", "services", "gecoosac", "status"}, call("act_status")) - page.leaf = true - page.acl_depends = ACL_DEPENDS -end - -function act_status() - local cur = uci.cursor() - local enabled = cur:get("gecoosac", "config", "enabled") == "1" - local e = { - enabled = enabled, - running = enabled and service_running() - } - luci.http.prepare_content("application/json") - luci.http.write_json(e) -end diff --git a/luci-app-gecoosac/luasrc/model/cbi/gecoosac.lua b/luci-app-gecoosac/luasrc/model/cbi/gecoosac.lua deleted file mode 100644 index 9bdbde16..00000000 --- a/luci-app-gecoosac/luasrc/model/cbi/gecoosac.lua +++ /dev/null @@ -1,197 +0,0 @@ -local fs = require "nixio.fs" - -local DEFAULT_UPLOAD_DIR = "/tmp/gecoosac/upload/" -local DEFAULT_DB_DIR = "/etc/gecoosac/" -local DEFAULT_CRT_FILE = "/etc/gecoosac/tls/gecoosac.crt" -local DEFAULT_KEY_FILE = "/etc/gecoosac/tls/gecoosac.key" -local DEFAULT_PID_DIR = "/var/run/" - -local function trim(value) - return (value or ""):gsub("^%s+", ""):gsub("%s+$", "") -end - -local function is_abs_path(value) - return type(value) == "string" and value:match("^/") and not value:find("[%z\r\n]") -end - -local function validate_abs_path(self, value) - value = trim(value) - if is_abs_path(value) then - return value - end - - return nil, translate("Expecting an absolute path") -end - -local function is_upload_path(path) - path = trim(path):gsub("/+$", "") - return path == "/tmp/gecoosac/upload" or path:match("/gecoosac/upload$") ~= nil -end - -local function remove_tree(path) - local stat = fs.lstat and fs.lstat(path) or fs.stat(path) - if not stat then - return true - end - - if stat.type == "dir" then - local iter = fs.dir(path) - if not iter then - return nil, translatef("Unable to read %s", path) - end - - for entry in iter do - if entry ~= "." and entry ~= ".." then - local ok, err = remove_tree(path .. "/" .. entry) - if not ok then - return nil, err - end - end - end - - if not fs.rmdir(path) and fs.stat(path, "type") == "dir" then - return nil, translatef("Unable to remove %s", path) - end - else - if not fs.unlink(path) and (fs.lstat and fs.lstat(path) or fs.stat(path)) then - return nil, translatef("Unable to remove %s", path) - end - end - - return true -end - -local function clear_upload_dir(path) - path = trim(path) - if path == "" then - path = DEFAULT_UPLOAD_DIR - end - - path = path:gsub("/+$", "") - if not is_abs_path(path) then - return nil, translate("Expecting an absolute path") - end - - local real = fs.realpath(path) or path - real = real:gsub("/+$", "") - if not is_upload_path(real) then - return nil, translate("Only Gecoos upload directories can be cleared") - end - - if fs.stat(real, "type") ~= "dir" then - return true - end - - local iter = fs.dir(real) - if not iter then - return nil, translatef("Unable to read %s", real) - end - - for entry in iter do - if entry ~= "." and entry ~= ".." then - local ok, err = remove_tree(real .. "/" .. entry) - if not ok then - return nil, err - end - end - end - - return true -end - -if fs.access("/usr/bin/gecoosac") then - m = Map("gecoosac", translate("Gecoos AC"), translate("Batch management Gecoos AP, Default password: admin") .. "
" .. translatef("The current AC version %s, only supports AP 7.6 and above.","2.2")) -else - m = Map("gecoosac", translate("Gecoos AC"), translate("Batch management Gecoos AP, Default password: admin") .. "
" .. translate("The AC program does not exist, please check.")) -end - -m:section(SimpleSection).template = "gecoosac/gecoosac_status" - -s = m:section(TypedSection, "gecoosac", translate("Global Settings")) -s.addremove = false -s.anonymous = true - -enable = s:option(Flag, "enabled", translate("Enabled AC")) -enable.rmempty = false - -o = s:option(Value, "port", translate("Set interface port")) -o.placeholder = 60650 -o.default = 60650 -o.datatype = "port" -o.rmempty = false - -o = s:option(Flag, "isonlyoneprot", translate("Single Port Mode"), translate("Do not enable the independent management port, only use one port for management.")) -o.default = 1 -o.rmempty = false - -o = s:option(Value, "m_port", translate("Set management port")) -o.placeholder = 8080 -o.default = 8080 -o.datatype = "port" -o:depends("isonlyoneprot", false) - -o = s:option(Flag, "https", translate("Enable HTTPS service"), translate("Default certificate files are generated when HTTPS starts; custom paths must point to readable files.")) -o.default = 0 -o:depends("isonlyoneprot", false) - -o = s:option(Value, "crt_file", translate("Specify crt certificate file")) -o.placeholder = DEFAULT_CRT_FILE -o.default = DEFAULT_CRT_FILE -o.validate = validate_abs_path -o:depends("https", true) - -o = s:option(Value, "key_file", translate("Specify key certificate file")) -o.placeholder = DEFAULT_KEY_FILE -o.default = DEFAULT_KEY_FILE -o.validate = validate_abs_path -o:depends("https", true) - -upload_dir = s:option(Value, "upload_dir", translate("Upload dir path"), translate("The path to upload AP upgrade firmware")) -upload_dir.placeholder = DEFAULT_UPLOAD_DIR -upload_dir.default = DEFAULT_UPLOAD_DIR -upload_dir.rmempty = false -upload_dir.validate = validate_abs_path - -db_dir = s:option(Value, "db_dir", translate("Database dir path"), translate("The path to store the config database")) -db_dir.placeholder = DEFAULT_DB_DIR -db_dir.default = DEFAULT_DB_DIR -db_dir.rmempty = false -db_dir.validate = validate_abs_path - -o = s:option(Value, "piddir", translate("PID dir path"), translate("The path to store the AC program pid file")) -o.placeholder = DEFAULT_PID_DIR -o.default = DEFAULT_PID_DIR -o.rmempty = false -o.validate = validate_abs_path - -o = s:option(ListValue, "lang", translate("Language")) -o:value("zh", translate("Chinese")) -o:value("en", translate("English")) -o.default = "zh" -o.rmempty = false - -debug = s:option(Flag, "debug", translate("Debug Mode")) -debug.default = 0 -debug.rmempty = false - -showtip = s:option(Flag, "showtip", translate("Show IP Tip"), translate("Show the IP 6.7.8.9 setup tip when it is not configured.")) -showtip.default = 0 -showtip.rmempty = false - -log = s:option(Flag, "log", translate("Enable Log")) -log.default = 0 -log.rmempty = false - -clear_upload = s:option(Button, "clear_upload", translate("Clear Upload Directory"), translate("Only files under the configured Gecoos upload directory will be removed.")) -clear_upload.inputstyle = "remove" -clear_upload.write = function(self, section) - local path = upload_dir:formvalue(section) or upload_dir:cfgvalue(section) or DEFAULT_UPLOAD_DIR - local ok, err = clear_upload_dir(path) - if not ok then - self.map.message = err or translate("Upload directory was not cleared") - else - self.map.message = translate("Upload directory cleared") - end -end - -return m diff --git a/luci-app-gecoosac/luasrc/view/gecoosac/gecoosac_status.htm b/luci-app-gecoosac/luasrc/view/gecoosac/gecoosac_status.htm deleted file mode 100644 index 34f831da..00000000 --- a/luci-app-gecoosac/luasrc/view/gecoosac/gecoosac_status.htm +++ /dev/null @@ -1,101 +0,0 @@ -<% -local uci=require"luci.model.uci".cursor() -local json=require"luci.jsonc" - -local function valid_port(value, default) - value = tostring(value or default) - if value:match("^%d+$") then - local port = tonumber(value) - if port and port >= 1 and port <= 65535 then - return tostring(port) - end - end - - return default -end - -local isonlyoneprot = uci:get("gecoosac", "config", "isonlyoneprot") or "1" -local https = uci:get("gecoosac", "config", "https") or "0" -local port = valid_port(uci:get("gecoosac", "config", "port"), "60650") -local m_port = valid_port(uci:get("gecoosac", "config", "m_port"), "8080") -local http = "http://" -if isonlyoneprot == "0" then - port = m_port - if https == "1" then - http = "https://" - end -end --%> - -
-

- <%:Collecting data...%> -

- <%:The GecoosAC service is running.%> - <%:The GecoosAC service is not running.%> - <%:Open the mgmt page%> -
- diff --git a/luci-app-gecoosac/po/zh-cn/gecoosac.po b/luci-app-gecoosac/po/zh-cn/gecoosac.po index 7a81794d..ea3d3231 100644 --- a/luci-app-gecoosac/po/zh-cn/gecoosac.po +++ b/luci-app-gecoosac/po/zh-cn/gecoosac.po @@ -21,9 +21,6 @@ msgstr "批量集中管理集客 AP,默认密码:admin" msgid "The current AC version %s, only supports AP 7.6 and above." msgstr "当前 AC 版本 %s ,仅支持 AP 7.6 及以上版本。" -msgid "The AC program does not exist, please check." -msgstr "AC 程序不存在,请检查。" - msgid "Global Settings" msgstr "全局设置" @@ -99,15 +96,18 @@ msgstr "集客AC控制器 未运行" msgid "Open the mgmt page" msgstr "打开管理页面" -msgid "Collecting data..." -msgstr "收集数据..." - msgid "Clear Upload Directory" msgstr "清理上传目录" +msgid "Clear" +msgstr "清理" + msgid "Only files under the configured Gecoos upload directory will be removed." msgstr "只会删除已配置的集客 AC 上传目录中的文件。" +msgid "Really clear the configured upload directory?" +msgstr "确定要清理已配置的上传目录吗?" + msgid "Expecting an absolute path" msgstr "请输入绝对路径" @@ -120,8 +120,5 @@ msgstr "上传目录未清理" msgid "Upload directory cleared" msgstr "上传目录已清理" -msgid "Unable to read %s" -msgstr "无法读取 %s" - -msgid "Unable to remove %s" -msgstr "无法删除 %s" +msgid "Unable to remove upload directory contents" +msgstr "无法删除上传目录内容" diff --git a/luci-app-gecoosac/root/usr/libexec/rpcd/luci.gecoosac b/luci-app-gecoosac/root/usr/libexec/rpcd/luci.gecoosac new file mode 100755 index 00000000..e98aa4fc --- /dev/null +++ b/luci-app-gecoosac/root/usr/libexec/rpcd/luci.gecoosac @@ -0,0 +1,91 @@ +#!/bin/sh + +. /usr/share/libubox/jshn.sh + +DEFAULT_UPLOAD_DIR=/tmp/gecoosac/upload/ + +json_result() { + local ok="$1" + local message="$2" + local path="$3" + + json_init + json_add_boolean result "$ok" + [ -n "$message" ] && json_add_string error "$message" + [ -n "$path" ] && json_add_string path "$path" + json_dump + json_cleanup +} + +strip_trailing_slashes() { + local path="$1" + + while [ "$path" != "/" ] && [ "${path%/}" != "$path" ]; do + path="${path%/}" + done + + printf '%s\n' "$path" +} + +safe_upload_path() { + local path + + path="$(strip_trailing_slashes "$1")" + [ "$path" = "/tmp/gecoosac/upload" ] && return 0 + + case "$path" in + */gecoosac/upload) return 0 ;; + esac + + return 1 +} + +clear_upload() { + local path real entry + + path="$(uci -q get gecoosac.config.upload_dir)" + [ -n "$path" ] || path="$DEFAULT_UPLOAD_DIR" + + case "$path" in + /*) ;; + *) json_result 0 "Expecting an absolute path"; return ;; + esac + + path="$(strip_trailing_slashes "$path")" + real="$(readlink -f "$path" 2>/dev/null)" + [ -n "$real" ] || real="$path" + real="$(strip_trailing_slashes "$real")" + + if ! safe_upload_path "$real"; then + json_result 0 "Only Gecoos upload directories can be cleared" "$real" + return + fi + + [ -d "$real" ] || { json_result 1 "" "$real"; return; } + + for entry in "$real"/* "$real"/.[!.]* "$real"/..?*; do + [ -e "$entry" ] || [ -L "$entry" ] || continue + + if ! rm -rf "$entry"; then + json_result 0 "Unable to remove upload directory contents" "$real" + return + fi + done + + json_result 1 "" "$real" +} + +case "$1" in + list) + printf '{ "clear_upload": {} }' + ;; + call) + case "$2" in + clear_upload) clear_upload ;; + *) json_result 0 "Unknown method" ;; + esac + ;; + *) + json_result 0 "Usage: luci.gecoosac list|call " + ;; +esac diff --git a/luci-app-gecoosac/root/usr/share/luci/menu.d/luci-app-gecoosac.json b/luci-app-gecoosac/root/usr/share/luci/menu.d/luci-app-gecoosac.json new file mode 100644 index 00000000..23912b98 --- /dev/null +++ b/luci-app-gecoosac/root/usr/share/luci/menu.d/luci-app-gecoosac.json @@ -0,0 +1,14 @@ +{ + "admin/services/gecoosac": { + "title": "Gecoos AC", + "order": 100, + "action": { + "type": "view", + "path": "gecoosac" + }, + "depends": { + "acl": [ "luci-app-gecoosac" ], + "uci": { "gecoosac": true } + } + } +} diff --git a/luci-app-gecoosac/root/usr/share/rpcd/acl.d/luci-app-gecoosac.json b/luci-app-gecoosac/root/usr/share/rpcd/acl.d/luci-app-gecoosac.json index f75f5a88..62716728 100644 --- a/luci-app-gecoosac/root/usr/share/rpcd/acl.d/luci-app-gecoosac.json +++ b/luci-app-gecoosac/root/usr/share/rpcd/acl.d/luci-app-gecoosac.json @@ -1,10 +1,16 @@ { "luci-app-gecoosac": { - "description": "Grant UCI access for luci-app-gecoosac", + "description": "Grant access for luci-app-gecoosac", "read": { + "ubus": { + "service": [ "list" ] + }, "uci": [ "gecoosac" ] }, "write": { + "ubus": { + "luci.gecoosac": [ "clear_upload" ] + }, "uci": [ "gecoosac" ] } } diff --git a/luci-app-run/Makefile b/luci-app-run/Makefile index 13714bb1..0c7d1a14 100644 --- a/luci-app-run/Makefile +++ b/luci-app-run/Makefile @@ -2,7 +2,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=luci-app-run PKG_VERSION:=1.0.0 -PKG_RELEASE:=2 +PKG_RELEASE:=3 LUCI_TITLE:=LuCI support for running makeself .run installers LUCI_DESCRIPTION:=Upload and execute makeself-generated .run installers from LuCI. diff --git a/luci-app-run/htdocs/luci-static/resources/view/run/index.js b/luci-app-run/htdocs/luci-static/resources/view/run/index.js index d8a39d2d..b9ca8986 100644 --- a/luci-app-run/htdocs/luci-static/resources/view/run/index.js +++ b/luci-app-run/htdocs/luci-static/resources/view/run/index.js @@ -5,14 +5,11 @@ 'require poll'; // ====================== 纯JSON国际化 · 中英双语 ====================== -// 25.12 兼容版:唯一变量名 + 可靠语言检测 const RUN_LANG = (function () { try { - // 优先从 cookie 获取(LuCI 最常用方式) const m = document.cookie.match(/luci_lang=([a-zA-Z-]+)/); if (m) return m[1].substring(0, 2).toLowerCase(); - // 备选:LuCI 环境变量 if (window.L && L.env && L.env.lang) return L.env.lang.substring(0, 2).toLowerCase(); @@ -25,15 +22,15 @@ const RUN_LANG = (function () { const I18N = { zh: { title: "Run安装器", - desc: "在路由器上上传并执行 makeself 生成的 .run 安装包。", - drop_tip: "拖入一个 makeself .run 文件,或从电脑选择。", - choose_file: "选择 .run 文件", + desc: "在路由器上上传并执行 .run 安装包或 .sh 脚本,注意架构务必匹配。", + drop_tip: "拖入一个 .run 或 .sh 文件,或从电脑选择。", + choose_file: "选择 .run 或 .sh 文件", execute: "执行", clean_up: "清理", - upload_title: "上传 .run 安装包", + upload_title: "上传安装脚本 (.run / .sh)", log_title: "执行日志", clean_done: "临时文件与日志已清理。", - only_run: "仅支持 .run 文件。", + only_run: "仅支持 .run 和 .sh 文件。", prepare_upload: "准备上传:%s (%s)", upload_failed: "上传失败。", uploading: "正在上传 %s:%d%%", @@ -47,15 +44,15 @@ const I18N = { }, en: { title: "Run Installer", - desc: "Upload and execute a makeself-generated .run package on this router.", - drop_tip: "Drop a makeself .run file here, or choose one from your computer.", - choose_file: "Choose .run file", + desc: "Upload and execute .run packages or .sh scripts on this router, ensuring architecture compatibility.", + drop_tip: "Drop a .run or .sh file here, or choose one from your computer.", + choose_file: "Choose .run or .sh file", execute: "Execute", clean_up: "Clean up", - upload_title: "Upload .run installer", + upload_title: "Upload installer script (.run / .sh)", log_title: "Execution log", clean_done: "Temporary files and logs were removed.", - only_run: "Only .run files are accepted.", + only_run: "Only .run and .sh files are accepted.", prepare_upload: "Preparing upload: %s (%s)", upload_failed: "Upload failed.", uploading: "Uploading %s: %d%%", @@ -137,7 +134,6 @@ function bufferToBase64(buffer) { } return view.extend({ - // ====================== 底部按钮正确隐藏 ====================== handleSave: null, handleReset: null, handleSaveApply: null, @@ -156,7 +152,7 @@ return view.extend({ var fileInput = E('input', { 'type': 'file', - accept: '.run,application/x-sh,application/octet-stream', + accept: '.run,.sh,application/x-shellscript,application/octet-stream', style: 'display:none' }); @@ -259,8 +255,7 @@ return view.extend({ }, applyStatus: function (status, state) { - if (!status) - return; + if (!status) return; if (status.running) state.textContent = _('running'); @@ -271,7 +266,8 @@ return view.extend({ uploadFile: function (file, progress, state, runButton) { var self = this; - if (!file.name.match(/\.run$/i)) { + // 支持 .run 和 .sh 文件 + if (!file.name.match(/\.(run|sh)$/i)) { ui.addNotification(null, E('p', [_('only_run')]), 'danger'); return Promise.reject(); } @@ -305,30 +301,20 @@ return view.extend({ xhr.setRequestHeader('Content-Type', 'application/octet-stream'); xhr.upload.onprogress = function (ev) { - if (!ev.lengthComputable) - return; - + if (!ev.lengthComputable) return; progress.value = Math.floor(ev.loaded * 100 / ev.total); state.textContent = _('uploading', file.name, progress.value); }; xhr.onerror = function () { - // 强制启用按钮 document.querySelector('.cbi-button-action').disabled = false; reject(new Error(_('upload_err'))); }; xhr.onload = function () { - // ========================================== - // 【直接强制解锁按钮:永远生效】 - // ========================================== document.querySelector('.cbi-button-action').disabled = false; progress.value = 100; - // 忽略所有返回解析 - try { JSON.parse(xhr.responseText); } catch (e) { } - - // 直接完成流程 uploadFinish(session.id).then(function () { state.textContent = _('upload_done', file.name, formatBytes(file.size)); }).catch(function () { @@ -345,8 +331,7 @@ return view.extend({ startRun: function (runButton, state) { var self = this; - if (!this.currentUploadId) - return; + if (!this.currentUploadId) return; runButton.disabled = true; state.textContent = _('starting'); @@ -367,8 +352,7 @@ return view.extend({ var self = this; return readLog(this.logOffset).then(function (res) { - if (!res || res.error) - return; + if (!res || res.error) return; if (res.data) { log.textContent += res.data; diff --git a/luci-app-run/root/usr/libexec/rpcd/luci-app-run b/luci-app-run/root/usr/libexec/rpcd/luci-app-run index 2a7990c2..d9f7fbdd 100755 --- a/luci-app-run/root/usr/libexec/rpcd/luci-app-run +++ b/luci-app-run/root/usr/libexec/rpcd/luci-app-run @@ -223,7 +223,14 @@ run_installer() { [ -d "$dir" ] || { json_error "Unknown upload id"; return; } name="$(cat "$dir/name" 2>/dev/null)" file="$dir/$name" - [ -x "$file" ] || { json_error "Uploaded file is not executable"; return; } + + # 确保文件可执行(.run 和 .sh 都需要) + chmod 700 "$file" 2>/dev/null || true + + [ -x "$file" ] || { + json_error "Uploaded file is not executable. Please check file permissions." + return + } read_state if is_running "$PID"; then diff --git a/luci-app-run/root/www/cgi-bin/luci-app-run-upload b/luci-app-run/root/www/cgi-bin/luci-app-run-upload index 16a785a8..ef545f87 100755 --- a/luci-app-run/root/www/cgi-bin/luci-app-run-upload +++ b/luci-app-run/root/www/cgi-bin/luci-app-run-upload @@ -72,8 +72,13 @@ saved_token="$(cat "$dir/token" 2>/dev/null)" name="$(cat "$dir/name" 2>/dev/null)" case "$name" in - *.run) ;; - *) fail "Invalid filename" ;; + *.run) + ;; + *.sh) + ;; + *) + fail "Invalid filename" + ;; esac length="${CONTENT_LENGTH:-0}" diff --git a/luci-app-store/Makefile b/luci-app-store/Makefile index 66ca95cc..70378a9e 100644 --- a/luci-app-store/Makefile +++ b/luci-app-store/Makefile @@ -13,12 +13,12 @@ LUCI_DEPENDS+=$(if $(CONFIG_USE_APK),+apk +luci-compat,+opkg) LUCI_EXTRA_DEPENDS:=luci-lib-taskd (>=1.0.19) LUCI_PKGARCH:=all -PKG_VERSION:=0.2.0-r2 +PKG_VERSION:=0.2.0-r3 # PKG_RELEASE MUST be empty for luci.mk PKG_RELEASE:= ISTORE_UI_VERSION:=0.2.0 -ISTORE_UI_RELEASE:=1 +ISTORE_UI_RELEASE:=2 PKG_HASH:=skip PKG_SOURCE_URL_FILE:=v$(ISTORE_UI_VERSION)-$(ISTORE_UI_RELEASE).tar.gz diff --git a/opera-proxy/Makefile b/opera-proxy/Makefile index 563ccd3b..613c5576 100644 --- a/opera-proxy/Makefile +++ b/opera-proxy/Makefile @@ -1,8 +1,8 @@ include $(TOPDIR)/rules.mk PKG_NAME:=opera-proxy -PKG_VERSION:=1.24.0 -PKG_RELEASE:=5 +PKG_VERSION:=1.25.0 +PKG_RELEASE:=6 PKG_MAINTAINER:=Konstantine Shevlakov PKG_LICENSE:=MIT