1# $OpenBSD: Makefile.yp,v 1.18 2018/04/26 12:53:09 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 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 178rpc.time: $(DIR)/rpc 179 -@if [ -f $(>) ]; then \ 180 $(AWK) 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' $(>) | \ 181 $(MAKEDBM) - rpc.bynumber; \ 182 $(TOUCH) $(@); \ 183 $(ECHO) "updated rpc"; \ 184 if [ ! $(NOPUSH) ]; then \ 185 $(YPPUSH) -d $(DOMAIN) rpc.bynumber; \ 186 $(ECHO) "pushed rpc"; \ 187 else \ 188 : ; \ 189 fi \ 190 else \ 191 $(ECHO) "couldn't find $(>)"; \ 192 fi 193 194 195services.time: $(DIR)/services 196 -@if [ -f $(>) ]; then \ 197 $(AWK) 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' $(>) | \ 198 $(MAKEDBM) - services.byname; \ 199 $(TOUCH) $(@); \ 200 $(ECHO) "updated services"; \ 201 if [ ! $(NOPUSH) ]; then \ 202 $(YPPUSH) -d $(DOMAIN) services.byname; \ 203 $(ECHO) "pushed services"; \ 204 else \ 205 : ; \ 206 fi \ 207 else \ 208 $(ECHO) "couldn't find $(>)"; \ 209 fi 210 211 212protocols.time: $(DIR)/protocols 213 -@if [ -f $(>) ]; then \ 214 $(AWK) 'BEGIN { OFS="\t"; } $$1 !~ /^#/ { print $$2, $$0 }' $(>) | \ 215 $(MAKEDBM) - protocols.bynumber; \ 216 $(SED) -e "/^#/d" -e s/#.*$$// $(>) | \ 217 $(AWK) '{print $$1, $$0; for (i = 3;i <= NF;i++) print $$i,$$0}' | \ 218 $(MAKEDBM) - protocols.byname; \ 219 $(TOUCH) $(@); \ 220 $(ECHO) "updated protocols"; \ 221 if [ ! $(NOPUSH) ]; then \ 222 $(YPPUSH) -d $(DOMAIN) protocols.bynumber; \ 223 $(YPPUSH) -d $(DOMAIN) protocols.byname; \ 224 $(ECHO) "pushed protocols"; \ 225 else \ 226 : ; \ 227 fi \ 228 else \ 229 $(ECHO) "couldn't find $(>)"; \ 230 fi 231 232 233netid.time: $(DIR)/passwd $(DIR)/master.passwd $(DIR)/group $(DIR)/hosts $(DIR)/netid 234 -@$(MKNETID) -q -d $(DOMAIN) -p $(DIR)/passwd -P $(DIR)/master.passwd \ 235 -g $(DIR)/group -h $(DIR)/hosts -m $(DIR)/netid | \ 236 $(MAKEDBM) - netid.byname; \ 237 $(TOUCH) $(@); \ 238 $(ECHO) "updated netid"; \ 239 if [ ! $(NOPUSH) ]; then \ 240 $(YPPUSH) -d $(DOMAIN) netid.byname; \ 241 $(ECHO) "pushed netid"; \ 242 else \ 243 : ; \ 244 fi 245 246 247netgroup.time: $(DIR)/netgroup 248 -@if [ -f $(>) ]; then \ 249 $(CAT) $(>) | $(MAKEDBM) - netgroup; \ 250 $(CAT) $(>) | $(REVNETGROUP) -u -f - | \ 251 $(MAKEDBM) - netgroup.byuser; \ 252 $(CAT) $(>) | $(REVNETGROUP) -h -f - | \ 253 $(MAKEDBM) - netgroup.byhost; \ 254 $(TOUCH) $(@); \ 255 $(ECHO) "updated netgroup"; \ 256 if [ ! $(NOPUSH) ]; then \ 257 $(YPPUSH) -d $(DOMAIN) netgroup; \ 258 $(YPPUSH) -d $(DOMAIN) netgroup.byuser; \ 259 $(YPPUSH) -d $(DOMAIN) netgroup.byhost; \ 260 $(ECHO) "pushed netgroup"; \ 261 else \ 262 : ; \ 263 fi \ 264 else \ 265 $(ECHO) "couldn't find $(>)"; \ 266 fi 267 268 269amd.home.time: $(AMDDIR)/amd.home 270 -@if [ -f $(>) ]; then \ 271 $(SED) -e "s/#.*$$//" -e "/^$$/d" $(>) | \ 272 $(AWK) '{ \ 273 for (i = 1; i <= NF; i++) \ 274 if (i == NF) { \ 275 if (substr($$i, length($$i), 1) == "\\") { \ 276 printf("%s", substr($$i, 1, length($$i) - 1)); \ 277 } \ 278 else \ 279 printf("%s\n", $$i); \ 280 } \ 281 else \ 282 printf("%s ", $$i); \ 283 }' | \ 284 $(MAKEDBM) - amd.home; \ 285 $(TOUCH) $(@); \ 286 $(ECHO) "updated amd.home"; \ 287 if [ ! $(NOPUSH) ]; then \ 288 $(YPPUSH) -d $(DOMAIN) amd.home; \ 289 $(ECHO) "pushed amd.home"; \ 290 else \ 291 : ; \ 292 fi \ 293 else \ 294 $(ECHO) "couldn't find $(>)"; \ 295 fi 296 297 298aliases.time: $(DIR)/mail/aliases 299 -@if [ -f $(>) ]; then \ 300 $(CP) -p $(>) $(DOMAIN)-aliases; \ 301 $(SENDMAIL) -bi -oA$(PWD)/$(DOMAIN)-aliases; \ 302 $(MAKEDBM) -U $(DOMAIN)-aliases | $(MAKEDBM) - mail.aliases; \ 303 $(MKALIAS) mail.aliases mail.byaddr; \ 304 $(TOUCH) $(@); \ 305 $(RM) $(DOMAIN)-aliases.db $(DOMAIN)-aliases; \ 306 $(ECHO) "updated aliases"; \ 307 if [ ! $(NOPUSH) ]; then \ 308 $(YPPUSH) -d $(DOMAIN) mail.aliases; \ 309 $(YPPUSH) -d $(DOMAIN) mail.byaddr; \ 310 $(ECHO) "pushed aliases"; \ 311 else \ 312 : ; \ 313 fi \ 314 else \ 315 $(ECHO) "couldn't find $(>)"; \ 316 fi 317 318 319 320passwd: passwd.time 321group: group.time 322hosts: hosts.time 323ethers: ethers.time 324rpc: rpc.time 325services: services.time 326protocols: protocols.time 327netid: netid.time 328netgroup: netgroup.time 329amd.home: amd.home.time 330aliases: aliases.time 331$(DIR)/passwd: 332$(DIR)/group: 333$(DIR)/hosts: 334$(DIR)/ethers: 335$(DIR)/rpc: 336$(DIR)/services: 337$(DIR)/protocols: 338$(DIR)/netid: 339$(DIR)/master.passwd: 340$(DIR)/netgroup: 341$(DIR)/mail/aliases: 342$(AMDDIR)/amd.home: 343