Merge branch 'master' of git@github.com:kanaka/noVNC

This commit is contained in:
Joel Martin
2011-01-06 19:13:39 -06:00
5 changed files with 72 additions and 61 deletions
+40 -12
View File
@@ -1,7 +1,20 @@
## wsproxy: WebSockets to TCP Proxy
## WebSockets Utilities: wswrapper and wsproxy
### How it works
### wswrapper
wswrapper is an LD_PRELOAD library that converts a TCP listen socket
of an existing program to a be a WebSockets socket. The `wswrap`
script can be used to easily launch a program using wswrapper. Here is
an example of using wswrapper with vncserver. wswrapper will convert
the socket listening on port 5901 to be a WebSockets port:
`cd noVNC/utils`
`./wswrap 5901 vncserver -geometry 640x480 :1`
### wsproxy
At the most basic level, wsproxy just translates WebSockets traffic
to normal socket traffic. wsproxy accepts the WebSockets handshake,
@@ -15,7 +28,7 @@ case the data from the client is not a full WebSockets frame (i.e.
does not end in 255).
### Additional features
#### Additional wsproxy features
These are not necessary for the basic operation.
@@ -38,34 +51,38 @@ These are not necessary for the basic operation.
option.
### Implementations
#### Implementations of wsproxy
There are three implementations of wsproxy included: python, C, and
Node (node.js).
There are three implementations of wsproxy: python, C, and Node
(node.js). wswrapper is only implemented in C.
Here is the feature support matrix for the wsproxy implementations:
Here is the feature support matrix for the the wsproxy implementations
and wswrapper:
<table>
<tr>
<th>Implementation</th>
<th>Basic Proxying</th>
<th>Application</th>
<th>Language</th>
<th>Proxy or Interposer</th>
<th>Multi-process</th>
<th>Daemonizing</th>
<th>SSL/wss</th>
<th>Flash Policy Server</th>
<th>Session Recording</th>
</tr> <tr>
<td>wsproxy</td>
<td>python</td>
<td>yes</td>
<td>proxy</td>
<td>yes</td>
<td>yes</td>
<td>yes 1</td>
<td>yes</td>
<td>yes</td>
</tr> <tr>
<td>wsproxy</td>
<td>C</td>
<td>yes</td>
<td>proxy</td>
<td>yes</td>
<td>yes</td>
<td>yes</td>
@@ -73,14 +90,25 @@ Here is the feature support matrix for the wsproxy implementations:
<td>no</td>
</tr>
</tr> <tr>
<td>wsproxy</td>
<td>Node (node.js)</td>
<td>yes</td>
<td>proxy</td>
<td>yes</td>
<td>no</td>
<td>no</td>
<td>no</td>
<td>no</td>
</tr>
</tr> <tr>
<td>wswrapper</td>
<td>C</td>
<td>interposer</td>
<td>indirectly</td>
<td>indirectly</td>
<td>no</td>
<td>no</td>
<td>no</td>
</tr>
</table>
* Note 1: to use SSL/wss with python 2.5 or older, see the following
+2
View File
@@ -13,6 +13,7 @@
* - programs using ppoll or epoll will not work correctly
*/
#define DO_MSG 1
//#define DO_DEBUG 1
//#define DO_TRACE 1
@@ -828,6 +829,7 @@ int _WS_poll(int mode, struct pollfd *fds, nfds_t nfds, int timeout,
return ret;
}
/*
* Overload (LD_PRELOAD) standard library network routines
*/
+8 -4
View File
@@ -7,6 +7,14 @@
* wswrapper.so.
*/
#ifdef DO_MSG
#define MSG(...) \
fprintf(stderr, "wswrapper: "); \
fprintf(stderr, __VA_ARGS__);
#else
#define MSG(...)
#endif
#ifdef DO_DEBUG
#define DEBUG(...) \
if (DO_DEBUG) { \
@@ -27,10 +35,6 @@
#define TRACE(...)
#endif
#define MSG(...) \
fprintf(stderr, "wswrapper: "); \
fprintf(stderr, __VA_ARGS__);
#define RET_ERROR(eno, ...) \
fprintf(stderr, "wswrapper error: "); \
fprintf(stderr, __VA_ARGS__); \