sub generate_host_configuration($) {
my $key = shift;
+ my $private_key = shift;
# Load the peer
my %peer = &load_peer($key);
my @conf = (
"[Interface]",
- "PrivateKey = $peer{'PRIVATE_KEY'}",
+ "PrivateKey = $private_key",
"Address = $peer{'CLIENT_ADDRESS'}",
);
}
} elsif ($cgiparams{"ACTION"} eq "SAVE-PEER-HOST") {
+ my $private_key;
my @free_addresses = ();
my @local_subnets = ();
# Generate things for a new peer
if ($is_new) {
# Generate a new private key
- $cgiparams{"PRIVATE_KEY"} = &Wireguard::generate_private_key();
+ $private_key = &Wireguard::generate_private_key();
# Derive the public key
- $cgiparams{"PUBLIC_KEY"} = &Wireguard::derive_public_key($cgiparams{"PRIVATE_KEY"});
+ $cgiparams{"PUBLIC_KEY"} = &Wireguard::derive_public_key($private_key);
# Generate a new PSK
$cgiparams{"PSK"} = &Wireguard::generate_private_key();
# Fetch some configuration parts
} else {
$cgiparams{"PUBLIC_KEY"} = $Wireguard::peers{$key}[3];
- $cgiparams{"PRIVATE_KEY"} = $Wireguard::peers{$key}[4];
$cgiparams{'CLIENT_ADDRESS'} = $Wireguard::peers{$key}[8];
$cgiparams{"PSK"} = $Wireguard::peers{$key}[11];
}
# 3 = Public Key
$cgiparams{"PUBLIC_KEY"},
# 4 = Private Key
- $cgiparams{"PRIVATE_KEY"},
+ "",
# 5 = Port
"",
# 6 = Endpoint Address
}
# Show the client configuration when creating a new peer
- &show_peer_configuration($key) if ($is_new);
+ &show_peer_configuration($key, $private_key) if ($is_new);
} elsif ($cgiparams{"ACTION"} eq $Lang::tr{'add'}) {
if ($cgiparams{"TYPE"} eq "net") {
exit(0);
-sub show_peer_configuration($) {
+sub show_peer_configuration($$) {
my $key = shift;
+ my $private_key = shift;
# The generated QR code
my $qrcode;
my %peer = &Wireguard::load_peer($key);
# Generate the client configuration
- my $config = &Wireguard::generate_host_configuration($key);
+ my $config = &Wireguard::generate_host_configuration($key, $private_key);
# Create a QR code generator
my $qrgen = Imager::QRCode->new(