summaryrefslogtreecommitdiffstats
path: root/perl-install/network/tools.pm
blob: 815ed5436311de10c4ac0ce96f74887e0f3dc90a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
package network::tools;

use common;
use run_program;
use vars qw(@ISA @EXPORT);
use MDK::Common::Globals "network", qw($in $prefix $disconnect_file $connect_prog $connect_file $disconnect_file);

@ISA = qw(Exporter);
@EXPORT = qw(write_cnx_script write_secret_backend ask_connect_now connect_backend disconnect_backend read_providers_backend ask_info2 type2interface connected disconnected);
@EXPORT_OK = qw($in);

sub write_cnx_script {
    my($netc, $type, $up, $down) = @_;
    $type or output ("$prefix$_", $netc->{internet_cnx}{$netc->{internet_cnx_choice}}{$_}) foreach ($connect_file, $disconnect_file);
    foreach ([$connect_file, $up], [$disconnect_file, $down]) {
	$netc->{internet_cnx}{$type}{$_->[0]}=$_->[1];
	chmod 0755, "$prefix" . $_->[0];
    }
}

sub write_secret_backend {
    my ($a, $b) = @_;
    foreach my $i ("pap-secrets", "chap-secrets") {
	substInFile { s/^'$a'.*\n//; $_ .= "\n'$a' * '$b' * \n" if eof  } "$prefix/etc/ppp/$i";
    }
}

sub ask_connect_now {
    $::Wizard_no_previous=1;
    #- FIXME : code the exception to be generated by ask_yesorno, to be able to remove the $::Wizard_no_previous=1;
    if ($in->ask_yesorno(_("Internet configuration"),
			 _("Do you want to try to connect to the Internet now?")
			)) {
	my $up;
	{
	    my $w = $in->wait_message('', _("Testing your connection..."), 1);
	    connect_backend();
	    sleep 5;
	    my $netc = {};
	    $up=connected();
	}
	my $m = $up ? (_("The system is now connected to Internet.") .
		     if_($::isInstall, _("For Security reason, it will be disconnected now.")) ) :
		       _("The system doesn't seem to be connected to internet.
Try to reconfigure your connection.");
	if ($::isWizard) {
	    $::Wizard_no_previous=1;
	    $::Wizard_finished=1;
	    $in->ask_okcancel(_("Network Configuration"), $m, 1);
	    undef $::Wizard_no_previous;
	    undef $::Wizard_finished;
	} else {  $in->ask_warn('', $m ); }
	$::isInstall and disconnect_backend();
    }
    undef $::Wizard_no_previous;
    1;
}

sub connect_backend { run_program::rooted($prefix, "$connect_prog &") }

sub disconnect_backend { run_program::rooted($prefix, "$disconnect_file &") }

sub read_providers_backend { my ($file) = @_; map { /(.*?)=>/ } catMaybeCompressed($file) }

sub ask_info2 {
    my ($cnx, $netc) = @_;
    $::isInstall and $in->set_help('configureNetworkDNS');
    $in->ask_from(_("Connection Configuration"),
		  _("Please fill or check the field below"),
		  [
		   if__($cnx->{irq}, { label => _("Card IRQ"), val => \$cnx->{irq} })  ,
		   if__($cnx->{mem}, { label => _("Card mem (DMA)"), val => \$cnx->{mem} }),
		   if__($cnx->{io}, { label => _("Card IO"), val => \$cnx->{io} }),
		   if__($cnx->{io0}, { label => _("Card IO_0"), val => \$cnx->{io0} }),
		   if__($cnx->{io1}, { label => _("Card IO_1"), val => \$cnx->{io1} }),
		   if__($cnx->{phone_in}, { label => _("Your personal phone number"), val => \$cnx->{phone_in} }),
		   if__($netc->{DOMAINNAME2}, { label => _("Provider name (ex provider.net)"), val => \$netc->{DOMAINNAME2} }),
		   if__($cnx->{phone_out}, { label => _("Provider phone number"), val => \$cnx->{phone_out} }),
		   if__($netc->{dnsServer2}, { label => _("Provider dns 1 (optional)"), val => \$netc->{dnsServer2} }),
		   if__($netc->{dnsServer3}, { label => _("Provider dns 2 (optional)"), val => \$netc->{dnsServer3} }),
		   if__($cnx->{dialing_mode}, { label => _("Dialing mode"), val => \$cnx->{dialing_mode},list=>["auto","manual"]}),
		   if__($cnx->{speed}, { label => _("Connection speed"), val => \$cnx->{speed}, list => ["64 Kb/s", "128 Kb/s"]}),
		   if__($cnx->{huptimeout}, { label => _("Connection timeout (in sec)"), val => \$cnx->{huptimeout} }),
		   if__($cnx->{login}, { label => _("Account Login (user name)"), val => \$cnx->{login} }),
		   if__($cnx->{passwd}, { label => _("Account Password"),  val => \$cnx->{passwd} }),
		  ]
		 ) or return;
    1;
}

sub type2interface {
    my ($i) = @_;
    $i=~/$_->[0]/ and return $_->[1] foreach (
					      [ modem => 'ppp'],
					      [ isdn_internal => 'ippp'],
					      [ isdn_external => 'ppp'],
					      [ adsl => 'ppp'],
					      [ cable => 'eth'],
					      [ lan => 'eth']);
}

sub connected { gethostbyname("www.mandrakesoft.com") ? 1 : 0 }

sub disconnected { }