feat(cluster): start from a known node instead of a blank form
Setting up a telnet cluster is the step operators get stuck on. The address and the port are two pieces of information nobody has to hand, and a typo in either looks exactly like a node that is down — there is nothing to read, only a connection that never comes. So the editor offers a list, and choosing one fills the fields. Six to begin with: F4BPO, DXFun, SOTA, POTA, and the two Reverse Beacon feeds — listed separately and named for what they carry, because they are one network on two ports where 7000 is CW and RTTY and 7001 is FT8 and FT4, and no amount of trying will tell you which is which. The preset then gets out of the way. Everything stays editable, the name is only filled when the operator has not chosen one of their own, and a node typed in by hand behaves exactly the same. Reopening a node created from a preset shows it selected, so the list also answers "which one is this".
This commit is contained in:
@@ -0,0 +1,44 @@
|
||||
// Cluster nodes worth starting from.
|
||||
//
|
||||
// Setting up a telnet cluster is the step operators get stuck on: the host and
|
||||
// the port are two pieces of information nobody has to hand, a typo produces a
|
||||
// silent failure to connect, and the ports are not guessable — a Reverse Beacon
|
||||
// feed on 7000 carries CW and RTTY while 7001 carries FT8 and FT4, which no
|
||||
// amount of trying will tell you.
|
||||
//
|
||||
// So the editor offers a list. It fills the fields and then gets out of the
|
||||
// way: everything stays editable, because a node moves or an operator wants a
|
||||
// different name for it, and a preset that could not be corrected would be
|
||||
// worse than none.
|
||||
//
|
||||
// The list is meant to grow. One entry per node, and nothing here is special —
|
||||
// a node added by hand behaves exactly the same.
|
||||
|
||||
export type ClusterPreset = {
|
||||
name: string;
|
||||
host: string;
|
||||
port: number;
|
||||
// What it carries, in a few words: the dropdown is chosen from, not read, and
|
||||
// "SOTA" means nothing to somebody who has never chased a summit.
|
||||
about: string;
|
||||
// Sent one per line after login. Empty for the nodes that need nothing.
|
||||
init?: string;
|
||||
};
|
||||
|
||||
export const CLUSTER_PRESETS: ClusterPreset[] = [
|
||||
{ name: 'F4BPO', host: 'cluster.f4bpo.com', port: 7300,
|
||||
about: 'General DX cluster (OpsLog author’s node)' },
|
||||
{ name: 'DXFun', host: 'dxfun.com', port: 8000,
|
||||
about: 'General DX cluster, worldwide' },
|
||||
{ name: 'SOTA', host: 'cluster.sota.org.uk', port: 7300,
|
||||
about: 'Summits On The Air spots' },
|
||||
{ name: 'POTA', host: 'pota-cluster.iz2lsc.eu', port: 7373,
|
||||
about: 'Parks On The Air spots' },
|
||||
// The two Reverse Beacon feeds are one network on two ports, and which port
|
||||
// decides which modes arrive. Getting that wrong looks exactly like a dead
|
||||
// node, so they are listed separately and named for what they carry.
|
||||
{ name: 'RBN CW', host: 'telnet.reversebeacon.net', port: 7000,
|
||||
about: 'Reverse Beacon Network — CW and RTTY skimmers' },
|
||||
{ name: 'RBN FTx', host: 'telnet.reversebeacon.net', port: 7001,
|
||||
about: 'Reverse Beacon Network — FT8 and FT4 skimmers' },
|
||||
];
|
||||
Reference in New Issue
Block a user