├── .gitignore ├── README.md ├── SECRETS └── generate.sh /.gitignore: -------------------------------------------------------------------------------- 1 | SECRETS -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # wireguard-config-generator -------------------------------------------------------------------------------- /SECRETS: -------------------------------------------------------------------------------- 1 | #!/bin/sh 2 | ENDPOINT= 3 | ENDPOINT_PUBKEY= -------------------------------------------------------------------------------- /generate.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | SUBNET="192.168.42.0/24, fd86:ea04:1111::/64" 4 | DNS="192.168.42.1, fd86:ea04:1111::1" 5 | 6 | source SECRETS 7 | 8 | # $1 = address 9 | # $2 = allowed_ips = [all|vpn] 10 | 11 | # generate client keys 12 | privatekey="$(wg genkey)" 13 | publickey="$(echo "$privatekey" | wg pubkey)" 14 | 15 | [[ "$2" = "vpn" ]] && IPs="$SUBNET" || IPs="0.0.0.0/0, ::/0" 16 | 17 | address=$(echo "$SUBNET" | sed -e "s/\/24/\/32/g" | sed -e "s/::\/64/::\/128/g" | sed -e "s/\.0\//\.$1\//g" | sed -e "s/::\//::$1\//g") 18 | 19 | echo """ 20 | [Interface] 21 | PrivateKey = $privatekey 22 | Address = $address 23 | DNS = $DNS 24 | MTU = 1380 25 | 26 | [Peer] 27 | PublicKey = $ENDPOINT_PUBKEY 28 | AllowedIPs = $IPs 29 | Endpoint = $ENDPOINT 30 | -------------------------------------------------- 31 | [Peer] 32 | PublicKey = $publickey 33 | AllowedIPs = $address 34 | """ --------------------------------------------------------------------------------