diff --git a/connectivity/module.json b/connectivity/module.json deleted file mode 100644 index 5581790..0000000 --- a/connectivity/module.json +++ /dev/null @@ -1,38 +0,0 @@ -{ - "module": "mesh-connectivity-contracts", - "version": "1", - "build": { - "artifacts": [ - { - "name": "go-theprivatenetwork", - "kind": "package", - "language": "go", - "paths": [ - "go/seats/theprivatenetwork" - ], - "series": "0.1", - "generated-from": "." - }, - { - "name": "go-theprivatenetworkclient", - "kind": "package", - "language": "go", - "paths": [ - "go/clients/theprivatenetworkclient" - ], - "series": "0.1" - }, - { - "name": "ts-theprivatenetwork", - "kind": "package", - "language": "typescript", - "paths": [ - "ts/seats/theprivatenetwork" - ], - "series": "0.1", - "generated-from": "." - } - ] - }, - "resources": [] -} diff --git a/connectivity/seats/mesh-dns-resolver/seat.json b/connectivity/seats/mesh-dns-resolver/seat.json deleted file mode 100644 index 0868271..0000000 --- a/connectivity/seats/mesh-dns-resolver/seat.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "format": 1, - "seat": "mesh-dns-resolver", - "scope": "mesh", - "grain": "seat-list", - "domain": "Connectivity", - "decision": "novox/hq ADR 0194, ADR 0223", - "delivers": "wildcard-resolution", - "replicated": true -} diff --git a/connectivity/seats/node-hostname/seat.json b/connectivity/seats/node-hostname/seat.json deleted file mode 100644 index 327c4d5..0000000 --- a/connectivity/seats/node-hostname/seat.json +++ /dev/null @@ -1,74 +0,0 @@ -{ - "format": 1, - "seat": "node-hostname", - "scope": "node", - "grain": "seat-list", - "domain": "Connectivity", - "decision": "novox/hq ADR 0199, ADR 0223", - "verbs": [ - { - "name": "entries", - "description": "Every line of this machine's /etc/hosts, each marked whose it is: the operator's, or the block of the module or tool that writes it.", - "replaces": [ - "cat /etc/hosts", - "getent hosts" - ], - "input": { - "properties": {}, - "type": "object" - } - }, - { - "name": "add", - "description": "Add one address and its names to the operator's lines of this machine's /etc/hosts — a name for this machine's own programs, not the mesh's.", - "replaces": [ - "edit /etc/hosts", - "HOSTALIASES" - ], - "input": { - "properties": { - "address": { - "description": "the IPv4 or IPv6 address", - "type": "string" - }, - "names": { - "description": "the names for it, separated by spaces", - "type": "string" - } - }, - "required": [ - "address", - "names" - ], - "type": "object" - } - }, - { - "name": "remove", - "description": "Remove one name, or every line of one address, from the operator's lines of this machine's /etc/hosts. A line a module writes is refused, naming the module.", - "replaces": [ - "sed -i /etc/hosts" - ], - "input": { - "properties": { - "name": { - "description": "a host name, or an address to remove every line of", - "type": "string" - } - }, - "required": [ - "name" - ], - "type": "object" - } - } - ], - "paths": [ - { - "path": "/etc/hosts" - }, - { - "path": "/etc/hostname" - } - ] -} diff --git a/connectivity/seats/node-intrusion-prevention/seat.json b/connectivity/seats/node-intrusion-prevention/seat.json deleted file mode 100644 index b2bc355..0000000 --- a/connectivity/seats/node-intrusion-prevention/seat.json +++ /dev/null @@ -1,90 +0,0 @@ -{ - "format": 1, - "seat": "node-intrusion-prevention", - "scope": "node", - "grain": "seat-list", - "domain": "Connectivity", - "decision": "novox/hq ADR 0121", - "verbs": [ - { - "name": "status", - "description": "Every jail on this machine with how many it is watching and holding now, and the totals since the jail started; one jail's detail when named.", - "replaces": [ - "fail2ban-client status" - ], - "input": { - "properties": { - "jail": { - "description": "one jail (optional)", - "type": "string" - } - }, - "type": "object" - } - }, - { - "name": "banned", - "description": "Every address banned on this machine right now, with the jail that holds it and when the ban ends.", - "replaces": [ - "fail2ban-client banned" - ], - "input": { - "properties": { - "jail": { - "description": "one jail (optional)", - "type": "string" - } - }, - "type": "object" - } - }, - { - "name": "ban", - "description": "Ban one address in one jail now, for the jail's ban time — an operator's act on the live ban list, which the mesh never writes itself.", - "replaces": [ - "fail2ban-client set banip" - ], - "input": { - "properties": { - "ip": { - "description": "the address", - "type": "string" - }, - "jail": { - "description": "the jail to hold it", - "type": "string" - } - }, - "required": [ - "ip", - "jail" - ], - "type": "object" - } - }, - { - "name": "unban", - "description": "Let one address go, from one jail or from every jail when none is named.", - "replaces": [ - "fail2ban-client unban", - "fail2ban-client set unbanip" - ], - "input": { - "properties": { - "ip": { - "description": "the address", - "type": "string" - }, - "jail": { - "description": "one jail (optional)", - "type": "string" - } - }, - "required": [ - "ip" - ], - "type": "object" - } - } - ] -} diff --git a/connectivity/seats/node-packet-filter/seat.json b/connectivity/seats/node-packet-filter/seat.json deleted file mode 100644 index 005b50c..0000000 --- a/connectivity/seats/node-packet-filter/seat.json +++ /dev/null @@ -1,63 +0,0 @@ -{ - "format": 1, - "seat": "node-packet-filter", - "scope": "node", - "grain": "seat-list", - "domain": "Connectivity", - "decision": "novox/hq ADR 0121", - "verbs": [ - { - "name": "rules", - "description": "The packet filter as this machine enforces it now: the nftables ruleset and, where the tool exists, the legacy filter's listings. Narrowed to one table or chain when asked.", - "replaces": [ - "nft list ruleset", - "iptables -L", - "iptables-save" - ], - "input": { - "properties": { - "chain": { - "description": "one chain of that table (optional)", - "type": "string" - }, - "table": { - "description": "one nftables table, as `family name` (optional)", - "type": "string" - } - }, - "type": "object" - } - }, - { - "name": "reload", - "description": "Load the mesh's own filter again from the file the mesh writes, and answer with the mesh's table as loaded.", - "replaces": [ - "nft -f" - ], - "input": { - "properties": {}, - "type": "object" - } - }, - { - "name": "remove", - "description": "Remove one rule set the mesh did not write, named exactly as the host reports it (novox/hq ADR 0168) — `chain X (iptables-legacy)` or `table ip6 filter, chain DOCKER-USER`. Refuses the mesh's tables, the runtime's own chains, a built-in chain and an active found firewall's chains. An operator's act, by name, never a flush.", - "replaces": [ - "nft delete", - "iptables -X" - ], - "input": { - "properties": { - "where": { - "description": "the rule set, as `node show` lists it", - "type": "string" - } - }, - "required": [ - "where" - ], - "type": "object" - } - } - ] -} diff --git a/connectivity/seats/node-resolver/seat.json b/connectivity/seats/node-resolver/seat.json deleted file mode 100644 index be8a91f..0000000 --- a/connectivity/seats/node-resolver/seat.json +++ /dev/null @@ -1,78 +0,0 @@ -{ - "format": 1, - "seat": "node-resolver", - "scope": "node", - "grain": "seat-list", - "domain": "Connectivity", - "decision": "novox/hq ADR 0247", - "verbs": [ - { - "name": "routes", - "description": "What this machine's own resolver sends where: the mesh's resolvers, which answer every name not routed elsewhere, and each link given servers of its own with the domains routed to them. Also the resolver file's outside writes it kept, newest first: when, who wrote it as far as the file says, whether a module took it, and when the resolver's own file was put back.", - "replaces": [ - "resolvectl status", - "resolvectl dns", - "resolvectl domain" - ], - "input": { - "properties": {}, - "type": "object" - } - }, - { - "name": "route", - "description": "Send these domains, and every name under them, to these servers over this link — and only them: the link is never the machine's default route for names, and the mesh's own domain is refused. Replaces whatever the link was given before. A link that goes away takes its route with it.", - "replaces": [ - "resolvectl dns", - "resolvectl domain", - "resolvectl default-route" - ], - "input": { - "properties": { - "domains": { - "description": "the domains to route there, separated by spaces or commas", - "type": "string" - }, - "link": { - "description": "the network link the servers are reached over, by name (a VPN's tunnel interface)", - "type": "string" - }, - "servers": { - "description": "the servers' addresses, separated by spaces or commas", - "type": "string" - } - }, - "required": [ - "link", - "domains", - "servers" - ], - "type": "object" - } - }, - { - "name": "unroute", - "description": "Take one link's route away: its domains go back to the mesh's resolvers. Nothing changes when the link has none.", - "replaces": [ - "resolvectl revert" - ], - "input": { - "properties": { - "link": { - "description": "the network link, by name", - "type": "string" - } - }, - "required": [ - "link" - ], - "type": "object" - } - } - ], - "paths": [ - { - "path": "/etc/resolv.conf" - } - ] -} diff --git a/connectivity/seats/node-uplink/seat.json b/connectivity/seats/node-uplink/seat.json deleted file mode 100644 index cd59ee5..0000000 --- a/connectivity/seats/node-uplink/seat.json +++ /dev/null @@ -1,34 +0,0 @@ -{ - "format": 1, - "seat": "node-uplink", - "scope": "node", - "grain": "seat-list", - "domain": "Connectivity", - "decision": "novox/hq ADR 0117", - "verbs": [ - { - "name": "resolvers", - "description": "The machine's resolver file as it is now: the resolvers, search domains and options it lists, whether it is the file the mesh declares, and when it is not, who wrote it as far as the machine shows — its header, a backup a VPN client left beside it, a link in its place, a known writer running.", - "optional": true, - "input": { - "properties": {}, - "type": "object" - } - }, - { - "name": "links", - "description": "Every network link on the machine: its state, its addresses, whether the default route leaves through it, and the resolvers and search domains the network manager knows for it — a VPN's tunnel included.", - "optional": true, - "input": { - "properties": {}, - "type": "object" - } - } - ], - "paths": [ - { - "path": "/etc/resolv.conf", - "steps-back-for": "node-resolver" - } - ] -} diff --git a/connectivity/seats/the-private-network/seat.json b/connectivity/seats/the-private-network/seat.json deleted file mode 100644 index bb27936..0000000 --- a/connectivity/seats/the-private-network/seat.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "format": 1, - "seat": "the-private-network", - "scope": "node", - "grain": "whole", - "domain": "Connectivity", - "decision": "novox/hq ADR 0110, ADR 0634, ADR 0635", - "description": "The seat of the private network (ADR 0110): the one network the mesh runs over, which a machine can have only one of; the mesh provides its holder itself and the provision carries no fields.", - "verbs": [], - "provisions": [ - { - "name": "private-network", - "form": { - "type": "object", - "description": "the provision has no fields: it is the machine's reach to the others" - } - } - ] -}