mirror of
https://github.com/webmin/webmin.git
synced 2025-07-23 00:30:33 +00:00
97 lines
3.1 KiB
Perl
Executable File
97 lines
3.1 KiB
Perl
Executable File
#!/usr/local/bin/perl
|
|
# save_options.cgi
|
|
# Save PPP options
|
|
|
|
require './pap-lib.pl';
|
|
$access{'options'} || &error($text{'options_ecannot'});
|
|
&ReadParse();
|
|
&error_setup($text{'options_err'});
|
|
$file = $in{'file'} || $config{'ppp_options'};
|
|
&lock_file($file);
|
|
@opts = &parse_ppp_options($file);
|
|
|
|
# Validate inputs
|
|
if (!$in{'ip_def'}) {
|
|
&check_ipaddress($in{'local'}) || &error($text{'options_elocal'});
|
|
&check_ipaddress($in{'remote'}) || &error($text{'options_eremote'});
|
|
}
|
|
if (!$in{'netmask_def'}) {
|
|
&check_ipaddress($in{'netmask'}) || &error($text{'options_enetmask'});
|
|
}
|
|
if (!$in{'idle_def'}) {
|
|
$in{'idle'} =~ /^\d+$/ || &error($text{'options_eidle'});
|
|
}
|
|
@dns = split(/\s+/, $in{'dns'});
|
|
foreach $d (@dns) {
|
|
&check_ipaddress($d) || &error(&text('options_edns', $d));
|
|
}
|
|
|
|
if (!$in{'file'}) {
|
|
# Save AutoPPP setting
|
|
&lock_file($config{'login_config'});
|
|
@login = &parse_login_config();
|
|
($auto) = grep { $_->{'user'} eq "/AutoPPP/" } @login;
|
|
if ($auto && !$in{'auto'}) {
|
|
# Delete AutoPPP entry
|
|
&delete_login_config(\@login, $auto);
|
|
}
|
|
elsif (!$auto && $in{'auto'}) {
|
|
&create_login_config(\@login,
|
|
{ 'user' => '/AutoPPP/', 'userid' => '-',
|
|
'utmp' => 'a_ppp', 'program' => &has_command("pppd") });
|
|
}
|
|
}
|
|
|
|
# Save PPP options
|
|
($ip) = grep { $_->{'local'} } @opts;
|
|
&save_ppp_option(\@opts, $file, $ip, $in{'ip_def'} ? undef :
|
|
{ 'local' => $in{'local'}, 'remote' => $in{'remote'} });
|
|
&save_ppp_option(\@opts, $file, "netmask", $in{'netmask_def'} ? undef :
|
|
{ 'name' => 'netmask', 'value' => $in{'netmask'} });
|
|
&save_ppp_option(\@opts, $file, "proxyarp",
|
|
$in{'proxyarp'} ? { 'name' => 'proxyarp' } : undef);
|
|
&save_ppp_option(\@opts, $file, "lock",
|
|
$in{'lock'} ? { 'name' => 'lock' } : undef);
|
|
if ($in{'ctrl'} == 0) {
|
|
&save_ppp_option(\@opts, $file, "modem", undef);
|
|
&save_ppp_option(\@opts, $file, "local", { 'name' => 'local' });
|
|
}
|
|
elsif ($in{'ctrl'} == 1) {
|
|
&save_ppp_option(\@opts, $file, "local", undef);
|
|
&save_ppp_option(\@opts, $file, "modem", { 'name' => 'modem' });
|
|
}
|
|
else {
|
|
&save_ppp_option(\@opts, $file, "modem", undef);
|
|
&save_ppp_option(\@opts, $file, "local", undef);
|
|
}
|
|
if ($in{'auth'} == 0) {
|
|
&save_ppp_option(\@opts, $file, "auth", undef);
|
|
&save_ppp_option(\@opts, $file, "noauth", undef);
|
|
}
|
|
elsif ($in{'auth'} == 1) {
|
|
&save_ppp_option(\@opts, $file, "auth", undef);
|
|
&save_ppp_option(\@opts, $file, "noauth", { 'name' => 'noauth' });
|
|
}
|
|
else {
|
|
&save_ppp_option(\@opts, $file, "noauth", undef);
|
|
&save_ppp_option(\@opts, $file, "auth", { 'name' => 'auth' });
|
|
}
|
|
&save_ppp_option(\@opts, $file, "login",
|
|
$in{'login'} ? { 'name' => 'login' } : undef);
|
|
&save_ppp_option(\@opts, $file, "idle", $in{'idle_def'} ? undef :
|
|
{ 'name' => 'idle', 'value' => $in{'idle'} } );
|
|
@olddns = &find("ms-dns", \@opts);
|
|
for($i=0; $i<@dns || $i<@olddns; $i++) {
|
|
&save_ppp_option(\@opts, $file, $olddns[$i],
|
|
$dns[$i] ? { 'name' => 'ms-dns', 'value' => $dns[$i] }
|
|
: undef);
|
|
}
|
|
|
|
# All done
|
|
&flush_file_lines();
|
|
&unlock_file($file);
|
|
&unlock_file($config{'login_config'}) if (!$in{'file'});
|
|
&webmin_log("options", undef, $in{'tty'}, \%in);
|
|
&redirect($in{'file'} ? "list_mgetty.cgi" : "");
|
|
|