Commit 65041043 authored by nanahira's avatar nanahira

v6

parent cd0e5924
...@@ -78,8 +78,8 @@ class InventoryBuilder { ...@@ -78,8 +78,8 @@ class InventoryBuilder {
async resolveDomainProcess(domain: string, ipv6: boolean) { async resolveDomainProcess(domain: string, ipv6: boolean) {
const cacheKey = `${domain}-${ipv6 ? ':v6' : 'v4'}`; const cacheKey = `${domain}-${ipv6 ? ':v6' : 'v4'}`;
if (this.resolveCache.has(domain)) { if (this.resolveCache.has(cacheKey)) {
return this.resolveCache.get(domain); return this.resolveCache.get(cacheKey);
} }
const rrtype = (domain.includes('-v6') || ipv6) ? 'AAAA' : 'A'; const rrtype = (domain.includes('-v6') || ipv6) ? 'AAAA' : 'A';
let resolvedIP: string; let resolvedIP: string;
...@@ -95,7 +95,7 @@ class InventoryBuilder { ...@@ -95,7 +95,7 @@ class InventoryBuilder {
resolvedIP = `[${resolvedIP}]`; resolvedIP = `[${resolvedIP}]`;
} }
console.log(`${domain} => ${resolvedIP}`); console.log(`${domain} => ${resolvedIP}`);
this.resolveCache.set(domain, resolvedIP); this.resolveCache.set(cacheKey, resolvedIP);
return resolvedIP; return resolvedIP;
} }
...@@ -421,6 +421,12 @@ class InventoryBuilder { ...@@ -421,6 +421,12 @@ class InventoryBuilder {
}; };
} }
makeV6Domain(domain: string) {
const domainParts = domain.split('.');
domainParts[domainParts.length - 3] += '-v6';
return domainParts.join('.');
}
async parse_connection(local: any, remote: any, connstr: string, inbound: boolean, outbound: boolean, reverse: boolean) { async parse_connection(local: any, remote: any, connstr: string, inbound: boolean, outbound: boolean, reverse: boolean) {
const leftbottom = local.id > remote.id; // true 条目位于左下,false 条目位于右上 const leftbottom = local.id > remote.id; // true 条目位于左下,false 条目位于右上
const cis = !reverse; // true 无需翻转,false 需要翻转。 const cis = !reverse; // true 无需翻转,false 需要翻转。
...@@ -443,10 +449,13 @@ class InventoryBuilder { ...@@ -443,10 +449,13 @@ class InventoryBuilder {
//const remoteGatewayMark = remoteGatewayName ? remoteGateway.mark : undefined; //const remoteGatewayMark = remoteGatewayName ? remoteGateway.mark : undefined;
//console.log(remoteGateway.name); //console.log(remoteGateway.name);
let remoteAddress = remoteGateway.address || null; let remoteAddress = remoteGateway.address || null;
const preferV6 = (!remoteGateway.ipv4 || params.ipv6 === 'on') && remoteGateway.ipv6 && params.ipv6 !== 'off'; const preferV6 = (!remoteGateway.ipv4 || params.ipv6 === 'on' || params.ipv6 === 'force') && remoteGateway.ipv6 && params.ipv6 !== 'off';
if (!localGateway.ipv6 && preferV6) { if (!localGateway.ipv6 && preferV6) {
remoteAddress = null; remoteAddress = null;
} }
if (remoteAddress && params.ipv6 === 'force') {
remoteAddress = this.makeV6Domain(remoteAddress);
}
const resolvedRemoteAddress = remoteAddress ? await this.resolveDomain(remoteAddress, preferV6) : null; const resolvedRemoteAddress = remoteAddress ? await this.resolveDomain(remoteAddress, preferV6) : null;
const remoteLocalAddress = remote.address; const remoteLocalAddress = remote.address;
const remoteNextMark = remote.nextMark; const remoteNextMark = remote.nextMark;
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment