diff options
-rw-r--r-- | perl-install/network/modem.pm | 31 | ||||
-rw-r--r-- | perl-install/network/netconnect.pm | 148 | ||||
-rw-r--r-- | perl-install/network/network.pm | 4 | ||||
-rw-r--r-- | perl-install/network/tools.pm | 16 |
4 files changed, 129 insertions, 70 deletions
diff --git a/perl-install/network/modem.pm b/perl-install/network/modem.pm index c8a9e4722..b466fabca 100644 --- a/perl-install/network/modem.pm +++ b/perl-install/network/modem.pm @@ -16,11 +16,27 @@ use Data::Dumper; sub configure { my ($netcnx, $mouse, $netc, $intf) = @_; $netcnx->{type} = 'modem'; + my $modem = $netcnx->{$netcnx->{type}}; # $netcnx->{$netcnx->{type}} = {}; -# $netcnx->{modem}{device} = $netc->{autodetect}{modem}; + $modem->{device} = $netc->{autodetect}{modem}; # modem_step_1: - $netcnx->{$netcnx->{type}}{login} = ($netcnx->{$netcnx->{type}}{auth} eq 'PAP' || $netcnx->{$netcnx->{type}}{auth} eq 'CHAP') && $intf->{ppp0}{PAPNAME}; - pppConfig($netcnx->{$netcnx->{type}}, $mouse, $netc, $intf) or return; +# $modem->{login} = ($modem->{auth} eq 'PAP' ||$modem->{auth} eq 'CHAP') && $intf->{ppp0}{PAPNAME}; +# $netcnx->{$netcnx->{type}}->{connection} = ($netcnx->{$netcnx->{type}}->{auth} eq 'PAP' || $netcnx->{$netcnx->{type}}->{auth} eq 'CHAP') && $intf->{ppp0}{PAPNAME}; +# $modem->{device} = readlink "$prefix/dev/modem"; + foreach (cat_("/usr/share/config/kppprc")) { + /^DNS=(.*)$/ and ($modem->{dns1}, $modem->{dns2}) = split (',', $1); + } + my $secret = network::tools::read_secret_backend(); + foreach (@$secret) { + $modem->{passwd} = $_->{passwd} if ($_->{login} eq $modem->{login}); + } + foreach (cat_("/etc/sysconfig/network-scripts/chat-ppp0")) { + if (/.*ATDT(\d*).*/) { + $modem->{phone} = $1; + last; + } + } + pppConfig($modem, $mouse, $netc, $intf) or return; write_cnx_script($netc, "modem", q( /sbin/route del default @@ -34,17 +50,22 @@ killall pppd sub pppConfig { my ($modem, $mouse, $netc, $intf) = @_; - $mouse ||= {}; + $mouse->{device} ||= readlink "$prefix/dev/mouse"; $::isInstall and $in->set_help('selectSerialPort'); $modem->{device} ||= $in->ask_from_listf('', N("Please choose which serial port your modem is connected to."), \&mouse::serial_port2text, [ grep { $_ ne $mouse->{device} } (mouse::serial_ports(), if_(-e '/dev/modem', '/dev/modem')) ]) || return; + my @cnx_list; + my $secret = network::tools::read_secret_backend(); + foreach (@$secret) { + push @cnx_list, $_->{server}; + } $::isStandalone || $in->set_help('configureNetworkISP'); $in->ask_from('', N("Dialup options"), [ -{ label => N("Connection name"), val => \$modem->{connection} }, +{ label => N("Connection name"), val => \$modem->{connection}}, { label => N("Phone number"), val => \$modem->{phone} }, { label => N("Login ID"), val => \$modem->{login} }, { label => N("Password"), val => \$modem->{passwd}, hidden => 1 }, diff --git a/perl-install/network/netconnect.pm b/perl-install/network/netconnect.pm index 6409ba791..d9c7690f7 100644 --- a/perl-install/network/netconnect.pm +++ b/perl-install/network/netconnect.pm @@ -123,7 +123,7 @@ sub main { $::isStandalone and read_net_conf($prefix, $netcnx, $netc); # REDONDANCE with intro. FIXME $netc->{NET_DEVICE} = $netcnx->{NET_DEVICE} if $netcnx->{NET_DEVICE}; # REDONDANCE with read_conf. FIXME $netc->{NET_INTERFACE} = $netcnx->{NET_INTERFACE} if $netcnx->{NET_INTERFACE}; # REDONDANCE with read_conf. FIXME - network::read_all_conf($prefix, $netc ||= {}, $intf ||= {}); + network::network::read_all_conf($prefix, $netc ||= {}, $intf ||= {}); modules::mergein_conf("$prefix/etc/modules.conf"); @@ -178,7 +178,7 @@ If you don't want to use the auto detection, deselect the checkbox. my %conf; $conf{$_} = $netc->{autodetect}{$_} ? 1 : 0 foreach 'modem', 'winmodem', 'adsl', 'cable', 'lan'; $conf{isdn} = $netc->{autodetect}{isdn}{description} ? 1 : 0; - my @l; + my %l; # my @l = ( # [N("Normal modem connection"), $netc->{autodetect}{modem}, N_("detected on port %s"), \$conf{modem}], # [N("ISDN connection"), $netc->{autodetect}{isdn}{description}, N_("detected %s"), \$conf{isdn}], @@ -188,27 +188,49 @@ If you don't want to use the auto detection, deselect the checkbox. # ); my $i = 0; map { defined $set_default or do { $_->[1] and $set_default = $i }; $i++ } @l; +# my %l = ( +# 1 => [N("Normal modem connection") . if_($netc->{autodetect}{modem}, " - " . N("detected on port %s", $netc->{autodetect}{modem})), "modem"], +# 2 => [N("Winmodem connection") . if_($netc->{autodetect}{winmodem}, " - " . N("detected")), "winmodem"], +# 3 => [N("ISDN connection") . if_($netc->{autodetect}{isdn}{description}, " - " . N("detected %s", $netc->{autodetect}{isdn}{description})), "isdn"], +# 4 => [N("ADSL connection") . if_($netc->{autodetect}{adsl}, " - " . N("detected")), "adsl"], +# 5 => [N("Cable connection") . if_($netc->{autodetect}{cable}, " - " . N("cable connection detected")), "cable"], +# 6 => [N("LAN connection") . if_($netc->{autodetect}{lan}, " - " . N("ethernet card(s) detected")), "lan"] + +# ); + $::isInstall and $in->set_help('configureNetwork'); + my $tata; +# my $e = $in->ask_from(N("Network Configuration Wizard"), N("Choose the connection you want to configure"), +# [{ val => \$cnx_type, list => [sort keys %l], format => sub { $l{$_}[0] }, +# changed => sub { +# return if !$netc->{autodetection}; +# my $c = 0; +# #- $conf{adsl} and $c++; +# $conf{cable} and $c++; +# my $a = keys(%{$netc->{autodetect}{lan}}); +# 0 < $a && $a <= $c and $conf{lan} = undef; +# }}] +# ) or goto step_1; +# $conf{$l{$cnx_type}[1]} = 1; @l = ( -[N("Normal modem connection") . if_($netc->{autodetect}{modem}, " - " . N("detected on port %s", $netc->{autodetect}{modem})), \$conf{modem}], -[N("Winmodem connection") . if_($netc->{autodetect}{winmodem}, " - " . N("detected")), \$conf{winmodem}], -[N("ISDN connection") . if_($netc->{autodetect}{isdn}{description}, " - " . N("detected %s", $netc->{autodetect}{isdn}{description})), \$conf{isdn}], -[N("ADSL connection") . if_($netc->{autodetect}{adsl}, " - " . N("detected")), \$conf{adsl}], -[N("Cable connection") . if_($netc->{autodetect}{cable}, " - " . N("cable connection detected")), \$conf{cable}], -[N("LAN connection") . if_($netc->{autodetect}{lan}, " - " . N("ethernet card(s) detected")), \$conf{lan}] -); + [N("Normal modem connection") . if_($netc->{autodetect}{modem}, " - " . N("detected on port %s", $netc->{autodetect}{modem})), \$conf{modem}], + [N("Winmodem connection") . if_($netc->{autodetect}{winmodem}, " - " . N("detected")), \$conf{winmodem}], + [N("ISDN connection") . if_($netc->{autodetect}{isdn}{description}, " - " . N("detected %s", $netc->{autodetect}{isdn}{description})), \$conf{isdn}], + [N("ADSL connection") . if_($netc->{autodetect}{adsl}, " - " . N("detected")), \$conf{adsl}], + [N("Cable connection") . if_($netc->{autodetect}{cable}, " - " . N("cable connection detected")), \$conf{cable}], + [N("LAN connection") . if_($netc->{autodetect}{lan}, " - " . N("ethernet card(s) detected")), \$conf{lan}] + ); $::isInstall and $in->set_help('configureNetwork'); my $e = $in->ask_from(N("Network Configuration Wizard"), N("Choose the connection you want to configure"), [ map { { label => $_->[0], val => $_->[1], type => 'bool' } } @l ], changed => sub { return if !$netc->{autodetection}; my $c = 0; -#- $conf{adsl} and $c++; + #- $conf{adsl} and $c++; $conf{cable} and $c++; my $a = keys(%{$netc->{autodetect}{lan}}); 0 < $a && $a <= $c and $conf{lan} = undef; } ) or goto step_1; - load_conf($netcnx, $netc, $intf); $conf{modem} and do { pre_func("modem"); require network::modem; network::modem::configure($netcnx, $mouse, $netc, $intf) or goto step_2 }; $conf{winmodem} and do { pre_func("winmodem"); require network::modem; network::modem::winmodemConfigure($netc) or goto step_2 }; @@ -344,36 +366,33 @@ sub save_conf { my @all_cards = conf_network_card_backend($netc, $intf, undef, undef, undef, undef); $intf = { %$intf }; - output_with_perm("$prefix/etc/sysconfig/network-scripts/drakconnect_conf", 0600, - "SystemName=" . do { $netc->{HOSTNAME} =~ /([^\.]*)\./; $1 } . " -DomainName=" . do { $netc->{HOSTNAME} =~ /\.(.*)/; $1 } . " -InternetAccessType=" . do { if ($netcnx->{type}) { $netcnx->{type} } else { $netc->{GATEWAY} ? "lan" : "" } } . " -InternetInterface=" . ($netc->{GATEWAY} && (!$netcnx->{type} || $netcnx->{type} eq 'lan') ? $netc->{GATEWAYDEV} : $netcnx->{NET_INTERFACE}) . " -InternetGateway=$netc->{GATEWAY} -DNSPrimaryIP=$netc->{dnsServer} -DNSSecondaryIP=$netc->{dnsServer2} -DNSThirdIP=$netc->{dnsServer3} -AdminInterface= - -" . join ('', map { -"Eth${_}Known=" . ($intf->{"eth$_"}{DEVICE} eq "eth$_" ? 'true' : 'false') . " -Eth${_}IP=" . $intf->{"eth$_"}{IPADDR} . " -Eth${_}Mask=" . $intf->{"eth$_"}{NETMASK} . " -Eth${_}Mac= -Eth${_}BootProto=" . $intf->{"eth$_"}{BOOTPROTO} . " -Eth${_}OnBoot=" . $intf->{"eth$_"}{ONBOOT} . " -Eth${_}Hostname=$netc->{HOSTNAME} -Eth${_}HostAlias=" . do { $netc->{HOSTNAME} =~ /([^\.]*)\./; $1 } . " -Eth${_}Driver=$all_cards[$_][1] -Eth${_}Irq= -Eth${_}Port= -Eth${_}DHCPClient=" . ($intf->{"eth$_"}{BOOTPROTO} eq 'dhcp' ? $netcnx->{dhcp_client} : '') . " -Eth${_}DHCPServerName=" . ($intf->{"eth$_"}{BOOTPROTO} eq 'dhcp' ? $netc->{HOSTNAME} : '') . "\n" - } (0..9)) . -" - -ISDNDriver=$isdn->{driver} +# "SystemName=" . do { $netc->{HOSTNAME} =~ /([^\.]*)\./; $1 } . " +#DomainName=" . do { $netc->{HOSTNAME} =~ /\.(.*)/; $1 } . " +#InternetAccessType=" . do { if ($netcnx->{type}) { $netcnx->{type} } else { $netc->{GATEWAY} ? "lan" : "" } } . " +#InternetInterface=" . ($netc->{GATEWAY} && (!$netcnx->{type} || $netcnx->{type} eq 'lan') ? $netc->{GATEWAYDEV} : $netcnx->{NET_INTERFACE}) . " +# InternetGateway=$netc->{GATEWAY} +# DNSPrimaryIP=$netc->{dnsServer} +# DNSSecondaryIP=$netc->{dnsServer2} +# DNSThirdIP=$netc->{dnsServer3} +# AdminInterface= + +# " . join ('', map { +# "Eth${_}Known=" . ($intf->{"eth$_"}{DEVICE} eq "eth$_" ? 'true' : 'false') . " +# Eth${_}IP=" . $intf->{"eth$_"}{IPADDR} . " +# Eth${_}Mask=" . $intf->{"eth$_"}{NETMASK} . " +# Eth${_}Mac= +# Eth${_}BootProto=" . $intf->{"eth$_"}{BOOTPROTO} . " +# Eth${_}OnBoot=" . $intf->{"eth$_"}{ONBOOT} . " +# Eth${_}Hostname=$netc->{HOSTNAME} +# Eth${_}HostAlias=" . do { $netc->{HOSTNAME} =~ /([^\.]*)\./; $1 } . " +# Eth${_}Driver=$all_cards[$_][1] +# Eth${_}Irq= +# Eth${_}Port= +# Eth${_}DHCPClient=" . ($intf->{"eth$_"}{BOOTPROTO} eq 'dhcp' ? $netcnx->{dhcp_client} : '') . " +# Eth${_}DHCPServerName=" . ($intf->{"eth$_"}{BOOTPROTO} eq 'dhcp' ? $netc->{HOSTNAME} : '') . "\n" +# } (0..9)) . +"ISDNDriver=$isdn->{driver} ISDNDeviceType=$isdn->{type} ISDNIrq=$isdn->{irq} ISDNMem=$isdn->{mem} @@ -396,19 +415,22 @@ ISDNHomePhone=$isdn->{phone_in} ISDNLogin=$isdn->{login} ISDNPassword=$isdn->{passwd} ISDNConfirmPassword=$isdn->{passwd2} - -PPPInterfacesList= -PPPDevice=$modem->{device} +". +#PPPInterfacesList= +"PPPDevice=$modem->{device} PPPDeviceSpeed= PPPConnectionName=$modem->{connection} -PPPProviderPhone=$modem->{phone} -PPPProviderDomain=$modem->{domain} -PPPProviderDNS1=$modem->{dns1} -PPPProviderDNS2=$modem->{dns2} -PPPLogin=$modem->{login} -PPPPassword=$modem->{passwd} -PPPConfirmPassword=$modem->{passwd} -PPPAuthentication=$modem->{auth} +". +#PPPProviderPhone=$modem->{phone} +"PPPProviderDomain=$modem->{domain} +". +#PPPProviderDNS1=$modem->{dns1} +#PPPProviderDNS2=$modem->{dns2} +"PPPLogin=$modem->{login} +". +#PPPPassword=$modem->{passwd} +#PPPConfirmPassword=$modem->{passwd} +"PPPAuthentication=$modem->{auth} PPPSpecialCommand=" . ($netcnx->{type} eq 'isdn_external' ? $netcnx->{isdn_external}{special_command} : '') . " ADSLInterfacesList= @@ -502,9 +524,9 @@ sub load_conf { # /^DNSPrimaryIP=(.*)$/ and $netc->{dnsServer} = $1; # /^DNSSecondaryIP=(.*)$/ and $netc->{dnsServer2} = $1; # /^DNSThirdIP=(.*)$/ and $netc->{dnsServer3} = $1; - /^InternetAccessType=(.*)$/ and $netcnx->{type} = $1; - /^InternetInterface=(.*)$/ and $netcnx->{NET_INTERFACE} = $1; - /^InternetGateway=(.*)$/ and $netc->{GATEWAY} = $1; +# /^InternetAccessType=(.*)$/ and $netcnx->{type} = $1; +# /^InternetInterface=(.*)$/ and $netcnx->{NET_INTERFACE} = $1; +# /^InternetGateway=(.*)$/ and $netc->{GATEWAY} = $1; # /^SystemName=(.*)$/ and $system_name = $1; # /^DomainName=(.*)$/ and $domain_name = $1; # /^Eth([0-9])Known=true$/ and $intf->{"eth$1"}{DEVICE} = "eth$1"; @@ -534,15 +556,15 @@ sub load_conf { /^ISDNPassword=(.*)$/ and $isdn->{passwd} = $1; /^ISDNConfirmPassword=(.*)$/ and $isdn->{passwd2} = $1; - /^PPPDevice=(.*)$/ and $modem->{device} = $1; - /^PPPConnectionName=(.*)$/ and $modem->{connection} = $1; - /^PPPProviderPhone=(.*)$/ and $modem->{phone} = $1; - /^PPPProviderDomain=(.*)$/ and $modem->{domain} = $1; - /^PPPProviderDNS1=(.*)$/ and $modem->{dns1} = $1; - /^PPPProviderDNS2=(.*)$/ and $modem->{dns2} = $1; - #/^PPPLogin=(.*)$/ and $modem->{login} = $1; - /^PPPPassword=(.*)$/ and $modem->{passwd} = $1; - /^PPPAuthentication=(.*)$/ and $modem->{auth} = $1; + #/^PPPDevice=(.*)$/ and $modem->{device} = $1; + /^PPPConnectionName=(.*)$/ and $modem->{connection} = $1; # Keep this for futur multiple cnx support + #/^PPPProviderPhone=(.*)$/ and $modem->{phone} = $1; + /^PPPProviderDomain=(.*)$/ and $modem->{domain} = $1; # used only for kppp + #/^PPPProviderDNS1=(.*)$/ and $modem->{dns1} = $1; # be aware that this value is now extracted from kppprc file ONLY + #/^PPPProviderDNS2=(.*)$/ and $modem->{dns2} = $1; + /^PPPLogin=(.*)$/ and $modem->{login} = $1; + #/^PPPPassword=(.*)$/ and $modem->{passwd} = $1; + /^PPPAuthentication=(.*)$/ and $modem->{auth} = $1; # We keep this because system is configured the same for both PAP and CHAP. if (/^PPPSpecialCommand=(.*)$/) { $netcnx->{type} eq 'isdn_external' and $netcnx->{$netcnx->{type}}{special_command} = $1; } diff --git a/perl-install/network/network.pm b/perl-install/network/network.pm index 9043e9699..07aac0b62 100644 --- a/perl-install/network/network.pm +++ b/perl-install/network/network.pm @@ -239,14 +239,14 @@ sub dns { my $mask = masked_ip($ip); my @masked = masked_ip($ip) =~ $ip_regexp; $masked[3] = 2; - join ".", @masked; + join (".", @masked); } sub gateway { my ($ip) = @_; my @masked = masked_ip($ip) =~ $ip_regexp; $masked[3] = 1; - join ".", @masked; + join (".", @masked); } diff --git a/perl-install/network/tools.pm b/perl-install/network/tools.pm index 0c65bb854..f25e00c72 100644 --- a/perl-install/network/tools.pm +++ b/perl-install/network/tools.pm @@ -33,6 +33,22 @@ sub write_secret_backend { } } +sub read_secret_backend { + my $conf; + foreach my $i ("pap-secrets", "chap-secrets") { + foreach (cat_("$prefix/etc/ppp/$i")) { + my ($login, $server, $passwd) = split(' '); + ($a, $b, $c) = $passwd =~ /"(.*)"|'(.*)'|(.*)/; + $passwd = $a ? $a : $b ? $b : $c; + push @$conf, {login => $login, + passwd => $passwd, + server => $server }; + } + } + $conf; +} + + sub ask_connect_now { my ($type) = @_; $::Wizard_no_previous = 1; |