return "$netsettings{'BLUE_NETADDRESS'}/$netsettings{'BLUE_NETMASK'}";
}elsif($val eq 'RED'){
return "0.0.0.0/0";
+ }elsif($val eq 'WGRW'){
+ return $Wireguard::settings{'CLIENT_POOL'};
}elsif($val =~ /OpenVPN/i){
return "$ovpnsettings{'DOVPN_SUBNET'}";
}elsif($val =~ /IPsec/i){
if($net eq "$netsettings{'BLUE_NETADDRESS'}/$netsettings{'BLUE_NETMASK'}"){
return "$netsettings{'BLUE_DEV'}";
}
+
+ # Wireguard
+ if ($net eq $Wireguard::settings{'CLIENT_POOL'}) {
+ return "wg0";
+ }
+
if($net eq "0.0.0.0/0") {
return &get_external_interface();
}
}
# WireGuard Peers
- } elsif ($key eq 'wg_peer_src' || $key eq 'wg_peer_tgt') {
+ } elsif ($key eq 'wg_peer' || $key eq 'wg_peer_src' || $key eq 'wg_peer_tgt') {
my $peer = &Wireguard::get_peer_by_name($value);
if (defined $peer) {
my $remotes;
$fwhostsettings{'grp_name'}='';
$fwhostsettings{'remark'}='';
}
+ # Fetch the address from a WireGuard Peer
+ if ($fwhostsettings{'grp2'} eq 'wg_peer' && $fwhostsettings{'WG_PEER'} ne ''){
+ @target=$fwhostsettings{'WG_PEER'};
+ $type='wg_peer';
+ }elsif ($fwhostsettings{'grp2'} eq 'wg_peer' && $fwhostsettings{'WG_PEER'} eq ''){
+ $errormessage=$Lang::tr{'fwhost err groupempty'};
+ }
#get address from ovpn ccd static net
if ($fwhostsettings{'grp2'} eq 'ovpn_net' && $fwhostsettings{'OVPN_CCD_NET'} ne ''){
@target=$fwhostsettings{'OVPN_CCD_NET'};
print"</table>";
#Inner table right
print"</td><td align='right' style='vertical-align:top;'><table width='90%' border='0'>";
+ # WireGuard Peers
+ if (%Wireguard::peers) {
+ print <<EOF;
+ <tr>
+ <td style='width:15em;'>
+ <label>
+ <input type='radio' name='grp2' value='wg_peer' $checked{'grp2'}{'wg_peer'}>
+ $Lang::tr{'fwhost wg peers'}
+ </label>
+ </td>
+ <td style='text-align:right;'>
+ <select name='WG_PEER' style='width:16em;'>"
+EOF
+
+ foreach my $key (sort { $Wireguard::peers{$a}[2] cmp $Wireguard::peers{$b}[2] } keys %Wireguard::peers) {
+ my $peer = &Wireguard::load_peer($key);
+
+ print <<EOF;
+ <option value="$peer->{"NAME"}">$peer->{"NAME"}</option>
+EOF
+ }
+
+ print <<EOF;
+ </select>
+ </td>
+ </tr>
+EOF
+ }
#OVPN networks
if (! -z $configccdnet){
print<<END;
&deletefromgrp($name,$configgrp);
}
+ # WireGuard Peers
+ if ($type eq "wg_peer") {
+ my $peer = &Wireguard::get_peer_by_name($name);
+
+ if (defined $peer) {
+ if ($peer->{"TYPE"} eq "host") {
+ return $peer->{"CLIENT_ADDRESS"};
+ } elsif ($peer->{"TYPE"} eq "net") {
+ return join(", ", @{ $peer->{"REMOTE_SUBNETS"} });
+ }
+ }
+ }
+
#get address from ovpn ccd Net-2-Net
if ($type eq 'OpenVPN N-2-N'){
foreach my $key (keys %ccdhost) {