Commit Graph

101 Commits

Author SHA1 Message Date
Samuel Mannehed 7d73fdf9a4 Replace TigerVNC with MobileVNC
TigerVNC doesn't have a built in websocket proxy
2017-01-19 13:45:06 +01:00
Samuel Mannehed 1ec1c512af Fix screenshot URL's 2017-01-14 11:45:28 +01:00
Samuel Mannehed adc19ca16e Change server example
Replaced PocketVNC with TigerVNC since the PocketVNC url was broken and the project isn't active anymore.
2017-01-14 11:42:03 +01:00
Samuel Mannehed 5911cfd582 Update to new organization urls 2017-01-14 11:33:36 +01:00
Samuel Mannehed 41f476a863 Add Pierre Ossman to core team 2017-01-12 09:38:23 +01:00
Samuel Mannehed 7629b03ee9 Added more useful links to README 2016-11-22 00:59:11 +01:00
Samuel Mannehed b55bfcf04b Formatting cleanup of README 2016-11-22 00:37:52 +01:00
Samuel Mannehed 4cb91c4269 Update browser requirements in README 2016-11-22 00:29:21 +01:00
Samuel Mannehed 0f725a3061 Update description in README 2016-11-22 00:03:28 +01:00
Samuel Mannehed 32ec8f32f4 Add Pierre Ossman as contributor for UI and Icons 2016-11-18 11:15:02 +01:00
Solly Ross 38781d931e Use Typed Arrays for the Websock receive queue
**This commit removes Base64 (and Flash) support**

This commit converts websock.js to used Typed Arrays for the
receive queue (and tweaks rfb.js to ensure that it continues
to function, since only Firefox implements
`%TypedArray%.prototype.slice`).  Base64 support was removed
to simplify code paths, and pave the way for using Typed Arrays
for the send queue as well.

This provides two advantages: first, we allocate a buffer ahead
of time, meaning the browser doesn't have to do any work dynamically
increasing the receive queue size.  Secondly, we are now able to pass
around Typed Array Views (e.g. `Uint8Array`), which are lightweight, and
don't involve copying.

The downside is that we initially allocate more memory -- we currently
start out with 4 MiB, and then automatically double when it looks like
the amount unused is getting to small.

The commit also explicitly adds a check to the compacting logic that
avoids calling the copy functions if `_rQlen === _rQi`.
2015-08-06 14:47:03 -04:00
Solly Ross 6940936ffc WIP: Switch to Pako for zlib
This commit introduces an alternate implementation of the zlib
decompressor based on Pako (https://github.com/nodeca/pako).
2015-08-06 14:47:03 -04:00
Solly Ross 58529d347b Correct Travis CI Badge URL
The readme was using the URL for the 'refactor/cleanup'
branch, which doesn't exist anymore.  It now uses
the badge for the master branch as it should.
2014-09-22 21:49:17 -04:00
Solly Ross e6af0f60b0 Add support for Travis CI and SauceLabs Testing
This adds support for Travis CI and SauceLabs
testing.  Testing on SauceLabs in done via
the Karma test runner.  Note that encrypted
Sauce username and access key values need
to be inserted into .travis.yml as global
environment variables.  Additionally, the
local test runner (which is still useful
for debugging tests and code) was updated
to reflect that the 'node_modules' folder
now gets placed in the root directory.
2014-09-15 16:46:02 -04:00
samhed 2db62a9528 Fixed typo in README. 2014-03-17 14:24:42 +01:00
Joel Martin f901d9c9b8 README: add core team and other cleanup.
- Make the ProjectsCompanies-using-noVNC the canonical source for
  companies/project using noVNC and only give a brief summary here.

- Drop the personal Amazon donate/thanks link. Keep the charities and
  ask for a tweet if so.
2013-10-28 16:01:40 -05:00
Joel Martin 1d728ace69 Change noVNC license to from LGPLv3 to MPL 2.0
The MPL 2.0 license is a "file-level" copyleft license vs the
"project-level" nature of the L/GPL. The intention of noVNC has
always been that it should be easy to incorporate into existing
projects and sites whether free/open or proprietary/commercial. The MPL
2.0 is designed for this sort of combination project but still
requires that any distributed modifications to noVNC source files must
also be published under the same license.

In addition, the MPL 2.0 allows the code to be used in L/GPL projects
(the secondary license clause). This means that any projects that are
already incorporating noVNC should not be impacted by this change and
in fact it should clarify the licensing situation (the exact
application of the L/GPL to web applications and interpreted code is
somewhat ambiguous).

The HTML, CSS, image and font files continue to be under more
permissive licenses (see LICENSE.txt). The included websockify python
code remains under a LGPLv3 license although the include/websock.js
file from the websockify component is now under MPL 2.0 as well.

Permission was received from other noVNC authors to make this change to their
code license on the following dates:

    - Chris Gordon (UI): Jun 24, 2012
    - Antoine Mercadal (DOM,*util.js): Oct 10, 2012
    - William Lightning (UltraVNC repeater): Oct 10, 2012
    - Mike Tinglof (tight encoding): Oct 15, 2012
2012-10-15 13:35:00 -05:00
Joel Martin cbb55df039 README: simplify projects/companies. News/help/contact section.
Instead of continuing to maintain the full list of project/companies
that use noVNC in multiple places (README, wiki, web page) just link
to the wiki page.

Link to noVNC discussion group page. Link to issues page. Link to
Amazon wishlist and non-profits for appreciation.
2012-08-28 17:45:48 -05:00
Joel Martin ab44059b8b README: Add PocketVNC. 2012-05-24 07:09:47 -05:00
Joel Martin 57044a3c0a README: Link to websockify encryption page. 2012-05-16 18:31:04 -05:00
Ohad Levy cbd3435a07 Update README.md 2012-04-10 16:58:27 +03:00
Joel Martin f2a495c944 Use standard citing format for contributors. 2012-03-12 00:34:53 -05:00
Joel Martin b8dd87c757 Flesh out authors/contributors and licenses. 2012-03-11 14:39:23 -05:00
Mike Tinglof d38db74abd add some documentation; default to existing websocket transport 2012-03-09 11:02:18 -05:00
Joel Martin 91b0dc3915 LibVNCServer capitalization. 2011-11-17 10:53:31 -06:00
Joel Martin 4f545a5ba6 Add libvncserver as project including noVNC.
libvncserver now includes noVNC as an alternative to the Java web
client.
2011-11-17 10:49:34 -06:00
Joel Martin 83ed7b8c25 Add Brightbox to user list. 2011-11-07 14:26:44 -06:00
Joel Martin bc71506553 README: feature section and minor rearranging. 2011-10-29 16:11:37 -05:00
Joel Martin 2e7d81ce24 Add Intel MeshCentral. 2011-10-28 10:00:03 -05:00
Joel Martin fa4607dbf5 Add Amahi as a project using noVNC. 2011-10-28 09:49:59 -05:00
Joel Martin a538be4350 Update description. Remove Sentry reference. 2011-10-08 13:00:42 -05:00
Joel Martin a367e84a92 Update requirements. Note WS added to libvncserver. 2011-10-08 12:57:57 -05:00
Joel Martin 65db2d8243 Fix README screenshot src. 2011-09-29 14:33:25 -05:00
Joel Martin b29e06f36e Update README screenshots. 2011-09-29 14:32:54 -05:00
Joel Martin 676fbbb662 README: Zentyal (Ebox) and SlapOS to projects list. 2011-08-04 10:50:16 -05:00
Joel Martin 29c3cbee8b README: Fix CloudSigma link. 2011-07-13 15:19:09 -05:00
Joel Martin 241a6caea6 README: link to CloudSigma as product using noVNC. 2011-07-13 15:17:22 -05:00
Joel Martin 8a7ce3da6a Clarify companies/projects link description. 2011-06-26 16:02:42 -05:00
Joel Martin 68edd7f4f8 Move project/companies info to wiki.
Just have a list here without all the links.
2011-06-26 15:55:44 -05:00
Joel Martin 939cc6d563 Broadway link cleanup. 2011-06-13 14:29:51 -05:00
Joel Martin a6f3281283 Broadway HTML5 GDK backend link.
Broadway uses noVNC keyboard/input handling. Link to it.
2011-06-13 14:27:47 -05:00
Joel Martin 1ac21e2941 README.md: adjust links to clarify.
Separate the links from each other so it's obvious where the links
are.
2011-04-24 12:52:19 -05:00
Joel Martin 4529ec0176 README.md: Add OpenStack doc and video link. 2011-04-24 12:45:58 -05:00
Joel Martin 667ef9bae8 README.md: fix wiki links.
github changed something about relative links.
2011-04-24 12:34:09 -05:00
Joel Martin 9b8f457b6b Add OpenNode to README. Update TODOs. 2011-02-05 13:03:12 -06:00
Joel Martin 40f281ebbd Add DOCTYPE. Misc cleanup. 2011-01-30 23:42:28 -06:00
Joel Martin 9df83a3953 Move advanced, integration, troubleshoot to wiki.
Move the Advanced Usage, Integration and Troubleshooting sections to
their own pages in the wiki.

Also, update wsproxy.py referneces to be websockify.
2011-01-18 14:19:55 -06:00
Joel Martin 0a9f04241e Move browsers.md to Wiki.
It is now here: https://github.com/kanaka/noVNC/wiki/Browser-support
2011-01-18 11:58:24 -06:00
Joel Martin f2538f337d wsproxy, wstelnet: wrap command, WS telnet client.
wswrapper:

    Getting the wswrapper.c LD_PRELOAD model working has turned out to
    involve too many dark corners of the glibc/POSIX file descriptor
    space. I realized that 95% of what I want can be accomplished by
    adding a "wrap command" mode to wsproxy.

    The code is still there for now, but consider it experimental at
    best. Minor fix to dup2 and add dup and dup3 logging.

wsproxy Wrap Command:

    In wsproxy wrap command mode, a command line is specified instead
    of a target address and port. wsproxy then uses a much simpler
    LD_PRELOAD library, rebind.so, to move intercept any bind() system
    calls made by the program. If the bind() call is for the wsproxy
    listen port number then the real bind() system call is issued for
    an alternate (free high) port on loopback/localhost.  wsproxy then
    forwards from the listen address/port to the moved port.

    The --wrap-mode argument takes three options that determine the
    behavior of wsproxy when the wrapped command returns an exit code
    (exit or daemonizing): ignore, exit, respawn.

    For example, this runs vncserver on turns port 5901 into
    a WebSockets port (rebind.so must be built first):

        ./utils/wsproxy.py --wrap-mode=ignore 5901 -- vncserver :1

    The vncserver command backgrounds itself so the wrap mode is set
    to "ignore" so that wsproxy keeps running even after it receives
    an exit code from vncserver.

wstelnet:

    To demonstrate the wrap command mode, I added WebSockets telnet
    client.

    For example, this runs telnetd (krb5-telnetd) on turns port 2023
    into a WebSockets port (using "respawn" mode since telnetd exits
    after each connection closes):

        sudo ./utils/wsproxy.py --wrap-mode=respawn 2023 -- telnetd -debug 2023

    Then the utils/wstelnet.html page can be used to connect to the
    telnetd server on port 2023. The telnet client includes VT100.js
    (from http://code.google.com/p/sshconsole) which handles the
    terminal emulation and rendering.

rebind:

    The rebind LD_PRELOAD library is used by wsproxy in wrap command
    mode to intercept bind() system calls and move the port to
    a different port on loopback/localhost. The rebind.so library can
    be built by running make in the utils directory.

    The rebind library can be used separately from wsproxy by setting
    the REBIND_OLD_PORT and REBIND_NEW_PORT environment variables
    prior to executing a command. For example:

        export export REBIND_PORT_OLD="23"
        export export REBIND_PORT_NEW="65023"
        LD_PRELOAD=./rebind.so telnetd -debug 23

    Alternately, the rebind script does the same thing:

        rebind 23 65023 telnetd -debug 23

Other changes/notes:

- wsproxy no longer daemonizes by default. Remove -f/--foreground
  option and add -D/--deamon option.

- When wsproxy is used to wrap a command in "respawn" mode, the
  command will not be respawn more often than 3 times within 10
  seconds.

- Move getKeysym routine out of Canvas object so that it can be called
  directly.
2011-01-12 13:15:11 -06:00
Joel Martin 96bc3d3088 wsproxy.py: add web serving capability.
- Added ability to respond to normal web requests. This is basically
  integrating web.py functionality into wsproxy. This is only in the
  python version and it is off by default when calling wsproxy. Turn
  it on with --web DIR where DIR is the web root directory.

Next task is to clean up wsproxy.py. It's gotten unwieldy and it
really no longer needs to be parallel to the C version.
2011-01-06 18:26:54 -06:00