We created a desktop application for controlling multiple computers in a local network. (Sky Net) Its architecture follows a model with one Manager and multiple Agents. (Mr. Smith) The Agents are installed on the target machines as a Windows Service. The Manager can be installed and kept constantly running as a Web/Windows Service, or it can run as a stand-alone program to be run when needed. (Everyone wants to be a manager these days.) It can control and accept responses from multiple agents simultaneously. Using SSL-encrypted connection and PowerShell scripts, computer control becomes simple and secure. We are also planning to implement a second connection option in the future – HTTPS.
We built a communication layer, SSL-encrypted as already mentioned, so that we can transfer commands built specifically for our clients and their needs. It supports asynchronous command and file sending to one or more Agents. We created a comfortable architecture for developing commands, which takes care of everything. All the programmers using the communication layer have to say is:
“I want that kind of command”,
“Execute it there (IP address)”,
“Return a response here”
аnd the magic happens – the communication layer takes care of everything – connecting, encrypting, maintaining the connection alive, the method of sending, and ensuring that when multiple commands are being sent, each one of them will arrive safe and sound, and be executed. It’s like a mother hen. (We’re not bragging)
When a command begins its long journey in the seas, it first gets serialized in JSON, archived (to minimize package size), then broken down into small pieces with some descriptions attached to it. Afterwards we pass it through customs to be sent to the Agents.
We built multiple fail-safes in the Agents to ensure that they are operational in 99% of the time. Except in a nuclear disaster, but you’ll probably have other problems in that case) (as we said, Sky Net, we’re in for some trouble)
If a certain machine does not have an Agent, if the user needs to and has enough permissions, the Agent can be installed remotely. (They’re in trouble.)