Linux mail.vriendennsm.nl 6.1.0-51-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.177-1 (2026-07-16) x86_64
Apache/2.4.68 (Debian)
Server IP : 217.154.75.17 & Your IP : 216.73.216.195
Domains :
Cant Read [ /etc/named.conf ]
User : www-data
Terminal
Auto Root
Create File
Create Folder
Localroot Suggester
Backdoor Destroyer
Readme
/
usr /
share /
webmin /
nftables /
Delete
Unzip
Name
Size
Permission
Date
Action
help
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
images
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
lang
[ DIR ]
drwxr-xr-x
2026-07-25 20:55
acl_security.pl
2.21
KB
-rw-r--r--
2026-07-17 21:17
active.cgi
2.63
KB
-rwxr-xr-x
2026-07-17 21:22
active_table.cgi
3.48
KB
-rwxr-xr-x
2026-07-17 21:22
apply-boot.pl
545
B
-rwxr-xr-x
2026-07-17 21:22
bootup.cgi
428
B
-rwxr-xr-x
2026-07-17 21:22
clear_table.cgi
1.18
KB
-rwxr-xr-x
2026-07-17 21:22
clear_tables.cgi
1.06
KB
-rwxr-xr-x
2026-07-17 21:22
config
65
B
-rw-r--r--
2026-07-17 21:17
config.info
456
B
-rw-r--r--
2026-07-17 21:17
create_table.cgi
1.85
KB
-rwxr-xr-x
2026-07-17 21:22
defaultacl
188
B
-rw-r--r--
2026-07-17 21:17
delete_chain.cgi
1.05
KB
-rwxr-xr-x
2026-07-17 21:22
delete_chains.cgi
1.68
KB
-rwxr-xr-x
2026-07-17 21:22
delete_set.cgi
860
B
-rwxr-xr-x
2026-07-17 21:22
delete_sets.cgi
1.46
KB
-rwxr-xr-x
2026-07-17 21:22
delete_table.cgi
1.72
KB
-rwxr-xr-x
2026-07-17 21:22
edit_chain.cgi
2.6
KB
-rwxr-xr-x
2026-07-17 21:22
edit_manual.cgi
1.06
KB
-rwxr-xr-x
2026-07-17 21:22
edit_rule.cgi
22.11
KB
-rwxr-xr-x
2026-07-17 21:22
edit_set.cgi
2.53
KB
-rwxr-xr-x
2026-07-17 21:22
import_table.cgi
3.21
KB
-rwxr-xr-x
2026-07-17 21:22
index.cgi
21.6
KB
-rwxr-xr-x
2026-07-17 21:22
install_check.pl
538
B
-rw-r--r--
2026-07-17 21:17
manage_forward.cgi
1.42
KB
-rwxr-xr-x
2026-07-17 21:22
manage_ip.cgi
1.46
KB
-rwxr-xr-x
2026-07-17 21:22
manage_port.cgi
1.74
KB
-rwxr-xr-x
2026-07-17 21:22
module.info
201
B
-rw-r--r--
2026-07-17 21:17
move_rule.cgi
981
B
-rwxr-xr-x
2026-07-17 21:22
nftables-lib.pl
106.64
KB
-rw-r--r--
2026-07-17 21:17
rename_chain.cgi
1.03
KB
-rwxr-xr-x
2026-07-17 21:22
restart.cgi
359
B
-rwxr-xr-x
2026-07-17 21:22
save_chain.cgi
2.93
KB
-rwxr-xr-x
2026-07-17 21:22
save_manual.cgi
787
B
-rwxr-xr-x
2026-07-17 21:22
save_rule.cgi
7.94
KB
-rwxr-xr-x
2026-07-17 21:22
save_set.cgi
1.66
KB
-rwxr-xr-x
2026-07-17 21:22
search_services.cgi
487
B
-rwxr-xr-x
2026-07-17 21:22
setup.cgi
4.96
KB
-rwxr-xr-x
2026-07-17 21:22
Save
Rename
#!/usr/bin/perl # setup.cgi # Create a Webmin-managed nftables profile table require './nftables-lib.pl'; ## no critic use strict; use warnings; our (%in, %text); ReadParse(); error_setup($text{'setup_err'}); assert_acl('setup'); if ($in{'action'} eq 'create') { my $profile = $in{'profile'} || 'virtualmin'; my $table_name = $in{'table_name'} || default_profile_table_name(); $table_name =~ /^\w[\w-]*$/ || error($text{'create_ename'}); my @tables = get_nftables_save(); foreach my $t (@tables) { if ($t->{'family'} eq 'inet' && $t->{'name'} eq $table_name) { error(text('setup_edup', nft_table_spec($t))); } } my ($active, $active_err) = get_active_nftables_save(); if (!$active_err) { foreach my $t (@$active) { if ($t->{'family'} eq 'inet' && $t->{'name'} eq $table_name && table_is_externally_managed($t)) { error(text('create_eexternal', nft_table_spec($t))); } } } my @allow = grep { $_ ne '' } split(/\0/, $in{'allow'} || ''); my $table = create_profile_ruleset($table_name, $profile, \@allow); assert_table_acl($table); push(@tables, $table); my $error = save_configuration(@tables); if ($error) { error(text('setup_failed', $error)); } $error = apply_restore(); if ($error) { error(text('setup_failed', $error)); } webmin_log("setup", "create", $profile, {'family' => 'inet', 'table' => $table_name}); redirect("index.cgi?table_family=inet&table_name=".urlize($table_name)); return; } ui_print_header(undef, $text{'index_profile_setup'}, ""); print ui_form_start("setup.cgi"); print ui_hidden("action", "create"); my @profiles = setup_profiles(); my $profile = $in{'profile'} || 'virtualmin'; my %profile_map = map { $_->{'id'} => $_ } @profiles; $profile = 'virtualmin' if (!$profile_map{$profile}); my %checked = map { $_ => 1 } @{$profile_map{$profile}->{'services'} || [ ]}; my @profile_opts = map { [$_->{'id'}, $_->{'name'}] } @profiles; print ui_table_start($text{'setup_header'}, "width=100%", 2); print ui_table_row($text{'setup_table_name'}, ui_textbox("table_name", $in{'table_name'} || profile_table_name($profile), 24) ); print ui_table_row( $text{'setup_profile'}, ui_select("profile", $profile, \@profile_opts, 1, 0, 0, 0). ui_tag( 'div', ui_note($profile_map{$profile}->{'desc'}, 0), { 'id' => 'nftables_profile_note', 'style' => 'margin-top: 0.35em; margin-left: 0.15em;' } ) ); print ui_table_end(); my @services = setup_services(); my @links = (select_all_link("allow", 0), select_invert_link("allow", 0)); print ui_hr(); print ui_links_row(\@links); my @tds = ("width=5"); print ui_columns_start( [ "", $text{'setup_service_col'}, $text{'setup_type_col'}, $text{'setup_port_col'}, $text{'setup_proto_col'} ], 100, 0, \@tds, $text{'setup_services'} ); foreach my $svc (sort { lc($a->{'label'}) cmp lc($b->{'label'}) } @services) { print ui_checked_columns_row( [$svc->{'label'}, $svc->{'type'}, $svc->{'port'}, $svc->{'proto'},], \@tds, "allow", $svc->{'id'}, $checked{$svc->{'id'}}); } print ui_columns_end(); print profile_javascript(@profiles); print ui_form_end([[undef, $text{'setup_create'}]]); ui_print_footer("index.cgi", $text{'index_return'}); # profile_javascript(@profiles) # Returns JavaScript for profile-driven table names, notes and service checks sub profile_javascript { my (@profiles) = @_; my %profile_services = map { $_->{'id'} => $_->{'services'} } @profiles; my %profile_tables = map { $_->{'id'} => profile_table_name($_->{'id'}) } @profiles; my %profile_notes = map { $_->{'id'} => ui_note($_->{'desc'}, 0) } @profiles; my $json = convert_to_json(\%profile_services); my $table_json = convert_to_json(\%profile_tables); my $note_json = convert_to_json(\%profile_notes); return <<EOF; <script type='text/javascript'> (function() { var profileServices = $json; var profileTables = $table_json; var profileNotes = $note_json; var tableInput = document.querySelector('input[name="table_name"]'); var profileSelect = document.querySelector('select[name="profile"]'); var profileNote = document.getElementById('nftables_profile_note'); var tableNameTouched = false; if (tableInput) { tableInput.addEventListener('input', function() { tableNameTouched = true; }); } function applyProfileServices(profile) { var selected = {}; (profileServices[profile] || []).forEach(function(id) { selected[id] = true; }); document.querySelectorAll('input[name="allow"]').forEach(function(input) { var checked = !!selected[input.value]; if (input.checked != checked) { input.click(); } }); } function applyProfileTable(profile) { if (!tableInput || tableNameTouched || !profileTables[profile]) { return; } tableInput.value = profileTables[profile]; } function applyProfileNote(profile) { if (profileNote && profileNotes[profile]) { profileNote.innerHTML = profileNotes[profile]; } } if (profileSelect) { profileSelect.addEventListener('change', function() { applyProfileServices(this.value); applyProfileTable(this.value); applyProfileNote(this.value); }); } })(); </script> EOF }