# Web Terminal
A (unsafe) technical demo to export a shell to web browser. 

This program is written in the go programming language, using the 
Gin web framework, gorilla/websocket, pty, and xterm.js!
The workflow is simple, the client will initiate a terminal 
window (xterm.js) and create a websocket with the server. On 
the server side, it serves the basic HTML/JS/CSS files and 
websockets (by shovling the data between pty and xterm).

It is amazing what you can do with 260 lines of go code. 

It is just a simple demo in case some people are interested in 
how to setup xterm.js with websocket. 

To use the program, download/clone the code, and in the web_terminal
directory, run ```go build .```, this will create the binary called
web_terminal. To run it, use ```./web_terminal cmd options_to_cmd```.
If no cmd and options are given, web_terminal will run bash by default.
You can run shells but also single programs, such as htop. The program
has been tested on Linux, WSL2, Raspberry Pi 3B (Debian), and MacOSX.

***known bug***

On MacOS X, running zsh with web_terminal will produce an extra % 
each time. Consider it a ___feautre___, will not fix unless there is a 
pull request. 


**NOTE**

___Do NOT run this in an untrusted network. You will expose your 
shell to anyone that can access your network and Do NOT leave
the server running.___

Here is a screenshot:

<img src="https://github.com/syssecfsu/web_terminal/blob/master/extra/screenshot.png?raw=true" width="800px">
Description
Web-based interactive terminal emulator that allows users to easily record, share, and replay console sessions.
Readme LGPL-2.1 20 MiB
Languages
Go 54.9%
HTML 31.1%
JavaScript 11.3%
CSS 2.3%
Shell 0.4%