[jdev] (Newbie question) Can Jabber act as a gateway for HTTPS-based WebDAV?
Kim Alvefur
zash at zash.se
Wed Mar 28 09:28:23 UTC 2012
Hi!
I've been thinking about using Jingle to set up a TCP connection between the peers, and the talking HTTP over it.
I actually want some generic "just give me a tcp socket" Jingle application for tunneling whatever, like ssh, vnc or git or other dvcs protocol (hg uses http).
----- Original message -----
> On Wed, Mar 28, 2012 at 9:33 AM, Ajay Garg <ajaygargnsit at gmail.com>
> wrote:
> > Hi all.
> >
> > I have already posted the following query at "JAdmin" mailing list;
> > but I am not sure as to which mailing list is the appropriate one.
> >
> > Anyhow, since my query refers to a very conceptual doubt, I am posting
> > this here as well, to avoid any delay. I am sorry if I sound too
> > desperate, but the answer to the following query is indispensable;
> > only then can I decide on the go/no-go for the design.
> >
> >
> > #######################################################################################################
> > There are two users Bob and Alice. Each of Bob and Alice have setup a
> > WebDAV server on their local machines over SSL, and listen on port
> > 443. In a normal environment, Bob is able to access Alice's share by
> > typing "https://<Alice's IP Address>/webdav". Alice is able to the
> > same.
> >
> > Next, both Alice and Bob log onto a Jabber server set up by their
> > common friend Tom; and the only way they can communicate is via
> > Jabber. They still want to make their shares available to each other;
> > and wish for the simplest way to do it - via their browser. So, can
> > Tom configure his Jabber server in a manner, so as to allow Bob and
> > Alice to access each other's WebDAV shares' via their respective
> > browsers?
> > #######################################################################################################
> >
> >
> > Looking forward to a reply.
> >
> >
> > Thanks and Regards,
> > Ajay
>
> So your problem basically boils down to a reverse HTTP(S) proxy,
> tunneling over XMPP. You are probably considering XMPP to avoid
> worrying about IP addresses and firewalls, and trying to expose local
> services to contacts.
>
> Possible? Sure. But note, at a minimum you'll need a custom client,
> and a custom server (or server plugin), since nothing supports your
> use-case out of the box.
>
> Here's how I might do this:
>
> I'm assuming Tom's server is public (not behind a firewall, can accept
> connections). I'm assuming Alice's server is behind a NAT/firewall, so
> can't accept direct connections. I'm also assuming you want large file
> transfer support.
>
> Alice is running a local httpd. Alice's client will open a TCP stream
> to Tom's server, and a TCP stream to the local httpd, and then will
> act as a dumb proxy between these connections. This is fairly simple.
> You can probably use some existing HTTP proxy codebase. The client
> initiates the connections when it receives a signal over XMPP from the
> server. There can be multiple connections at the same time.
>
> On the server end, it's a bit more complicated. Take an existing HTTP
> proxy codebase. Then you need to modify its connection opening logic
> to signal the appropriate client via the XMPP server, which opens a
> reverse connection to the server proxy. Then that connection can be
> used for proxying as normal.
>
> Here's how it would flow:
>
> 1. Bob requests http://tom.com/webdav/alice/ using his web browser
> 2. Tom's server signals Alice's client
> 3. Alice's client connects to Tom's server and local server
> 4. Tom's server forwards request to Alice's server via Alice's client
> 5. Bob gets response from Alice's server via the two proxies
>
> Why use XMPP for this? For signalling, authentication, persistent
> connections, and other various features XMPP has standardized.
>
> Why not transfer data over XMPP itself? That would be much simpler,
> but large file transfers would be highly inefficient, so we open
> separate connections for the HTTP tunneling.
>
> --
> Waqas Hussain
> _______________________________________________
> JDev mailing list
> Info: http://mail.jabber.org/mailman/listinfo/jdev
> Unsubscribe: JDev-unsubscribe at jabber.org
> _______________________________________________
More information about the JDev
mailing list