xref: /openbsd/usr.sbin/ypserv/ypinit/Makefile.yp (revision 404b540a)
1#	$OpenBSD: Makefile.yp,v 1.14 2009/04/12 21:03:28 schwarze Exp $
2
3# ----------------------------------------------------------------------
4# User-configurable settings; see Makefile.yp(8) for details.
5# ----------------------------------------------------------------------
6
7# Select the source directories to build YP maps from.
8DIR=/etc
9AMDDIR=$(DIR)/amd
10
11# Set this to disable automatic distribution of YP maps.
12NOPUSH=""
13
14# Unset this to exclude encrypted passwords from the passwd maps.
15UNSECURE="True"
16
17# Only include UIDs and GIDs inside certain ranges into the maps.
18MINUID=1000
19MAXUID=32765
20MINGID=1000
21MAXGID=32765
22
23# Set this to -b to have ypserv ask DNS for unknown hosts.
24USEDNS=
25
26all: passwd group hosts ethers networks rpc services protocols netid netgroup amd.home aliases
27
28# ----------------------------------------------------------------------
29# End of user-configurable settings; you may also add new targets, though.
30# ----------------------------------------------------------------------
31
32# The following is also hardcoded into ypserv(8) and other programs.
33YPDBDIR=/var/yp
34
35AWK=/usr/bin/awk
36CAT=/bin/cat
37CP=/bin/cp
38CUT=/usr/bin/cut
39ECHO=/bin/echo
40MAKEDBM=/usr/sbin/makedbm
41MAKEDBM-S=$(MAKEDBM) -s
42MKALIAS=/usr/sbin/mkalias
43MKNETID=/usr/sbin/mknetid
44REVNETGROUP=/usr/sbin/revnetgroup
45RM=/bin/rm
46SED=/usr/bin/sed
47SENDMAIL=/usr/sbin/sendmail
48STDETHERS=/usr/sbin/stdethers
49STDHOSTS=/usr/sbin/stdhosts
50TOUCH=/usr/bin/touch
51YPPUSH=/usr/sbin/yppush
52
53DOMAIN="`/usr/bin/basename ${.CURDIR}`"
54
55passwd.time: $(DIR)/master.passwd
56	-@if [ -f $(>) ]; then \
57		if [ ! $(UNSECURE) ]; then \
58			$(CAT) $(>) | $(CUT) -d: -f1-4,8-10 | \
59			$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
60			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
61			{ if (minuid <= $$3 && maxuid >= $$3) \
62			print $$1, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\
63			$(MAKEDBM) - passwd.byname; \
64			$(CAT) $(>) | $(CUT) -d: -f1-4,8-10 |\
65			$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
66			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
67			{ if (minuid <= $$3 && maxuid >= $$3) \
68			print $$3, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\
69			$(MAKEDBM) - passwd.byuid; \
70		else \
71			$(CAT) $(>) | $(CUT) -d: -f1-4,8-10 | \
72			$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
73			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
74			{ if (minuid <= $$3 && maxuid >= $$3) \
75			print $$1, $$0 }' - | \
76			$(MAKEDBM) - passwd.byname; \
77			$(CAT) $(>) | $(CUT) -d: -f1-4,8-10 |\
78			$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
79			'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
80			{ if (minuid <= $$3 && maxuid >= $$3) \
81			print $$3, $$0 }' - | \
82			$(MAKEDBM) - passwd.byuid; \
83		fi; \
84		$(CAT) $(>) | \
85		$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
86		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
87		{ if (minuid <= $$3 && maxuid >= $$3) \
88		print $$1, $$0 }' - | $(MAKEDBM-S) - master.passwd.byname; \
89		$(CAT) $(>) | \
90		$(AWK) -v minuid=${MINUID} -v maxuid=${MAXUID} \
91		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
92		{ if (minuid <= $$3 && maxuid >= $$3) \
93		print $$3, $$0 }' - | $(MAKEDBM-S) - master.passwd.byuid; \
94		$(TOUCH) $(@); \
95		$(ECHO) "updated passwd"; \
96		if [ ! $(NOPUSH) ]; then \
97			$(YPPUSH) -d $(DOMAIN) passwd.byname; \
98			$(YPPUSH) -d $(DOMAIN) passwd.byuid; \
99			$(YPPUSH) -d $(DOMAIN) master.passwd.byname; \
100			$(YPPUSH) -d $(DOMAIN) master.passwd.byuid; \
101			$(ECHO) "pushed passwd"; \
102		else \
103			: ; \
104		fi \
105	else \
106		$(ECHO) "couldn't find $(>)"; \
107	fi
108
109
110group.time: $(DIR)/group
111	-@if [ -f $(>) ]; then \
112		$(AWK) -v mingid=${MINGID} -v maxgid=${MAXGID} \
113		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
114		{ if (mingid <= $$3 && maxgid >= $$3) print $$1, $$0 }' $(>) | \
115		$(MAKEDBM) - group.byname; \
116		$(AWK) -v mingid=${MINGID} -v maxgid=${MAXGID} \
117		'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
118		{ if (mingid <= $$3 && maxgid >= $$3) print $$3, $$0 }' $(>) | \
119		$(MAKEDBM) - group.bygid; \
120		$(TOUCH) $(@); \
121		$(ECHO) "updated group"; \
122		if [ ! $(NOPUSH) ]; then \
123			$(YPPUSH) -d $(DOMAIN) group.byname; \
124			$(YPPUSH) -d $(DOMAIN) group.bygid; \
125			$(ECHO) "pushed group"; \
126		else \
127			: ; \
128		fi \
129	else \
130		$(ECHO) "couldn't find $(>)"; \
131	fi
132
133hosts.time: $(DIR)/hosts
134	-@if [ -f $(DIR)/hosts ]; then \
135		$(STDHOSTS) $(>) | $(SED) -e s/#.*$$// | \
136		$(AWK) '{for (i = 2; i <= NF; i++) print $$i, $$0 }' | \
137		$(MAKEDBM) $(USEDNS) - hosts.byname; \
138		$(STDHOSTS) $(>) | \
139		$(AWK) 'BEGIN { OFS="\t"; } { print $$1, $$0 }' | \
140		$(MAKEDBM) $(USEDNS) - hosts.byaddr; \
141		$(TOUCH) $(@); \
142		$(ECHO) "updated hosts"; \
143		if [ ! $(NOPUSH) ]; then \
144			$(YPPUSH) -d $(DOMAIN) hosts.byname; \
145			$(YPPUSH) -d $(DOMAIN) hosts.byaddr; \
146			$(ECHO) "pushed hosts"; \
147		else \
148			: ; \
149		fi \
150	else \
151		$(ECHO) "couldn't find $(>)"; \
152	fi
153
154ethers.time: $(DIR)/ethers
155	-@if [ -f $(DIR)/ethers ]; then \
156		$(STDETHERS) $(>) | $(SED) -e s/#.*$$// | \
157		$(AWK) 'BEGIN { FS="\t"; OFS="\t"; } { print $$1, $$0 }' | \
158		$(MAKEDBM) - ethers.byaddr; \
159		$(STDETHERS) $(>) | \
160		$(AWK) 'BEGIN { FS="\t"; OFS="\t"; } { print $$2, $$0 }' | \
161		$(MAKEDBM) - ethers.byname; \
162		$(TOUCH) $(@); \
163		$(ECHO) "updated ethers"; \
164		if [ ! $(NOPUSH) ]; then \
165			$(YPPUSH) -d $(DOMAIN) ethers.byaddr; \
166			$(YPPUSH) -d $(DOMAIN) ethers.byname; \
167			$(ECHO) "pushed ethers"; \
168		else \
169			: ; \
170		fi \
171	else \
172		$(ECHO) "couldn't find $(>)"; \
173	fi
174
175networks.time: $(DIR)/networks
176	-@if [ -f $(>) ]; then \
177		$(SED) -e "/^#/d" -e s/#.*$$// $(>) | \
178		$(AWK) '{print $$1, $$0; for (i = 3;i <= NF;i++) print $$i,$$0}' | \
179		$(MAKEDBM) - networks.byname; \
180		$(AWK) 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' $(>) | \
181		$(MAKEDBM) - networks.byaddr; \
182		$(TOUCH) $(@); \
183		$(ECHO) "updated networks"; \
184		if [ ! $(NOPUSH) ]; then \
185			$(YPPUSH) -d $(DOMAIN) networks.byname; \
186			$(YPPUSH) -d $(DOMAIN) networks.byaddr; \
187			$(ECHO) "pushed networks"; \
188		else \
189			: ; \
190		fi \
191	else \
192		$(ECHO) "couldn't find $(>)"; \
193	fi
194
195rpc.time: $(DIR)/rpc
196	-@if [ -f $(>) ]; then \
197		$(AWK) 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' $(>) | \
198		$(MAKEDBM) - rpc.bynumber; \
199		$(TOUCH) $(@); \
200		$(ECHO) "updated rpc"; \
201		if [ ! $(NOPUSH) ]; then \
202			$(YPPUSH) -d $(DOMAIN) rpc.bynumber; \
203			$(ECHO) "pushed rpc"; \
204		else \
205			: ; \
206		fi \
207	else \
208		$(ECHO) "couldn't find $(>)"; \
209	fi
210
211
212services.time: $(DIR)/services
213	-@if [ -f $(>) ]; then \
214		$(AWK) 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' $(>) | \
215		$(MAKEDBM) - services.byname; \
216		$(TOUCH) $(@); \
217		$(ECHO) "updated services"; \
218		if [ ! $(NOPUSH) ]; then \
219			$(YPPUSH) -d $(DOMAIN) services.byname; \
220			$(ECHO) "pushed services"; \
221		else \
222			: ; \
223		fi \
224	else \
225		$(ECHO) "couldn't find $(>)"; \
226	fi
227
228
229protocols.time: $(DIR)/protocols
230	-@if [ -f $(>) ]; then \
231		$(AWK) 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' $(>) | \
232		$(MAKEDBM) - protocols.bynumber; \
233		$(SED) -e "/^#/d" -e s/#.*$$// $(>) | \
234		$(AWK) '{print $$1, $$0; for (i = 3;i <= NF;i++) print $$i,$$0}' | \
235		$(MAKEDBM) - protocols.byname; \
236		$(TOUCH) $(@); \
237		$(ECHO) "updated protocols"; \
238		if [ ! $(NOPUSH) ]; then \
239			$(YPPUSH) -d $(DOMAIN) protocols.bynumber; \
240			$(YPPUSH) -d $(DOMAIN) protocols.byname; \
241			$(ECHO) "pushed protocols"; \
242		else \
243			: ; \
244		fi \
245	else \
246		$(ECHO) "couldn't find $(>)"; \
247	fi
248
249
250netid.time: $(DIR)/passwd $(DIR)/group $(DIR)/hosts $(DIR)/netid
251	-@$(MKNETID) -q -d $(DOMAIN) -p $(DIR)/passwd -g $(DIR)/group -h $(DIR)/hosts -m $(DIR)/netid | \
252	  $(MAKEDBM) - netid.byname; \
253	  $(TOUCH) $(@); \
254	  $(ECHO) "updated netid"; \
255	  if [ ! $(NOPUSH) ]; then \
256		$(YPPUSH) -d $(DOMAIN) netid.byname; \
257		$(ECHO) "pushed netid"; \
258	  else \
259		: ; \
260	  fi
261
262
263netgroup.time: $(DIR)/netgroup
264	-@if [ -f $(>) ]; then \
265		$(CAT) $(>) | $(MAKEDBM) - netgroup; \
266		$(CAT) $(>) | $(REVNETGROUP) -u -f - | \
267		$(MAKEDBM) - netgroup.byuser; \
268		$(CAT) $(>) | $(REVNETGROUP) -h -f - | \
269		$(MAKEDBM) - netgroup.byhost; \
270		$(TOUCH) $(@); \
271		$(ECHO) "updated netgroup"; \
272		if [ ! $(NOPUSH) ]; then \
273			$(YPPUSH) -d $(DOMAIN) netgroup; \
274			$(YPPUSH) -d $(DOMAIN) netgroup.byuser; \
275			$(YPPUSH) -d $(DOMAIN) netgroup.byhost; \
276			$(ECHO) "pushed netgroup"; \
277		else \
278			: ; \
279		fi \
280	else \
281		$(ECHO) "couldn't find $(>)"; \
282	fi
283
284
285amd.home.time: $(AMDDIR)/amd.home
286	-@if [ -f $(>) ]; then \
287		$(SED) -e "s/#.*$$//" -e "/^$$/d" $(>) | \
288		$(AWK) '{ \
289			    for (i = 1; i <= NF; i++) \
290				if (i == NF) { \
291				    if (substr($$i, length($$i), 1) == "\\") { \
292					printf("%s", substr($$i, 1, length($$i) - 1)); \
293				    } \
294				    else \
295					printf("%s\n", $$i); \
296				} \
297				else \
298				    printf("%s ", $$i); \
299			}' | \
300		$(MAKEDBM) - amd.home; \
301		$(TOUCH) $(@); \
302		$(ECHO) "updated amd.home"; \
303		if [ ! $(NOPUSH) ]; then \
304			$(YPPUSH) -d $(DOMAIN) amd.home; \
305			$(ECHO) "pushed amd.home"; \
306		else \
307			: ; \
308		fi \
309	else \
310		$(ECHO) "couldn't find $(>)"; \
311	fi
312
313
314aliases.time: $(DIR)/mail/aliases
315	-@if [ -f $(>) ]; then \
316		$(CP) -p $(>) $(DOMAIN)-aliases; \
317		$(SENDMAIL) -bi -oA$(PWD)/$(DOMAIN)-aliases; \
318		$(MAKEDBM) -U $(DOMAIN)-aliases | $(MAKEDBM) - mail.aliases; \
319		$(MKALIAS) mail.aliases mail.byaddr; \
320		$(TOUCH) $(@); \
321		$(RM) $(DOMAIN)-aliases.db $(DOMAIN)-aliases; \
322		$(ECHO) "updated aliases"; \
323		if [ ! $(NOPUSH) ]; then \
324			$(YPPUSH) -d $(DOMAIN) mail.aliases; \
325			$(YPPUSH) -d $(DOMAIN) mail.byaddr; \
326			$(ECHO) "pushed aliases"; \
327		else \
328			: ; \
329		fi \
330	else \
331		$(ECHO) "couldn't find $(>)"; \
332	fi
333
334
335
336passwd: passwd.time
337group: group.time
338hosts: hosts.time
339ethers: ethers.time
340networks: networks.time
341rpc: rpc.time
342services: services.time
343protocols: protocols.time
344netid: netid.time
345netgroup: netgroup.time
346amd.home: amd.home.time
347aliases: aliases.time
348$(DIR)/passwd:
349$(DIR)/group:
350$(DIR)/hosts:
351$(DIR)/ethers:
352$(DIR)/networks:
353$(DIR)/rpc:
354$(DIR)/services:
355$(DIR)/protocols:
356$(DIR)/netid:
357$(DIR)/master.passwd:
358$(DIR)/netgroup:
359$(DIR)/mail/aliases:
360$(AMDDIR)/amd.home:
361