patches/system-tools-backends-05-services.diff
author dkenny
Thu, 06 Mar 2008 10:27:22 +0000
branchgnome-2-20
changeset 10822 b18101755ea7
parent 8639 1e9014f00854
permissions -rwxr-xr-x
2008-03-06 Darren Kenny <[email protected]> * patches/system-tools-backends-05-services.diff: Fix bug#6634394 - correcting the decision making done on what category a service should fall into.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
8639
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
     1
diff -u system-tools-backends-1.4.2/services-conf.in-orig system-tools-backends-1.4.2/services-conf.in
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
     2
--- system-tools-backends-1.4.2/services-conf.in-orig	2006-01-02 23:32:34.000000000 +0800
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
     3
+++ system-tools-backends-1.4.2/services-conf.in	2007-11-14 16:37:05.174308000 +0800
8639
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
     4
@@ -35,7 +35,6 @@
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
     5
   require "$SCRIPTSDIR/general.pl$DOTIN";
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
     6
   require "$SCRIPTSDIR/platform.pl$DOTIN";
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
     7
   require "$SCRIPTSDIR/service.pl$DOTIN";
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
     8
-  require "$SCRIPTSDIR/print.pl$DOTIN";
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
     9
 }
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
    10
 
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
    11
 # --- Tool information --- #
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
    12
@@ -51,6 +50,7 @@
7860
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    13
               
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    14
               "debian-2.2", "debian-3.0", "debian-sarge",
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    15
 
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    16
+	          "nexenta-1.0", "solaris-2.11",
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    17
               "suse-7.0", "turbolinux-7.0", "fedora-1", "fedora-2", "fedora-3", "rpath",
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    18
               "pld-1.0", "pld-1.1", "pld-1.99",
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    19
               "slackware-9.1.0", "slackware-10.0.0", "slackware-10.1.0", "slackware-10.2.0",
8639
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
    20
@@ -91,6 +91,7 @@
7860
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    21
   {
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    22
     if ($elem eq "runlevels") { $runlevel = &xml_parse_runlevel_list (shift @$tree)}
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    23
     elsif ($elem eq "services") { push @$services, &xml_parse_service_list (shift @$tree); }
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    24
+    elsif ($elem eq "longname") { shift @$tree; }
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    25
     else { &gst_report ("xml_unexp_tag", $elem); shift @$tree; }
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    26
   }
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    27
 
8639
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
    28
@@ -173,6 +174,7 @@
7860
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    29
     elsif ($elem eq "role") { shift @$tree }
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    30
     elsif ($elem eq "runlevels") { push @$runlevels, &xml_parse_runlevels (shift @$tree); }
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    31
     elsif ($elem eq "script") { $$hash{"script"} = &gst_xml_get_pcdata (shift @$tree); }
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    32
+    elsif ($elem eq "longname") { shift @$tree; }
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    33
     else { &gst_report ("xml_unexp_tag", $elem); shift @$tree; }
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    34
   }
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    35
   
8639
1e9014f00854 2006-11-27 Darren Kenny <[email protected]>
dkenny
parents: 8027
diff changeset
    36
@@ -260,6 +262,7 @@
7860
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    37
 sub xml_print_runlevels
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    38
 {
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    39
   my ($h, $default) = @_;
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    40
+  &gst_xml_print_pcdata ("longname", $i);
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    41
   &gst_xml_print_line ("<runlevels>");
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    42
   &gst_xml_enter ();
25fd327818d6 Unbump system-tools-backends.
dc144907
parents:
diff changeset
    43
 
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
    44
diff -up system-tools-backends-1.4.2/service.pl.in-clean system-tools-backends-1.4.2/service.pl.in
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
    45
--- system-tools-backends-1.4.2/service.pl.in-clean	2006-01-02 15:42:19.000000000 +0000
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
    46
+++ system-tools-backends-1.4.2/service.pl.in	2008-03-05 14:00:46.119320000 +0000
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
    47
@@ -85,6 +85,9 @@ sub gst_service_sysv_get_paths
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    48
        "ubuntu-5.10"  => ["$gst_prefix/etc", "$gst_prefix/etc/init.d", "../init.d"],
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    49
        "ubuntu-6.04"  => ["$gst_prefix/etc", "$gst_prefix/etc/init.d", "../init.d"],
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    50
        
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    51
+       "nexenta-1.0" => ["$gst_prefix/etc", "$gst_prefix/etc/init.d", "../init.d"],       
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    52
+       "solaris-2.11" => ["$gst_prefix/etc", "$gst_prefix/etc/init.d", "../init.d"],       
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    53
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    54
        "suse-7.0"     => ["$gst_prefix/etc/rc.d", "$gst_prefix/etc/rc.d", "../"],
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    55
        "suse-9.0"     => ["$gst_prefix/etc/init.d", "$gst_prefix/etc/init.d", "../"],
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    56
        "suse-9.1"     => ["$gst_prefix/etc/init.d", "$gst_prefix/etc/init.d", "../"],
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
    57
@@ -154,6 +157,9 @@ sub gst_service_sysv_get_runlevels
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    58
        "ubuntu-5.04"    => [2, 3],
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    59
        "ubuntu-5.10"    => [2, 3],
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    60
        "ubuntu-6.04"    => [2, 3],
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    61
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    62
+       "nexenta-1.0"   => [2, 3],       
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    63
+       "solaris-2.11"  => [2, 3],       
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    64
        
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    65
        "suse-7.0"       => [3, 5],
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    66
        "suse-9.0"       => [3, 5],
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
    67
@@ -223,6 +229,10 @@ sub gst_service_get_runlevel_roles
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    68
      "ubuntu-5.04"    => "debian-2.2",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    69
      "ubuntu-5.10"    => "debian-2.2",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    70
      "ubuntu-6.04"    => "debian-2.2",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    71
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    72
+     "nexenta-1.0"   => "nexenta",     
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    73
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    74
+     "solaris-2.11"   => "solaris",     
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    75
           
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    76
      "suse-7.0"       => "redhat-5.2",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    77
      "suse-9.0"       => "redhat-5.2",
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
    78
@@ -277,6 +287,14 @@ sub gst_service_get_runlevel_roles
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    79
                       "default"   => "GRAPHICAL",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    80
                       "nonetwork" => "RECOVER"
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    81
                      },
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    82
+     "nexenta"    => {"single-user"  => "TEXT",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    83
+                      "multi-user"   => "GRAPHICAL",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    84
+                      "none"         => "RECOVER"
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    85
+                     },
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    86
+     "solaris"    => {"single-user"  => "TEXT",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    87
+                      "multi-user"   => "GRAPHICAL",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    88
+                      "none"         => "RECOVER"
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    89
+                     },
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    90
      "freebsd-5"  => {"rc" => "GRAPHICAL" },
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    91
      "slackware-9.1.0" => {"4" => "GRAPHICAL" }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    92
     );
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
    93
@@ -797,6 +815,159 @@ sub gst_service_bsd_get_services
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    94
   return \%ret;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    95
 }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    96
 
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    97
+sub gst_service_smf_service_exist
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    98
+{
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
    99
+  my($service) = @_;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   100
+  my($services) = &gst_service_smf_get_services_list();
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   101
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   102
+  foreach $i (@$services)
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   103
+  {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   104
+    return 1 if ($i =~ /$service/);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   105
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   106
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   107
+  return 0;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   108
+}
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   109
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   110
+sub gst_service_smf_run_svcadm
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   111
+{
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   112
+  my ($service, $arg) = @_;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   113
+  my ($option);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   114
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   115
+  my %map =
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   116
+    ("stop" => "stopped",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   117
+     "start" => "started"
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   118
+    );
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   119
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   120
+  my %op =
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   121
+    ("stop" => "disable",
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   122
+     "start" => "enable"
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   123
+    );
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   124
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   125
+  &gst_report_enter ();
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   126
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   127
+  if (!exists $map{$arg})
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   128
+  {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   129
+    &gst_report ("service_sysv_op_unk", $arg);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   130
+    &gst_report_leave ();
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   131
+    return -1;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   132
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   133
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   134
+  if (&gst_service_smf_service_exist ($service))
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   135
+  {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   136
+    if (!&gst_file_run ("svcadm $op{$arg} $service"))
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   137
+    {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   138
+      &gst_report ("service_sysv_op_success", $service, $str);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   139
+      &gst_report_leave ();
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   140
+      return 0;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   141
+    }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   142
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   143
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   144
+  &gst_report ("service_sysv_op_failed", $service, $str);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   145
+  &gst_report_leave ();
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   146
+  return -1;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   147
+}
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   148
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   149
+sub gst_service_smf_runlevel_status_by_service
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   150
+{
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   151
+  my ($service, $status) = @_;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   152
+  my (@arr, @ret);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   153
+  my (@runlevels) = split(" ","single-user multi-user");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   154
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   155
+  foreach $runlevel (@runlevels)
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   156
+  {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   157
+    if ($status)
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   158
+    {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   159
+      push @arr, { "name"   => $runlevel,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   160
+                   "action" => "start" };
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   161
+    }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   162
+    else
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   163
+    {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   164
+      push @arr, { "name"   => $runlevel,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   165
+                   "action" => "stop" };
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   166
+    }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   167
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   168
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   169
+  push @ret, { "runlevel" => \@arr };
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   170
+  return @ret;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   171
+}
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   172
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   173
+sub gst_service_smf_get_service_info
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   174
+{
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   175
+  my ($service) = @_;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   176
+  my ($script, @actions, @runlevels);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   177
+  my %hash;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   178
+  my $role;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   179
+  my $status = 0;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   180
+  my $longname = "";
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   181
+
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   182
+  
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   183
+  return undef if (&gst_service_list_service_is_forbidden ($service));
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   184
+
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   185
+  my $fd = &gst_file_run_pipe_read ("svcs -l $service");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   186
+  while (<$fd>) {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   187
+    $status = 1 if (/^state.*online/);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   188
+    $longname = $1 if (/^name\s*(.*)/);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   189
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   190
+  gst_file_close ($fd);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   191
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   192
+  my($runlevels) = &gst_service_smf_runlevel_status_by_service ($service, $status);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   193
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   194
+  $hash{"script"} = $service;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   195
+  $hash{"longname"} = $longname if ($longname);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   196
+  $hash{"runlevels"} = $runlevels unless ($runlevels eq undef);
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   197
+  $role = &gst_service_get_role ($service);
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   198
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   199
+  if ($role eq "UNKNOWN") {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   200
+    $role = "SYSTEM" if ($service =~ /^system\// || $service =~ /^platform\//);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   201
+    $role = "NETWORK" if ($service =~ /^network\//);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   202
+    $role = "NTP_SERVER" if ($service =~ /^network\/ntp/);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   203
+    $role = "FILE_SERVER" if ($service =~ /^network\/nfs/);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   204
+    $role = "DYNAMIC_DNS" if ($service =~ /^network\/dns/);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   205
+    $role = "SYSTEM_LOGGER" if ($service =~ /^system\/system-log/);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   206
+    $role = "MTA" if ($service =~ /^network\/smtp/);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   207
+    $role = "PRINTER_SERVICE" if ($service =~ /^application\/print\/server/);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   208
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   209
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   210
+  $hash{"role"} = $role;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   211
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   212
+  return \%hash;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   213
+}
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   214
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   215
+sub gst_service_smf_get_services_list
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   216
+{
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   217
+  my @list;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   218
+  local *SVCS=gst_file_run_pipe_read("svcs -H -a");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   219
+  while (<SVCS>) {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   220
+    next if (/svc:\/milestone/);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   221
+    if (/^.*\s*.*\s*svc:\/(.*):(.*)/) {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   222
+      my $svcname = $1;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   223
+      $svcname .= ":$2" if ( $2 ne "default" );
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   224
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   225
+      push(@list,$svcname);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   226
+    }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   227
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   228
+  close (SVCS);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   229
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   230
+  return \@list;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   231
+}
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   232
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   233
+sub gst_service_smf_get_services
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   234
+{
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   235
+  my ($service);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   236
+  my (%ret);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   237
+  my ($service_list) = &gst_service_smf_get_services_list ();
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   238
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   239
+  foreach $service (@$service_list)
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   240
+  {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   241
+    my (%hash);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   242
+    $hash = &gst_service_smf_get_service_info ($service);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   243
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   244
+    $ret{$service} = $hash if ($hash ne undef);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   245
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   246
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   247
+  return \%ret;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   248
+}
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   249
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   250
 # these functions get a list of the services that run on a gentoo init
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   251
 sub gst_service_gentoo_get_service_status
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   252
 {
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   253
@@ -1163,6 +1334,10 @@ sub gst_get_init_type
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   254
   {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   255
     return "suse";
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   256
   }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   257
+  elsif ($gst_dist =~ /nexenta/ || $gst_dist =~ /solaris-2.11/)
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   258
+  {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   259
+    return "smf";
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   260
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   261
   else
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   262
   {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   263
     return "sysv";
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   264
@@ -1180,6 +1355,8 @@ sub gst_service_get_services
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   265
   return &gst_service_rcng_get_services ()   if ($type eq "rcng");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   266
   return &gst_service_suse_get_services ()   if ($type eq "suse");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   267
   return &gst_service_archlinux_get_services() if ($type eq "archlinux");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   268
+  return &gst_service_smf_get_services ()   if ($type eq "smf");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   269
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   270
   return undef;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   271
 }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   272
 
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   273
@@ -1199,7 +1376,7 @@ sub gst_service_get_default_runlevel
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   274
 {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   275
     my ($type) = &gst_get_init_type ();
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   276
 
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   277
-    return "default" if ($type eq "gentoo");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   278
+    return "default" if ($type eq "gentoo" || $type eq "smf");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   279
     return "rc"      if ($type eq "rcng");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   280
     return "rc"      if ($type eq "archlinux");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   281
     return &gst_service_sysv_get_default_runlevel ();
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   282
@@ -1585,6 +1762,7 @@ sub gst_service_set_services
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   283
   &gst_service_rcng_set_services   ($services, $runlevel) if ($type eq "rcng");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   284
   &gst_service_suse_set_services   ($services, $runlevel) if ($type eq "suse");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   285
   &gst_service_archlinux_set_services ($services, $runlevel) if ($type eq "archlinux");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   286
+  &gst_service_smf_set_services   ($services, $runlevel) if ($type eq "smf");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   287
 }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   288
 
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   289
 sub gst_service_set_conf
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   290
@@ -1632,6 +1810,47 @@ sub gst_service_debian_get_status
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   291
   return undef;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   292
 }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   293
 
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   294
+sub gst_service_smf_set_services
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   295
+{
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   296
+  my ($services, $runlevel) = @_;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   297
+  my ($action);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   298
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   299
+  foreach $service (@$services)
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   300
+  {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   301
+    $script = $$service{"script"};
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   302
+    $arr = $$service{"runlevels"}[0]{"runlevel"};
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   303
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   304
+    foreach $i (@$arr)
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   305
+    {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   306
+      $action = $$i{"action"};
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   307
+      $rl = $$i{"name"};
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   308
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   309
+      if ( $action eq "start")
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   310
+      {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   311
+        &gst_file_run ("rc-update add $script $rl");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   312
+      }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   313
+      elsif ($action eq "stop")
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   314
+      {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   315
+        &gst_file_run ("rc-update del $script $rl");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   316
+      }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   317
+    }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   318
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   319
+}
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   320
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   321
+sub gst_service_smf_get_status
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   322
+{
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   323
+  my ($service) = @_;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   324
+  my $ret = 0;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   325
+  my $fd = &gst_file_run_pipe_read ("svcs -H -ostate $service");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   326
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   327
+  while (<$fd>) {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   328
+    if (/^online/) { $ret = 1; last; }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   329
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   330
+  gst_file_close ($fd);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   331
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   332
+  return $ret;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   333
+}
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   334
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   335
 sub gst_service_redhat_get_status
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   336
 {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   337
   my ($service) = @_;
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   338
@@ -1697,6 +1916,9 @@ sub gst_service_get_status
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   339
        "ubuntu-5.04"  => \&gst_service_debian_get_status,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   340
        "ubuntu-5.10"  => \&gst_service_debian_get_status,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   341
        "ubuntu-6.04"  => \&gst_service_debian_get_status,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   342
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   343
+       "nexenta-1.0" => \&gst_service_smf_get_status,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   344
+       "solaris-2.11" => \&gst_service_smf_get_status,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   345
               
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   346
        "redhat-5.2"   => \&gst_service_redhat_get_status,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   347
        "redhat-6.0"   => \&gst_service_redhat_get_status,
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   348
@@ -1909,6 +2131,7 @@ sub gst_service_run_script
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   349
        "rcng"    => \&gst_service_rcng_run_script,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   350
        "suse"    => \&gst_service_sysv_run_initd_script,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   351
        "archlinux" => \&gst_service_archlinux_run_script,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   352
+       "smf"    => \&gst_service_smf_run_svcadm,
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   353
       );
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   354
 
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   355
   $type = &gst_get_init_type ();
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   356
@@ -1964,6 +2187,14 @@ sub gst_service_rcng_installed
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   357
   return 0;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   358
 }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   359
 
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   360
+sub gst_service_smf_installed
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   361
+{
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   362
+  my ($service) = @_;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   363
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   364
+  return 1 if (! &gst_file_run("svcs -H -ostate $service"));
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   365
+  return 0;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   366
+}
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   367
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   368
 sub gst_service_installed
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   369
 {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   370
   my ($service) = @_;
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   371
@@ -1975,6 +2206,8 @@ sub gst_service_installed
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   372
   return &gst_service_gentoo_installed ($service) if ($type eq "gentoo");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   373
   return &gst_service_rcng_installed ($service) if ($type eq "rcng");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   374
   return &gst_service_rcng_installed ($service) if ($type eq "archlinux");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   375
+  return &gst_service_smf_installed ($service) if ($type eq "smf");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   376
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   377
   return 0;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   378
 }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   379
 
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   380
@@ -2013,6 +2246,21 @@ sub gst_service_bsd_set_status
8027
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   381
   }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   382
 }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   383
 
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   384
+sub gst_service_smf_set_status
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   385
+{
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   386
+  my ($service, $active) = @_;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   387
+  my (@arr);
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   388
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   389
+  if ($active)
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   390
+  {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   391
+    &gst_file_run ("svcadm enable $service");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   392
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   393
+  else
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   394
+  {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   395
+    &gst_file_run ("svcadm disable $service");
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   396
+  }
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   397
+}
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   398
+
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   399
 sub gst_service_gentoo_set_status
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   400
 {
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   401
   my ($script, $force_now, $active) = @_;
db169c287197 2006-08-30 Darren Kenny <[email protected]>
darrenk
parents: 7860
diff changeset
   402
10822
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   403
diff -up system-tools-backends-1.4.2/service-list.pl.in-clean system-tools-backends-1.4.2/service-list.pl.in
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   404
--- system-tools-backends-1.4.2/service-list.pl.in-clean	2006-01-02 15:39:39.000000000 +0000
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   405
+++ system-tools-backends-1.4.2/service-list.pl.in	2008-03-05 14:00:30.285948000 +0000
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   406
@@ -82,7 +82,7 @@ sub gst_service_list_service_is_forbidde
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   407
      "hostname",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   408
      "keymaps",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   409
      "localmount",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   410
-     "net\..*",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   411
+     "net\\..*",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   412
      "numlock",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   413
      "depscan\.sh",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   414
      "functions\.sh",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   415
@@ -145,6 +145,8 @@ sub gst_service_list_service_is_forbidde
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   416
      "rc[sS0-9]\.d",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   417
      "boot",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   418
      "boot\..*",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   419
+     # These are the services found in Solaris
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   420
+     "application\/graphical-login\/gdm",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   421
     ];
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   422
 
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   423
   foreach $i (@$service_forbidden_list)
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   424
@@ -328,10 +330,24 @@ sub gst_service_get_role
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   425
     "zmailer" => "MTA",
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   426
   );
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   427
 
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   428
-  my ($role) = $service_roles{$script};
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   429
+  if ($gst_dist =~ /nexenta/ || $gst_dist =~ /solaris-2.11/) {
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   430
+    my $role;
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   431
 
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   432
-  return $role if ($role);
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   433
-  return "UNKNOWN";
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   434
+    foreach $key (keys %service_roles) {
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   435
+      if ( $script =~ /.*\b$key\b.*/ ) {
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   436
+        $role = $service_roles{$key}; 
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   437
+        last;
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   438
+      }
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   439
+    }
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   440
+    return $role if ($role);
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   441
+    return "UNKNOWN";
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   442
+  }
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   443
+  else {
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   444
+    my ($role) = $service_roles{$script};
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   445
+
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   446
+    return $role if ($role);
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   447
+    return "UNKNOWN";
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   448
+  }
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   449
 }
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   450
 
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   451
 1;
b18101755ea7 2008-03-06 Darren Kenny <[email protected]>
dkenny
parents: 8639
diff changeset
   452