#!/usr/local/bin/perl # edit_options.cgi # Edit client options for some subnet, shared net, group, host or global require './dhcpd-lib.pl'; require './params-lib.pl'; &ReadParse(); $conf = &get_config(); %access = &get_module_acl(); &error_setup($text{'eacl_aviol'}); $client = &get_parent_config(); push(@parents, $client); foreach $i ($in{'sidx'}, $in{'uidx'}, $in{'gidx'}, $in{'idx'}) { $client = $client->{'members'}->[$i] if ($i ne ''); push(@parents, $client); } if ($client->{'name'} eq 'subnet') { $title = &text('eopt_subtitle',$client->{'values'}->[0]); $back = $text{'eopt_returnsub'}; $backlink = "edit_subnet.cgi"; &error("$text{'eacl_np'} $text{'eacl_pss'}") if !&can('r',\%access,$client); } elsif ($client->{'name'} eq 'shared-network') { $title = &text('eopt_snettitle',$client->{'values'}->[0]); $back = $text{'eopt_returnshsub'}; $backlink = "edit_shared.cgi"; &error("$text{'eacl_np'} $text{'eacl_psn'}") if !&can('r',\%access,$client); } elsif ($client->{'name'} eq 'host') { $title = &text('eopt_hosttitle',$client->{'values'}->[0]); $back = $text{'eopt_returnhost'}; $backlink = "edit_host.cgi"; &error("$text{'eacl_np'} $text{'eacl_psh'}") if !&can('r',\%access,$client); } elsif ($client->{'name'} eq 'group') { @mc = &find("host", $client->{'members'}); $title = &text('eopt_grouptitle',scalar(@mc)); $back = $text{'eopt_returngroup'}; $backlink = "edit_group.cgi"; &error("$text{'eacl_np'} $text{'eacl_psg'}") if !&can('r',\%access,$client); } else { $title = $text{'eopt_alltitle'}; $back = $text{'eopt_returnindex'}; $backlink = ""; &error("$text{'eacl_np'} $text{'eacl_pglob'}") if !$access{'global'}; } # display $backlink .= "?idx=".$in{'idx'}."&gidx=".$in{'gidx'}."&uidx=".$in{'uidx'}. "&sidx=".$in{'sidx'} if (backlink); &ui_print_header($title, $text{'eopt_header'}, ""); print "
\n" if &can('rw',\%access,$client); &ui_print_footer($backlink, $back); # option_input(text, name, &config, type, [initial-boolean]) # types values: 0 - IP address # 1 - Integer # 2 - IP address list # 3 - String # 4 - Yes/no flag # 5 - IP address pairs # 6 - String list sub option_input { local($rv, $v, $i); for($i=0; $i<@{$_[2]}; $i++) { if ($_[2]->[$i]->{'values'}->[0] eq $_[1]) { $v = $_[2]->[$i]; last; } } $rv = "