Slashdot Mirror


Gate One Brings Text-mode Surfing To the Web, Quake-Style

Riskable writes "As a follow-up to my previous Slashdot story, Gate One is now out of beta. Packages can be downloaded here. There's also a live demo: press the ESC key on this page to have a terminal running lynx drop into view, Quake-style! I've also posted a video overview and the documentation can be found here. Some pertinent changes since the beta: Added the ability display images inline within terminals, key-based SSH authentication, a WebSockets authentication API (for secure embedding), dramatically improved terminal emulation, an overhauled bookmark manager, support for international keyboard layouts, and a web-based log viewer that lets you export logs to self-contained HTML playback files."

12 of 71 comments (clear)

  1. Am I missing something? by gid · · Score: 3, Informative

    Pressing ESC does nothing in Chrome or Firefox, and produces a not supported error in IE9.

    1. Re:Am I missing something? by olsmeister · · Score: 3, Informative

      Slashdotted already.

  2. Servers ran out of memory by Riskable · · Score: 4, Funny

    LOL, that'll teach me to use Rackspace's cheap servers. Setting up new ones now with more memory... Should start working again in a bit.

    --
    -Riskable
    "Those who choose proprietary software will pay for their decision!"
    1. Re:Servers ran out of memory by nman64 · · Score: 5, Informative

      You've obviously never pitted Slashdot against a cheap VPS. Even serving static files, the traffic of a good slashdotting will bring a lightweight server to its knees, and this is a story related to SSH.

    2. Re:Servers ran out of memory by Riskable · · Score: 3, Interesting

      Because it isn't completely client side. Every time you open a new terminal it spawns a new shell and server-side terminal emulator to run it. Gate One wasn't really made to handle a slashdotting but I believe I can make adjustments if necessary to make it work. If the load stays this steady everything should be running smoothly for the rest of the day :)

      --
      -Riskable
      "Those who choose proprietary software will pay for their decision!"
    3. Re:Servers ran out of memory by Riskable · · Score: 5, Informative

      You're right: The four webservers I setup to serve liftoffsoftware.com are barely breaking a sweat right now. Load average on all of them is about 0.02. It is low enough that I'll be taking one or two of them offline I think (why pay for what I don't need?). I also want to mention that I *did* tune them considerably and even modified the Drupal theme to serve up many of the static files via a CDN.

      It is the Gate One servers that needed the beefy resources since each open terminal needs to take up enough memory to be stored/kept track of inside of the Python interpreter. 90% of the load there (from a Slashdotting) is memory and I can't believe I didn't foresee this. Lesson learned.

      Having said all that I believe I went way overboard by setting up four 4096MB Gate One servers. Here's the line from 'top' on one of the Gate One servers right now (as I'm being slashdotted):

      1203 1165 3:51.43 36 5.3 20 0 S 980m 768m 211m 0 python ./gateone.py

      That's with Google Analytics showing ~400 users on the site right now.

      5.3% memory utilization is nothing and as long as everyone doesn't stick around surfing the web all day in text mode that number will probably never rise above 10%. I'll be watching it and likely be swapping these servers out with 1GB ones. I love on-demand cloud hosting!

      --
      -Riskable
      "Those who choose proprietary software will pay for their decision!"
  3. Slashvertishment by monjemono · · Score: 5, Informative

    As this looks like advertishment to me, I will post about my own UNIX web terminal emulator. Its C, executable only 100kb for the executable with everything contained, and many of the goodies from GateOne (multiple sessions, session attached to user, not browser window...) It also even has colaborative terminal, where two users can attach to the same terminal. All AGPLv3. https://github.com/davidmoreno/onion/tree/master/examples/oterm

  4. Bravo from the ajaxterm author by Anonymous Coward · · Score: 3, Interesting

    I'm the author of ajaxterm which was one of the first web based terminal and is still quite popular even if i dont maintain it anymore. I was not aware of this project, i find GateOne impressive maybe it's time to ditch rxvt :)

    Antony lesuisse

    1. Re:Bravo from the ajaxterm author by Riskable · · Score: 5, Insightful

      THANK YOU SIR! It was AjaxTerm that lead me to develop Escape From The Web which was an HTTP streams-based predecessor to Gate One. If it weren't for AjaxTerm's example of how to write such an application I probably would've never gotten around to making Gate One.

      So thanks again; Gate One wouldn't have been possible if you never shared your code.

      --
      -Riskable
      "Those who choose proprietary software will pay for their decision!"
  5. Re:From the Homepage by nman64 · · Score: 4, Informative

    Not at all contradictory. It does not require the use of browser plugins, but the Gate One application supports its own plugins for customization.

  6. Re: Oh Timmy... by Anonymous Coward · · Score: 5, Insightful

    If by "slashvertisement" you mean "submission by a very long term (5 digit UID) slashdot regular about an open source project he created that many slashdotters are interested in", then yes, "Timmy" is getting pretty heavy on those.

  7. Re:From the Homepage by Riskable · · Score: 3, Informative

    To answer your question: Gate One comes with the SSH plugin pre-installed and enabled. So it's ready-to-go as an SSH client "out of the box" as it were.

    As for the plugin architecture, it's not as complicated as it sounds. There's a "plugins" directory. In that directory there's individual plugins such as "ssh" (which is its own directory): /opt/gateone/plugins/ssh

    When you execute gateone.py it will scan the plugins directory for plugins and load them accordingly. Plugins can be written in any combination of Python, JavaScript, and CSS (yes, in theory you could make a CSS-only plugin). As an example, here's the layout of the SSH plugin directory:


    root@portarisk:/opt/gateone/plugins # ls -lR ssh
    ssh:
    total 48
    drwxr-xr-x 2 root root 4096 2012-02-26 12:29 scripts
    -rw-rw-r-- 1 root root 36473 2012-02-09 12:24 ssh.py
    drwxr-xr-x 2 root root 4096 2012-02-21 09:12 static
    drwxr-xr-x 2 root root 4096 2012-02-07 15:25 templates

    ssh/scripts:
    total 60
    -rw-rw-r-- 1 root root 5708 2012-02-13 10:36 logo.png
    -rwxr-xr-x 1 root root 30576 2012-02-26 12:29 ssh_connect.py

    ssh/static:
    total 56
    -rw-r--r-- 1 root root 54852 2012-02-21 09:12 ssh.js

    ssh/templates:
    total 8
    -rw-rw-r-- 1 root root 5052 2012-02-07 15:23 ssh.css

    So in this example the SSH plugin is taking advantage of all three supported plugin types simultaneously: Python, JavaScript, and CSS. Each type will be loaded appropriately... Python files will be imported and their 'hooks' will be attached accordingly, JavaScript files will be automatically added to whatever page is loading Gate One, and CSS files will be automatically added to the HEAD tag of the page. It's all seamless and happens automatically by simply placing the files in the correct locations.

    That 'scripts' directory is just somewhere to store that ssh_connect.py script which is what gets called when Gate One spawns a new terminal (by default). Just think of the 'scripts' directory as an arbitrary place to store a non-plugin file or two (I could've just placed them inside the 'ssh' directory but that wouldn't be very organized =).

    Cool fact: Gate One loads JS and CSS files over the WebSocket.

    --
    -Riskable
    "Those who choose proprietary software will pay for their decision!"