|
@@ -1079,11 +1079,11 @@ export function genWireguardLinks(input: GenWireguardFanoutInput): string {
|
|
|
const addr = resolveAddr(inbound, hostOverride, fallbackHostname);
|
|
const addr = resolveAddr(inbound, hostOverride, fallbackHostname);
|
|
|
const sep = remarkModel.charAt(0);
|
|
const sep = remarkModel.charAt(0);
|
|
|
return inbound.settings.peers
|
|
return inbound.settings.peers
|
|
|
- .map((_p, i) => genWireguardLink({
|
|
|
|
|
|
|
+ .map((p, i) => genWireguardLink({
|
|
|
settings: inbound.settings as WireguardInboundSettings,
|
|
settings: inbound.settings as WireguardInboundSettings,
|
|
|
address: addr,
|
|
address: addr,
|
|
|
port: inbound.port,
|
|
port: inbound.port,
|
|
|
- remark: `${remark}${sep}${i + 1}`,
|
|
|
|
|
|
|
+ remark: `${remark}${sep}${i + 1}${wgPeerCommentSuffix(p)}`,
|
|
|
peerIndex: i,
|
|
peerIndex: i,
|
|
|
}))
|
|
}))
|
|
|
.join('\r\n');
|
|
.join('\r\n');
|
|
@@ -1095,16 +1095,23 @@ export function genWireguardConfigs(input: GenWireguardFanoutInput): string {
|
|
|
const addr = resolveAddr(inbound, hostOverride, fallbackHostname);
|
|
const addr = resolveAddr(inbound, hostOverride, fallbackHostname);
|
|
|
const sep = remarkModel.charAt(0);
|
|
const sep = remarkModel.charAt(0);
|
|
|
return inbound.settings.peers
|
|
return inbound.settings.peers
|
|
|
- .map((_p, i) => genWireguardConfig({
|
|
|
|
|
|
|
+ .map((p, i) => genWireguardConfig({
|
|
|
settings: inbound.settings as WireguardInboundSettings,
|
|
settings: inbound.settings as WireguardInboundSettings,
|
|
|
address: addr,
|
|
address: addr,
|
|
|
port: inbound.port,
|
|
port: inbound.port,
|
|
|
- remark: `${remark}${sep}${i + 1}`,
|
|
|
|
|
|
|
+ remark: `${remark}${sep}${i + 1}${wgPeerCommentSuffix(p)}`,
|
|
|
peerIndex: i,
|
|
peerIndex: i,
|
|
|
}))
|
|
}))
|
|
|
.join('\r\n');
|
|
.join('\r\n');
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+// Peer comments (#5168) are panel-side annotations; when present they ride
|
|
|
|
|
+// along in the share remark so the device is identifiable in client apps.
|
|
|
|
|
+function wgPeerCommentSuffix(peer: unknown): string {
|
|
|
|
|
+ const comment = (peer as { comment?: unknown })?.comment;
|
|
|
|
|
+ return typeof comment === 'string' && comment.trim() !== '' ? ` (${comment.trim()})` : '';
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
export function isPostQuantumLink(link: string): boolean {
|
|
export function isPostQuantumLink(link: string): boolean {
|
|
|
if (/[?&]pqv=/.test(link)) return true;
|
|
if (/[?&]pqv=/.test(link)) return true;
|
|
|
if (link.includes('mlkem768') || link.includes('mldsa65')) return true;
|
|
if (link.includes('mlkem768') || link.includes('mldsa65')) return true;
|