DEV Community

Henry Barreto
Henry Barreto

Posted on

Armly, commander and soldiers.

What I built

Armly is a combination of a Soldiers (Clients) and Commanders(Server). Each Commander has a list of Commands/orders, which it sends to its Soldiers, what it can have many Soldiers simultaneously. The Soldiers follow the Commander's orders and, when all orders have been run, it sends back the reports with the output from commands.

Category Submission: Random Roulette

App Link

A direct link to the app could be problematic because it is not prepared for some attacks, but I can show how to test it yourself.

git clone https://github.com/henrybarreto/Armly
cd Armly/
Enter fullscreen mode Exit fullscreen mode

From here it just runs the commander and the soldier to see the commands inside "config.ron" file to be executed.

cd commander
cargo r
Enter fullscreen mode Exit fullscreen mode
cd soldier 
cargo r
Enter fullscreen mode Exit fullscreen mode

I deployed little Droplet on Digital Ocean to test. If you want to try, put "armly.henrybarreto.dev:14114" in the soldier's config.ron file and run it. No worries, it will just run echo "Hello, world" on your machine.

Screenshots

Screenshots from a CLI application is not useful...

Commander

Soldier

Description

Armly is a bundle of a server(Commander) and clients(Soldiers) to serve and execute commands.

Link to Source Code

https://github.com/henrybarreto/Armly/

Permissive License

MIT License

Background

When I had have been studying about Linux networks, I have used many utilities what I liked too much, but one have awoken me interest, the netcat. This "nc" (netcat) is a utility for reading from and writing to network connections using TCP or UDP.

In somewhere I found someone explaining how to use to execute commands directly to Windows's CMD. I thought it is interesting and could have many other good applications, but I have been letting aside, until the Hashnode and Digital Ocean Hackathons incentivized my try to implement what I thought. I first post in my blog, but now I got up the courage to try here en dev.to.

How I built it

In 2020, I have decided to begin a blog and write about the things I have been learning, to try to build a portfolio because I guess I know a good variety of things, but I do not feel prepared enough to apply for a job. I'm changing this mindset...
This adventure makes my start to looking for new things, one of this was Rust, a programming language what have the promise makes the application built on it be memory safe and so others magic features. I loved and began to read about and decided to write about it.
As I know the best way to prove a new skill is testing it, so I have begun to write a simple app on Rust, using some features what I knew it could be a challenge to implement, thus it was born the Armly, implementing networking, threads and encrypting.
I also want to implement a clean "protocol", over TCP, for the application.

Additional Resources/Info

https://henrybarreto.dev/armly-command-server-for-christmashackathon

Discussion (0)