net/xrdp-devel: Update to 0.9.5

Release note: https://github.com/neutrinolabs/xrdp/releases/tag/v0.9.5

PR:		224885
Submitted by:	meta+ports@vmeta.jp (maintainer)
This commit is contained in:
Luca Pizzamiglio 2018-01-10 15:37:43 +00:00
parent ba3009ac25
commit ab9f74065f
Notes: svn2git 2021-03-31 03:12:20 +00:00
svn path=/head/; revision=458649
7 changed files with 15 additions and 415 deletions

View file

@ -2,9 +2,8 @@
# $FreeBSD$
PORTNAME= xrdp
PORTVERSION= 0.9.4
PORTVERSION= 0.9.5
DISTVERSIONPREFIX= v
PORTREVISION= 1
PORTEPOCH= 1
CATEGORIES= net
PKGNAMESUFFIX= -devel
@ -21,20 +20,19 @@ BUILD_DEPENDS= ${NONEXISTENT}:audio/pulseaudio:configure \
${LOCALBASE}/bin/nasm:devel/nasm
RUN_DEPENDS= ${LOCALBASE}/lib/xorg/modules/libxorgxrdp.so:x11-drivers/xorgxrdp
USES= autoreconf:build jpeg libtool pkgconfig ssl
USES= autoreconf:build jpeg localbase libtool pkgconfig ssl
USE_XORG= ice pixman sm x11 xfixes xrandr
GNU_CONFIGURE= yes
USE_LDCONFIG= ${PREFIX}/lib/xrdp
USE_GITHUB= yes
GH_ACCOUNT= neutrinolabs
GH_PROJECT= xrdp librfxcodec:librfxcodec libpainter:libpainter
GH_TAGNAME= v0.1.3:librfxcodec v0.1.1:libpainter
GH_TAGNAME= v0.1.4:librfxcodec v0.1.1:libpainter
CONFIGURE_ARGS= --localstatedir=/var --enable-strict-locations \
--with-pkgconfigdir=${LOCALBASE}/libdata/pkgconfig \
--enable-jpeg --enable-pixman --enable-rfxcodec --enable-painter
LDFLAGS+= -L${LOCALBASE}/lib -L${OPENSSLLIB} -lssl
CFLAGS+= -I${LOCALBASE}/include -L${OPENSSLINC}
LDFLAGS+= -lssl
CONFLICTS= xrdp-[0-9]*
INSTALL_TARGET= install-strip
SUB_FILES= pkg-install pkg-message

View file

@ -1,7 +1,7 @@
TIMESTAMP = 1510103629
SHA256 (xrdp/neutrinolabs-xrdp-v0.9.4_GH0.tar.gz) = 962d9d14b9062654e4adc1c9aa1b1bd89d3707e57f20ef0c1b6e619dd025c5df
SIZE (xrdp/neutrinolabs-xrdp-v0.9.4_GH0.tar.gz) = 1868159
SHA256 (xrdp/neutrinolabs-librfxcodec-v0.1.3_GH0.tar.gz) = 9a4612691d35431b17d2f8059e7be1cabbedd4823f84608e80ca64fdc869f272
SIZE (xrdp/neutrinolabs-librfxcodec-v0.1.3_GH0.tar.gz) = 46782
TIMESTAMP = 1514517059
SHA256 (xrdp/neutrinolabs-xrdp-v0.9.5_GH0.tar.gz) = a932fc6a56d570207a58df9238cdf44f717071fd8061ac4445b5193fc3c73392
SIZE (xrdp/neutrinolabs-xrdp-v0.9.5_GH0.tar.gz) = 1877715
SHA256 (xrdp/neutrinolabs-librfxcodec-v0.1.4_GH0.tar.gz) = 8e2d6060aca6d92ebd8b5cd295e9b85b8dd12ec00aacf7e3d351a8dacb56f4f3
SIZE (xrdp/neutrinolabs-librfxcodec-v0.1.4_GH0.tar.gz) = 48379
SHA256 (xrdp/neutrinolabs-libpainter-v0.1.1_GH0.tar.gz) = 6caee8444fbd72677ac5e125c7ac99490688474975451668e751a9d9187ee5e6
SIZE (xrdp/neutrinolabs-libpainter-v0.1.1_GH0.tar.gz) = 13929

View file

@ -1,133 +0,0 @@
--- sesman/libscp/libscp_v0.c.orig 2017-09-28 02:25:19 UTC
+++ sesman/libscp/libscp_v0.c
@@ -161,7 +161,7 @@ scp_v0s_accept(struct SCP_CONNECTION *c,
struct SCP_SESSION *session = 0;
tui16 sz;
tui32 code = 0;
- char buf[257];
+ char *buf = 0;
if (!skipVchk)
{
@@ -226,27 +226,31 @@ scp_v0s_accept(struct SCP_CONNECTION *c,
/* reading username */
in_uint16_be(c->in_s, sz);
- buf[sz] = '\0';
+ buf = g_new0(char, sz);
in_uint8a(c->in_s, buf, sz);
-
+ buf[sz] = '\0';
if (0 != scp_session_set_username(session, buf))
{
scp_session_destroy(session);
log_message(LOG_LEVEL_WARNING, "[v0:%d] connection aborted: error setting username", __LINE__);
+ g_free(buf);
return SCP_SERVER_STATE_INTERNAL_ERR;
}
+ g_free(buf);
/* reading password */
in_uint16_be(c->in_s, sz);
- buf[sz] = '\0';
+ buf = g_new0(char, sz);
in_uint8a(c->in_s, buf, sz);
-
+ buf[sz] = '\0';
if (0 != scp_session_set_password(session, buf))
{
scp_session_destroy(session);
log_message(LOG_LEVEL_WARNING, "[v0:%d] connection aborted: error setting password", __LINE__);
+ g_free(buf);
return SCP_SERVER_STATE_INTERNAL_ERR;
}
+ g_free(buf);
/* width */
in_uint16_be(c->in_s, sz);
@@ -272,9 +276,11 @@ scp_v0s_accept(struct SCP_CONNECTION *c,
if (sz > 0)
{
+ buf = g_new0(char, sz);
in_uint8a(c->in_s, buf, sz);
buf[sz] = '\0';
scp_session_set_domain(session, buf);
+ g_free(buf);
}
}
@@ -285,9 +291,11 @@ scp_v0s_accept(struct SCP_CONNECTION *c,
if (sz > 0)
{
+ buf = g_new0(char, sz);
in_uint8a(c->in_s, buf, sz);
buf[sz] = '\0';
scp_session_set_program(session, buf);
+ g_free(buf);
}
}
@@ -298,9 +306,11 @@ scp_v0s_accept(struct SCP_CONNECTION *c,
if (sz > 0)
{
+ buf = g_new0(char, sz);
in_uint8a(c->in_s, buf, sz);
buf[sz] = '\0';
scp_session_set_directory(session, buf);
+ g_free(buf);
}
}
@@ -311,9 +321,11 @@ scp_v0s_accept(struct SCP_CONNECTION *c,
if (sz > 0)
{
+ buf = g_new0(char, sz);
in_uint8a(c->in_s, buf, sz);
buf[sz] = '\0';
scp_session_set_client_ip(session, buf);
+ g_free(buf);
}
}
}
@@ -332,29 +344,35 @@ scp_v0s_accept(struct SCP_CONNECTION *c,
scp_session_set_type(session, SCP_GW_AUTHENTICATION);
/* reading username */
in_uint16_be(c->in_s, sz);
- buf[sz] = '\0';
+ buf = g_new0(char, sz);
in_uint8a(c->in_s, buf, sz);
+ buf[sz] = '\0';
/* g_writeln("Received user name: %s",buf); */
if (0 != scp_session_set_username(session, buf))
{
scp_session_destroy(session);
/* until syslog merge log_message(s_log, LOG_LEVEL_WARNING, "[v0:%d] connection aborted: error setting username", __LINE__);*/
+ g_free(buf);
return SCP_SERVER_STATE_INTERNAL_ERR;
}
+ g_free(buf);
/* reading password */
in_uint16_be(c->in_s, sz);
- buf[sz] = '\0';
+ buf = g_new0(char, sz);
in_uint8a(c->in_s, buf, sz);
+ buf[sz] = '\0';
/* g_writeln("Received password: %s",buf); */
if (0 != scp_session_set_password(session, buf))
{
scp_session_destroy(session);
/* until syslog merge log_message(s_log, LOG_LEVEL_WARNING, "[v0:%d] connection aborted: error setting password", __LINE__); */
+ g_free(buf);
return SCP_SERVER_STATE_INTERNAL_ERR;
}
+ g_free(buf);
}
else
{

View file

@ -1,6 +1,6 @@
--- configure.ac.orig 2017-09-28 02:25:19 UTC
--- configure.ac.orig 2017-12-27 14:40:24 UTC
+++ configure.ac
@@ -156,11 +156,35 @@ AC_CHECK_FUNC(dlopen, [],
@@ -159,11 +159,35 @@ AC_CHECK_FUNC(dlopen, [],
AC_SUBST(DLOPEN_LIBS)
# checking for openssl

View file

@ -1,225 +0,0 @@
--- common/xrdp_constants.h.orig 2017-09-28 02:25:19 UTC
+++ common/xrdp_constants.h
@@ -189,13 +189,21 @@
#define RDP_KEYPRESS 0
#define RDP_KEYRELEASE (KBD_FLAG_DOWN | KBD_FLAG_UP)
-#define MOUSE_FLAG_MOVE 0x0800
-#define MOUSE_FLAG_BUTTON1 0x1000
-#define MOUSE_FLAG_BUTTON2 0x2000
-#define MOUSE_FLAG_BUTTON3 0x4000
-#define MOUSE_FLAG_BUTTON4 0x0280
-#define MOUSE_FLAG_BUTTON5 0x0380
-#define MOUSE_FLAG_DOWN 0x8000
+/* Mouse Event (MS-RDPBCGR 2.2.8.1.1.3.1.1.3) */
+#define PTRFLAGS_HWHEEL 0x0400
+#define PTRFLAGS_WHEEL 0x0200
+#define PTRFLAGS_WHEEL_NEGATIVE 0x0100
+#define WheelRotationMask 0x01FF
+#define PTRFLAGS_MOVE 0x0800
+#define PTRFLAGS_DOWN 0x8000
+#define PTRFLAGS_BUTTON1 0x1000
+#define PTRFLAGS_BUTTON2 0x2000
+#define PTRFLAGS_BUTTON3 0x4000
+
+/* Mouse Event (MS-RDPBCGR 2.2.8.1.1.3.1.1.4) */
+#define PTRXFLAGS_DOWN 0x8000
+#define PTRXFLAGS_BUTTON1 0x0001
+#define PTRXFLAGS_BUTTON2 0x0002
/* Raster operation masks */
#define ROP2_S(rop3) (rop3 & 0xf)
@@ -594,11 +602,16 @@
#define SOLIDPATTERNBRUSHONLY 0x0040
#define ORDERFLAGS_EXTRA_FLAGS 0x0080
-#define INPUT_FLAG_SCANCODES 0x0001
-#define INPUT_FLAG_MOUSEX 0x0004
-#define INPUT_FLAG_FASTPATH_INPUT 0x0008
-#define INPUT_FLAG_UNICODE 0x0010
-#define INPUT_FLAG_FASTPATH_INPUT2 0x0020
+/* Input Capability Set (MS-RDPBCGR 2.2.7.1.6) */
+#define INPUT_FLAG_SCANCODES 0x0001
+#define INPUT_FLAG_MOUSEX 0x0004
+#define INPUT_FLAG_FASTPATH_INPUT 0x0008
+#define INPUT_FLAG_UNICODE 0x0010
+#define INPUT_FLAG_FASTPATH_INPUT2 0x0020
+#define INPUT_FLAG_UNUSED1 0x0040
+#define INPUT_FLAG_UNUSED2 0x0080
+#define TS_INPUT_FLAG_MOUSE_HWHEEL 0x0100
+#define TS_INPUT_FLAG_QOE_TIMESTAMPS 0x0200
#define COMPDESK_NOT_SUPPORTED 0x0000
#define COMPDESK_SUPPORTED 0x0001
--- libxrdp/xrdp_caps.c.orig 2017-09-28 02:25:19 UTC
+++ libxrdp/xrdp_caps.c
@@ -924,7 +924,11 @@ xrdp_caps_send_demand_active(struct xrdp
out_uint16_le(s, RDP_CAPSET_INPUT); /* 13(0xd) */
out_uint16_le(s, RDP_CAPLEN_INPUT); /* 88(0x58) */
- flags = INPUT_FLAG_SCANCODES | INPUT_FLAG_MOUSEX | INPUT_FLAG_UNICODE;
+ flags = INPUT_FLAG_SCANCODES |
+ INPUT_FLAG_MOUSEX |
+ INPUT_FLAG_UNICODE |
+ TS_INPUT_FLAG_MOUSE_HWHEEL;
+
if (self->client_info.use_fast_path & 2)
{
flags |= INPUT_FLAG_FASTPATH_INPUT | INPUT_FLAG_FASTPATH_INPUT2;
--- xrdp/xrdp_wm.c.orig 2017-09-28 02:25:19 UTC
+++ xrdp/xrdp_wm.c
@@ -1264,6 +1264,8 @@ xrdp_wm_mouse_click(struct xrdp_wm *self
self->mm->mod->mod_event(self->mm->mod, WM_BUTTON3UP, x, y, 0, 0);
}
+ /* vertical scroll */
+
if (but == 4)
{
self->mm->mod->mod_event(self->mm->mod, WM_BUTTON4DOWN,
@@ -1279,21 +1281,23 @@ xrdp_wm_mouse_click(struct xrdp_wm *self
self->mm->mod->mod_event(self->mm->mod, WM_BUTTON5UP,
self->mouse_x, self->mouse_y, 0, 0);
}
- if (but == 6 && down)
- {
- self->mm->mod->mod_event(self->mm->mod, WM_BUTTON6DOWN, x, y, 0, 0);
- }
- else if (but == 6 && !down)
- {
- self->mm->mod->mod_event(self->mm->mod, WM_BUTTON6UP, x, y, 0, 0);
- }
- if (but == 7 && down)
+
+ /* horizontal scroll */
+
+ if (but == 6)
{
- self->mm->mod->mod_event(self->mm->mod, WM_BUTTON7DOWN, x, y, 0, 0);
+ self->mm->mod->mod_event(self->mm->mod, WM_BUTTON6DOWN,
+ self->mouse_x, self->mouse_y, 0, 0);
+ self->mm->mod->mod_event(self->mm->mod, WM_BUTTON6UP,
+ self->mouse_x, self->mouse_y, 0, 0);
}
- else if (but == 7 && !down)
+
+ if (but == 7)
{
- self->mm->mod->mod_event(self->mm->mod, WM_BUTTON7UP, x, y, 0, 0);
+ self->mm->mod->mod_event(self->mm->mod, WM_BUTTON7DOWN,
+ self->mouse_x, self->mouse_y, 0, 0);
+ self->mm->mod->mod_event(self->mm->mod, WM_BUTTON7UP,
+ self->mouse_x, self->mouse_y, 0, 0);
}
}
}
@@ -1638,14 +1642,14 @@ xrdp_wm_process_input_mouse(struct xrdp_
{
DEBUG(("mouse event flags %4.4x x %d y %d", device_flags, x, y));
- if (device_flags & MOUSE_FLAG_MOVE) /* 0x0800 */
+ if (device_flags & PTRFLAGS_MOVE)
{
xrdp_wm_mouse_move(self, x, y);
}
- if (device_flags & MOUSE_FLAG_BUTTON1) /* 0x1000 */
+ if (device_flags & PTRFLAGS_BUTTON1)
{
- if (device_flags & MOUSE_FLAG_DOWN) /* 0x8000 */
+ if (device_flags & PTRFLAGS_DOWN)
{
xrdp_wm_mouse_click(self, x, y, 1, 1);
}
@@ -1655,9 +1659,9 @@ xrdp_wm_process_input_mouse(struct xrdp_
}
}
- if (device_flags & MOUSE_FLAG_BUTTON2) /* 0x2000 */
+ if (device_flags & PTRFLAGS_BUTTON2)
{
- if (device_flags & MOUSE_FLAG_DOWN) /* 0x8000 */
+ if (device_flags & PTRFLAGS_DOWN)
{
xrdp_wm_mouse_click(self, x, y, 2, 1);
}
@@ -1667,9 +1671,9 @@ xrdp_wm_process_input_mouse(struct xrdp_
}
}
- if (device_flags & MOUSE_FLAG_BUTTON3) /* 0x4000 */
+ if (device_flags & PTRFLAGS_BUTTON3)
{
- if (device_flags & MOUSE_FLAG_DOWN) /* 0x8000 */
+ if (device_flags & PTRFLAGS_DOWN)
{
xrdp_wm_mouse_click(self, x, y, 3, 1);
}
@@ -1679,9 +1683,10 @@ xrdp_wm_process_input_mouse(struct xrdp_
}
}
- if (device_flags & 0x200) /* PTRFLAGS_WHEEL */
+ /* vertical mouse wheel */
+ if (device_flags & PTRFLAGS_WHEEL)
{
- if (device_flags & 0x100) /* PTRFLAGS_WHEEL_NEGATIVE */
+ if (device_flags & PTRFLAGS_WHEEL_NEGATIVE)
{
xrdp_wm_mouse_click(self, 0, 0, 5, 0);
}
@@ -1691,6 +1696,24 @@ xrdp_wm_process_input_mouse(struct xrdp_
}
}
+ /* horizontal mouse wheel */
+
+ /**
+ * As mstsc does MOUSE not MOUSEX for horizontal scrolling,
+ * PTRFLAGS_HWHEEL must be handled here.
+ */
+ if (device_flags & PTRFLAGS_HWHEEL)
+ {
+ if (device_flags & PTRFLAGS_WHEEL_NEGATIVE)
+ {
+ xrdp_wm_mouse_click(self, 0, 0, 6, 0);
+ }
+ else
+ {
+ xrdp_wm_mouse_click(self, 0, 0, 7, 0);
+ }
+ }
+
return 0;
}
@@ -1699,24 +1722,24 @@ static int
xrdp_wm_process_input_mousex(struct xrdp_wm* self, int device_flags,
int x, int y)
{
- if (device_flags & 0x8000) /* PTRXFLAGS_DOWN */
+ if (device_flags & PTRXFLAGS_DOWN)
{
- if (device_flags & 0x0001) /* PTRXFLAGS_BUTTON1 */
+ if (device_flags & PTRXFLAGS_BUTTON1)
{
xrdp_wm_mouse_click(self, x, y, 6, 1);
}
- else if (device_flags & 0x0002) /* PTRXFLAGS_BUTTON2 */
+ else if (device_flags & PTRXFLAGS_BUTTON2)
{
xrdp_wm_mouse_click(self, x, y, 7, 1);
}
}
else
{
- if (device_flags & 0x0001) /* PTRXFLAGS_BUTTON1 */
+ if (device_flags & PTRXFLAGS_BUTTON1)
{
xrdp_wm_mouse_click(self, x, y, 6, 0);
}
- else if (device_flags & 0x0002) /* PTRXFLAGS_BUTTON2 */
+ else if (device_flags & PTRXFLAGS_BUTTON2)
{
xrdp_wm_mouse_click(self, x, y, 7, 0);
}

View file

@ -1,40 +0,0 @@
--- sesman/chansrv/sound.c.orig 2017-09-28 02:25:19 UTC
+++ sesman/chansrv/sound.c
@@ -400,19 +400,16 @@ sound_process_output_format(int aindex,
LOG(0, ("wFormatTag, fdk aac"));
g_client_does_fdk_aac = 1;
g_client_fdk_aac_index = aindex;
- g_bbuf_size = 4096;
break;
case WAVE_FORMAT_MPEGLAYER3:
LOG(0, ("wFormatTag, mp3"));
g_client_does_mp3lame = 1;
g_client_mp3lame_index = aindex;
- g_bbuf_size = 11520;
break;
case WAVE_FORMAT_OPUS:
LOG(0, ("wFormatTag, opus"));
g_client_does_opus = 1;
g_client_opus_index = aindex;
- g_bbuf_size = 11520;
break;
}
@@ -840,14 +837,17 @@ sound_wave_compress(char *data, int data
{
if (g_client_does_fdk_aac)
{
+ g_bbuf_size = 4096;
return sound_wave_compress_fdk_aac(data, data_bytes, format_index);
}
else if (g_client_does_opus)
{
+ g_bbuf_size = 11520;
return sound_wave_compress_opus(data, data_bytes, format_index);
}
else if (g_client_does_mp3lame)
{
+ g_bbuf_size = 11520;
return sound_wave_compress_mp3lame(data, data_bytes, format_index);
}
return data_bytes;

View file

@ -1,6 +1,6 @@
--- sesman/sesman.ini.orig 2017-07-14 12:22:02 UTC
--- sesman/sesman.ini.orig 2017-12-27 14:40:24 UTC
+++ sesman/sesman.ini
@@ -77,8 +77,8 @@ param=xrdp/xorg.conf
@@ -75,8 +75,8 @@ param=xrdp/xorg.conf
param=-noreset
param=-nolisten
param=tcp
@ -9,5 +9,5 @@
+#param=-logfile
+#param=.xorgxrdp.%s.log
[Chansrv]
; drive redirection, defaults to xrdp_client if not set
[X11rdp]
param=X11rdp