Code Monkey home page Code Monkey logo

paulemmanuelsotir / webservergatherer Goto Github PK

View Code? Open in Web Editor NEW
4.0 2.0 1.0 458 KB

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.

License: MIT License

JavaScript 33.95% HTML 1.05% Vue 48.60% Python 16.40%
dashboard dashboard-service datascience machine-learning web-ui gatherer deep-learning experiments-results experiments-analytics machine-learning-track

webservergatherer's Introduction

WebServer UI Gatherer (Work In Progress)

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)

Install instructions (WIP)

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

Configuration and usage

...

Documentation

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.

Contribution Guide

... to be defined ...

๐Ÿ“ Features and refactoring TODO List

> 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

(โ˜ž๏พŸใƒฎ๏พŸ)โ˜ž

webservergatherer's People

Contributors

paulemmanuelsotir avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.