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