Skip to content

SFTP: Support IPv6 host addresses #240

@BrianLeishman

Description

@BrianLeishman

Summary

The SFTP authority parser uses rsplit_once(':') to separate host and port, which breaks on IPv6 addresses containing multiple colons.

Current State

  • File: src-tauri/src/locations/sftp/mod.rs:334
  • parse_sftp_authority("user@::1") incorrectly parses as host=::, port=1
  • parse_sftp_authority("user@[::1]:2222") would also fail

Proposed Changes

Support bracketed IPv6 literals per RFC 3986:

  • sftp://user@[::1]/path → host=::1, port=22
  • sftp://user@[::1]:2222/path → host=::1, port=2222

Parse logic:

  1. If host_part starts with [, find matching ]
  2. Extract IPv6 address from brackets
  3. Check for :port after closing bracket

Acceptance Criteria

  • sftp://user@[::1]/path parses correctly
  • sftp://user@[::1]:2222/path parses correctly
  • sftp://user@[fe80::1%25eth0]:22/path works (link-local with zone ID)
  • Existing IPv4 and hostname parsing unchanged
  • Unit tests cover all IPv6 formats

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions