From c3e27a155d5d08c33e64486141c947aefceb2687 Mon Sep 17 00:00:00 2001 From: dscho Date: Thu, 22 Aug 2002 20:35:13 +0000 Subject: [PATCH] a pseudo HTTP request for tunnelling (also via strict Web Proxy) was added. --- classes/VncViewer.jar | Bin 45518 -> 35462 bytes classes/javaviewer.pseudo_proxy.patch | 141 ++++++++++++++++++++++++++ example.c | 1 + httpd.c | 39 ++++++- main.c | 1 + rfb.h | 4 +- 6 files changed, 180 insertions(+), 6 deletions(-) create mode 100644 classes/javaviewer.pseudo_proxy.patch diff --git a/classes/VncViewer.jar b/classes/VncViewer.jar index 5f3fbc6aec765235be4069f2cca8cdd59dcd50d4..602fdb9dd384b1fcc1131e9a91631b440bba2425 100644 GIT binary patch literal 35462 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 D--gW= literal 45518 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 Na*7=5J!QY&{Xgu9Okn^3 diff --git a/classes/javaviewer.pseudo_proxy.patch b/classes/javaviewer.pseudo_proxy.patch new file mode 100644 index 0000000..4d2f36e --- /dev/null +++ b/classes/javaviewer.pseudo_proxy.patch @@ -0,0 +1,141 @@ +diff -ru vnc_javasrc/OptionsFrame.java proxy_vnc_javasrc/OptionsFrame.java +--- vnc_javasrc/OptionsFrame.java Fri Jul 5 08:17:23 2002 ++++ proxy_vnc_javasrc/OptionsFrame.java Thu Aug 22 23:24:44 2002 +@@ -70,6 +70,12 @@ + + Label[] labels = new Label[names.length]; + Choice[] choices = new Choice[names.length]; ++ ++ Label proxyHostLabel; ++ TextField proxyHostEdit; ++ Label proxyPortLabel; ++ TextField proxyPortEdit; ++ + Button closeButton; + VncViewer viewer; + +@@ -93,6 +99,9 @@ + boolean shareDesktop; + boolean viewOnly; + ++ String proxyHost; ++ int proxyPort; ++ + // + // Constructor. Set up the labels and choices from the names and values + // arrays. +@@ -126,6 +135,32 @@ + } + } + ++ // TODO: find a way to set these to defaults from browser ++ proxyPort = viewer.readIntParameter("Use Proxy Port", -1); ++ if(proxyPort>-1) { ++ proxyHost = viewer.readParameter("Use Proxy Host", false); ++ if(proxyHost == null) ++ proxyHost = viewer.host; ++ ++ proxyHostLabel = new Label("Proxy Host"); ++ gbc.gridwidth = 1; ++ gridbag.setConstraints(proxyHostLabel,gbc); ++ add(proxyHostLabel); ++ proxyHostEdit = new TextField(); ++ gbc.gridwidth = GridBagConstraints.REMAINDER; ++ gridbag.setConstraints(proxyHostEdit,gbc); ++ add(proxyHostEdit); ++ ++ proxyPortLabel = new Label("Proxy Port"); ++ gbc.gridwidth = 1; ++ gridbag.setConstraints(proxyPortLabel,gbc); ++ add(proxyPortLabel); ++ proxyPortEdit = new TextField(); ++ gbc.gridwidth = GridBagConstraints.REMAINDER; ++ gridbag.setConstraints(proxyPortEdit,gbc); ++ add(proxyPortEdit); ++ } ++ + closeButton = new Button("Close"); + gbc.gridwidth = GridBagConstraints.REMAINDER; + gridbag.setConstraints(closeButton, gbc); +@@ -161,6 +196,11 @@ + } + } + ++ if(proxyPort>-1) { ++ proxyPortEdit.setText(Integer.toString(proxyPort)); ++ proxyHostEdit.setText(proxyHost); ++ } ++ + // Make the booleans and encodings array correspond to the state of the GUI + + setEncodings(); +@@ -361,8 +401,12 @@ + // + + public void actionPerformed(ActionEvent evt) { +- if (evt.getSource() == closeButton) ++ if (evt.getSource() == closeButton) { + setVisible(false); ++ proxyHost = proxyHostEdit.getText(); ++ proxyPort = Integer.parseInt(proxyPortEdit.getText()); ++ System.err.println("proxy is " + proxyHost + ":" + proxyPort); ++ } + } + + // +diff -ru vnc_javasrc/RfbProto.java proxy_vnc_javasrc/RfbProto.java +--- vnc_javasrc/RfbProto.java Sun Aug 4 18:39:35 2002 ++++ proxy_vnc_javasrc/RfbProto.java Thu Aug 22 22:53:53 2002 +@@ -119,12 +119,51 @@ + viewer = v; + host = h; + port = p; +- sock = new Socket(host, port); ++ if(viewer.options.proxyPort>-1) ++ sock = new Socket(viewer.options.proxyHost, viewer.options.proxyPort); ++ else ++ sock = new Socket(host, port); + is = new DataInputStream(new BufferedInputStream(sock.getInputStream(), + 16384)); + os = sock.getOutputStream(); ++ if(viewer.options.proxyPort>-1) ++ negotiateProxy(host,port); + } + ++ // this is inefficient as hell, but only used once per connection ++ String readLine() { ++ byte[] ba = new byte[1]; ++ String s = new String(""); ++ ++ ba[0]=0; ++ try { ++ while(ba[0] != 0xa) { ++ ba[0] = (byte)is.readUnsignedByte(); ++ s += new String(ba); ++ } ++ } catch(Exception e) { ++ e.printStackTrace(); ++ } ++ return s; ++ } ++ ++ void negotiateProxy(String realHost,int realPort) throws IOException { ++ String line; ++ ++ // this would be the correct way, but we want to trick strict proxies. ++ // line = "CONNECT " + realHost + ":" + realPort + " HTTP/1.1\r\nHost: " + realHost + ":" + realPort + "\r\n\r\n"; ++ line = "GET " + realHost + ":" + realPort + "/proxied.connection HTTP/1.0\r\nPragma: No-Cache\r\nProxy-Connection: Keep-Alive\r\n\r\n"; ++ os.write(line.getBytes()); ++ ++ line = readLine(); ++ System.err.println("Proxy said: " + line); ++ if(!(line.substring(0,7)+line.substring(8,12)).equalsIgnoreCase("HTTP/1. 200")) { ++ IOException e = new IOException(line); ++ throw e; ++ } ++ while(!line.equals("\r\n") && !line.equals("\n")) ++ line = readLine(); ++ } + + void close() { + try { diff --git a/example.c b/example.c index f55effe..62295c3 100644 --- a/example.c +++ b/example.c @@ -282,6 +282,7 @@ int main(int argc,char** argv) rfbScreen->kbdAddEvent = dokey; rfbScreen->newClientHook = newclient; rfbScreen->httpDir = "./classes"; + rfbScreen->httpEnableProxyConnect = TRUE; initBuffer((unsigned char*)rfbScreen->frameBuffer); rfbDrawString(rfbScreen,&radonFont,20,100,"Hello, World!",0xffffff); diff --git a/httpd.c b/httpd.c index 1e65658..b745df0 100644 --- a/httpd.c +++ b/httpd.c @@ -22,6 +22,7 @@ */ #include +#include #include #include #ifdef WIN32 @@ -50,6 +51,10 @@ "File Not Found\n" \ "

File Not Found

\n" +#define INVALID_REQUEST_STR "HTTP/1.0 400 Invalid Request\n\n" \ + "Invalid Request\n" \ + "

Invalid request

\n" + #define OK_STR "HTTP/1.0 200 OK\nContent-Type: text/html\n\n" static void httpProcessInput(); @@ -253,6 +258,36 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen) /* Process the request. */ + if(rfbScreen->httpEnableProxyConnect) { + const static char* PROXY_OK_STR = "HTTP/1.0 200 OK\r\nContent-Type: octet-stream\r\nPragma: no-cache\r\n\r\n"; + if(!strncmp(buf, "CONNECT ", 8)) { + if(atoi(strchr(buf, ':')+1)!=rfbScreen->rfbPort) { + rfbLog("httpd: CONNECT format invalid.\n"); + WriteExact(&cl,INVALID_REQUEST_STR, strlen(INVALID_REQUEST_STR)); + httpCloseSock(rfbScreen); + return; + } + // proxy connection + rfbLog("httpd: client asked for CONNECT\n"); + WriteExact(&cl,PROXY_OK_STR,strlen(PROXY_OK_STR)); + rfbNewClient(rfbScreen,rfbScreen->httpSock); + // don't fclose(rfbScreen->httpFP), because this would kill the connection + rfbScreen->httpFP = NULL; + rfbScreen->httpSock = -1; + return; + } + if (!strncmp(buf, "GET ",4) && !strncmp(strchr(buf,'/'),"/proxied.connection HTTP/1.", 27)) { + // proxy connection + rfbLog("httpd: client asked for /proxied.connection\n"); + WriteExact(&cl,PROXY_OK_STR,strlen(PROXY_OK_STR)); + rfbNewClient(rfbScreen,rfbScreen->httpSock); + // don't fclose(rfbScreen->httpFP), because this would kill the connection + rfbScreen->httpFP = NULL; + rfbScreen->httpSock = -1; + return; + } + } + if (strncmp(buf, "GET ", 4)) { rfbLog("httpd: no GET line\n"); httpCloseSock(rfbScreen); @@ -400,10 +435,8 @@ httpProcessInput(rfbScreenInfoPtr rfbScreen) #endif WriteExact(&cl, "?", 1); } else if (compareAndSkip(&ptr, "$PARAMS")) { - if (params[0] != '\0') - WriteExact(httpSock, params, strlen(params)); - + WriteExact(&cl, params, strlen(params)); } else { if (!compareAndSkip(&ptr, "$$")) ptr++; diff --git a/main.c b/main.c index aedf060..adc231d 100644 --- a/main.c +++ b/main.c @@ -544,6 +544,7 @@ rfbScreenInfoPtr rfbGetScreen(int* argc,char** argv, rfbScreen->rfbListenSock=-1; rfbScreen->httpInitDone=FALSE; + rfbScreen->httpEnableProxyConnect=FALSE; rfbScreen->httpPort=0; rfbScreen->httpDir=NULL; rfbScreen->httpListenSock=-1; diff --git a/rfb.h b/rfb.h index 29fe7d3..fcf7b09 100644 --- a/rfb.h +++ b/rfb.h @@ -292,6 +292,7 @@ typedef struct _rfbScreenInfo /* http stuff */ Bool httpInitDone; + Bool httpEnableProxyConnect; int httpPort; char* httpDir; SOCKET httpListenSock; @@ -634,9 +635,6 @@ extern void rfbSetClientColourMaps(rfbScreenInfoPtr rfbScreen, int firstColour, /* httpd.c */ -extern int httpPort; -extern char *httpDir; - extern void httpInitSockets(rfbScreenInfoPtr rfbScreen); extern void httpCheckFds(rfbScreenInfoPtr rfbScreen);