% filetsf: A File Transfer System Based on lpr/lpd
% for USENIX LISA IX '95 Monterey CA
% John Sellens
% University of Waterloo
% Waterloo, Ontario N2L 3G1 Canada
% jmsellens@uwaterloo.ca
% work +1-519-888-4567 x5446
% FAX  +1-519-746-1595
% home +1-519-579-2046


\documentclass[semhelv]{seminar}
%\documentclass[semhelv,article]{seminar}
\usepackage{fancybox}
%\onlyslides{6-999}

\title{filetsf: A File Transfer System Based on lpr/lpd}
\newcommand{\myname}{John Sellens}
\newcommand{\confname}{USENIX LISA IX}
\newcommand{\confyear}{1995}
\author{\myname \\
Data Processing, University of Waterloo \\
jmsellens@uwaterloo.ca}
\def\today{\confname \\ September 22, 1995}

\slidesmag{5}

%%\twoup


%\centerslidesfalse
\newpagestyle{mystyle}%
  {\thetitle\hfil}%
  {\myname\hfil \confname, \confyear \hfil \thepage}
\pagestyle{mystyle}

%%\slideframe{Oval}
%%\slideframe{oval}

\newcommand{\heading}[1]{%
  \begin{center}
    \large\bf
    \shadowbox{#1}%
  \end{center}
  \vspace{1ex minus 1ex}}
\renewcommand{\heading}[1]{\begin{center}\large\bf #1\end{center}}

\def\printlandscape{\special{landscape}}

% my name
\def\Filetsf{{\bf Filetsf}}
\def\Filetsf{{Filetsf}}
\def\filetsf{{\bf filetsf}}
\def\filetsf{{filetsf}}
\def\lpd{{\bf lpr/lpd}}
\def\lpd{{lpr/lpd}}
% used for program and command names in the text
\newcommand{\prog}[1]{\mbox{\it #1}}
% used for program options in the text
\newcommand{\opt}[1]{\mbox{\it #1}}
% used for man page names
\newcommand{\manpage}[2]{\mbox{{\it #1\/}(#2)}}
% used for pathnames
\newcommand{\path}[1]{\mbox{\tt #1}}
% used for userids
\newcommand{\user}[1]{\mbox{\tt #1}}
% used for hostname and email addresses
\newcommand{\host}[1]{\mbox{\tt #1}}



\begin{document}

{\pagestyle{empty}
\centerslidestrue
\begin{slide}
\maketitle
\addtocounter{slide}{-1}
\end{slide}
}


\begin{slide}
\heading{Quick Introduction -- What?}
\begin{itemize}
\item \Filetsf\ is a file transfer system
    \begin{itemize}
    \item transfer, not replication
    \end{itemize}
\item Transfers files between cooperating machines
\item Allows ad-hoc transfers between arbitrary users, without passwords
or \path{.rhosts}
\item Spooling, queueing, ordering of transfers
\end{itemize}
\end{slide}

\begin{slide}
\heading{Quick Introduction -- Why?}
\begin{itemize}
\item We are a Data Processing department, with multiple, independent
machines of various flavours
    \begin{itemize}
    \item AIX, Solaris, SunOS, Ultrix, OSF/1, VM/CMS, \ldots
    \end{itemize}
\item We need to be able to transfer data between machines
    \begin{itemize}
    \item e.g. course registrations, student records, financial data, \ldots
    \end{itemize}
\item Want to have a ``reasonably'' secure method of file transfer
\item Want to avoid requiring operator intervention
\end{itemize}
\end{slide}

\begin{slide}
\heading{Quick Introduction -- How?}
\begin{itemize}
\item Based on the LPD protocol and \lpd
\item Pairs of machines are configured to agree to allow transfers
    \begin{itemize}
    \item One print queue for each destination, one to receive files
    \end{itemize}
\item \prog{sendfile} command is a wrapper for \prog{lpr}
\item Files are spooled on destination with a print filter
\item \prog{acceptfile} retrieves files from the spool directory
\end{itemize}
\end{slide}

\begin{slide}
\heading{Previous Approaches and History}
\begin{itemize}
\item Magnetic tapes of various flavours
\item FTP to a common account
    \begin{itemize}
    \item Everyone knew the password, which led to inappropriate interactive use
    \item Old trash accumulated since it was hard to control
    \item Hard to identify the sender or recipient of a file
    \item Potential for name clashes
    \end{itemize}
\item Some use of \prog{rdist} and \prog{rcp} -- some of the same problems
\end{itemize}
\end{slide}

\begin{slide}
\heading{Approaches Considered}
\begin{itemize}
\item Software replication is not the same thing as file
transfer
\item FTP, \prog{rdist}, \prog{rcp}, NFS were all unsuitable
\item SMTP mail and MIME weren't appropriate
\item We had planned to construct a full-featured system, with queueing,
spooling, etc. -- we gave up
\item Finally thought of using \lpd
    \begin{itemize}
    \item Queueing, ordering, sender identification, access control
    \item Available everywhere, easy to implement
    \end{itemize}
\end{itemize}
\end{slide}

\begin{slide}
\heading{Implementation Overview}
\begin{itemize}
\item \Filetsf\ has 3 main commands (6 in total)
\item \prog{sendfile} -- submits files one at a time to \prog{lpr}
    \\ -- recipient name and options are encoded in -C class option
    \\ -- print queues are named for the destination machine
\item \prog{tsfif} -- \lpd\ print filter that runs on destination machine
    \\ -- deposits files in \filetsf\ spool directory using naming convention
    to allow multiple versions of files, etc.
\item \prog{acceptfile} -- retrieves or lists files from spool directory
\item More details are available in the paper
\end{itemize}
\end{slide}

\begin{slide}
\heading{Examples of Use}
\begin{itemize}
\item Send a file to the same userid on a different host \\
{\tt \% sendfile -h otherhost file}
\item Send the current version of the \path{hosts} file \\
{\tt \% sendfile -h otherhost -r \verb+\+ \\
\ \ \ \ -u root /etc/hosts}
\item Retrieve \path{file} sent by user foo@bar into \path{/tmp/blort} \\
{\tt \% acceptfile -s foo@bar \verb+\+ \\
\ \ \ \ -r /tmp/blort file}
\end{itemize}
\end{slide}

\begin{slide}
\heading{Security and Reliability}
\begin{itemize}
\item Relies on ``acceptable'' level of security provided by \lpd
\item Systems have mail and FTP, so we ignore
the risk of sending private data
\item Our systems are on private subnets, and our \lpd\ has host-based
access control
\item \prog{acceptfile} is the only privileged program
\item Not intended to provide a high level of security
\item Could build higher security or reliability on
top of the basic tool
\end{itemize}
\end{slide}

\begin{slide}
\heading{Good Things About \Filetsf}
\begin{itemize}
\item Simple to implement, which implies it's a good approach
\item Appears to be a good framework that could be extended if
needed or appropriate
\item i.e. Conforms to the ``UNIX Philosophy''
\item Works on AIX and VM/CMS (sending only so far)
\item Has queueing, spooling and ordering; handles network and/or system
interruptions
\item No esoteric tools needed to build, just \prog{cc} and \prog{sh}
\end{itemize}
\end{slide}

\begin{slide}
\heading{Conclusions and Availability}
\begin{itemize}
\item Seems to be a good, basic tool, that does the job
\item It's better than what we had been doing
\item Available via anonymous FTP from
{\tt math.uwaterloo.ca} as {\tt /pub/filetsf/filetsf.tar.Z}
\item Unsupported software, but fixes and enhancements gratefully
accepted
\end{itemize}
\end{slide}

%\begin{slide}
%\heading{XXXX}
%\begin{itemize}
%\item XXXX
%\end{itemize}
%\end{slide}

\end{document}
