neutrinolabs / xrdp

xrdp: an open source RDP server
http://www.xrdp.org/
Apache License 2.0
5.74k stars 1.73k forks source link

Clipboard won't transfer file #220

Closed therevoman closed 9 years ago

therevoman commented 9 years ago

I am using the xrdp-devel branch from Feb 25th.
Desktop: Win 7 Enterprise x64 Server: RHEL 6 x64

I was able to get xrdp built and running. Have built it with the options --enable-tjpeg --enable-fuse --enable-rfxcodec.

My clipboard works fine for text. but if I select a file on my windows system, and try to paste it into a gnome file explorer on RHEL 6 I get a strange error. but there is no addition information in the logs.

image

xrdp-chansrv.log shows this: [20150304-15:02:09] [CORE ] main: app started pid 8002(0x00001f42)

Any help getting the copy/paste of files working is greatly appreciated.

jsorg71 commented 9 years ago

I looks like fuse is not working. Does normal drive redirection work? Do you know how to run both sesman and xrdp in foreground to see more error info?

therevoman commented 9 years ago

I'm not exactly sure ho normal drive redirection works. But there were no new mount points and nothing in the thinclient_drives folder.

Would I just run the xrdp.sh script directly?

jsorg71 commented 9 years ago

No, on the server. Stop xrdp sudo /etc/xrdp/xrdp.sh stop then open 2 terminal boxes as root in one run /usr/local/sbin/xrdp -ns in another run /usr/local/sbin/xrdp-sesman -ns remember, both those need to run as root. Connect from client, login, copy and file, and look for some fuse errors.

therevoman commented 9 years ago

That helped with some of the problem. Once I added the groups "fuse" and "users" to my user I was able to mount windows drives under thinclient_drives. And my clipboard works from inside the RDP session out to my windows machine.

But I am unable to copy a file from my windows machine into the VM (via copy/paste). I'm not seeing anything obvious in the logs, ~/xrdp-chainsrv.log only shows the PID.. And the dialog looks like this.

image

Additional question: should drag and drop of files work, from outside RDP to inside RDP?
I'll post the parts of my logs that seem helpful. Let me know if you need more.

xrdp.sh console 'partial'

loaded module 'libxup.so' ok, interface size 8024, version 2
started connecting
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: NULL:NULL - socket: 12
[20150309-10:26:17] [INFO ] lib_mod_log_peer: xrdp_pid=26316 connected to X11rdp_pid=26325 X11rdp_uid=6000 X11rdp_gid=6000 client_ip=10.232.106.59 client_port=61310
connected ok
[20150309-10:26:17] [DEBUG] xrdp_mm_connect_chansrv: chansrvconnect successful
lib_mod_signal: type 2 len 0
lib_send_client_info:
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: 127.0.0.1:3350 - socket: 11
xrdp_wm_login_mode_changed: login_mode is 10
xrdp_wm_login_mode_changed: login_mode is 11
xrdp:xrdp_cache [4284202820]: xrdp_cache_add_bitmap: reset detected cache_id 2
xrdp:xrdp_cache [4284202821]: xrdp_cache_add_bitmap: reset detected cache_id 1
[20150309-10:26:17] [INFO ] The following channel is allowed: rdpdr (0)
[20150309-10:26:17] [INFO ] The following channel is allowed: rdpsnd (1)
[20150309-10:26:17] [INFO ] The following channel is allowed: cliprdr (2)
[20150309-10:26:17] [INFO ] The following channel is allowed: drdynvc (3)
[20150309-10:26:17] [DEBUG] The allow channel list now initialized for this session
xrdp:xrdp_cache [4284202917]: xrdp_cache_add_bitmap: reset detected cache_id 0

xrdp-sessman.sh partial console

[20150309-10:26:17] [INFO ] A connection received from: 127.0.0.1 port 42874
[20150309-10:26:17] [INFO ] scp thread on sck 8 started successfully
[20150309-10:26:17] [INFO ] ++ created session (access granted): username mwuser, ip 10.232.106.59:61310 - socket: 9
[20150309-10:26:17] [INFO ] starting X11rdp session...
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: NULL:NULL - socket: 15
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: NULL:NULL - socket: 12
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: NULL:NULL - socket: 12
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: NULL:NULL - socket: 7
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: 127.0.0.1:42874 - socket: 8
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: 127.0.0.1:42874 - socket: 8
[20150309-10:26:17] [INFO ] X11rdp :11 -geometry 1680x1050 -depth 16 -bs -ac -nolisten tcp -uds  
InitOutput:

X11rdp, an X server for xrdp
Version 0.7.0
Copyright (C) 2005-2012 Jay Sorg
See http://xrdp.sf.net for information on xrdp.
Underlying X server release 10903000, The X.Org Foundation
Screen width 1680 height 1050 depth 16 bpp 16
dpix 100 dpiy 100
buffer size 3528000
09/03/15 10:26:17 kill disconencted [0] timeout [60] sec
pRRScrPriv 0xd08bb0
rdpScreenInit: ret 1
InitOutput: out
(EE) AIGLX error: dlopen of /apps/X11rdp/lib/dri/swrast_dri.so failed (/apps/X11rdp/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory)
(EE) GLX: could not load software renderer
rdpSpriteDeviceCursorInitialize:
rdpPointerWarpCursor:
rdpPointerNewEventScreen:
InitInput:
rdpMouseCtrl:
rdpChangeKeyboardControl:
rdpChangeKeyboardControl:
[20150309-10:26:17] [INFO ] starting xrdp-sessvc - xpid=26325 - wmpid=26324
xrdp-sessvc: waiting for X (pid 26325) and WM (pid 26324)
chansrv::main: using log file [/home/mwuser/xrdp-chansrv.log]
[20150309-10:26:17] [CORE ] main: app started pid 26328(0x000066d8)
09/03/15 10:26:17 got a connection
process_version_msg: version 0 0 0 1
process_screen_size_msg: set width 1680 height 1050 bpp 16
process_message_channel_setup: chan name 'rdpdr' id 0 flags 00000000
process_message_channel_setup: chan name 'rdpsnd' id 1 flags 00000000
process_message_channel_setup: chan name 'cliprdr' id 2 flags 00000000
process_message_channel_setup: chan name 'drdynvc' id 3 flags 00000000
process_screen_size_msg: g_shmemid 14778384 g_shmemptr 0x7f7fe2de4000
KbdSync: toggling num lock
rdpChangeKeyboardControl:
rdpup_process_msg: got client info bytes 5312
  jpeg support 0
  offscreen support 1
  offscreen size 10485760
  offscreen entries 100
  client can not do offscreen to offscreen blits
  client can do new(color) cursor
  client can not do multimon
rdpLoadLayout: keylayout 0x00000409 variant  display 11
rdpChangeKeyboardControl:
xrdp-chansrv [4284202831]: child_signal_handler:
xrdp-chansrv [4284202831]: child_signal_handler: child pid 26383
xrdp-chansrv [4284202831]: child_signal_handler: child pid -1
xrdp-chansrv [4284202832]: xcommon_init: connected to display ok
xrdp-chansrv [4284202833]: sound_init:
rdpRRGetInfo:
...
xrdp-chansrv [4284202966]: drdynvc_process_capability_response: DVC version 3 selected
...
xrdp-chansrv [4284202982]: scard_init:
chansrv:smartcard_pcsc [4284202982]: scard_pcsc_init:

/var/log/messages partial

Mar  9 10:26:17 UTLXDEVX038 XRDP-sesman[26325]: (26325)(139656208242624)[INFO ] X11rdp :11 -geometry 1680x1050 -depth 16 -bs -ac -nolisten tcp -uds  
Mar  9 10:26:17 UTLXDEVX038 XRDP-sesman[26323]: (26323)(139656208242624)[INFO ] starting xrdp-sessvc - xpid=26325 - wmpid=26324
Mar  9 10:26:17 UTLXDEVX038 kernel: type=1400 audit(1425918377.695:203): avc:  denied  { write } for  pid=26373 comm="ck-get-x11-serv" name="X11" dev=sda1 ino=394519 scontext=system_u:system_r:consolekit_t:s0-s0:c0.c1023 tcontext=unconfined_u:object_r:initrc_tmp_t:s0 tclass=sock_file
Mar  9 10:26:17 UTLXDEVX038 XRDP[26316]: (26316)(140048929679296)[INFO ] lib_mod_log_peer: xrdp_pid=26316 connected to X11rdp_pid=26325 X11rdp_uid=6000 X11rdp_gid=6000 client_ip=10.232.106.59 client_port=61310
Mar  9 10:26:17 UTLXDEVX038 XRDP[26316]: (26316)(140048929679296)[INFO ] An established connection closed to endpoint: 127.0.0.1:3350 - socket: 11
Mar  9 10:26:17 UTLXDEVX038 XRDP[26316]: (26316)(140048929679296)[INFO ] The following channel is allowed: rdpdr (0)
Mar  9 10:26:17 UTLXDEVX038 XRDP[26316]: (26316)(140048929679296)[INFO ] The following channel is allowed: rdpsnd (1)
Mar  9 10:26:17 UTLXDEVX038 XRDP[26316]: (26316)(140048929679296)[INFO ] The following channel is allowed: cliprdr (2)
Mar  9 10:26:17 UTLXDEVX038 XRDP[26316]: (26316)(140048929679296)[INFO ] The following channel is allowed: drdynvc (3)
Mar  9 10:26:17 UTLXDEVX038 seahorse-daemon[26395]: DNS-SD initialization failed: Daemon not running
Mar  9 10:26:17 UTLXDEVX038 seahorse-daemon[26395]: init gpgme version 1.1.8
Mar  9 10:26:18 UTLXDEVX038 vmusr[26438]: [ warning] [Gtk] Unable to locate theme engine in module_path: "clearlooks",
...
Mar  9 10:26:18 UTLXDEVX038 vmusr[26438]: [ warning] [Gtk] gtk_disable_setlocale() must be called before gtk_init()
Mar  9 10:30:01 UTLXDEVX038 kernel: type=1400 audit(1425918601.313:204): avc:  denied  { module_request } for  pid=26590 comm="postdrop" kmod="net-pf-10" scontext=system_u:system_r:postfix_postdrop_t:s0-s0:c0.c1023 tcontext=system_u:system_r:kernel_t:s0 tclass=system

/var/log/xrdp.log partial

[20150309-10:26:17] [DEBUG] returnvalue from xrdp_mm_connect 0
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: NULL:NULL - socket: 12
[20150309-10:26:17] [INFO ] lib_mod_log_peer: xrdp_pid=26316 connected to X11rdp_pid=26325 X11rdp_uid=6000 X11rdp_gid=6000 client_ip=10.232.106.59 client_port=61310
[20150309-10:26:17] [DEBUG] xrdp_mm_connect_chansrv: chansrvconnect successful
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: 127.0.0.1:3350 - socket: 11
[20150309-10:26:17] [INFO ] The following channel is allowed: rdpdr (0)
[20150309-10:26:17] [INFO ] The following channel is allowed: rdpsnd (1)
[20150309-10:26:17] [INFO ] The following channel is allowed: cliprdr (2)
[20150309-10:26:17] [INFO ] The following channel is allowed: drdynvc (3)
[20150309-10:26:17] [DEBUG] The allow channel list now initialized for this session

/var/log/xrdp-sesman.log

[20150309-10:26:17] [INFO ] A connection received from: 127.0.0.1 port 42874
[20150309-10:26:17] [INFO ] scp thread on sck 8 started successfully
[20150309-10:26:17] [INFO ] ++ created session (access granted): username mwuser, ip 10.232.106.59:61310 - socket: 9
[20150309-10:26:17] [INFO ] starting X11rdp session...
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: NULL:NULL - socket: 15
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: NULL:NULL - socket: 12
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: NULL:NULL - socket: 12
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: NULL:NULL - socket: 7
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: 127.0.0.1:42874 - socket: 8
[20150309-10:26:17] [INFO ] An established connection closed to endpoint: 127.0.0.1:42874 - socket: 8
[20150309-10:26:17] [INFO ] X11rdp :11 -geometry 1680x1050 -depth 16 -bs -ac -nolisten tcp -uds  
[20150309-10:26:17] [INFO ] starting xrdp-sessvc - xpid=26325 - wmpid=26324

/var/log/secure

Mar  9 10:26:17 UTLXDEVX038 XRDP-sesman[26324]: pam_unix(xrdp-sesman:session): session opened for user mwuser by (uid=0)
Mar  9 10:26:18 UTLXDEVX038 polkitd(authority=local): Registered Authentication Agent for session /org/freedesktop/ConsoleKit/Session23 (system bus name :1.836 [/usr/libexec/polkit-gnome-authentication-agent-1], object path /org/gnome/PolicyKit1/AuthenticationAgent, locale en_US.UTF-8)
therevoman commented 9 years ago

Still having problems.

What is not working: Copying a a file on the host machine with Ctrl-C and pasting it on the RDP system Ctrl-V.

What is working: I can copy a file from the RDP system Ctrl-C and paste it on my windows host Ctrl-V. I can mount Windows drives under thinclient_Drives

jsorg71 commented 9 years ago

It's only when you copy from the client to the serrver that fuse is used for file clipboard copy. It also matters on the application that is doing the paste on the xrdp server. I noticed that the clipboard string differs. What application are you pasting into? I tested Thunar in XFCE and dolphin in KDE. I think LK tested Mint Mate 13 too. You might be using one we didn't test.

Another debug test. When you do the copy on the client, don't paste, then look in the thinclient_drives/.clipboard directory. Do you see the file?

therevoman commented 9 years ago

Thanks, yes it is only in one direction. (Client is my Windows 7 box, Server is my RHEL 6.6 box running XRDP) Copy from client to server fails.

Here are my OS release details $ lsb_release -i -r Distributor ID: RedHatEnterpriseServer Release: 6.6 System Monitor reports Release 6.6 (Santiago) Kernel Linux 2.6.32-504.8.1.el6.x86_64 GNOME 2.28.2

My File Browser reports: Nautilus 2.28.4

Fascinating.
I copy a small text file from windows (contents are "hello world") nothing shows up when I go to thinclient_drives but when I do a paste, I see the file in .clipboard

UPDATE: If I press "SKIP" it copies the file. image

[mwuser@UT ~]$ ls -al thinclient_drives/
total 0
drwxr-xr-x. 0 root   root       0 Dec 31  1969 .
drwxr-xr-x. 0 mwuser middleware 0 Mar 12 13:44 .clipboard
[mwuser@UT ~]$ ls -al thinclient_drives/.clipboard/
total 0
[mwuser@UT ~]$ ls -al thinclient_drives/.clipboard/
total 0
drwxr-xr-x. 0 root   root       0 Dec 31  1969 .
drwxr-xr-x. 0 root   root       0 Dec 31  1969 ..
-rw-r--r--. 1 mwuser middleware 4 Mar 12 13:47 test.txt 111
jsorg71 commented 9 years ago

Ok, it's been a while, it must only fuse mount the directory when you paste. I guess there is something it does not like about the file name formatting in the clipboard. If you copy 2 files, do you have to skip twice? And does it copy both? This is good info and I'm glad it's getting more testing.

therevoman commented 9 years ago

With multiple files I only have to skip once and it copies both.

Both directories (thincliend_drives and thinclient_drives/.clipboard) get created when I connect via RDP. However, the files I am pasting do not show in the .clipboard folder until I try to paste.

I'm involved with a "Cloud" project at work and have been tasked with moving our J2EE Developer systems into Cloud VM's. I'd personally rather connect to them with RDP and have copy/paste of files.

jsorg71 commented 9 years ago

So except for you have to click skip, it works? I'll have to setup a test server with RHEL 6.6. There must a an extra \n or \a in the clipboard data.

therevoman commented 9 years ago

Since I'm building frI'm source, if you could point me in the right direction I can go take a look.

jsorg71 commented 9 years ago

sure, I think the function clipboard_c2s_in_files that build the response for the paste in X11 part on server. it's in xrdp/sesman/chansrv/clipboard_file.c Print out the strings it creates and file_list.

therevoman commented 9 years ago

Oh man, my C++ skills are seriously lacking. I was able to change module logging to "DEBUG" in clipboard.c and clipboard_file.c #define LOG_LVL LOG_DEBUG

Because my skills are java based, I'll post these logs from xrdp-sesman.sh while I figure out how to dump the strings & file_list struct to the logs.

Maybe you'll see something.

--- logs generated by copying the 2 files from windows (client)

[0330211895]: CLIPBOARD  clipboard_data_in: 1558 : clipboard_data_in: chan_id 2 chan_flags 0x13 length 134 total_length 134 in_request 0 g_ins->size 8192
[0330211895]: CLIPBOARD  clipboard_data_in: 1619 : clipboard_data_in: clip_msg_id 2 clip_msg_status 0 clip_msg_len 122
[0330211895]: CLIPBOARD  clipboard_data_in: 1622 : clipboard_data_in: 2
[0330211895]: CLIPBOARD  clipboard_process_format_announce: 1017 : clipboard_process_format_announce: CLIPRDR_FORMAT_ANNOUNCE
[0330211895]: CLIPBOARD  clipboard_process_format_announce: 1018 : clipboard_process_format_announce 122
[0330211895]: CLIPBOARD  clipboard_send_format_ack: 574 : clipboard_send_format_ack: data out, sending CLIPRDR_FORMAT_ACK (clip_msg_id = 3)
[0330211895]: CLIPBOARD  clipboard_process_format_announce: 1050 : clipboard_process_format_announce: formatId 0x0000c114 wszFormatName [FileGroupDescriptorW] clip_msg_len 76
[0330211895]: CLIPBOARD  clipboard_process_format_announce: 1050 : clipboard_process_format_announce: formatId 0x0000c112 wszFormatName [FileContents] clip_msg_len 46
[0330211895]: CLIPBOARD  clipboard_process_format_announce: 1050 : clipboard_process_format_announce: formatId 0x0000c0f4 wszFormatName [Preferred DropEffect] clip_msg_len 0
[0330211895]: CLIPBOARD  clipboard_set_selection_owner: 882 : clipboard_set_selection_owner:
[0330211896]: CLIPBOARD  clipboard_xevent: 2504 : clipboard_xevent: got XFixesSetSelectionOwnerNotify
[0330211896]: CLIPBOARD  clipboard_event_selection_owner_notify: 1698 : clipboard_event_selection_owner_notify: 0x800001
[0330211896]: CLIPBOARD  clipboard_event_selection_owner_notify: 1701 : clipboard_event_selection_owner_notify: window 8388609 subtype 0 owner 8388609 g_wnd 8388609
[0330211896]: CLIPBOARD  clipboard_event_selection_owner_notify: 1705 : clipboard_event_selection_owner_notify: matches g_wnd
[0330211896]: CLIPBOARD  clipboard_event_selection_owner_notify: 1707 : clipboard_event_selection_owner_notify: skipping, onwer == g_wnd
[0330211896]: CLIPBOARD  clipboard_event_selection_request: 2139 : clipboard_event_selection_request: 0x197
[0330211896]: CLIPBOARD  clipboard_event_selection_request: 2144 : clipboard_event_selection_request: g_wnd 8388609, .requestor 23068857 .owner 8388609 .selection 272 'CLIPBOARD' .target 276 .property 407
[0330211896]: CLIPBOARD  clipboard_event_selection_request: 2155 : clipboard_event_selection_request: g_targets_atom
[0330211896]: CLIPBOARD  clipboard_event_selection_request: 2158 : clipboard_event_selection_request: g_targets_atom
[0330211896]: CLIPBOARD  clipboard_event_selection_request: 2173 :   reporting text/uri-list
[0330211896]: CLIPBOARD  clipboard_event_selection_request: 2176 :   reporting x-special/gnome-copied-files
[0330211896]: CLIPBOARD  clipboard_event_selection_request: 2181 :   reporting 7 formats
[0330211896]: CLIPBOARD  clipboard_provide_selection: 963 : clipboard_provide_selection: bytes 56 

-- Logs generated by pasting to the Linux desktop (server)

[0330237924]: CLIPBOARD  clipboard_event_selection_request: 2139 : clipboard_event_selection_request: 0x197
[0330237924]: CLIPBOARD  clipboard_event_selection_request: 2144 : clipboard_event_selection_request: g_wnd 8388609, .requestor 23068857 .owner 8388609 .selection 272 'CLIPBOARD' .target 280 .property 407
[0330237924]: CLIPBOARD  clipboard_event_selection_request: 2255 : clipboard_event_selection_request: g_file_atom2
[0330237924]: CLIPBOARD  clipboard_send_data_request: 538 : clipboard_send_data_request:
[0330237924]: CLIPBOARD  clipboard_send_data_request: 539 : clipboard_send_data_request: 49428
[0330237924]: CLIPBOARD  clipboard_send_data_request: 551 : clipboard_send_data_request: data out, sending CLIPRDR_DATA_REQUEST (clip_msg_id = 4)
[0330237995]: CLIPBOARD  clipboard_data_in: 1558 : clipboard_data_in: chan_id 2 chan_flags 0x13 length 1200 total_length 1200 in_request 1 g_ins->size 8192
[0330237995]: CLIPBOARD  clipboard_data_in: 1619 : clipboard_data_in: clip_msg_id 5 clip_msg_status 1 clip_msg_len 1188
[0330237995]: CLIPBOARD  clipboard_data_in: 1622 : clipboard_data_in: 5
[0330237995]: CLIPBOARD  clipboard_process_data_response: 1250 : clipboard_process_data_response:
[0330237995]: CLIPFILE   clipboard_c2s_in_files: 644 : clipboard_c2s_in_files: cItems 2
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 611 : clipboard_c2s_in_file_info:
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 612 :   flags 0x00004064
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 613 :   fileAttributes 0x00000020
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 615 :   lastWriteTime 0x01d03b1bc1291c6d
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 617 :   fileSize 0x0000000000000066
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 618 :   num_chars 14 cFileName [affiliates.csv]
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 611 : clipboard_c2s_in_file_info:
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 612 :   flags 0x00004064
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 613 :   fileAttributes 0x00000020
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 615 :   lastWriteTime 0x01d05a90c6bfe680
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 617 :   fileSize 0x0000000000000004
[0330237995]: CLIPFILE   clipboard_c2s_in_file_info: 618 :   num_chars 8 cFileName [test.txt]
[0330237995]: CLIPBOARD  clipboard_provide_selection_c2s: 905 : clipboard_provide_selection_c2s: bytes 127

-- Logs generated by pressing "skip"

[0330252700]: CLIPFILE   clipboard_request_file_data: 492 : clipboard_request_file_data: stream_id=0 lindex=0 off=0 request_bytes=4096
[0330252750]: CLIPBOARD  clipboard_data_in: 1558 : clipboard_data_in: chan_id 2 chan_flags 0x13 length 118 total_length 118 in_request 0 g_ins->size 8192
[0330252750]: CLIPBOARD  clipboard_data_in: 1619 : clipboard_data_in: clip_msg_id 9 clip_msg_status 1 clip_msg_len 106
[0330252750]: CLIPBOARD  clipboard_data_in: 1622 : clipboard_data_in: 9
[0330252750]: CLIPFILE   clipboard_process_file_response: 565 : clipboard_process_file_response:
[0330252752]: CLIPFILE   clipboard_request_file_data: 492 : clipboard_request_file_data: stream_id=0 lindex=1 off=0 request_bytes=4096
[0330252802]: CLIPBOARD  clipboard_data_in: 1558 : clipboard_data_in: chan_id 2 chan_flags 0x13 length 20 total_length 20 in_request 0 g_ins->size 8192
[0330252802]: CLIPBOARD  clipboard_data_in: 1619 : clipboard_data_in: clip_msg_id 9 clip_msg_status 1 clip_msg_len 8
[0330252802]: CLIPBOARD  clipboard_data_in: 1622 : clipboard_data_in: 9
[0330252802]: CLIPFILE   clipboard_process_file_response: 565 : clipboard_process_file_response:
[0330252909]: CLIPBOARD  clipboard_event_selection_request: 2139 : clipboard_event_selection_request: 0x197
[0330252909]: CLIPBOARD  clipboard_event_selection_request: 2144 : clipboard_event_selection_request: g_wnd 8388609, .requestor 23068857 .owner 8388609 .selection 272 'CLIPBOARD' .target 276 .property 407
[0330252909]: CLIPBOARD  clipboard_event_selection_request: 2155 : clipboard_event_selection_request: g_targets_atom
[0330252909]: CLIPBOARD  clipboard_event_selection_request: 2158 : clipboard_event_selection_request: g_targets_atom
[0330252909]: CLIPBOARD  clipboard_event_selection_request: 2173 :   reporting text/uri-list
[0330252909]: CLIPBOARD  clipboard_event_selection_request: 2176 :   reporting x-special/gnome-copied-files
[0330252909]: CLIPBOARD  clipboard_event_selection_request: 2181 :   reporting 7 formats
[0330252909]: CLIPBOARD  clipboard_provide_selection: 963 : clipboard_provide_selection: bytes 56
[0330252916]: CLIPBOARD  clipboard_event_selection_request: 2139 : clipboard_event_selection_request: 0x197
[0330252916]: CLIPBOARD  clipboard_event_selection_request: 2144 : clipboard_event_selection_request: g_wnd 8388609, .requestor 23068857 .owner 8388609 .selection 272 'CLIPBOARD' .target 276 .property 407
[0330252916]: CLIPBOARD  clipboard_event_selection_request: 2155 : clipboard_event_selection_request: g_targets_atom
[0330252916]: CLIPBOARD  clipboard_event_selection_request: 2158 : clipboard_event_selection_request: g_targets_atom
[0330252916]: CLIPBOARD  clipboard_event_selection_request: 2173 :   reporting text/uri-list
[0330252916]: CLIPBOARD  clipboard_event_selection_request: 2176 :   reporting x-special/gnome-copied-files
[0330252916]: CLIPBOARD  clipboard_event_selection_request: 2181 :   reporting 7 formats
[0330252916]: CLIPBOARD  clipboard_provide_selection: 963 : clipboard_provide_selection: bytes 56
[0330253016]: CLIPBOARD  clipboard_event_selection_request: 2139 : clipboard_event_selection_request: 0x197
[0330253016]: CLIPBOARD  clipboard_event_selection_request: 2144 : clipboard_event_selection_request: g_wnd 8388609, .requestor 23068857 .owner 8388609 .selection 272 'CLIPBOARD' .target 276 .property 407
[0330253016]: CLIPBOARD  clipboard_event_selection_request: 2155 : clipboard_event_selection_request: g_targets_atom
[0330253016]: CLIPBOARD  clipboard_event_selection_request: 2158 : clipboard_event_selection_request: g_targets_atom
[0330253016]: CLIPBOARD  clipboard_event_selection_request: 2173 :   reporting text/uri-list
[0330253016]: CLIPBOARD  clipboard_event_selection_request: 2176 :   reporting x-special/gnome-copied-files
[0330253016]: CLIPBOARD  clipboard_event_selection_request: 2181 :   reporting 7 formats
[0330253016]: CLIPBOARD  clipboard_provide_selection: 963 : clipboard_provide_selection: bytes 56
[0330254567]: CLIPBOARD  clipboard_event_selection_request: 2139 : clipboard_event_selection_request: 0x197
[0330254567]: CLIPBOARD  clipboard_event_selection_request: 2144 : clipboard_event_selection_request: g_wnd 8388609, .requestor 23068857 .owner 8388609 .selection 272 'CLIPBOARD' .target 276 .property 407
[0330254567]: CLIPBOARD  clipboard_event_selection_request: 2155 : clipboard_event_selection_request: g_targets_atom
[0330254567]: CLIPBOARD  clipboard_event_selection_request: 2158 : clipboard_event_selection_request: g_targets_atom
[0330254567]: CLIPBOARD  clipboard_event_selection_request: 2173 :   reporting text/uri-list
[0330254567]: CLIPBOARD  clipboard_event_selection_request: 2176 :   reporting x-special/gnome-copied-files
[0330254567]: CLIPBOARD  clipboard_event_selection_request: 2181 :   reporting 7 formats
[0330254567]: CLIPBOARD  clipboard_provide_selection: 963 : clipboard_provide_selection: bytes 56
therevoman commented 9 years ago

I can be taught. Here's what I found.

At sesman/chansrv/clipboard_file.c -> cliboard_c2s_in_files line 675 *ptr = '\n';

This is creating the following files_list

contents of file_list ptr: 
[file:///home/mwuser/thinclient_drives/.clipboard/affiliates.csv
file:///home/mwuser/thinclient_drives/.clipboard/test.txt
]

if I add an if statement around the line, the output changes and the error goes away.

        if (cItems > 1 && lindex < cItems -1) {
            *ptr = '\n';
        }
contents of file_list ptr: 
[file:///home/mwuser/thinclient_drives/.clipboard/affiliates.csv
file:///home/mwuser/thinclient_drives/.clipboard/test.txt]

My worry is this change works with my setup of RHEL 6 with GNOME. But will it work on other systems?

One last thought. I guess the \n could be added before any line after the 1st, and have the same effect with a simpler if statement.

        if (lindex > 0) {
            *ptr = '\n';
            ptr++;
        }

        g_strcpy(ptr, "file://");
jsorg71 commented 9 years ago

awesome, nice find. I pushed something similar in devel branch 9e310fbe067c48921761e223f9fd9602498f4a08 I added another variable because of the continue. I think this should work on all platforms. I'll test dolphin and thunar.

therevoman commented 9 years ago

Nice I like it. Thanks for the help!

therevoman commented 9 years ago

I was rebuilding xrdp because the clipboard was having issues again and thought I'd post it here. I haven't worked through the debug steps yet, but here's what I found.

thinclient_drives is not being created text copy works both ways, file copy works from inside an RDP session to outside.
copying a file from outside to inside the RDP session causes the error below.

I'm building from the devel branches

image

therevoman commented 8 years ago

Wanted to update this bug. if I configure xrdp with the --enable-jpeg or --enable-tjpeg or --enable-rfxcodec options the clipboard stops transferring files.

jsorg71 commented 8 years ago

Copying file over the clipboard required fuse. Can you check if --enable-fuse is there. I think Kevin said that is always on if you are using X11RDP-o-Matic.

therevoman commented 8 years ago

That is the problem.

I'm using the X11RDP-RH-Matic, and the copy I have has a bug in the variables being set up. When using any of those options it is dropping the default "--enable-fuse" option.

Wow, sorry for taking so much time with this one.

--withtjpeg)
  XRDP_CONFIGURE_ARGS="$XRDPCONFIGURE_ARGS --enable-tjpeg"
  XRDP_BUILD_DEPENDS="$XRDP_BUILD_DEPENDS turbojpeg turbojpeg-devel"
  ;;

should be

--withtjpeg)
  XRDP_CONFIGURE_ARGS="$XRDP_CONFIGURE_ARGS --enable-tjpeg"
  XRDP_BUILD_DEPENDS="$XRDP_BUILD_DEPENDS turbojpeg turbojpeg-devel"
  ;;
metalefty commented 8 years ago

I fixed RH-Matic, thanks!