xrdp-0.9.11.ebuild 4.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144
  1. # Copyright 1999-2016 Gentoo Foundation
  2. # Distributed under the terms of the GNU General Public License v2
  3. # $Id$
  4. EAPI=5
  5. inherit autotools eutils pam systemd
  6. DESCRIPTION="An open source Remote Desktop Protocol server"
  7. HOMEPAGE="http://www.xrdp.org/"
  8. SRC_URI="https://github.com/neutrinolabs/xrdp/releases/download/v${PV}/${P}.tar.gz"
  9. LICENSE="Apache-2.0"
  10. SLOT="0"
  11. KEYWORDS="~amd64 ~x86"
  12. RESTRICT="mirror"
  13. IUSE="debug fuse kerberos jpeg -neutrinordp pam +pulseaudio systemd -xrdpvr"
  14. RDEPEND="dev-libs/openssl:0=
  15. pulseaudio? ( media-sound/pulseaudio:0= )
  16. x11-libs/libX11:0=
  17. x11-libs/libXfixes:0=
  18. x11-libs/libXrandr:0=
  19. fuse? ( sys-fs/fuse:0= )
  20. jpeg? ( virtual/jpeg:0= )
  21. kerberos? ( virtual/krb5:0= )
  22. pam? ( sys-libs/pam:0= )
  23. neutrinordp? ( net-misc/freerdp:0= )
  24. xrdpvr? ( virtual/ffmpeg:0= )"
  25. DEPEND="${RDEPEND}
  26. app-arch/xz-utils
  27. dev-lang/nasm"
  28. # RDEPEND="${RDEPEND}
  29. # || (
  30. # net-misc/tigervnc:0[server,xorgmodule]
  31. # net-misc/x11rdp:0
  32. # )"
  33. src_prepare() {
  34. # don't let USE=debug adjust CFLAGS
  35. sed -i -e 's/-g -O0//' configure.ac || die
  36. # disallow root login by default
  37. sed -i -e '/^AllowRootLogin/s/true/false/' sesman/sesman.ini || die
  38. # explicitly use Xorg - and not a fallback to Xorg.wrap, to allow non-console users. EDIT: The wrapper is /usr/bin/X , the other one is /usr/bin/Xorg
  39. sed -i -e '/^param=/s!Xorg!/usr/bin/Xorg!' sesman/sesman.ini || die
  40. eautoreconf
  41. }
  42. src_configure() {
  43. use kerberos && use pam \
  44. && ewarn "Both kerberos & pam auth enabled, kerberos will take precedence."
  45. local myconf=(
  46. # warning: configure.ac is completed flawed
  47. --localstatedir="${EPREFIX}"/var
  48. # -- authentication backends --
  49. # kerberos is inside !SESMAN_NOPAM conditional for no reason
  50. $(use pam || use kerberos || echo --enable-nopam)
  51. $(usex kerberos --enable-kerberos '')
  52. # pam_userpass is not in Gentoo at the moment
  53. #--disable-pamuserpass
  54. # -- jpeg support --
  55. $(usex jpeg --enable-jpeg '')
  56. # the package supports explicit linking against libjpeg-turbo
  57. # (no need for -ljpeg compat)
  58. $(use jpeg && has_version 'media-libs/libjpeg-turbo:0' && echo --enable-tjpeg)
  59. # -- others --
  60. $(usex debug --enable-xrdpdebug '')
  61. $(usex fuse --enable-fuse '')
  62. # $(usex neutrinordp --enable-neutrinordp '')
  63. # $(usex xrdpvr --enable-xrdpvr '')
  64. "$(systemd_with_unitdir)"
  65. )
  66. econf "${myconf[@]}"
  67. }
  68. src_install() {
  69. default
  70. prune_libtool_files --all
  71. # use our pam.d file since upstream's incompatible with Gentoo
  72. use pam && newpamd "${FILESDIR}"/xrdp-sesman.pamd xrdp-sesman
  73. # and our startwm.sh
  74. exeinto /etc/xrdp
  75. doexe "${FILESDIR}"/startwm.sh
  76. # own /etc/xrdp/rsakeys.ini
  77. : > rsakeys.ini
  78. insinto /etc/xrdp
  79. doins rsakeys.ini
  80. # contributed by Jan Psota <jasiupsota@gmail.com>
  81. newinitd "${FILESDIR}/${PN}-initd" ${PN}
  82. }
  83. pkg_preinst() {
  84. # either copy existing keys over to avoid CONFIG_PROTECT whining
  85. # or generate new keys (but don't include them in binpkg!)
  86. if [[ -f ${EROOT}/etc/xrdp/rsakeys.ini ]]; then
  87. cp {"${EROOT}","${ED}"}/etc/xrdp/rsakeys.ini || die
  88. else
  89. einfo "Running xrdp-keygen to generate new rsakeys.ini ..."
  90. "${S}"/keygen/xrdp-keygen xrdp "${ED}"/etc/xrdp/rsakeys.ini \
  91. || die "xrdp-keygen failed to generate RSA keys"
  92. fi
  93. }
  94. pkg_postinst() {
  95. # check for use of bundled rsakeys.ini (installed by default upstream)
  96. if [[ $(cksum "${EROOT}"/etc/xrdp/rsakeys.ini) == '2935297193 1019 '* ]]
  97. then
  98. ewarn "You seem to be using upstream bundled rsakeys.ini. This means that"
  99. ewarn "your communications are encrypted using a well-known key. Please"
  100. ewarn "consider regenerating rsakeys.ini using the following command:"
  101. ewarn
  102. ewarn " ${EROOT}/usr/bin/xrdp-keygen xrdp ${EROOT}/etc/xrdp/rsakeys.ini"
  103. ewarn
  104. fi
  105. einfo "If you can connect to the xrdp server but your WM is crashing (KDE for example)"
  106. einfo "You might want to disable hardware acceleration for xrdp"
  107. einfo "A way to do it would be to put in /etc/xrdp/sesman.ini,"
  108. einfo "right after param=/usr/bin/Xorg (or param=Xorg) the following lines :"
  109. einfo " param=-extension"
  110. einfo " param=glx"
  111. einfo " param=-extension"
  112. einfo " param=dri2"
  113. einfo " param=-extension"
  114. einfo " param=dri3"
  115. elog "Various session types require different backend implementations:"
  116. elog "- sesman-Xvnc requires net-misc/tigervnc[server,xorgmodule]"
  117. elog "- sesman-X11rdp requires net-misc/xorgxrdp"
  118. }