3 # Save, create or delete a dialer configuration
5 require './ppp-client-lib.pl';
8 $dialer = $conf->[$in{'idx'}] if (!$in{'new'});
10 &lock_file($config{'file'});
12 # Check for any dependencies?
13 &error_setup($text{'save_err2'});
15 if (lc($c->{'values'}->{'inherits'}) eq lc($dialer->{'name'})) {
16 &error(&text('save_einherits',
17 &dialer_name($c->{'name'})));
21 # Just delete this dialer
22 &delete_dialer($dialer);
25 # Validate and store basic inputs
26 &error_setup($text{'save_err'});
27 if (defined($in{'dialer'})) {
28 $in{'dialer'} =~ /^[^\[\]]+$/ || &error($text{'save_ename'});
29 $dialer->{'name'} = "Dialer $in{'dialer'}";
31 elsif (defined($in{'name'})) {
32 $in{'name'} =~ /^[^\[\]]+$/ || &error($text{'save_ename'});
33 $dialer->{'name'} = $in{'name'};
35 local ($clash) = grep { lc($_->{'name'}) eq
36 lc($dialer->{'name'}) } @$conf;
37 if ($clash && $clash ne $dialer) {
38 &error($text{'save_eclash'});
40 &parse_opt("Phone", \&check_phone, $text{'save_ephone'});
41 &parse_opt("Username");
42 &parse_opt("Password");
43 &parse_opt("Dial Prefix", \&check_phone, $text{'save_eprefix'});
44 &parse_yes_no("Stupid Mode");
45 for($i=1; $i<=4; $i++) {
46 local $other = $in{"other_$i"};
48 &set_config("Phone$i");
51 &check_phone($other) || &error(&text('save_eother',$i));
52 &set_config("Phone$i", $other);
55 &set_config("Inherits", $in{'inherits_def'} ? undef : $in{'inherits'});
57 # Validate and store modem options
58 if ($in{'modem'} eq '*') {
59 -r $in{'otherm'} || &error($text{'save_eotherm'});
60 &set_config("Modem", $in{'otherm'});
62 elsif ($in{'modem'} eq '') {
66 &set_config("Modem", $in{'modem'});
68 &parse_opt("Baud", \&check_number, $text{'save_ebaud'});
69 for($i=1; $i<=9; $i++) {
70 if ($in{"init_$i"} eq '') {
71 &set_config("Init$i");
74 &set_config("Init$i", $in{"init_$i"});
77 &parse_yes_no("Carrier Check");
78 &parse_yes_no("Abort on Busy");
79 &parse_opt("Dial Attempts", \&check_number, $text{'save_edial'});
80 &parse_yes_no("Abort on No Dialtone");
82 # Store networking options
83 &parse_yes_no("Auto DNS");
84 &parse_yes_no("Auto Reconnect");
85 &parse_opt("Idle Seconds", \&check_number, $text{'save_eidle'});
87 # Create or update the dialer
89 &create_dialer($dialer);
92 &update_dialer($dialer);
95 &unlock_file($config{'file'});
96 delete($dialer->{'values'}->{'password'});
97 &webmin_log($in{'new'} ? "create" : $in{'delete'} ? "delete" : "update",
98 "dialer", $dialer->{'name'}, $dialer->{'values'});
101 # parse_opt(name, [checker, error])
104 local $n = lc("$_[0]");
105 if ($in{$n."_def"}) {
110 !$func || &$func($in{$n}) || &error($_[2]);
111 &set_config($_[0], $in{$n});
118 local $n = lc("$_[0]");
120 &set_config($_[0], "on");
122 elsif ($in{$n} == 0) {
123 &set_config($_[0], "off");
130 # set_config(name, [value])
133 local $n = lc("$_[0]");
134 if (defined($_[1])) {
135 $dialer->{'values'}->{$n} = $_[1];
136 $dialer->{'onames'}->{$n} = $_[0];
139 delete($dialer->{'values'}->{$n});
140 delete(dialer->{'onames'}->{$n});
146 return $_[0] =~ /^[0-9 \+\*\#A-Z]+$/;
151 return $_[0] =~ /^\d+$/;