feat: add "Follow symbolic links in shared folders" preference - #809
Merged
mrjimenez merged 2 commits intoJun 1, 2026
Conversation
CDirIterator used wxDIR_FILES/DIRS without wxDIR_NO_FOLLOW, so symbolic links (file and directory) were always traversed during shared-folder walks. That's the right default for most users but a privacy concern for setups where a symlink can point outside the intended share root. Adds a "Follow symbolic links in shared folders" checkbox to the Directories preferences page. Default ON to preserve existing behaviour. When off, wxDIR_NO_FOLLOW is OR'd into the iterator flags at the three share-walk sites (SharedFileList::AddFilesFromDirectory, SharedDirsApplyTask, SharedDirWatcher::WalkForUnknownSubdirs). The extra flag is plumbed through a new optional extraFlags parameter on CDirIterator::GetFirstFile, keeping libs/common unaware of application-level preferences. Toggling the preference triggers a Reload so the shareset reflects the new policy without an amuled restart. Refs amule-project#808
Contributor
Author
|
@ngosang may need to update the amule.conf and GUI settings in the docs later on. Not sure if the watcher is already documented in the amule.conf docs too, the flag is |
…LOGIN collision Master uses 10334 for IDC_AUTOSTART_LOGIN (in PreferencesGeneralTab), and PrefsUnifiedDlg looks it up via FindWindow. Two checkboxes under the same PrefsUnifiedDlg parent sharing an ID would make FindWindow return the wrong control. 10343 is the next free slot above the current highest ID (10342, ID_ABOUT).
Contributor
|
Documented here => amule-org/amule-org.github.io#81 |
Contributor
Author
Whenever there’s a commit the packaging runs automatically: https://github.com/amule-project/amule/actions/runs/26787585435 |
Contributor
1 task
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jun 4, 2026
Captures translatable strings introduced after the previous po refresh (post-amule-project#747 wave). Notable new entries: - "Connection failed. Please check the host, port, and password." (amule-project#841 — amulegui retry-on-connect-failure) - "Force ZLIB compression" (amule-project#840 — EC client-tag locality override) - "Follow symbolic links in shared folders" (amule-project#809) - "Connection Type:" (amule-project#824 — ED2K Info readability) - "Documentation: https://amule-org.github.io/docs " (amule-project#801 — wiki URL migration) Generated with `scripts/update-po.sh` from a working tree that has PR amule-project#841 applied locally, so the new amulegui retry-loop strings are included even though amule-project#841 itself is not in this branch — when amule-project#841 lands on master, the .po files will already reflect its strings without needing a second regeneration pass. The remaining churn is line-number realignment across the ~38 language files from a month of source-code drift.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Jun 4, 2026
Captures translatable strings introduced after the previous po refresh (post-amule-project#747 wave). Notable new entries: - "Connection failed. Please check the host, port, and password." (amule-project#841 — amulegui retry-on-connect-failure) - "Force ZLIB compression" (amule-project#840 — EC client-tag locality override) - "Follow symbolic links in shared folders" (amule-project#809) - "Connection Type:" (amule-project#824 — ED2K Info readability) - "Documentation: https://amule-org.github.io/docs " (amule-project#801 — wiki URL migration) Generated with `scripts/update-po.sh` from a working tree that has PR amule-project#841 applied locally, so the new amulegui retry-loop strings are included even though amule-project#841 itself is not in this branch — when amule-project#841 lands on master, the .po files will already reflect its strings without needing a second regeneration pass. The remaining churn is line-number realignment across the ~38 language files from a month of source-code drift.
mrjimenez
pushed a commit
that referenced
this pull request
Jun 4, 2026
Captures translatable strings introduced after the previous po refresh (post-#747 wave). Notable new entries: - "Connection failed. Please check the host, port, and password." (#841 — amulegui retry-on-connect-failure) - "Force ZLIB compression" (#840 — EC client-tag locality override) - "Follow symbolic links in shared folders" (#809) - "Connection Type:" (#824 — ED2K Info readability) - "Documentation: https://amule-org.github.io/docs " (#801 — wiki URL migration) Generated with `scripts/update-po.sh` from a working tree that has PR #841 applied locally, so the new amulegui retry-loop strings are included even though #841 itself is not in this branch — when #841 lands on master, the .po files will already reflect its strings without needing a second regeneration pass. The remaining churn is line-number realignment across the ~38 language files from a month of source-code drift.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Aug 6, 2026
Reported in amule-project#809: the entry sat second from last, between Connect and Exit, so restoring the window from the tray meant reading past the client information submenu and both speed submenus. It is the entry people reach for most, and tray menus conventionally lead with it. It now sits directly under the version banner, which stays first as the menu's header, and above everything else. Changed in both backends -- the SNI/appindicator menu used on Linux and the wxTaskBarIcon menu used everywhere else -- so the two do not drift. The Wayland pair of deterministic Show and Hide entries moves as a unit. Separators are rebalanced so the entry has one above and one below, leaving Connect and Exit adjacent under a single separator as before.
got3nks
added a commit
to got3nks/amule
that referenced
this pull request
Aug 6, 2026
Reported in amule-project#809: the entry sat second from last, between Connect and Exit, so restoring the window from the tray meant reading past the client information submenu and both speed submenus. It is the entry people reach for most, and tray menus conventionally lead with it. It now sits directly under the version banner, which stays first as the menu's header, and above everything else. Changed in both backends -- the SNI/appindicator menu used on Linux and the wxTaskBarIcon menu used everywhere else -- so the two do not drift. The Wayland pair of deterministic Show and Hide entries moves as a unit. Separators are rebalanced so the entry has one above and one below, leaving Connect and Exit adjacent under a single separator as before.
mrjimenez
pushed a commit
to mrjimenez/amule
that referenced
this pull request
Aug 8, 2026
…ject#816) Reported in amule-project#809: the entry sat second from last, between Connect and Exit, so restoring the window from the tray meant reading past the client information submenu and both speed submenus. It is the entry people reach for most, and tray menus conventionally lead with it. It now sits directly under the version banner, which stays first as the menu's header, and above everything else. Changed in both backends -- the SNI/appindicator menu used on Linux and the wxTaskBarIcon menu used everywhere else -- so the two do not drift. The Wayland pair of deterministic Show and Hide entries moves as a unit. Separators are rebalanced so the entry has one above and one below, leaving Connect and Exit adjacent under a single separator as before. Catalogs are regenerated: they record each msgid's source position, so moving the two call sites reorders their entries even though no string changed. Pure reorder -- identical msgid sets, every catalog still compiles, translated/fuzzy/untranslated counts unchanged. The appindicator half is not built by CI (cmake_ubuntu_deps has no libayatana-appindicator3-dev), so it was compiled separately on Ubuntu 26.04 arm64 with the SNI backend active, and the menu order confirmed visually. Closes amule-project#809.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Adds a
Follow symbolic links in shared folderscheckbox to the Directories preferences page. Default ON to preserve historical behaviour. When off,wxDIR_NO_FOLLOWis OR'd into the iterator flags at the three share-walk sites:SharedFileList::AddFilesFromDirectory(per-share file walk)SharedDirsApplyTask(recursive subdir expansion)SharedDirWatcher::WalkForUnknownSubdirs(cold-discover walk)The extra flag is plumbed through a new optional
extraFlagsparameter onCDirIterator::GetFirstFile, keepinglibs/commonunaware of application-level preferences.Toggling the preference triggers a
Reload()so the shareset reflects the new policy without an amuled restart.Headless / amuled users
The preference is stored as
FollowSymlinksInSharesunder the[eMule]section ofamule.conf. Headless setups can flip it without the GUI:Restart amuled (or save + reload) for the change to take effect.
Refs
Refs #808 (Stoatwblr's third point)