Oleg:
        Hello and Happy New Year! Some quick comments for you in
regards to your remaining work on this contract:

> The only one thing that has been left out is item 4.3 of the Spec
> "Modification to auto-detect VNC servers on a LAN".
> We are currently working on this problem. It should not take us too
> long to complete it. But taking into account New Year holidays we would
> like to set the delivery date for this feature for January 14, 2002.

        Sounds good. You may want to have a look for VNCAdmin which
already does this. It's coded in Perl, uses wxWindows. Useful.

        Also, I wanted to confirm: suppose host-A and host-B are on
my LAN, and host-C and host-D are on a remote LAN. Hosts A, B and
C are all running Kaboodle, and hosts A and D have VNC installed
(both viewer and server). I now setup a Kaboodle-VPN between the two
networks using machines B and C. I then go to machine-A and want to
initiate a VNC session to machine-D. My question is...is the VNC
tunneling work you've done smart enough to allow this to work:

   A (VNC client) => B (Kaboodle) => C (Kaboodle) => D (VNC server)

        It should, of course, that's the whole point. :) I've
just been unable to test what you've sent yet.

        Now for some longer winded thoughts...

VNC-Detection
=============

        I'm thinking that this VNC auto-detection should be part of
Kaboodle's overall LAN detection. Here's how I think that old part
works: once a device (PC, printer, etc) is discovered, it joins a
"global population list". That list is further divided into an "active
list" and an "inactive list" (we'll be soon adding a third category,
the "hidden device list", but that's not ready yet). An independent
thread is responsible for managing the contents of the 3 lists
(population, active, inactive).

        VNC detection is a bit tricker, though, as a device could
be running a viewer, a server, or both. Kaboodle must be able to
detect both: it needs to detect servers running on any device
including itself, and it needs to detect viewers installed only on
itself (ie, on the same machine that Kaboodle is installed upon).

        For the server detection of other devices, what the VNC auto
detect should do is simply attempt to connect to TCP port 5900-5999
on a device, and grep for an RFB reply. If it fails to connect or if
there's no RFB in the reply string (try telneting to a VNC server
and you'll see what I mean), it's not running a VNC service. Of
course, if it detects something on port 5900, it can skip scanning
the other 99 TCP ports.

        For viewer detection, Kaboodle can simply check the installed
programs to see if VNCviewer is around or not.

        If a device *is* detected to be running a VNC viewer or client,
Kaboodle should set a property in that device's Network Information
Database entry which then allows the VNC PropertyTab to show up on
that device's PropertyPanel. Two "bits": one yes/no for VNCServer and
one yes/no for VNCViewer. These database entries are persistent, so
Kaboodle will not have to rescan every device for VNC. If it finds it
once it should stick. We'll worry about removing it later.

        This auto-detection should be triggered in three manners. First,
when Kaboodle starts up, it should check the population list to see if
any devices without the VNC bits set are now running VNC and check itself
to see if a VNC viewer is now installed. Second, it should do this same
scan when the REFRESH button is hit. Third, it should do this same scan
whenever the global population list is detected to have updated.


The "VNC Setup" PropertyTab
===========================

> III. HINTS TO TEST KABOODLE+VNC
>
> 1) Kaboodle+VNC Server machine
>       - Launch EF.exe;
>       - Right-click _your_ computer icon;
>       - Choose "VNC session" tab;
>       - Press "Listen..." button. "VNC session" window will show up;
>       - Press "Browse..." button and locate your WinVNC.exe file.
>          Note that you do it just once;
>       - Press "Listen" button to enter the Server mode.

        Hmmm. I think we need to change this in a small way. If
a device is running *either* a VNC server or if it has a VNC client
installed, it should have a "VNC Setup" PropertyTab as per the whole
auto-detection discussion above. The top half of this tab should deal
with VNC server details, the bottom half should deal with VNC client
details.
        Here's the tricky part, though. If I'm running Kaboodle on
the *same* machine that's running the VNC server, then I should
have some control I couldn't have otherwise. Specifically, I should
have a radio button that says "Use Kaboodle to control the startup
of the VNC service". If that button is checked, then have the field
which says "Use this server: __________" which has the "Browse..."
button next to it, so the user can go find WinVNC.exe. If checked,
Kaboodle would startup the service on an as-needed basis. If not
checked, Kaboodle could still affect the registry settings for VNC,
but it'd be running all of the time, unsupervised.

        Secondly, the top-half of the window should have the "Connect
to VNC on display/port ####" where the user can specify a display
or port-number for the VNC service to bind to. It defaults of course
to display 0, aka TCP port 5900. Or, for instance, Kaboodle might
auto-detect VNC running on another machine on port 5915, and so it
should come up showing "Connect to VNC on display 15".

        The spec lists some other radio buttons for the server side
controls. The most interesting ones are "Only Allow other Kaboodle
users to connect to this machine" and "Let other Kaboodle users affect
these settings".


> 2) Kaboodle+VNC Viewer machine
>       - Launch EF.exe;
>       - Right-click the target computer icon;
>       - Choose "VNC session" tab;
>       - Press "Start session..." button.
>          "VNC session with xxx.xxx.xxx.xxx" window will show up;
>       - Press "Browse..." button and locate your VncViewer.exe file.
>          You do it just once;
>       - Press "View" button to start session.


        As for the bottom half of the window, the VNC Viewer part,
it's weird. The settings being adjusted will affect how the VNC
Viewer on *my* machine behaves, the one I'm working on, not the
target machine's, the one whose PropertyPanel I have open. So,
in the bottom half of the window, it should read: "When connecting
to this machine from My Machine, use these settings:", where
My Machine is the Kaboodle name for the machine I'm using.

        As for what settings to adjust...similar to the server side,
there should be two mutually exclusive buttons, one which says "use
the Java viewer from this machine's server" and an alternative which
reads "Use: __________" which has the "Browse..."  button next to it,
so the user can go find their local copy of VNCViewer.exe. The Java
based viewer is an option we can disable until the "steel tube" tunnel
work is complete.
        There are some other radio buttons that can go in here, and
they're described in the spec. Last but not least should be a CONNECT
button, and of course a CANCEL button.


Future Steel-Tube Work
======================

        A quick comment here: I *think* you meant to say SSH in all
of these cased an not SSL. SSL is certainly a component of the
SSH transport-layer, but it a low-level protocol and so has little
to do with the user-auth and connection-layer parts of SSH.

        My understanding of what you wrote below is that we'll
do the connection-layer first, designing it to be a single TCP
connection with "channel management" for an arbitrary numbers of
simultaneous data tunnels, all independent of the user-auth or
transport-layer. Good. Depending on resources, I'd like to either
implement an SSL-based transport-layer next, or fix the user-auth
layer to implement the two modes ("more secure" and "more private")
as discussed in the spec.

        When you can, please confirm your understanding of the
above concerns regarding the UI aspects of the VNC wrapper.

        Getting close!

-Scott


> II. SSL IMPLEMENTATION
>
> We understand your idea about separate implementation
> of the three SSL layers but our final considerations
> will be given after the Christmas:
>
> 1. Connection layer - supported by what we call Variant A.
>
> OL> A. Update the implementation of Kaboodle CSocketTCPIP class so as
> OL> to (a) retain the support of Remote Connection functionality (b)
> OL> and ensure the support of intensive bilateral data streams required
> OL> by VNC tunneling (see the previous report for detail). The
> OL> encryption and key exchange solution are left unchanged.
>
> This is to be done first of all and before any SSL part is applied.
>
> 2. Transport layer - take from SSL later on.
>
> 3. User authentication - uses your mechanism of "private partnership" and
> "verified partnership":
>
> SCB> I've done some work already specifying two key-exchange
> SCB> solutions.
>
> I suppose this is also a modification of the SSL authentication layer.
> We will need the authentication protocol specification from you.


_______________________________________________
Kaboodle-devel mailing list
[EMAIL PROTECTED]
https://lists.sourceforge.net/lists/listinfo/kaboodle-devel

Reply via email to