diff --git a/handler/routes.go b/handler/routes.go index 274de90..156fecc 100644 --- a/handler/routes.go +++ b/handler/routes.go @@ -136,8 +136,16 @@ func NewClient() echo.HandlerFunc { log.Error("Cannot generate wireguard key pair: ", err) return c.JSON(http.StatusInternalServerError, jsonHTTPResponse{false, "Cannot generate Wireguard key pair"}) } + + presharedKey, err := wgtypes.GenerateKey() + if err != nil { + log.Error("Cannot generated preshared key: ", err) + return c.JSON(http.StatusInternalServerError, jsonHTTPResponse{false, "Cannot generate Wireguard preshared key"}) + } + client.PrivateKey = key.String() client.PublicKey = key.PublicKey().String() + client.PresharedKey = presharedKey.String() client.CreatedAt = time.Now().UTC() client.UpdatedAt = client.CreatedAt diff --git a/model/client.go b/model/client.go index fe60ac3..2d610a6 100644 --- a/model/client.go +++ b/model/client.go @@ -8,7 +8,8 @@ import ( type Client struct { ID string `json:"id"` PrivateKey string `json:"private_key"` - PublicKey string `json:"pulbic_key"` + PublicKey string `json:"public_key"` + PresharedKey string `json:"preshared_key"` Name string `json:"name"` Email string `json:"email"` AllocatedIPs []string `json:"allocated_ips"` diff --git a/templates/wg.conf b/templates/wg.conf index 58e79ad..4433f23 100644 --- a/templates/wg.conf +++ b/templates/wg.conf @@ -17,5 +17,6 @@ MTU = {{ .globalSettings.MTU }} # Update at: {{ .Client.UpdatedAt }} [Peer] PublicKey = {{ .Client.PublicKey }} +PresharedKey = {{ .Client.PresharedKey }} AllowedIPs = {{$first :=true}}{{range .Client.AllocatedIPs }}{{if $first}}{{$first = false}}{{else}},{{end}}{{.}}{{end}} {{end}}{{end}} diff --git a/util/util.go b/util/util.go index 7685ad5..384886f 100644 --- a/util/util.go +++ b/util/util.go @@ -25,6 +25,7 @@ func BuildClientConfig(client model.Client, server model.Server, setting model.G // Peer section peerPublicKey := fmt.Sprintf("PublicKey = %s", server.KeyPair.PublicKey) + peerPresharedKey := fmt.Sprintf("PresharedKey = %s", client.PresharedKey) peerAllowedIPs := fmt.Sprintf("AllowedIPs = %s", strings.Join(client.AllowedIPs, ",")) peerEndpoint := fmt.Sprintf("Endpoint = %s:%d", setting.EndpointAddress, server.Interface.ListenPort) peerPersistentKeepalive := fmt.Sprintf("PersistentKeepalive = %d", setting.PersistentKeepalive) @@ -36,6 +37,7 @@ func BuildClientConfig(client model.Client, server model.Server, setting model.G clientDNS + "\n\n" + "[Peer]" + "\n" + peerPublicKey + "\n" + + peerPresharedKey + "\n" + peerAllowedIPs + "\n" + peerEndpoint + "\n" + peerPersistentKeepalive + "\n"