diff --git a/configure.ac b/configure.ac index d4315133..b8c03445 100644 --- a/configure.ac +++ b/configure.ac @@ -129,6 +129,8 @@ AC_CONFIG_FILES([Makefile docs/man/Makefile instfiles/Makefile instfiles/pam.d/Makefile + instfiles/init.d/Makefile + instfiles/default/Makefile genkeymap/Makefile xrdpapi/Makefile xrdpvr/Makefile diff --git a/genkeymap/dump-keymaps.sh b/genkeymap/dump-keymaps.sh index 7f13b73e..e0f3b3b2 100755 --- a/genkeymap/dump-keymaps.sh +++ b/genkeymap/dump-keymaps.sh @@ -27,5 +27,9 @@ setxkbmap -model pc104 -layout ru setxkbmap -model pc104 -layout se ./xrdp-genkeymap ../instfiles/km-041d.ini +# Portuguese -PT 'pt-pt' 0x0816 +setxkbmap -model pc104 -layout pt +./xrdp-genkeymap ../instfiles/km-0816.ini + # set back to en-us setxkbmap -model pc104 -layout us diff --git a/instfiles/Makefile.am b/instfiles/Makefile.am index 4cabd942..f41bb841 100644 --- a/instfiles/Makefile.am +++ b/instfiles/Makefile.am @@ -1,9 +1,11 @@ -EXTRA_DIST = xrdp.sh km-0407.ini km-0409.ini km-040c.ini km-0410.ini km-0419.ini km-041d.ini \ +EXTRA_DIST = xrdp.sh km-0407.ini km-0409.ini km-040c.ini km-0410.ini km-0419.ini km-041d.ini km-0816.ini \ xrdp-sesman.service \ xrdp.service SUBDIRS = \ - pam.d + pam.d \ + init.d \ + default if HAVE_SYSTEMD systemdsystemunit_DATA = \ @@ -20,7 +22,8 @@ startscript_DATA = \ km-040c.ini \ km-0410.ini \ km-0419.ini \ - km-041d.ini + km-041d.ini \ + km-0816.ini # must be tab below install-data-hook: diff --git a/instfiles/default/Makefile.am b/instfiles/default/Makefile.am new file mode 100644 index 00000000..6a7f4f2b --- /dev/null +++ b/instfiles/default/Makefile.am @@ -0,0 +1,3 @@ +EXTRA_DIST = xrdp +startscriptdir=$(sysconfdir)/default +startscript_DATA = xrdp diff --git a/instfiles/default/xrdp b/instfiles/default/xrdp new file mode 100644 index 00000000..bc51ce82 --- /dev/null +++ b/instfiles/default/xrdp @@ -0,0 +1,5 @@ +# Do we need to start sesman ? +SESMAN_START=yes +# Do we restart xrdp on upgrade ? If not set to no, any xrdp session will +# be shutdown on upgrade. +# RESTART_ON_UPGRADE=no diff --git a/instfiles/init.d/Makefile.am b/instfiles/init.d/Makefile.am new file mode 100644 index 00000000..ae411c20 --- /dev/null +++ b/instfiles/init.d/Makefile.am @@ -0,0 +1,4 @@ +EXTRA_DIST = xrdp +startscriptdir=$(sysconfdir)/init.d +startscript_DATA = xrdp + diff --git a/instfiles/init.d/xrdp b/instfiles/init.d/xrdp new file mode 100755 index 00000000..d51862d8 --- /dev/null +++ b/instfiles/init.d/xrdp @@ -0,0 +1,160 @@ +#!/bin/sh -e +# +# start/stop xrdp and sesman daemons +# +### BEGIN INIT INFO +# Provides: xrdp +# Required-Start: $network $remote_fs +# Required-Stop: $network $remote_fs +# Default-Start: 2 3 4 5 +# Default-Stop: 0 1 6 +# Short-Description: Start xrdp and sesman daemons +# Description: XRDP uses the Remote Desktop Protocol to present a +# graphical login to a remote client allowing connection +# to a VNC server or another RDP server. +### END INIT INFO + +PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin +DAEMON=/usr/sbin/xrdp +PIDDIR=/var/run/xrdp/ +SESMAN_START=yes +USERID=root +RSAKEYS=/etc/xrdp/rsakeys.ini +NAME=xrdp +DESC="Remote Desktop Protocol server" + +test -x $DAEMON || exit 0 + +. /lib/lsb/init-functions + +check_root() { + if [ "$(id -u)" != "0" ]; then + log_failure_msg "You must be root to start, stop or restart $NAME." + exit 4 + fi +} + +if [ -r /etc/default/$NAME ]; then + . /etc/default/$NAME +fi + +# Tasks that can only be run as root +if [ "$(id -u)" = "0" ]; then + # Check for pid dir + if [ ! -d $PIDDIR ] ; then + mkdir $PIDDIR + fi + chown $USERID:$USERID $PIDDIR + + # Check for rsa key + if [ ! -f $RSAKEYS ] || cmp $RSAKEYS /usr/share/doc/xrdp/rsakeys.ini > /dev/null; then + log_action_begin_msg "Generating xrdp RSA keys..." + (umask 077 ; xrdp-keygen xrdp $RSAKEYS) + chown $USERID:$USERID $RSAKEYS + if [ ! -f $RSAKEYS ] ; then + log_action_end_msg 1 "could not create $RSAKEYS" + exit 1 + fi + log_action_end_msg 0 "done" + fi +fi + + +case "$1" in + start) + check_root + exitval=0 + log_daemon_msg "Starting $DESC " + if pidofproc -p $PIDDIR/$NAME.pid $DAEMON > /dev/null; then + log_progress_msg "$NAME apparently already running" + log_end_msg 0 + exit 0 + fi + log_progress_msg $NAME + start-stop-daemon --start --quiet --oknodo --pidfile $PIDDIR/$NAME.pid \ + --chuid $USERID:$USERID --exec $DAEMON + exitval=$? + if [ "$SESMAN_START" = "yes" ] ; then + log_progress_msg "sesman" + start-stop-daemon --start --quiet --oknodo --pidfile $PIDDIR/xrdp-sesman.pid \ + --exec /usr/sbin/xrdp-sesman + value=$? + [ $value -gt 0 ] && exitval=$value + fi + # Make pidfile readables for all users (for status to work) + [ -e $PIDDIR/xrdp-sesman.pid ] && chmod 0644 $PIDDIR/xrdp-sesman.pid + [ -e $PIDDIR/$NAME.pid ] && chmod 0644 $PIDDIR/$NAME.pid + # Note: Unfortunately, xrdp currently takes too long to create + # the pidffile unless properly patched + log_end_msg $exitval + ;; + stop) + check_root + [ -n "$XRDP_UPGRADE" -a "$RESTART_ON_UPGRADE" = "no" ] && { + echo "Upgrade in progress, no restart of xrdp." + exit 0 + } + exitval=0 + log_daemon_msg "Stopping RDP Session manager " + log_progress_msg "sesman" + if pidofproc -p $PIDDIR/xrdp-sesman.pid /usr/sbin/xrdp-sesman > /dev/null; then + start-stop-daemon --stop --quiet --oknodo --pidfile $PIDDIR/xrdp-sesman.pid \ + --chuid $USERID:$USERID --exec /usr/sbin/xrdp-sesman + exitval=$? + else + log_progress_msg "apparently not running" + fi + log_progress_msg $NAME + if pidofproc -p $PIDDIR/$NAME.pid $DAEMON > /dev/null; then + start-stop-daemon --stop --quiet --oknodo --pidfile $PIDDIR/$NAME.pid \ + --exec $DAEMON + value=$? + [ $value -gt 0 ] && exitval=$value + else + log_progress_msg "apparently not running" + fi + log_end_msg $exitval + ;; + restart|force-reload) + check_root + $0 stop + # Wait for things to settle down + sleep 1 + $0 start + ;; + reload) + log_warning_msg "Reloading $NAME daemon: not implemented, as the daemon" + log_warning_msg "cannot re-read the config file (use restart)." + ;; + status) + exitval=0 + log_daemon_msg "Checking status of $DESC" "$NAME" + if pidofproc -p $PIDDIR/$NAME.pid $DAEMON > /dev/null; then + log_progress_msg "running" + log_end_msg 0 + else + log_progress_msg "apparently not running" + log_end_msg 1 || true + exitval=1 + fi + if [ "$SESMAN_START" = "yes" ] ; then + log_daemon_msg "Checking status of RDP Session Manager" "sesman" + if pidofproc -p $PIDDIR/xrdp-sesman.pid /usr/sbin/xrdp-sesman > /dev/null; then + log_progress_msg "running" + log_end_msg 0 + else + log_progress_msg "apparently not running" + log_end_msg 1 || true + exitval=1 + fi + fi + exit $exitval + ;; + *) + N=/etc/init.d/$NAME + echo "Usage: $N {start|stop|restart|force-reload|status}" >&2 + exit 1 + ;; +esac + +exit 0 diff --git a/instfiles/km-0816.ini b/instfiles/km-0816.ini new file mode 100644 index 00000000..bf3def89 --- /dev/null +++ b/instfiles/km-0816.ini @@ -0,0 +1,659 @@ +[noshift] +Key8=0:0 +Key9=65307:27 +Key10=49:49 +Key11=50:50 +Key12=51:51 +Key13=52:52 +Key14=53:53 +Key15=54:54 +Key16=55:55 +Key17=56:56 +Key18=57:57 +Key19=48:48 +Key20=39:39 +Key21=171:171 +Key22=65288:8 +Key23=65289:9 +Key24=113:113 +Key25=119:119 +Key26=101:101 +Key27=114:114 +Key28=116:116 +Key29=121:121 +Key30=117:117 +Key31=105:105 +Key32=111:111 +Key33=112:112 +Key34=43:43 +Key35=65105:180 +Key36=65293:13 +Key37=65507:0 +Key38=97:97 +Key39=115:115 +Key40=100:100 +Key41=102:102 +Key42=103:103 +Key43=104:104 +Key44=106:106 +Key45=107:107 +Key46=108:108 +Key47=231:231 +Key48=186:186 +Key49=92:92 +Key50=65505:0 +Key51=65107:126 +Key52=122:122 +Key53=120:120 +Key54=99:99 +Key55=118:118 +Key56=98:98 +Key57=110:110 +Key58=109:109 +Key59=44:44 +Key60=46:46 +Key61=45:45 +Key62=65506:0 +Key63=65450:42 +Key64=65513:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65429:0 +Key80=65431:0 +Key81=65434:0 +Key82=65453:45 +Key83=65430:0 +Key84=65437:0 +Key85=65432:0 +Key86=65451:43 +Key87=65436:0 +Key88=65433:0 +Key89=65435:0 +Key90=65438:0 +Key91=65439:0 +Key92=0:0 +Key93=65406:0 +Key94=60:60 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=0:0 +Key115=65515:0 +Key116=65312:0 +Key117=65383:0 +Key118=0:0 +Key119=0:0 +Key120=0:0 +Key121=0:0 +Key122=0:0 +Key123=0:0 +Key124=65027:0 +Key125=0:0 +Key126=65469:61 +Key127=0:0 +Key128=0:0 +Key129=269025170:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=269025166:0 +Key134=0:0 +Key135=65382:0 +Key136=65381:0 +Key137=0:0 + +[shift] +Key8=0:0 +Key9=65307:27 +Key10=33:33 +Key11=34:34 +Key12=35:35 +Key13=36:36 +Key14=37:37 +Key15=38:38 +Key16=47:47 +Key17=40:40 +Key18=41:41 +Key19=61:61 +Key20=63:63 +Key21=187:187 +Key22=65288:8 +Key23=65056:0 +Key24=81:81 +Key25=87:87 +Key26=69:69 +Key27=82:82 +Key28=84:84 +Key29=89:89 +Key30=85:85 +Key31=73:73 +Key32=79:79 +Key33=80:80 +Key34=42:42 +Key35=65104:96 +Key36=65293:13 +Key37=65507:0 +Key38=65:65 +Key39=83:83 +Key40=68:68 +Key41=70:70 +Key42=71:71 +Key43=72:72 +Key44=74:74 +Key45=75:75 +Key46=76:76 +Key47=199:199 +Key48=170:170 +Key49=124:124 +Key50=65505:0 +Key51=65106:94 +Key52=90:90 +Key53=88:88 +Key54=67:67 +Key55=86:86 +Key56=66:66 +Key57=78:78 +Key58=77:77 +Key59=59:59 +Key60=58:58 +Key61=95:95 +Key62=65506:0 +Key63=65450:42 +Key64=65511:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65273:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65454:46 +Key92=0:0 +Key93=65406:0 +Key94=62:62 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=0:0 +Key115=65515:0 +Key116=65312:0 +Key117=65383:0 +Key118=0:0 +Key119=0:0 +Key120=0:0 +Key121=0:0 +Key122=0:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=269025170:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=269025166:0 +Key134=0:0 +Key135=65382:0 +Key136=65381:0 +Key137=0:0 + +[altgr] +Key8=0:0 +Key9=65307:27 +Key10=185:185 +Key11=64:64 +Key12=163:163 +Key13=167:167 +Key14=189:189 +Key15=172:172 +Key16=123:123 +Key17=91:91 +Key18=93:93 +Key19=125:125 +Key20=92:92 +Key21=65115:184 +Key22=65288:8 +Key23=65289:9 +Key24=64:64 +Key25=435:322 +Key26=8364:8364 +Key27=182:182 +Key28=956:359 +Key29=2299:8592 +Key30=2302:8595 +Key31=2301:8594 +Key32=248:248 +Key33=254:254 +Key34=65111:168 +Key35=65107:126 +Key36=65293:13 +Key37=65507:0 +Key38=230:230 +Key39=223:223 +Key40=240:240 +Key41=496:273 +Key42=959:331 +Key43=689:295 +Key44=106:106 +Key45=930:312 +Key46=435:322 +Key47=65105:180 +Key48=65106:94 +Key49=172:172 +Key50=65505:0 +Key51=65104:96 +Key52=171:171 +Key53=187:187 +Key54=162:162 +Key55=2770:8220 +Key56=2771:8221 +Key57=110:110 +Key58=181:181 +Key59=2211:0 +Key60=183:183 +Key61=65120:0 +Key62=65506:0 +Key63=65450:42 +Key64=65513:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65429:0 +Key80=65431:0 +Key81=65434:0 +Key82=65453:45 +Key83=65430:0 +Key84=65437:0 +Key85=65432:0 +Key86=65451:43 +Key87=65436:0 +Key88=65433:0 +Key89=65435:0 +Key90=65438:0 +Key91=65439:0 +Key92=0:0 +Key93=65406:0 +Key94=124:124 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=0:0 +Key115=65515:0 +Key116=65312:0 +Key117=65383:0 +Key118=0:0 +Key119=0:0 +Key120=0:0 +Key121=0:0 +Key122=0:0 +Key123=0:0 +Key124=65027:0 +Key125=0:0 +Key126=65469:61 +Key127=0:0 +Key128=0:0 +Key129=269025170:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=269025166:0 +Key134=0:0 +Key135=65382:0 +Key136=65381:0 +Key137=0:0 + +[capslock] +Key8=0:0 +Key9=65307:27 +Key10=49:49 +Key11=50:50 +Key12=51:51 +Key13=52:52 +Key14=53:53 +Key15=54:54 +Key16=55:55 +Key17=56:56 +Key18=57:57 +Key19=48:48 +Key20=39:39 +Key21=171:171 +Key22=65288:8 +Key23=65289:9 +Key24=81:81 +Key25=87:87 +Key26=69:69 +Key27=82:82 +Key28=84:84 +Key29=89:89 +Key30=85:85 +Key31=73:73 +Key32=79:79 +Key33=80:80 +Key34=43:43 +Key35=65105:180 +Key36=65293:13 +Key37=65507:0 +Key38=65:65 +Key39=83:83 +Key40=68:68 +Key41=70:70 +Key42=71:71 +Key43=72:72 +Key44=74:74 +Key45=75:75 +Key46=76:76 +Key47=199:199 +Key48=186:186 +Key49=92:92 +Key50=65505:0 +Key51=65107:126 +Key52=90:90 +Key53=88:88 +Key54=67:67 +Key55=86:86 +Key56=66:66 +Key57=78:78 +Key58=77:77 +Key59=44:44 +Key60=46:46 +Key61=45:45 +Key62=65506:0 +Key63=65450:42 +Key64=65513:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65407:0 +Key78=65300:0 +Key79=65429:0 +Key80=65431:0 +Key81=65434:0 +Key82=65453:45 +Key83=65430:0 +Key84=65437:0 +Key85=65432:0 +Key86=65451:43 +Key87=65436:0 +Key88=65433:0 +Key89=65435:0 +Key90=65438:0 +Key91=65439:0 +Key92=0:0 +Key93=65406:0 +Key94=60:60 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=0:0 +Key115=65515:0 +Key116=65312:0 +Key117=65383:0 +Key118=0:0 +Key119=0:0 +Key120=0:0 +Key121=0:0 +Key122=0:0 +Key123=0:0 +Key124=65027:0 +Key125=0:0 +Key126=65469:61 +Key127=0:0 +Key128=0:0 +Key129=269025170:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=269025166:0 +Key134=0:0 +Key135=65382:0 +Key136=65381:0 +Key137=0:0 + +[shiftcapslock] +Key8=0:0 +Key9=65307:27 +Key10=33:33 +Key11=34:34 +Key12=35:35 +Key13=36:36 +Key14=37:37 +Key15=38:38 +Key16=47:47 +Key17=40:40 +Key18=41:41 +Key19=61:61 +Key20=63:63 +Key21=187:187 +Key22=65288:8 +Key23=65056:0 +Key24=113:113 +Key25=119:119 +Key26=101:101 +Key27=114:114 +Key28=116:116 +Key29=121:121 +Key30=117:117 +Key31=105:105 +Key32=111:111 +Key33=112:112 +Key34=42:42 +Key35=65104:96 +Key36=65293:13 +Key37=65507:0 +Key38=97:97 +Key39=115:115 +Key40=100:100 +Key41=102:102 +Key42=103:103 +Key43=104:104 +Key44=106:106 +Key45=107:107 +Key46=108:108 +Key47=231:231 +Key48=170:170 +Key49=124:124 +Key50=65505:0 +Key51=65106:94 +Key52=122:122 +Key53=120:120 +Key54=99:99 +Key55=118:118 +Key56=98:98 +Key57=110:110 +Key58=109:109 +Key59=59:59 +Key60=58:58 +Key61=95:95 +Key62=65506:0 +Key63=65450:42 +Key64=65511:0 +Key65=32:32 +Key66=65509:0 +Key67=65470:0 +Key68=65471:0 +Key69=65472:0 +Key70=65473:0 +Key71=65474:0 +Key72=65475:0 +Key73=65476:0 +Key74=65477:0 +Key75=65478:0 +Key76=65479:0 +Key77=65273:0 +Key78=65300:0 +Key79=65463:55 +Key80=65464:56 +Key81=65465:57 +Key82=65453:45 +Key83=65460:52 +Key84=65461:53 +Key85=65462:54 +Key86=65451:43 +Key87=65457:49 +Key88=65458:50 +Key89=65459:51 +Key90=65456:48 +Key91=65454:46 +Key92=0:0 +Key93=65406:0 +Key94=62:62 +Key95=65480:0 +Key96=65481:0 +Key97=65360:0 +Key98=65362:0 +Key99=65365:0 +Key100=65361:0 +Key101=0:0 +Key102=65363:0 +Key103=65367:0 +Key104=65364:0 +Key105=65366:0 +Key106=65379:0 +Key107=65535:127 +Key108=65421:13 +Key109=65508:0 +Key110=65299:0 +Key111=65377:0 +Key112=65455:47 +Key113=65027:0 +Key114=0:0 +Key115=65515:0 +Key116=65312:0 +Key117=65383:0 +Key118=0:0 +Key119=0:0 +Key120=0:0 +Key121=0:0 +Key122=0:0 +Key123=0:0 +Key124=65027:0 +Key125=65513:0 +Key126=65469:61 +Key127=65515:0 +Key128=65517:0 +Key129=269025170:0 +Key130=0:0 +Key131=0:0 +Key132=0:0 +Key133=269025166:0 +Key134=0:0 +Key135=65382:0 +Key136=65381:0 +Key137=0:0