Gate One Brings Text-mode Surfing To the Web, Quake-Style 71
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."
Re: (Score:2)
And if yes, how long do you think would it take for black hats to adopt it to DDoS SSH servers using an army of zombie PCs?
Error msg ... (Score:2)
Am I missing something? (Score:3, Informative)
Pressing ESC does nothing in Chrome or Firefox, and produces a not supported error in IE9.
Re: (Score:3, Informative)
Re: (Score:2)
Servers ran out of memory (Score:5, 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.
Re: (Score:2)
Re:Servers ran out of memory (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.
Re: (Score:2)
Re: (Score:3)
Re: (Score:2)
My idea exactly. Are they going to open up the code for this?
But from where I'm sitting I can't see how this is different from a Terminal emulator running on you own host over https.
I had setup one of those once, there are a number of terminal emus as js standalones. You just wire it up to a script that
evals the input onto the linux https server and returns the output.
Re:Servers ran out of memory (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):
./gateone.py
1203 1165 3:51.43 36 5.3 20 0 S 980m 768m 211m 0 python
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!
Re: (Score:1)
... and this is a story related to SSH.
I just read Quake-style ...
Re:Servers ran out of memory (Score:4, 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 :)
Re: (Score:2)
Re: (Score:3)
OK, I just setup four new servers running Gate One with 4GB of RAM each. If that's not enough I'll just put up more :)
Feel free to try the demo again.
Re: (Score:2)
Well, it could be that your chrome is broken :-)
No, really I have seen many chrome implementations (especially win XP & 7) where basic stuff like the location object is badly corrupt.
It usually tracks down to malware or cracked software, but is easily fixed with a reinstall (that's remove -> install. not upgrade)
Re: Oh Timmy... (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.
Re: (Score:1)
Defending your slashvertisement submission as AC is pretty lame.
Re: (Score:3)
You'd be wrong about that.
this is the most interesting new web-related thing in a long time, previously you needed java applets to attain this as smoothly as this(it wasn't as smooth). to top that up, the author has been commenting as well as the author of a project that inspired this project. best slashdot of the year perhaps.
Re: (Score:2)
You're forgetting the most exciting part! He gets to collect everyone's usernames and passwords. How sweet!
Re: (Score:2)
In regards to your comment I'd like to make the following statements:
1) This is why I setup the demo to run lynx instead of a the regular SSH client... So usernames and passwords wouldn't be a concern (and to avoid liability). Unless you had plans to surf the web all day in text mode at liftoffsoftware.com (logging into things) I can't fathom how this could be a real issue.
2) I would never record anyone's usernames/passwords. Of course, you'd just have to trust me and I definitely understand if you don't
From the Homepage (Score:2)
Gate One is a web-based Terminal Emulator and SSH client that brings the power of the command line to the web. It requires no browser plugins and is built on top of a powerful plugin system that allows every aspect of its appearance and functionality to be customized.
So it is a SSH client embedded in the web.
But the second half seems self contradictory to me.
"It requires no browser plugins" but it is "built on top of a powerful plugin system"
So it does not require any plugins, but is a plugin?
Re: (Score:2)
So it does not require any plugins, but is a plugin?
I think they just meant to say the code is designed in a modular fashion, so you don't have to load it all at once.
Re: (Score:2)
that + since it is (or will be?) open source it will be quite easy to design and implement plugins for the js application.
Re:From the Homepage (Score:5, 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.
Re: (Score:2)
The other replies covered this already but I thought I'd provide an authoritative answer: It isn't contradictory. Gate One requires no browser plugins but is itself built on top of a plugin architecture. For example, the SSH capabilities all come from a single plugin.
Re: (Score:2)
So does that mean that to use the SSH you need to install the Gate One "SSH capabilities" plugin or not?
I still don't understand what they mean by that sentence.
Re:From the Homepage (Score:4, 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.
Re: (Score:2)
"Gate One comes with the SSH plugin pre-installed and enabled."
How do you pre-install something without access to my computer?
So you do have to install something? and that installation involves installing a browser plugin, just like they specifically said that you did not need to do?
Or are you saying that your online profile comes with an online "plugin" that is virtually "pre-installed" to your completely online account?
Lets pretend I am just a normal IE, firefox, or chrome user who has never heard of Gate
Re: (Score:2)
You're confused: Gate One runs on a server. You connect to that server with your browser.
Step 1: Install Gate One on a server somewhere. ...
Step 2: Open up your browser and connect to your Gate One server.
Step 3:
Step 4: Profit!
Note: Gate One can actually run on just about anything with Python installed. I've got it installed and running on my router at home, for example :)
Re: (Score:2)
Ah, so you are offering a software package that allows the user to turn one of his computers into a webhost that hosts a website which gives command line access to that same server?
Interesting.
So, kindof like a Linux alternative to those remote desktop through the browser deals.
Re: (Score:2)
Lets pretend I am just a normal IE, firefox, or chrome user who has never heard of Gate One before.
I do not even have an admin account and I am in a library that locks down their computers from change.
Can I use Gate One? or does something need to be installed?
Gate One is something that is installed on a server, not your computer.
Nothing needs to be installed on your computer to use it, other than a compatible, modern web browser.
The administrator of the website using Gate One can install Gate One modules (not browser plugins) on the server, and you the user will immediately have access, via your web browser, to the funcationality that those modules provide.
Slashvertishment (Score:5, Informative)
Re: (Score:1)
For non commercial use, Gate One seems to use the same licence.
Collaborative terminal. The end of cooperation. (Score:1)
But seriously, Collaborative Terminal? Sounds like a pit of snakes. I'm sure it's very lovely in person.
Re: (Score:1)
So... "collaborative terminal" [youtube.com], huh?
Re: (Score:2)
How do you deal with permissions in a collaborative terminal environment? Does everything just get the permissions of the user running the terminal?
Re: (Score:1)
The terminal gets the permissions of the user running the terminal. If ran as root it auths using PAM and if successful it does setuid().
When sharing users pass around URLS (with an UUID) for that terminal, with the permissions of the user that started it.
David.
Bravo from the ajaxterm author (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
Re:Bravo from the ajaxterm author (Score:5, Insightful)
THANK YOU SIR! It was AjaxTerm that lead me to develop Escape From The Web [launchpad.net] 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.
Re: (Score:2)
Can I just say thanks to BOTH of you guys. I used to use AjaxTerm a while back. More recently, I found a way out on port 22 so don't need anything like that right now.
Even so, I installed GateOne and really quite like it. One thing, however, is that I have not yet got WebSockets (interesting stuff) working with a reverse proxy in Apache so I will have to have a play around with that at some point. I use Apache as my main front-end for any apps to my home stuff using mod_proxy and don't fancy switching it al
Re: (Score:1)
But you should give elinks a try instead of lynx. elinks supports frames, tabs and mouse input.
One question (Score:1)
Re: (Score:3)
that the terminal drops down. that's the quake style reference, that you press esc and tada you got a terminal. of course quake didn't do it by default from esc...
Re: (Score:2)
Quake? (Score:2)
>impulse 9
>No command found
Nope, can't seem to mod slashdot with a rocket launcher.
But man, this story is giving me nostalgia flashbacks...
Doesn't work for me (Score:2)
I used Opera and Safari and neither works.
My question is... how does it work. Is it a fully JavaScript/Ajax terminal? Is it using the GateOne servers as a gateway? Is it using a script on someone else's server? What are the security implications of this? How easy would it be to implement this on a malicious page or hack someone's server and modify this to capture keystrokes or SSH keys? Does it support SSH keys?
Drag? (Score:2)
Well, I hit escape and see a message regarding proxy servers.. which is probably the cause. Does anyone have a work around for "Brucoat" handy? Product looks very interesting.. but if I can't use it.. :(
Elinks vs Lynx (Score:1)
Great package! (Score:2)
Instead of trying to mess around with trying to proxy, I downloaded and installed. There should be some note with the Tornado package that it does not create the links to the current (not hard to fix but easier if you know). Once the link was created for Tornado, Gateone was up and running within a minute.
Since I have Apache and Tomcat running on this host, I had to change the port. May be worth adding something to the initial run of Gateone to check for port 80 and 443 to be open before trying to stomp
Re: (Score:2)
IE 9 doesn't support WebSockets but IE 10 will. Having said that, I do have plans to include friendlier error messages for browsers that lack support for certain things. Under normal circumstances I would have supported IE but Flash-based WebSockets and other workarounds were just too slow or too bandwidth-heavy in my testing to be worthwhile. They might be OK for a single terminal but for multiple terminals they're terrible. Having said that I *do* re-test such things from time to time to see if things