#!/bin/sh
# script for assisting in setting up anonymous ftp under Solaris 2.1.
# original from ogpaik@caltech.edu (Oon-Gil Paik).
# modifications and additional comments added by scowles@scheffer.stanford.edu.
# sccsid:  @(#)anonftpsetup	1.3	13:40:28	93/05/06
#
# From ogpaik@caltech.edu Wed May  5 22:46 PDT 1993
# Date: Wed, 5 May 93 22:34:08 PDT
# From: ogpaik@caltech.edu (Oon-Gil Paik)
# To: scowles@toolik.stanford.edu
# Subject: Re: Solaris 2.1 anonymous ftp setup
#
# Use the above script to setup anonymous ftp.
# -OonGil
#
# Steps for setting up anonymous ftp under Solaris 2.1.
# 1. read the ftpd(1M) section for background.
# 2. create /etc/shells populated with your favourites.
# 3. establish the ftp user account and home directory.
# 4. run this script as root.
#
# Function of necessary files:
#
# Needed for 'dir' and 'ls' functionality.
# /bin/ls
#
# The following are needed for basic operation.
# /usr/lib/ld.so*
# /usr/lib/libc.so.1
# /usr/lib/libdl.so.1
# /usr/lib/libintl.so.1
# /usr/lib/libw.so.1
# /etc/passwd
# /etc/group
# /etc/netconfig
# /etc/nsswitch.conf
#
# The following are needed for 'ls' to resolve NIS names.
# /usr/lib/nsw*.so
# /usr/lib/libnsl.so.1
# /usr/lib/straddr.so

# OPERATIONS:
# a function for copying files:
filcopy(){
	f=$1
	ff=`basename $f`
	d1=`dirname $f`
	expr "$d1" : "/.*" >/dev/null 2>&1 && fd=`expr "$d1" : "/\(.*\)"`

	# for cleansing:
	/bin/rm -f ${FTP}/${fd}/$ff ] && cp $f ${FTP}/${fd}

	# for quicker operation:
	# [ ! -f ${FTP}/${fd}/$ff ] && cp $f ${FTP}/${fd}

	echo "cp $f ${FTP}/${fd}"
}

# greeting banner.
echo Fixing ${FTP} for SunOS 5.x

# the home ftp directory
FTP="/export"
[ ! -d $FTP ] && { echo "ftp home directory not established." >&2; exit 1; }

# necessary subdirectories.
[ ! -d ${FTP}/bin ] && mkdir ${FTP}/bin
[ ! -d ${FTP}/usr ] && mkdir ${FTP}/usr
[ ! -d ${FTP}/usr/lib ] && mkdir ${FTP}/usr/lib
[ ! -d ${FTP}/etc ] && mkdir ${FTP}/etc

# necessary files.
FILES="
/bin/ls
/usr/lib/ld.so*
/usr/lib/libc.so.1
/usr/lib/libdl.so.1
/usr/lib/libintl.so.1
/usr/lib/libw.so.1
/etc/passwd
/etc/group
/etc/netconfig
/etc/nsswitch.conf
/usr/lib/nsw*.so
/usr/lib/libnsl.so.1
/usr/lib/straddr.so
"

# do the file copy shuffle.
for FILE in $FILES
do
	filcopy $FILE
done

# make device nodes.  ticotsord and udp are necessary for
# 'ls' to resolve NIS names.

prefix="/devices/pseudo/mm:"
for device in zero
do
	[ -c ${FTP}/dev/$device ] && /bin/rm -f ${FTP}/dev/$device
	line=`ls -l ${prefix}${device} | sed -e 's/,//'`
	major=`echo $line | awk '{print $5}'`
	minor=`echo $line | awk '{print $6}'`
	mknod ${FTP}/dev/${device} c ${major} ${minor}
	echo "mknod ${FTP}/dev/${device} c ${major} ${minor}"
done

prefix="/devices/pseudo/clone:"
for device in tcp udp ticotsord
do
	[ -c ${FTP}/dev/$device ] && /bin/rm -f ${FTP}/dev/$device
	line=`ls -l ${prefix}${device} | sed -e 's/,//'`
	major=`echo $line | awk '{print $5}'`
	minor=`echo $line | awk '{print $6}'`
	mknod ${FTP}/dev/${device} c ${major} ${minor}
	echo "mknod ${FTP}/dev/${device} c ${major} ${minor}"
done

# set correct permissions.
chmod 666 ${FTP}/dev/*
chmod 555 ${FTP}/dev
chmod 111 ${FTP}/bin/ls
chmod 555 ${FTP}/bin
chmod 444 ${FTP}/etc/*
chmod 555 ${FTP}/etc
chmod 555 ${FTP}/usr/lib/lib*
chmod 555 ${FTP}/usr/lib
chmod 555 ${FTP}/usr
chown ftp ${FTP}
chmod 555 ${FTP}

exit 0

# OPTIONAL:  This is for the wuarchive ftp server.
[ ! -d etc/msgs ] && mkdir etc/msgs
echo Setting up wuarchive FTP server
cp -r /usr/local/etc/msgs ${FTP}/etc
chmod -R a+r ${FTP}/etc/msgs
chmod a+x ${FTP}/etc/msgs

cp -r /usr/local/etc/msgs /etc
chmod -R a+r /etc/msgs
chmod a+x /etc/msgs

if [ ! -f /usr/sbin/in.ftpd.orig ]; then
	mv /usr/sbin/in.ftpd /usr/sbin/in.ftpd.orig
fi
cp /export/local/etc/ftpd /usr/sbin/in.ftpd
