summaryrefslogtreecommitdiffstats
path: root/contrib/opie/Makefile.in
blob: 77e0fc3b1bb1f337300226a78db307cf54179ab4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
##
# Makefile.source and Makefile: Directions for building and installing OPIE.
#
# %%% portions-copyright-cmetz-96
# Portions of this software are Copyright 1996-1999 by Craig Metz, All Rights
# Reserved. The Inner Net License Version 2 applies to these portions of
# the software.
# You should have received a copy of the license with this software. If
# you didn't get a copy, you may request one from <license@inner.net>.
#
# Portions of this software are Copyright 1995 by Randall Atkinson and Dan
# McDonald, All Rights Reserved. All Rights under this copyright are assigned
# to the U.S. Naval Research Laboratory (NRL). The NRL Copyright Notice and   
# License Agreement applies to this software.   
#
#	History:
#
#	Modified by cmetz for OPIE 2.4. Add libmissing to include header path.
#		Renamed realclean to distclean. Added opieauto rules. Made
#		system program install more tolerant of non-existent files.
#	Modified by cmetz for OPIE 2.31. Moved logwtmp.o into libopie.
#	Modified by cmetz for OPIE 2.3. Removed manual config -- it's
#		Autoconf or bust. Replaced user configuration options
#		with options.h. Eliminated unused variables. Pass down
#		$(DEBUG) instead of several other variables to the
#		subdirs. Extended/standard key file support. Added
#		dependencies on subdir files. Made opietest call silent.
#		Removed opie-md4, opie-md5, and key aliases. Removed
#		test target. Make uninstall remove man page aliases.
#	Modified by cmetz for OPIE 2.22. Removed @LIBOBJS@ from MISSING for
#		Autoconf target. Re-ordered LFLAGS because some ld's won't
#		include libmissing properly if it's not at the end.
#       Modified by cmetz for OPIE 2.21. Added getusershell.o to IRIX
#               missing functions.
#       Modified by cmetz for OPIE 2.2. Added NEW_PROMPTS definition.
#               Added MISSING and new flags-passing for libmissing.
#               Quote MISSING or lose. Update TEST target for FTPD
#               variable. Removed line formatting for compile commands
#               since macro expansion confuses the issue anyway.
#               Added targets for opieserv. Added targets for opietest.
#               Removed obselete options.h target. Swapped libmissing
#               and libopie. Updated manual config options. Added more
#               explanatory text. Fixed uses of old SYSV and BSD4_3
#               symbols.
#       Modified at NRL for OPIE 2.2: Renamed LDFLAGS setting to LIBS,
#               renamed LDFLAGS in targets to LFLAGS. Added targets for
#               libopie and libmissing directories. Got rid of PROTOTYPES.
#               Added opiegen. Fixed RANLIB Autoconf target. 
#       Modified at NRL for OPIE 2.11: Fixed fatal mistype of Autoconf.
#	Modified at NRL for OPIE 2.1: Changed targets to reflect source
#		file name changes. Changed explanation and flags for static
#		linking. Changed opieinfo target. Removed WHOAMI. Added
#		Autoconf targets. Changed if conditionals to use test
#               instead of [. Changed SU_DIR to SU to help autoconf.
#               Changed FTPDIR and FTPDNAME to FTPD to help autoconf.
#               Changed HP-UX to HP-UX9 and HP-UX10. Make uninstall
#               target depend on config. HPUX *is* no longer necessary, but
#               something does have to be there. Sub in Autoconf @CC@.
#       Modified at NRL for OPIE 2.04: Re-worded explanation of SU_STAR_CHECK.
#       Modified at NRL for OPIE 2.02: Added SU_STAR_CHECK flag.
#       Modified at NRL for OPIE 2.01: Test target makes opiesu and opielogin 
#               setuid. install target clears that. uninstall target needs to
#               remove the opiekey symlinks. opieinfo target needs to 
#               substitute for $(EXISTS). ifdefs target needs to check for 
#               starting hash. $(LFLAGS) and -o should be at the end of all 
#               link commands to spoon-feed drain bamaged link editors. Added
#               A/UX defaults.
#	Modified heavily at NRL for OPIE 2.0.
#	Written at Bellcore for the S/Key Version 1 software distribution
#		(Makefile).

#============================================================================
# CONFIGURATION PARAMETERS -- CHANGE THESE TO SUIT YOUR MACHINE

# Shell to use for make(1)
# It's usually a good idea to leave this as-is. On some systems, ksh or bash
# may be necessary
SHELL=/bin/sh

# OWNER is the username who should own the OPIE binaries.
# GROUP is the groupname associated with the OPIE binaries.
#
OWNER=0
GROUP=bin

# Where should the OPIE standard and extended databases be stored?
#
# Some sites might want to put this elsewhere. If you want to use an old
# S/Key database, you should create a link from /etc/skeykeys to /etc/opiekeys.
KEY_FILE=/etc/opiekeys

# Are we debugging?
#
# The first line will build a normal version of OPIE. You should use it.
#
# The second is for brave souls porting OPIE to a new system or trying to
# debug it and should definitely NOT be used to build a production copy
# of OPIE. 
#
# The third is the above using nifty heap debugger called "Electric Fence".
DEBUG=-O
#DEBUG=-DDEBUG=1 -g
#DEBUG=-DDEBUG=1 -g -lefence

# These parameters are determined by Autoconf and are probably correct.
# If OPIE doesn't build or work right, try tweaking these.
CC=@CC@
YACC=@YACC@
FTPD=@FTPD@
LIBS=@LIBS@
OPTIONS=@DEFS@
EXISTS=@EXISTS@
MKDIR=@MKDIR@
CHOWN=@CHOWN@
LOCALBIN=@LOCALBIN@
LOCALMAN=@LOCALMAN@
SU=@SU@
ALT_SU=@ALT_SU@
LOGIN=@LOGIN@
LOCK_DIR=@LOCK_DIR@
OPIEAUTO=@OPIEAUTO@

BACKUP=opie.old

CFLAGS=$(DEBUG) -Ilibmissing

LFLAGS=-Llibopie -Llibmissing -lopie $(LIBS) -lmissing -lopie
LDEPS=libmissing/libmissing.a libopie/libopie.a

all:	client server

ifdefs:	
	egrep '^#*if*def' *.c *.h | cut -f2 -d: | sort | uniq

client: libopie/libopie.a libmissing/libmissing.a opietest-passed opiekey opiegen $(OPIEAUTO)

client-install: client
	@echo "Installing OPIE client software..."
	@echo "Copying OPIE key-related files"
	@if test ! -d $(LOCALBIN); then $(MKDIR) $(LOCALBIN); chmod 755 $(LOCALBIN); fi 
	@cp opiekey $(OPIEAUTO) $(LOCALBIN)
	@$(CHOWN) $(OWNER) $(LOCALBIN)/opiekey
	@if test ! -z "$(OPIEAUTO)"; then $(CHOWN) $(OWNER) $(LOCALBIN)/opieauto; fi
	@chgrp $(GROUP) $(LOCALBIN)/opiekey
	@echo "Changing file permissions"
	@chmod 0511 $(LOCALBIN)/opiekey
	@if test ! -z "$(OPIEAUTO)"; then chmod 0511 $(LOCALBIN)/opieauto; fi
	@echo "Symlinking aliases to opiekey"
	@-ln -s $(LOCALBIN)/opiekey $(LOCALBIN)/otp-md4
	@-ln -s $(LOCALBIN)/opiekey $(LOCALBIN)/otp-md5
	@echo "Installing manual pages"
	@-for i in otp-md4 otp-md5; do ln -s opiekey.1 $(LOCALMAN)/man1/$$i.1; done
	@if test ! -d $(LOCALMAN)/man1; then $(MKDIR) $(LOCALMAN)/man1; chmod 755 $(LOCALMAN)/man1; fi; cp opiekey.1 $(LOCALMAN)/man1/opiekey.1; $(CHOWN) $(OWNER) $(LOCALMAN)/man1/opiekey.1; chgrp $(GROUP) $(LOCALMAN)/man1/opiekey.1; chmod 644 $(LOCALMAN)/man1/opiekey.1

server:	libopie/libopie.a libmissing/libmissing.a opietest-passed opielogin opiesu opiepasswd opieinfo opieftpd opieserv

server-install: server
	@echo "Installing OPIE server software..."
	@echo "Copying OPIE user programs"
	@if test ! -d $(LOCALBIN); then $(MKDIR) $(LOCALBIN); chmod 755 $(LOCALBIN); fi 
	@cp opiepasswd opieinfo $(LOCALBIN)
	@echo "Changing ownership"
	@$(CHOWN) $(OWNER) $(LOCALBIN)/opiepasswd $(LOCALBIN)/opieinfo
	@chgrp $(GROUP) $(LOCALBIN)/opiepasswd $(LOCALBIN)/opieinfo
	@echo "Changing file permissions"
	@chmod 0555 $(LOCALBIN)/opieinfo
	@chmod 4511 $(LOCALBIN)/opiepasswd
	@echo "Installing OPIE system programs..."
	@if test ! -z $(LOGIN); \
	then \
		if test ! $(EXISTS) $(LOGIN).$(BACKUP); \
		then \
			echo "Renaming existing $(LOGIN) to $(LOGIN).$(BACKUP)"; \
			mv $(LOGIN) $(LOGIN).$(BACKUP); \
			echo "Clearing permissions on $(LOGIN)"; \
			chmod 0 $(LOGIN).$(BACKUP); \
		fi; \
		echo "Copying OPIE login to $(LOGIN)"; \
		cp opielogin $(LOGIN); \
		echo "Changing ownership of $(LOGIN)"; \
		$(CHOWN) $(OWNER) $(LOGIN); \
		chgrp $(GROUP) $(LOGIN); \
		echo "Changing file permissions of $(LOGIN)"; \
		chmod 4111 $(LOGIN); \
	fi
	@if test ! -z $(SU); \
	then \
		if test ! $(EXISTS) $(SU).$(BACKUP); \
		then \
			echo "Renaming existing $(SU) to $(SU).$(BACKUP)"; \
			mv $(SU) $(SU).$(BACKUP); \
			echo "Clearing permissions on $(SU)"; \
			chmod 0 $(SU).$(BACKUP); \
		fi; \
		echo "Copying OPIE su to $(SU)"; \
		cp opiesu $(SU); \
		echo "Changing ownership of $(SU)"; \
		$(CHOWN) $(OWNER) $(SU); \
		chgrp $(GROUP) $(SU); \
		echo "Changing file permissions of $(SU)"; \
		chmod 4111 $(SU); \
	fi
	@if test ! -z $(ALT_SU); \
	then \
		if test ! $(EXISTS) $(ALT_SU).$(BACKUP); \
		then \
			echo "Renaming existing $(ALT_SU) to $(ALT_SU).$(BACKUP)"; \
			mv $(ALT_SU) $(ALT_SU).$(BACKUP); \
			echo "Clearing permissions on $(ALT_SU)"; \
			chmod 0 $(ALT_SU).$(BACKUP); \
		fi; \
		echo "Copying OPIE su to $(ALT_SU)"; \
		cp opiesu $(ALT_SU); \
		echo "Changing ownership of $(ALT_SU)"; \
		$(CHOWN) $(OWNER) $(ALT_SU); \
		chgrp $(GROUP) $(ALT_SU); \
		echo "Changing file permissions of $(ALT_SU)"; \
		chmod 4111 $(ALT_SU); \
	fi
	@if test ! -z $(FTPD); \
	then \
		if test ! $(EXISTS) $(FTPD).$(BACKUP); \
		then \
			echo "Renaming existing $(FTPD) to $(FTPD).$(BACKUP)"; \
			mv $(FTPD) $(FTPD).$(BACKUP); \
			echo "Clearing permissions on $(FTPD).$(BACKUP)"; \
			chmod 0 $(FTPD).$(BACKUP); \
		fi; \
		echo "Copying OPIE ftp daemon to $(FTPD)"; \
		cp opieftpd $(FTPD); \
		echo "Changing ownership of $(FTPD)"; \
		$(CHOWN) $(OWNER) $(FTPD); \
		chgrp $(GROUP) $(FTPD); \
		echo "Changing file permissions of $(FTPD)"; \
		chmod 0100 $(FTPD); \
	fi
	@echo "Making sure OPIE database file exists";
	@touch $(KEY_FILE)
	@echo "Changing permissions of OPIE database file"
	@chmod 0644 $(KEY_FILE)
	@echo "Changing ownership of OPIE database file"
	@$(CHOWN) $(OWNER) $(KEY_FILE)
	@chgrp $(GROUP) $(KEY_FILE)
	@-if test ! -z "$(LOCK_DIR)"; then echo "Creating OPIE lock directory"; mkdir $(LOCK_DIR); $(CHOWN) 0 $(LOCK_DIR); chgrp 0 $(LOCK_DIR); chmod 0700 $(LOCK_DIR); fi;
	@-if test ! -z "$(ACCESS_FILE)"; then echo "Creating OPIE access file (don't say we didn't warn you)"; touch $(ACCESS_FILE); $(CHOWN) 0 $(ACCESS_FILE); chgrp 0 $(ACCESS_FILE); chmod 0444 $(ACCESS_FILE); fi;
	@echo "Installing manual pages"
	@if test ! -d $(LOCALMAN); then $(MKDIR) $(LOCALMAN); chmod 755 $(LOCALMAN); fi
	@for i in 1 4 5 8; do for j in *.$$i; do if test ! -d $(LOCALMAN)/man$$i; then $(MKDIR) $(LOCALMAN)/man$$i; chmod 755 $(LOCALMAN)/man$$i; fi; cp $$j $(LOCALMAN)/man$$i/$$j; $(CHOWN) $(OWNER) $(LOCALMAN)/man$$i/$$j; chgrp $(GROUP) $(LOCALMAN)/man$$i/$$j; chmod 644 $(LOCALMAN)/man$$i/$$j; done; done
	@echo "REMEMBER to run opiepasswd on your users immediately."

install: client-install server-install

uninstall:
	@echo "Un-installing OPIE..."
	@echo "Removing symlinks"
	@-for i in otp-md4 otp-md5; do rm $(LOCALBIN)/$$i; done
	@echo "Removing OPIE programs"
	@-for i in opiekey opiepasswd opieinfo; do rm $(LOCALBIN)/$$i; done
	@echo "Removing OPIE manual pages"
	@-for i in 1 4 5 8; do for j in *.$$i; do rm $(LOCALMAN)/man$$i/$$j; done; done
	@-rm $(LOCALMAN)/man1/otp-md4.1 $(LOCALMAN)/man1/otp-md5.1
	@echo "Restoring old binaries"
	@-for i in $(SU) $(ALT_SU) $(LOGIN) $(FTPD); do FILE=`basename $$i`; if test ! $(EXISTS) $$i.$(BACKUP); then echo "No $$i.$(BACKUP)! Aborting."; exit 1; else echo "Removing $$FILE"; rm $$i || true; echo "Restoring old $$FILE"; mv $$i.$(BACKUP) $$i; fi; done
	@echo "Resetting permissions"
	@chmod 4111 $(SU) $(LOGIN)
	@chmod 0100 $(FTPD)
	@if test ! -z "$(ALT_SU)"; then chmod 4111 $(ALT_SU); fi
	@echo "OPIE is now un-installed."
	@echo "Please verify by hand that this process worked."

opietest-passed:	opietest
	-./opietest && touch opietest-passed

libopie/libopie.a: libopie/*.c *.h
	(cd libopie ; $(MAKE) libopie.a CFL='$(CFLAGS) -DKEY_FILE=\"$(KEY_FILE)\"')

libmissing/libmissing.a: libmissing/*.c
	(cd libmissing ; $(MAKE) libmissing.a CFL='$(CFLAGS)')

clean:
	-rm -f *.o opiekey opiegen opielogin opiepasswd opiesu opieftpd
	-rm -f opieserv opieinfo opietest opieauto *core* opietest-passed
	-rm -f Makefile.munge configure.munger y.tab.c .gdb*
	(cd libopie ; $(MAKE) clean)
	(cd libmissing ; $(MAKE) clean)

realclean: distclean

distclean: clean
	-rm -f *~ core* "\#*\#" Makefile make.log
	-rm -f config.log config.status config.cache config.h
	(cd libopie ; $(MAKE) distclean)
	(cd libmissing ; $(MAKE) distclean)

opiekey:	opiekey.o $(LDEPS)
		$(CC) $(CFLAGS) opiekey.o $(LFLAGS) -o opiekey

opiegen:	opiegen.o $(LDEPS)
		$(CC) $(CFLAGS) opiegen.o $(LFLAGS) -o opiegen

opieserv:	opieserv.o $(LDEPS)
		$(CC) $(CFLAGS) opieserv.o $(LFLAGS) -o opieserv

opieftpd:	opieftpd.o glob.o popen.o y.tab.o $(LDEPS)
		$(CC) $(CFLAGS) opieftpd.o glob.o popen.o y.tab.o $(LFLAGS) -o opieftpd

opielogin:	opielogin.o permsfile.o $(LDEPS)
		$(CC) $(CFLAGS) opielogin.o permsfile.o $(LFLAGS) -o opielogin

opiepasswd:	opiepasswd.o $(LDEPS)
		$(CC) $(CFLAGS) opiepasswd.o $(LFLAGS) -o opiepasswd

opiesu:		opiesu.o $(LDEPS)
		$(CC) $(CFLAGS) opiesu.o $(LFLAGS) -o opiesu

y.tab.c:	ftpcmd.y
		$(YACC) ftpcmd.y

opieinfo:	opieinfo.o $(LDEPS)
		$(CC) $(CFLAGS) opieinfo.o $(LFLAGS) -o opieinfo

opietest:	opietest.o $(LDEPS)
		$(CC) $(CFLAGS) opietest.o $(LFLAGS) -o opietest

opieauto:	opieauto.o $(LDEPS)
		$(CC) $(CFLAGS) opieauto.o $(LFLAGS) -o opieauto

OpenPOWER on IntegriCloud