diff --git a/net/Makefile b/net/Makefile index 93b134331fa7..8e43c9de0419 100644 --- a/net/Makefile +++ b/net/Makefile @@ -1250,6 +1250,7 @@ SUBDIR += xpvm SUBDIR += xrdesktop SUBDIR += xrdp + SUBDIR += xrdp-devel SUBDIR += yaph SUBDIR += yate SUBDIR += yaz diff --git a/net/xrdp-devel/Makefile b/net/xrdp-devel/Makefile new file mode 100644 index 000000000000..5bab053e03b5 --- /dev/null +++ b/net/xrdp-devel/Makefile @@ -0,0 +1,83 @@ +# Created by: alepulver +# $FreeBSD$ + +PORTNAME= xrdp +PORTVERSION= 0.7.0.20120918 +CATEGORIES= net +MASTER_SITES= http://www.club.kyutech.ac.jp/~meta/distfiles/ \ + http://key2.jp/~meta/distfiles/ +PKGNAMESUFFIX= -devel +DIST_SUBDIR?= ${PORTNAME} + +PATCH_SITES= http://www.club.kyutech.ac.jp/~meta/patches/xrdp/0.6.0/ \ + http://key2.jp/~meta/patches/xrdp/0.6.0/ + +MAINTAINER= meta+ports@vmeta.jp +COMMENT= An open source Remote Desktop Protocol (RDP) server + +LICENSE= GPLv2 +LICENSE_FILE= ${WRKSRC}/COPYING + +USE_XORG= x11 xfixes +USE_AUTOTOOLS= autoconf:env automake:env libtool +GNU_CONFIGURE= yes +USE_RC_SUBR= xrdp + +CONFIGURE_ARGS= --localstatedir=/var +LDFLAGS+= -L${LOCALBASE}/lib +CPPFLAGS+= -I${LOCALBASE}/include +CONFLICTS= xrdp-[0-9]* + +USE_LDCONFIG= ${PREFIX}/lib/xrdp + +OPTIONS_DEFINE= DEBUG GATEWAY JP106 +OPTIONS_DEFAULT= JP106 +GATEWAY_DESC= Install xrdp as RDP gateway (no VNC backend) +JP106_DESC= Install Japanese JP106 keymap + +.include + +.if ${PORT_OPTIONS:MDEBUG} +CONFIGURE_ARGS+= --enable-xrdpdebug +CFLAGS+= -DXRDP_DEBUG +.endif + +.if ${PORT_OPTIONS:MJP106} +PATCHFILES+= patch-instfiles__Makefile.am \ + patch-instfiles__km-0411.ini \ + patch-instfiles__km-e0010411.ini \ + patch-instfiles__km-e0200411.ini \ + patch-instfiles__km-e0210411.ini +PLIST_SUB+= JP106="" +.else +PLIST_SUB+= JP106="@comment " +.endif + +.if !${PORT_OPTIONS:MGATEWAY} +RUN_DEPENDS+= Xvnc:${PORTSDIR}/net/vnc +.endif + +MAN5= sesman.ini.5 xrdp.ini.5 +MAN8= xrdp-sesman.8 xrdp-sesrun.8 xrdp.8 + +SUB_FILES= pkg-message + +post-patch: +.for f in sesman/sesman.ini sesman/startwm.sh xrdp/rsakeys.ini xrdp/xrdp.ini + @${MV} ${WRKSRC}/$f ${WRKSRC}/$f.sample +.endfor + +pre-configure: + @cd ${WRKSRC} && ./bootstrap + +post-install: +.for f in rsakeys.ini sesman.ini startwm.sh xrdp.ini + @if [ ! -f ${PREFIX}/etc/xrdp/$f ]; then \ + ${CP} -p ${PREFIX}/etc/xrdp/$f.sample ${PREFIX}/etc/xrdp/$f ; \ + fi +.endfor + @if cmp -s ${PREFIX}/etc/xrdp/rsakeys.ini.sample ${PREFIX}/etc/xrdp/rsakeys.ini; then \ + ${PREFIX}/bin/xrdp-keygen xrdp ${PREFIX}/etc/xrdp/rsakeys.ini; fi + @${ECHO_CMD}; ${CAT} ${PKGMESSAGE}; ${ECHO_CMD} + +.include diff --git a/net/xrdp-devel/distinfo b/net/xrdp-devel/distinfo new file mode 100644 index 000000000000..ec1ec4d193c3 --- /dev/null +++ b/net/xrdp-devel/distinfo @@ -0,0 +1,12 @@ +SHA256 (xrdp/xrdp-0.7.0.20120918.tar.gz) = 97b447a2634dc151b869beca216116c5ec7cb17cc662c0642861c6226c4dcec9 +SIZE (xrdp/xrdp-0.7.0.20120918.tar.gz) = 6618465 +SHA256 (xrdp/patch-instfiles__Makefile.am) = 92e8a1768b63f508bc5b37cdc5723d1e03875af7fbdf064aa86a6b40b1bd2f07 +SIZE (xrdp/patch-instfiles__Makefile.am) = 710 +SHA256 (xrdp/patch-instfiles__km-0411.ini) = 58bcb7f063db4fcde9230be3013d46226b8af5c0060b7faf00250a51aa7da4fd +SIZE (xrdp/patch-instfiles__km-0411.ini) = 9576 +SHA256 (xrdp/patch-instfiles__km-e0010411.ini) = 201e55ae65c223602d66eb15ac3fd53564dc3f8e856f08183f9cf8f3fc6334c3 +SIZE (xrdp/patch-instfiles__km-e0010411.ini) = 9592 +SHA256 (xrdp/patch-instfiles__km-e0200411.ini) = d6e95d98629bf346173e97ebd9fba7910971a0165fc32c3e3cada3c5a6d01de8 +SIZE (xrdp/patch-instfiles__km-e0200411.ini) = 9592 +SHA256 (xrdp/patch-instfiles__km-e0210411.ini) = f3f29efc3541c08f60edbbb3ecf85da59abe7d745b59a7d5d0340d5940c3e723 +SIZE (xrdp/patch-instfiles__km-e0210411.ini) = 9592 diff --git a/net/xrdp-devel/files/patch-common__os_calls.c b/net/xrdp-devel/files/patch-common__os_calls.c new file mode 100644 index 000000000000..d1c16a43d7da --- /dev/null +++ b/net/xrdp-devel/files/patch-common__os_calls.c @@ -0,0 +1,11 @@ +--- common/os_calls.c.orig 2011-03-12 16:10:35.000000000 +0900 ++++ common/os_calls.c 2011-03-12 16:34:05.000000000 +0900 +@@ -1987,6 +1987,8 @@ + g_clearenv(void) + { + #if defined(_WIN32) ++#elif defined(__FreeBSD__) ++ environ[0] = NULL; + #else + environ = 0; + #endif diff --git a/net/xrdp-devel/files/patch-sesman__Makefile.am b/net/xrdp-devel/files/patch-sesman__Makefile.am new file mode 100644 index 000000000000..456fe30d0441 --- /dev/null +++ b/net/xrdp-devel/files/patch-sesman__Makefile.am @@ -0,0 +1,13 @@ +--- sesman/Makefile.am.orig 2009-05-18 23:23:48.000000000 -0500 ++++ sesman/Makefile.am 2010-10-02 16:07:53.000000000 -0500 +@@ -55,4 +55,4 @@ + sesmansysconf_DATA = \ +- sesman.ini \ +- startwm.sh ++ sesman.ini.sample \ ++ startwm.sh.sample + +@@ -66,2 +66,2 @@ + install-data-hook: +- chmod 755 $(DESTDIR)$(sysconfdir)/xrdp/startwm.sh ++ chmod 755 $(DESTDIR)$(sysconfdir)/xrdp/startwm.sh.sample diff --git a/net/xrdp-devel/files/patch-sesman__session_1.patch b/net/xrdp-devel/files/patch-sesman__session_1.patch new file mode 100644 index 000000000000..b44164f527f0 --- /dev/null +++ b/net/xrdp-devel/files/patch-sesman__session_1.patch @@ -0,0 +1,85 @@ +--- sesman/session.c.orig 2011-03-12 16:10:35.000000000 +0900 ++++ sesman/session.c 2011-10-27 12:13:11.000000000 +0900 +@@ -16,7 +16,47 @@ + xrdp: A Remote Desktop Protocol server. + Copyright (C) Jay Sorg 2005-2008 + */ +- ++/* ++ * Copyright (c) 1995 Tatu Ylonen , Espoo, Finland ++ * All rights reserved ++ * ++ * As far as I am concerned, the code I have written for this software ++ * can be used freely for any purpose. Any derived versions of this ++ * software must be clearly marked as such, and if the derived work is ++ * incompatible with the protocol description in the RFC file, it must be ++ * called by a name other than "ssh" or "Secure Shell". ++ * ++ * SSH2 support by Markus Friedl. ++ * Copyright (c) 2000, 2001 Markus Friedl. All rights reserved. ++ * ++ * 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 AUTHOR ``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 AUTHOR 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. ++ * ++ * Copyright (c) 2011 Iwao, Koichiro , ++ * Kyushu Institute of Technology. ++ * All rights reserved. ++ * ++ * from: OpenBSD: session.c,v 1.252 2010/03/07 11:57:13 dtucker Exp ++ * with some ideas about process grouping from OpenSSH to xrdp ++ * ++ */ + /** + * + * @file session.c +@@ -373,6 +413,33 @@ + g_sprintf(geometry, "%dx%d", width, height); + g_sprintf(depth, "%d", bpp); + g_sprintf(screen, ":%d", display); ++#ifdef __FreeBSD__ ++ /* ++ * Create a new session and process group since 4.4BSD ++ * setlogin affects the entire process group. ++ */ ++ pid_t bsdsespid = g_fork(); ++ ++ if (bsdsespid == -1) ++ { ++ } ++ else if (bsdsespid == 0) /* BSD session leader */ ++ { ++ if (setsid() < 0) ++ { ++ log_message(LOG_LEVEL_ERROR, ++ "setsid failed: %.100s", strerror(errno)); ++ } ++ ++ if (setlogin(username) < 0) ++ { ++ log_message(LOG_LEVEL_ERROR, ++ "setlogin failed: %.100s", strerror(errno)); ++ } ++ } ++ ++ g_waitpid(bsdsespid); ++#endif + wmpid = g_fork(); + if (wmpid == -1) + { diff --git a/net/xrdp-devel/files/patch-xrdp__Makefile.am b/net/xrdp-devel/files/patch-xrdp__Makefile.am new file mode 100644 index 000000000000..d6f24f808229 --- /dev/null +++ b/net/xrdp-devel/files/patch-xrdp__Makefile.am @@ -0,0 +1,13 @@ +--- xrdp/Makefile.am.orig 2009-05-18 23:23:48.000000000 -0500 ++++ xrdp/Makefile.am 2010-10-02 16:05:10.000000000 -0500 +@@ -36,4 +36,4 @@ + xrdpsysconf_DATA = \ +- xrdp.ini \ +- rsakeys.ini ++ xrdp.ini.sample \ ++ rsakeys.ini.sample + +@@ -50,2 +50,2 @@ + install-data-hook: +- chmod 600 $(DESTDIR)$(sysconfdir)/xrdp/rsakeys.ini ++ chmod 600 $(DESTDIR)$(sysconfdir)/xrdp/rsakeys.ini.sample diff --git a/net/xrdp-devel/files/pkg-message.in b/net/xrdp-devel/files/pkg-message.in new file mode 100644 index 000000000000..7d4e3914601e --- /dev/null +++ b/net/xrdp-devel/files/pkg-message.in @@ -0,0 +1,14 @@ +============================================================================== + +XRDP has been installed. + +There is an rc.d script, so the service can be enabled by adding this line +in /etc/rc.conf: + +xrdp_enable="YES" +xrdp_sesman_enable="YES" # if you want to run xrdp-sesman on the same machine + +Do not forget to edit the configuration files in "%%PREFIX%%/etc/xrdp" +and the "%%PREFIX%%/etc/xrdp/startwm.sh" script. + +============================================================================== diff --git a/net/xrdp-devel/files/xrdp.in b/net/xrdp-devel/files/xrdp.in new file mode 100644 index 000000000000..5009343e2aa7 --- /dev/null +++ b/net/xrdp-devel/files/xrdp.in @@ -0,0 +1,56 @@ +#!/bin/sh +# +# $FreeBSD$ +# +# REQUIRE: DAEMON +# PROVIDE: xrdp xrdp_sesman +# + +. /etc/rc.subr + +name="xrdp" +rcvar=xrdp_enable +xrdp_daemons="xrdp" + +# Read settings and set default values. +load_rc_config "$name" +: ${xrdp_enable="NO"} + +# Enable/disable dependent daemon. +if [ -n "${rcvar}" ] && checkyesno "xrdp_sesman_enable"; then + xrdp_daemons="xrdp xrdp_sesman" +fi + +# Commands. +extra_commands="reload status" +start_cmd="xrdp_cmd" +stop_cmd="xrdp_cmd" +status_cmd="xrdp_cmd" +reload_cmd="xrdp_cmd" +rcvar_cmd="xrdp_cmd" + +# Command wrapper to call each of them per daemon. +xrdp_cmd() { + local name rcvar command pidfile xrdp_daemons + # Prevent recursive calling. + unset "${rc_arg}_cmd" + # Stop processes in the reverse to order. + if [ "${rc_arg}" = "stop" ] ; then + xrdp_daemons=$(reverse_list ${xrdp_daemons}) + fi + # Apply to all the daemons. + for name in ${xrdp_daemons}; do + rcvar=${name}_enable + if [ "${name}" = "xrdp_sesman" ]; then + command="%%PREFIX%%/sbin/xrdp-sesman" + pidfile="/var/run/xrdp-sesman.pid" + else + command="%%PREFIX%%/sbin/${name}" + pidfile="/var/run/${name}.pid" + fi + + run_rc_command "${_rc_prefix}${rc_arg}" ${rc_extra_args} + done +} + +run_rc_command "$1" diff --git a/net/xrdp-devel/pkg-descr b/net/xrdp-devel/pkg-descr new file mode 100644 index 000000000000..19b641051001 --- /dev/null +++ b/net/xrdp-devel/pkg-descr @@ -0,0 +1,13 @@ +Based on the work of rdesktop, xrdp uses the remote desktop protocol to +present a GUI to the user. + +The goal of this project is to provide a fully functional Linux terminal +server, capable of accepting connections from rdesktop and Microsoft's own +terminal server / remote desktop clients. + +Unlike Windows NT/2000/2003 server, xrdp will not display a Windows desktop +but an X window desktop to the user. + +Xrdp uses Xvnc or X11rdp to manage the X session. + +WWW: http://www.xrdp.org/ diff --git a/net/xrdp-devel/pkg-plist b/net/xrdp-devel/pkg-plist new file mode 100644 index 000000000000..f0a3cb6def24 --- /dev/null +++ b/net/xrdp-devel/pkg-plist @@ -0,0 +1,79 @@ +@stopdaemon xrdp +bin/xrdp-dis +bin/xrdp-genkeymap +bin/xrdp-keygen +bin/xrdp-sesadmin +bin/xrdp-sesrun +bin/xrdp-sestest +bin/xrdp-xcon +lib/xrdp/libcommon.a +lib/xrdp/libcommon.la +lib/xrdp/libcommon.so +lib/xrdp/libcommon.so.0 +lib/xrdp/libmc.a +lib/xrdp/libmc.la +lib/xrdp/libmc.so +lib/xrdp/libmc.so.0 +lib/xrdp/librdp.a +lib/xrdp/librdp.la +lib/xrdp/librdp.so +lib/xrdp/librdp.so.0 +lib/xrdp/libscp.a +lib/xrdp/libscp.la +lib/xrdp/libscp.so +lib/xrdp/libscp.so.0 +lib/xrdp/libvnc.a +lib/xrdp/libvnc.la +lib/xrdp/libvnc.so +lib/xrdp/libvnc.so.0 +lib/xrdp/libxrdp.a +lib/xrdp/libxrdp.la +lib/xrdp/libxrdp.so +lib/xrdp/libxrdp.so.0 +lib/xrdp/libxrdpapi.la +lib/xrdp/libxrdpapi.so +lib/xrdp/libxrdpapi.so.0 +lib/xrdp/libxrdpapi.a +lib/xrdp/libxup.a +lib/xrdp/libxup.la +lib/xrdp/libxup.so +lib/xrdp/libxup.so.0 +etc/pam.d/xrdp-sesman +etc/xrdp/km-0407.ini +etc/xrdp/km-0409.ini +etc/xrdp/km-040c.ini +etc/xrdp/km-0410.ini +etc/xrdp/km-0419.ini +etc/xrdp/km-041d.ini +%%JP106%%etc/xrdp/km-0411.ini +%%JP106%%etc/xrdp/km-e0200411.ini +%%JP106%%etc/xrdp/km-e0010411.ini +%%JP106%%etc/xrdp/km-e0210411.ini +@unexec if cmp -s %D/etc/xrdp/rsakeys.ini.sample %D/etc/xrdp/rsakeys.ini; then rm -f %D/etc/xrdp/rsakeys.ini; fi +@unexec if cmp -s %D/etc/xrdp/sesman.ini.sample %D/etc/xrdp/sesman.ini; then rm -f %D/etc/xrdp/sesman.ini; fi +@unexec if cmp -s %D/etc/xrdp/startwm.sh.sample %D/etc/xrdp/startwm.sh; then rm -f %D/etc/xrdp/startwm.sh; fi +@unexec if cmp -s %D/etc/xrdp/xrdp.ini.sample %D/etc/xrdp/xrdp.ini; then rm -f %D/etc/xrdp/xrdp.ini; fi +etc/xrdp/rsakeys.ini.sample +etc/xrdp/sesman.ini.sample +etc/xrdp/startwm.sh.sample +etc/xrdp/xrdp.ini.sample +@comment backup pre-compile-time keypair and generate new one +@exec if [ -f %D/etc/xrdp/rsakeys.ini ]; then cp -a %D/etc/xrdp/rsakeys.ini %D/etc/xrdp/rsakeys.ini.bak`date +%%Y%%m%%d`; %D/bin/xrdp-keygen xrdp %D/etc/xrdp/rsakeys.ini; fi +@exec [ -f %D/etc/xrdp/sesman.ini ] || cp -p %D/etc/xrdp/sesman.ini.sample %D/etc/xrdp/sesman.ini +@exec [ -f %D/etc/xrdp/startwm.sh ] || cp -p %D/etc/xrdp/startwm.sh.sample %D/etc/xrdp/startwm.sh +@exec [ -f %D/etc/xrdp/xrdp.ini ] || cp -p %D/etc/xrdp/xrdp.ini.sample %D/etc/xrdp/xrdp.ini +etc/xrdp/xrdp.sh +sbin/xrdp +sbin/xrdp-chansrv +sbin/xrdp-sesman +sbin/xrdp-sessvc +share/xrdp/ad24b.bmp +share/xrdp/ad256.bmp +share/xrdp/cursor0.cur +share/xrdp/cursor1.cur +share/xrdp/sans-10.fv1 +share/xrdp/xrdp24b.bmp +share/xrdp/xrdp256.bmp +@dirrm share/xrdp +@dirrmtry lib/xrdp +@dirrmtry etc/xrdp