Project authored by Paul-Emmanuel SOTIR [email protected]
This project is under Open Source MIT License, see ./LICENSE or more details.
Merges/Gathers and manages multiple web-server UIs into a simple single electron app listening on localhost or remote server(s). The initial aim of this electron app is to simplify DataScience/MachineLearning experiments by merging and managing all your web servers into a single app (e.g. tensorboard, jupyter notebook, MLFlow UI, NNI UI, etc.). WebServer Gatherer is composed of an electron/vue web application and a Python backend REST API (Python backend will be soon deprecated and replaced by direct calls from electron application throught SSH connection).
Some features of WebServer UI Gatherer are:
- Discovers all listening webservers automatically by looking for opened TCP ports on localhost or on any configured remote host throught its SSH connection. All web-servers discovered this way, which serves a web page, will then be displayed in the same electron app, grouped by host
- Ease of use and simple configuration of SSH connection to your remote servers: [WIP] Application looks for any SSH configuration file and allow you to connect to any of your remotes easily
- For each connected remote hosts and localhost, a "web-server tiles view" (displays thumbnails of every discovered web-servers for this host) and a "console view" (CLI based on xterm) are available
- Allows Web-Servers management: Discovered webservers can be killed from UI interface. Moreover, custom commands can be configured to be able to start a webserver quickly from application UI [WIP] (may also be done manually throught console view)
In order to install this Web Application on your server, follow the following steps:
git clone https://github.com/PaulEmmanuelSotir/DashboardWebUIGatherer.git
cd ./DashboardWebUIGatherer/webserver-gatherer-front
npm install
npm run build
# Once dependencies are installed, you will be able to run electron app like so:
npm run start
...
For more detailed documentation, see ...TODO...
Feel free to open an issue in this repository if you have any feature/improvement suggestions or if you encountered a bug.
... to be defined ...
> WebServer Gatherer features and code refactoring to-do List legend: โป = WIP; ๐ค: TODO; ๐ฅ = IMPORTANT; ๐ = DONE (doesn't lists all implemented features);
- ๐ Implement webserver scanning backend API
- ๐ Implement webserver killing backend API
- ๐ Implement config (get/set) backend API
- ๐ Implement electron front app webserver views (using electron's 'WebView')
- ๐ Implement regular calls to backend API from front to update webservers with port scan (nmap)
- ๐ Implement call to backend API from front to kill webserver
- ๐ Gather/group webservers and backend settings views by remote server
- ๐ Rename all remaning occurences of "Dashboard Gatherer" into "WebServer Gatherer"
- โป Fix navigation drawer buttons
- โป Surround SSH commands to remote with a Mutex/semaphore to avoid multiple calls at once and record average response delay for webservers/scans
- โป Better URL textfield allowing to browse to any URL within webserver domain and binded to webview's current URL + retrun actual webserver loading progress in "webserverProgress" getter
- โป Allow webservers webview browsing without openning a new BrowserWindow (e.g. Jupyter notebook shouldn't open a new BrowserWindow when openning a notebook)
- โป Allow user to ignore some port(s) or webserver service name(s) from settings view or directly from a webserver view (ignore button)
- โป Implement needed checks and error handling to ensure a webserver discovered by backend API ports scanning is actually returning a valid webpage
- โป Refactor front to replace API calls to Python backend(s) with direct calls to commands throught SSH: remove all Python backend from project which is no longer needed. WebServer Gatherer is now only an electron/vue app without python deps (makes project way easier to deploy, maintain and develop)
- โป Fully implement local settings view
- โป plug SSH or localhost CLI backend to xterm console view
- โป Implement command prompt utilities to Xterm console view (+ fix xterm size to fit all available space)
- โป Implement webserver start backend API (runs pre-registered commands throught SSH and allow to run or add them from console view)
- โป Implement console view allowing to run a terminal on remote server(s) or localhost from front app (using xterm)
- ๐ค Review performance issues with lighthouse + replace md-icons font download by a static style file + allow render framerates higher than 60fps
- ๐ค Add github CI/CL hooks/actions to compile and test new releases and make it available for electron updater
- ๐ค Screen capture showcasing application usage and main features (and add it to readme.md as a GIF for better communication on application usage/goal/target)
- ๐ค Fix retry button on webview error
- ๐ค Implement webservers tile view in front app
- ๐ค Implement remote server SSH connection setup (retreive profiles from a SSH configuration)
- ๐ค secure SSH credentials storage with 2FA and/or allow to connect to an existing SSH agent
(โ๏พใฎ๏พ)โ