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