Skip to content

Commit 20779a8

Browse files
authored
Merge pull request #3874 from metalefty/v0.10-freebsd-rc
[v0.10] instfiles: refine FreeBSD specific RC script
2 parents 4dde2cf + 70cc370 commit 20779a8

2 files changed

Lines changed: 43 additions & 1 deletion

File tree

instfiles/Makefile.am

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,7 @@ endif
104104
if FREEBSD
105105
sed -e 's|%%PREFIX%%|$(prefix)|g' \
106106
-e 's|%%LOCALSTATEDIR%%|$(localstatedir)|g' \
107+
-e 's|%%SYSCONFSUBDIR%%|$(sysconfsubdir)|g' \
107108
-i '' \
108109
$(DESTDIR)$(sysconfdir)/rc.d/xrdp \
109110
$(DESTDIR)$(sysconfdir)/rc.d/xrdp-sesman

instfiles/rc.d/xrdp

Lines changed: 42 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,13 +42,15 @@ rcvar="xrdp_enable"
4242
load_rc_config "$name"
4343
: ${xrdp_enable="NO"}
4444

45-
extra_commands="status allstart allstop allrestart"
45+
extra_commands="status allstart allstop allrestart keygen"
4646
command="%%PREFIX%%/sbin/xrdp"
4747

4848
allstart_cmd="xrdp_allstart"
4949
allstop_cmd="xrdp_allstop"
5050
allrestart_cmd="xrdp_allrestart"
51+
start_precmd="xrdp_precmd"
5152
stop_postcmd="xrdp_poststop"
53+
keygen_cmd="xrdp_generate_default_keys"
5254

5355
xrdp_allstart()
5456
{
@@ -86,4 +88,43 @@ xrdp_poststop()
8688
# PID file
8789
rm -f %%LOCALSTATEDIR%%/run/xrdp.pid
8890
}
91+
92+
xrdp_precmd()
93+
{
94+
run_rc_command "keygen"
95+
}
96+
97+
xrdp_generate_default_keys()
98+
{
99+
local rsakeys=rsakeys.ini
100+
local privatekey=key.pem
101+
local certificate=cert.pem
102+
local xrdp_user=_xrdp # def. /usr/ports/UIDs
103+
local xrdp_group=_xrdp # def. /usr/ports/GIDs
104+
(
105+
cd %%PREFIX%%/etc/%%SYSCONFSUBDIR%% || exit 1
106+
107+
umask 027
108+
109+
[ -e "$rsakeys" ] || %%PREFIX%%/bin/xrdp-keygen xrdp "$rsakeys"
110+
[ -e "$privatekey" -a -e "$certificate" ] || \
111+
openssl req \
112+
-x509 \
113+
-newkey ed25519 \
114+
-noenc \
115+
-keyout "$privatekey" \
116+
-out "$certificate" \
117+
-days 1825 \
118+
-subj "/CN=$(hostname)" || exit 1
119+
120+
# set group permission for the keys
121+
pw groupshow "$xrdp_group" >/dev/null 2>&1 && \
122+
for f in "$rsakeys" "$privatekey" "$certificate"
123+
do
124+
chown :"$xrdp_group" "$f"
125+
chmod g+r "$f"
126+
done
127+
)
128+
}
129+
89130
run_rc_command "$1"

0 commit comments

Comments
 (0)