Update README.md
This commit is contained in:
81
README.md
81
README.md
@@ -1,47 +1,70 @@
|
|||||||
# Command-Line-Radio
|
# P7-InfraNET CLRadio-Hybrid A-1-ii Integra
|
||||||
|
|
||||||
A radio-like chat system for use on local networks. Verison A-1
|
**Integra** is a high-performance, dual-pane terminal communication hub built for real-time "radio" style messaging. It features a split-pane interface powered by `Rich` and `Prompt-Toolkit`, allowing users to chat on one side while managing system commands on the other.
|
||||||
|
|
||||||
<h3>Introduction</h3>
|
---
|
||||||
|
|
||||||
Ever wanted a mini text radio across your local network? Well, here it is!
|
## 🚀 Key Features
|
||||||
|
|
||||||
CLRadio is a radio program that can transmit one-way text messages (as of now) to another computer, regardless of distance, as long as they are connected to the same network. It is pretty intuitive to use.
|
* **Dual-Pane UI**: Dedicated panels for live chat (left) and system commands (right).
|
||||||
|
* **Active Listening**: Automatically binds to Port 443 on startup to receive incoming traffic.
|
||||||
|
* **Command Parser**: Integrated command-line interface in the "Cmd" panel for profile management and connections.
|
||||||
|
* **Automatic Scrolling**: Intelligent log management that slices history to fit your terminal height perfectly.
|
||||||
|
* **Visual Feedback**: Active panel highlighting and a blinking cursor to indicate focus.
|
||||||
|
* **Profile Persistence**: Saves and loads known peers from `known_connections.txt`.
|
||||||
|
|
||||||
<h3>Usage</h3>
|
---
|
||||||
|
|
||||||
1. Start the server program before starting the client.
|
## ⌨️ Controls & Navigation
|
||||||
|
|
||||||
2. Obtain the ipv4 address through running `ipconfig` in cmd/powershell
|
| Key | Action |
|
||||||
|
|:--- |:--- |
|
||||||
|
| **`TAB`** | Switch focus between the **Chat** and **Cmd** panels. |
|
||||||
|
| **`ENTER`** | Send a message (if in Chat) or execute a command (if in Cmd). |
|
||||||
|
| **`Ctrl + Q`** | Safe Exit: Disconnects sockets and closes the application. |
|
||||||
|
| **`Backspace`** | Standard text deletion in the active panel. |
|
||||||
|
|
||||||
3. Create a profile in the client
|
---
|
||||||
|
|
||||||
```
|
## 🛠️ Installation & Setup (Linux/macOS)
|
||||||
================================================================================
|
|
||||||
CLRadio Sender Version A-1 | by P7MJ
|
Because this app uses specific dependencies and requires privileged ports, follow these steps to ensure a clean environment.
|
||||||
--------------------------------------------------------------------------------
|
|
||||||
[1] Use/Edit saved ports
|
### 1. Create a Virtual Environment
|
||||||
[2] Specify port
|
It is highly recommended to use a `venv` to avoid library conflicts:
|
||||||
>
|
```bash
|
||||||
|
python3 -m venv CLRadio
|
||||||
|
source CLRadio/bin/activate
|
||||||
```
|
```
|
||||||
|
|
||||||
Insert 1 and press Enter, then you will see:
|
### 2. Install Dependencies
|
||||||
|
```bash
|
||||||
|
pip install rich prompt-toolkit
|
||||||
```
|
```
|
||||||
Current Saved Profiles:
|
|
||||||
<profiles>: <ip>
|
|
||||||
|
|
||||||
[1] Write new profile entry
|
### 3. Running with Sudo (The "Venv" Trick)
|
||||||
[2] Select a profile
|
Since the app binds to **Port 443**, it needs root privileges. To use `sudo` without losing your `venv` libraries, use the absolute path to the venv's python:
|
||||||
[3] Clear all profiles (IRREVERSIBLE, WILL ANNIHILATE MASSDEBATER67'S BRAIN)
|
```bash
|
||||||
>
|
sudo ./CLRadio/bin/python3 CLRadio-Hybrid-A-1-ii-Integra.py
|
||||||
```
|
```
|
||||||
Select a profile, if it exists, using the position at which it is in the list (1 for first entry, 2 for second...), create a new one, or delete all of them.
|
|
||||||
|
|
||||||
4. The client will connect to that profile and a connection will be initialized if a server at that IP exists.
|
---
|
||||||
|
|
||||||
<h3>Known Errors/Future development directions</h3>
|
## 📡 Commands (Cmd Panel Only)
|
||||||
|
|
||||||
- You must start the server first in order to connect with the client.
|
All commands must be typed into the **Right Panel** and start with a `/`.
|
||||||
|
|
||||||
- The client is now one-way. The server is recieve-only, much like non-commander variants of the T-34 in WW2.
|
* **`/connect`**: Displays all saved profiles from your `known_connections.txt`.
|
||||||
|
* **`/connect <n>`**: Attempts to establish a connection to the $n^{th}$ profile in your list.
|
||||||
|
* **`/profiles add <nickname> <ip>`**: Saves a new peer to your permanent list.
|
||||||
|
* **`/profiles clear`**: Wipes all saved profiles.
|
||||||
|
* **`/listen`**: Checks the status of the background receiver.
|
||||||
|
* **`/help`**: Displays the in-app command reference.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## ⚠️ Security Note
|
||||||
|
Port **443** is a restricted port. Ensure your firewall (ufw/iptables) allows incoming TCP traffic on 443 to receive messages from peers. If running on Windows, ensure you are using an Administrative Terminal.
|
||||||
|
|
||||||
|
---
|
||||||
|
*Developed by P7MJ | P7-InfraNET Architecture*
|
||||||
Reference in New Issue
Block a user