summaryrefslogtreecommitdiffstats
path: root/perl-install/network/wireless.pm
diff options
context:
space:
mode:
authorOlivier Blin <oblin@mandriva.org>2005-04-20 11:24:30 +0000
committerOlivier Blin <oblin@mandriva.org>2005-04-20 11:24:30 +0000
commit644d8807c270ae8e85e1b06ed15b76a717e2427c (patch)
treebca149f813e56395ba6f71933b156afb607f2a33 /perl-install/network/wireless.pm
parent743ca434f43293e3701fa2671305800d0dedf877 (diff)
downloaddrakx-644d8807c270ae8e85e1b06ed15b76a717e2427c.tar
drakx-644d8807c270ae8e85e1b06ed15b76a717e2427c.tar.gz
drakx-644d8807c270ae8e85e1b06ed15b76a717e2427c.tar.bz2
drakx-644d8807c270ae8e85e1b06ed15b76a717e2427c.tar.xz
drakx-644d8807c270ae8e85e1b06ed15b76a717e2427c.zip
allow to choose the wireless encryption mode between "None", "Open WEP", "Restricted WEP" and "WPA Pre-Shared Key"
move ndiswrapper stuff in network::ndiswrapper
Diffstat (limited to 'perl-install/network/wireless.pm')
-rw-r--r--perl-install/network/wireless.pm111
1 files changed, 5 insertions, 106 deletions
diff --git a/perl-install/network/wireless.pm b/perl-install/network/wireless.pm
index 564cafb9b..27f06971b 100644
--- a/perl-install/network/wireless.pm
+++ b/perl-install/network/wireless.pm
@@ -2,16 +2,14 @@ package network::wireless;
use strict;
use common;
-use modules;
-use detect_devices;
-use c;
sub convert_wep_key_for_iwconfig {
#- 5 or 13 characters, consider the key as ASCII and prepend "s:"
#- else consider the key as hexadecimal, do not strip dashes
#- always quote the key as string
- my ($key) = @_;
- member(length($key), (5, 13)) ? "s:$key" : $key;
+ my ($real_key, $restricted) = @_;
+ my $key = member(length($real_key), (5, 13)) ? "s:$real_key" : $real_key;
+ $restricted ? "restricted $key" : "open $key";
}
sub get_wep_key_from_iwconfig {
@@ -19,7 +17,8 @@ sub get_wep_key_from_iwconfig {
#- else the key as hexadecimal, do not modify
my ($key) = @_;
$key =~ s/^s:// if member(length($key), (7,15));
- $key;
+ my ($mode, $real_key) = $key =~ /^(?:(open|restricted)\s+)?(.*)$/;
+ ($real_key, $mode eq 'restricted');
}
sub convert_key_for_wpa_supplicant {
@@ -170,104 +169,4 @@ sub wpa_supplicant_add_network {
chmod 0600, $wpa_supplicant_conf;
}
-my $ndiswrapper_prefix = "$::prefix/etc/ndiswrapper";
-
-sub ndiswrapper_installed_drivers() {
- grep { -d "$ndiswrapper_prefix/$_" } all($ndiswrapper_prefix);
-}
-
-sub ndiswrapper_present_devices {
- my ($driver) = @_;
- my @supported_devices;
- foreach (all("$ndiswrapper_prefix/$driver")) {
- my ($ids) = /^([0-9A-Z]{4}:[0-9A-Z]{4})\.[05]\.conf$/;
- $ids and push @supported_devices, $ids;
- }
- grep { member(uc(sprintf("%04x:%04x", $_->{vendor}, $_->{id})), @supported_devices) } detect_devices::probeall();
-}
-
-sub ndiswrapper_get_devices {
- my ($in, $driver) = @_;
- my @devices = ndiswrapper_present_devices($driver);
- @devices or $in->ask_warn(N("Error"), N("No device supporting the %s ndiswrapper driver is present!", $driver));
- @devices;
-}
-
-sub ndiswrapper_ask_driver {
- my ($in) = @_;
- if (my $inf_file = $in->ask_file(N("Please select the Windows driver (.inf file)"), "/mnt/cdrom")) {
- my $driver = basename(lc($inf_file));
- $driver =~ s/\.inf$//;
-
- #- first uninstall the driver if present, may solve issues if it is corrupted
- -d "$ndiswrapper_prefix/$driver" and system('ndiswrapper', '-e', $driver);
-
- unless (system('ndiswrapper', '-i', $inf_file) == 0) {
- $in->ask_warn(N("Error"), N("Unable to install the %s ndiswrapper driver!", $driver));
- return undef;
- }
-
- return $driver;
- }
- undef;
-}
-
-sub ndiswrapper_find_matching_devices {
- my ($device) = @_;
- my $net_path = '/sys/class/net';
- my @devices;
-
- foreach my $interface (all($net_path)) {
- my $dev_path = "$net_path/$interface/device";
- -l $dev_path or next;
-
- my %map = (vendor => 'vendor', device => 'id');
- if (every { hex(chomp_(cat_("$dev_path/$_"))) eq $device->{$map{$_}} } keys %map) {
- my $driver = readlink("$net_path/$interface/driver");
- $driver =~ s!.*/!!;
- push @devices, [ $interface, $driver ];
- }
- }
-
- @devices;
-}
-
-sub ndiswrapper_find_conflicting_devices {
- my ($device) = @_;
- grep { $_->[1] ne "ndiswrapper" } ndiswrapper_find_matching_devices($device);
-}
-
-sub ndiswrapper_find_interface {
- my ($device) = @_;
- my $dev = find { $_->[1] eq "ndiswrapper" } ndiswrapper_find_matching_devices($device);
- $dev->[0];
-}
-
-sub ndiswrapper_setup_device {
- my ($in, $device) = @_;
-
- eval { modules::unload("ndiswrapper") };
- #- unload ndiswrapper first so that the newly installed .inf files will be read
- eval { modules::load("ndiswrapper") };
-
- if ($@) {
- $in->ask_warn(N("Error"), N("Unable to load the ndiswrapper module!"));
- return;
- }
-
- my @ndiswrapper_conflicts = ndiswrapper_find_conflicting_devices($device);
- if (@ndiswrapper_conflicts) {
- $in->ask_yesorno(N("Warning"), N("The selected device has already been configured with the %s driver.
-Do you really want to use a ndiswrapper driver ?", $ndiswrapper_conflicts[0][1])) or return;
- }
-
- my $interface = ndiswrapper_find_interface($device);
- unless ($interface) {
- $in->ask_warn(N("Error"), N("Unable to find the ndiswrapper interface!"));
- return;
- }
-
- $interface;
-}
-
1;