summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'net-misc/vnc/files/vnc-4.1/vnc-via.patch')
-rw-r--r--net-misc/vnc/files/vnc-4.1/vnc-via.patch186
1 files changed, 0 insertions, 186 deletions
diff --git a/net-misc/vnc/files/vnc-4.1/vnc-via.patch b/net-misc/vnc/files/vnc-4.1/vnc-via.patch
deleted file mode 100644
index 6554427..0000000
--- a/net-misc/vnc/files/vnc-4.1/vnc-via.patch
+++ /dev/null
@@ -1,186 +0,0 @@
---- vnc-4_1-unixsrc/unix/vncviewer/vncviewer.cxx.via 2005-03-03 23:20:33.000000000 +0000
-+++ vnc-4_1-unixsrc/unix/vncviewer/vncviewer.cxx 2005-03-03 23:23:33.000000000 +0000
-@@ -41,6 +41,7 @@
-
- using namespace network;
- using namespace rfb;
-+using namespace std;
-
- IntParameter pointerEventInterval("PointerEventInterval",
- "Time in milliseconds to rate-limit"
-@@ -95,6 +96,9 @@
- StringParameter geometry("geometry", "X geometry specification", "");
- StringParameter displayname("display", "The X display", "");
-
-+/* Support for tunnelling */
-+StringParameter via("via", "Gateway to tunnel via", "");
-+
- char aboutText[256];
- char* programName;
- extern char buildtime[];
-@@ -157,6 +161,61 @@
- exit(1);
- }
-
-+/* Tunnelling support. */
-+static void
-+interpretViaParam (char **gatewayHost, char **remoteHost,
-+ int *remotePort, char **vncServerName,
-+ int localPort)
-+{
-+ const int SERVER_PORT_OFFSET = 5900;
-+ char *pos = strchr (*vncServerName, ':');
-+ if (pos == NULL)
-+ *remotePort = SERVER_PORT_OFFSET;
-+ else {
-+ int portOffset = SERVER_PORT_OFFSET;
-+ size_t len;
-+ *pos++ = '\0';
-+ len = strlen (pos);
-+ if (*pos == ':') {
-+ /* Two colons is an absolute port number, not an offset. */
-+ pos++;
-+ len--;
-+ portOffset = 0;
-+ }
-+ if (!len || strspn (pos, "-0123456789") != len )
-+ usage ();
-+ *remotePort = atoi (pos) + portOffset;
-+ }
-+
-+ if (**vncServerName != '\0')
-+ *remoteHost = *vncServerName;
-+
-+ *gatewayHost = strDup (via.getValueStr ());
-+ *vncServerName = new char[50];
-+ sprintf (*vncServerName, "localhost::%d", localPort);
-+}
-+
-+static void
-+createTunnel (const char *gatewayHost, const char *remoteHost,
-+ int remotePort, int localPort)
-+{
-+ char *cmd = getenv ("VNC_VIA_CMD");
-+ char *percent;
-+ char lport[10], rport[10];
-+ sprintf (lport, "%d", localPort);
-+ sprintf (rport, "%d", remotePort);
-+ setenv ("G", gatewayHost, 1);
-+ setenv ("H", remoteHost, 1);
-+ setenv ("R", rport, 1);
-+ setenv ("L", lport, 1);
-+ if (!cmd)
-+ cmd = "/usr/bin/ssh -f -L \"$L\":\"$H\":\"$R\" \"$G\" sleep 20";
-+ /* Compatibility with TightVNC's method. */
-+ while ((percent = strchr (cmd, '%')) != NULL)
-+ *percent = '$';
-+ system (cmd);
-+}
-+
- int main(int argc, char** argv)
- {
- sprintf(aboutText, "VNC Viewer Free Edition 4.1 for X - built %s\n"
-@@ -190,8 +249,6 @@
- usage();
- }
-
-- if (vncServerName)
-- usage();
- vncServerName = argv[i];
- }
-
-@@ -207,6 +264,19 @@
- vlog.error("Could not create .vnc directory: environment variable $HOME not set.");
-
- try {
-+ /* Tunnelling support. */
-+ if (strlen (via.getValueStr ()) > 0) {
-+ char *gatewayHost = "";
-+ char *remoteHost = "localhost";
-+ int localPort = findFreeTcpPort ();
-+ int remotePort;
-+ if (!vncServerName)
-+ usage();
-+ interpretViaParam (&gatewayHost, &remoteHost, &remotePort,
-+ &vncServerName, localPort);
-+ createTunnel (gatewayHost, remoteHost, remotePort, localPort);
-+ }
-+
- Socket* sock = 0;
-
- if (listenMode) {
---- vnc-4_1-unixsrc/unix/vncviewer/vncviewer.man.via 2005-03-03 23:23:41.000000000 +0000
-+++ vnc-4_1-unixsrc/unix/vncviewer/vncviewer.man 2005-03-03 23:24:18.000000000 +0000
-@@ -174,6 +174,23 @@
- specified as an X11 keysym name (these can be obtained by removing the XK_
- prefix from the entries in "/usr/include/X11/keysymdef.h"). Default is F8.
-
-+.TP
-+\fB\-via\fR \fIgateway\fR
-+Automatically create encrypted TCP tunnel to the \fIgateway\fR machine
-+before connection, connect to the \fIhost\fR through that tunnel
-+(TightVNC\-specific). By default, this option invokes SSH local port
-+forwarding, assuming that SSH client binary can be accessed as
-+/usr/bin/ssh. Note that when using the \fB\-via\fR option, the host
-+machine name should be specified as known to the gateway machine, e.g.
-+"localhost" denotes the \fIgateway\fR, not the machine where vncviewer
-+was launched. The environment variable \fIVNC_VIA_CMD\fR can override
-+the default tunnel command of
-+\fB/usr/bin/ssh\ -f\ -L\ "$L":"$H":"$R"\ "$G"\ sleep\ 20\fR. The tunnel
-+command is executed with the environment variables \fIL\fR, \fIH\fR,
-+\fIR\fR, and \fIG\fR taken the values of the local port number, the remote
-+host, the port number on the remote host, and the gateway machine
-+respectively.
-+
- .SH SEE ALSO
- .BR Xvnc (1),
- .BR vncpasswd (1),
---- vnc-4_1-unixsrc/common/network/TcpSocket.cxx.via 2005-03-03 23:17:55.000000000 +0000
-+++ vnc-4_1-unixsrc/common/network/TcpSocket.cxx 2005-03-03 23:19:49.000000000 +0000
-@@ -54,6 +54,29 @@
-
- static rfb::LogWriter vlog("TcpSocket");
-
-+/* Tunnelling support. */
-+int network::findFreeTcpPort (void)
-+{
-+ int sock, port;
-+ struct sockaddr_in addr;
-+ memset(&addr, 0, sizeof(addr));
-+ addr.sin_family = AF_INET;
-+ addr.sin_addr.s_addr = INADDR_ANY;
-+
-+ if ((sock = socket (AF_INET, SOCK_STREAM, 0)) < 0)
-+ throw SocketException ("unable to create socket", errorNumber);
-+
-+ for (port = TUNNEL_PORT_OFFSET + 99; port > TUNNEL_PORT_OFFSET; port--) {
-+ addr.sin_port = htons ((unsigned short) port);
-+ if (bind (sock, (struct sockaddr *)&addr, sizeof (addr)) == 0) {
-+ close (sock);
-+ return port;
-+ }
-+ }
-+ throw SocketException ("no free port in range", 0);
-+ return 0;
-+}
-+
-
- // -=- Socket initialisation
- static bool socketsInitialised = false;
---- vnc-4_1-unixsrc/common/network/TcpSocket.h.via 2005-03-03 23:19:58.000000000 +0000
-+++ vnc-4_1-unixsrc/common/network/TcpSocket.h 2005-03-03 23:20:21.000000000 +0000
-@@ -32,8 +32,14 @@
-
- #include <list>
-
-+/* Tunnelling support. */
-+#define TUNNEL_PORT_OFFSET 5500
-+
- namespace network {
-
-+ /* Tunnelling support. */
-+ int findFreeTcpPort (void);
-+
- class TcpSocket : public Socket {
- public:
- TcpSocket(int sock, bool close=true);