Introduction
Look and feel
Features
Copyright and Lisencing
Download
Initially I wrote the NFS daemon in a weekend. But when I started to test it with Free-BSD, I found that UNIX require consistend inode numbers for the files. So I had to implement a 'light' version of War FTP Daemon's Virtual File System in order to make it reliable with UNIX clients. The development time increased from 3 days to nearly 2 weeks
One major concern for me wat that the server would do ASCII text mapping between the UNIX machines and NT. Emacs don't like CRLF in source code files. Version 1.0 of the server support ASCII text mapping, transparent to the client. File size and file offsets are automatically adjusted by the server to reflect the size after mapping.
The current War NFS Daemon is not designed for high-volume systems. It does not handle simultainous access to a file from several clients very good, and it only use two threads (one for the server, and one for the GUI console). It also supports UDP clients only. None of these limitations should be of any significance for the intended use. The next major version will handle true high-performance systems, and address all these issues, as well as version 3 of the NFS protocol.
NFS is tightly connected with UNIX. Since version 2 of the protocol don't have any secure authentication implemented, I have choosen to use the clients IP address for authentication. The userid and groupid of the client is ignored by the server. (It's too simple to 'fake' a privileged user and bypass the UNIX authentication specified by the NFS/RPC protocol). The next major version will address this issue as well.
Since NFS is a stateless server, I have used a LRU cache for physically open files. The server will never open more than 20 file handles, and it will close the file handles after 2 seconds of inactivity. This is of course done transparent to the clients, who might believe that a file is open for hours or days.
The server has a built-in port-mapper. This is able to handle any RPC servers that use a portmapper, in addition to the NFS service. If you have several RPC based servers, it might be a good idea to use an external portmapper to avoid problems when the NFS server is stopped. The Portmapper service will not start if another portmapper is running on the machine. The built-in portmapper support all UDP calls but broadcastl. TCP is not supported. This will normally not be a limitation. If you have problems with this, use an external portmapper, or give me a word. TCP and broadcast will be implemented in the future.
The server can run as a native NT service and as a normal Windows program. The Windows console gives a list of the current connections and the latest messages from the log. The only command is the 'quit' button.
The configuration is done with the file 'exports.conf'. This must reside in the same directory as the server.
The server keeps a cache of files that have been accessed. thsi cache is stored in the file InodeCache.dat. If this file exist, the configuration file is NOT read. This is to ensure that the inode numbers and mount points are consistent between sessions. If you need to change the configuration, you must unmount all the clients, delete 'InodeCache.dat', change the exports.conf file, and then restart the server (not the machine).
# exports.conf
# Configuration file for the War NFS Daemon version 1
# Copyright 1997 by Jarle Aase
# http://www.jgaa.com
#
# NB: This file is *not* compatible with the
# UNIX exports.conf file!!
# Declare text file mapping
SETASCII *.txt *.c *.cc *.cpp *.h *Makefile*
SETASCII *.log *.ini *.conf *.htm *.html
# Mount file systems
export g:\src\msvc4 as /devel
domain 193.91.161.23 read mapascii
domain 193.91.161.24 read write mapascii
export h:\tmp as /tmp
domain * read mapascii
As you can see, the config file is pretty easy to understand.
The program contains modules Copyright (c) 1987, 1990 by Sun Microsystems, Inc.
The program might be freely used commercially and non-commercially
under the following restrictions:
The program contains modules Copyright (C) 1991, 1992 Free Software Foundation, Inc.
This page was generated by HTMgen32 0.5b
