summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcarlosg <carlosg>2006-05-16 10:37:07 +0000
committercarlosg <carlosg>2006-05-16 10:37:07 +0000
commit601039b875ddc47683af8fc3f34b878b92cf0d7d (patch)
treed56ae5dcfd6a54815257c904ab38c5bc2aca07c1
parent1f5390053e4a1620ade6b9d1eef039dd16734e59 (diff)
2006-05-15 Carlos Garnacho Parro <carlosg@gnome.org>waiting-the-dbus
* Utils/Platform.pm: add support for Ubuntus, Mandrivas, Yoper, VLOS, Archlinux and Ark in this branch, rename Specifix to rPath * Users/Users.pm, Time/TimeDate.pm, Time/NTP.pm, Network/Ifaces.pm, Network/Hosts.pm, Init/Services.pm: add changes related to these distros in this branch * Shares/SMB.pm: add mapping function to know the distro config file
-rw-r--r--ChangeLog6
-rw-r--r--Init/Services.pm79
-rw-r--r--Network/Hosts.pm70
-rw-r--r--Network/Ifaces.pm82
-rw-r--r--Shares/SMB.pm77
-rw-r--r--Time/NTP.pm2
-rw-r--r--Time/TimeDate.pm45
-rw-r--r--Users/Users.pm9
-rw-r--r--Utils/Platform.pm121
9 files changed, 416 insertions, 75 deletions
diff --git a/ChangeLog b/ChangeLog
index e485d9c..a691aa5 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -5,6 +5,12 @@
* Utils/Parse.pm: ditto for parsing
* Utils/File.pm (copy): do not fail miserably if the original copy
doesn't exist
+ * Utils/Platform.pm: add support for Ubuntus, Mandrivas, Yoper, VLOS,
+ Archlinux and Ark in this branch, rename Specifix to rPath
+ * Users/Users.pm, Time/TimeDate.pm, Time/NTP.pm, Network/Ifaces.pm,
+ Network/Hosts.pm, Init/Services.pm: add changes related to these
+ distros in this branch
+ * Shares/SMB.pm: add mapping function to know the distro config file
2006-05-14 Carlos Garnacho Parro <carlosg@gnome.org>
diff --git a/Init/Services.pm b/Init/Services.pm
index 89c502f..0136e87 100644
--- a/Init/Services.pm
+++ b/Init/Services.pm
@@ -75,7 +75,7 @@ sub get_runlevel_roles
"fedora-2" => "redhat-5.2",
"fedora-3" => "redhat-5.2",
- "specifix" => "redhat-5.2",
+ "rpath" => "redhat-5.2",
"vine-3.0" => "redhat-5.2",
"vine-3.1" => "redhat-5.2",
@@ -166,7 +166,11 @@ sub get_sysv_paths
"mandrake-9.2" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
"mandrake-10.0" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
"mandrake-10.1" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
+ "mandrake-10.2" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
+ "mandriva-2006.0" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
+ "mandriva-2006.1" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
+ "yoper-2.2" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
"blackpanther-4.0" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
"conectiva-9" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
@@ -175,9 +179,10 @@ sub get_sysv_paths
"debian-2.2" => ["$gst_prefix/etc", "$gst_prefix/etc/init.d", "../init.d"],
"debian-3.0" => ["$gst_prefix/etc", "$gst_prefix/etc/init.d", "../init.d"],
"debian-sarge" => ["$gst_prefix/etc", "$gst_prefix/etc/init.d", "../init.d"],
-
"ubuntu-5.04" => ["$gst_prefix/etc", "$gst_prefix/etc/init.d", "../init.d"],
-
+ "ubuntu-5.10" => ["$gst_prefix/etc", "$gst_prefix/etc/init.d", "../init.d"],
+ "ubuntu-6.04" => ["$gst_prefix/etc", "$gst_prefix/etc/init.d", "../init.d"],
+
"suse-7.0" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d", "../"],
"suse-9.0" => ["$gst_prefix/etc/init.d", "$gst_prefix/etc/init.d", "../"],
"suse-9.1" => ["$gst_prefix/etc/init.d", "$gst_prefix/etc/init.d", "../"],
@@ -191,11 +196,13 @@ sub get_sysv_paths
"fedora-1" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
"fedora-2" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
"fedora-3" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
+ "fedora-4" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
- "specifix" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
+ "rpath" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
"vine-3.0" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
"vine-3.1" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
+ "ark" => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d/init.d", "../init.d"],
);
my $res;
@@ -847,21 +854,29 @@ sub get_rcng_status_by_service
my ($service) = @_;
my ($fd, $line, $active);
- $fd = &Utils::File::run_pipe_read ("/etc/rc.d/$service rcvar");
-
- while (<$fd>)
+ # This is the only difference between rcNG and archlinux
+ if ($gst_dist eq "archlinux")
+ {
+ return &Utils::File::exists ("/var/run/daemons/$service");
+ }
+ else
{
- $line = $_;
+ $fd = &Utils::File::run_pipe_read ("/etc/rc.d/$service rcvar");
- if ($line =~ /^\$.*=YES$/)
+ while (<$fd>)
{
- $active = 1;
- last;
+ $line = $_;
+
+ if ($line =~ /^\$.*=YES$/)
+ {
+ $active = 1;
+ last;
+ }
}
- }
- Utils::File::close_file ($fd);
- return $active;
+ Utils::File::close_file ($fd);
+ return $active;
+ }
}
sub get_rcng_service_info
@@ -960,10 +975,40 @@ sub set_rcng_service_status
}
}
+sub set_archlinux_service_status
+{
+ my ($script, $active) = @_;
+ my $rcconf = '/etc/rc.conf';
+ my ($daemons);
+
+ $daemons = &Utils::Parse::get_sh ($rcconf, "DAEMONS");
+
+ if (($daemons =~ m/$script/) && !$active)
+ {
+ $daemons =~ s/$script[ \t]*//;
+ }
+ elsif (($daemons !~ m/$script/) && $active)
+ {
+ $daemons =~ s/network/network $script/g;
+ }
+
+ &Utils::Replace::set_sh ($rcconf, "DAEMONS", $daemons);
+}
+
sub set_rcng_services
{
my ($services) = @_;
- my ($action, $runlevels, $script);
+ my ($action, $runlevels, $script, $func);
+
+ # archlinux stores services differently
+ if ($gst_dist eq "archlinux")
+ {
+ $func = \&set_archlinux_service_status;
+ }
+ else
+ {
+ $func = \&set_rcng_service_status;
+ }
foreach $service (@$services)
{
@@ -972,7 +1017,7 @@ sub set_rcng_services
$runlevel = $$runlevels[0];
$action = ($$runlevel[1] eq "start")? 1 : 0;
- &set_rcng_service_status ($script, $action);
+ &$func ($script, $action);
}
}
@@ -1076,7 +1121,7 @@ sub get_init_type
{
return "bsd";
}
- elsif ($gst_dist =~ /freebsd/)
+ elsif (($gst_dist =~ /freebsd/) || ($gst_dist =~ /archlinux/))
{
return "rcng";
}
diff --git a/Network/Hosts.pm b/Network/Hosts.pm
index 5ef2f28..899245e 100644
--- a/Network/Hosts.pm
+++ b/Network/Hosts.pm
@@ -44,12 +44,19 @@ sub get_fqdn_parse_table
"mandrake-9.2" => "redhat-6.2",
"mandrake-10.0" => "redhat-6.2",
"mandrake-10.1" => "redhat-6.2",
+ "mandrake-10.2" => "redhat-6.2",
+ "mandriva-2006.0" => "redhat-6.2",
+ "mandriva-2006.1" => "redhat-6.2",
+ "yoper-2.2" => "redhat-6.2",
"blackpanther-4.0" => "redhat-6.2",
"conectiva-9" => "redhat-6.2",
"conectiva-10" => "redhat-6.2",
"debian-2.2" => "debian-2.2",
"debian-3.0" => "debian-2.2",
"debian-sarge" => "debian-2.2",
+ "ubuntu-5.04" => "debian-2.2",
+ "ubuntu-5.10" => "debian-2.2",
+ "ubuntu-6.04" => "debian-2.2",
"suse-9.0" => "suse-9.0",
"suse-9.1" => "suse-9.0",
"turbolinux-7.0" => "redhat-7.0",
@@ -59,13 +66,17 @@ sub get_fqdn_parse_table
"fedora-1" => "redhat-7.2",
"fedora-2" => "redhat-7.2",
"fedora-3" => "redhat-7.2",
- "specifix" => "redhat-7.2",
+ "fedora-4" => "redhat-7.2",
+ "rpath" => "redhat-7.2",
"vine-3.0" => "redhat-6.2",
"vine-3.1" => "redhat-6.2",
+ "ark" => "redhat-6.2",
"slackware-9.1.0" => "suse-9.0",
"slackware-10.0.0" => "suse-9.0",
"slackware-10.1.0" => "suse-9.0",
+ "slackware-10.2.0" => "suse-9.0",
"gentoo" => "gentoo",
+ "vlos-1.2" => "gentoo",
"freebsd-5" => "freebsd-5",
"freebsd-6" => "freebsd-5",
);
@@ -136,14 +147,14 @@ sub get_fqdn_parse_table
{
fn =>
{
- HOSTNAME => "/etc/hostname",
- DOMAINNAME => "/etc/dnsdomainname",
+ HOSTNAME => "/etc/conf.d/hostname",
+ DOMAINNAME => "/etc/conf.d/domainname",
RESOLV_CONF => "/etc/resolv.conf",
},
table =>
[
- [ "hostname", \&Utils::Parse::get_first_line, HOSTNAME ],
- [ "domain", \&Utils::Parse::get_first_line, DOMAINNAME ],
+ [ "hostname", \&Utils::Parse::get_sh, HOSTNAME, HOSTNAME ],
+ [ "domain", \&Utils::Parse::get_sh, DOMAINNAME, DNSDOMAIN ],
[ "domain", \&Utils::Parse::split_first_str, RESOLV_CONF, "domain", "[ \t]+" ],
]
},
@@ -170,6 +181,50 @@ sub get_fqdn_parse_table
return undef;
}
+sub add_statichost_alias
+{
+ my ($localhost, $alias) = @_;
+ my $i;
+
+ foreach $i (@$localhost)
+ {
+ return if ($i eq $alias);
+ }
+
+ push @$localhost, $alias;
+}
+
+sub remove_statichost_alias
+{
+ my ($localhost, $alias) = @_;
+ my $i;
+
+ for ($i = 0; $i < @$localhost; $i++) {
+ if ($$localhost[$i] eq $alias)
+ {
+ delete $$localhost[$i];
+ return;
+ }
+ }
+}
+
+sub ensure_loopback_statichost
+{
+ my ($statichost, $hostname, $old_hostname, $lo_ip) = @_;
+ my $i;
+
+ if (exists $$statichost{$lo_ip})
+ {
+ my $localhost = $$statichost{$lo_ip};
+ &remove_statichost_alias ($localhost, $old_hostname) if ($old_hostname);
+ &add_statichost_alias ($localhost, $hostname);
+ }
+ else
+ {
+ $$statichost{$lo_ip} = [ ("localhost", "localhost.localdomain", $hostname) ];
+ }
+}
+
sub get_fqdn
{
my %dist_attrib;
@@ -215,6 +270,11 @@ sub get_search_domains
return @search_domains;
}
+sub set_fqdn
+{
+ # FIXME: implement, add a call to &ensure_loopback_statichost()
+}
+
sub set
{
my (@config) = @_;
diff --git a/Network/Ifaces.pm b/Network/Ifaces.pm
index b1c71a6..1a9cc9e 100644
--- a/Network/Ifaces.pm
+++ b/Network/Ifaces.pm
@@ -435,16 +435,25 @@ sub set_suse_bootproto
return &Utils::Replace::set_sh ($file, $key, $proto_name_to_suse90{$value});
}
+sub get_gentoo_bootproto
+{
+ my ($file, $dev) = @_;
+
+ return "dhcp" if (&Utils::Parse::get_confd_net ($file, "config_$dev") =~ /dhcp/i);
+ return "none";
+}
+
sub set_gentoo_bootproto
{
my ($file, $dev, $value) = @_;
return if ($dev =~ /^ppp/);
- return &Utils::Replace::split ($file, "config_$dev", "[ \t]*=[ \t]*", "\"dhcp\"") if ($value ne "none");
+ return &Utils::Replace::set_confd_net ($file, "config_$dev", "dhcp") if ($value ne "none");
- # replace with a fake IP address, I know it's a hack
- return &Utils::Replace::split ($file, "config_$dev", "[ \t]*=[ \t]*", "\"0.0.0.0\"");
+ # replace with a fake IP address, it will be replaced
+ # later with the correct one, I know it's a hack
+ return &Utils::Replace::set_confd_net ($file, "config_$dev", "0.0.0.0");
}
sub set_freebsd_bootproto
@@ -1390,8 +1399,7 @@ sub delete_gentoo_interface
$gateway = $$old_hash {"gateway"};
# bring down the interface and remove from init
- # FIXME: port this function
- &gst_service_gentoo_set_status ("/etc/init.d/net.$dev", 1, 0);
+ &Init::Services::set_gentoo_service_status ("/etc/init.d/net.$dev", "default", "stop");
if ($dev =~ /^ppp/)
{
@@ -1399,7 +1407,7 @@ sub delete_gentoo_interface
}
else
{
- &Utils::Replace::set_sh ("/etc/conf.d/net", "iface_$dev", "");
+ &Utils::Replace::set_sh ("/etc/conf.d/net", "config_$dev", "");
}
}
@@ -1653,11 +1661,18 @@ sub get_interface_parse_table
"mandrake-9.2" => "mandrake-9.0",
"mandrake-10.0" => "mandrake-9.0",
"mandrake-10.1" => "mandrake-9.0",
+ "mandrake-10.2" => "mandrake-9.0",
+ "mandriva-2006.0" => "mandrake-9.0",
+ "mandriva-2006.1" => "mandrake-9.0",
+ "yoper-2.2" => "redhat-6.2",
"blackpanther-4.0" => "mandrake-9.0",
"conectiva-9" => "conectiva-9",
"conectiva-10" => "conectiva-9",
"debian-3.0" => "debian-3.0",
"debian-sarge" => "debian-3.0",
+ "ubuntu-5.04" => "debian-3.0",
+ "ubuntu-5.10" => "debian-3.0",
+ "ubuntu-6.04" => "debian-3.0",
"suse-9.0" => "suse-9.0",
"suse-9.1" => "suse-9.0",
"turbolinux-7.0" => "redhat-6.2",
@@ -1667,13 +1682,17 @@ sub get_interface_parse_table
"fedora-1" => "redhat-7.2",
"fedora-2" => "redhat-7.2",
"fedora-3" => "redhat-7.2",
- "specifix" => "redhat-7.2",
+ "fedora-4" => "redhat-7.2",
+ "rpath" => "redhat-7.2",
"vine-3.0" => "vine-3.0",
"vine-3.1" => "vine-3.0",
+ "ark" => "vine-3.0",
"slackware-9.1.0" => "slackware-9.1.0",
"slackware-10.0.0" => "slackware-9.1.0",
"slackware-10.1.0" => "slackware-9.1.0",
+ "slackware-10.2.0" => "slackware-9.1.0",
"gentoo" => "gentoo",
+ "vlos-1.2" => "gentoo",
"freebsd-5" => "freebsd-5",
"freebsd-6" => "freebsd-5",
);
@@ -2254,20 +2273,20 @@ sub get_interface_parse_table
INIT => "net.#iface#",
TYPE => "#type#",
IFACE => "#iface#",
- WIRELESS => "/etc/pcmcia/wireless.opts",
+ WIRELESS => "/etc/conf.d/wireless",
},
table =>
[
[ "auto", \&Init::Services::get_gentoo_service_status, INIT, "default" ],
[ "dev", \&Utils::Parse::get_trivial, IFACE ],
- [ "address", \&Utils::Parse::get_sh_re, NET, "iface_%dev%", "^[ \t]*([0-9\.]+)" ],
- [ "netmask", \&Utils::Parse::get_sh_re, NET, "iface_%dev%", "netmask[ \t]+([0-9\.]*)" ],
- [ "remote_address", \&Utils::Parse::get_sh_re, NET, "iface_%dev%", "dest_address[ \t]+([0-9\.]*)" ],
- [ "gateway", \&Utils::Parse::get_sh_re, NET, "gateway", "%dev%/([0-9\.\:]*)" ],
- [ "bootproto", \&get_bootproto, NET, "iface_%dev%" ],
- [ "essid", \&Utils::Parse::get_wireless_opts, [ WIRELESS, IFACE], \&get_wireless_ifaces, ESSID ],
- [ "key_type", \&get_wep_key_type, [ \&Utils::Parse::get_wireless_opts, [ WIRELESS, IFACE], \&get_wireless_ifaces, KEY ]],
- [ "key", \&get_wep_key, [ \&Utils::Parse::get_wireless_opts, [ WIRELESS, IFACE], \&get_wireless_ifaces, KEY ]],
+ [ "address", \&Utils::Parse::get_confd_net_re, NET, "config_%dev%", "^[ \t]*([0-9\.]+)" ],
+ [ "netmask", \&Utils::Parse::get_confd_net_re, NET, "config_%dev%", "netmask[ \t]+([0-9\.]*)" ],
+ [ "remote_address", \&Utils::Parse::get_confd_net_re, NET, "config_%dev%", "dest_address[ \t]+([0-9\.]*)" ],
+ # [ "gateway", \&gst_network_gentoo_parse_gateway, [ NET, IFACE ]],
+ [ "bootproto", \&get_gentoo_bootproto, [ NET, IFACE ]],
+ [ "essid", \&Utils::Parse::get_sh, WIRELESS, "essid_%dev%" ],
+ [ "key_type", \&get_wep_key_type, [ \&Utils::Parse::get_sh, WIRELESS, "key_%essid%" ]],
+ [ "key", \&get_wep_key, [ \&Utils::Parse::get_sh, WIRELESS, "key_%essid%" ]],
# modem stuff
[ "update_dns", \&Utils::Parse::get_sh_bool, PPPNET, PEERDNS ],
[ "mtu", \&Utils::Parse::get_sh, PPPNET, MTU ],
@@ -2354,6 +2373,7 @@ sub get_interface_replace_table
"redhat-7.2" => "redhat-7.2",
"redhat-8.0" => "redhat-8.0",
"redhat-9" => "redhat-8.0",
+ "openna-1.0" => "redhat-6.2",
"mandrake-7.1" => "redhat-6.2",
"mandrake-7.2" => "redhat-6.2",
"mandrake-9.0" => "mandrake-9.0",
@@ -2361,11 +2381,18 @@ sub get_interface_replace_table
"mandrake-9.2" => "mandrake-9.0",
"mandrake-10.0" => "mandrake-9.0",
"mandrake-10.1" => "mandrake-9.0",
+ "mandrake-10.2" => "mandrake-9.0",
+ "mandriva-2006.0" => "mandrake-9.0",
+ "mandriva-2006.1" => "mandrake-9.0",
+ "yoper-2.2" => "redhat-6.2",
"blackpanther-4.0" => "mandrake-9.0",
"conectiva-9" => "conectiva-9",
"conectiva-10" => "conectiva-9",
"debian-3.0" => "debian-3.0",
"debian-sarge" => "debian-3.0",
+ "ubuntu-5.04" => "debian-3.0",
+ "ubuntu-5.10" => "debian-3.0",
+ "ubuntu-6.04" => "debian-3.0",
"suse-9.0" => "suse-9.0",
"suse-9.1" => "suse-9.0",
"turbolinux-7.0" => "redhat-6.2",
@@ -2375,13 +2402,17 @@ sub get_interface_replace_table
"fedora-1" => "redhat-7.2",
"fedora-2" => "redhat-7.2",
"fedora-3" => "redhat-7.2",
- "specifix" => "redhat-7.2",
+ "fedora-4" => "redhat-7.2",
+ "rpath" => "redhat-7.2",
"vine-3.0" => "vine-3.0",
"vine-3.1" => "vine-3.0",
+ "ark" => "vine-3.0",
"slackware-9.1.0" => "slackware-9.1.0",
"slackware-10.0.0" => "slackware-9.1.0",
"slackware-10.1.0" => "slackware-9.1.0",
+ "slackware-10.2.0" => "slackware-9.1.0",
"gentoo" => "gentoo",
+ "vlos-1.2" => "gentoo",
"freebsd-5" => "freebsd-5",
"freebsd-6" => "freebsd-5",
);
@@ -2944,20 +2975,21 @@ sub get_interface_replace_table
PPPNET => "/etc/conf.d/net.#iface#",
INIT => "net.#iface#",
IFACE => "#iface#",
- WIRELESS => "/etc/pcmcia/wireless.opts",
+ WIRELESS => "/etc/conf.d/wireless",
},
table =>
[
[ "dev", \&create_gentoo_files ],
[ "auto", \&set_gentoo_service_status, INIT, "default" ],
[ "bootproto", \&set_gentoo_bootproto, [ NET, IFACE ]],
- [ "address", \&Utils::Replace::set_sh_re, NET, "iface_%dev%", "^[ \t]*([0-9\.]+)" ],
- [ "netmask", \&Utils::Replace::set_sh_re, NET, "iface_%dev%", "[ \t]+netmask[ \t]+[0-9\.]*", " netmask %netmask%"],
- [ "broadcast", \&Utils::Replace::set_sh_re, NET, "iface_%dev%", "[ \t]+broadcast[ \t]+[0-9\.]*", " broadcast %broadcast%" ],
- [ "remote_address", \&Utils::Replace::set_sh_re, NET, "iface_%dev%", "[ \t]+dest_address[ \t]+[0-9\.]*", " dest_address %remote_address%" ],
- [ "essid", \&Utils::Replace::set_wireless_opts, [ WIRELESS, IFACE ], \&get_wireless_ifaces, ESSID ],
- [ "key", \&Utils::Replace::set_wireless_opts, [ WIRELESS, IFACE ], \&get_wireless_ifaces, KEY ],
- [ "key_type", \&set_wep_key_full, [ \&Utils::Replace::set_wireless_opts, [ WIRELESS, IFACE ], \&get_wireless_ifaces, KEY, "%key%" ]],
+ [ "address", \&Utils::Replace::set_confd_net_re, NET, "config_%dev%", "^[ \t]*([0-9\.]+)" ],
+ [ "netmask", \&Utils::Replace::set_confd_net_re, NET, "config_%dev%", "[ \t]+netmask[ \t]+[0-9\.]*", " netmask %netmask%"],
+ [ "broadcast", \&Utils::Replace::set_confd_net_re, NET, "config_%dev%", "[ \t]+broadcast[ \t]+[0-9\.]*", " broadcast %broadcast%" ],
+ [ "remote_address", \&Utils::Replace::set_confd_net_re, NET, "config_%dev%", "[ \t]+dest_address[ \t]+[0-9\.]*", " dest_address %remote_address%" ],
+ # [ "gateway", \&Utils::Replace::set_confd_net_re, NET, "routes_%dev%", "[ \t]*default[ \t]+(via|gw)[ \t]+[0-9\.\:]*", "default via %gateway%" ],
+ [ "essid", \&Utils::Replace::set_sh, WIRELESS, "essid_%dev%" ],
+ [ "key", \&Utils::Replace::set_sh, WIRELESS, "key_%essid%" ],
+ [ "key_type", \&set_wep_key_type, [ \&Utils::Replace::set_sh, WIRELESS, "key_%essid%", "%key%" ]],
# modem stuff
[ "dev", \&check_type, [ IFACE, "modem", \&Utils::Replace::set_sh, PPPNET, PEER ]],
[ "update_dns", \&check_type, [ IFACE, "modem", \&Utils::Replace::set_sh_bool, PPPNET, PEERDNS ]],
diff --git a/Shares/SMB.pm b/Shares/SMB.pm
index 4f49f19..218f772 100644
--- a/Shares/SMB.pm
+++ b/Shares/SMB.pm
@@ -127,12 +127,77 @@ sub get_distro_smb_file
{
my ($smb_comb);
-# FIXME: should have a hash table with distro information
-# %dist_attrib = &gst_network_get_parse_table ();
-# $smb_conf = $dist_attrib{"fn"}{"SMB_CONF"};
- $smb_conf = "/etc/samba/smb.conf";
-
- return $smb_conf;
+ my %dist_map =
+ (
+ "redhat-6.0" => "redhat-6.2",
+ "redhat-6.1" => "redhat-6.2",
+ "redhat-6.2" => "redhat-6.2",
+
+ "redhat-7.0" => "debian-3.0",
+ "redhat-7.1" => "debian-3.0",
+ "redhat-7.2" => "debian-3.0",
+ "redhat-7.3" => "debian-3.0",
+ "redhat-8.0" => "debian-3.0",
+ "redhat-9" => "debian-3.0",
+ "openna-1.0" => "redhat-6.2",
+
+ "mandrake-7.1" => "redhat-6.2",
+ "mandrake-7.2" => "redhat-6.2",
+ "mandrake-9.0" => "debian-3.0",
+ "mandrake-9.1" => "debian-3.0",
+ "mandrake-9.2" => "debian-3.0",
+ "mandrake-10.0" => "debian-3.0",
+ "mandrake-10.1" => "debian-3.0",
+ "mandrake-10.2" => "debian-3.0",
+
+ "debian-2.2" => "debian-3.0",
+ "debian-3.0" => "debian-3.0",
+ "debian-sarge" => "debian-3.0",
+
+ "suse-9.0" => "debian-3.0",
+ "suse-9.1" => "debian-3.0",
+
+ "turbolinux-7.0" => "debian-3.0",
+
+ "slackware-8.0.0" => "debian-3.0",
+ "slackware-8.1" => "debian-3.0",
+ "slackware-9.0.0" => "debian-3.0",
+ "slackware-9.1.0" => "debian-3.0",
+ "slackware-10.0.0" => "debian-3.0",
+ "slackware-10.1.0" => "debian-3.0",
+ "slackware-10.2.0" => "debian-3.0",
+
+ "gentoo" => "debian-3.0",
+ "vlos-1.2" => "debian-3.0",
+
+ "archlinux" => "debian-3.0",
+
+ "pld-1.0" => "pld-1.0",
+ "pld-1.1" => "pld-1.0",
+ "pld-1.99" => "pld-1.0",
+ "fedora-1" => "debian-3.0",
+ "fedora-2" => "debian-3.0",
+ "fedora-3" => "debian-3.0",
+ "rpath" => "debian-3.0",
+
+ "vine-3.0" => "debian-3.0",
+ "vine-3.1" => "debian-3.0",
+
+ "freebsd-5" => "freebsd-5",
+ "freebsd-6" => "freebsd-5",
+ );
+
+ my %dist_tables =
+ (
+ "redhat-6.2" => "/etc/smb.conf",
+ "debian-3.0" => "/etc/samba/smb.conf",
+ "pld-1.0" => "/etc/smb/smb.conf",
+ "freebsd-5" => "/usr/local/etc/smb.conf",
+ );
+
+ my $dist = $dist_map {$Utils::Backend::tool{"platform"}};
+ return $dist_tables{$dist} if $dist;
+ return undef;
}
sub get_share_info
diff --git a/Time/NTP.pm b/Time/NTP.pm
index 6907e2d..32c4cdd 100644
--- a/Time/NTP.pm
+++ b/Time/NTP.pm
@@ -73,7 +73,7 @@ sub get_config_file ()
"fedora-2" => "redhat-6.2",
"fedora-3" => "redhat-6.2",
- "specifix" => "redhat-6.2",
+ "rpath" => "redhat-6.2",
"vine-3.0" => "redhat-6.2",
"vine-3.1" => "redhat-6.2",
diff --git a/Time/TimeDate.pm b/Time/TimeDate.pm
index 931dbdd..b9a45bb 100644
--- a/Time/TimeDate.pm
+++ b/Time/TimeDate.pm
@@ -195,8 +195,12 @@ sub conf_get_parse_table
"slackware-9.1.0" => "redhat-6.2",
"slackware-10.0.0" => "redhat-6.2",
"slackware-10.1.0" => "redhat-6.2",
+ "slackware-10.2.0" => "redhat-6.2",
"gentoo" => "redhat-6.2",
+ "vlos-1.2" => "redhat-6.2",
+
+ "archlinux" => "archlinux",
"pld-1.0" => "redhat-6.2",
"pld-1.1" => "redhat-6.2",
@@ -204,8 +208,7 @@ sub conf_get_parse_table
"fedora-1" => "redhat-6.2",
"fedora-2" => "redhat-6.2",
"fedora-3" => "redhat-6.2",
-
- "specifix" => "redhat-6.2",
+ "rpath" => "redhat-6.2",
"vine-3.0" => "redhat-6.2",
"vine-3.1" => "redhat-6.2",
@@ -243,6 +246,21 @@ sub conf_get_parse_table
[ "timezone", \&get_timezone, [LOCAL_TIME, ZONEINFO] ],
]
},
+
+ "archlinux" =>
+ {
+ fn =>
+ {
+ RC_LOCAL => "/etc/rc.local",
+ ZONEINFO => "/usr/share/zoneinfo",
+ LOCAL_TIME => "/etc/localtime"
+ },
+ table =>
+ [
+ [ "local_time", \&get_utc_time ],
+ [ "timezone", \&Utils::Parse::get_sh, RC_LOCAL, TIMEZONE ],
+ ]
+ },
);
my $dist = $dist_map {$Utils::Backend::tool{"platform"}};
@@ -287,12 +305,17 @@ sub conf_get_replace_table
"turbolinux-7.0" => "redhat-6.2",
"slackware-8.0.0" => "redhat-6.2",
+ "slackware-8.1" => "redhat-6.2",
"slackware-9.0.0" => "redhat-6.2",
"slackware-9.1.0" => "redhat-6.2",
"slackware-10.0.0" => "redhat-6.2",
"slackware-10.1.0" => "redhat-6.2",
+ "slackware-10.2.0" => "redhat-6.2",
"gentoo" => "redhat-6.2",
+ "vlos-1.2" => "redhat-6.2",
+
+ "archlinux" => "archlinux",
"pld-1.0" => "redhat-6.2",
"pld-1.1" => "redhat-6.2",
@@ -300,7 +323,7 @@ sub conf_get_replace_table
"fedora-1" => "redhat-6.2",
"fedora-2" => "redhat-6.2",
"fedora-3" => "redhat-6.2",
- "specifix" => "redhat-6.2",
+ "rpath" => "redhat-6.2",
"vine-3.0" => "redhat-6.2",
"vine-3.1" => "redhat-6.2",
@@ -340,6 +363,22 @@ sub conf_get_replace_table
[ "local_time", \&set_utc_time ],
]
},
+
+ "archlinux" =>
+ {
+ fn =>
+ {
+ RC_LOCAL => "/etc/rc.local",
+ ZONEINFO => "/usr/share/zoneinfo",
+ LOCAL_TIME => "/etc/localtime",
+ },
+ table =>
+ [
+ [ "timezone", \&Utils::Replace::set_sh, RC_LOCAL, TIMEZONE ],
+ [ "timezone", \&set_timezone, [LOCAL_TIME, ZONEINFO] ],
+ [ "local_time", \&set_utc_time ],
+ ]
+ },
);
my $dist = $dist_map {$Utils::Backend::tool{"platform"}};
diff --git a/Users/Users.pm b/Users/Users.pm
index a56c971..ae40d42 100644
--- a/Users/Users.pm
+++ b/Users/Users.pm
@@ -245,17 +245,22 @@ my $logindefs_dist_map = {
'fedora-1' => $rh_logindefs_defaults,
'fedora-2' => $rh_logindefs_defaults,
'fedora-3' => $rh_logindefs_defaults,
- 'specifix' => $rh_logindefs_defaults,
+ 'rpath' => $rh_logindefs_defaults,
'debian-2.2' => $rh_logindefs_defaults,
'debian-3.0' => $rh_logindefs_defaults,
'debian-sarge' => $rh_logindefs_defaults,
+ 'ubuntu-5.04' => $rh_logindefs_defaults,
+ 'ubuntu-5.10' => $rh_logindefs_defaults,
+ 'ubuntu-6.04' => $rh_logindefs_defaults,
'vine-3.0' => $rh_logindefs_defaults,
'vine-3.1' => $rh_logindefs_defaults,
'gentoo' => $gentoo_logindefs_defaults,
- 'archlinux-0.7' => $gentoo_logindefs_defaults,
+ 'vlos-1.2' => $gentoo_logindefs_defaults,
+ 'archlinux' => $gentoo_logindefs_defaults,
'slackware-9.1.0' => $gentoo_logindefs_defaults,
'slackware-10.0.0' => $gentoo_logindefs_defaults,
'slackware-10.1.0' => $gentoo_logindefs_defaults,
+ 'slackware-10.2.0' => $gentoo_logindefs_defaults,
'freebsd-4' => $freebsd_logindefs_defaults,
'freebsd-5' => $freebsd_logindefs_defaults,
'freebsd-6' => $freebsd_logindefs_defaults,
diff --git a/Utils/Platform.pm b/Utils/Platform.pm
index fe793a3..d37c16b 100644
--- a/Utils/Platform.pm
+++ b/Utils/Platform.pm
@@ -45,6 +45,9 @@ my $PLATFORM_INFO = {
"debian-2.2" => [ "Debian GNU/Linux", "2.2", "Potato" ],
"debian-3.0" => [ "Debian GNU/Linux", "3.0", "Woody" ],
"debian-sarge" => [ "Debian GNU/Linux", "3.1", "Sarge" ],
+ "ubuntu-5.04" => [ "Ubuntu Linux", "5.04", "Hoary" ],
+ "ubuntu-5.10" => [ "Ubuntu Linux", "5.10", "Breezy" ],
+ "ubuntu-6.04" => [ "Ubuntu Linux", "6.04", "Dapper" ],
"redhat-5.2" => [ "Red Hat Linux", "5.2", "Apollo" ],
"redhat-6.0" => [ "Red Hat Linux", "6.0", "Hedwig" ],
"redhat-6.1" => [ "Red Hat Linux", "6.1", "Cartman" ],
@@ -64,6 +67,10 @@ my $PLATFORM_INFO = {
"mandrake-9.2" => [ "Linux Mandrake", "9.2", "FiveStar" ],
"mandrake-10.0" => [ "Linux Mandrake", "10.0" ],
"mandrake-10.1" => [ "Linux Mandrake", "10.1" ],
+ "mandrake-10.2" => [ "Linux Mandrake", "2005" ],
+ "mandriva-2006.0" => [ "Mandriva Linux", "2006.0" ],
+ "mandriva-2006.1" => [ "Mandriva Linux", "2006.1" ],
+ "yoper-2.2" => [ "Yoper Linux", "2.2" ],
"blackpanther-4.0" => [ "Black Panther OS", "4.0", "" ],
"conectiva-9" => [ "Conectiva Linux", "9", "" ],
"conectiva-10" => [ "Conectiva Linux", "10", "" ],
@@ -76,11 +83,13 @@ my $PLATFORM_INFO = {
"slackware-9.1.0" => [ "Slackware", "9.1.0", "" ],
"slackware-10.0.0" => [ "Slackware", "10.0.0", "" ],
"slackware-10.1.0" => [ "Slackware", "10.1.0", "" ],
+ "slackware-10.2.0" => [ "Slackware", "10.2.0", "" ],
"freebsd-4" => [ "FreeBSD", "4", "" ],
"freebsd-5" => [ "FreeBSD", "5", "" ],
"freebsd-6" => [ "FreeBSD", "6", "" ],
"gentoo" => [ "Gentoo Linux", "", "" ],
- "archlinux-0.7" => [ "Arch Linux", "0.7", "" ],
+ "vlos-1.2" => [ "Vida Linux OS", "1.2" ],
+ "archlinux" => [ "Arch Linux", "", "" ],
"pld-1.0" => [ "PLD", "1.0", "Ra" ],
"pld-1.1" => [ "PLD", "1.1", "Ra" ],
"pld-1.99" => [ "PLD", "1.99", "Ac-pre" ],
@@ -89,7 +98,9 @@ my $PLATFORM_INFO = {
"fedora-1" => [ "Fedora Core", "1", "Yarrow" ],
"fedora-2" => [ "Fedora Core", "2", "Tettnang" ],
"fedora-3" => [ "Fedora Core", "3", "Heidelberg" ],
- "specifix" => [ "Specifix Linux", "", "" ]
+ "fedora-4" => [ "Fedora Core", "4", "Stentz" ],
+ "rpath" => [ "rPath Linux", "", "" ],
+ "ark" => [ "Ark Linux" ]
};
sub check_lsb
@@ -218,6 +229,55 @@ sub check_mandrake
return -1;
}
+sub check_mandriva
+{
+ open MANDRIVA, "$gst_prefix/etc/mandriva-release" or return -1;
+ while (<MANDRIVA>)
+ {
+ $ver = $_;
+ chomp ($ver);
+ if ($ver =~ /^Linux Mandriva release (\S+)/)
+ {
+ close MANDRIVA;
+ return "mandriva-$1";
+ }
+ elsif ($ver =~ /^Mandriva( L|l)inux release ([\d\.]+)/i)
+ {
+ close MANDRIVA;
+ return "mandriva-$2";
+ }
+ }
+ close MANDRIVA;
+ return -1;
+}
+
+sub check_yoper
+{
+ open YOPER, "$gst_prefix/etc/yoper-release" or return -1;
+ while (<YOPER>)
+ {
+ $ver = $_;
+ chomp ($ver);
+ if ($ver =~ m/Yoper (\S+)/)
+ {
+ close YOPER;
+ # find the first digit of our release
+ $mystring= ~m/(\d)/;
+ #store it in $fdigit
+ $fdigit= $1;
+ # the end of the release is marked with -2 so find the -
+ $end = index($ver,"-");
+ $start = index($ver,$fdigit);
+ # extract the substring into $newver
+ $newver= substr($ver,$start,$end-$start);
+ print $newver;
+ return "yoper-$newver";
+ }
+ }
+ close YOPER;
+ return -1;
+}
+
sub check_blackpanther
{
open BLACKPANTHER, "$gst_prefix/etc/blackPanther-release" or return -1;
@@ -261,23 +321,28 @@ sub check_fedora
return -1;
}
-sub check_specifix
+sub check_rpath
{
- open SPECIFIX, "$gst_prefix/etc/distro-release" or return -1;
+ open RPATH, "$gst_prefix/etc/distro-release" or return -1;
- while (<SPECIFIX>)
+ while (<RPATH>)
{
$ver = $_;
chomp ($ver);
- if ($ver =~ /^Specifix Linux release (\S+)/)
+ if ($ver =~ /^rPath Linux/)
+ {
+ close RPATH;
+ return "rpath";
+ }
+ elsif ($ver =~ /Foresight/)
{
- close SPECIFIX;
- return "specifix";
+ close RPATH;
+ return "rpath";
}
}
- close SPECIFIX;
+ close RPATH;
return -1;
}
@@ -338,23 +403,28 @@ sub check_gentoo
return -1;
}
-sub check_archlinux
+sub check_vlos
{
- # We do this because Arch puts g-s-t into /opt/gnome.
- open RELEASE, "/etc/arch-release" or return -1;
+ open RELEASE, "$gst_prefix/etc/vlos-release" or return -1;
while (<RELEASE>)
{
chomp;
- if (/^Arch Linux (.*) \(.*\)/)
+ if (/^VLOS.*\s+([0-9.]+)/)
{
close RELEASE;
- return "archlinux-$1";
+ return "vlos-$1";
}
}
close RELEASE;
return -1;
}
+sub check_archlinux
+{
+ return "archlinux" if stat ("$gst_prefix/etc/arch-release");
+ return -1;
+}
+
sub check_linuxppc
{
open RELEASE, "$gst_prefix/etc/redhat-release" or return -1;
@@ -403,6 +473,25 @@ sub check_vine
return -1;
}
+sub check_ark
+{
+ open ARK, "$gst_prefix/etc/ark-release" or return -1;
+ while (<ARK>)
+ {
+ $ver = $_;
+ chomp ($ver);
+
+ if ($ver =~ /^Ark Linux/)
+ {
+ close ARK;
+ return "ark";
+ }
+ }
+
+ close ARK;
+ return -1;
+}
+
sub check_freebsd
{
my ($sysctl_cmd, @output);
@@ -501,8 +590,8 @@ sub guess
my %check = (
# Red Hat check must run after Vine, Mandrake and Fedora, and Mandrake after BlackPanther
"Linux" => [ \&check_lsb, \&check_debian, \&check_caldera, \&check_suse, \&check_blackpanther, \&check_vine,
- \&check_fedora, \&check_mandrake, \&check_conectiva, \&check_linuxppc, \&check_redhat, \&check_openna,
- \&check_turbolinux, \&check_slackware, \&check_gentoo, \&check_pld, \&check_specifix, \&check_archlinux ],
+ \&check_fedora, \&check_mandrake, \&check_mandriva, \&check_conectiva, \&check_linuxppc, \&check_redhat, \&check_openna,
+ \&check_turbolinux, \&check_slackware, \&check_vlos, \&check_gentoo, \&check_pld, \&check_rpath, \&check_archlinux, \&check_ark, \&check_yoper ],
"FreeBSD" => [ \&check_freebsd ],
"SunOS" => [ \&check_solaris ]
);