34 lines
843 B
TypeScript
34 lines
843 B
TypeScript
import type { ClientDetails } from '$lib/types/clients';
|
|
|
|
/**
|
|
* Convert client details to WireGuard configuration.
|
|
*
|
|
* ```conf
|
|
* [Interface]
|
|
* PrivateKey = wPa07zR0H4wYoc1ljfeiqlSbR8Z28pPc6jplwE7zPms=
|
|
* Address = 10.18.11.100/32,fd00::1/128
|
|
* DNS = 10.18.11.1,fd00::0
|
|
*
|
|
* [Peer]
|
|
* PublicKey = BJ5faPVJsDP4CCxNYilmKnwlQXOtXEOJjqIwb4U/CgM=
|
|
* PresharedKey = uhZUVqXKF0oayP0BS6yPu6Gepgh68Nz9prtbE5Cuok0=
|
|
* Endpoint = vpn.lab.cazzzer.com:51820
|
|
* AllowedIPs = 0.0.0.0/0,::/0
|
|
* ```
|
|
* @param client
|
|
*/
|
|
export function clientDetailsToConfig(client: ClientDetails): string {
|
|
return `\
|
|
[Interface]
|
|
PrivateKey = ${client.privateKey}
|
|
Address = ${client.ips.join(', ')}
|
|
DNS = ${client.vpnDns}
|
|
|
|
[Peer]
|
|
PublicKey = ${client.vpnPublicKey}
|
|
PresharedKey = ${client.preSharedKey}
|
|
Endpoint = ${client.vpnEndpoint}
|
|
AllowedIPs = 0.0.0.0/0,::/0
|
|
`;
|
|
}
|