mirror of
https://github.com/wireadmin/wireadmin
synced 2025-04-30 10:34:05 +00:00
63 lines
2.1 KiB
TypeScript
63 lines
2.1 KiB
TypeScript
import { WgServer } from "@lib/typings";
|
|
|
|
export function getServerConf(server: WgServer): string {
|
|
const lines = [
|
|
'# Autogenerated by WireGuard UI (WireAdmin)',
|
|
'[Interface]',
|
|
`PrivateKey = ${server.privateKey}`,
|
|
`Address = ${server.address}/24`,
|
|
`ListenPort = ${server.listen}`,
|
|
`${server.dns ? `DNS = ${server.dns}` : 'OMIT'}`,
|
|
'',
|
|
`${server.preUp ? `PreUp = ${server.preUp}` : 'OMIT'}`,
|
|
`${server.postUp ? `PostUp = ${server.postUp}` : 'OMIT'}`,
|
|
`${server.preDown ? `PreDown = ${server.preDown}` : 'OMIT'}`,
|
|
`${server.postDown ? `PostDown = ${server.postDown}` : 'OMIT'}`,
|
|
]
|
|
server.peers.forEach((peer, index) => {
|
|
lines.push('')
|
|
lines.push(`## ${peer.name || `Peer #${index + 1}`}`)
|
|
lines.push('[Peer]')
|
|
lines.push(`PublicKey = ${peer.publicKey}`)
|
|
lines.push(`${peer.preSharedKey ? `PresharedKey = ${peer.preSharedKey}` : 'OMIT'}`)
|
|
lines.push(`AllowedIPs = ${peer.allowedIps}/32`)
|
|
lines.push(`${peer.persistentKeepalive ? `PersistentKeepalive = ${peer.persistentKeepalive}` : 'OMIT'}`)
|
|
})
|
|
return lines
|
|
.filter((l) => l !== 'OMIT')
|
|
.join('\n')
|
|
}
|
|
|
|
type Peer = WgServer['peers'][0]
|
|
|
|
interface GenPeerConParams extends Peer, Pick<WgServer, 'dns'> {
|
|
serverAddress?: string
|
|
serverPublicKey: string
|
|
port: number
|
|
}
|
|
|
|
|
|
export async function getServerIP(): Promise<string> {
|
|
const resp = await fetch('/api/host')
|
|
return resp.text()
|
|
}
|
|
|
|
export async function getPeerConf(params: GenPeerConParams): Promise<string> {
|
|
const lines = [
|
|
'# Autogenerated by WireGuard UI (WireAdmin)',
|
|
'[Interface]',
|
|
`PrivateKey = ${params.privateKey}`,
|
|
`Address = ${params.allowedIps}/24`,
|
|
`${params.dns ? `DNS = ${params.dns}` : 'OMIT'}`,
|
|
'',
|
|
'[Peer]',
|
|
`PublicKey = ${params.serverPublicKey}`,
|
|
`${params.preSharedKey ? `PresharedKey = ${params.preSharedKey}` : 'OMIT'}`,
|
|
`AllowedIPs = 0.0.0.0/0, ::/0`,
|
|
`PersistentKeepalive = ${params.persistentKeepalive}`,
|
|
`Endpoint = ${params.serverAddress || process.env.NEXT_PUBLIC_WG_HOST}:${params.port}`,
|
|
]
|
|
return lines
|
|
.filter((l) => l !== 'OMIT')
|
|
.join('\n')
|
|
} |