Step 7 of inbuxa Relay, part 1: who may dial the link (RL-33).
The relay
linkAllowFrom is a new setting: a list of addresses and CIDR ranges, at most 64. A link connection from anywhere else is dropped before TLS, with no reply.
Empty (the default) means anyone.
A relay that hasn't had its first settings takes anyone too, so it can still join.
A connection that's already open stays open when the list changes.
run --link-allow-any ignores the list the relay started with, until the downstream sets a different one. It's the way back in from a list that locked the server out.
Relay/get now tells each link where it comes from, as status.linkFrom. Each node keeps that with its link status, so inbuxa:Relaylinks[].relay.linkFrom holds the addresses the console needs to check a list against.
relay-proto/src/allow.rs holds the list parsing and matching. An IPv4 client of a [::] listener arrives as ::ffff:a.b.c.d and is matched as IPv4.
The downstream takes settings/linkAllowFrom like any other setting. RelaySettings::problems checks it.
Spec gains the details above, linkFrom in the status row, and step 6 marked done.
Checked
relay_end_to_end covers RL-T25:
linkFrom is 127.0.0.1, and a bad entry is refused.
A list without the client closes a raw TCP connection with no bytes and refuses TLS.
--link-allow-any lets the client in until a new list arrives, which then applies.
A mapped-IPv4 entry works, and setting null goes back to anyone.
The allow unit tests cover ranges and refusals.
relay_tests checks that settings/linkAllowFrom refuses a host name. relay_link_tests checks that the node's link shows linkFrom: 127.0.0.1.
cargo fmt, clippy, the fork checks and expr-schema all pass.
Next: the console field, plus the warning when no node's linkFrom is in the list (inbuxa-admin PR to follow).
Step 7 of inbuxa Relay, part 1: **who may dial the link (RL-33)**.
**The relay**
- **`linkAllowFrom`** is a new setting: a list of addresses and CIDR ranges, at most 64. A link connection from anywhere else is dropped before TLS, with no reply.
- Empty (the default) means anyone.
- A relay that hasn't had its first settings takes anyone too, so it can still join.
- A connection that's already open stays open when the list changes.
- **`run --link-allow-any`** ignores the list the relay started with, until the downstream sets a different one. It's the way back in from a list that locked the server out.
- **`Relay/get`** now tells each link where it comes from, as `status.linkFrom`. Each node keeps that with its link status, so `inbuxa:Relay` `links[].relay.linkFrom` holds the addresses the console needs to check a list against.
- **`relay-proto/src/allow.rs`** holds the list parsing and matching. An IPv4 client of a `[::]` listener arrives as `::ffff:a.b.c.d` and is matched as IPv4.
**The downstream** takes `settings/linkAllowFrom` like any other setting. `RelaySettings::problems` checks it.
**Spec** gains the details above, `linkFrom` in the status row, and step 6 marked done.
**Checked**
- `relay_end_to_end` covers RL-T25:
- `linkFrom` is 127.0.0.1, and a bad entry is refused.
- A list without the client closes a raw TCP connection with no bytes and refuses TLS.
- `--link-allow-any` lets the client in until a new list arrives, which then applies.
- A mapped-IPv4 entry works, and setting `null` goes back to anyone.
- The `allow` unit tests cover ranges and refusals.
- `relay_tests` checks that `settings/linkAllowFrom` refuses a host name. `relay_link_tests` checks that the node's link shows `linkFrom: 127.0.0.1`.
- `cargo fmt`, clippy, the fork checks and expr-schema all pass.
**Next:** the console field, plus the warning when no node's `linkFrom` is in the list (inbuxa-admin PR to follow).
The setting linkAllowFrom, a list of addresses and CIDR ranges (at most
64), limits the link port to those sources: others are dropped before
TLS, with no reply. Empty, the default, is anyone, and so is a relay
before its first settings, so it can join. A connection already open
stays open when the list changes.
`inbuxa-relay run --link-allow-any` ignores the list it starts with until
the downstream sets another, for a list that locked the downstream out.
Relay/get answers each link with status.linkFrom, the address that
connection comes from, which each node keeps with its link status: the
addresses the console checks a list against before it is saved.
relay-proto gains allow.rs (AllowList, matching an IPv4 client of a [::]
listener as IPv4). The downstream takes settings/linkAllowFrom like any
setting, checked by RelaySettings::problems. Tested in the relay's end to
end test (RL-T25) and the server's relay system tests.
The spec records step 6 as done.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Step 7 of inbuxa Relay, part 1: who may dial the link (RL-33).
The relay
linkAllowFromis a new setting: a list of addresses and CIDR ranges, at most 64. A link connection from anywhere else is dropped before TLS, with no reply.run --link-allow-anyignores the list the relay started with, until the downstream sets a different one. It's the way back in from a list that locked the server out.Relay/getnow tells each link where it comes from, asstatus.linkFrom. Each node keeps that with its link status, soinbuxa:Relaylinks[].relay.linkFromholds the addresses the console needs to check a list against.relay-proto/src/allow.rsholds the list parsing and matching. An IPv4 client of a[::]listener arrives as::ffff:a.b.c.dand is matched as IPv4.The downstream takes
settings/linkAllowFromlike any other setting.RelaySettings::problemschecks it.Spec gains the details above,
linkFromin the status row, and step 6 marked done.Checked
relay_end_to_endcovers RL-T25:linkFromis 127.0.0.1, and a bad entry is refused.--link-allow-anylets the client in until a new list arrives, which then applies.nullgoes back to anyone.allowunit tests cover ranges and refusals.relay_testschecks thatsettings/linkAllowFromrefuses a host name.relay_link_testschecks that the node's link showslinkFrom: 127.0.0.1.cargo fmt, clippy, the fork checks and expr-schema all pass.Next: the console field, plus the warning when no node's
linkFromis in the list (inbuxa-admin PR to follow).