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