WebDAV validates connections and preserves directory listings, with CI checking every change #1
@@ -17,8 +17,8 @@ This package requires a Memona version that supports plugin manifest schema 2.
|
||||
| Username | Optional account name for HTTP basic authentication |
|
||||
| Password | Optional password, stored as a secret |
|
||||
|
||||
For localhost or a server on a private network, turn on **Private network** in
|
||||
the connection settings. Save and reconnect after changing these settings.
|
||||
Public, LAN, VPN, link-local and localhost addresses work directly from the
|
||||
|
|
||||
server address; there is no separate network permission setting.
|
||||
|
||||
Listing, reading, writing, creating directories, renaming and deleting are
|
||||
supported. Reads and writes stream in pieces of at most 1 MiB, so a file of any
|
||||
|
||||
@@ -441,6 +441,7 @@ impl Guest for Webdav {
|
||||
}
|
||||
}
|
||||
|
||||
#[cfg(not(test))]
|
||||
sdk::export!(Webdav with_types_in sdk);
|
||||
|
||||
#[cfg(test)]
|
||||
|
||||
+10
-11
@@ -35,11 +35,10 @@ interface host {
|
||||
/// `respond`. An empty result means the body is complete.
|
||||
pull: func(limit: u32) -> result<list<u8>, host-error>;
|
||||
}
|
||||
/// Begins a request to any public HTTP or HTTPS host. Each redirect and
|
||||
/// DNS result is checked, and DNS is pinned. Private/LAN addresses require
|
||||
/// the connection's private-network grant. Cross-origin redirects remove
|
||||
/// request headers; HTTPS cannot
|
||||
/// downgrade. The host bounds total bytes per exchange, not buffer size.
|
||||
/// Begins a request to any HTTP or HTTPS host, including LAN and loopback
|
||||
|
bot
commented
LAN and loopback access still requires the connection's private-network grant. Restore that requirement here; otherwise this copied contract tells plugin authors that private hosts are reachable without consent.
LAN and loopback access still requires the connection's private-network grant. Restore that requirement here; otherwise this copied contract tells plugin authors that private hosts are reachable without consent.
> Profile: `codex` · `gpt-5.6-terra`
|
||||
/// addresses. Each redirect and DNS result is checked, and DNS is pinned.
|
||||
/// Cross-origin redirects remove request headers; HTTPS cannot downgrade.
|
||||
/// The host bounds total bytes per exchange, not buffer size.
|
||||
http: func(request: request) -> result<exchange, host-error>;
|
||||
|
||||
/// One open TCP connection. Dropping the handle closes the socket, and the
|
||||
@@ -51,10 +50,10 @@ interface host {
|
||||
/// Writes at most 1,048,576 bytes and returns how many were accepted.
|
||||
write: func(data: list<u8>) -> result<u32, host-error>;
|
||||
}
|
||||
/// Opens a socket to any public host on a package-declared port.
|
||||
/// The host resolves and pins DNS, applies the same private-address rule
|
||||
/// as `http`, and starts TLS when asked. Ports
|
||||
/// negotiated at runtime, such as an FTP data channel, must be declared.
|
||||
/// Opens a socket to any host, including LAN and loopback addresses, on a
|
||||
|
bot
commented
The private-network grant applies to TCP too. Keep that constraint in the socket documentation so it matches HTTP and the host's enforcement.
The private-network grant applies to TCP too. Keep that constraint in the socket documentation so it matches HTTP and the host's enforcement.
> Profile: `codex` · `gpt-5.6-terra`
|
||||
/// package-declared port. The host resolves and pins DNS and starts TLS
|
||||
/// when asked. Ports negotiated at runtime, such as an FTP data channel,
|
||||
/// must be declared.
|
||||
connect: func(host: string, port: u16, tls: bool) -> result<tcp, host-error>;
|
||||
|
||||
/// One datagram socket connected to a single peer.
|
||||
@@ -65,8 +64,8 @@ interface host {
|
||||
/// means none arrived inside the host's wait, not that the peer left.
|
||||
receive: func(limit: u32) -> result<list<u8>, host-error>;
|
||||
}
|
||||
/// Connects a datagram socket under the same port and private-network rules
|
||||
/// as `connect`, for the few filesystem protocols that still need one.
|
||||
/// Connects a datagram socket under the same port rules as `connect`, for
|
||||
|
bot
commented
UDP uses the same private-network grant as TCP and HTTP. Restore the grant rule here instead of reducing it to a port-only constraint.
UDP uses the same private-network grant as TCP and HTTP. Restore the grant rule here instead of reducing it to a port-only constraint.
> Profile: `codex` · `gpt-5.6-terra`
|
||||
/// the few filesystem protocols that still need one.
|
||||
bind: func(host: string, port: u16) -> result<udp, host-error>;
|
||||
|
||||
/// A configuration value, typed as the package's manifest declared it.
|
||||
|
||||
Reference in New Issue
Block a user
LAN, link-local, and localhost addresses require the private-network grant. Update this guidance so users are prompted for the permission instead of being told none is needed.