# @(#) Banners.Makefile 1.3 97/02/12 02:13:18 # # Install this file as the Makefile in your directory with banner files. # It will convert a prototype banner text to a form that is suitable for # the ftp, telnet, rlogin, and other services. # # You'll have to comment out the IN definition below if your daemon # names don't start with `in.'. # # The prototype text should live in the banners directory, as a file with # the name "prototype". In the prototype text you can use % # sequences as described in the hosts_access.5 manual page (`nroff -man' # format). The sequences will be expanded while the banner message is # sent to the client. For example: # # Hello %u@%h, what brings you here? # # Expands to: Hello username@hostname, what brings you here? Note: the # use of %u forces a client username lookup. # # In order to use banners, build the tcp wrapper with -DPROCESS_OPTIONS # and use hosts.allow rules like this: # # daemons ... : clients ... : banners /some/directory ... # # Of course, nothing prevents you from using multiple banner directories. # For example, one banner directory for clients that are granted service, # one banner directory for rejected clients, and one banner directory for # clients with a hostname problem. # SHELL = /bin/sh IN = in. BANNERS = $(IN)telnetd $(IN)ftpd $(IN)rlogind # $(IN)fingerd $(IN)rshd all: $(BANNERS) $(IN)telnetd: prototype cp prototype $@ chmod 644 $@ $(IN)ftpd: prototype sed 's/^/220-/' prototype > $@ chmod 644 $@ $(IN)rlogind: prototype nul ( ./nul ; cat prototype ) > $@ chmod 644 $@ # Other services: banners may interfere with normal operation # so they should probably be used only when refusing service. # In particular, banners don't work with standard rsh daemons. # You would have to use an rshd that has built-in tcp wrapper # support, for example the rshd that is part of the logdaemon # utilities. $(IN)fingerd: prototype cp prototype $@ chmod 644 $@ $(IN)rshd: prototype nul ( ./nul ; cat prototype ) > $@ chmod 644 $@ # In case no /dev/zero available, let's hope they have at least # a C compiler of some sort. nul: echo 'main() { write(1,"",1); return(0); }' >nul.c $(CC) $(CFLAGS) -s -o nul nul.c rm -f nul.c