@@ -60,21 +60,21 @@ func (s *systemdServiceInfo) Create() error {
6060 }
6161
6262 // Enabling systemd user service
63- cmd := exec . Command ( "systemctl" , "--user" , "enable" , serviceName )
63+ cmd := GetCmdEnableSystemdService ( serviceName )
6464 err = cmd .Run ()
6565 if err != nil {
6666 return fmt .Errorf ("Unable to enable user service: %w" , err )
6767 }
6868
6969 // Reloading systemd user daemon
70- cmd = exec . Command ( "systemctl" , "--user" , "daemon-reload" )
70+ cmd = GetCmdReloadSystemdDaemon ( )
7171 err = cmd .Run ()
7272 if err != nil {
7373 return fmt .Errorf ("Unable to user service daemon-reload: %w" , err )
7474 }
7575
7676 // Starting systemd user service
77- cmd = exec . Command ( "systemctl" , "--user" , "start" , serviceName )
77+ cmd = GetCmdStartSystemdService ( serviceName )
7878 err = cmd .Run ()
7979 if err != nil {
8080 return fmt .Errorf ("Unable to start user service: %w" , err )
@@ -84,6 +84,9 @@ func (s *systemdServiceInfo) Create() error {
8484}
8585
8686func (s * systemdServiceInfo ) getServiceFile () string {
87+ if os .Getuid () == 0 {
88+ return path .Join ("/etc/systemd/system" , s .getServiceName ())
89+ }
8790 return path .Join (GetConfigHome (), "systemd/user" , s .getServiceName ())
8891}
8992
@@ -98,29 +101,78 @@ func (s *systemdServiceInfo) Remove() error {
98101
99102 // Stopping systemd user service
100103 serviceName := "skupper-" + string (s .Platform ) + ".service"
101- cmd := exec . Command ( "systemctl" , "--user" , "stop" , serviceName )
104+ cmd := GetCmdStopSystemdService ( serviceName )
102105 _ = cmd .Run ()
103106
104107 // Disabling systemd user service
105- cmd = exec . Command ( "systemctl" , "--user" , "disable" , serviceName )
108+ cmd = GetCmdDisableSystemdService ( serviceName )
106109 _ = cmd .Run ()
107110
108111 // Removing the .service file
109112 _ = os .Remove (s .getServiceFile ())
110113
111114 // Reloading systemd user daemon
112- cmd = exec . Command ( "systemctl" , "--user" , "daemon-reload" )
115+ cmd = GetCmdReloadSystemdDaemon ( )
113116 _ = cmd .Run ()
114117
115118 // Resetting failed status
116- cmd = exec . Command ( "systemctl" , "--user" , "reset-failed" , serviceName )
119+ cmd = GetCmdResetFailedSystemService ( serviceName )
117120 _ = cmd .Run ()
118121
119122 return nil
120123}
121124
125+ func GetCmdEnableSystemdService (serviceName string ) * exec.Cmd {
126+ if os .Getuid () == 0 {
127+ return exec .Command ("systemctl" , "enable" , serviceName )
128+ }
129+ return exec .Command ("systemctl" , "--user" , "enable" , serviceName )
130+ }
131+
132+ func GetCmdDisableSystemdService (serviceName string ) * exec.Cmd {
133+ if os .Getuid () == 0 {
134+ return exec .Command ("systemctl" , "disable" , serviceName )
135+ }
136+ return exec .Command ("systemctl" , "--user" , "disable" , serviceName )
137+ }
138+
139+ func GetCmdReloadSystemdDaemon () * exec.Cmd {
140+ if os .Getuid () == 0 {
141+ return exec .Command ("systemctl" , "daemon-reload" )
142+ }
143+ return exec .Command ("systemctl" , "--user" , "daemon-reload" )
144+ }
145+
146+ func GetCmdStartSystemdService (serviceName string ) * exec.Cmd {
147+ if os .Getuid () == 0 {
148+ return exec .Command ("systemctl" , "start" , serviceName )
149+ }
150+ return exec .Command ("systemctl" , "--user" , "start" , serviceName )
151+ }
152+
153+ func GetCmdStopSystemdService (serviceName string ) * exec.Cmd {
154+ if os .Getuid () == 0 {
155+ return exec .Command ("systemctl" , "stop" , serviceName )
156+ }
157+ return exec .Command ("systemctl" , "--user" , "stop" , serviceName )
158+ }
159+
160+ func GetCmdResetFailedSystemService (serviceName string ) * exec.Cmd {
161+ if os .Getuid () == 0 {
162+ return exec .Command ("systemctl" , "reset-failed" , serviceName )
163+ }
164+ return exec .Command ("systemctl" , "--user" , "reset-failed" , serviceName )
165+ }
166+
167+ func GetCmdIsSystemdEnabled () * exec.Cmd {
168+ if os .Getuid () == 0 {
169+ return exec .Command ("systemctl" , []string {"list-units" , "--no-pager" }... )
170+ }
171+ return exec .Command ("systemctl" , []string {"--user" , "list-units" , "--no-pager" }... )
172+ }
173+
122174func IsSystemdUserEnabled () bool {
123- cmd := exec . Command ( "systemctl" , [] string { "--user" , "list-units" , "--no-pager" } ... )
175+ cmd := GetCmdIsSystemdEnabled ( )
124176 if err := cmd .Run (); err != nil {
125177 return false
126178 }
0 commit comments