Files

87 lines
3.1 KiB
Markdown

# ekho
##### _Needlessly Networked MOTD generator_
## Why?
To test my abilities to develop networked programs, and to enhance my skills in writing such.
## Requirements
### Hardware
- Client machine
- Server machine (not required to be distinct from Client)
### Software
- Tested with [golang] v1.26
- Installation has only been tested with [just] v1.53
- Server installation assumes systemd (tested with v260.2)
### Installation
Clone the repo
``` sh
git clone https://github.com/alexander-the-alright/ekho
cd ekho
```
#### Justfile
It is recommended to use ```just``` for installation, as it has more
capabilities than ```make```, however, there is a makefile included.
To install the server with ```just```, run ```sudo just ins_server```.
You will be prompted to enter a new port number to run the server on (
or leave blank to use 1300). The port will be changed in the source
file before compilation.
To install the client with ```just```, run ```sudo just ins_client```.
You will be prompted to enter the IP (or URL) and port of the server
(or leave blank to use localhost:1300). The IP/URL and port will be
changed in the source file before compilation.
#### Makefile
If you are unable or willing to use ```just```, the included makefile
still has most of the functionality, but it does not change any
important parameters. The following changes are advised before
installation.
1. On the client machine, change the IP/URL and port in the client source file. This can be
done quickly with ```sed -i -e "s/127.0.0.1:1300/YOUR.IP.GOES.HERE:PORT/" client.go```
2. On the server machine, change the port in the server source file. This can be done with a
similar command: ```sed -i -e "s/1300/PORT/" server.go```. (note: this
should match the port from bullet 1)
3. On the server machine, change the user referenced in the systemd service file. This can be
done with another sed command, ```sed -e -i "s/USER/YOUR_USERNAME/" ekho.service```
After making these changes on the respective machines, run either
```sudo make ins_client``` or ```sudo make ins_server``` to compile and install the client
and/or server binaries.
#### After Installation
After installation of the server binary, systemd will display the
status of the new service. It should be ```enabled``` and
```running```.
Finally done!
### Usage
The client uses the following flags
``` sh
-h - display help message
-a <string> - adds required argument <s> as a quote to server
-ip <ip:port> - specify alternate server destination
-l - list all quotes
-r [i] - remove; may be run with or without argument
-s <i> - specify the size of the receipt buffer
```
The server uses the following flags
``` sh
-h - display help message
-s <i> - specify the size of the receipt buffer
-v - display version and exit
-vv - display version and about info and exit
```
### To Be Implemented
- Log all uses/transaction data each day
- Request, send, and receive the logfile
- User-specific quotes/quotefiles
- Colored printing and coloring quotes
- Edit quotes
[golang]: <https://go.dev/doc/install>
[just]: <https://github.com/casey/just>