Butterfly: Your everyday terminal in your web browser
paradoxxxzero.github.io
paradoxxxzero.github.io
There are reasons dynamic codes like those don't exist. Good reasons. (In my own naivete, I once thought an OSC code to access scrollback would be a good idea. You can imagine how insecure that was). It's not a good idea to run any programs in this terminal until that OSC code is either removed or the HTML is somehow sanitized.
https://en.wikipedia.org/wiki/ANSI_escape_code#Non-CSI_codes
https://github.com/paradoxxxzero/butterfly/blob/4dc55630a3ab...
Is the problem that there's a potential for a terminal app to inject non-sanitized HTML into a terminal that is using butterfly?
https://github.com/paradoxxxzero/butterfly
Maybe the author ( as I ) is not sure about this or knows how to fix it.
Cheers
ssh -Nf -L 9999:localhost:57575 remote-server
and then you can go to http://localhost:9999/ with ssh taking care the encrypted connection between you and the remote-server.Abe has shell access via 'ssh' to Server. He wishes Bob and Carol to have access to the server but for whatever reason they don't have SSH.
Abe shells in, does the trick for Bob and Carol. Bob and Carol can use the web-based ssh and are happy campers.
Or.
Abe controls the server via Puppet [Chef, Ansible]. Something you can do with Puppet is disallow SSH access - one does this to remove the temptation to 'cheat' and hand-config the system. Abe has the ability with Puppet to exec this command to let Bob or Carol (or Abe) into the system 'in case of emergency'.
They must be forks of each other if they're actually not distinct: compare the option screens.
[1] https://github.com/chjj/tty.js [2] https://github.com/chjj/term.js
MSBUILD : error MSB3428: Could not load the Visual C++ component "VCBuild.exe". To fix this, 1) install the .NET Framework 2.0 SDK, 2) install Microsoft Visua l Studio 2005 or 3) add the location of the component to the system path if it is installed elsewhere. [E:\dev\node\term.js\node_modules\socke t.io\node_modules\socket.io-client\node_modules\ws\build\binding.sln] MSBUILD : error MSB3428: Could not load the Visual C++ component "VCBuild.exe". To fix this, 1) install the .NET Framework 2.0 SDK, 2) install Microsoft Visua l Studio 2005 or 3) add the location of the component to the system path if it is installed elsewhere. [E:\dev\node\term.js\node_modules\socke t.io\node_modules\socket.io-client\node_modules\ws\build\binding.sln]
As per all HN comments, one downside is that it kind of messes up with my vim colors, but that may be that my vim colors are messed up to begin with.
Also, in terms of "why" there's all sorts of neat things you can do with a web browser that aren't so easy with regular terminals. For example, displaying inline images (if you code it right). Gate One can display images, PDFs, and play back sound files right there in your terminal if you do something as simple as 'cat somefile.png' or 'cat somefile.ogg'.
Source to Gate One (also has some screenshots of the aforementioned features): https://github.com/liftoff/GateOne
The other nice thing is that you can use it through basically any proxy server (provided it doesn't "speed bump" you--breaking WebSocket connections).
I don't get it.
When I wrote my first web-based terminal (Escape From The Web) it was based on AjaxTerm. It kinda sucked for more than one terminal at a time so I went back to the drawing board and wrote Gate One. It turned out great (if I do say so myself!) and soon it will support running X11 applications as well (see: http://youtu.be/6zJ8TNcWTyo)
Put this into /etc/init/butterfly.conf: http://pastie.org/8825201
brew intall python
/usr/local/bin/pip install --upgrade setuptools
/usr/local/bin/pip install --upgrade pip
/usr/local/bin/pip install --upgrade virtualenv
/usr/local/bin/virtualenv --python=/usr/local/bin/python py.env
And done. . ~/py.env/bin/activate
pip install butterfly pip install virtualenvwrapper
source /usr/local/bin/virtualenvwrapper.sh
mkvirtualenv -p /usr/local/bin/python venv
pip install butterflyWhy exactly? I find it convenient to have some packages installed system wide so that they can be used by quickly loading up a python shell without having to activate a virtualenv first or if they need to be used outside any specific project eg. requests, nose, jedi, pyflakes, sphinx etc.
Personally I enjoy having a few bits installed under ~/opt/py-venv and simply add ~/opt/py-ven/bin to my path. It's usually no need to activate a venv to use it -- just call that venv/bin/{python|pip|hg|ipython|<whatever>}.
In other words, whenever I "pip install something" that something is installed in my "default" virtualenv. And if/when things get out of hand/I need to upgrade to a new python -- I can just recreate the virtualenv and install whatever is needed.
(One might argue that in case of one uid per mac, doing a system wide install isn't a problem -- but I'd counter with adding a new user and testing if whatever break-age is introduced with various local package installs is easier/quicker than having to reinstall os x...).
Packages not installed with the system's package manager should be installed elsewhere, e.g., a local install in a user's home directory, or (in the worst case) /usr/local or /opt.
If you want a clear failure mode - if this installs requests globally, think about the chaos if you're on Debian stable, with 0.12.1, before the API break - after a pip install, you may end up with all the software on your system broken.
When this happens, please don't file bugs with Debian. Thanks.
We are all adults here. I believe the implications of using pip instead of apt on Debian are pretty clear for anyone using it. This is not an universal problem though.
Failure to comply with this rule bites hard when you install some other package that uses Python and pulls dependency from OS repository that you had already installed from PyPI. That obviously fails due to files being already present (and probably from another egg's version) and you're probably already using this egg somewhere so you probably can't readily replace it. Manual clean-up of such mess isn't pretty nor fun.
So, if you want a non-project-bound package (like ipython), do so with `pip install --user`. Otherwise, virtualenv is the tool.
(Obviously, there are non-trivial exceptional cases where sudo pip is fine. I believe they're quite rare.)
Or, if you intend to use that remotely - Atwood's law aside - what's the point of replacing already well-working client apps, usually, with old trusty OpenSSH client under the hood, with some browser-based kludges? (For example, you'll have to reinvent auth.)
Weekend customization times! :-)