Total Pageviews

Tuesday, 21 April 2020

一个基于python的web terminal程序:butterfly

A web terminal based on websocket and tornado. 

Description

Butterfly is a xterm compatible terminal that runs in your browser.

Features

  • xterm compatible (support a lot of unused features!)
  • Native browser scroll and search
  • Theming in css / sass (20 preset themes) endless possibilities!
  • HTML in your terminal! cat images and use
  • Multiple sessions support (à la screen -x) to simultaneously access a terminal from several places on the planet!
  • Secure authentication with X509 certificates!
  • 16,777,216 colors support!
  • Keyboard text selection!
  • Desktop notifications on terminal output!
  • Geolocation from browser!
  • May work on firefox too!

Try it

$ pip install butterfly
$ pip install butterfly[themes]  # If you want to use themes
$ pip install butterfly[systemd]  # If you want to use systemd
$ butterfly
A new tab should appear in your browser. Then type
$ butterfly help
To get an overview of butterfly features.

Run it as a server

$ butterfly.server.py --host=myhost --port=57575
Or with login prompt
$ butterfly.server.py --host=myhost --port=57575 --login
Or with PAM authentication (ROOT required)
# butterfly.server.py --host=myhost --port=57575 --login --pam_profile=sshd
You can change sshd to your preferred PAM profile.
The first time it will ask you to generate the certificates (see: here)

Run it with systemd (linux)

Systemd provides a way to automatically activate daemons when needed (socket activation):
$ cd /etc/systemd/system
$ curl -O https://raw.githubusercontent.com/paradoxxxzero/butterfly/master/butterfly.service
$ curl -O https://raw.githubusercontent.com/paradoxxxzero/butterfly/master/butterfly.socket
$ systemctl enable butterfly.socket
$ systemctl start butterfly.socket
Don't forget to update the /etc/butterfly/butterfly.conf file with your server options (host, port, shell, ...) and to install butterfly with the [systemd] flag.

Contribute

and make the world better (or just butterfly).
Don't hesitate to fork the repository and start hacking on it, I am very open to pull requests.
If you don't know what to do go to the github issues and pick one you like.
If you want to motivate me to continue working on this project you can tip me, see: http://paradoxxxzero.github.io/about/
Client side development use grunt and bower.

Credits

The js part is based on term.js which is based on jslinux.