aboutsummaryrefslogtreecommitdiff
path: root/biology/linux-foldingathome/files/fahclient.in
blob: 7d8e72bfcbdbfb2ec1e4e14c3e877789417594bf (plain) (blame)
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
#! /bin/sh -

# SPDX-License-Identifier: BSD-2-Clause
#
# Copyright (c) 2020 Mateusz Piotrowski <0mp@FreeBSD.org>
#
# Redistribution and use in source and binary forms, with or without
# modification, are permitted provided that the following conditions are met:
#
#     1. Redistributions of source code must retain the above copyright notice,
#        this list of conditions and the following disclaimer.
#     2. Redistributions in binary form must reproduce the above copyright
#        notice, this list of conditions and the following disclaimer in the
#        documentation and/or other materials provided with the distribution.
#
# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
# AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
# IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
# ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE
# LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
# CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
# SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
# INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
# CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
# ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
# POSSIBILITY OF SUCH DAMAGE.

# PROVIDE: fahclient
# REQUIRE: DAEMON LOGIN NETWORKING linux

#
# Add the following lines to /etc/rc.conf to enable nginx:
# fahclient_enable (bool):	Set to "NO" by default.
#				Set it to "YES" to enable fahclient.
# fahclient_user (str):		Default: "fahclient"
#				User to run fahclient as.
# fahclient_chdir (str):	Default: "%%FAHCLIENT_WORK_DIR%%"
#				Directory to chdir before starting fahclient.
# fahclient_config (str):	Default: "%%ETCDIR%%/config.xml"
#				Path to fahclient configuration file.
# fahclient_donor (str):	Default: "Anonymous"
#				Donor to attribute work units to.
#				Settings in fahclient_config take precedence.
# fahclient_team (str):		Default: "11743" (FreeBSD Team)
#				Team to attribute work units to.
#				Settings in fahclient_config take precedence.
# fahclient_pidfile (str):	Default: "%%FAHCLIENT_WORK_DIR%%/fahclient.pid"
#				Path to PID file.
# fahclient_logfile (str):	Default: "%%FAHCLIENT_WORK_DIR%%/log.txt"
#				Path to log file. Takes precedence over
#				settings in fahclient_config.
# fahclient_flags (str):	Default: ""
#				Extra flags passed to start command *before*
#				other options.
# fahclient_extra_flags (str):	Defaults to ""
#				Extra flags passed to start command *after*
#				other options.

. /etc/rc.subr

name='fahclient'
rcvar='fahclient_enable'

load_rc_config 'fahclient'

# Default settings.
: "${fahclient_enable:=NO}"
: "${fahclient_user:=fahclient}"
: "${fahclient_chdir:=%%FAHCLIENT_WORK_DIR%%}"

: "${fahclient_donor:=Anonymous}"
: "${fahclient_team:=11743}"

: "${fahclient_pidfile:=%%FAHCLIENT_WORK_DIR%%/fahclient.pid}"
: "${fahclient_config:=%%ETCDIR%%/config.xml}"
: "${fahclient_logfile:=%%FAHCLIENT_WORK_DIR%%/log.txt}"

pidfile="${fahclient_pidfile}"
command='%%FAHCLIENT_PROGRAM%%'
# Some notes on the specified options:
# - fahclient_flags are passed in before other options by the rc
#   framework.
# - --user sets the donor work units are attributed to (config file takes
#   precedence).
# - --team sets the team work units are attributed to (cfg file takes
#   precedence).
# - --config is necessary to point the program to the correct configuration
#   file.
# - --log sets the log file location (takes precedence over config file),
#   log is special in this respect.
# - --chdir is used to switch to a desired work directory. The program is going
#   to create a lot of files in its current working directory so should not be
#   just any directory on the system.
# - --pid-file specifies the location for the PID file.
# - --daemon is to detach the program from the terminal and run it
#   in the background.
# - fahclient_extra_flags are passed in after all other options.

command_args="${command_args} --user=${fahclient_donor}"
command_args="${command_args} --team=${fahclient_team}"
command_args="${command_args} --config=${fahclient_config}"
command_args="${command_args} --log=${fahclient_logfile}"
command_args="${command_args} --chdir=${fahclient_chdir}"
command_args="${command_args} --pid-file=${pidfile} --daemon"
command_args="${command_args} ${fahclient_extra_flags}"
extra_commands="log showconfig"
log_cmd="tail -F -- ${fahclient_logfile}"
showconfig_cmd="${command} ${fahclient_flags} ${command_args} --print"
if [ -n "$fahclient_user" ]; then
	showconfig_cmd="su -m $fahclient_user -c 'sh -c \"$showconfig_cmd\"'"
fi
required_modules='linprocfs linsysfs linux64:linux64elf'

run_rc_command "$1"