[ Avaa Bypassed ]




Upload:

Command:

www-data@3.15.34.191: ~ $
#!/usr/bin/perl
# List FirewallD rich and direct rules

use strict;
use warnings;
no warnings 'redefine';
no warnings 'uninitialized';
require './firewalld-lib.pl';
our (%in, %text, %config);
&ReadParse();
my $dzone = $in{'zone'};
if (!$dzone) {
	my $zone = &get_default_zone();
	$dzone = $zone->{'name'};
	}
&ui_print_header(&text('list_rules_title_sub', "<tt>".&html_escape($dzone)."</tt>"), $text{'list_rules_title'}, "");

my $head;
my @head = (undef, $text{'list_rules_type'});
my $tdc = "style=\"text-align: center\"";
my @links = ( &select_all_link("rules"),
              &select_invert_link("rules") );

# Check rich rules first
my $fh = 'rrules';
my $rcmd = "$config{'firewall_cmd'} --list-rich-rules --zone=".quotemeta($dzone)."";
&open_execute_command($fh, "$rcmd 2>&1 </dev/null", 1);
while(<$fh>) {
	my @body;
	if ($_ =~ /\S+/) {
		push(@body, $text{'list_rules_type_rich'});

		# Get protocol
		if (/family=["'](ipv\d)["']/) {
			push(@head, $text{'list_rules_protocol'});
			push(@body, $1 =~ /ipv6/i ? "IPv6" : "IPv4");
			}
		
		# Get address
		if (/address=["'](.*?)["']/) {
			push(@head, $text{'list_rules_ip'});
			push(@body, "$1&nbsp;&nbsp;");
			}

		# Get origin
		if (/\s+(source|destination)\s+/) {
			push(@head, $text{'list_rules_origin'});
			push(@body, $1 eq 'source' ? 'Input' : 'Output');
			}

		# Get action
		if (/(accept|reject|drop|mark$)/i) {
			push(@head, $text{'list_rules_action'});
			push(@body, ucfirst($1));
			}

		# Add full rule
		push(@head, $text{'list_rules_rule'});
		push(@body, "<tt>$_</tt>");
		
		# Print start
		if (!$head++) {
			print &ui_form_start("save_rules.cgi", "post");
			print &ui_hidden("zone", $dzone);
			print &ui_links_row(\@links);
			print &ui_columns_start(\@head);
			}
		print &ui_checked_columns_row(\@body, [ 'width=5', $tdc, $tdc, undef, $tdc, $tdc, undef ], "rules", $_);
		}
	}
close($fh);

# Check direct rules
my $fh2 = 'drules';
my $dcmd = "$config{'firewall_cmd'} --direct --get-all-rules";
&open_execute_command($fh2, "$dcmd 2>&1 </dev/null", 1);
while(<$fh2>) {
	my @body;
	if ($_ =~ /\S+/) {
		my $ndash = "&ndash;";
		my $br = "<br>";
		my $nbsp = "&nbsp;";
		my $ips = $ndash;
		my $candelete = 1;
		my $ipslimit = sub {
			my ($ips, $limit) = @_;
			$limit ||= 15;
			# Limit sanity check and adjustment
			$limit = 1 if ($limit < 1);
			$limit -= 1;
			my $ipscount = () = $ips =~ /$br/g;
			if ($ipscount > $limit) {
				my @ips = split($br, $ips);
				@ips = @ips[0 .. $limit];
				$ips = join($br, @ips);
				$ips .= "<small>$br$nbsp".&text('list_rules_plus_more', $ipscount-$limit)."</small>";
				}
			return $ips;
		};
		# Extract IPs from match sets
		if (/set\s+\-\-match-set\s+(.*?)\s+/) {
			my $ipset_name = $1;
			my $ipset_cmd = &has_command($config{'firewall_ipset'} || 'ipset');
			my $ipset_cmd_out = &backquote_logged("$ipset_cmd list ".quotemeta($ipset_name)." 2>&1 </dev/null");
			if (!$?) {
				if ($ipset_cmd_out =~ /number\s+of\s+entries:\s+(\d)+/i) {
					if ($1 > 0) {
						my @ipset_cmd_out_lines = split(/\n/, $ipset_cmd_out);
						my @ips = map { $_ =~ /^([0-9\.\:a-f\/]+)/i } @ipset_cmd_out_lines;
						$ips = join("$nbsp$nbsp$br", @ips);
						}
					}
				}
				# Rules with match sets must not be controlled here
				$candelete = 0;
			}

			# Standard direct rules
			else {
				# Extract IPs from the rule,
				# considering comma separated
				my @ips = ($_ =~ /-[sd]\s+([0-9\.\:a-f,\/]+)/gi);
				$ips = join("$nbsp$nbsp$br", @ips);
				$ips =~ s/\s*,\s*/$nbsp$nbsp$br/g;
				$ips ||= $ndash;
				}

			# Trim the number of IPs to allow at max 10
			$ips = &$ipslimit($ips);

			# Add type name
			push(@body, $text{'list_rules_type_direct'});

			# Get protocol
			if (/(ipv\d)/) {
				push(@head, $text{'list_rules_protocol'});
				push(@body, $1 =~ /ipv6/i ? "IPv6" : "IPv4");
				}
			
			# Get address
			push(@head, $text{'list_rules_ip'});
			push(@body, $ips);

			# Get origin
			if (/(INPUT|OUTPUT|FORWARD|POSTROUTING)/) {
				push(@head, $text{'list_rules_origin'});
				push(@body, ucfirst(lc($1)));
				}

			# Get action
			if (/(ACCEPT|REJECT|DROP|MARK|MASQUERADE$)/) {
				push(@head, $text{'list_rules_action'});
				push(@body, ucfirst(lc($1)));
				}

			# Add full rule
			push(@head, $text{'list_rules_rule'});
			push(@body, "<tt>$_</tt>");
			
			# Print start
			if (!$head++) {
				print &ui_form_start("save_rules.cgi", "post");
				print &ui_hidden("zone", $dzone);
				print &ui_links_row(\@links);
				print &ui_columns_start(\@head);
				}
			print &ui_checked_columns_row(\@body, [ 'width=5', $tdc, $tdc, undef, $tdc, $tdc, undef ], "rules", $_, undef, !$candelete);
		}
	}
close($fh2);


if ($head) {
	print &ui_columns_end();
	print &ui_links_row(\@links);
	print &ui_form_end([ [ 'remove', $text{'list_rules_delete'} ] ] );
	}
else {
	print "There are no existing direct or rich firewall rules to display."
	}

&ui_print_footer("index.cgi?zone=".&urlize($dzone), $text{'index_return'});

Filemanager

Name Type Size Permission Actions
images Folder 0755
lang Folder 0755
CHANGELOG File 201 B 0644
bootup.cgi File 456 B 0755
config File 46 B 0644
config.info File 88 B 0644
config.info.ca File 103 B 0644
config.info.de File 100 B 0644
config.info.fr File 121 B 0644
config.info.no File 96 B 0644
config.info.pl File 98 B 0644
create_zone.cgi File 2.09 KB 0755
default_zone.cgi File 560 B 0755
delete_rules.cgi File 915 B 0755
delete_zone.cgi File 1.03 KB 0755
edit_forward.cgi File 2.55 KB 0755
edit_port.cgi File 1.78 KB 0755
edit_serv.cgi File 1.23 KB 0755
firewalld-lib.pl File 13.2 KB 0644
index.cgi File 5.79 KB 0755
install_check.pl File 469 B 0755
list_rules.cgi File 4.84 KB 0755
log_parser.pl File 794 B 0755
module.info File 176 B 0644
module.info.af File 0 B 0644
module.info.af.auto File 116 B 0644
module.info.ar File 0 B 0644
module.info.ar.auto File 184 B 0644
module.info.be File 0 B 0644
module.info.be.auto File 177 B 0644
module.info.bg File 0 B 0644
module.info.bg.auto File 193 B 0644
module.info.ca File 117 B 0644
module.info.cs File 0 B 0644
module.info.cs.auto File 140 B 0644
module.info.da File 0 B 0644
module.info.da.auto File 128 B 0644
module.info.de File 124 B 0644
module.info.el File 0 B 0644
module.info.el.auto File 252 B 0644
module.info.es File 0 B 0644
module.info.es.auto File 131 B 0644
module.info.eu File 0 B 0644
module.info.eu.auto File 123 B 0644
module.info.fa File 0 B 0644
module.info.fa.auto File 185 B 0644
module.info.fi File 0 B 0644
module.info.fi.auto File 125 B 0644
module.info.fr File 0 B 0644
module.info.fr.auto File 134 B 0644
module.info.he File 0 B 0644
module.info.he.auto File 177 B 0644
module.info.hr File 0 B 0644
module.info.hr.auto File 125 B 0644
module.info.hu File 0 B 0644
module.info.hu.auto File 158 B 0644
module.info.it File 0 B 0644
module.info.it.auto File 128 B 0644
module.info.ja File 0 B 0644
module.info.ja.auto File 162 B 0644
module.info.ko File 0 B 0644
module.info.ko.auto File 143 B 0644
module.info.lt File 0 B 0644
module.info.lt.auto File 151 B 0644
module.info.lv File 0 B 0644
module.info.lv.auto File 131 B 0644
module.info.ms File 0 B 0644
module.info.ms.auto File 140 B 0644
module.info.mt File 0 B 0644
module.info.mt.auto File 124 B 0644
module.info.nl File 0 B 0644
module.info.nl.auto File 124 B 0644
module.info.no File 0 B 0644
module.info.no.auto File 129 B 0644
module.info.pl File 132 B 0644
module.info.pt File 0 B 0644
module.info.pt.auto File 118 B 0644
module.info.pt_BR File 0 B 0644
module.info.pt_BR.auto File 124 B 0644
module.info.ro File 0 B 0644
module.info.ro.auto File 128 B 0644
module.info.ru File 0 B 0644
module.info.ru.auto File 185 B 0644
module.info.sk File 0 B 0644
module.info.sk.auto File 139 B 0644
module.info.sl File 0 B 0644
module.info.sl.auto File 126 B 0644
module.info.sv File 0 B 0644
module.info.sv.auto File 127 B 0644
module.info.th File 0 B 0644
module.info.th.auto File 211 B 0644
module.info.tr File 0 B 0644
module.info.tr.auto File 163 B 0644
module.info.uk File 0 B 0644
module.info.uk.auto File 181 B 0644
module.info.ur File 0 B 0644
module.info.ur.auto File 229 B 0644
module.info.vi File 0 B 0644
module.info.vi.auto File 165 B 0644
module.info.zh File 0 B 0644
module.info.zh.auto File 109 B 0644
module.info.zh_TW File 0 B 0644
module.info.zh_TW.auto File 115 B 0644
open-ports.pl File 2.37 KB 0755
restart.cgi File 346 B 0755
save_forward.cgi File 1.55 KB 0755
save_ifaces.cgi File 643 B 0755
save_port.cgi File 1.13 KB 0755
save_rules.cgi File 796 B 0755
save_serv.cgi File 1.03 KB 0755
start.cgi File 326 B 0755
stop.cgi File 324 B 0755
zone_form.cgi File 968 B 0755