Skip to content

Re-enable amulegui-hidden preferences by wiring them through EC #127

Description

@got3nks

PR #122 hid a set of widgets on amulegui's Preferences dialog because they were never packed into CEC_Prefs_Packet — editing them changed amulegui's local remote.conf, which amuled never reads, so the controls were dead in both loopback and remote sessions. Hiding was the right short-term move (no silent no-ops) but the long-term fix is to extend CEC_Prefs_Packet (and matching EC_TAG_PREFS_* codes) so each setting round-trips to the daemon over EC.

The hidden controls, grouped by category, with the label as it appears in the dialog:

Network bind address

  • IDC_ADDRESS — "Bind local address to IP (empty for any):" — interface bind for amuled's listening sockets

UPnP

  • IDC_UPNP_ENABLED — "Enable UPnP for router port forwarding"
  • IDC_UPNPTCPPORT — "UPnP TCP Port (Optional):" — external TCP port override
  • IDC_UPNP_WEBSERVER_ENABLED — "Enable UPnP port forwarding of the web server port"
  • IDC_WEBUPNPTCPPORT — UPnP external webserver port
  • IDC_UPNP_EC_ENABLED — "Enable UPnP port forwarding on the EC port"

Online Signature

  • IDC_OSDIR — "Save online signature file in:" — output directory
  • IDC_SELOSDIR — Browse button paired with IDC_OSDIR
  • IDC_OSUPDATE — "Update Frequency (Secs):"

External Connections (EC server config)

  • IDC_EXT_CONN_ACCEPT — "Accept external connections"
  • IDC_EXT_CONN_IP — EC bind address
  • IDC_EXT_CONN_TCP_PORT — EC TCP port
  • IDC_EXT_CONN_PASSWD — EC password

These four are self-modifying — changing them from amulegui can lock the session out. Probably best handled with a confirm dialog + reconnect prompt, or kept read-only on the remote side.

Filtering / security

  • IDC_PARANOID — "Paranoid handling of non-matching IPs"
  • IDC_IPFILTERSYS — "Use system-wide ipfilter.dat if available"

Behavior

  • IDC_STARTNEXTFILE_ALPHA — "In alphabetic order" (within "Start next paused download" group)

Runtime vs. startup-only

Not all of these are meaningfully settable while amuled is running. A few only take effect at process start, because they decide what sockets to bind:

  • IDC_ADDRESS, IDC_EXT_CONN_ACCEPT, IDC_EXT_CONN_IP, IDC_EXT_CONN_TCP_PORT — listener bind happens at amuled startup. Wiring them over EC still has value (so amulegui can read and edit amule.conf for the next run), but the UX should make clear the change takes effect on daemon restart.
  • IDC_IPFILTERSYS — filter file is loaded at startup; runtime change would need to re-trigger an ipfilter reload.
  • UPnP toggles, IDC_EXT_CONN_PASSWD, IDC_OSDIR/IDC_OSUPDATE, IDC_PARANOID, IDC_STARTNEXTFILE_ALPHA — can take effect at runtime.

Per-setting work

  1. Allocate an EC_TAG_PREFS_* code in src/libs/ec/cpp/ECCodes.h (and the .abstract + Java mirrors).
  2. Pack it from amuled in CEC_Prefs_Packet (src/ECSpecialMuleTags.cpp).
  3. Apply it on receipt in CPreferencesRem / amule-remote-gui.cpp.
  4. Drop the entry from the amuledOnlyPrefs[] array in PrefsUnifiedDlg.cpp so the widget shows again.
  5. For startup-only settings, surface "takes effect on amuled restart" in the UI.
  6. Bump EC_CURRENT_PROTOCOL_VERSION once per release that adds tags, with the usual handshake-fallback note.

EC changes here are net-new APIs, so per the 3.0.0 release plan this is 3.1.0 scope, not 3.0.x.

Out of scope

  • Proxy settings (ID_PROXY_*) — left visible on purpose, consumed by amulegui's own HTTP client for the GeoIP database fetch.
  • The orphan labels (IDC_*TEXT, IDC_EXT_CONN_PARAMS_BOX) hidden alongside their controls — they re-appear automatically once each parent setting is wired.

Metadata

Metadata

Assignees

No one assigned

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions