summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorcarlosg <carlosg>2005-10-21 21:35:21 +0000
committercarlosg <carlosg>2005-10-21 21:35:21 +0000
commit82a6c2ce20892ce1d74d68420b035b06fff2e7b1 (patch)
treedabb90dfcc0a36d8a7272f401f4a2840dd4d5b21
parent5f2769e139cb5c8973b3fac7dca57f954b8fcedf (diff)
2005-10-21 Carlos Garnacho Parro <carlosg@gnome.org>
* HostsConfig.pm, Network/Hosts.pm: Implemented set() methods * NTPConfig.pm, Time/NTP.pm: ditto * TimeConfig.pm, Time/TimeDate.pm: ditto * SMBConfig.pm: monitor SMB config files * ServicesConfig.pm, Init/Services.pm: added runlevel roles, plus default runlevel * TODO: updated
-rw-r--r--ChangeLog10
-rw-r--r--HostsConfig.pm9
-rw-r--r--Init/Services.pm120
-rw-r--r--NTPConfig.pm10
-rw-r--r--Network/Hosts.pm28
-rw-r--r--SMBConfig.pm4
-rw-r--r--ServicesConfig.pm12
-rw-r--r--TODO4
-rw-r--r--Time/NTP.pm80
-rw-r--r--Time/TimeDate.pm372
-rw-r--r--TimeConfig.pm8
11 files changed, 490 insertions, 167 deletions
diff --git a/ChangeLog b/ChangeLog
index 2f831d2..7ddbf94 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2005-10-21 Carlos Garnacho Parro <carlosg@gnome.org>
+
+ * HostsConfig.pm, Network/Hosts.pm: Implemented set() methods
+ * NTPConfig.pm, Time/NTP.pm: ditto
+ * TimeConfig.pm, Time/TimeDate.pm: ditto
+ * SMBConfig.pm: monitor SMB config files
+ * ServicesConfig.pm, Init/Services.pm: added runlevel roles, plus
+ default runlevel
+ * TODO: updated
+
2005-10-13 Carlos Garnacho Parro <carlosg@gnome.org>
* SMBConfig.pm, Shares/SMB.pm: include share name in the provided
diff --git a/HostsConfig.pm b/HostsConfig.pm
index 6fa8a6d..05f38d9 100644
--- a/HostsConfig.pm
+++ b/HostsConfig.pm
@@ -59,4 +59,13 @@ sub get
Network::Hosts::get_search_domains ());
}
+sub set
+{
+ my ($self, @config) = @_;
+
+ Network::Hosts::set ($config[0]);
+ Network::Hosts::set_dns ($config[1]);
+ Network::Hosts::set_search_domains ($config[2]);
+}
+
1;
diff --git a/Init/Services.pm b/Init/Services.pm
index 043a618..119cc8f 100644
--- a/Init/Services.pm
+++ b/Init/Services.pm
@@ -26,6 +26,122 @@ package Init::Services;
use Init::ServicesList;
+sub get_runlevel_roles
+{
+ my (%dist_map, %runlevels);
+ my ($desc, $distro);
+
+ %dist_map =
+ (
+ "redhat-5.2" => "redhat-5.2",
+ "redhat-6.0" => "redhat-5.2",
+ "redhat-6.1" => "redhat-5.2",
+ "redhat-6.2" => "redhat-5.2",
+ "redhat-7.0" => "redhat-5.2",
+ "redhat-7.1" => "redhat-5.2",
+ "redhat-7.2" => "redhat-5.2",
+ "redhat-7.3" => "redhat-5.2",
+ "redhat-8.0" => "redhat-5.2",
+ "redhat-9" => "redhat-5.2",
+ "openna-1.0" => "redhat-5.2",
+
+ "mandrake-7.1" => "redhat-5.2",
+ "mandrake-7.2" => "redhat-5.2",
+ "mandrake-9.0" => "redhat-5.2",
+ "mandrake-9.1" => "redhat-5.2",
+ "mandrake-9.2" => "redhat-5.2",
+ "mandrake-10.0" => "redhat-5.2",
+ "mandrake-10.1" => "redhat-5.2",
+
+ "blackpanther-4.0" => "redhat-5.2",
+
+ "conectiva-9" => "redhat-5.2",
+ "conectiva-10" => "redhat-5.2",
+
+ "debian-2.2" => "debian-2.2",
+ "debian-3.0" => "debian-2.2",
+ "debian-sarge" => "debian-2.2",
+ "ubuntu-5.04" => "debian-2.2",
+
+ "suse-7.0" => "redhat-5.2",
+ "suse-9.0" => "redhat-5.2",
+ "suse-9.1" => "redhat-5.2",
+
+ "turbolinux-7.0" => "redhat-5.2",
+ "pld-1.0" => "redhat-5.2",
+ "pld-1.1" => "redhat-5.2",
+ "pld-1.99" => "redhat-5.2",
+ "fedora-1" => "redhat-5.2",
+ "fedora-2" => "redhat-5.2",
+ "fedora-3" => "redhat-5.2",
+
+ "specifix" => "redhat-5.2",
+
+ "vine-3.0" => "redhat-5.2",
+ "vine-3.1" => "redhat-5.2",
+
+ "slackware-9.1.0" => "slackware-9.1.0",
+ "slackware-10.0.0" => "slackware-9.1.0",
+ "slackware-10.1.0" => "slackware-9.1.0",
+
+ "gentoo" => "gentoo",
+ "vlos-1.2" => "gentoo",
+
+ "freebsd-5" => "freebsd-5",
+ "freebsd-6" => "freebsd-5",
+ );
+
+ %runlevels=
+ (
+ "redhat-5.2" => [["0", "HALT" ],
+ ["1", "RECOVER" ],
+ ["2", "NONE" ],
+ ["3", "TEXT" ],
+ ["4", "NONE" ],
+ ["5", "GRAPHICAL" ],
+ ["6", "REBOOT" ]],
+
+ "debian-2.2" => [["0", "HALT" ],
+ ["1", "RECOVER" ],
+ ["2", "NONE" ],
+ ["3", "NONE" ],
+ ["4", "NONE" ],
+ ["5", "NONE" ],
+ ["6", "REBOOT" ]],
+
+ "gentoo" => [["boot", "BOOT" ],
+ ["default", "GRAPHICAL" ],
+ ["nonetwork", "RECOVER" ]],
+
+ "freebsd-5" => [["default", "GRAPHICAL" ]],
+
+ "slackware-9.1.0" => [["default", "GRAPHICAL" ]]
+ );
+
+ $distro = $dist_map{$Utils::Backend::tool{"platform"}};
+ $desc = $runlevels{$distro};
+
+ return $desc;
+}
+
+# This function gets the runlevel that is in use
+sub get_sysv_default_runlevel
+{
+ my (@arr);
+ @arr = split / /, `/sbin/runlevel` ;
+ chomp $arr[1];
+
+ return $arr[1];
+}
+
+sub get_default_runlevel
+{
+ my $type = &get_init_type ();
+
+ return "default" if ($type eq "gentoo" || $type eq "rcng" || $type eq "bsd");
+ return &get_sysv_default_runlevel ();
+}
+
sub get_sysv_paths
{
my %dist_map =
@@ -543,12 +659,12 @@ sub get_rcng_service_info
if (gst_service_rcng_status_by_service ($service))
{
- push @arr, { "name" => "rc",
+ push @arr, { "name" => "default",
"action" => "start" };
}
else
{
- push @arr, { "name" => "rc",
+ push @arr, { "name" => "default",
"action" => "stop" };
}
diff --git a/NTPConfig.pm b/NTPConfig.pm
index d5b4e4f..ba9ec57 100644
--- a/NTPConfig.pm
+++ b/NTPConfig.pm
@@ -45,13 +45,21 @@ sub new
}
dbus_method ("get", [], [[ "array", "string" ]]);
+dbus_method ("set", [[ "array", "string" ]], []);
dbus_signal ("changed", []);
sub get
{
my ($self) = @_;
- return Time::NTP::get ();
+ return &Time::NTP::get ();
+}
+
+sub set
+{
+ my ($self, @config) = @_;
+
+ &Time::NTP::set (@config);
}
1;
diff --git a/Network/Hosts.pm b/Network/Hosts.pm
index 41babc9..9525e09 100644
--- a/Network/Hosts.pm
+++ b/Network/Hosts.pm
@@ -55,4 +55,32 @@ sub get_search_domains
return @search_domains;
}
+sub set
+{
+ my (@config) = @_;
+ my ($i, %hash);
+
+ foreach $i (@config)
+ {
+ $hash{$i[0]} = $i[1];
+ }
+
+ return &Utils::Parse::split_hash ("/etc/hosts", "[ \t]+", "[ \t]+", %hash);
+}
+
+sub set_dns
+{
+ my (@dns) = @_;
+
+ return &Utils::Parse::split_all_unique_hash_comment ("/etc/resolv.conf", "nameserver", "[ \t]+", @dns);
+}
+
+sub set_search_domains
+{
+ my (@search_domains) = @_;
+
+ return &Utils::Parse::split_first_array_unique ("/etc/resolv.conf", "search",
+ "[ \t]+", "[ \t]+", @search_domains);
+}
+
1;
diff --git a/SMBConfig.pm b/SMBConfig.pm
index 3f375cf..fe0c3ee 100644
--- a/SMBConfig.pm
+++ b/SMBConfig.pm
@@ -37,8 +37,8 @@ sub new
bless $self, $class;
-# Utils::Monitor::monitor_files (&Shares::SMB::get_distro_smb_file (),
-# $self, $OBJECT_NAME, "changed");
+ Utils::Monitor::monitor_files (&Shares::SMB::get_distro_smb_file (),
+ $self, $OBJECT_NAME, "changed");
return $self;
}
diff --git a/ServicesConfig.pm b/ServicesConfig.pm
index 51b50e5..ba1ce69 100644
--- a/ServicesConfig.pm
+++ b/ServicesConfig.pm
@@ -43,17 +43,19 @@ sub new
return $self;
}
-dbus_method ("get", [], [[ "array", [ "struct", "string", "string", [ "array", [ "struct", "string", "string", "int32" ]]]]]);
+dbus_method ("get", [],
+ [[ "array", [ "struct", "string", "string" ]],
+ "string",
+ [ "array", [ "struct", "string", "string", [ "array", [ "struct", "string", "string", "int32" ]]]]]);
dbus_signal ("changed", []);
sub get
{
my ($self) = @_;
- my ($config);
- $config = &Init::Services::get ();
-
- return $config;
+ return (&Init::Services::get_runlevel_roles (),
+ &Init::Services::get_default_runlevel (),
+ &Init::Services::get ());
}
1;
diff --git a/TODO b/TODO
index 7a565fa..0b430af 100644
--- a/TODO
+++ b/TODO
@@ -1,6 +1,6 @@
- Replace $$tool with $Utils::Backend::tool everywhere
-- Add NFS to the SharesList object
- keep refactoring the code (move *pl.in to *pm)
-- add DBus objects for all the things that the backends manage
- Handle supported platform validation
+- Finish Internet::Iface
+- Finish _set() in all objects
diff --git a/Time/NTP.pm b/Time/NTP.pm
index c58ef67..6907e2d 100644
--- a/Time/NTP.pm
+++ b/Time/NTP.pm
@@ -102,9 +102,89 @@ sub get_ntp_servers
return &Utils::Parse::split_all_array_with_pos ($ntp_conf, "server", 0, "[ \t]+", "[ \t]+");
}
+sub ntp_conf_replace
+{
+ my ($file, $key, $re, $value) = @_;
+ my ($fd, @line, @res);
+ my ($buff, $i);
+ my ($pre_space, $post_comment);
+ my ($line_key, $val, $rest);
+ my ($n, $ret);
+
+ &Utils::Report::enter ();
+ &Utils::Report::do_report ("replace_split", $key, $file);
+
+ $buff = &Utils::File::load_buffer ($file);
+
+ foreach $i (@$buff)
+ {
+ $pre_space = $post_comment = "";
+
+ chomp $i;
+
+ $pre_space = $1 if $i =~ s/^([ \t]+)//;
+ $post_comment = $1 if $i =~ s/([ \t]*\#.*)//;
+
+ if ($i ne "")
+ {
+ @line = split ($re, $i, 3);
+ $line_key = shift (@line);
+ $val = shift (@line);
+ $rest = shift (@line);
+
+ # found the key?
+ if ($line_key eq $key)
+ {
+ $n = 0;
+
+ while (@$value[$n] && (@$value[$n] ne $val))
+ {
+ $n++;
+ }
+
+ if (@$value[$n] ne $val)
+ {
+ $i = "";
+ next;
+ }
+
+ delete @$value[$n];
+ chomp $val;
+ $i = &Utils::Replace::set_value ($key, $val, $re) . " " . $rest;
+ }
+ }
+
+ $i = $pre_space . $i . $post_comment . "\n";
+ }
+
+ foreach $i (@$value)
+ {
+ push (@$buff, &Utils::Replace::set_value ($key, $i, $re) . "\n") if ($i ne "");
+ }
+
+ &Utils::File::clean_buffer ($buff);
+ $ret = &Utils::File::save_buffer ($buff, $file);
+ &Utils::Report::leave ();
+ return $ret;
+}
+
+sub set_ntp_servers
+{
+ my (@config) = @_;
+ my ($ntp_conf);
+
+ $ntp_conf = &get_config_file ();
+ return &ntp_conf_replace ($ntp_conf, "server", "[ \t]+", @config);
+}
+
sub get
{
return &get_ntp_servers ();
}
+sub set
+{
+ return &set_ntp_servers (@_);
+}
+
1;
diff --git a/Time/TimeDate.pm b/Time/TimeDate.pm
index c7d5f6a..439a6c8 100644
--- a/Time/TimeDate.pm
+++ b/Time/TimeDate.pm
@@ -25,6 +25,8 @@
package Time::TimeDate;
+use File::Copy;
+
sub get_local_time
{
my (%h, $trash);
@@ -38,6 +40,55 @@ sub get_local_time
return \%h;
}
+# This function will force date format when setting time
+sub change_timedate
+{
+ my ($time) = @_;
+ my ($command);
+
+ my $system_table = {
+ "Linux" => "date %02d%02d%02d%02d%04d.%02d",
+ "FreeBSD" => "date -f %%m%%d%%H%%M%%Y.%%S %02d%02d%02d%02d%04d.%02d"
+ };
+
+ $command = sprintf ($$system_table {$Utils::Backend::tool{"system"}},
+ $$time{"month"}, $$time{"monthday"},
+ $$time{"hour"}, $$time{"minute"},
+ $$time{"year"}, $$time{"second"});
+
+ &Utils::Report::do_report ("time_localtime_set", $command);
+
+ return &Utils::File::run ($command);
+}
+
+sub set_local_time
+{
+ my ($time) = @_;
+ my ($res, $xscreensaver_owners);
+
+ &Utils::Report::enter ();
+
+ # FIXME: restore this, take into account other screensavers
+ # Kill screensaver, so it doesn't confuse the users.
+# $xscreensaver_owners = &gst_service_proc_get_owners ("xscreensaver");
+# &gst_service_proc_stop_all ("xscreensaver");
+
+ $res = &change_timedate ($time);
+
+ # Restart screensaver.
+# &gst_service_proc_start_all ("xscreensaver -no-splash", $xscreensaver_owners);
+
+ &Utils::Report::leave ();
+ return -1 if $res;
+ return 0;
+}
+
+sub time_sync_hw_from_sys
+{
+ &Utils::File::run ("hwclock --systohc");
+ return 0;
+}
+
sub get_timezone
{
my ($local_time_file, $zoneinfo_dir) = @_;
@@ -82,6 +133,30 @@ sub get_timezone
close (TZLIST);
}
+sub set_timezone
+{
+ my ($localtime, $zonebase, $timezone) = @_;
+
+ &Utils::Report::enter ();
+ &Utils::Report::do_report ("time_timezone_set", $timezone);
+
+ $tz = "$zonebase/$timezone";
+
+ if (stat($tz) ne "")
+ {
+ unlink $localtime; # Important, since it might be a symlink.
+
+ &Utils::Report::enter ();
+ $res = copy ($tz, $localtime);
+ &Utils::Report::leave ();
+ return -1 unless $res;
+ return 0;
+ }
+
+ &Utils::Report::leave ();
+ return -1;
+}
+
sub conf_get_parse_table
{
my %dist_map =
@@ -90,55 +165,55 @@ sub conf_get_parse_table
"redhat-6.1" => "redhat-6.2",
"redhat-6.2" => "redhat-6.2",
- "redhat-7.0" => "redhat-7.0",
- "redhat-7.1" => "redhat-7.0",
- "redhat-7.2" => "redhat-7.0",
- "redhat-7.3" => "redhat-7.0",
- "redhat-8.0" => "redhat-7.0",
- "redhat-9" => "redhat-7.0",
- "openna-1.0" => "redhat-7.0",
-
- "mandrake-7.1" => "redhat-7.0",
- "mandrake-7.2" => "redhat-7.0",
- "mandrake-9.0" => "redhat-7.0",
- "mandrake-9.1" => "redhat-7.0",
- "mandrake-9.2" => "redhat-7.0",
- "mandrake-10.0" => "redhat-7.0",
- "mandrake-10.1" => "redhat-7.0",
-
- "debian-2.2" => "debian-2.2",
+ "redhat-7.0" => "redhat-6.2",
+ "redhat-7.1" => "redhat-6.2",
+ "redhat-7.2" => "redhat-6.2",
+ "redhat-7.3" => "redhat-6.2",
+ "redhat-8.0" => "redhat-6.2",
+ "redhat-9" => "redhat-6.2",
+ "openna-1.0" => "redhat-6.2",
+
+ "mandrake-7.1" => "redhat-6.2",
+ "mandrake-7.2" => "redhat-6.2",
+ "mandrake-9.0" => "redhat-6.2",
+ "mandrake-9.1" => "redhat-6.2",
+ "mandrake-9.2" => "redhat-6.2",
+ "mandrake-10.0" => "redhat-6.2",
+ "mandrake-10.1" => "redhat-6.2",
+
+ "debian-2.2" => "redhat-6.2",
"debian-3.0" => "debian-3.0",
"debian-sarge" => "debian-3.0",
- "suse-7.0" => "suse-7.0",
- "suse-9.0" => "suse-9.0",
- "suse-9.1" => "suse-9.0",
+ "suse-7.0" => "redhat-6.2",
+ "suse-9.0" => "redhat-6.2",
+ "suse-9.1" => "redhat-6.2",
- "turbolinux-7.0" => "redhat-7.0",
+ "turbolinux-7.0" => "redhat-6.2",
- "slackware-8.0.0" => "debian-2.2",
- "slackware-8.1" => "debian-2.2",
- "slackware-9.0.0" => "debian-2.2",
- "slackware-9.1.0" => "debian-2.2",
- "slackware-10.0.0" => "debian-2.2",
- "slackware-10.1.0" => "debian-2.2",
-
- "gentoo" => "gentoo",
-
- "pld-1.0" => "pld-1.0",
- "pld-1.1" => "pld-1.0",
- "pld-1.99" => "pld-1.0",
- "fedora-1" => "redhat-7.0",
- "fedora-2" => "redhat-7.0",
- "fedora-3" => "redhat-7.0",
+ "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",
+
+ "gentoo" => "redhat-6.2",
+
+ "pld-1.0" => "redhat-6.2",
+ "pld-1.1" => "redhat-6.2",
+ "pld-1.99" => "redhat-6.2",
+ "fedora-1" => "redhat-6.2",
+ "fedora-2" => "redhat-6.2",
+ "fedora-3" => "redhat-6.2",
- "specifix" => "redhat-7.0",
+ "specifix" => "redhat-6.2",
- "vine-3.0" => "redhat-7.0",
- "vine-3.1" => "redhat-7.0",
+ "vine-3.0" => "redhat-6.2",
+ "vine-3.1" => "redhat-6.2",
- "freebsd-5" => "freebsd-5",
- "freebsd-6" => "freebsd-5",
+ "freebsd-5" => "redhat-6.2",
+ "freebsd-6" => "redhat-6.2",
);
my %dist_tables =
@@ -147,162 +222,124 @@ sub conf_get_parse_table
{
fn =>
{
- NTP_CONF => "/etc/ntp.conf",
- STEP_TICKERS => "/etc/ntp/step-tickers",
ZONEINFO => "/usr/share/zoneinfo",
- LOCAL_TIME => "/etc/localtime"
+ LOCAL_TIME => "/etc/localtime"
},
table =>
[
[ "local_time", \&get_local_time ],
[ "timezone", \&get_timezone, [LOCAL_TIME, ZONEINFO] ],
-# [ "sync", \&Utils::Parse::split_all_array_with_pos, NTP_CONF, "server", 0, "[ \t]+", "[ \t]+" ],
-# [ "sync_active", \&gst_service_sysv_get_status, "xntpd" ],
-# [ "ntpinstalled", \&gst_service_sysv_installed, "xntpd" ],
]
},
- "redhat-7.0" =>
+ "debian-3.0" =>
{
fn =>
{
- NTP_CONF => "/etc/ntp.conf",
ZONEINFO => "/usr/share/zoneinfo",
- LOCAL_TIME => "/etc/localtime"
+ LOCAL_TIME => "/etc/localtime"
},
table =>
[
[ "local_time", \&get_local_time ],
[ "timezone", \&get_timezone, [LOCAL_TIME, ZONEINFO] ],
-# [ "sync", \&Utils::Parse::split_all_array_with_pos, NTP_CONF, "server", 0, "[ \t]+", "[ \t]+" ],
-# [ "sync_active", \&gst_service_sysv_get_status, "ntpd" ],
-# [ "ntpinstalled", \&gst_service_sysv_installed, "ntpd" ],
]
},
+ );
- "debian-2.2" =>
- {
- fn =>
- {
- NTP_CONF => "/etc/ntp.conf",
- ZONEINFO => "/usr/share/zoneinfo",
- LOCAL_TIME => "/etc/localtime"
- },
- table =>
- [
- [ "local_time", \&get_local_time ],
- [ "timezone", \&get_timezone, [LOCAL_TIME, ZONEINFO] ],
-# [ "sync", \&Utils::Parse::split_first_array_pos, NTP_CONF, "server", 0, "[ \t]+", "[ \t]+" ],
-# [ "sync_active", \&gst_service_sysv_get_status, "ntpd" ],
-# [ "ntpinstalled", \&gst_service_sysv_installed, "ntp" ],
- ]
- },
+ my $dist = $dist_map {$Utils::Backend::tool{"platform"}};
+ return %{$dist_tables{$dist}} if $dist;
- "debian-3.0" =>
- {
- fn =>
- {
- NTP_CONF => "/etc/ntp.conf",
- ZONEINFO => "/usr/share/zoneinfo",
- LOCAL_TIME => "/etc/localtime"
- },
- table =>
- [
- [ "local_time", \&get_local_time ],
- [ "timezone", \&get_timezone, [LOCAL_TIME, ZONEINFO] ],
-# [ "sync", \&Utils::Parse::split_all_array_with_pos, NTP_CONF, "server", 0, "[ \t]+", "[ \t]+" ],
-# [ "sync_active", \&gst_service_sysv_get_status, "ntpd" ],
-# [ "ntpinstalled", \&gst_service_sysv_installed, "ntp-server" ],
- ]
- },
+ &Utils::Report::do_report ("platform_no_table", $$tool{"platform"});
+ return undef;
+}
- "suse-7.0" =>
- {
- fn =>
- {
- NTP_CONF => "/etc/ntp.conf",
- ZONEINFO => "/usr/share/zoneinfo",
- LOCAL_TIME => "/etc/localtime"
- },
- table =>
- [
- [ "local_time", \&get_local_time ],
- [ "timezone", \&get_timezone, [LOCAL_TIME, ZONEINFO] ],
-# [ "sync", \&Utils::Parse::split_all_array_with_pos, NTP_CONF, "server", 0, "[ \t]+", "[ \t]+" ],
-# [ "sync_active", \&gst_service_sysv_get_status, "xntpd" ],
-# [ "ntpinstalled", \&gst_service_sysv_installed, "xntpd" ],
- ]
- },
+sub conf_get_replace_table
+{
+ my %dist_map =
+ (
+ "redhat-6.0" => "redhat-6.2",
+ "redhat-6.1" => "redhat-6.2",
+ "redhat-6.2" => "redhat-6.2",
+
+ "redhat-7.0" => "redhat-6.2",
+ "redhat-7.1" => "redhat-6.2",
+ "redhat-7.2" => "redhat-6.2",
+ "redhat-7.3" => "redhat-6.2",
+ "redhat-8.0" => "redhat-6.2",
+ "redhat-9" => "redhat-6.2",
+ "openna-1.0" => "redhat-6.2",
+
+ "mandrake-7.1" => "redhat-6.2",
+ "mandrake-7.2" => "redhat-6.2",
+ "mandrake-9.0" => "redhat-6.2",
+ "mandrake-9.1" => "redhat-6.2",
+ "mandrake-9.2" => "redhat-6.2",
+ "mandrake-10.0" => "redhat-6.2",
+ "mandrake-10.1" => "redhat-6.2",
+
+ "debian-2.2" => "redhat-6.2",
+ "debian-3.0" => "debian-3.0",
+ "debian-sarge" => "debian-3.0",
- "suse-9.0" =>
- {
- fn =>
- {
- NTP_CONF => "/etc/ntp.conf",
- ZONEINFO => "/usr/share/zoneinfo",
- LOCAL_TIME => "/etc/localtime"
- },
- table =>
- [
- [ "local_time", \&get_local_time ],
- [ "timezone", \&get_timezone, [LOCAL_TIME, ZONEINFO] ],
-# [ "sync", \&Utils::Parse::split_all_array_with_pos, NTP_CONF, "server", 0, "[ \t]+", "[ \t]+" ],
-# [ "sync_active", \&gst_service_get_status, "xntpd" ],
-# [ "ntpinstalled", \&gst_service_installed, "xntpd" ],
- ]
- },
+ "suse-7.0" => "redhat-6.2",
+ "suse-9.0" => "redhat-6.2",
+ "suse-9.1" => "redhat-6.2",
- "pld-1.0" =>
- {
- fn =>
- {
- NTP_CONF => "/etc/ntp/ntp.conf",
- ZONEINFO => "/usr/share/zoneinfo",
- LOCAL_TIME => "/etc/localtime"
- },
- table =>
- [
- [ "local_time", \&get_local_time ],
- [ "timezone", \&get_timezone, [LOCAL_TIME, ZONEINFO] ],
-# [ "sync", \&Utils::Parse::split_all_array_with_pos, NTP_CONF, "server", 0, "[ \t]+", "[ \t]+" ],
-# [ "sync_active", \&gst_service_sysv_get_status, "ntpd" ],
-# [ "ntpinstalled", \&gst_service_sysv_installed, "ntpd" ],
- ]
- },
+ "turbolinux-7.0" => "redhat-6.2",
+
+ "slackware-8.0.0" => "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",
+
+ "gentoo" => "redhat-6.2",
+
+ "pld-1.0" => "redhat-6.2",
+ "pld-1.1" => "redhat-6.2",
+ "pld-1.99" => "redhat-6.2",
+ "fedora-1" => "redhat-6.2",
+ "fedora-2" => "redhat-6.2",
+ "fedora-3" => "redhat-6.2",
+ "specifix" => "redhat-6.2",
+
+ "vine-3.0" => "redhat-6.2",
+ "vine-3.1" => "redhat-6.2",
+
+ "freebsd-5" => "redhat-6.2",
+ "freebsd-6" => "redhat-6.2",
+ );
- "gentoo" =>
+ my %dist_tables =
+ (
+ "redhat-6.2" =>
{
fn =>
{
- NTP_CONF => "/etc/ntp.conf",
ZONEINFO => "/usr/share/zoneinfo",
LOCAL_TIME => "/etc/localtime"
},
table =>
[
- [ "local_time", \&get_local_time ],
- [ "timezone", \&get_timezone, [LOCAL_TIME, ZONEINFO] ],
-# [ "sync", \&Utils::Parse::split_all_array_with_pos, NTP_CONF, "server", 0, "[ \t]+", "[ \t]+" ],
-# [ "sync_active", \&gst_service_gentoo_get_status, "ntpd" ],
-# [ "ntpinstalled", \&gst_service_list_any_installed, [ "ntpd", "openntpd" ]],
+ [ "timezone", \&set_timezone, [LOCAL_TIME, ZONEINFO] ],
+ [ "local_time", \&set_local_time ],
]
},
-
- "freebsd-5" =>
+
+ "debian-3.0" =>
{
fn =>
{
- NTP_CONF => "/etc/ntp.conf",
ZONEINFO => "/usr/share/zoneinfo",
- LOCAL_TIME => "/etc/localtime"
+ LOCAL_TIME => "/etc/localtime",
+ TIMEZONE => "/etc/timezone"
},
table =>
[
- [ "local_time", \&get_local_time ],
- [ "timezone", \&get_timezone, [LOCAL_TIME, ZONEINFO] ],
-# [ "sync", \&Utils::Parse::split_all_array_with_pos, NTP_CONF, "server", 0, "[ \t]+", "[ \t]+" ],
-# [ "sync_active", \&gst_service_rcng_get_status, "ntpd" ],
-# [ "ntpinstalled", \&gst_service_installed, "ntpd" ],
+ [ "timezone", \&set_timezone, [LOCAL_TIME, ZONEINFO] ],
+ [ "timezone", \&Utils::Replace::set_first_line, TIMEZONE ],
+ [ "local_time", \&set_local_time ],
]
},
);
@@ -322,7 +359,7 @@ sub get
%dist_attrib = &conf_get_parse_table ();
$hash = &Utils::Parse::get_from_table ($dist_attrib{"fn"},
- $dist_attrib{"table"});
+ $dist_attrib{"table"});
$h = $$hash {"local_time"};
return ($$h {"year"}, $$h {"month"}, $$h {"monthday"},
@@ -330,4 +367,29 @@ sub get
$$hash{"timezone"});
}
+sub set
+{
+ my (@config) = @_;
+ my ($hash, %localtime);
+
+ %localtime = (
+ "year" => $config[0],
+ "month" => $config[1],
+ "monthday" => $config[2],
+ "hour" => $config[3],
+ "minute" => $config[4],
+ "second" => $config[5]
+ );
+
+ $$hash{"local_time"} = \%localtime;
+ $$hash{"timezone"} = $config[6];
+
+ %dist_attrib = &conf_get_replace_table ();
+
+ $res = &Utils::Replace::set_from_table ($dist_attrib{"fn"}, $dist_attrib{"table"}, $hash);
+ &time_sync_hw_from_sys ();
+
+ return $res;
+}
+
1;
diff --git a/TimeConfig.pm b/TimeConfig.pm
index 53e074b..05d06e2 100644
--- a/TimeConfig.pm
+++ b/TimeConfig.pm
@@ -45,6 +45,7 @@ sub new
}
dbus_method ("get", [], [ "int32", "int32", "int32", "int32", "int32", "int32", "string" ]);
+dbus_method ("set", [ "int32", "int32", "int32", "int32", "int32", "int32", "string" ], []);
dbus_signal ("changed", []);
sub get
@@ -55,4 +56,11 @@ sub get
return Time::TimeDate::get ();
}
+sub set
+{
+ my ($self, @config) = @_;
+
+ Time::TimeDate::set (@config);
+}
+
1;