X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=ud-generate;h=4a0fd51f304923c6563f314300aa1deeefb3df77;hb=108188be721a6e5cf678918d530143aa71dad2d3;hp=0ba6fa9f2eb8401271ea445f962e4bca9d3171fd;hpb=b4ab56c86125ee342523bc4fedf65c76f6f0d2cd;p=mirror%2Fuserdir-ldap.git diff --git a/ud-generate b/ud-generate index 0ba6fa9..4a0fd51 100755 --- a/ud-generate +++ b/ud-generate @@ -2,6 +2,25 @@ # -*- mode: python -*- # Generates passwd, shadow and group files from the ldap directory. +# Copyright (c) 2000-2001 Jason Gunthorpe +# Copyright (c) 2001-2005 Ryan Murray +# Copyright (c) 2003-2004 James Troup +# Copyright (c) 2004-2005 Joey Schulze +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program; if not, write to the Free Software +# Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + import string, re, time, ldap, getopt, sys, os, pwd, posix, socket; from userdir_ldap import *; @@ -464,7 +483,7 @@ def GenBSMTP(l,File,HomePrefix): raise; Done(File,F,None); -# Generate the shadow list +# Generate the ssh known hosts file def GenSSHKnown(l,File): F = None; try: @@ -498,6 +517,32 @@ def GenSSHKnown(l,File): raise; Done(File,F,None); +# Generate the debianhosts file (list of all IP addresses) +def GenHosts(l,File): + F = None; + try: + OldMask = os.umask(0022); + F = open(File + ".tmp","w",0644); + os.umask(OldMask); + + # Fetch all the hosts + HostNames = l.search_s(HostBaseDn,ldap.SCOPE_ONELEVEL,"hostname=*",\ + ["hostname"]); + + if HostNames == None: + raise "No Hosts"; + + for x in HostNames: + if x[1].has_key("hostname") == 0: + continue; + Host = GetAttr(x,"hostname"); + Addr = socket.gethostbyname(Host); + F.write(Addr + "\n"); + # Oops, something unspeakable happened. + except: + Die(File,F,None); + raise; + Done(File,F,None); # Connect to the ldap server l = ldap.open(LDAPServer); @@ -539,6 +584,7 @@ GenAllForward(l,GlobalDir+"mail-forward.cdb"); GenMarkers(l,GlobalDir+"markers"); GenPrivate(l,GlobalDir+"debian-private"); GenSSHKnown(l,GlobalDir+"ssh_known_hosts"); +GenHosts(l,GlobalDir+"debianhosts"); # Compatibility. GenForward(l,GlobalDir+"forward-alias"); @@ -570,13 +616,15 @@ while(1): GroupList[str(GroupIDMap[I])] = None; Allowed = GroupList; + if Allowed == {}: + Allowed = None CurrentHost = Split[0]; sys.stdout.flush(); GenPasswd(l,OutDir+"passwd",Split[1]); sys.stdout.flush(); GenGroup(l,OutDir+"group"); - if CurrentHost == "haydn.debian.org" or CurrentHost == "costa.debian.org": + if ExtraList.has_key("[UNTRUSTED]"): continue; GenShadow(l,OutDir+"shadow"); @@ -585,6 +633,7 @@ while(1): DoLink(GlobalDir,OutDir,"markers"); DoLink(GlobalDir,OutDir,"mail-forward.cdb"); DoLink(GlobalDir,OutDir,"ssh_known_hosts"); + DoLink(GlobalDir,OutDir,"debianhosts"); # Compatibility. DoLink(GlobalDir,OutDir,"forward-alias");