[ANN] DRbFire 0.1.0


(Nathaniel Talbott) #1

It is with great pleasure that I introduce DRbFire 0.1.0 to the world.
Thanks go to Masatoshi SEKI for DRb, the most intuitive, best-factored
distributed object library I’ve ever had the pleasure of using.

What is it?

···

===========
The DRb Firewall Protocol, or DRbFire, is a DRb protocol that allows
easy bidirectional communication in the presence of a firewall.

What does that mean, really?

It means that you can write cool little DRb clients, distribute them
far and wide, and then communicate with them bidirectionally regardless
of whether they sit behind a firewall or not. Bidirectional means that
the server can make calls to the client just the same as the client
makes calls to the server.

How does it work?

Basically it causes the client to initiate all connections, even server
to client connections. Read the source for more details.

How do I use it?

First, you’ll need to know how to use DRb. Once you do, check out the
DRbFire documentation - all of the ease of use is laid out there.
Samples are also included to help you get going.

Where can I check it out?

Documentation: http://drbfire.rubyforge.org/
Download: http://rubyforge.org/projects/drbfire/

If you have any more questions, just drop me an email and I’ll do my
best to answer them.

Enjoy,

Nathaniel
Terralien, Inc.

<:((><


(Shashank Date) #2

Hi Nathaniel,

···

Nathaniel Talbott nathaniel@talbott.ws wrote:

The DRb Firewall Protocol, or DRbFire, is a DRb protocol that allows
easy bidirectional communication in the presence of a firewall.

What does that mean, really?

It means that you can write cool little DRb clients, distribute them
far and wide, and then communicate with them bidirectionally regardless
of whether they sit behind a firewall or not.

After installing DRbfire on my Home PC (Win XP) which is behind a router (but no personal firewall) and on my Office PC (Win 2K) which is behind the corporate firewall, I started the server.rb from the sample directory on my Home. Then at office I started the client.rb and I got this error.

DO I need to modify the two programs to make it work? I have Ruby 1.8.1 on both PCs.

TIA,
– Shashank

C:\extract\drbfire-0-1-0\sample>ruby client.rb 64.151.4.113
c:/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:239:in initialize': The printer queue is full. - connect(2) (Errno::E061) from c:/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:239:inopen’
from c:/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:239:in open' from c:/ruby/lib/ruby/site_ruby/1.8/drb/drbfire.rb:173:inopen’
from c:/ruby/lib/ruby/site_ruby/1.8/drb/drbfire.rb:116:in initialize' from c:/ruby/lib/ruby/site_ruby/1.8/drb/drbfire.rb:167:innew’
from c:/ruby/lib/ruby/site_ruby/1.8/drb/drbfire.rb:167:in open_server' from c:/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:184:inopen_server’
from c:/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:182:in each' from c:/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:182:inopen_server’
from c:/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:542:in initialize' from c:/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:737:innew’
from c:/ruby/lib/ruby/site_ruby/1.8/drb/drb.rb:737:in `start_service’
from client.rb:39


Do you Yahoo!?
Get better spam protection with Yahoo! Mail


(Nathaniel Talbott) #3

After installing DRbfire on my Home PC (Win XP) which is behind a
router (but no personal firewall) and on my Office PC (Win 2K) which
is behind the corporate firewall, I started the server.rb from the
sample directory on my Home. Then at office I started the client.rb
and I got this error.

First of all, that (improperly labeled) error is due to the host
refusing the connection when the client tries to connect (see
[ruby-talk:80235]). Are you sure that your router is forwarding inbound
connections on the port you’re using to your home PC?

DO I need to modify the two programs to make it work? I have Ruby
1.8.1 on both PCs.

You do need to modify the programs - see:

http://drbfire.rubyforge.org/classes/DRbFire.html

Specifically the “Basic Usage” section.

HTH,

Nathaniel
Terralien, Inc.

<:((><

···

On Feb 26, 2004, at 10:27, Shashank Date wrote:


(Shashank Date) #4

First of all, that (improperly labeled) error
is due to the host
refusing the connection when the client tries
to connect (see [ruby-talk:80235]).

Yes, I have played a little with DRb before so
I knew about that. It did not mislead me.

Are you sure that your router is forwarding inbound
connections on the port you’re using to your home
PC?

Here is where I’m dense :slight_smile:
No, I am not sure and I don’t know how to verify.
Any suggestions?

You do need to modify the programs - see:

http://drbfire.rubyforge.org/classes/DRbFire.html

Specifically the “Basic Usage” section.

I had read that section before and read it again.
Am I missing the obvious (other than the options
usage)?

Earlier I was doing:

c:\rbtest> ruby client.rb server.ip.adrs.here

and now I am doing:

c:\rbtest> ruby client.rb --host=server.ip.adrs.here

But the result is the same.
Thanks,
– Shashank

···

Nathaniel Talbott nathaniel@talbott.ws wrote:


Do you Yahoo!?
Get better spam protection with Yahoo! Mail.
http://antispam.yahoo.com/tools


(Nathaniel Talbott) #5

First of all, that (improperly labeled) error
is due to the host
refusing the connection when the client tries
to connect (see [ruby-talk:80235]).

Yes, I have played a little with DRb before so
I knew about that. It did not mislead me.

Good… I thought it was fixed, but apparently it hasn’t been. Hope it
doesn’t trip anyone else up.

Are you sure that your router is forwarding inbound
connections on the port you’re using to your home PC?

Here is where I’m dense :slight_smile:
No, I am not sure and I don’t know how to verify.
Any suggestions?

Try running a simpler service on the computer, such as a web server,
and see if you can connect to it from outside. As for actually setting
up the router… who knows. It varies a lot.

You do need to modify the programs - see:

http://drbfire.rubyforge.org/classes/DRbFire.html

Specifically the “Basic Usage” section.

I had read that section before and read it again.
Am I missing the obvious (other than the options
usage)?

Well, you need to do four basic things:

First,
require ‘drb/drbfire’

Second, change your url to use the correct protocol, i.e.:
drbfire://server
instead of
druby://server

Third, you need to specify the server’s url when calling
DRb.start_service on the client.

Fourth, you need to specify the right role, server or client, in each
half’s config hash.

See the samples directory for simple client and server examples.

Earlier I was doing:

c:\rbtest> ruby client.rb server.ip.adrs.here

and now I am doing:

c:\rbtest> ruby client.rb --host=server.ip.adrs.here

But the result is the same.

DRbFire doesn’t do anything directly with the command-line parameters
of your script, so I wouldn’t expect this to affect it working or not.

Perhaps you could start by just trying to get the sample client and
server running through your firewall? Once you get that to go, it
should be pretty easy to get your main app working.

HTH,

Nathaniel
Terralien, Inc.

<:((><

···

On Feb 26, 2004, at 16:58, Shashank Date wrote:

Nathaniel Talbott nathaniel@talbott.ws wrote:


(Shashank Date) #6

“Nathaniel Talbott” nathaniel@talbott.ws wrote in message

Try running a simpler service on the computer, such as a web server,
and see if you can connect to it from outside.

Ok, I will try that …

As for actually setting
up the router… who knows. It varies a lot.

Yep, I will try and figure it out.

Well, you need to do four basic things:

See the samples directory for simple client and server examples.

May be I should have emphasized in my first email that, that is
exactly what I did :slight_smile:

DRbFire doesn’t do anything directly with the command-line parameters
of your script, so I wouldn’t expect this to affect it working or not.

No not DRbFire, the client and the server progams in the * sample *
directory that came with the package.

Perhaps you could start by just trying to get the sample client and
server running through your firewall?

Yes, that is (was) the idea :slight_smile:

Once you get that to go, it
should be pretty easy to get your main app working.

That will be cool !
– shanko