Merge branch 'master' of git@github.com:kanaka/noVNC
This commit is contained in:
+40
-12
@@ -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
|
||||
|
||||
@@ -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
@@ -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__); \
|
||||
|
||||
Reference in New Issue
Block a user