Server IP : 195.201.23.43 / Your IP : 3.22.248.193 Web Server : Apache System : Linux webserver2.vercom.be 5.4.0-192-generic #212-Ubuntu SMP Fri Jul 5 09:47:39 UTC 2024 x86_64 User : kdecoratie ( 1041) PHP Version : 7.1.33-63+ubuntu20.04.1+deb.sury.org+1 Disable Function : pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals, MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : OFF | Sudo : ON | Pkexec : ON Directory : /usr/share/webmin/nis/ |
Upload File : |
# Common NIS server functions for Linux # show_server_security() # Show NIS server security-related options sub show_server_security { local ($opts, $hosts) = &parse_ypserv_conf(); # Show port checking option local $port = $opts->{'xfr_check_port'} ? $opts->{'xfr_check_port'}->{'value'} : 1; print "<tr> <td><b>$text{'security_port'}</b></td>\n"; printf "<td><input type=radio name=port value=1 %s> %s\n", $port ? 'checked' : '', $text{'yes'}; printf "<input type=radio name=port value=0 %s> %s</td> </tr>\n", $port ? '' : 'checked', $text{'no'}; # Work out if the new (with domains) or old format is in use local ($newfmt) = grep { $_->{'domain'} } @$hosts; print &ui_hidden("format", $newfmt ? 1 : 0),"\n"; local $table; if ($newfmt) { # Generate new format table $table .= &ui_columns_start([ $text{'security_hosts'}, $text{'security_domain'}, $text{'security_map'}, $text{'security_sec'}, $text{'security_mangle'} ]); local $i = 0; foreach $h (@$hosts, { 'map' => '*' }) { local @cols; push(@cols, &ui_radio("host_def_$i", $h->{'host'} eq '*' ? 2 : $h->{'host'} ? 0 : 1, [ [ 1, $text{'security_none'} ], [ 2, $text{'security_any'} ], [ 0, &ui_textbox("host_$i", $h->{'host'} eq '*' ? undef : $h->{'host'}, 20) ] ])); push(@cols, &ui_opt_textbox("domain_$i", $h->{'domain'} eq '*' ? undef : $h->{'domain'}, 20, $text{'security_tall'})); push(@cols, &ui_radio("map_def_$i", $h->{'map'} eq '*' ? 1 : 0, [ [ 1, $text{'security_tall'} ], [ 0, &ui_textbox("map_$i", $h->{'map'} eq '*' ? undef : $h->{'map'}, 20) ] ])); push(@cols, &ui_select("sec_$i", $h->{'sec'}, [ [ "none", $text{'security_sec_none'} ], [ "port", $text{'security_sec_port'} ], [ "deny", $text{'security_sec_deny'} ] ])); push(@cols, &ui_opt_textbox("mangle_$i", !$h->{'mangle'} ? undef : $h->{'field'} ? $h->{'field'} : 2, 5, $text{'security_none'})); $table .= &ui_columns_row(\@cols); $i++; } } else { # Generate old format table $table .= &ui_columns_start([ $text{'security_hosts'}, $text{'security_map'}, $text{'security_sec'}, $text{'security_mangle'} ]); local $i = 0; foreach $h (@$hosts, { 'map' => '*' }) { local @cols; push(@cols, &ui_radio("host_def_$i", $h->{'host'} eq '*' ? 2 : $h->{'host'} ? 0 : 1, [ [ 1, $text{'security_none'} ], [ 2, $text{'security_any'} ], [ 0, &ui_textbox("host_$i", $h->{'host'} eq '*' ? undef : $h->{'host'}, 20) ] ])); push(@cols, &ui_radio("map_def_$i", $h->{'map'} eq '*' ? 1 : 0, [ [ 1, $text{'security_tall'} ], [ 0, &ui_textbox("map_$i", $h->{'map'} eq '*' ? undef : $h->{'map'}, 20) ] ])); push(@cols, &ui_select("sec_$i", $h->{'sec'}, [ [ "none", $text{'security_sec_none'} ], [ "port", $text{'security_sec_port'} ], [ "deny", $text{'security_sec_deny'} ], [ "des", $text{'security_sec_des'} ] ])); push(@cols, &ui_radio("mangle_$i", $h->{'mangle'} ? 1 : 0, [ [ 0, $text{'security_none'} ], [ 1, &ui_textbox("field_$i", $h->{'field'}, 4) ] ])); $table .= &ui_columns_row(\@cols); $i++; } $table .= &ui_columns_end(); } print "<tr> <td colspan=2><b>$text{'security_maps'}</b><br>\n"; print "$table</td> </tr>\n"; print "</table></td> </tr>\n"; } # parse_server_security() # Save and apply server security options sub parse_server_security { # Save security settings local ($opts, $hosts) = &parse_ypserv_conf(); local $lref = &read_file_lines($ypserv_conf); local $xfr = $opts->{'xfr_check_port'}; local $line = $in{'port'} ? 'xfr_check_port: yes' : 'xfr_check_port: no'; if ($xfr) { $lref->[$xfr->{'line'}] = $line; } else { push(@$lref, $line); } # Save host restrictions local ($i, $j, $offset); for($i=0; defined($in{"host_$i"}); $i++) { local @line; next if ($in{"host_def_$i"} == 1); $in{"host_def_$i"} == 2 || $in{"host_$i"} =~ /^[^:\s]+$/ || &error(&text('security_ehost', $in{"host_$i"})); $in{"map_def_$i"} || $in{"map_$i"} =~ /^[^:\s]+$/ || &error(&text('security_emap', $in{"map_$i"})); if ($in{'format'} == 1) { # New format, including domain $in{"domain_${i}_def"} || $in{"domain_$i"} =~ /^[^:\s]+$/ || &error(&text('security_edomain', $in{"domain_$i"})); $in{"mangle_${i}_def"} || $in{"mangle_$i"} =~ /^\d+$/ || &error(&text('security_efield', $in{"mangle_$i"})); @line = ( $in{"host_def_$i"} == 2 ? "*" : $in{"host_$i"}, $in{"domain_${i}_def"} ? "*" : $in{"domain_$i"}, $in{"map_def_$i"} ? "*" : $in{"map_$i"}, $in{"sec_$i"}. ($in{"mangle_${i}_def"} ? "" : "/mangle:".$in{"mangle_$i"}) ); } else { # Old format $in{"field_$i"} =~ /^\d*$/ || &error(&text('security_efield', $in{"field_$i"})); @line = ( $in{"host_def_$i"} == 2 ? "*" : $in{"host_$i"}, $in{"map_def_$i"} ? "*" : $in{"map_$i"}, $in{"sec_$i"}, $in{"mangle_$i"} ? "yes" : "no" ); push(@line, $in{"field_$i"}) if ($in{"field_$i"} && $in{"field_$i"} != 2); } local $old = $hosts->[$j++]; if ($old) { $lref->[$old->{'line'}] = join(":", @line); } else { push(@$lref, join(":", @line)); } } while($hosts->[$j]) { splice(@$lref, $hosts->[$j]->{'line'}-$offset, 1); $j++; $offset++; } &flush_file_lines(); # Apply the changes local $pid = &check_pid_file($pid_file); &kill_logged('HUP', $pid) if ($pid); }Private