teejee2008 / polo

Advanced file manager for Linux written in Vala. Supports multiple panes (single, dual, quad) with multiple tabs in each pane. Supports archive creation, extraction and browsing. Support for cloud storage; running and managing KVM images, modifying PDF documents and image files, booting ISO files in KVM, and writing ISO files to USB drives.
https://teejee2008.github.io/polo/
GNU General Public License v2.0
618 stars 84 forks source link

GVFS for remote location fail to correctly parse mount #270

Closed ticoombs closed 4 years ago

ticoombs commented 4 years ago

Describe the bug GVFS required to be built with fuse support otherwise the actual path /run/user/$UID/gvfs/ does not exist. Nautilus by default can handle this scenario.

To Reproduce Steps to reproduce the behavior:

  1. Go to 'File'
  2. Click on 'Connect to server'
  3. Select Samba / Windows Share
  4. Enter in Server, Username, Password, & Share. Click Connect
  5. Pop-Up box says "Failed to Connect"

If you retry the same process you will get that the location is already mounted, (which it is) Attempting to view smb://server/test/ entering via the path as well will result in a blank screen displayed.

Expected behavior The browser to correctly query the samba location

System:

Fix On Gentoo gvfs does not get built with fuse support (unless you specify it). So the user needs to rebuild with fuse useflag enabled.

Extra Thoughts As this is a weekend project, I think a quick fix for Polo would be to handle the missing location of /run/user/$UID/gvfs/ and notifying the user. As it still technically does perform the mount correctly via gio (you can even query it via gio list smb://server/test) but because the gvfs location does not exist it still fails.

The following could be added to the Installation wiki possibly?: Gentoo - requires gvfs to be built with fuse useflag otherwise samba (and possibly other remote connections) will not work as desired.

I see you already have a section regarding gvfs-mount as part of the Remote Locations page. This lead me to needing the fuse useflag

Debug Log If that tickles' your fancy

Debug log of what happens without gvfs built with fuse.

[19:47:30.960] D: Initialization complete -----------------
[19:47:39.550] D: ConnectServerWindow: init_window()
[19:47:39.550] D: ConnectServerWindow: ui_add_server_type()
[19:47:39.552] D: ConnectServerWindow: ui_add_server_and_port()
[19:47:39.554] D: ConnectServerWindow: ui_add_domain()
[19:47:39.554] D: ConnectServerWindow: ui_add_username()
[19:47:39.555] D: ConnectServerWindow: ui_add_password()
[19:47:39.555] D: ConnectServerWindow: ui_add_server_share()
[19:47:39.556] D: ConnectServerWindow: ui_add_uri()
[19:47:39.557] D: ConnectServerWindow: ui_add_action_area()
[19:47:39.557] D: ConnectServerWindow: init_window(): exit
[19:47:55.482] D: ConnectServerWindow: btn_connect_clicked()
[19:47:55.483] D: gvfs_root: /run/user/1000/gvfs
[19:47:55.483] D: query_file_info(): not found: /run/user/1000/gvfs
[19:47:55.483] D: query_file_info(): not found: /run/user/1000/gvfs
[19:47:55.483] D: FileItem: query_children(): FileType != DIRECTORY
[19:47:55.483] D: ConnectServerWindow: connect_begin(): smb://server/test/
[19:47:55.491] D: gio mount 'smb://server/test/' < ./samba.props
[19:47:55.491] D: chmod u+x '/tmp/polo/txghPT9c/2019-15-09_19-47-55/script.sh'
[19:47:55.494] D: AsyncTask: /tmp/polo/txghPT9c/2019-15-09_19-47-55/script.sh
[19:47:55.524] D: AsyncTask: child_pid: 26517
[19:47:56.025] D: update_status(): APP_STATUS_RUNNING
[19:47:56.539] D: update_status(): APP_STATUS_RUNNING
[19:47:56.557] E: Password required for share test on server
[19:47:56.557] E: User [me]: Domain [MYGROUP]: Password: 
[19:47:56.761] E: Password required for share test on server
[19:47:56.761] E: User [me]: 
[19:47:56.966] D: AsyncTask: finish(): enter
[19:47:57.053] D: update_status(): APP_STATUS_FINISHED
[19:47:57.065] D: ConnectServerWindow: connect_end()
[19:47:57.067] D: checking status
[19:48:10.598] D: ConnectServerWindow: btn_connect_clicked()
[19:48:10.598] D: gvfs_root: /run/user/1000/gvfs
[19:48:10.598] D: query_file_info(): not found: /run/user/1000/gvfs
[19:48:10.599] D: query_file_info(): not found: /run/user/1000/gvfs
[19:48:10.599] D: FileItem: query_children(): FileType != DIRECTORY
[19:48:10.599] D: ConnectServerWindow: connect_begin(): smb://server/test/
[19:48:10.601] D: gio mount 'smb://server/test/' < ./samba.props
[19:48:10.601] D: chmod u+x '/tmp/polo/txghPT9c/2019-15-09_19-48-10/script.sh'
[19:48:10.604] D: AsyncTask: /tmp/polo/txghPT9c/2019-15-09_19-48-10/script.sh
[19:48:10.632] D: AsyncTask: child_pid: 26560
[19:48:11.071] E: Password required for share test on server
[19:48:11.071] E: User [me]: Domain [MYGROUP]: Password: 
[19:48:11.133] D: update_status(): APP_STATUS_RUNNING
[19:48:11.646] D: update_status(): APP_STATUS_RUNNING

Mount added:
  name: test on server
  uuid: (null)
  can-eject: false
  can-unmount: true
  is-shadowed: false
[19:48:11.705] D: AsyncTask: finish(): enter
  default-location: (null)
  icon: . GThemedIcon folder-remote folder folder-remote-symbolic folder-symbolic
  root: (null)
  guess-content-type:

[19:48:12.160] D: update_status(): APP_STATUS_FINISHED
[19:48:12.172] D: ConnectServerWindow: connect_end()
[19:48:12.174] D: checking status
[19:48:12.210] D: Device: get_monitor(): monitor_changed
[19:48:12.210] D: Device: get_block_devices()
[19:48:12.225] D: Device: update_usage(): 14
[19:48:12.225] D: df -T -B1
[19:48:12.231] D: Device: update_mounts(): 14
[19:48:12.233] D: Device: get_mounted_filesystems_using_mtab(): 4
[19:48:12.233] D: Device: get_block_devices(): 14
[19:48:12.233] D: DevicePopover(): refresh()
[19:48:12.233] D: DevicePopover(): refresh_devices()
[19:48:12.234] D: 
[19:48:12.234] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.234] D: 
[19:48:12.235] D: DevicePopover(): refresh()
[19:48:12.235] D: DevicePopover(): refresh_devices()
[19:48:12.236] D: 
[19:48:12.236] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.236] D: 
[19:48:12.236] D: DevicePopover(): refresh()
[19:48:12.236] D: DevicePopover(): refresh_devices()
[19:48:12.237] D: 
[19:48:12.237] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.237] D: 
[19:48:12.237] D: sidebar: refresh(): [1:2] 
[19:48:12.250] D: sidebar: add_places()
[19:48:12.265] D: gvfs_root: /run/user/1000/gvfs
[19:48:12.265] D: query_file_info(): not found: /run/user/1000/gvfs
[19:48:12.265] D: query_file_info(): not found: /run/user/1000/gvfs
[19:48:12.265] D: FileItem: query_children(): FileType != DIRECTORY
[19:48:12.266] D: sidebar: add_bookmarks()
[19:48:12.277] D: sidebar: add_devices()
[19:48:12.290] D: sidebar: add_buffer()
[19:48:12.291] D: DevicePopover(): refresh()
[19:48:12.291] D: DevicePopover(): refresh_devices()
[19:48:12.292] D: 
[19:48:12.292] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.293] D: 
[19:48:12.293] D: DevicePopover(): refresh()
[19:48:12.293] D: DevicePopover(): refresh_devices()
[19:48:12.294] D: 
[19:48:12.294] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.294] D: 
[19:48:12.294] D: DevicePopover(): refresh()
[19:48:12.294] D: DevicePopover(): refresh_devices()
[19:48:12.295] D: 
[19:48:12.295] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.295] D: 
[19:48:12.295] D: DevicePopover(): refresh()
[19:48:12.295] D: DevicePopover(): refresh_devices()
[19:48:12.296] D: 
[19:48:12.296] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.297] D: 
[19:48:12.297] D: DevicePopover(): refresh()
[19:48:12.297] D: DevicePopover(): refresh_devices()
[19:48:12.298] D: 
[19:48:12.298] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.298] D: 
[19:48:12.298] D: DevicePopover(): refresh()
[19:48:12.298] D: DevicePopover(): refresh_devices()
[19:48:12.299] D: 
[19:48:12.299] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.299] D: 
[19:48:12.299] D: DevicePopover(): refresh()
[19:48:12.299] D: DevicePopover(): refresh_devices()
[19:48:12.300] D: 
[19:48:12.300] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.300] D: 
[19:48:12.301] D: DevicePopover(): refresh()
[19:48:12.301] D: DevicePopover(): refresh_devices()
[19:48:12.302] D: 
[19:48:12.302] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.302] D: 
[19:48:12.302] D: DevicePopover(): refresh()
[19:48:12.302] D: DevicePopover(): refresh_devices()
[19:48:12.303] D: 
[19:48:12.303] D: /dev/sda ~ sda1 ~ sda2 ~ sda3 ~ sda4
[19:48:12.303] D: 

If you read this far, thanks for the great app.

ticoombs commented 4 years ago

Marking Solved as:

On Gentoo gvfs does not get built with fuse support (unless you specify it). So the user needs to rebuild with fuse useflag enabled.