This file is indexed.

/usr/share/otrs/scripts/otrs-scheduler-linux is in otrs2 3.3.5-1.

This file is owned by root:root, with mode 0o755.

The actual contents of the file can be viewed below.

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
#!/bin/bash
# --
# otrs-scheduler-linux - provides Scheduler init control on linux
# Copyright (C) 2001-2012 OTRS AG, http://otrs.org/
# --
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU AFFERO General Public License as published by
# the Free Software Foundation; either version 3 of the License, or
# any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU Affero General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301 USA
# or see http://www.gnu.org/licenses/agpl.txt.
# --
# This file is based on
# Linux Additions Guest Additions service daemon init script.
# From Oracle Virtual Box
# --

# chkconfig: - 80 10
# description: OTRS scheduler.
### BEGIN INIT INFO
# Provides:       otrs2
# Default-Start:  2 3 4 5
# Default-Stop:   0 1 6
# Required-Start: $local_fs $remote_fs $network
# Required-Stop: $local_fs $remote_fs $network
# Short-Description: Start/stop OTRS Scheduler.
# Description: Controls the otrs-scheduler
### END INIT INFO
#-----------------------------------------------------------------------
# User defined variables
OTRS_HOME=/usr/share/otrs
PIDDIR=/run/otrs
User=otrs
Group=www-data
# User and Group needs to be the same as the apache user and group
# set on apache configuration
#----------------------------------------------------------------------

. /lib/lsb/init-functions

PATH=$PATH:/bin:/sbin:/usr/sbin
prog=otrs-scheduler
# set Scheduler script
Scheduler=$OTRS_HOME/bin/otrs.Scheduler.pl

# Regular expressions
RegExDigit="[0-9]+"

#Check user and group
TestUID=$(id -u $User)

if [[ ! $TestUID =~ $RegExDigit ]]; then
    echo "The user ${User} does not exist in this system."
    exit 1
fi

test `getent group | awk -F : '{print $1}' |grep "^${Group}$"` || {
    echo "The group ${Group} does not exist in this system."
    exit 1
}

CanRun() {

    # check if scheduler can be run
    test -x "$Scheduler" || {
        echo "Cannot run $Scheduler"
        exit 1
    }
}

# check if scheduler can be run
CanRun

# set Scheduler PID
STATUS=$("$Scheduler" -a status)

# remove any non numeric character like in "Running 123"
PID=${STATUS//[^0-9]/}

# set OS
system=unknown
if [ -f /etc/redhat-release ]; then
    system=redhat
elif [ -f /etc/SuSE-release ]; then
    system=suse
elif [ -f /etc/debian_version ]; then
    system=debian
elif [ -f /etc/gentoo-release ]; then
    echo "Gentoo is detected, this script does not run correctly on gentoo."
    echo "Please run otrs-scheduler-gentoo instead!"
    exit 1
else
    system=other
fi

# define special routines for each OS
if [ "$system" = "redhat" ]; then
    . /etc/init.d/functions
    fail_msg() {
        echo_failure
        echo
    }

    succ_msg() {
        echo_success
        echo
    }

    begin() {
        echo -n "$1"
    }
fi

if [ "$system" = "suse" ]; then
    . /etc/rc.status
    daemon() {

        # in openSUSE 11.3 this value returns 7, and should return 0
        # in openSUSE 11.4 this is fixed and returns 0
        startproc -u $User $Scheduler -a start
    }

    # this is part of openSUSE 11.3 workaround since it can't find the process
    # it can't stop it, so a forced killed is needed in a redefined killproc()
    # when openSUSE 11.3 will reach end of support killproc() can be deleted
    killproc(){

        # send kill signal to scheduler to proper stop
        if [[  $PID =~ $RegExDigit ]]; then
            kill -2 $PID > /dev/null
        fi
    }

    fail_msg() {
        rc_failed 1
        rc_status -v
    }

    succ_msg() {
        rc_reset
        rc_status -v
    }

    begin() {
        echo -n "$1"
    }
fi

if [ "$system" = "debian" ]; then
    daemon() {
        start-stop-daemon --start --chuid $User:$Group --exec $Scheduler -- -a start
    }

    killproc() {
        start-stop-daemon --stop --name otrs.Scheduler. --signal 2
    }

    fail_msg() {
        echo " ...fail!"
    }

    succ_msg() {
        echo " ...done."
    }

    begin() {
        echo -n "$1"
    }
fi

if [ "$system" = "other" ]; then
    fail_msg() {
        echo " ...fail!"
    }

    succ_msg() {
        echo " ...done."
    }

    begin() {
        echo -n "$1"
    }
fi

start() {
	if [ ! -d $PIDDIR ]; then
		mkdir -p $PIDDIR
		chown $User:$Group $PIDDIR
	fi

    # check scheduler is not running
    if [[ ! $PID =~ $RegExDigit ]]; then
        begin "Starting OTRS Scheduler";

        # start Scheduler
        daemon  --user $User "${Scheduler} -a start" > /dev/null
        RETVAL=$?

        # check if Scheduler start successfully and display success message
        if [ $RETVAL -eq 0 ]; then
            succ_msg

        # otherwise display fail message
        else

            # workaround OpenSUSE 11.3 returns 7 because it can't find the process
            if [ "$system" = "suse" -a $RETVAL -eq 7 ]; then
               RETVAL=0
               succ_msg
            else
               fail_msg
            fi
        fi

    # otherwise can't run it again
    else
       begin "OTRS Scheduler is already running ${PID}"
       fail_msg
       return 1
    fi

    # create lock file so redhat can stop service at reboot or halt
    if [ "$system" = "redhat" ]; then
        touch /var/lock/subsys/otrs-scheduler-linux
    fi
    return $RETVAL
}

stop() {

    # check if Scheduler is running
    if [[ $PID =~ $RegExDigit ]]; then
        begin "Stopping OTRS Scheduler";

        # stop Scheduler
        killproc $Scheduler -2
        RETVAL=$?

        # query Scheduler PID again to check id is stopped
        STATUS=$("$Scheduler" -a status)

        # remove any non numeric character like in "Running 123"
        PID=${STATUS//[^0-9]/}

        # check if still running
        if [[  $PID =~ $RegExDigit ]]; then
            fail_msg

        # otherwise is stopped
        else
            succ_msg
        fi
    else
        begin "Scheduler is already stopped"
        succ_msg
    fi

    # remove lock file for redhat
    if [ "$system" = "redhat" ]; then
        rm -f /var/lock/subsys/otrs-scheduler-linux
    fi
    return $RETVAL
}

restart() {
    stop && start
}

status() {
    echo -n "Checking for OTRS Scheduler"

    # check if scheduler returns a numeric PID
    if [[ $PID =~ $RegExDigit ]]; then
        echo " ...running ${PID}"

    #otherwise is not running
    else
        echo " ...not running"
    fi
}

# call the right function
case "$1" in
start)
    start
    ;;
stop)
    stop
    ;;
restart|force-reload)
    restart
    ;;
status)
    status
    ;;
setup)
    ;;
cleanup)
    ;;
*)
    echo "Usage: $0 {start|stop|restart|force-reload|status}"
    exit 1
esac

exit $RETVAL