Makefile.yp revision 1.5
11.5Slukem#	$NetBSD: Makefile.yp,v 1.5 1997/10/15 03:02:07 lukem Exp $
21.1Sthorpej#
31.1Sthorpej# This is the YP Makefile, used to create and push YP maps.
41.1Sthorpej#
51.1Sthorpej
61.5Slukem# Invoke with NOPUSH != "" to prevent the maps from being yppushed upon rebuild
71.5Slukem#
81.5SlukemNOPUSH?=	""
91.5Slukem
101.5Slukem# Password maps in standard YP are insecure, because the pw_passwd
111.5Slukem# field is accessable by any user. FreeBSD, NetBSD and OpenBSD have
121.5Slukem# a common solution: a secure map (generated with makedbm -s) can
131.5Slukem# only be accessed by a client bound to a privileged port.
141.5Slukem#
151.5Slukem# Comment out the following if you don't need compatibility with
161.5Slukem# sites that don't support this feature
171.5SlukemINSECURE?=	yes
181.5Slukem
191.5Slukem
201.5SlukemYPDBDIR=	/var/yp
211.5SlukemDIR=		/etc
221.5SlukemAMDDIR=		/etc/amd
231.5SlukemDOMAIN=		"`/usr/bin/basename ${.CURDIR}`"
241.5Slukem
251.5SlukemAWK=		/usr/bin/awk
261.5SlukemCAT=		/bin/cat
271.5SlukemCP=		/bin/cp
281.5SlukemCUT=		/usr/bin/cut
291.5SlukemECHO=		/bin/echo
301.5SlukemMAKEDBM=	/usr/sbin/makedbm
311.5SlukemMAKEDBM_S=	${MAKEDBM} -s
321.5SlukemMKALIAS=	/usr/sbin/mkalias
331.5SlukemMKNETID=	/usr/sbin/mknetid
341.5SlukemREVNETGROUP=	/usr/sbin/revnetgroup
351.5SlukemRM=		/bin/rm
361.5SlukemSED=		/usr/bin/sed
371.5SlukemSENDMAIL=	/usr/sbin/sendmail
381.5SlukemSTDETHERS=	/usr/sbin/stdethers
391.5SlukemSTDHOSTS=	/usr/sbin/stdhosts
401.5SlukemTOUCH=		/usr/bin/touch
411.5SlukemYPPUSH=		/usr/sbin/yppush
421.5Slukem
431.1Sthorpej
441.2Sthorpej# We have a rule for ypservers, but we don't build it by default, since
451.2Sthorpej# it seldom changes (only when slaves are added/deleted).
461.2Sthorpej
471.5Slukemall: passwd aliases amd.home ethers group hosts netgroup networks rpc services protocols netid
481.5Slukem
491.5Slukem
501.5Slukempasswd.time: ${DIR}/master.passwd
511.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
521.5Slukem		umask 077 ; \
531.5Slukem		if [ "${INSECURE}" != "yes" ]; then \
541.5Slukem			${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 | \
551.5Slukem			${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
561.5Slukem			{ print $$1, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\
571.5Slukem			${MAKEDBM} - passwd.byname; \
581.5Slukem			${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 |\
591.5Slukem			${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
601.5Slukem			{ print $$3, $$1":*:"$$3":"$$4":"$$5":"$$6":"$$7 }' -|\
611.5Slukem			${MAKEDBM} - passwd.byuid; \
621.5Slukem		else \
631.5Slukem			${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 | \
641.5Slukem			${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
651.5Slukem			{ print $$1, $$0 }' - | ${MAKEDBM} - passwd.byname; \
661.5Slukem			${CAT} ${.ALLSRC} | ${CUT} -d: -f1-4,8-10 |\
671.5Slukem			${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
681.5Slukem			{ print $$3, $$0 }' - | ${MAKEDBM} - passwd.byuid; \
691.5Slukem		fi; \
701.5Slukem		${CAT} ${.ALLSRC} | \
711.5Slukem		${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
721.5Slukem		{ print $$1, $$0 }' - | ${MAKEDBM_S} - master.passwd.byname; \
731.5Slukem		${CAT} ${.ALLSRC} | \
741.5Slukem		${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
751.5Slukem		{ print $$3, $$0 }' - | ${MAKEDBM_S} - master.passwd.byuid; \
761.5Slukem		${TOUCH} ${.TARGET}; \
771.5Slukem		${ECHO} "updated passwd"; \
781.5Slukem		if [ ! ${NOPUSH} ]; then \
791.5Slukem			${YPPUSH} -d ${DOMAIN} passwd.byname; \
801.5Slukem			${YPPUSH} -d ${DOMAIN} passwd.byuid; \
811.5Slukem			${YPPUSH} -d ${DOMAIN} master.passwd.byname; \
821.5Slukem			${YPPUSH} -d ${DOMAIN} master.passwd.byuid; \
831.5Slukem			${ECHO} "pushed passwd"; \
841.5Slukem		else \
851.5Slukem			: ; \
861.5Slukem		fi \
871.5Slukem	else \
881.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
891.5Slukem	fi
901.5Slukem
911.5Slukem
921.5Slukemaliases.time: ${DIR}/aliases
931.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
941.5Slukem		${CP} -p ${.ALLSRC} ${DOMAIN}-aliases; \
951.5Slukem		${SENDMAIL} -bi -oA${PWD}/${DOMAIN}-aliases; \
961.5Slukem		${MAKEDBM} -u ${DOMAIN}-aliases | ${MAKEDBM} - mail.aliases; \
971.5Slukem		${MKALIAS} mail.aliases mail.byaddr; \
981.5Slukem		${TOUCH} ${.TARGET}; \
991.5Slukem		${RM} ${DOMAIN}-aliases.db ${DOMAIN}-aliases; \
1001.5Slukem		${ECHO} "updated aliases"; \
1011.5Slukem		if [ ! ${NOPUSH} ]; then \
1021.5Slukem			${YPPUSH} -d ${DOMAIN} mail.aliases; \
1031.5Slukem			${YPPUSH} -d ${DOMAIN} mail.byaddr; \
1041.5Slukem			${ECHO} "pushed aliases"; \
1051.5Slukem		else \
1061.5Slukem			: ; \
1071.5Slukem		fi \
1081.5Slukem	else \
1091.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
1101.5Slukem	fi
1111.5Slukem
1121.1Sthorpej
1131.5Slukemamd.home.time: ${AMDDIR}/amd.home
1141.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
1151.5Slukem		${SED} -e "s/#.*$$//" -e "/^$$/d" ${.ALLSRC} | \
1161.5Slukem		${AWK} '{ \
1171.5Slukem			    for (i = 1; i <= NF; i++) \
1181.5Slukem				if (i == NF) { \
1191.5Slukem				    if (substr($$i, length($$i), 1) == "\\") { \
1201.5Slukem					printf("%s", \
1211.5Slukem					    substr($$i, 1, length($$i) - 1)); \
1221.5Slukem				    } \
1231.5Slukem				    else \
1241.5Slukem					printf("%s\n", $$i); \
1251.5Slukem				} \
1261.5Slukem				else \
1271.5Slukem				    printf("%s ", $$i); \
1281.5Slukem			}' | \
1291.5Slukem		${MAKEDBM} - amd.home; \
1301.5Slukem		${TOUCH} ${.TARGET}; \
1311.5Slukem		${ECHO} "updated amd.home"; \
1321.5Slukem		if [ ! ${NOPUSH} ]; then \
1331.5Slukem			${YPPUSH} -d ${DOMAIN} amd.home; \
1341.5Slukem			${ECHO} "pushed amd.home"; \
1351.1Sthorpej		else \
1361.1Sthorpej			: ; \
1371.1Sthorpej		fi \
1381.1Sthorpej	else \
1391.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
1401.1Sthorpej	fi
1411.1Sthorpej
1421.1Sthorpej
1431.5Slukemethers.time: ${DIR}/ethers
1441.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
1451.5Slukem		${STDETHERS} ${.ALLSRC} | ${SED} -e s/#.*$$// | \
1461.5Slukem		${AWK} 'BEGIN { FS="\t"; OFS="\t"; } { print $$1, $$0 }' | \
1471.5Slukem		${MAKEDBM} - ethers.byaddr; \
1481.5Slukem		${STDETHERS} ${.ALLSRC} | \
1491.5Slukem		${AWK} 'BEGIN { FS="\t"; OFS="\t"; } { print $$2, $$0 }' | \
1501.5Slukem		${MAKEDBM} - ethers.byname; \
1511.5Slukem		${TOUCH} ${.TARGET}; \
1521.5Slukem		${ECHO} "updated ethers"; \
1531.5Slukem		if [ ! ${NOPUSH} ]; then \
1541.5Slukem			${YPPUSH} -d ${DOMAIN} ethers.byaddr; \
1551.5Slukem			${YPPUSH} -d ${DOMAIN} ethers.byname; \
1561.5Slukem			${ECHO} "pushed ethers"; \
1571.1Sthorpej		else \
1581.1Sthorpej			: ; \
1591.1Sthorpej		fi \
1601.1Sthorpej	else \
1611.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
1621.1Sthorpej	fi
1631.1Sthorpej
1641.5Slukem
1651.5Slukemgroup.time: ${DIR}/group
1661.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
1671.5Slukem		${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
1681.5Slukem		    { print $$1, $$0 }' ${.ALLSRC} | \
1691.5Slukem		${MAKEDBM} - group.byname; \
1701.5Slukem		${AWK} 'BEGIN { FS=":"; OFS="\t"; } /^[a-zA-Z0-9_]/ \
1711.5Slukem		    { print $$3, $$0 }' ${.ALLSRC} | \
1721.5Slukem		${MAKEDBM} - group.bygid; \
1731.5Slukem		${TOUCH} ${.TARGET}; \
1741.5Slukem		${ECHO} "updated group"; \
1751.5Slukem		if [ ! ${NOPUSH} ]; then \
1761.5Slukem			${YPPUSH} -d ${DOMAIN} group.byname; \
1771.5Slukem			${YPPUSH} -d ${DOMAIN} group.bygid; \
1781.5Slukem			${ECHO} "pushed group"; \
1791.1Sthorpej		else \
1801.1Sthorpej			: ; \
1811.1Sthorpej		fi \
1821.1Sthorpej	else \
1831.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
1841.1Sthorpej	fi
1851.1Sthorpej
1861.5Slukem
1871.5Slukemhosts.time: ${DIR}/hosts
1881.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
1891.5Slukem		${STDHOSTS} ${.ALLSRC} | ${SED} -e s/#.*$$// | \
1901.5Slukem		${AWK} '{for (i = 2; i <= NF; i++) print $$i, $$0 }' | \
1911.5Slukem		${MAKEDBM} - hosts.byname; \
1921.5Slukem		${STDHOSTS} ${.ALLSRC} | \
1931.5Slukem		${AWK} 'BEGIN { OFS="\t"; } { print $$1, $$0 }' | \
1941.5Slukem		${MAKEDBM} - hosts.byaddr; \
1951.5Slukem		${TOUCH} ${.TARGET}; \
1961.5Slukem		${ECHO} "updated hosts"; \
1971.5Slukem		if [ ! ${NOPUSH} ]; then \
1981.5Slukem			${YPPUSH} -d ${DOMAIN} hosts.byname; \
1991.5Slukem			${YPPUSH} -d ${DOMAIN} hosts.byaddr; \
2001.5Slukem			${ECHO} "pushed hosts"; \
2011.1Sthorpej		else \
2021.1Sthorpej			: ; \
2031.1Sthorpej		fi \
2041.1Sthorpej	else \
2051.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
2061.1Sthorpej	fi
2071.1Sthorpej
2081.5Slukem
2091.5Slukemnetgroup.time: ${DIR}/netgroup
2101.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
2111.5Slukem		${CAT} ${.ALLSRC} | ${MAKEDBM} - netgroup; \
2121.5Slukem		${CAT} ${.ALLSRC} | ${REVNETGROUP} -u -f - | \
2131.5Slukem		${MAKEDBM} - netgroup.byuser; \
2141.5Slukem		${CAT} ${.ALLSRC} | ${REVNETGROUP} -h -f - | \
2151.5Slukem		${MAKEDBM} - netgroup.byhost; \
2161.5Slukem		${TOUCH} ${.TARGET}; \
2171.5Slukem		${ECHO} "updated netgroup"; \
2181.5Slukem		if [ ! ${NOPUSH} ]; then \
2191.5Slukem			${YPPUSH} -d ${DOMAIN} netgroup; \
2201.5Slukem			${YPPUSH} -d ${DOMAIN} netgroup.byuser; \
2211.5Slukem			${YPPUSH} -d ${DOMAIN} netgroup.byhost; \
2221.5Slukem			${ECHO} "pushed netgroup"; \
2231.1Sthorpej		else \
2241.1Sthorpej			: ; \
2251.1Sthorpej		fi \
2261.1Sthorpej	else \
2271.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
2281.1Sthorpej	fi
2291.1Sthorpej
2301.5Slukem
2311.5Slukemnetworks.time: ${DIR}/networks
2321.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
2331.5Slukem		${SED} -e "/^#/d" -e s/#.*$$// ${.ALLSRC} | \
2341.5Slukem		${AWK} '{print $$1, $$0; \
2351.5Slukem		    for (i = 3;i <= NF;i++) print $$i,$$0}' | \
2361.5Slukem		${MAKEDBM} - networks.byname; \
2371.5Slukem		${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \
2381.5Slukem		    ${.ALLSRC} | \
2391.5Slukem		${MAKEDBM} - networks.byaddr; \
2401.5Slukem		${TOUCH} ${.TARGET}; \
2411.5Slukem		${ECHO} "updated networks"; \
2421.5Slukem		if [ ! ${NOPUSH} ]; then \
2431.5Slukem			${YPPUSH} -d ${DOMAIN} networks.byname; \
2441.5Slukem			${YPPUSH} -d ${DOMAIN} networks.byaddr; \
2451.5Slukem			${ECHO} "pushed networks"; \
2461.1Sthorpej		else \
2471.1Sthorpej			: ; \
2481.1Sthorpej		fi \
2491.1Sthorpej	else \
2501.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
2511.1Sthorpej	fi
2521.1Sthorpej
2531.1Sthorpej
2541.5Slukemprotocols.time: ${DIR}/protocols
2551.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
2561.5Slukem		${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \
2571.5Slukem		    ${.ALLSRC} | \
2581.5Slukem		${MAKEDBM} - protocols.bynumber; \
2591.5Slukem		${SED} -e "/^#/d" -e s/#.*$$// ${.ALLSRC} | \
2601.5Slukem		${AWK} '{print $$1, $$0; \
2611.5Slukem		    for (i = 3;i <= NF;i++) print $$i,$$0}' | \
2621.5Slukem		${MAKEDBM} - protocols.byname; \
2631.5Slukem		${TOUCH} ${.TARGET}; \
2641.5Slukem		${ECHO} "updated protocols"; \
2651.5Slukem		if [ ! ${NOPUSH} ]; then \
2661.5Slukem			${YPPUSH} -d ${DOMAIN} protocols.bynumber; \
2671.5Slukem			${YPPUSH} -d ${DOMAIN} protocols.byname; \
2681.5Slukem			${ECHO} "pushed protocols"; \
2691.1Sthorpej		else \
2701.1Sthorpej			: ; \
2711.1Sthorpej		fi \
2721.1Sthorpej	else \
2731.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
2741.1Sthorpej	fi
2751.1Sthorpej
2761.1Sthorpej
2771.5Slukemrpc.time: ${DIR}/rpc
2781.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
2791.5Slukem		${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \
2801.5Slukem		    ${.ALLSRC} | \
2811.5Slukem		${MAKEDBM} - rpc.bynumber; \
2821.5Slukem		${TOUCH} ${.TARGET}; \
2831.5Slukem		${ECHO} "updated rpc"; \
2841.5Slukem		if [ ! ${NOPUSH} ]; then \
2851.5Slukem			${YPPUSH} -d ${DOMAIN} rpc.bynumber; \
2861.5Slukem			${ECHO} "pushed rpc"; \
2871.1Sthorpej		else \
2881.1Sthorpej			: ; \
2891.1Sthorpej		fi \
2901.1Sthorpej	else \
2911.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
2921.1Sthorpej	fi
2931.1Sthorpej
2941.1Sthorpej
2951.5Slukemservices.time: ${DIR}/services
2961.5Slukem	-@if [ -f ${.ALLSRC} ]; then \
2971.5Slukem		${AWK} 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' \
2981.5Slukem		    ${.ALLSRC} | \
2991.5Slukem		${MAKEDBM} - services.byname; \
3001.5Slukem		${TOUCH} ${.TARGET}; \
3011.5Slukem		${ECHO} "updated services"; \
3021.5Slukem		if [ ! ${NOPUSH} ]; then \
3031.5Slukem			${YPPUSH} -d ${DOMAIN} services.byname; \
3041.5Slukem			${ECHO} "pushed services"; \
3051.5Slukem		else \
3061.5Slukem			: ; \
3071.5Slukem		fi \
3081.5Slukem	else \
3091.5Slukem		${ECHO} "couldn't find ${.ALLSRC}"; \
3101.5Slukem	fi
3111.5Slukem
3121.5Slukem
3131.5Slukemnetid.time: ${DIR}/passwd ${DIR}/group ${DIR}/hosts ${DIR}/netid
3141.5Slukem	-@${MKNETID} -q -d ${DOMAIN} -p ${DIR}/passwd -g ${DIR}/group -h \
3151.5Slukem	      ${DIR}/hosts -m ${DIR}/netid | \
3161.5Slukem	  ${MAKEDBM} - netid.byname; \
3171.5Slukem	  ${TOUCH} ${.TARGET}; \
3181.5Slukem	  ${ECHO} "updated netid"; \
3191.5Slukem	  if [ ! ${NOPUSH} ]; then \
3201.5Slukem		${YPPUSH} -d ${DOMAIN} netid.byname; \
3211.5Slukem		${ECHO} "pushed netid"; \
3221.1Sthorpej	  else \
3231.1Sthorpej		: ; \
3241.1Sthorpej	  fi
3251.1Sthorpej
3261.5Slukem
3271.3Sthorpejypservers:
3281.5Slukem	-@${TOUCH} ypservers; \
3291.5Slukem	${MAKEDBM} ypservers ypservers; \
3301.5Slukem	${ECHO} "updated ypservers"; \
3311.5Slukem	if [ ! ${NOPUSH} ]; then \
3321.5Slukem		${YPPUSH} -d ${DOMAIN} ypservers; \
3331.5Slukem		${ECHO} "pushed ypservers"; \
3341.2Sthorpej	else \
3351.2Sthorpej		: ; \
3361.2Sthorpej	fi
3371.1Sthorpej
3381.5Slukem
3391.1Sthorpejpasswd: passwd.time
3401.1Sthorpejgroup: group.time
3411.1Sthorpejhosts: hosts.time
3421.5Slukemaliases: aliases.time
3431.5Slukemamd.home: amd.home.time
3441.1Sthorpejethers: ethers.time
3451.5Slukemnetgroup: netgroup.time
3461.1Sthorpejnetworks: networks.time
3471.1Sthorpejrpc: rpc.time
3481.1Sthorpejservices: services.time
3491.1Sthorpejprotocols: protocols.time
3501.1Sthorpejnetid: netid.time
3511.5Slukem
3521.5Slukem${DIR}/passwd:
3531.5Slukem${DIR}/group:
3541.5Slukem${DIR}/hosts:
3551.5Slukem${DIR}/aliases:
3561.5Slukem${AMDDIR}/amd.home:
3571.5Slukem${DIR}/ethers:
3581.5Slukem${DIR}/master.passwd:
3591.5Slukem${DIR}/netgroup:
3601.5Slukem${DIR}/networks:
3611.5Slukem${DIR}/rpc:
3621.5Slukem${DIR}/services:
3631.5Slukem${DIR}/protocols:
3641.5Slukem${DIR}/netid:
365