28 lines
809 B
Plaintext
28 lines
809 B
Plaintext
{
|
|
my $wireguard = $DB->get('wg-quick@wg0') || $DB->new_record('wg-quick@wg0', {type => 'service'});
|
|
|
|
# add private and public key if not present
|
|
unless (defined ${'wg-quick@wg0'}{'private'}) {
|
|
$value= `/usr/bin/wg genkey`;
|
|
chomp $value;
|
|
$DB->set_prop('wg-quick@wg0', 'private', $value ) ;
|
|
}
|
|
# recreate public if empty or not the same
|
|
$private=$DB->get_prop('wg-quick@wg0', 'private') ;
|
|
$public=`/usr/bin/echo $private | /usr/bin/wg pubkey`;
|
|
chomp $public;
|
|
if ( ! defined ${'wg-quick@wg0'}{'public'} || ${'wg-quick@wg0'}{'public'} ne $public) {
|
|
$DB->set_prop('wg-quick@wg0', 'public', $public) ;
|
|
}
|
|
|
|
# default ip
|
|
if ( ! defined ${'wg-quick@wg0'}{'ip'} ) {
|
|
my $minimum=16;
|
|
my $maximum=32;
|
|
my $x = $minimum + int(rand($maximum - $minimum));
|
|
$DB->set_prop('wg-quick@wg0', 'ip', "172.$x.0.1") ;
|
|
}
|
|
|
|
}
|
|
|