Index of /~bbrazil/code/ipoversmb

Icon  Name                    Last modified      Size  Description
[DIR] Parent Directory - [   ] MD5SUM 22-Jun-2005 20:36 218 [TXT] README 22-Jun-2005 20:02 3.6K [   ] ipoversmb-0.1.1.exe 22-Jun-2005 20:13 9.5K [   ] ipoversmb-0.1.1.tar.gz 22-Jun-2005 20:07 4.8K [   ] ipoversmb-0.1.exe 22-Jun-2005 02:04 9.0K [   ] ipoversmb-0.1.tar.gz 22-Jun-2005 02:04 4.1K [DIR] src/ 12-Oct-2005 13:55 -
$Id: README,v 1.10 2005/06/22 19:02:43 bbrazil Exp $

IPoverSMB v0.1.1
Copyright Brian Brazil <bbrazil@netsoc.tcd.ie> 2005

This program allows you to create a single TCP connection over a network
filesystem. This was written for SMB but it also works on NFS and should work
on pretty much any filesystem.

**NB**
This program is intended as a proof of concept. It creates a good bit of
network traffic, so think before using it. I disclaim all liability for
anything you use this program for.

This program is laggy as I added a delay between data transfers to reduce
network load. This dynamic delay is based on recent activity and tries to
reduce latency (which could be as high as 500ms for a round trip) without
increasing load. Its just about usable for an interactive session. This isn't
intended for production use so this shouldn't really be a problem.

-- Getting the Source --
The website for IPoverSMB is http://netsoc.tcd.ie/~bbrazil/code/ipoversmb/
Tarballs and precompiled Windows executables can be obtained there.


-- Compile Instructions --
I've only ever compiled this with GCC.

Linux:
make ipoversmb

Solaris:
make ipoversmb.sun

Windows (from a Unix system via mingw32 - tested with Debian Sarge):
make ipoversmb.exe

I haven't tried compiling this with Microsoft Visual Studio yet. I'd be
interested to know if it works. The windows version requires Winsock.


-- Sample Usage --
Lets say we have two computers: Glass running Windows and Penguin running
Linux, Samba and SSH.  Say we wanted to ssh into Penguin via IPoverSMB with
PuTTy.  Both systems have IPoverSMB available.

1) On Glass use 'Map Network Drive' to mount a writable share from Penguin's Samba.
	Now both systems have a common filesystem.
2) On Glass Using the 'Run' start 'command' and cd to an empty directory and then run
	ipoversmb.exe client 2222
3) On Penguin cd to the same directory and run
	ipoversmb server 22
4) On Glass use PuTTy to start a connection to 127.0.0.1 on port 2222 using SSH.
A few seconds later and the connection will be established.

Note that ipoversmb operates on the current directory. For this reason both the
server and the client must be running in the same directory.

Using ipoversmb.exe on a Windows system on an directory like \\server\share\dir
won't work, which is why you must map the drive. This is because you can't have
a SMB path as your current directory.


-- Assumptions --
* Anything to do with sockets is cheap
* Sending to a socket never blocks (doesn't really matter if it does)
* File operations are expensive


-- Bugs --
Can't detect if either the client or server dies (need to add keepalives and timeouts)
The return value of every syscall isn't checked for errors

Any bug reports should be directed to bbrazil@netsoc.tcd.ie


-- Todo --
UDP support
IPv6
Better command line parsing
Test all code paths


-- Redistribution --
This code is released under version 2 of the GNU General Public License

-- History --
22 June 2005
	- Released version 0.1.1
	- All main-loop socket operations now non-blocking
	- Added additional error checking
	- Added dynamic delay/throttling
21 June 2005 
	- Released version 0.1
	- Wrote the README
	- Reduced the number of file operations run per inner-loop
	- Fixed nasty bug where windows was opening files in text mode
20 June 2005 
	- Verified working on Debian Sarge 
	- Working on Windows 98SE (complied with mingw32)
	- Working on remote filesystem: SMB (CIFS)
	- Now terminates connection correctly
16 June 2005 
	- Initial coding. 
	- Working on Solaris 8,9 and Linux(Mandrake)
	- Working on local filesystems: UFS,ext2
	- Working on remote filestsyems: NFS