Configurable ComputerCraft SCADA system for multi-reactor control of Mekanism fission reactors with a GUI, automatic safety features, waste processing control, and more! Please be sure to take a look at the Wiki tab, this project has lots of docs!
Initiate either via the Supervisor front panel or the Pocket a remote routine on any device (that isn't the host device) that will perform an update. This will require changing how ccmsi executes or duplicating functionality (former is preferred). Providing functions the main apps can include from ccmsi would be beneficial, though ccmsi is currently treated as an optional stand-alone application to keep its size as small as possible.
The initiator, Pocket or Supervisor, could also have a page where it can trigger its own update without needing to run ccmsi manually.
Remote update commands must absolutely require MACs to be used, otherwise devices can effectively be remotely rebooted by unauthorized parties. However, denying update requests on devices already updated could possibly be enough of a security against that, assuming the user opt's-in to this feature.
Opt-in is preferred, as this will:
Always update in single file mode if required
Always delete unused files
Allow remote reboot of safety-critical devices
Leave devices non-functional if the update fails for any reason
In the case where a perfectly minimal amount of disk usage is present, even a single file mode update may fail and require user intervention. Automatic deletion of a log file followed by a retry could work, assuming it fails at a time where actions can still be taken. That would yet be another action that is not ideal without user confirmation.
Procedure would be:
Re-check for an update
Bring the system into a safe state (supervisor would close connections, PLC would SCRAM reactor)
Yield out of the main code, switching to solely running the update routine
Complete the update routine
Reboot with os.reboot()
Other Considerations
Provide both a check for update and an update option
Limit updating to while the system is in a safe state, similar to how alarm testing works
Initiate either via the Supervisor front panel or the Pocket a remote routine on any device (that isn't the host device) that will perform an update. This will require changing how ccmsi executes or duplicating functionality (former is preferred). Providing functions the main apps can include from ccmsi would be beneficial, though ccmsi is currently treated as an optional stand-alone application to keep its size as small as possible.
The initiator, Pocket or Supervisor, could also have a page where it can trigger its own update without needing to run ccmsi manually.
Remote update commands must absolutely require MACs to be used, otherwise devices can effectively be remotely rebooted by unauthorized parties. However, denying update requests on devices already updated could possibly be enough of a security against that, assuming the user opt's-in to this feature.
Opt-in is preferred, as this will:
In the case where a perfectly minimal amount of disk usage is present, even a single file mode update may fail and require user intervention. Automatic deletion of a log file followed by a retry could work, assuming it fails at a time where actions can still be taken. That would yet be another action that is not ideal without user confirmation.
Procedure would be:
os.reboot()
Other Considerations