Bug 102654 - (PatchAttached) Proxy support for pserver connections
Summary: (PatchAttached) Proxy support for pserver connections
Status: RESOLVED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: CVS (show other bugs)
Version: 3.1   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 3.2 M6   Edit
Assignee: Bogdan Gheorghe CLA
QA Contact:
URL:
Whiteboard:
Keywords: helpwanted
Depends on:
Blocks:
 
Reported: 2005-07-04 10:46 EDT by Richard Birenheide CLA
Modified: 2006-04-21 11:31 EDT (History)
5 users (show)

See Also:


Attachments
PServerConnection with HTTP and SOCKS5 proxy support (9.21 KB, application/octet-stream)
2005-10-27 10:38 EDT, Eugene Kuleshov CLA
no flags Details
proxy properties UI (13.48 KB, image/gif)
2005-11-05 01:24 EST, Eugene Kuleshov CLA
no flags Details
proxy support for pserver (151.98 KB, patch)
2006-03-10 01:38 EST, Eugene Kuleshov CLA
no flags Details | Diff
proxy support for pserver (151.99 KB, patch)
2006-03-15 12:40 EST, Eugene Kuleshov CLA
no flags Details | Diff
proxy support for pserver (32.03 KB, patch)
2006-03-16 09:29 EST, Atsuhiko Yamanaka CLA
no flags Details | Diff
cvs.ssh2 plug-in refers to new proxy settings (3.61 KB, patch)
2006-03-16 09:34 EST, Atsuhiko Yamanaka CLA
no flags Details | Diff
cvs.ssh2 plug-in refers to new proxy settings (4.25 KB, patch)
2006-03-16 11:37 EST, Atsuhiko Yamanaka CLA
no flags Details | Diff
error dialog showing html text (18.29 KB, image/gif)
2006-03-29 14:11 EST, Eugene Kuleshov CLA
no flags Details

Note You need to log in before you can comment on or make changes to this bug.
Description Richard Birenheide CLA 2005-07-04 10:46:32 EDT
Sourceforge offers anonymous access through pserver. Unfortunately being behind 
a firewall with proxy I did not find a possibility how to access Sourceforge 
pserver via port 80 or 443. Only with a sourceforge user and access to CVS I 
can use extssh and proxy settings for accessing Sourceforge. Probably I am 
missing something, or there should be proxy support for pserver connections as 
well.
Comment 1 Jean-Michel Lemieux CLA 2005-07-04 11:07:15 EDT
Funny you asked... bug 87918 was fixed today.

*** This bug has been marked as a duplicate of 87918 ***
Comment 2 Chris Recoskie CLA 2005-07-04 11:14:23 EDT
This bug should not be resolved as a duplicate of 87918.  The submitter 
complains that there is no way to specify a proxy server for pserver 
connections.  The creation of a proxy port on eclipse.org is irrelevant as 
there is still no way to point the pserver access at it via HTTP proxy.
Comment 3 Michael Valenta CLA 2005-07-05 08:58:19 EDT
SourceForge should describe how to connect to their http (port 80) proxy. If 
you give me a link to the instructions that describe how to connect to 
SourceForge, I'll give it a try and let you know if I can get it to work from 
Eclipse.
Comment 4 Richard Birenheide CLA 2005-07-05 09:13:26 EDT
I am not sure whether I catch your question right. You can access the 
SourceForge repository by anonymous pserver access both on port 80 and 443. The 
problem is ones inhouse proxy which I must use to get through our firewall. 

Instructions can also be found on:
http://sourceforge.net/docman/display_doc.php?docid=14033&group_id=1#firewall

For a test please use the follwing data:
user: anonymous
password: <none>
type: pserver
host: cvs-pserver.sf.net
port: 443 OR 80 (some firewall tunnel only 443)
projectroot: /cvsroot/abbot

These data would offer you read access to the abbot project repository.
If I want to access this from behind our firewall I have get over the proxy. 
This is possible with the extssh connection which offers to maintain a proxy 
and its settings, but not for pserver access. 

I also wrote a crude plug-in for overcoming the problem but this is a bad 
workaround:
http://prdownloads.sourceforge.net/abbot/com.sap.proxy.ProxyTunnel_1.0.0.zip?
download
Comment 5 Michael Valenta CLA 2005-07-05 09:24:10 EDT
Since you've alreay written a plugin, perhaps you could create a patch to the 
CVS plugin to add the support you need? Also, have a look at bug 60552 in case 
that support can help.
Comment 6 Richard Birenheide CLA 2005-07-05 09:40:05 EDT
As I have mentioned already the plugin I have written is a crude workaround. 
One can specify a proxy server and port as well as the remote host and port and 
a local port. Then a local server is started which listens to the local port 
and establishes a connection through the proxy to the remote host. The plugin 
can handle multiple servers, but each server can handle only one connection at 
a time. This is sufficient for CVS but I think a very crude workaround. What is 
desirable, is the same functionality as for extssh but for pserver.

The plugin I've written does not hook in the CVS environment of Eclipse but 
provides a tunneling service on its own for any thinkable type of connection 
which is capable of being tunneled.
Comment 7 Vasiliy Gagin CLA 2005-09-07 11:35:37 EDT
I'm sitting behind firewall with a proxy too.
I can acces eclipse cvs repositories with standard command line cvs client using
CSROOT like this:

:pserver;proxy=<host>;proxyport=<port>;proxyuser=<user>;proxypassword=<password>:anonymous@dev.eclipse.org:/home/webtools

I would be nice if eclipse cvs client will mirror this functionality.
Comment 8 Michael Valenta CLA 2005-09-07 11:42:31 EDT
What CVS version are you using? That does not look like the standard format 
for the CVS/Root file. It looks like the augmented version usd by WinCVS. In 
any case, there is no plan to address this item but patches will be accepted.
Comment 9 Vasiliy Gagin CLA 2005-09-07 13:21:53 EDT
My client version string is "Concurrent Versions System (CVSNT) 2.0.51d
(client/server)"

Format for this CVSROOT is defined in manual "CVS--Concurrent Versions System
v1.12.12" at
http://ximbiot.com/cvs/manual/cvs-1.12.12/cvs_2.html#SEC28
Comment 10 Michael Valenta CLA 2005-09-07 13:44:58 EDT
At the current time, we only support the stable release of CVS which is 
1.11.x. We do support some of the new features in 1.12 but these were all 
provided as patches from non-committers who use 1.12.x.
Comment 11 Eugene Kuleshov CLA 2005-10-24 09:12:07 EDT
Michael, it would make sense to have generic support for SOCKS server. Given
that for users behind firewall socks server either already around or can be
created with "ssh -D..." or "ssh over http tunnel + ssh -D..." it would be very
reasonable feature to have in Eclipse.
Comment 12 Michael Valenta CLA 2005-10-24 09:19:59 EDT
I agree but, unfortunately, we do not have the manpower to address this issue 
in 3.2. We will accept patches if someone who understands this issue and is 
experiencing the problem wanted to contribute to the component;-)

P.S. Bug 60552 may be related to this as well.
Comment 13 Eugene Kuleshov CLA 2005-10-24 09:35:52 EDT
(In reply to comment #12)
> I agree but, unfortunately, we do not have the manpower to address this issue 
> in 3.2. We will accept patches if someone who understands this issue and is 
> experiencing the problem wanted to contribute to the component;-)
> 
> P.S. Bug 60552 may be related to this as well.

Another option was to globally set socks configuration for Eclipse's JVM, but
for some reason that didn't work too when I last tried it. 
See socksProxyHost and socksProxyPort system properties at
http://java.sun.com/j2se/1.4.2/docs/guide/net/properties.html
Comment 14 Eugene Kuleshov CLA 2005-10-26 14:01:00 EDT
(In reply to comment #12)
> I agree but, unfortunately, we do not have the manpower to address this issue 
> in 3.2. We will accept patches if someone who understands this issue and is 
> experiencing the problem wanted to contribute to the component;-)

I've done some research on this issue and can probably wrap up something generic
with support of both socks and http proxy. However I need some advise about the
implementation.

I guess patch should work in JRE 1.4 and it does not have constructor
Socket(Proxy) that support connection over socks and SocksSocketImpl and
SocksSocketFactory are always been package protected in JRE.

So, I guess we'll need some 3rd party socks implmentation like one included into
jsch or JHttpTunnel or others (e.g. jsocks.sh.net under LGPL license).

I also wonder if org.eclipse.team.cvs.ssh plugin is still in use?

Comment 15 Michael Valenta CLA 2005-10-26 16:07:07 EDT
Yes, we need to support 1.4. Jsch is included in the ssh2 plugin so you can 
use whatever that library provides. The ssh plugin is still used in those 
cases where the server supports SSH 1 but not SSH 2. Yes, this is probably 
rare if non-existant but it still possible so we need to support it.
Comment 16 Eugene Kuleshov CLA 2005-10-26 16:23:35 EDT
(In reply to comment #15)
> The ssh plugin is still used in those 
> cases where the server supports SSH 1 but not SSH 2. Yes, this is probably 
> rare if non-existant but it still possible so we need to support it.

  I just noticed that there is no extension points declared in itx plugin.xml
and can't find how it is being referenced.
Comment 17 Michael Valenta CLA 2005-10-26 16:41:43 EDT
It is referenced programatically by the SSH2 plugin.
Comment 18 Eugene Kuleshov CLA 2005-10-27 05:55:14 EDT
(In reply to comment #17)
> It is referenced programatically by the SSH2 plugin.

I see now...

Can you explain me what are the conditions of using jsch? It looks like Eclipse
is using version 0.1.18 and the latest is 0.1.23

The reason I'm asking is that I thought it would be possible to use some
functionality (especially http ad socks proxy implementeations) from jsch, but
it looks like it can't be done without some refactoring. For instance both
ProxyHTTP and ProxySOCKS5 require Session parameter in their connect method and
the only thing they need from that session is SocketFactory. It also seems that
Proxy in jsch is quite aside object comparing to the way how it is done in JRE
1.5 and it would be quite nice to make it more transtarent for the socket or
socket factory (e.g. borrow design used in JRE 1.5). 

So, I wonder if these refactorings could be done on jsch code?
Comment 19 Eugene Kuleshov CLA 2005-10-27 07:42:56 EDT
Ok. I've added jsch sources from version 0.1.23 into cvs.ssh2 plugin and
refactored jsch's Proxy class to accept the socket factory in connect method. It
turns out that CONNECT feature is disabled on my http proxy, so I can't test it
at the moment. However the good news that SOCKS5 is working for pserver connection!

I used settings from Proxy tab on SSH2 connection method, but it would make
sense to pull it up as a separate page. Though these settings actually belong to
the platform, but it is a separate story...

Anyway, with above refactoring, Eclipse plugin changes are quite small. I just
had to move PServerConnection and PServerConnectionMethod classes into ssh2
plugin and update plugin.xml's accordingly. Other option would be to put jsch
code into cvs.core plugin.

Now I wonder if my changes can be integrated into the Eclipse code?
Comment 20 Michael Valenta CLA 2005-10-27 08:53:28 EDT
Ymnk is in charge of the Jsch contribution so any changes in the department 
need to be approved and done by him. I would prefer not to move the basic 
pserver support into the ssh2 plugin. Would it be possible to have an 
additional connection method like pserverproxy or something like that? As for 
contributing the fix to Eclipse, If Ymnk is willing to make the required 
changes to Jsch and you refactor what you have so the basic pserver support is 
unchanged (i.e. you add another connection method), then I would be willing to 
release it. I would ask that you also provide a description of how and when to 
use it so we can at least have something in our doc that explains what the new 
connection method is. Without this, it may be the case that, at polish time, 
the fix would get pulled because there was no doc for it.
Comment 21 Eugene Kuleshov CLA 2005-10-27 10:38:01 EDT
Created attachment 28843 [details]
PServerConnection with HTTP and SOCKS5 proxy support

Here is version of the PServerConnection with HTTP and SOCKS5 proxy support. It
is using slightly refactored classes ProxyHTTP and ProxySOCKS5 from jsch
library.

JSchSession.getProxy() method had been extracted from 
JSchSession.getSession(ICVSRepositoryLocation location, String username, String
password, String hostname, int port, IProgressMonitor monitor) method in order
to use the same preferences.
Comment 22 Eugene Kuleshov CLA 2005-10-27 10:46:34 EDT
(In reply to comment #20)
> Ymnk is in charge of the Jsch contribution so any changes in the department 
> need to be approved and done by him. 

It would be a good idea to have jsch sources in Eclipse cvs, so one can
contribute some patches.

> I would prefer not to move the basic 
> pserver support into the ssh2 plugin. 

  Would it be ok to have jsch jar or the source code in cvs.core plugin and also
promote proxy configuration and UI to the cvs.core plugin? Actually we only need
Proxy interface and two implementation classes from Jsch for this purpose.

> Would it be possible to have an 
> additional connection method like pserverproxy or something like that? 

It would be really much more preferrable to have regular support for proxy then
introducing special connection method. The main reason is that it is quite
possible that one would need to use proxy temporarily (e.g. from work or during
a trip) and be able to turn it off when not needed. With special connection
method you'll have to disconnect the project and then checkout and synchronize
it again which would be much more painful and pointless.

> As for contributing the fix to Eclipse, If Ymnk is willing to make the required 
> changes to Jsch and you refactor what you have so the basic pserver support is 
> unchanged (i.e. you add another connection method), then I would be willing to 
> release it. I would ask that you also provide a description of how and when to 
> use it so we can at least have something in our doc that explains what the new 
> connection method is. Without this, it may be the case that, at polish time, 
> the fix would get pulled because there was no doc for it.

Sure, I can write some doco once we find a way to put the code together.
Comment 23 Michael Valenta CLA 2005-10-27 11:01:30 EDT
I think I am missing something. I could have some pserver projects in my 
workspace that need to use a proxy and others that don't. How can we 
differentiate the two. Also, it is not difficult to switch the connection 
method for a repository location so the problem you suggested with a separate 
connection method is not really a problem.

As for where the Jsch plugin lives, I do not want to put it into the CVS core 
plugin. Either it needs to stay where it is or it could be in its own plugin. 
I am fine with the later but it is Ymnk that would need to make that decision 
since he is the maintainer of the code.
Comment 24 Eugene Kuleshov CLA 2005-10-27 11:17:18 EDT
(In reply to comment #23)
> I think I am missing something. I could have some pserver projects in my 
> workspace that need to use a proxy and others that don't. How can we 
> differentiate the two. 

The only case I can think of when you'd need to have proxy for one project and
don't have for another one is when second project is in the intranet. That
usually resolved using "no proxy for hots" setting (which we don't have at the
moment).

> Also, it is not difficult to switch the connection 
> method for a repository location so the problem you suggested with a separate 
> connection method is not really a problem.

Maybe you right, but I still feel uncomfortable with doing that because it would
have to change all the **\CVS\Root entries and for a large projects it could be
really a lot.

I guess you suggesting this because of similarity to pserverssh2 you've just
enabled. However I believe pserverssh2 is quite different and support more
complicated case: no connect on HTTP proxy, no socks proxy, but cvs server has
port redirector/tunnel account on sshd. 

Also note that pserverssh2 itself may have to use HTTP/HTTPS proxy to get the
connection (double proxy), which would be redundant in case if you already have
socks around.

> As for where the Jsch plugin lives, I do not want to put it into the CVS core 
> plugin. Either it needs to stay where it is or it could be in its own plugin. 
> I am fine with the later but it is Ymnk that would need to make that decision 
> since he is the maintainer of the code.

I think it is a good idea to put jsch.jar into a separate plugin. Even without
sources it would enable easier reuse for other plugins (e.g. ssh terminals, etc).
Comment 25 Atsuhiko Yamanaka CLA 2005-11-03 23:26:24 EST
Hi,

(In reply to comment #18)
> it looks like it can't be done without some refactoring. For instance both
> ProxyHTTP and ProxySOCKS5 require Session parameter in their connect method 
and
> the only thing they need from that session is SocketFactory.

Should Session parameter for connect methods be removed or is it enought to
replace it with java.net.SocketFactory?

Comment 26 Eugene Kuleshov CLA 2005-11-04 01:01:47 EST
(In reply to comment #25)
> Should Session parameter for connect methods be removed or is it enought to
> replace it with java.net.SocketFactory?

In the attached PServerConnection2.java (open() method) I've replaced session
with com.jcraft.jsch.SocketFactory. I haven't investigated much if
java.net.SocketFactory can be used in this place and just wanted to reuse as
much code as possible.

If you wan't to redesign the API, it is probably worth to look how proxy support
is done in Java 5. It is quite transparet to the user because he would always
deal with Socket instance and don't have to know about Proxy at all.
Comment 27 Eugene Kuleshov CLA 2005-11-05 01:24:12 EST
Created attachment 29375 [details]
proxy properties UI

It looks like there was some work on proxy support in Eclipse 3.2M3 (see
screenshot). So, I wonder if the same settings can be used by CVS SSH2 and
pserver plugins?
Comment 28 Michael Valenta CLA 2005-11-07 12:17:43 EST
I'm running 3.2 M3 but I don't see that preference page. Perhaps you have 
other plugins loaded that surface that page (actually, it looks like you have 
a ton of stuff loaded: Mylar, AJDT, etc).
Comment 29 Eugene Kuleshov CLA 2005-11-07 12:34:09 EST
(In reply to comment #28)
> I'm running 3.2 M3 but I don't see that preference page. Perhaps you have 
> other plugins loaded that surface that page (actually, it looks like you have 
> a ton of stuff loaded: Mylar, AJDT, etc).

Damn! You are right. That must be WTP 1.0M8. :-(
That makes even more sense to move this into the core...
Comment 30 Eugene Kuleshov CLA 2005-12-02 23:30:37 EST
Folks, is there are any chance that my patch will be incorporated?
Comment 31 Michael Valenta CLA 2005-12-03 14:11:49 EST
We still need to work out the details of when and how to make the Jsch jar a separate plugin. Unfortunately, there is too much going on at the present moment. Hopefully, we will have some cycles to look into it once M4 is done. Once we get that sorted out, we can look at incorporating your patch. 
Comment 32 Eugene Kuleshov CLA 2005-12-04 17:56:47 EST
(In reply to comment #31)
> We still need to work out the details of when and how to make the Jsch jar a
> separate plugin. Unfortunately, there is too much going on at the present
> moment. Hopefully, we will have some cycles to look into it once M4 is done.
> Once we get that sorted out, we can look at incorporating your patch. 

Because it takes so long, maybe we can use intermediate solution?

Move proxy settings backend and ui panel to core or ui module, then copy required classes (basically Proxy implementation) from jssh to the core and change plugins accordingly.

Later when jssh moved into separate plugin these temporary classes can be replaced by ones from jssh...
Comment 33 Michael Valenta CLA 2005-12-04 20:43:43 EST
I suspect there would be some legal issues with what you suggest. I understand your desire to see this happen as soon as possible. Unfortunatley, I'm just too swamped for the rest of the year to even think about this. However, it should happen in M5.
Comment 34 Eugene Kuleshov CLA 2005-12-04 20:51:20 EST
(In reply to comment #33)
> I suspect there would be some legal issues with what you suggest. I understand
> your desire to see this happen as soon as possible. Unfortunatley, I'm just too
> swamped for the rest of the year to even think about this. However, it should
> happen in M5.

jcsh is BSD-licensed, so it should be ok to derive proxy classes.
I can work on required patches if it could help to make it for M4...

Ideally it would make sense to have platform-wide proxy configuration UI and standard settings/API (even if connection methods still up to plugins). What would be a good goal for M5, but probably there is already request for this.
Comment 35 Michael Valenta CLA 2005-12-05 08:59:43 EST
What you say about BSD licenses may be true but I am not a lawyer so I would need to check with one before taking any action. Regardless of this, as I already mentioned, I have a pretty busy schedule for M4 and there is nothing that could be bumped to make room for the work required to make this happen for M4. I think the best approach to take is to do whatever we need to do in M5 to make the Jsch a separate plugin and then go from there. Remember, the goal of this work is to make this happen for 3.2.
Comment 36 Michael Valenta CLA 2005-12-05 09:14:47 EST
I should also add that I really do appreciate your effort on this and I also appreciate you trying to push to get this in as soon as possible. I am sorry that I couldn't make this happen for M4 and I will make every effort to make it happen in M5.
Comment 37 Atsuhiko Yamanaka CLA 2005-12-05 10:51:55 EST
Hi,

At comment #27, you had referred to 'proxy support in Eclipse 3.2M3' and
I have misunderstood that your problem has been resolved thanks to that 'porxy support' and stopped thinking of this issue.  Ok, if the refactoring is still required for jsch, I will.

Comment 38 Eugene Kuleshov CLA 2005-12-05 11:13:59 EST
(In reply to comment #37)

> At comment #27, you had referred to 'proxy support in Eclipse 3.2M3' and
> I have misunderstood that your problem has been resolved thanks to that 'porxy
> support' and stopped thinking of this issue.  Ok, if the refactoring is still
> required for jsch, I will.

It turns out that proxy support I've found did come from WTP plugin and not from platform. So, for now CVS plugins still have to handle it on their own.

Also, refactoring I've suggested for jcsh makes sense for long term. So, please do this it if you don't mind.
Comment 39 Eugene Kuleshov CLA 2005-12-05 11:26:09 EST
(In reply to comment #36)
> I should also add that I really do appreciate your effort on this and I also
> appreciate you trying to push to get this in as soon as possible. I am sorry
> that I couldn't make this happen for M4 and I will make every effort to make it
> happen in M5.

Thanks Michael. 

By the way, do you think it would be possible to have proxy support on a platform level in a 3.2 time frame?

Actually some plugins (e.g. Mylar) are using proxy config from update manager plugin... unfortunately there are no settings for socks.
Comment 40 Michael Valenta CLA 2005-12-05 12:10:41 EST
What do you mean by proxy support at the platform level? Do you mean that, since SSH2, update and, eventually, pserver will have proxy support that we should have a single proxy support UI that all these tools use? Or do you mean something else? In either case, it is probably worth logging a separate enhancementr request for it. YOu can log it against Team for now.
Comment 41 Eugene Kuleshov CLA 2005-12-05 13:21:49 EST
(In reply to comment #40)
> What do you mean by proxy support at the platform level? 

I meant global http/socks proxy settings for Eclipse platform, that would be shared by all plugins.

> Do you mean that,
> since SSH2, update and, eventually, pserver will have proxy support that we
> should have a single proxy support UI that all these tools use? Or do you mean
> something else? In either case, it is probably worth logging a separate
> enhancementr request for it. YOu can log it against Team for now.
 
Right. Here it is (probably duplicated) https://bugs.eclipse.org/bugs/show_bug.cgi?id=119278
Comment 42 Michael Valenta CLA 2006-02-10 15:31:00 EST
The Jsch client is now in a separate plugin. We can work towards adding the proxy support in M6 since there is no API involved.
Comment 43 Eugene Kuleshov CLA 2006-02-10 16:19:35 EST
(In reply to comment #42)
> The Jsch client is now in a separate plugin. We can work towards adding the
> proxy support in M6 since there is no API involved.

Hmm. I thought there is at least one change required in jcsh... I could be wrong. since it was some time ago.
Comment 44 Michael Valenta CLA 2006-02-11 13:47:31 EST
Is there a change required to Jsch? What version of Jsch do we need for your patch to work? Or is there a patch that needs to be applied to Jsch?
Comment 45 Eugene Kuleshov CLA 2006-02-11 14:31:06 EST
(In reply to comment #44)
> Is there a change required to Jsch? What version of Jsch do we need for your
> patch to work? Or is there a patch that needs to be applied to Jsch?

It seems so. See comment #21
Comment 46 Michael Valenta CLA 2006-02-11 16:30:42 EST
What exactly do you mean by "it seems so"? Is the functionality your patch requires available in a later version of Jsch or do changes still need to be applied to Jsch? If it is the former, please state what version of the Jsch client is required. If it is the later, have you supllied JCraft with a patch to add the required funtionality?
Comment 47 Eugene Kuleshov CLA 2006-02-11 16:37:01 EST
(In reply to comment #46)
> What exactly do you mean by "it seems so"? Is the functionality your patch
> requires available in a later version of Jsch or do changes still need to be
> applied to Jsch? If it is the former, please state what version of the Jsch
> client is required. If it is the later, have you supllied JCraft with a patch
> to add the required funtionality?

I thought that change described in #21 is rather trivial. Since jsch code is not in cvs it is not obvious what revision should I create patch for.

Heh, this looks like broken phone conversation, especially for such simple change. :-(
Comment 48 Michael Valenta CLA 2006-02-11 16:58:27 EST
I thought that perhaps you has already worked that all out with Yamanaka. I'll assign this to Yamanaka and let the two of you work out what is required on the Jsch side.
Comment 49 Eugene Kuleshov CLA 2006-02-11 17:06:01 EST
(In reply to comment #48)
> I thought that perhaps you has already worked that all out with Yamanaka. I'll
> assign this to Yamanaka and let the two of you work out what is required on the
> Jsch side.

I had an impression from his comments that we did, but then he disappeared. So, now I just have no idea where we are and why it is such a big problem for this small change.

Maybe we should dump the idea of changin jsch and just copy two required classes? 

There are are also some piece of UI need to be changed and that is not done in my patch. I mean panel with all the proxy settings. It would be nice to have these settings global for the platform, but it doesn't look it would happend in 3.2...
Comment 50 Michael Valenta CLA 2006-02-12 18:49:32 EST
I apologize if my latest comments have not been all that productive. We've been on overdrive for most of M5 and I think it is getting to me (I'm not as young as I used to be). I don't see the situation improving much in M6 either. I think this is an important issue but unfortunately, due to lack of manpower, we don't have much time to spare to make it happen. 

What I was trying to find out in my previous comments was how much work is left to do. It sounds like the following things still need to happen:

1) A change to Jsch to provide the required proxy support
2) Additional UI to support proxy configuration

From comment 37, it sounds like Yamanaka is willing to make the required changes. My guess is that he is busy with other things (his involvement with Eclipse is strickly voluntary) or perhaps he is unsure of the exact changes you require. Perhaps you could create a patch against the latest Jsch and submit it here or through the JCraft site (it's probably better to do it through the JCraft site to avoid any license issues).

As for a Platform proxy settings panel, I'm not aware of any plan to have one in the platform so we'll need one in CVS. We can discuss this more once issue 1) is resolved.
Comment 51 Atsuhiko Yamanaka CLA 2006-02-13 11:41:10 EST
(In reply to comment #18)
>For instance both
> ProxyHTTP and ProxySOCKS5 require Session parameter in their connect method and
> the only thing they need from that session is SocketFactory.

For your requests, connect method has been re-defined as
  public void connect(SocketFactory socket_factory, String host, int port, int timeout)
Is it enough? Please refer to
  http://www.jcraft.com/jsch/jsch-0.1.25-rc5.zip
# Please note that 'timeout' is added since 0.1.25.
Comment 52 Eugene Kuleshov CLA 2006-02-14 00:03:44 EST
(In reply to comment #51)
> For your requests, connect method has been re-defined as
>   public void connect(SocketFactory socket_factory, String host, int port, int
> timeout)
> Is it enough? Please refer to
>   http://www.jcraft.com/jsch/jsch-0.1.25-rc5.zip
> # Please note that 'timeout' is added since 0.1.25.

Great! Thanks Atsuhiko.

Michael, it doesn't seem this will make to 3.2M5. Does it? If so, then I'll check it on th weekend with the last integration build and can updte patch if you like.
Comment 53 Michael Valenta CLA 2006-02-14 08:05:05 EST
No, this won't make it into M5. We still need to up the Jsch version and we'll need to run with that internally for a while before putting it into the build. 
Comment 54 Michael Valenta CLA 2006-02-20 15:37:47 EST
The latest Jscj JAR should appear in tomorrows interation build.
Comment 55 Michael Valenta CLA 2006-02-21 14:16:15 EST
The latest Jsch JAR (0.1.25) is in the build.
Comment 56 Michael Valenta CLA 2006-03-09 12:44:28 EST
Eugene, I haven't has a chance to look at the patch yet. Is it complete? You mentioned that a proxy preference page is still needed? Is the patch usable without that or do we need to wait until we have a proxy preference page? Also, are here changes needed to the attached patch in reponse to the changes in the Jsch plugin?
Comment 57 Eugene Kuleshov CLA 2006-03-09 12:49:41 EST
(In reply to comment #56)
> Eugene, I haven't has a chance to look at the patch yet. Is it complete? You
> mentioned that a proxy preference page is still needed? Is the patch usable
> without that or do we need to wait until we have a proxy preference page? Also,
> are here changes needed to the attached patch in reponse to the changes in the
> Jsch plugin?

I haven't had chance to review patch for last updates, so I am not sure what state it is.

As of proxy preference page, I've used the same page and preferences as CVS SSH2 plugin, which is kind of odd. So, I thought that since there is no generic proxy prefs page in Eclipse we need to move proxy/socks config page out of CVS SSH2 Connection Method and put it under CVS node. Hat hasn't been done in this patch.
Comment 58 Eugene Kuleshov CLA 2006-03-10 01:38:58 EST
Created attachment 36040 [details]
proxy support for pserver

Here is patch for cvs.code and cvs.ui plugins that is using jsch-0.1.25 to implement proxy support. 

I also created new "CVS / Proxy Settings" page that suppose to be common for all CVS plugins. If you are ok with this I can update cvs.ssh2 plugin and its ui to use this new page and common proxy settings.
Comment 59 Eugene Kuleshov CLA 2006-03-14 17:08:08 EST
Michael, is there a chance for this patch to make to 3.2M6 ?
Comment 60 Atsuhiko Yamanaka CLA 2006-03-15 10:49:52 EST
Hi,

(In reply to comment #58)
> Created an attachment (id=36040) [edit]
> proxy support for pserver
> Here is patch for cvs.code and cvs.ui plugins that is using jsch-0.1.25 to
> implement proxy support.

I have tried this patch, but I had two troubles,
  * it has included diff for binary file(jsch-0.1.25.jar) and generated file
    has been broken.
  * it cannot been applied to the source code in dev.eclipse.org CVS repository,
    so I need to apply it by eye balls ;-)

Anyway, at last, I could successfull apply it to the source code and run patched version.  I have not tried its functionality yet because today I'm not
behind the proxy fairewall, but tommorow I will be and try it.

> I also created new "CVS / Proxy Settings" page that suppose to be common for
> all CVS plugins. If you are ok with this I can update cvs.ssh2 plugin and its
> ui to use this new page and common proxy settings.

Yes, you are right.  The preference page 'Team > CVS > SSH2 Connection Method > Proxy' should be disabled and JSchSession class should refer to proxy
settings by that new preference page.

Comment 61 Eugene Kuleshov CLA 2006-03-15 11:04:21 EST
(In reply to comment #60)
> I have tried this patch, but I had two troubles,
>   * it has included diff for binary file(jsch-0.1.25.jar) and generated file
>     has been broken.

This is more to indicate that new jar is needed. But it sounds like a bug in either diff or apply patch for cvs...

>   * it cannot been applied to the source code in dev.eclipse.org CVS
> repository,

I saw that there was some conflicts with incoming changes. If it helps, I can create patch again ater merging those conflicts.
Comment 62 Michael Valenta CLA 2006-03-15 12:07:20 EST
It is definitely my intention to apply this for M6. Unfortunately, I am swamped at the moment but hope to get it in next week. If you can make sure that the patch is up-to-date, that would be a great help. I am OK with consolidating the proxy page so if you could make that change, that would be really helpful as well.

Yamanaka, if you get a chance to try it and have any comments, let me know. I don't have a proper setup to test it so all I can do is ensure that it doesn't break existing funtionality.
Comment 63 Eugene Kuleshov CLA 2006-03-15 12:40:39 EST
Created attachment 36346 [details]
proxy support for pserver

Updated patch for last cvs code changes.
Comment 64 Eugene Kuleshov CLA 2006-03-15 12:45:46 EST
(In reply to comment #62)
> It is definitely my intention to apply this for M6. Unfortunately, I am swamped
> at the moment but hope to get it in next week. If you can make sure that the
> patch is up-to-date, that would be a great help. I am OK with consolidating the
> proxy page so if you could make that change, that would be really helpful as
> well.

UI part already done in this patch. I can remove duplicated page from ssh2 plugin and make it using new page/settings. Not sure though if I'll have time for this in next few days. So, if Yamanaka can do that it would be great.

Also, as Yamanaka pointed out, this patch require jsch-0.1.25.jar. I temporarily put new jar into org.eclipse.team.cvs.core plugin, so you may have to fix plugin dependencies.
Comment 65 Atsuhiko Yamanaka CLA 2006-03-16 09:29:04 EST
Created attachment 36408 [details]
proxy support for pserver

I have tried the provided patch and confirmed that pserver via HTTP/SOCKS5 works well.  

Here is a revised patch, which has fixed following problems in previous one,
  - a problem to load settings by proxy preference.
  - a problem in setting default values in proxy preferences.
  - a problem in updating controls on proxy preferences.

The revised patch does not include jsch-0.1.25.jar, but cvs.core's META-INF expects com.jcraft.jsch;bundle-version="[0.1.25,2.0.0)"
Comment 66 Atsuhiko Yamanaka CLA 2006-03-16 09:34:50 EST
Created attachment 36410 [details]
cvs.ssh2 plug-in refers to new proxy settings

If above 'proxy support for pserver' patch is applied, this patch also 
should be applied.  This patch deletes "Team/CVS/SSH connetions/proxy" preference
page and allows cvs.ssh2 plug-in to refer to settings by new proxy preference page.
Comment 67 Ramon Perez Martinez CLA 2006-03-16 09:41:45 EST
(In reply to comment #66)
> Created an attachment (id=36410) [edit]
> cvs.ssh2 plug-in refers to new proxy settings
> 
> If above 'proxy support for pserver' patch is applied, this patch also 
> should be applied.  This patch deletes "Team/CVS/SSH connetions/proxy"
> preference
> page and allows cvs.ssh2 plug-in to refer to settings by new proxy preference
> page.
> 

Please:

I need them to send me the (org.eclipse.team.cvs.core).jar because I have problems with the proxy to download the sources and to compile them

Comment 68 Atsuhiko Yamanaka CLA 2006-03-16 11:37:32 EST
Created attachment 36422 [details]
cvs.ssh2 plug-in refers to new proxy settings

striping unrefered and unused code.
Comment 69 Bogdan Gheorghe CLA 2006-03-21 00:24:49 EST
Patch released to HEAD with some minor UI modifications to deal with some NPEs.
Comment 70 Atsuhiko Yamanaka CLA 2006-03-21 10:59:17 EST
(In reply to comment #69)
> Patch released to HEAD with some minor UI modifications to deal with some NPEs.

You are right.  There were such problems in my last patch.  Thank you for
fixinig them and applying patches to CVS repository.
Comment 71 Bogdan Gheorghe CLA 2006-03-21 11:09:01 EST
Removed all leftover references to the proxy tab from CVSSSH2PreferencePage. With the change in preference store for the proxy page, we need to provide users with some sort of migration story. I've opened Bug 132697 to track this.
Comment 72 Eugene Kuleshov CLA 2006-03-21 11:15:00 EST
Can someone explain to me how to get jsch plugin to run debug workbench?
I see that new jar is now sitting under org.eclipse.team.cvs.ssh2
Any plans to have its code in eclipse cvs?
Comment 73 Atsuhiko Yamanaka CLA 2006-03-21 12:27:27 EST
(In reply to comment #72)
> Can someone explain to me how to get jsch plugin to run debug workbench?
> I see that new jar is now sitting under org.eclipse.team.cvs.ssh2
> Any plans to have its code in eclipse cvs?

As a quick hack, to debug this issue, I have copied com.jcraft.jsch_0.1.25.jar
into plugins directory.
Comment 74 Michael Valenta CLA 2006-03-28 09:23:58 EST
Eugene, would it be possible for you to verify that this works properly in the M6 candidate (i.e. one of this weeks integration builds)?
Comment 75 Eugene Kuleshov CLA 2006-03-28 10:53:20 EST
(In reply to comment #74)
> Eugene, would it be possible for you to verify that this works properly in the
> M6 candidate (i.e. one of this weeks integration builds)?

I can certainly try that. Please let me know which integration build should I use.
Comment 76 Michael Valenta CLA 2006-03-28 10:57:07 EST
Thanks. Please use I20060328-0010. It is the M6 test build.
Comment 77 Eugene Kuleshov CLA 2006-03-29 14:11:07 EST
Created attachment 37225 [details]
error dialog showing html text

I've tested HTTP and SOCKS this build. 

For socks I've been using SOCKS endpoint created by ssh command like:

  ssh -D 1080 -v user@host

and it is working just fine. When specifying an incorrect repository path connection is termintated with reason: "I HATE YOU". So perhaps error handling code could be improved for this case.

For HTTP tunnel, I've used Squid server. Note that connection to port 2401 should be enabled, as well as CONNECT method. For example, Squid config:

acl CVS_ports port  2401
http_access deny CONNECT !SSL_ports !CVS_ports

with above settings it is working fine. Though errorneous case look little ugly, like on  attached screenshot, which was taken when 2401 port were disabled (so you can see access denied error inside html). Perhaps we can detect that error has html code and use html widget to show it, but now it is ok.

I haven't tried proxy auth yet. Will have to configure Squid for that. I'll send you an update if I'll manage that.

BTW, I also noticed that all connection errors are going to Eclipse .log. We probably discussed that already and I think that they should actually go to CVS console but not to the log.
Comment 78 Michael Valenta CLA 2006-03-29 16:18:52 EST
Thanks, I've created bug 122930 to track your last comment. We should create soem doc and maybe a FAQ entry to capture this information. Feel free to log separate bugs for any particular issue (e.g. html error).
Comment 79 Eugene Kuleshov CLA 2006-03-29 16:38:19 EST
(In reply to comment #78)
> Thanks, I've created bug 122930 to track your last comment. 

It doesn't seem bug number is correct. 

> We should create
> soem doc and maybe a FAQ entry to capture this information. Feel free to log
> separate bugs for any particular issue (e.g. html error).

I hope there are enough info in my comment to document http proxy configuration and possible option for socks end point. If not, let me know what else is needed.
Comment 80 Michael Valenta CLA 2006-03-29 16:52:03 EST
Sorry, bug is 133930. What is provided is a good start. I'll make sure to get you to review what we write just in case we leave something important out.
Comment 81 Atsuhiko Yamanaka CLA 2006-03-29 20:06:50 EST
This is not a problem about its behavior and functionality,
but I can not build recent org.eclipse.team.cvs.ssh2 on CVS repository
by build.xml, which is generated from plugin.xml(PDE Tools->Create Ant Build
File).  At least, I had been able to build older versions.  
Are there any changes on the build process in these days? 
Here are outputs on console,

Buildfile: C:\Documents and
Settings\ymnk\workspace\org.eclipse.team.cvs.ssh2\build.xml

properties:

init:

build.jars:

properties:

init:

@dot:

BUILD FAILED
Target `cvsssh2.jar' does not exist in this project. 
Comment 82 Michael Valenta CLA 2006-03-29 20:26:03 EST
That's odd. I just tried it using the latst integration build and it worked for me. It looks like the build.xml you ran was referencing stale information from somewhere (i.e. all references to cvsssh2.jar where removed).
Comment 83 Atsuhiko Yamanaka CLA 2006-03-29 21:24:17 EST
(In reply to comment #82)
> That's odd. I just tried it using the latst integration build and it worked for
> me. It looks like the build.xml you ran was referencing stale information from
> somewhere (i.e. all references to cvsssh2.jar where removed).

It seems it is a local problem. 'eclipse -clean' did not solve this problem, but by deleting
 workspace\.metadata\.plugin\org.eclipse.debug.core\.launches\org.eclipse.team.cvs.ssh2 build.xml.launch
it has been disappeared.

Thank you for your prompt reply.
Comment 84 Atsuhiko Yamanaka CLA 2006-03-30 01:15:23 EST
(In reply to comment #77)
> with above settings it is working fine. Though errorneous case look little
> ugly, like on  attached screenshot, which was taken when 2401 port were
> disabled (so you can see access denied error inside html). Perhaps we can
> detect that error has html code and use html widget to show it, but now it is
> ok.

The reason for such ugly html lines is that http-proxy included in jsch
has not checked HTTP return code; 200 or 403.  I will modify jsch to shutdown
a connection immediately on such a case. 

Thank you for your feedback.
Comment 85 Eugene Kuleshov CLA 2006-03-30 10:41:32 EST
(In reply to comment #84)
> The reason for such ugly html lines is that http-proxy included in jsch
> has not checked HTTP return code; 200 or 403.  I will modify jsch to shutdown
> a connection immediately on such a case. 

Do you think status text from http headers will be informative enough?

I kind of like current behaviour because it allows to see actual error, such as "Access Denied" reported by proxy server and it is esy to detect presense of html in error text and use html widget to show error text in such cases.
Comment 86 Neil Bartlett CLA 2006-04-12 13:09:34 EDT
Thanks to everybody who made this feature possible - at last I can check stuff out from SourceForge et al!

However one small enhancement might be required: the ability to specify on a per-repository basis whether to use the proxy or not. With the proxy enabled it is impossible to connect to repositories sitting inside my company firewall.

Also, regarding the "I HATE YOU" error... I assume that comes from the remote server? It might be worth reporting the message as something like "Server replied: I HATE YOU". We wouldn't want users to think that Eclipse itself is being so unfriendly!
Comment 87 Eugene Kuleshov CLA 2006-04-12 13:49:55 EDT
(In reply to comment #86)
> Thanks to everybody who made this feature possible - at last I can check stuff
> out from SourceForge et al!
> 
> However one small enhancement might be required: the ability to specify on a
> per-repository basis whether to use the proxy or not. With the proxy enabled it
> is impossible to connect to repositories sitting inside my company firewall.

I'd suggest to add a property that would allow to specify hosts that should be contacted directly. Similar to what most web browsers have.

> Also, regarding the "I HATE YOU" error... I assume that comes from the remote
> server? It might be worth reporting the message as something like "Server
> replied: I HATE YOU". We wouldn't want users to think that Eclipse itself is
> being so unfriendly!

This is response from pserver. Michael suggested to fill separate reports for this and other issues.
Comment 88 Atsuhiko Yamanaka CLA 2006-04-18 15:20:18 EDT
(In reply to comment #87)
> I'd suggest to add a property that would allow to specify hosts that should be
> contacted directly. Similar to what most web browsers have.

jsch 0.1.27 will check the response code from http-proxy and
if it is not '200', an exception will be thrown with the reason string 
given by http-proxy. So, ugly html lines whill not be shown.

You can try it by the jar file attached on
https://bugs.eclipse.org/bugs/show_bug.cgi?id=113521