Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
50 commits
Select commit Hold shift + click to select a range
c4a15a8
varun's day 2 task completed :
codervaruns Aug 1, 2025
aa7eb01
Add files via upload
aceqbit Aug 9, 2025
d708dc8
Basic Command Interface without "cd" capability
Sachcith Aug 13, 2025
48a05fb
Added 'cd' compatibility
Sachcith Aug 13, 2025
d84bf25
Add files via upload
aceqbit Aug 13, 2025
cc2e233
Add files via upload
aceqbit Aug 14, 2025
d49efbb
webSocket's main file
aceqbit Aug 27, 2025
06f1d43
Add files via upload
aceqbit Aug 27, 2025
c3e66c2
Exec Thingy Class
Sachcith Aug 27, 2025
8361755
Update webSocketNeo.rs
aceqbit Aug 28, 2025
cd30777
Update message.rs
aceqbit Aug 28, 2025
3bba7d3
Update lobby.rs
aceqbit Aug 28, 2025
41cda45
Update startConn.rs
aceqbit Aug 28, 2025
a967e56
Update webSocmain.rs
aceqbit Aug 28, 2025
79e67b7
ui to websocket connection
codervaruns Aug 28, 2025
4e95944
ui to ws connection final
codervaruns Aug 28, 2025
1ca3103
Final ExecThingy.rs
Sachcith Aug 28, 2025
37b8d9c
Added CD functionality to lobby.rs
Sachcith Aug 29, 2025
1e8529a
added KeepAlive (PingPong)
codervaruns Aug 30, 2025
282067b
fixed the Firewall Issue
codervaruns Aug 30, 2025
d0060e8
file tree directory feature with file explorer ui added
codervaruns Aug 30, 2025
6f6f062
AutoComplete feature added
codervaruns Aug 30, 2025
8278e75
fixed compilation errors
codervaruns Aug 30, 2025
adfb544
fixed FileExplorer and AutoComplete
codervaruns Aug 30, 2025
7784b2f
Update lobby.rs,timeout 15s
aceqbit Aug 30, 2025
551b22a
fileexplorer fix
codervaruns Aug 30, 2025
7c1caff
Merge branch 'main' of https://github.com/codervaruns/http-ssh.rfc
codervaruns Aug 30, 2025
bce486d
fix fileexplorer
codervaruns Aug 30, 2025
5153318
fix2 fileexplorer
codervaruns Aug 30, 2025
1e2252f
fix3
codervaruns Aug 30, 2025
6813513
fix4
codervaruns Aug 30, 2025
9e38d92
fix5
codervaruns Aug 30, 2025
b3a3149
fix6
codervaruns Aug 30, 2025
00314ea
fix7
codervaruns Aug 30, 2025
27a4036
organizing and restructuring the backend folder
codervaruns Sep 1, 2025
ff44061
Updated README.md
Praaneesh Sep 27, 2025
cecf440
Updated README.md
Praaneesh Sep 27, 2025
a79b531
Updated README.md
Praaneesh Sep 27, 2025
15668e1
Update README.md
Praaneesh Sep 27, 2025
2dda009
Update README.md
aceqbit Sep 27, 2025
f764ee0
Update README.md
aceqbit Sep 27, 2025
55c457a
Update README.md
aceqbit Sep 27, 2025
380e96c
Update README.md
aceqbit Sep 27, 2025
3793097
Update README.md
aceqbit Sep 27, 2025
c59ede1
Update README.md
aceqbit Sep 27, 2025
e586d7e
bug fix
codervaruns Sep 28, 2025
6dc37bf
Removed application process and guidelines sections
codervaruns Sep 28, 2025
887d2ef
Update README.md
aceqbit Sep 28, 2025
37055ba
Update README.md
aceqbit Sep 28, 2025
6b59906
Update README.md
aceqbit Sep 28, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
130 changes: 130 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
# Rust
/target/
**/*.rs.bk
*.pdb
Cargo.lock

# Node.js / React
frontend/node_modules/
frontend/build/
frontend/dist/
frontend/.env.local
frontend/.env.development.local
frontend/.env.test.local
frontend/.env.production.local
frontend/npm-debug.log*
frontend/yarn-debug.log*
frontend/yarn-error.log*

backend/target/
backend/node_modules/

# Logs
*.log
logs/

# Runtime data
pids
*.pid
*.seed
*.pid.lock

# Coverage directory used by tools like istanbul
coverage/
*.lcov

# nyc test coverage
.nyc_output

# Dependency directories
node_modules/

# Optional npm cache directory
.npm

# Optional eslint cache
.eslintcache

# Microbundle cache
.rpt2_cache/
.rts2_cache_cjs/
.rts2_cache_es/
.rts2_cache_umd/

# Optional REPL history
.node_repl_history

# Output of 'npm pack'
*.tgz

# Yarn Integrity file
.yarn-integrity

# dotenv environment variables file
.env
.env.test
.env.production

# parcel-bundler cache (https://parceljs.org/)
.cache
.parcel-cache

# Next.js build output
.next

# Nuxt.js build / generate output
.nuxt
dist

# Gatsby files
.cache/
public

# Storybook build outputs
.out
.storybook-out

# Temporary folders
tmp/
temp/

# IDE and Editor files
.vscode/
.idea/
*.swp
*.swo
*~

# OS generated files
.DS_Store
.DS_Store?
._*
.Spotlight-V100
.Trashes
ehthumbs.db
Thumbs.db

# Backup files
*.bak
*.backup
*.old

# Database
*.db
*.sqlite
*.sqlite3

# Configuration files with sensitive data
config.toml
secrets.toml
.secrets

# Test output
test-results/
coverage/

# Build artifacts
*.exe
*.dll
*.so
*.dylib
90 changes: 74 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,12 +1,9 @@
# http-ssh.rfc

Submissions repository for `ASOC17` - HTTP-SSH App

> [!NOTE]
All discussions regarding `ASOC17: HTTP-SSH App` shall take place in [https://github.com/orgs/acm-avv/discussions/17](https://github.com/orgs/acm-avv/discussions/17).

## Overview
In-order to be eligible to work on this project as **Request for Code** under the banner of **Amrita Summer of Code, 2025**, you are required to form a team of size 1-4 and have all the members register at [amsoc.vercel.app](https://amsoc.vercel.app)

## Project Manager Details
@Ashrockzzz2003
```json
Expand All @@ -16,22 +13,78 @@ In-order to be eligible to work on this project as **Request for Code** under th
"GitHub": "@Ashrockzzz2003",
```

## How to Apply
Type out a message in [https://github.com/orgs/acm-avv/discussions/17](https://github.com/orgs/acm-avv/discussions/17) with the following details:
1. Team Name
2. Team Members' Names, Roll-Numbers and respective GitHub usernames
3. Tag the project manager as **@username**

## Guidelines
1. Keep all discussions limited to this discussion channel by tagging the project manager via **@username**
2. Do not try to contact the project manager personally unless they are open to it.
4. Maintain decorum and avoid any misbehavior with the project manager. This can be subjected to disqualification.
5. Send us an update every week with regards to your progress for your respective project. If we do not receive an update for more than 10 days then your team will be disqualified automatically.

## Project Description

This project aims to develop a remote shell system that allows users to execute operating system commands on a remote server machine using standard web technologies. Unlike traditional SSH, all communication for commands and their outputs will be facilitated over the HTTP protocol.

## Tech Stack

<img width="50" height="50" alt="htmlIm" src="https://github.com/user-attachments/assets/063729c5-6183-4b12-9dff-feffae161cee" />
<img width="50" height="50" alt="cssIm" src="https://github.com/user-attachments/assets/05d5c64e-c8b5-48f2-a3bf-5dcab062c27f" />
<img width="50" height="50" alt="reactIm" src="https://github.com/user-attachments/assets/037fcc01-f579-418a-9066-5d8740e0c937" />
<img width="50" height="50" alt="nodejsIm" src="https://github.com/user-attachments/assets/9bc3535c-c465-4000-b41d-26dcc7202c9b" />
<img width="50" height="50" alt="npmIm" src="https://github.com/user-attachments/assets/a5233af1-3439-46bf-9068-7910c2dfc2b2" />
<img width="50" height="50" alt="rustIm" src="https://github.com/user-attachments/assets/1cff2e3d-468a-4562-b844-c9ffcca545e2" />
<img width="50" height="50" alt="json" src="https://github.com/user-attachments/assets/14de755d-29e5-4002-9a69-1fca14fdd3e3" />
<img width="50" height="50" alt="actix" src="https://github.com/user-attachments/assets/5f9df67b-0a2c-4cb3-8910-363d680272bc" />

## Installation Guide

1. Prerequisites
- Node.js (v14 or higher)
- npm or yarn package manager
- Rust (for backend)
- Git

2. Frontend Installation

- Clone the repository:
git clone https://github.com/codervaruns/http-ssh.rfc.git
cd http-ssh.rfc/frontend

- Install frontend dependencies:
npm install

3. Start development server:
- npm start
- Frontend will be available at: http://localhost:3001

4. Frontend Configuration
- Default backend WebSocket URL: ws://localhost:8080/ws
- Connection URL can be modified in the application interface

5. Backend Installation

- Navigate to backend directory:
cd http-ssh.rfc/backend

- Build and run the Rust backend:
cargo build
cargo run

6. Default Settings
- Frontend:
Port: 3001

7. Production Deployment

- To create production build:
cd frontend
npm run build

8. Testing the Connection

- Start backend server
- Launch frontend application
- Verify WebSocket URL matches backend
- Click connect button
- Use terminal interface for commands

9. System Requirements
- OS: Windows/Linux/MacOS
- Modern web browser with WebSocket support
- Sufficient permissions for system commands

### Core Functionality:
- Remote Command Execution: Enable users to run shell commands on a distant server.
- HTTP-Based Communication: Utilize HTTP for transmitting commands from the client to the server and for sending command outputs back to the client.
Expand All @@ -55,3 +108,8 @@ This project aims to develop a remote shell system that allows users to execute
- Client-Side: Standard web technologies (HTML, CSS, JavaScript) for the user interface.

This system provides a flexible and web-friendly alternative for remote command execution, leveraging the widespread accessibility and capabilities of HTTP.
### DEMO:
![WhatsApp Image 2025-09-28 at 11 24 55_d8d7d076](https://github.com/user-attachments/assets/67af428a-d6b6-4c2e-a779-02b833b01304)
![WhatsApp Image 2025-09-28 at 11 24 55_ab95295f](https://github.com/user-attachments/assets/f2d79cbd-c9a8-4b8e-999a-1f8a851a62de)
![WhatsApp Image 2025-09-28 at 11 24 55_705d8ce3](https://github.com/user-attachments/assets/b05117e6-deb4-4f52-b8e7-7bf892491ef4)

21 changes: 21 additions & 0 deletions backend/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
[package]
name = "http-ssh-rfc"
version = "0.1.0"
edition = "2021"

[[bin]]
name = "server"
path = "src/main.rs"

[dependencies]
actix = "0.13"
actix-web = "4"
actix-web-actors = "4"
uuid = { version = "1.0", features = ["v4", "serde"] }
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
env_logger = "0.11"
tokio = { version = "1.0", features = ["full"] }
chrono = { version = "0.4", features = ["serde"] }
wait-timeout = "0.2"
log = "0.4"
Loading