#!/usr/bin/perl # Interfaces Conf Parser # Copyright (C) 2002,2003 Mandrakesoft # # Author: Arnaud Desmons <adesmons@mandrakesoft.com> # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2, or (at your option) # any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. package MDK::Wizard::IFCFG; use strict; use lib qw(/usr/lib/libDrakX); use Data::Dumper; use MDK::Common; use network::network; #my $file = "/etc/sysconfig/network-scripts/drakconnect_conf"; #!-f $file and die "no such $file"; sub new { my $self = {}; my $ifconfig = `LC_ALL=C /sbin/ifconfig -a`; my $device = 'NONE'; foreach (split('\n', $ifconfig)) { my ($temp) = /(^eth[0-9]*:?[0-9]*)/; $device = $temp if defined $temp; my ($ip, $bcast, $netmask) = /\s*inet addr:([0-9\.]*)\s*Bcast:([0-9\.]*)\s*Mask:([0-9\.]*)/; if (defined $ip && defined $bcast && defined $netmask) { $self->{itf}{$device} = { IPADDR => $ip, BROADCAST => $bcast, NETMASK => $netmask }; my %conf = getVarsFromSh("/etc/sysconfig/network-scripts/ifcfg-$device"); $self->{itf}{$device}{$_} = $conf{$_} foreach 'BOOTPROTO'; } } %{$self->{network}} = getVarsFromSh("/etc/sysconfig/network"); my $r = network::network::read_resolv_conf(); foreach my $k (keys %$r) { $self->{network}{$k} ||= $r->{$k}; } $self->{network}{HOSTNAME} ||= `/bin/hostname` and chomp $self->{network}{HOSTNAME}; ($self->{network}{DOMAINNAME}) = $self->{network}{HOSTNAME} =~ /\.(.*)/; $self->{network}{DOMAINNAME} ||= `/bin/dnsdomainname` and chomp $self->{network}{DOMAINNAME}; bless $self; } sub is_dhcp { my ($self, $itf) = @_; $itf ||= default_itf(); $self->{itf}{$itf}{BOOTPROTO} eq 'dhcp'; } #- TODO : return the main interface sub default_itf { "eth0"; } sub itf_get { my ($self, $key, $itf) = @_; $itf ||= default_itf(); exists $self->{itf}{$itf}{$key} or print "ERROR: no $key field in $itf hash\n"; $self->{itf}{$itf}{$key}; } sub network_get { my ($self, $key) = @_; exists $self->{network}{$key} or print "ERROR: no $key field in network hash\n"; $self->{network}{$key}; } 10;