Shell developed with Vue.js, Python and Docker

Overview

WebShell

Shell developed with Vue.js, Python and Docker.

https://webshell.brhaka.com

by Brhaka

Start

npm run serve on web-shell-vue starts the npm server for Vue, on localhost, port 8080.

source venv/bin/activate for the virtual environment (recommended).

python3 containerizer.py starts the Python server on localhost, port 8000.

Interface available on localhost:8080

Internal: python server available on localhost:8000


Information

When an user opens the WebShell, it sends a GET request for the Python server, which will create a Docker container using debian:latest and returns its id.

Everything typed in is sent to the Docker container, except for local commands (see bellow).

There, the input is executed and Python returns the result of it.

Both successfull and unsucessfull executions are treated and displayed accordingly on the terminal.


Container-specifics

Containers have a maximum lifetime, currently of 21 minutes.

Every time there's any kind of interaction from the user with the container, the lifetime counter restarts. After the container is killed, in case the user tries to interact with it, a message will be displayed informing the user that the container has expired. Currently, when a container is killed it is also completely deleted.

In case the Python script is killed, it'll first destroy all containers that were still running (if any).


Cryptography

Previously I mentioned that the server returns the container id for future requests. In fact, only the server has access to the actual docker container id. What is used for requests and therefore is visible to users is a cryptographed version of the id.

The cryptography is entirely handled on the server.

An implementation of a symmetric authenticated cryptography algorithm is used.


Local commands

Command Arguments Use
google One Searches google.com for the argument and embedds the page on the terminal screen.
search One Searches en.wikipedia.com for the argument and embedds the page on the terminal screen.
exit None Reloads the page
clear None Clears the history (cookie) and reloads the page
reload None Reloads the page
reboot None Reloads the page
restart None Reloads the page

Error codes

(internal)

Code Description
0x001 Missing ID
0x002 Expired or invalid VM. reload, reboot or restart to continue
0x003 VM connection error
0x004 Missing Command
0x005 command not found
0x006 this command requires at least 1 argument

Images

shell

ls

by Brhaka
You might also like...
A web interface for managing docker containers with an emphasis on templating to provide 1 click deployments. Think of it like a decentralized app store for servers that anyone can make packages for.
A web interface for managing docker containers with an emphasis on templating to provide 1 click deployments. Think of it like a decentralized app store for servers that anyone can make packages for.

Yacht Yacht is a container management UI with a focus on templates and 1-click deployments. If the built in update button isn't working for you try th

Event Registration Vue.js app with the Python-Django Backend 😎
Event Registration Vue.js app with the Python-Django Backend 😎

Events Registration App A cool CRUD Vue app with the Python-Django backend. 😎

Like Streamlit, but fast. A proof-of-concept framework built using JavaScript/Vue + Python/Flask + WebSockets.
Like Streamlit, but fast. A proof-of-concept framework built using JavaScript/Vue + Python/Flask + WebSockets.

Streamsync Like Streamlit, but fast. A proof-of-concept framework built using JavaScript/Vue.js + Python/Flask + WebSockets. By avoiding a rerun of th

vue-js pinia tailwindcss daisyui python sqlalchemy poetry

vue-python VUE-파이썬 client : Vue(JS) + Pinia + Vite + TailwindCSS + Daisyui client 패키지 설치 npm install server : Python + Poetry + FastAPI + sqlAlchemy s

Web IDE,支持c++、python,语法高亮、代码补全、在线运行
Web IDE,支持c++、python,语法高亮、代码补全、在线运行

IDE 前端:VUE + ElementUI 后端:judge0 npm i npm run dev npm run build 上课用,可直接运行c++、python代码,方便调试 代码分两个分支: main:Ace Editor,在线IDE常用的编辑器 http://ide.zhaozihan

 A To-Do App Dependency on Python + NodeJS
A To-Do App Dependency on Python + NodeJS

A To-Do App Dependency on Python + NodeJS

TS-VIS is a Python module for deep learning visualization.
TS-VIS is a Python module for deep learning visualization.

TS-VIS(Tianshu Visualization) is a visualization tool kit of Tianshu AI Platform. , which support visualization of the most popular deep learning frameworks, such as TensorFlow, PyTorch, OneFlow, etc.

BugSweeper is a multiplayer minesweeper game made for the Python Discord Summer Code
BugSweeper is a multiplayer minesweeper game made for the Python Discord Summer Code

A modern minesweeper game with totally no bugs. BugSweeper is a multiplayer minesweeper game made for the Python Discord Summer Code Jam 9, with WebSo

Cross-platform mobile App developed with Ionic, Capacitor and Vue3 to manage and share vegetarian meals, recipes and products, using device's internal storage, camera, geolocation, share and network functionalities.
Cross-platform mobile App developed with Ionic, Capacitor and Vue3 to manage and share vegetarian meals, recipes and products, using device's internal storage, camera, geolocation, share and network functionalities.

Cross-platform mobile App developed with Ionic, Capacitor and Vue3 to manage and share vegetarian meals, recipes and products, using device's internal storage, camera, geolocation, share and network functionalities.

Owner
Brhaka
Brhaka
An easy to use new terminal for Windows/Linux/MacOS platform. It like Xshell or SecureCRT or PuTTY shell client.

NxShell An easy to use new terminal for Windows/Linux/MacOS platform. It like Xshell or SecureCRT or PuTTY shell client. NxShell Video Screenshots Mor

nxshell 706 Jan 3, 2023
Frontend project with Vue.js, Sass and Vite. With Docker Package and Web Page.

Vue Frontend Rusich (Vue.js, Sass, Vite) Link: https://vue-frontend-rusich.vercel.app/ Project for AddNoise (https://addnoise.su/) Case: Develop a res

Dmitry Britov 2 Nov 2, 2022
LeafPlayer is a fast and modern personal music streaming server, easily installable by using Docker.

Unfortunately, this project is put on ice for now. LeafPlayer LeafPlayer is a simple and fast, privately hosted music streaming server. It enables you

Paul Schwörer 147 Nov 17, 2022
health-care web application with python and vue.js

Simple Health Setup for development Requirements pre-commit Docker Poetry Node.js v16.13.0 pytest We recommend installing pre-commit, Poetry using pip

null 0 Mar 31, 2022
Minimal python wrapper for Twitter's REST and Streaming APIs

TwitterAPI is a Python package for accessing Twitter's REST APIs and Streaming APIs. It supports both Version 1.1 and Version 2 endpoints. REST APIs t

null 898 Dec 29, 2022
eCommerce web app build using VueJs, TailwindCSS, Python, Django and Django Rest Framework.

eCommerce web app build using VueJs, TailwindCSS, Python, Django and Django Rest Framework.

Ajay Patel 2 Jun 14, 2022
🤖🤖🤖 Electron + Vue.js for Docker

A dockeron project, built on Electron + Vue.js for Docker. Template generator: electron-vue Docker Engine API: dockerode. UI components: iView I am on

null 787 Nov 21, 2022
Vue.js app on a docker container with hot reload

docker-vue-cli-hot-reload Project setup npm install Compiles and hot-reloads for development npm run serve Compiles and minifies for production npm

RetroCIB 1 Feb 28, 2022
A web interface for managing docker containers with an emphasis on templating to provide 1 click deployments. Think of it like a decentralized app store for servers that anyone can make packages for.

Yacht Yacht is a container management UI with a focus on templates and 1-click deployments. If the built in update button isn't working for you try th

SelfhostedPro 2.3k Jan 9, 2023