Permalink
Switch branches/tags
Nothing to show
Commits on Feb 23, 2011
  1. Add Javascript binary byte array test.

    Compares normal Javascript arrays with Canvas ImageData arrays and
    Typed Arrays (ArrayBuffers from WebGL).
    kanaka committed Feb 23, 2011
Commits on Feb 19, 2011
  1. Some JSLint'ing

    kanaka committed Feb 19, 2011
Commits on Feb 5, 2011
Commits on Feb 3, 2011
  1. Add logo, favicon.

    Thanks to Michael Sersen for creating images/Logo.svg.
    
    - Add images directory with original SVG logo, favicon, and some
      derivative PNGs of the logo for different purpose.
    
    - Note that license on images/* is CC BY-SA.
    
    - Add utils/img2js.py to take an image and generate a base64 encoded
      data URI string.
    
    - Add base64 encoded data URI screen logo to display in canvas when
      disconnected.
    kanaka committed Feb 3, 2011
Commits on Feb 2, 2011
  1. Fix CSS sizes with HTML5 doctype.

    Using HTML5 doctype means CSS pixels sizes must have "px" suffix which
    many of them did not. Fix that.
    kanaka committed Feb 2, 2011
Commits on Feb 1, 2011
  1. Better reaper, catch occasional bad WS header line.

    Call waitpid in loop to catch SIGCHLD signals that happen while
    handling the original SIGCHLD signal.
    
    Pulled from websockify.
    kanaka committed Feb 1, 2011
Commits on Jan 31, 2011
  1. Add DOCTYPE. Misc cleanup.

    kanaka committed Jan 31, 2011
  2. IE9 fixes. Works but slow. API change.

    API change: changed include path variable from VNC_uri_prefix to
    URI_INCLUDE since websock.js uses the variable and websock.js is no
    longer just for noVNC (i.e. websockify is really the canonical
    location for websock.js).
    
    Changes to get web-socket-js to work. Right now it's a hack to get
    around: https://github.com/gimite/web-socket-js/issues#issue/41. The
    hack is to disable caching of the flash objects by appending
    "?" + Math.random() to the end of the flash object path (but only when
    using IE).
    Joel Martin committed Jan 31, 2011
Commits on Jan 24, 2011
  1. Opera 11 WebSockets and Opera '-' key mapping fix.

    Opera 11 native WebSockets (if enabled) seems to have bad behavior for
    the bufferedAmount so add change from websockify project to allow max
    bufferedAmount (before send queue is delay) to be configured.
    
    Also, Opera 11 and 10.60 behave like Mozilla regarding the '-' key so
    translate it correctly.
    kanaka committed Jan 24, 2011
  2. websock.send returns true/false.

    If all send data was flushed from the send queue then return true,
    otherwise false. This doesn't mean the data won't be sent, just that
    it wasn't sent this time and is queued.
    kanaka committed Jan 24, 2011
  3. Tolerate some bufferedAmount.

    Only delay sending data if bufferedAmount is greater than 1000.
    
    This seems to match the intention of the spec better. bufferedAmount
    does not mean that we can't send, it's just an indication that the
    network is becoming saturated. But Opera 11 native WebSockets seems to
    have a bug that bufferedAmount isn't set back to zero correctly so
    we'll be a bit more tolerant.
    kanaka committed Jan 24, 2011
Commits on Jan 19, 2011
  1. web-socket-js: Add function invocation fix.

    Related to this issue:
    https://github.com/gimite/web-socket-js/issues/#issue/50
    
    This prevents the "Uncaught exception: TypeError:
    'this.__handleEvents' is not a function" everytime the timer fires.
    
    Yay, one of Javascript's worst behaviors; the way it sets "this".
    kanaka committed Jan 19, 2011
  2. include/canvas.js: fix changeCursor data format.

    Issues #27 (safari cursor rendering messed up) and #29 (firefox 3.6.10
    segault).
    
    Finally found some better reference on the icon/cursor format which is
    added to the docs/links file.
    
    It seems like I was missing the XOR section. So setting the cursor
    would cause corruptin in Safari rendering or the segfault for firefox.
    kanaka committed Jan 19, 2011
Commits on Jan 18, 2011
  1. 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.
    kanaka committed Jan 18, 2011
  2. include/canvas.js: add numpad support to getKeysym.

    Check keyLocation and translate numpad keys into numbers. keyLocation
    is not widely supported yet, but it should start percolating into
    browsers eventually:
    http://www.w3.org/TR/DOM-Level-3-Events/#events-KeyboardEvent
    
    This change is based on:
    leeor/noVNC@8e59e37
    kanaka committed Jan 18, 2011
Commits on Jan 17, 2011
  1. tests/vnc_perf.html: load from data/multi.js

    To go along with addition of performance notes to the website.
    kanaka committed Jan 17, 2011
  2. Misc docs/{TODO,links} updates.

    kanaka committed Jan 17, 2011
  3. Update gimite/web-socket-js build.

    Update to a build based on 20f837425d4 from gimite/web-socket-js.
    
    This changes the event handling code and fixes the frequent recursive
    call into Flash errors.
    kanaka committed Jan 17, 2011
Commits on Jan 13, 2011
  1. Convert to Websock library.

    Copy in include/websock.js from websockify and use that instead. Still
    some cleanup of network code but it's a good start.
    kanaka committed Jan 13, 2011
  2. Remove files that are now in websockify.

    https://github.com/kanaka/websockify is now the canonical location of
    websockify (formerly wsproxy). A copy of the python version is kept
    here for backwards compatibility and ease-of-use. The other versions
    and related test scripts are in websockify.
    kanaka committed Jan 13, 2011
  3. wsproxy.py: python2.4 fixes.

    kanaka committed Jan 13, 2011
Commits on Jan 12, 2011
  1. wstelnet: forgot VT100.js.

    kanaka committed Jan 12, 2011
  2. 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.
    kanaka committed Jan 12, 2011
Commits on Jan 9, 2011
  1. wswrapper: add dup2, fix select w/ NULL timeout.

    - add dup2 functionality. This requires adding a ref cnt to the
      _WS_connections structure so that we only free the structure once
      all dup'd referenced are closed. Also, refactor malloc and free of
      connection structure into _WS_alloc and _WS_free.
    - allow select to accept a NULL timeout value which means sleep
      forever instead of segfaulting.
    - fix some compile warnings related to ppoll definition.
    - move some WebSockets related html test pages into utils and symlink
      them from tests.
    kanaka committed Jan 9, 2011
Commits on Jan 8, 2011
  1. Refactor and cleanup websocket.py and deps.

    Moved websocket.py code into a class WebSocketServer. WebSockets
    server implementations will sub-class and define a handler() method
    which is passed the client socket after. Global variable settings have been
    changed to be parameters for WebSocketServer when created.
    
    Subclass implementations still have to handle queueing and sending but
    the parent class handles everything else (daemonizing, websocket
    handshake, encode/decode, etc). It would be better if the parent class
    could handle queueing and sending. This adds some buffering and
    polling complexity to the parent class but it would be better to do so
    at some point. However, the result is still much cleaner as can be
    seen in wsecho.py.
    
    Refactored wsproxy.py and wstest.py (formerly ws.py) to use the new
    class. Added wsecho.py as a simple echo server.
    
    - rename tests/ws.py to utils/wstest.py and add a symlink from
      tests/wstest.py
    
    - rename tests/ws.html to tests/wstest.html to match utils/wstest.py.
    
    - add utils/wsecho.py
    
    - add tests/wsecho.html which communicates with wsecho.py and simply
      sends periodic messages and shows what is received.
    kanaka committed Jan 8, 2011
Commits on Jan 7, 2011
  1. utils/README.md: horizontal looks better.

    Flip table back to be horizontal. More readable.
    kanaka committed Jan 7, 2011
  2. utils/README.md: flip table. Add web server info.

    Flip the feature table to be tall instead of wide.
    
    Added row about "web server" functionality in wsproxy.py.
    kanaka committed Jan 7, 2011