Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Gate One is an HTML5-powered terminal emulator and SSH client
JavaScript Python HTML CSS Other
branch: master

termio.py: Added a new callback type to `BaseMultiplex`: CALLBACK_LOG…

…_FINALIZED. It can be used to attach a function that will be called *after* the log has completed the finalization process (so you can, say, copy the log data into another system).

termio.py:  `MultiplexPOSIXIOLoop.terminate()` now calls `get_or_update_metadata()` using `concurrent.futures.ProcessPoolExecutor` instead of `multiprocessing.Process` in order to support callbacks that can be called when a given log has completed finalization.
termio.py:  Added some information about callbacks to the `BaseMultiplex` docstring.
latest commit d113da2c59
@liftoff authored
Failed to load latest commit information.
docker core/server.py: Added a helpful log message to the `check_origin()` f…
gateone termio.py: Added a new callback type to `BaseMultiplex`: CALLBACK_LOG…
onoff core/configuration.py: Added a new 'multiprocessing_workers' setting/…
scripts core/utils.py: Added a helpful message to `killall()` to indicate tha…
terminal terminal.js: Added `GateOne.Terminal._trimmedScreen(screen)` which re…
termio termio.py: Added a new callback type to `BaseMultiplex`: CALLBACK_LOG…
.gitignore Removed an accidental .directory file that wound up in the repo and a…
AGPLv3.txt Commit #1: The Gate One beta is about to go public.
INSTALL.txt terminal.js: Fixed the syntax error in `GateOne.Terminal.sharedTermin…
LICENSE.txt Updated copyright date.
MANIFEST.in NOTE: Lots of tidying-up in this commit. Functions were moved around …
README.rst Suggest link to latest pexpect, outdated details
babel_gateone.cfg GATE ONE HAS NOW BEEN TRANSLATED (probably badly) into: German, Portu…
babel_gateone_js.cfg gateone.js: Added a (small) new module: GateOne.i18n. It provides fun…
install-rpm.sh call install-rpm.sh when building RPMs to wrap lines in INSTALLED_FIL…
run_gateone.py run_gateone.py: It works again: It now automatically creates the 'gat…
setup.cfg changed path to gateone/docs/html. Without this bdist fails to build
setup.py example_package/setup.py: Made it so that it will automatically insta…
stdeb.cfg Everywhere: Renamed ApplicationWebSocket.policies (the RUDict) to App…

README.rst

About Gate One

Gate One is an HTML5 web-based terminal emulator and SSH client. Top features:

  • No browser plugins required! Say goodbye to the security problems of Java, Flash, and ActiveX.

  • Multi-user and multi-terminal: Hundreds of simultaneous users and terminals can be served from ho-hum hardware.

  • Advanced terminal emulation including support for 256 colors, fancy text styles, and more.

  • Supports capturing and displaying images and PDFs inline within terminals (see screenshots).

  • Type in your native language! Gate One supports Unicode, international keyboard layouts, and localized strings (internationalization or i18n).

  • Natural copy & paste: Highlight text and use your browser's native context menu. On Macs you can use ⌘-c and ⌘-v and on Linux desktops you can middle-click-to-paste. Shift-Insert works too!

  • Terminal sessions can be resumed even if the browser is closed or disconnected. They can also be resumed from a completely different computer. You'll never have to worry about the office VPN disconnecting again!

  • Supports server-side logging of user sessions via any combination of syslog, remote syslog, or directly to disk.

  • Gate One can be embedded into any web application. A few lines of JavaScript is all it takes! There's an interactive tutorial covering how to embed available in the tests directory (hello_embedded).

  • Many authentication mechanisms are supported: Anonymous, Kerberos (Single Sign-On with Active Directory!), PAM, Google Auth, and there's an OpenID-like WebSocket API for applications embedding Gate One (see the chat app in the tests directory for an example of how it works).

  • Gate One is easy to customize: Themes and plugins can add features or override just about anything. In fact, Gate One's SSH functionality is implemented entirely via a plugin.

  • Plugins can be written in any combination of Python, JavaScript, and CSS.

  • The Gate One server can be stopped & started without users losing their running terminal applications (even SSH sessions stay connected!).

  • The SSH plugin allows users to duplicate sessions without having to re-enter their username and password (it re-uses the existing SSH tunnel). It also supports key-based authentication and includes an SSH identity manager that supports RSA, DSA, ECDSA, and even X.509 certificates.

  • The SSH plugin also provides a library of functions that other plugins can use to seamlessly execute background operations on the currently-connected terminal. You can capture this output from JavaScript and do whatever you want with it.

  • The Bookmarks plugin lets you keep track of all of your hosts with support for tagging, sorting, and includes a super fast search. It was built to handle thousands of bookmarks and can be used with whatever URLs you want--it isn't limited to SSH!

  • The Logging plugin includes a Log Viewer that allows users to sort, view, and even export recordings of their terminal sessions to self-contained HTML files that can be shared. Demonstrating anything on the command line can be as simple as performing the task and clicking a button!

  • The Playback plugin allows users to rewind and play back their connected terminal sessions in real-time, just like a video! This can be done via the playback controls or by holding the shift key while scrolling.

  • The Convenience plugin adds many convenient capabilities:
    • IPv4 and IPv6 addresses become clickable elements that can perform a reverse DNS lookup.
    • The output of 'ls -l' is transformed into clickable elements that can perform user and group lookups, convert bytes into human-readable strings, and even tell you what the 'chmod equivalent' is of the permissions field (e.g. clicking on 'crw-rw-rw-' would tell you, "(Character Device) with permissions equivalent to 'chmod 0666'").
    • Automatic syntax highlighting of syslog messages.
  • The Example plugin demonstrates how to write your own plugins and shows off the SSH plugin's exec_remote_command() functionality.

  • Gate One works with Python 2.6+, Python 3, and even pypy!

  • The daemon that acts as the web server for Gate One is small and light enough to be included in embedded devices.

License

Gate One is dual licensed: AGPLv3 or Commercial Licensing. More information can be found at http://liftoffsoftware.com/

Screenshots

http://i.imgur.com/fb32a.png

The Grid View showing multiple terminals

http://i.imgur.com/5P6wy.png

Displaying images inline in a terminal

http://i.imgur.com/zRLn3.png

A demonstration of some of the Convenience plugin's capabilities

http://i.imgur.com/97CYx.png

The Example plugin showing off the real-time load graph and the 'top' widget

Documentation

The documentation for Gate One can be found here: http://liftoff.github.com/GateOne/

Also, all (this) documentation is in the "gateone/docs" directory. The HTML form is pre-built and ready-to-read.

Demo

Just press the ESC key on any page at http://liftoffsoftware.com/ to have Gate One drop down into view, Quake-style!

Other Notable Bits

Gate One's termio and terminal Python modules can be used together to automate, screen-scrape, and completely control terminal applications. The expect() function can be used as a replacement for pexpect that has some additional features and benefits:

  • It can be used asynchronously: It won't block which means it is perfect for executing commands from a web application.
  • It supports sophisticated decision trees and callbacks: You can completely re-define all patterns and callbacks on-the-fly based on whatever conditions you want.
Something went wrong with that request. Please try again.