| Server IP : 104.21.93.65 / Your IP : 104.23.243.230 Web Server : Apache System : Linux server.localhost.com 6.8.0-85-generic #85-Ubuntu SMP PREEMPT_DYNAMIC Thu Sep 18 15:26:59 UTC 2025 x86_64 User : pahana ( 1029) PHP Version : 7.4.33 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : OFF Directory : /proc/thread-self/root/usr/share/webmin/firewalld/ |
Upload File : |
#!/usr/bin/perl
# Show a form to edit one port forward
use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
require './firewalld-lib.pl';
our (%in, %text);
&ReadParse();
# Get the zone and rule
my @zones = &list_firewalld_zones();
my ($zone) = grep { $_->{'name'} eq $in{'zone'} } @zones;
$zone || &error($text{'port_ezone'});
my ($mode, $ports, $proto, $port, $portlow, $porthigh,
$dstmode, $dstports, $dstport, $dstportlow, $dstporthigh, $dstaddr);
if (!$in{'new'}) {
&ui_print_header(undef, $text{'forward_edit'}, "");
($ports, $proto, $dstports, $dstaddr) = split(/\//, $in{'id'});
if ($ports =~ /^(\d+)\-(\d+)$/) {
$mode = 1;
($portlow, $porthigh) = ($1, $2);
}
else {
$mode = 0;
$port = $ports;
}
if ($dstports =~ /^(\d+)\-(\d+)$/) {
$dstmode = 1;
($dstportlow, $dstporthigh) = ($1, $2);
}
else {
$dstmode = 0;
$dstport = $dstports;
}
}
else {
&ui_print_header(undef, $text{'forward_create'}, "");
$mode = 0;
$dstmode = 0;
$proto = "tcp";
}
print &ui_form_start("save_forward.cgi", "post");
print &ui_hidden("zone", $in{'zone'});
print &ui_hidden("id", $in{'id'});
print &ui_hidden("new", $in{'new'});
print &ui_table_start($text{'forward_header'}, undef, 2);
# Zone name
print &ui_table_row($text{'forward_zone'},
"<tt>".&html_escape($zone->{'name'})."</tt>");
# Port number or range
print &ui_table_row($text{'forward_port'},
&ui_radio_table("mode", $mode,
[ [ 0, $text{'port_mode0'},
&ui_textbox("port", $port, 6) ],
[ 1, $text{'port_mode1'},
&ui_textbox("portlow", $portlow, 6)." - ".
&ui_textbox("porthigh", $porthigh, 6) ] ]));
# Protocol name
print &ui_table_row($text{'port_proto'},
&ui_select("proto", $proto,
[ [ "tcp", "TCP" ],
[ "udp", "UDP" ] ], 1, 0, 1));
# Destination port number or range
print &ui_table_row($text{'forward_dstport'},
&ui_radio_table("dstmode", $dstmode,
[ [ 0, $text{'port_mode0'},
&ui_textbox("dstport", $dstport, 6) ],
[ 1, $text{'port_mode1'},
&ui_textbox("dstportlow", $dstportlow, 6)." - ".
&ui_textbox("dstporthigh", $dstporthigh, 6) ],
[ 2, $text{'port_mode2'} ] ]));
# Destination address
print &ui_table_row($text{'forward_dstaddr'},
&ui_opt_textbox("dstaddr", $dstaddr, 40, $text{'forward_dstlocal'}));
print &ui_table_end();
if ($in{'new'}) {
print &ui_form_end([ [ undef, $text{'create'} ] ]);
}
else {
print &ui_form_end([ [ undef, $text{'save'} ],
[ 'delete', $text{'delete'} ] ]);
}
&ui_print_footer("index.cgi?zone=".&urlize($zone->{'name'}),
$text{'index_return'});