[ Avaa Bypassed ]




Upload:

Command:

www-data@3.17.145.236: ~ $
#!/usr/bin/perl
# Display a form for editing or creating a NAT rule

require './ipfilter-lib.pl';
&ReadParse();
$rules = &get_ipnat_config();

if ($in{'delsel'}) {
	# Special case - deleting selected rules
	@nums = sort { $b cmp $a } split(/\0/, $in{'d'});
	if (@nums) {
		&lock_file($rules->[$nums[0]]->{'file'});
		foreach $n (@nums) {
			&delete_rule($rules->[$n]);
			}
		&flush_file_lines();
		&unlock_file($rules->[$nums[0]]->{'file'});
		&webmin_log("delsel", "nat", undef,
			    { 'count' => scalar(@nums) });
		}
	&redirect("");
	exit;
	}

if ($in{'newmap'} || $in{'newrdr'}) {
	&ui_print_header(undef, $text{'nat_title1'}, "");
	$rdr = $in{'newrdr'} ? 1 : 0;
	$rule = { 'action' => $rdr ? 'rdr' : 'map',
		  'active' => 1,
		  'toip' => '0.0.0.0', 'tomask' => 32 };
	}
else {
	$rule = $rules->[$in{'idx'}];
	&ui_print_header(undef, $text{'nat_title2'}, "");
	$rdr = $rule->{'action'} eq 'rdr' ? 1 : 0;
	}

if (!$rdr) {
	# Javascript for disabling fields
	print <<EOF;
<script>
function from_change(dis)
{
var f = document.forms[0];
for(i=0; i<f.elements.length; i++) {
        e = f.elements[i];
	if (e.name.substring(0, 4) == "from" &&
	    e.name != "frommode" && e.name != "fromip" &&
	    e.name != "frommask") {
		e.disabled = dis;
		}
	}
}
</script>
EOF
	}

print &ui_form_start("save_nat.cgi", "post");
print &ui_hidden("new", $in{'newmap'} || $in{'newrdr'}),"\n";
print &ui_hidden("idx", $in{'idx'}),"\n";
print &ui_hidden("before", $in{'before'}),"\n";
print &ui_hidden("after", $in{'after'}),"\n";
@tds = ( "width=20%", undef );

print &ui_table_start($text{'nat_header1'}, "width=100%", 2);

# Comment
print &ui_table_row($text{'edit_cmt'},
		    $rule->{'cmt'} =~ /\n/ ? 
			&ui_textarea("cmt", $rule->{'cmt'}, 3, 50) :
			&ui_textbox("cmt", $rule->{'cmt'}, 50),
		    undef, \@tds);

# Enabled
print &ui_table_row($text{'edit_active'},
		    &ui_radio("active", $rule->{'active'} ? 1 : 0,
			      [ [ 1, $text{'edit_active1'} ],
				[ 0, $text{'edit_active0'} ] ]));

# NAT mode
if ($rdr) {
	print &ui_table_row($text{'nat_action'},
			    $text{'action_rdr'});
	print &ui_hidden("action", "rdr"),"\n";
	}
else {
	print &ui_table_row($text{'nat_action'},
		    &ui_select("action", $rule->{'action'},
			       [ [ "map", $text{'action_map'} ],
				 [ "bimap", $text{'action_bimap'} ],
				 [ "map-block", $text{'action_map-block'} ] ]));
	}
print &ui_table_end(),"<p>\n";

if (!$rdr) {
	# Show section for source
	print &ui_table_start($text{'nat_header2'}, "width=100%", 2);

	# NAT interface
	print &ui_table_row($text{'nat_iface'},
			    &interface_choice("iface", $rule->{'iface'}, 1));

	# Source mode and address
	print &ui_table_row($text{'nat_frommode'},
	    &ui_radio("frommode", $rule->{'from'} ? 1 : 0,
		      [ [ 0, &text('nat_frommode0',
			           &ipmask_input("from"))."<br>",
			     "onClick='from_change(true)'" ],
			[ 1, $text{'nat_frommode1'},
			     "onClick='from_change(false)'" ] ]));
	($ft, $pt) = &object_input($rule, "from");
	print &ui_table_row($text{'edit_from'}, $ft);
	print &ui_table_row($text{'edit_portfrom'}, $pt);
	($ft, $pt) = &object_input($rule, "fromto");
	print &ui_table_row($text{'edit_to'}, $ft);
	print &ui_table_row($text{'edit_portto'}, $pt);

	print &ui_table_end(),"<p>\n";

	# Show section for destination
	print &ui_table_start($text{'nat_header3'}, "width=100%", 2);

	# Destination address
	print &ui_table_row($text{'nat_tomode'},
	     &ui_radio("tomode", $rule->{'tostart'} ? 1 :
				 $rule->{'toip'} eq '0.0.0.0' &&
			          $rule->{'tomask'} == 32 ? 2 : 0,
		      [ [ 2, $text{'nat_tomode2'}."<br>" ],
			[ 0, &text('nat_tomode0',
			           &ipmask_input("to"))."<br>" ],
			[ 1, &text('nat_tomode1',
			   &ui_textbox("tostart", $rule->{'tostart'}, 15),
			   &ui_textbox("toend", $rule->{'toend'}, 15)) ] ]));

	# Port mapping
	print &ui_table_row($text{'nat_portmap'},
		&ui_radio("portmapmode", $rule->{'portmap'} ? 1 : 0,
		  [ [ 0, $text{'nat_portmap0'}."<br>" ],
		    [ 1, &text('nat_portmap1',
			&protocol_input("portmap", $rule->{'portmap'}, 0, 1),
			&ui_checkbox("portmapnoauto", 1,"",
				     $rule->{'portmapfrom'}),
			&ui_textbox("portmapfrom", $rule->{'portmapfrom'}, 5),
			&ui_textbox("portmapto", $rule->{'portmapto'}, 5)) ] ]));

	# Proxy mapping
	print &ui_table_row($text{'nat_proxy'},
		&ui_radio("proxymode", $rule->{'proxyport'} ? 1 : 0,
		  [ [ 0, $text{'nat_proxy0'}."<br>" ],
		    [ 1, &text('nat_proxy1',
			  &ui_textbox("proxyport", $rule->{'proxyport'}, 5),
			  &ui_textbox("proxyname", $rule->{'proxyname'}, 5),
			  &protocol_input("proxyproto",
					  $rule->{'proxyproto'}, 0, 0)) ] ]));

	print &ui_table_end(),"<p>\n";

	# Show section for other options
	print &ui_table_start($text{'nat_header4'}, "width=100%", 2);
	print "<table>\n";

	print "<tr> <td>",&ui_checkbox("proto", 1, $text{'nat_proto'},
				       $rule->{'proto'}),"</td>\n";
	print "<td>",&protocol_input("protoproto", $rule->{'proto'}, 0, 1),
	      "</td> </tr>\n";

	print "<tr> <td colspan=2>",&ui_checkbox("frag", 1, $text{'nat_frag'},
				       $rule->{'frag'}),"</td> </tr>\n";

	print "<tr> <td>",&ui_checkbox("mssclamp", 1, $text{'nat_clampmss'},
				       $rule->{'mssclamp'}),"</td>\n";
	print "<td>",&ui_textbox("mss", $rule->{'mssclamp'}, 5)," ",
	      "$text{'nat_bytes'}</td> </tr>\n";

	# Proxy mapping
	print "<tr> <td>",&ui_checkbox("oproxy", 1, $text{'nat_oproxy'},
				       $rule->{'oproxyport'}),"</td>\n";
	print "<td>",&text('nat_oproxy1',
			  &ui_textbox("oproxyport", $rule->{'oproxyport'}, 5),
			  &ui_textbox("oproxyname", $rule->{'oproxyname'}, 5),
			  &protocol_input("oproxyproto",
					  $rule->{'oproxyproto'}, 0, 0)),"</td> </tr>\n";

	print &ui_table_end();
	}
else {
	# Show section for source
	print &ui_table_start($text{'nat_header5'}, "width=100%", 2);

	# NAT interface
	print &ui_table_row($text{'nat_iface'},
			    &interface_choice("iface", $rule->{'iface'}, 1));

	# Packets to redirect
	print &ui_table_row($text{'nat_redir'},
			    &ipmask_input("from"));

	# Destination ports
	print &ui_table_row($text{'nat_dports'},
	    &ui_radio("dportsmode", $rule->{'dport2'} ? 1 : 0,
		      [ [ 0, &text('nat_dports0',
			   &ui_textbox("dport", $rule->{'dport1'}, 10)) ],
			[ 1, &text('nat_dports1',
			   &ui_textbox("dport1", $rule->{'dport1'}, 10),
			   &ui_textbox("dport2", $rule->{'dport2'}, 10)) ] ]));

	print &ui_table_row($text{'nat_rdrproto'},
		&protocol_input("rprproto",  $rule->{'rdrproto'}, 0, 1));

	print &ui_table_end(),"<p>\n";

	# Show section for destination
	print &ui_table_start($text{'nat_header6'}, "width=100%", 2);

	print &ui_table_row($text{'nat_rdrip'},
	    &ui_textarea("rdrip", join("\n", @{$rule->{'rdrip'}}), 3, 50));

	print &ui_table_row($text{'nat_rdrport'},
		&ui_textbox("rdrport", $rule->{'rdrport'}, 10));

	print &ui_table_end(),"<p>\n";

	# Show section for other options
	print &ui_table_start($text{'nat_header4'}, "width=100%", 2);
	print "<table>\n";

	print "<tr> <td colspan=2>",&ui_checkbox("round-robin", 1,
						 $text{'nat_robin'},
				       $rule->{'round-robin'}),"</td> </tr>\n";

	print "<tr> <td colspan=2>",&ui_checkbox("frag", 1, $text{'nat_frag'},
				       $rule->{'frag'}),"</td> </tr>\n";

	print "<tr> <td>",&ui_checkbox("mssclamp", 1, $text{'nat_clampmss'},
				       $rule->{'mssclamp'}),"</td>\n";
	print "<td>",&ui_textbox("mss", $rule->{'mssclamp'}, 5)," ",
	      "$text{'nat_bytes'}</td> </tr>\n";

	print &ui_table_end();
	}

if ($in{'newmap'} || $in{'newrdr'}) {
	print &ui_form_end([ [ 'create', $text{'create'} ] ], "100%");
	}
else {
	print &ui_form_end([ [ 'save', $text{'save'} ],
			     [ 'delete', $text{'delete'} ] ], "100%");
	}
if (!$rdr) {
	$dis = $rule->{'from'} ? "false" : "true";
	print "<script>from_change($dis);</script>\n";
	}
&ui_print_footer("", $text{'index_return'});

# ipmask_input(prefix)
sub ipmask_input
{
local ($pfx) = @_;
return &ui_textbox($pfx."ip", $rule->{$pfx."ip"}, 15)." / ".
       &ui_textbox($pfx."mask", $rule->{$pfx."mask"}, 15);
}


Filemanager

Name Type Size Permission Actions
images Folder 0755
lang Folder 0755
CHANGELOG File 896 B 0644
apply.cgi File 271 B 0755
backup_config.pl File 604 B 0755
bootup.cgi File 252 B 0755
cluster.cgi File 2.01 KB 0755
cluster_add.cgi File 1.78 KB 0755
cluster_delete.cgi File 522 B 0755
config File 155 B 0644
config-freebsd File 149 B 0644
config-solaris-10-ALL File 177 B 0644
config.info File 669 B 0644
config.info.ca File 717 B 0644
config.info.de File 743 B 0644
config.info.nl File 741 B 0644
convert.cgi File 341 B 0755
edit_nat.cgi File 7.83 KB 0755
edit_rule.cgi File 9.81 KB 0755
index.cgi File 8.42 KB 0755
install_check.pl File 337 B 0755
ipfilter-lib.pl File 39.32 KB 0755
log_parser.pl File 928 B 0755
module.info File 198 B 0644
module.info.af File 0 B 0644
module.info.af.auto File 129 B 0644
module.info.ar File 0 B 0644
module.info.ar.auto File 183 B 0644
module.info.be File 0 B 0644
module.info.be.auto File 180 B 0644
module.info.bg File 0 B 0644
module.info.bg.auto File 232 B 0644
module.info.ca File 121 B 0644
module.info.cs File 0 B 0644
module.info.cs.auto File 121 B 0644
module.info.da File 0 B 0644
module.info.da.auto File 117 B 0644
module.info.de File 97 B 0644
module.info.el File 0 B 0644
module.info.el.auto File 239 B 0644
module.info.es File 0 B 0644
module.info.es.auto File 118 B 0644
module.info.eu File 0 B 0644
module.info.eu.auto File 117 B 0644
module.info.fa File 0 B 0644
module.info.fa.auto File 182 B 0644
module.info.fi File 0 B 0644
module.info.fi.auto File 123 B 0644
module.info.fr File 0 B 0644
module.info.fr.auto File 132 B 0644
module.info.he File 0 B 0644
module.info.he.auto File 166 B 0644
module.info.hr File 0 B 0644
module.info.hr.auto File 121 B 0644
module.info.hu File 0 B 0644
module.info.hu.auto File 150 B 0644
module.info.it File 0 B 0644
module.info.it.auto File 130 B 0644
module.info.ja File 0 B 0644
module.info.ja.auto File 179 B 0644
module.info.ko File 0 B 0644
module.info.ko.auto File 140 B 0644
module.info.lt File 0 B 0644
module.info.lt.auto File 144 B 0644
module.info.lv File 0 B 0644
module.info.lv.auto File 134 B 0644
module.info.ms File 0 B 0644
module.info.ms.auto File 125 B 0644
module.info.mt File 0 B 0644
module.info.mt.auto File 123 B 0644
module.info.nl File 26 B 0644
module.info.nl.auto File 109 B 0644
module.info.no File 0 B 0644
module.info.no.auto File 126 B 0644
module.info.pl File 0 B 0644
module.info.pl.auto File 117 B 0644
module.info.pt File 0 B 0644
module.info.pt.auto File 116 B 0644
module.info.pt_BR File 0 B 0644
module.info.pt_BR.auto File 122 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 166 B 0644
module.info.sk File 0 B 0644
module.info.sk.auto File 126 B 0644
module.info.sl File 0 B 0644
module.info.sl.auto File 125 B 0644
module.info.sv File 0 B 0644
module.info.sv.auto File 122 B 0644
module.info.th File 0 B 0644
module.info.th.auto File 202 B 0644
module.info.tr File 0 B 0644
module.info.tr.auto File 154 B 0644
module.info.uk File 0 B 0644
module.info.uk.auto File 186 B 0644
module.info.ur File 0 B 0644
module.info.ur.auto File 198 B 0644
module.info.vi File 0 B 0644
module.info.vi.auto File 149 B 0644
module.info.zh File 0 B 0644
module.info.zh.auto File 110 B 0644
module.info.zh_TW File 0 B 0644
module.info.zh_TW.auto File 116 B 0644
move.cgi File 427 B 0755
natmove.cgi File 432 B 0755
save_nat.cgi File 5.06 KB 0755
save_rule.cgi File 4.88 KB 0755
setup.cgi File 6.12 KB 0755
unapply.cgi File 235 B 0755