@@ -42,13 +42,15 @@ rcvar="xrdp_enable"
4242load_rc_config " $name "
4343: ${xrdp_enable=" NO" }
4444
45- extra_commands=" status allstart allstop allrestart"
45+ extra_commands=" status allstart allstop allrestart keygen "
4646command=" %%PREFIX%%/sbin/xrdp"
4747
4848allstart_cmd=" xrdp_allstart"
4949allstop_cmd=" xrdp_allstop"
5050allrestart_cmd=" xrdp_allrestart"
51+ start_precmd=" xrdp_precmd"
5152stop_postcmd=" xrdp_poststop"
53+ keygen_cmd=" xrdp_generate_default_keys"
5254
5355xrdp_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+
89130run_rc_command " $1 "
0 commit comments