X7ROOT File Manager
Current Path:
/usr/libexec/webmin/dhcpd
usr
/
libexec
/
webmin
/
dhcpd
/
📁
..
📄
CHANGELOG
(3.61 KB)
📄
acl_security.pl
(10.09 KB)
📄
backup_config.pl
(699 B)
📄
cgi_args.pl
(358 B)
📄
config-AlmaLinux-7.0-ALL
(333 B)
📄
config-Amazon-Linux-2-ALL
(333 B)
📄
config-CentOS-Linux-5
(378 B)
📄
config-CentOS-Linux-6.0-6.9
(384 B)
📄
config-CentOS-Linux-7.0-ALL
(333 B)
📄
config-CentOS-Stream-Linux-8.0-ALL
(333 B)
📄
config-Oracle-Linux-8.0-ALL
(333 B)
📄
config-Redhat-Enterprise-Linux-6.0-6.9
(384 B)
📄
config-Redhat-Enterprise-Linux-7.0-ALL
(333 B)
📄
config-Rocky-Linux-7.0-ALL
(333 B)
📄
config-Scientific-Linux-6.0-6.9
(384 B)
📄
config-Scientific-Linux-7.0-ALL
(357 B)
📄
config-Ubuntu-Linux-12.04-ALL
(413 B)
📄
config-Ubuntu-Linux-8.10-10.04.4
(405 B)
📄
config-cobalt-linux
(238 B)
📄
config-coherent-linux
(378 B)
📄
config-corel-linux
(230 B)
📄
config-debian-linux
(333 B)
📄
config-debian-linux-3.0
(360 B)
📄
config-debian-linux-3.1-5.9
(392 B)
📄
config-debian-linux-6.0-ALL
(398 B)
📄
config-freebsd
(246 B)
📄
config-freebsd-8-ALL
(423 B)
📄
config-generic-linux
(227 B)
📄
config-gentoo-linux
(328 B)
📄
config-hpux
(242 B)
📄
config-irix
(223 B)
📄
config-macos
(223 B)
📄
config-mandrake-linux
(338 B)
📄
config-msc-linux
(238 B)
📄
config-netbsd
(230 B)
📄
config-open-linux
(227 B)
📄
config-open-linux-3.1e
(374 B)
📄
config-openbsd
(230 B)
📄
config-openbsd-3.6-ALL
(212 B)
📄
config-openmamba-linux
(227 B)
📄
config-openserver
(223 B)
📄
config-osf1
(223 B)
📄
config-pardus-linux
(326 B)
📄
config-redhat-linux
(227 B)
📄
config-redhat-linux-13.1-19.0
(379 B)
📄
config-redhat-linux-20.0-23.0
(384 B)
📄
config-redhat-linux-24.0-ALL
(387 B)
📄
config-redhat-linux-6.0-6.2
(238 B)
📄
config-redhat-linux-7.0-13.0
(378 B)
📄
config-slackware-linux
(233 B)
📄
config-slackware-linux-4.0
(239 B)
📄
config-slackware-linux-7.1-ALL
(238 B)
📄
config-sol-linux
(258 B)
📄
config-solaris
(223 B)
📄
config-suse-linux
(238 B)
📄
config-suse-linux-7.1-7.3
(236 B)
📄
config-suse-linux-8.0
(361 B)
📄
config-suse-linux-8.2-9.1
(374 B)
📄
config-suse-linux-9.2-ALL
(377 B)
📄
config-trustix-linux
(359 B)
📄
config-turbo-linux
(227 B)
📄
config-united-linux
(361 B)
📄
config-unixware
(259 B)
📄
config.info
(1.32 KB)
📄
config.info.ca
(1.46 KB)
📄
config.info.cs
(1.19 KB)
📄
config.info.da
(1.12 KB)
📄
config.info.de
(1.38 KB)
📄
config.info.es
(457 B)
📄
config.info.fa
(1.72 KB)
📄
config.info.fr
(1.14 KB)
📄
config.info.ja
(1.29 KB)
📄
config.info.nl
(1.34 KB)
📄
config.info.no
(1.32 KB)
📄
config.info.pl
(1.37 KB)
📄
config.info.pt_BR
(1.34 KB)
📄
config.info.ru
(1.06 KB)
📄
config.info.sk
(1.26 KB)
📄
config.info.sv
(345 B)
📄
config.info.tr
(201 B)
📄
config.info.uk
(1.11 KB)
📄
config.info.zh
(160 B)
📄
confirm_delete.cgi
(3.03 KB)
📄
defaultacl
(221 B)
📄
delete_all.cgi
(2.02 KB)
📄
delete_hosts.cgi
(1.57 KB)
📄
delete_leases.cgi
(1.04 KB)
📄
delete_subnets.cgi
(1.58 KB)
📄
dhcpd-lib.pl
(26.23 KB)
📄
edit_group.cgi
(7.14 KB)
📄
edit_host.cgi
(10.03 KB)
📄
edit_iface.cgi
(3.44 KB)
📄
edit_keys.cgi
(1.61 KB)
📄
edit_options.cgi
(9.07 KB)
📄
edit_pool.cgi
(3.32 KB)
📄
edit_shared.cgi
(5.64 KB)
📄
edit_subnet.cgi
(6.48 KB)
📄
edit_text.cgi
(869 B)
📄
edit_zones.cgi
(1.8 KB)
📁
help
📁
images
📄
index.cgi
(20.24 KB)
📄
install_check.pl
(557 B)
📁
lang
📄
list_leases.cgi
(9.83 KB)
📄
log_parser.pl
(1003 B)
📄
lookup_group.cgi
(1.02 KB)
📄
lookup_host.cgi
(2.1 KB)
📄
lookup_shared.cgi
(915 B)
📄
lookup_subnet.cgi
(969 B)
📄
mac-vendor.txt
(662.66 KB)
📄
module.info
(464 B)
📄
module.info.af
(0 B)
📄
module.info.af.auto
(118 B)
📄
module.info.ar
(0 B)
📄
module.info.ar.auto
(179 B)
📄
module.info.be
(0 B)
📄
module.info.be.auto
(173 B)
📄
module.info.bg
(0 B)
📄
module.info.bg.auto
(172 B)
📄
module.info.ca
(102 B)
📄
module.info.ca.auto
(14 B)
📄
module.info.cs
(20 B)
📄
module.info.cs.auto
(100 B)
📄
module.info.da
(0 B)
📄
module.info.da.auto
(118 B)
📄
module.info.de
(110 B)
📄
module.info.de.auto
(14 B)
📄
module.info.el
(0 B)
📄
module.info.el.auto
(202 B)
📄
module.info.es
(25 B)
📄
module.info.es.auto
(97 B)
📄
module.info.eu
(0 B)
📄
module.info.eu.auto
(134 B)
📄
module.info.fa
(0 B)
📄
module.info.fa.auto
(166 B)
📄
module.info.fi
(0 B)
📄
module.info.fi.auto
(125 B)
📄
module.info.fr
(21 B)
📄
module.info.fr.auto
(106 B)
📄
module.info.he
(0 B)
📄
module.info.he.auto
(149 B)
📄
module.info.hr
(0 B)
📄
module.info.hr.auto
(136 B)
📄
module.info.hu
(0 B)
📄
module.info.hu.auto
(152 B)
📄
module.info.it
(0 B)
📄
module.info.it.auto
(108 B)
📄
module.info.ja
(23 B)
📄
module.info.ja.auto
(138 B)
📄
module.info.ko
(21 B)
📄
module.info.ko.auto
(112 B)
📄
module.info.lt
(0 B)
📄
module.info.lt.auto
(135 B)
📄
module.info.lv
(0 B)
📄
module.info.lv.auto
(131 B)
📄
module.info.ms
(99 B)
📄
module.info.ms.auto
(14 B)
📄
module.info.mt
(0 B)
📄
module.info.mt.auto
(123 B)
📄
module.info.nl
(20 B)
📄
module.info.nl.auto
(97 B)
📄
module.info.no
(20 B)
📄
module.info.no.auto
(98 B)
📄
module.info.pl
(108 B)
📄
module.info.pl.auto
(14 B)
📄
module.info.pt
(25 B)
📄
module.info.pt.auto
(101 B)
📄
module.info.pt_BR
(0 B)
📄
module.info.pt_BR.auto
(132 B)
📄
module.info.ro
(0 B)
📄
module.info.ro.auto
(134 B)
📄
module.info.ru
(26 B)
📄
module.info.ru.auto
(147 B)
📄
module.info.sk
(20 B)
📄
module.info.sk.auto
(101 B)
📄
module.info.sl
(0 B)
📄
module.info.sl.auto
(134 B)
📄
module.info.sv
(20 B)
📄
module.info.sv.auto
(96 B)
📄
module.info.th
(0 B)
📄
module.info.th.auto
(264 B)
📄
module.info.tr
(22 B)
📄
module.info.tr.auto
(122 B)
📄
module.info.uk
(0 B)
📄
module.info.uk.auto
(187 B)
📄
module.info.ur
(0 B)
📄
module.info.ur.auto
(208 B)
📄
module.info.vi
(0 B)
📄
module.info.vi.auto
(125 B)
📄
module.info.zh
(22 B)
📄
module.info.zh.auto
(84 B)
📄
module.info.zh_TW
(26 B)
📄
module.info.zh_TW.auto
(90 B)
📄
params-lib.pl
(5.96 KB)
📄
prefs.info
(164 B)
📄
rbac-mapping
(69 B)
📄
restart.cgi
(364 B)
📄
save_group.cgi
(3.89 KB)
📄
save_host.cgi
(5.42 KB)
📄
save_iface.cgi
(3.54 KB)
📄
save_keys.cgi
(1.11 KB)
📄
save_options.cgi
(8.14 KB)
📄
save_pool.cgi
(2.51 KB)
📄
save_shared.cgi
(6.1 KB)
📄
save_subnet.cgi
(6.2 KB)
📄
save_text.cgi
(717 B)
📄
save_zones.cgi
(1.73 KB)
📄
start.cgi
(343 B)
📄
stop.cgi
(321 B)
Editing: save_subnet.cgi
#!/usr/bin/perl # save_subnet.cgi # Update, create or delete a subnet require './dhcpd-lib.pl'; require './params-lib.pl'; &ReadParse(); &lock_all_files(); ($par, $sub, $indent, $npar, $nindent) = get_branch('sub', $in{'new'}); $parconf = $par->{'members'}; # check acls %access = &get_module_acl(); &error_setup($text{'eacl_aviol'}); if ($in{'delete'}) { &error("$text{'eacl_np'} $text{'eacl_pds'}") if !&can('rw', \%access, $sub, 1); } elsif ($in{'options'}) { &error("$text{'eacl_np'} $text{'eacl_pss'}") if !&can('r', \%access, $sub); } elsif ($in{'new'}) { &error("$text{'eacl_np'} $text{'eacl_pis'}") unless &can('c', \%access, $sub) && &can('rw', \%access, $par) && (!$npar || &can('rw', \%access, $npar)); # restrict duplicates if ($access{'uniq_sub'}) { foreach $s (&get_subnets()) { &error("$text{'eacl_np'} $text{'eacl_uniq'}") if lc $s->{'values'}->[0] eq lc $in{'network'}; } } } elsif (!$in{'leases'}) { &error("$text{'eacl_np'} $text{'eacl_pus'}") unless &can('rw', \%access, $sub) && (!$npar || &can('rw', \%access, $npar)); } # save if ($in{'options'}) { # Redirect to client options &redirect("edit_options.cgi?sidx=$in{'sidx'}&idx=$in{'idx'}"); exit; } elsif ($in{'leases'}) { # Redirect to lease list for subnet &redirect("list_leases.cgi?network=$sub->{'values'}->[0]&netmask=$sub->{'values'}->[2]"); exit; } else { if ($in{'delete'}) { &error_setup($text{'ssub_faildel'}); if ($par->{'name'} eq "shared-network") { @subnets = &find("subnet", $par->{'members'}); if (@subnets < 2) { &error(&text('ssub_nosubnet', $par->{'values'}->[0])); } } } else { &error_setup($text{'ssub_failsave'}); # Validate and save inputs &to_ipaddress($in{'network'}) || &error("'$in{'network'}' $text{'ssub_invalidsubaddr'}"); &check_ipaddress($in{'netmask'}) || &error("'$in{'netmask'}' $text{'ssub_invalidnmask'}"); $oldnetwork = $sub->{'values'}->[0]; $sub->{'values'} = [ $in{'network'}, "netmask", $in{'netmask'} ]; } @wasin = &find("host", $sub->{'members'}); foreach $hn (split(/\0/, $in{'hosts'})) { if ($hn =~ /(\d+),(\d+)/) { push(@nowin, $parconf->[$2]->{'members'}->[$1]); $nowpr{$parconf->[$2]->{'members'}->[$1]} = $parconf->[$2]; } elsif ($hn =~ /(\d+),/) { push(@nowin, $parconf->[$1]); $nowpr{$parconf->[$1]} = $par; } if ($nowin[$#nowin]->{'name'} ne "host") { &error($text{'sgroup_echanged'}); } } @wasgin = &find("group", $sub->{'members'}); foreach $gn (split(/\0/, $in{'groups'})) { if ($gn =~ /(\d+),(\d+)/) { push(@nowgin, $parconf->[$2]->{'members'}->[$1]); $nowgpr{$parconf->[$2]->{'members'}->[$1]} = $parconf->[$2]; } elsif ($gn =~ /(\d+),/) { push(@nowgin, $parconf->[$1]); $nowgpr{$parconf->[$1]} = $par; } if ($nowgin[$#nowgin]->{'name'} ne "group") { &error($text{'sgroup_echanged'}); } } &error_setup($text{'eacl_aviol'}); foreach $h (&unique(@wasin, @nowin)) { $was = &indexof($h, @wasin) != -1; $now = &indexof($h, @nowin) != -1; # per-host ACLs for new or updated hosts if ($was != $now && !&can('rw', \%access, $h)) { &error("$text{'eacl_np'} $text{'eacl_pus'}"); } if ($was && !$now) { # Move out of the subnet &save_directive($sub, [ $h ], [ ], $indent); &save_directive($par, [ ], [ $h ], $indent); } elsif ($now && !$was) { # Move into the subnet (maybe from another subnet) &save_directive($nowpr{$h}, [ $h ], [ ], $indent); &save_directive($sub, [ ], [ $h ], $indent + 1); } } foreach $g (&unique(@wasgin, @nowgin)) { $was = &indexof($g, @wasgin) != -1; $now = &indexof($g, @nowgin) != -1; # per-group ACLs for new or updated groups if ($was != $now && !&can('rw', \%access, $g)) { &error("$text{'eacl_np'} $text{'eacl_pus'}"); } if ($was && !$now) { # Move out of the subnet &save_directive($sub, [ $g ], [ ], $indent); &save_directive($par, [ ], [ $g ], $indent); } elsif ($now && !$was) { # Move into the subnet (maybe from another subnet) &save_directive($nowgpr{$g}, [ $g ], [ ], $indent); &save_directive($sub, [ ], [ $g ], $indent + 1); } } if (!$in{'delete'}) { &error_setup($text{'ssub_failsave'}); for($i=0; defined($low = $in{"range_low_$i"}); $i++) { next if (!$low); $hi = $in{"range_hi_$i"}; $dyn = $in{"range_dyn_$i"}; &check_ipaddress($low) || &error("'$low' $text{'ssub_invalidipr'}"); !$hi || &check_ipaddress($hi) || &error("'$hi' $text{'ssub_invalidipr'}"); $rng = { 'name' => 'range', 'values' => [ ($dyn ? "dynamic-bootp" : ()), $low, ($hi ? $hi : ()) ] }; push(@rng, $rng); } &save_directive($sub, "range", \@rng, 1); $sub->{'comment'} = $in{'desc'}; &parse_params($sub, 0); if (!npar || $in{'assign'} > 0 && $npar->{'name'} ne "shared-network") { &error($text{'sgroup_echanged'}); } if ($in{'new'}) { # save acl for new network &save_dhcpd_acl('rw','sub',\%access,$in{'network'}); # Add to the end of the parent structure &save_directive($npar, [ ], [ $sub ], $nindent); } elsif ($par eq $npar) { # Update the subnet in the current parent &save_directive($par, [ $sub ], [ $sub ], $nindent); if ($in{'network'} ne $oldnetwork) { # Fix the ACL &drop_dhcpd_acl('sub', \%access, $oldnetwork); &save_dhcpd_acl('rw','sub',\%access, $in{'network'}); } } else { # Move the subnet if ($par->{'name'} eq "shared-network") { @subnets = &find("subnet", $par->{'members'}); if (@subnets < 2) { &error(&text('ssub_nosubnet', $par->{'values'}->[0])); } } &save_directive($par, [ $sub ], [ ], 0); &save_directive($npar, [ ], [ $sub ], $nindent); } } } &flush_file_lines(); if ($in{'delete'}) { # Delete this subnet if ($in{'hosts'} eq "" && $in{'groups'} eq "") { &drop_dhcpd_acl('sub', \%access, $sub->{'values'}->[0]); &save_directive($par, [ $sub ], [ ], 0); &flush_file_lines(); } else { &unlock_all_files(); &redirect("confirm_delete.cgi?sidx=$in{'sidx'}&idx=$in{'idx'}" ."\&type=1"); exit; } } &unlock_all_files(); &webmin_log($in{'delete'} ? 'delete' : $in{'new'} ? 'create' : 'modify', 'subnet', "$sub->{'values'}->[0]/$sub->{'values'}->[2]", \%in); &redirect($in{'ret'} eq "shared" ? "edit_shared.cgi?idx=$in{'sidx'}" : "");
Upload File
Create Folder