summaryrefslogtreecommitdiffstats
path: root/perl-install/network/isdn.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl-install/network/isdn.pm')
-rw-r--r--perl-install/network/isdn.pm274
1 files changed, 0 insertions, 274 deletions
diff --git a/perl-install/network/isdn.pm b/perl-install/network/isdn.pm
deleted file mode 100644
index a837bbd9e..000000000
--- a/perl-install/network/isdn.pm
+++ /dev/null
@@ -1,274 +0,0 @@
-package network::isdn;
-
-use network::isdn_consts;
-use common;
-use any;
-use modules;
-use run_program;
-use log;
-use network::tools;
-use vars qw(@ISA @EXPORT);
-use MDK::Common::Globals "network", qw($in $prefix);
-use MDK::Common::File;
-@ISA = qw(Exporter);
-@EXPORT = qw(isdn_write_config isdn_write_config_backend get_info_providers_backend isdn_ask_info isdn_ask_protocol isdn_ask isdn_detect isdn_detect_backend isdn_get_list isdn_get_info);
-
-sub configure {
- my ($netcnx, $netc) = @_;
- isdn_step_1:
- defined $netc->{autodetect}{isdn}{id} and goto intern_pci;
- $::isInstall and $in->set_help('configureNetworkISDN');
- my $e = $in->ask_from_list_(_("Network Configuration Wizard"),
- _("What kind is your ISDN connection?"), [ __("Internal ISDN card"), __("External ISDN modem")]
- ) or return;
- if ($e =~ /card/) {
- intern_pci:
- $netcnx->{type}='isdn_internal';
- $netcnx->{isdn_internal}={};
- $netcnx->{isdn_internal}{$_} = $netc->{autodetect}{isdn}{$_} foreach ('description', 'vendor', 'id', 'driver', 'card_type', 'type');
- isdn_detect($netcnx->{isdn_internal}, $netc) or return;
- } else {
- $netcnx->{type}='isdn_external';
- $netcnx->{isdn_external}={};
- $netcnx->{isdn_external}{device}=$netc->{autodetect}{modem};
- $netcnx->{isdn_external}{special_command}='AT&F&O2B40';
- require network::modem;
- network::modem::pppConfig($netcnx->{isdn_external}, $mouse, $netc) or goto isdn_step_1;
- }
- 1;
-}
-
-sub isdn_write_config {
- my ($isdn, $netc) = @_;
- isdn_write_config_step_1:
- my $e = $in->ask_from_list_(_("Network Configuration Wizard"),
- _("Which ISDN configuration do you prefer?
-
-* The Old configuration uses isdn4net. It contains powerfull
- tools, but is tricky to configure, and not standard.
-
-* The New configuration is easier to understand, more
- standard, but with less tools.
-
-We recommand the light configuration.
-"), [ __("New configuration (isdn-light)"), __("Old configuration (isdn4net)")]
- ) or return;
- my ($rmpackage, $instpackage) = $e =~ /light/ ? ('isdn4net', 'isdn-light') : ('isdn-light', 'isdn4net');
- if (!$::isStandalone) {
- require pkgs;
- my $p = pkgs::packageByName($in->{packages}, $rmpackage);
- $p && pkgs::packageFlagSelected($p) and pkgs::unselectPackage($in->{packages}, $p);
- }
- run_program::rooted($prefix, "rpm", "-e", "$rmpackage");
- $in->do_pkgs->install($instpackage, if_($isdn->{speed} =~ /128/, 'ibod'), 'isdn4k-utils');
- my $light = $e =~ /light/ ? 1 : 0;
- isdn_write_config_backend($isdn, $light, $netc);
- 1;
-}
-
-sub isdn_write_config_backend {
- my ($isdn, $light, $netc) = @_;
- if ($light) {
- modules::mergein_conf("$prefix/etc/modules.conf");
- if ($isdn->{id}) {
- isdn_detect_backend($isdn);
- } else {
- my $a="";
- defined $isdn->{$_} and $a .= "$_=" . $isdn->{$_} . " " foreach qw(type protocol mem io io0 io1 irq);
- $isdn->{driver} eq "hisax" and $a.="id=HiSax";
- modules::set_options($isdn->{driver}, $a);
- }
- modules::add_alias("ippp0", $isdn->{driver});
- $::isStandalone and modules::write_conf($prefix);
- foreach my $f ('ioptions1B', 'ioptions2B') {
- substInFile { s/^name .*\n//; $_ .= "name $isdn->{login}\n" if eof } "$prefix/etc/ppp/$f";
- chmod 0600, $f;
- }
- foreach my $f ('isdn1B.conf', 'isdn2B.conf') {
- my $a=1;
- substInFile {
- s/EAZ =.*/EAZ = $isdn->{phone_in}/;
- s/PHONE_OUT =.*/PHONE_OUT = $isdn->{phone_out}/;
-# s/HUPTIMEOUT =.*/HUPTIMEOUT = $isdn->{huptimeout}/;
-# $a or s/HUPTIMEOUT =.*/HUPTIMEOUT = $isdn->{huptimeout}/, $a=1;
- } "$prefix/etc/isdn/$f";
- chmod 0600, $f;
- }
- my $bundle = $isdn->{speed} =~ /64/ ? "1B" : "2B";
- symlinkf("isdn" . $bundle . ".conf", "$prefix/etc/isdn/isdnctrl.conf");
- symlinkf("ioptions" . $bundle, "$prefix/etc/ppp/ioptions");
- } else {
- my $f = "$prefix/etc/isdn/profile/link/myisp";
- output ($f,
- qq(
-I4L_USERNAME="$isdn->{login}"
-I4L_SYSNAME=""
-I4L_LOCALMSN="$isdn->{phone_in}"
-I4L_REMOTE_OUT="$isdn->{phone_out}"
-I4L_DIALMODE="$isdn->{dialing_mode}"
-) . if_($isdn->{speed} =~ /128/, 'SLAVE="ippp1"
-'));
- chmod 0600, $f;
-
- output "$prefix/etc/isdn/profile/card/mycard",
- qq(
-I4L_MODULE="$isdn->{driver}"
-I4L_TYPE="$isdn->{type}"
-I4L_IRQ="$isdn->{irq}"
-I4L_MEMBASE="$isdn->{mem}"
-I4L_PORT="$isdn->{io}"
-I4L_IO0="$isdn->{io0}"
-I4L_IO1="$isdn->{io1}"
-I4L_ID="HiSax"
-I4L_FIRMWARE="$isdn->{firmware}"
-);
-
- output "$prefix/etc/ppp/ioptions",
- "lock
-usepeerdns
-defaultroute
-";
- system "$prefix/etc/rc.d/init.d/isdn4linux restart";
- }
-
- substInFile { s/^FIRMWARE.*\n//; $_ .= qq(FIRMWARE="$isdn->{firmware}"\n) if eof } "$prefix/etc/sysconfig/network-scripts/ifcfg-ippp0";
-
- write_secret_backend($isdn->{login}, $isdn->{passwd});
-
- write_cnx_script($netc, "isdn",
-"/sbin/route del default
-/sbin/ifup ippp0
-/sbin/isdnctrl dial ippp0
-" . if_($isdn->{speed} =~ /128/, "service ibod restart
-"),
-"/sbin/isdnctrl hangup ippp0
-/sbin/ifdown ippp0
-" . if_($isdn->{speed} =~ /128/, "service ibod stop
-"));
- 1;
-}
-
-sub get_info_providers_backend {
- my ($isdn, $netc, $name, $file) = @_;
- $name eq 'Unlisted - edit manually' and return;
- foreach (catMaybeCompressed($file)) {
- chop;
- my ($name_, $phone, $real, $dns1, $dns2) = split '=>';
- if ($name eq $name_) {
- @{$isdn}{qw(user_name phone_out DOMAINNAME2 dnsServer3 dnsServer2)} =
- ((split(/\|/, $name_))[2], $phone, $real, $dns1, $dns2);
- }
- }
-}
-
-sub isdn_ask_info {
- my ($isdn, $netc) = @_;
- my $f = "$ENV{SHARE_PATH}/ldetect-lst/isdn.db";
- $f = "$prefix$f" if !-e $f;
- my $str= $in->ask_from_treelist( _("ISDN Configuration"), _("Select your provider.\n If it's not in the list, choose Unlisted"),
- '|', ['Unlisted - edit manually',
- read_providers_backend($f)], 'Unlisted - edit manually')
- or return;
- get_info_providers_backend($isdn, $netc, $str || 'Unlisted - edit manually', $f);
- $isdn->{huptimeout} = 180;
- $isdn->{$_} ||= '' foreach qw(phone_in phone_out dialing_mode login passwd passwd2 idl speed);
- add2hash($netc, { dnsServer2 => '', dnsServer3 => '', DOMAINNAME2 => '' });
- ask_info2($isdn, $netc);
-}
-
-sub isdn_ask_protocol {
- my @toto=(
- { description => $::expert ? _("Europe protocol (EDSS1)") : _("Europe protocol"),
- protokol => 2},
- { description => $::expert ? _("Protocol for the rest of the world \n no D-Channel (leased lines)") : _("Protocol for the rest of the world"),
- protokol => 3}
- );
- my $e = $in->ask_from_listf(_("ISDN Configuration"),
- _("Which protocol do you want to use ?"),
- sub { $_[0]{description} },
- \@toto ) or return 0;
- $e->{protokol};
-}
-
-sub isdn_ask {
- my ($isdn, $netc, $label) = @_;
- isdn_ask_step_1:
- my $e = $in->ask_from_list_(_("ISDN Configuration"),
- $label . "\n" . _("What kind of card do you have?"),
- [ __("ISA / PCMCIA"), __("PCI"), __("I don't know") ]
- ) or return;
- if ($e =~ /PCI/) {
- $isdn->{card_type} = 'pci';
- } else {
- $in->ask_from_list_(_("ISDN Configuration"),
- _("
-If you have an ISA card, the values on the next screen should be right.\n
-If you have a PCMCIA card, you have to know the irq and io of your card.
-"),
- [ __("Continue"), __("Abort") ]) eq 'Continue' or goto isdn_ask_step_1;
- $isdn->{card_type} = 'isa';
- }
-
- isdn_ask_step_2:
- $e = $in->ask_from_listf(_("ISDN Configuration"),
- _("Which is your ISDN card ?"),
- sub { $_[0]{description} },
- [ grep {$_->{card} eq $isdn->{card_type}; } @isdndata ] ) or goto isdn_ask_step_1;
- $e->{$_} and $isdn->{$_} = $e->{$_} foreach qw(driver type mem io io0 io1 irq firmware);
-
- isdn_ask_step_3:
- $isdn->{protocol} = isdn_ask_protocol() or goto isdn_ask_step_2;
- isdn_ask_step_4:
- isdn_ask_info($isdn, $netc) or goto isdn_ask_step_3;
- isdn_write_config($isdn, $netc) or goto isdn_ask_step_4;
- 1;
-}
-
-sub isdn_detect {
- my ($isdn, $netc) = @_;
- if ($isdn->{id}) {
- log::l("found isdn card : $isdn->{description}; vendor : $isdn->{vendor};id : $isdn->{id}; driver : $isdn->{driver}\n");
- $isdn->{description} =~ s/\|/ -- /;
- if ($isdn->{type} eq '') {
- isdn_ask($isdn, $netc, _("I have detected an ISDN PCI Card, but I don't know the type. Please select one PCI card on the next screen.")) or return;
- } else {
- isdn_detect_step_1:
- $isdn->{protocol}=isdn_ask_protocol() or return;
- isdn_detect_step_2:
- isdn_ask_info($isdn, $netc) or goto isdn_detect_step_1;
- isdn_write_config($isdn, $netc) or goto isdn_detect_step_2;
- }
- } else {
- isdn_ask($isdn, $netc, _("No ISDN PCI card found. Please select one on the next screen.")) or return;
- }
- $netc->{$_}='ippp0' foreach 'NET_DEVICE', 'NET_INTERFACE';
- 1;
-}
-
-sub isdn_detect_backend {
- my ($isdn) = @_;
- if (my ($c) = (modules::get_that_type('isdn'))) {
- $isdn->{$_} = $c->{$_} foreach qw(description vendor id driver options firmware);
- $isdn->{$_} = sprintf("%0x", $isdn->{$_}) foreach ('vendor', 'id');
- $isdn->{card_type} = 'pci';
- ($isdn->{type}) = $isdn->{options} =~ /type=(\d+)/;
-# $c->{options} !~ /id=HiSax/ && $isdn->{driver} eq "hisax" and $c->{options} .= " id=HiSax";
- if ($c->{options} !~ /protocol=/ && $isdn->{protocol} =~ /\d/) {
- modules::set_options($c->{driver}, $c->{options} . " protocol=" . $isdn->{protocol});
- }
- $c->{options} =~ /protocol=(\d)/ and $isdn->{protocol} = $1;
- }
-}
-
-sub isdn_get_list {
- map { $_->{description} } @isdndata;
-}
-
-sub isdn_get_info {
- my ($desc) = @_;
- foreach (@isdndata) {
- return $_ if ($_->{description} eq $desc);
- }
-}
-
-1;