Files
factorio-clusterio/packages/ctl
Hornwitser de48d807f1 Refactor connector logic
Refine the state flow used in the connector abstractions to better
handle close while connecting and resuming.  The new logic is to close
the connection immediately in these two states instead of continuing
trying to connect and then giving up some point later.

For the connectors the handshake state is split into connecting
and resuming, new is replaced by closed, and the closing state is turned
into a boolean flag as it's possible that closing is desired while
connecting, connected or resuming.  The connecting state is not present
in the server connector because there's nothing for the server to do in
that connector state.

The timeout logic is completely removed, once a connection attempt is
started for the client it will continue to attempt to connect, attempt
to resume dropped connections and attempt reconnects until either an
authentication error occurs or the client explicitly requests to close
the connection.

A new session timeout is added to control how long to attempt to resume
the connection until it's considered dead and invalidated.  This allows
stale connections to give up earlier, and swallow up less data while in
the dropped but not yet invalidated state.

For the client side sending messages while it's connecting has been
changed to throw an error instead of queuing up the message and
(possibly) sending it after the connection is established.  Code
shouldn't try to send messages without knowing if the connection it's
trying to send them over is active or not.
2021-08-30 20:20:49 +02:00
..
2021-08-30 20:20:49 +02:00
2021-06-28 16:29:34 +02:00

Clusterio Command Line Interface

Provides a command line interface for managing a Clusterio cluster.

Note that this document only describes the options and commands for managing clusterioctl itself, see Managing a cluster for the available commands used for managing a cluster.

Usage

npx clusterioctl <command>

Common options:

  • --plugin-list <file> JSON file to use for storing the list of plugins that are available to ctl. Defaults to plugin-list.json and will be created if it does not exist. See the plugin command for managing this list.

  • --config <file> JSON file to use for storing configuration for ctl. Defaults to config-control.json and will be created if it does not exist. See the config command for inspecting and modifying the configuration.

plugin <command>

Configure plugins available to be loaded by ctl. The available plugins will be automatically loaded and the commands they provide will be added to the ctl utility.

plugin add <path>

Add plugin either by require path or relative/absolute path to the plugin directory. A relative path must start with ./ or ../ (or .\ and ..\ on Windows) otherwise it will be assumed to be a require path for an installed package in node_modules.

For example, installing the Subspace Storage plugin:

npm install @clusterio/plugin-subspace_storage
npx clusterioctl plugin add @clusterio/plugin-subspace_storage

Since the plugin-list.json is shared between master, slave and ctl you usually only need to do this once per machine.

plugin remove <name>

Remove a plugin by its name. This should be done before uninstalling the plugin, otherwise there will be an error when Clusterio tries to load the info from the plugin. Removing and unistalling a plugin is usually not neccessary as the functions provided by the plugin can be disabled in the config.

For example, uninstalling the Subspace Storage plugin:

npx clusterioctl plugin remove subspace_storage
npm uninstall @clusterio/plugin-subspace_storage

Since the plugin-list.json is shared between master, slave and ctl you usually only need to do this once per machine.

plugin list

Lists the plugins set up to be available by name followed by path.

config-control

Manage the ctl configuration. This allows setting the url and token to the master server to manage.

config-control set <config-entry> [value]

Set a config entry to the given value. If value is not provided the entry is set to null. If the config entry is of type object the value must be a valid JSON serialization of an object.

See docs/configuration.md in the main repositiory for the available configuration.

config-control show <config-entry>

Shows the value for a single config entry.

config-control list

Lists up all configuration entries with their currently configured values.

See Also

Managing a cluster for the available commands used for managing a cluster.

The Clusterio repository for instructions on how to set up a cluster.