X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=userdir_ldap.py;h=bdc4fcb877b91d0d1a108ee1e41ce222904fb0cb;hb=98329767f49b28aa04f8afd21b63b69800ff4137;hp=80edc28066ace6bea032da01868fff02be8c9ac9;hpb=e27b51c7b4be6668546ef1cac2600ad542c36265;p=mirror%2Fuserdir-ldap.git diff --git a/userdir_ldap.py b/userdir_ldap.py index 80edc28..bdc4fcb 100644 --- a/userdir_ldap.py +++ b/userdir_ldap.py @@ -1,3 +1,21 @@ +# Copyright (c) 1999-2000 Jason Gunthorpe +# Copyright (c) 2001-2003 Ryan Murray +# Copyright (c) 2004 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. + # Some routines and configuration that are used by the ldap progams import termios, re, string, imp, ldap, sys, whrandom, crypt, rfc822; import userdir_gpg @@ -27,12 +45,15 @@ Ech_MainLog = ConfModule.ech_mainlog; userdir_gpg.SetKeyrings(string.split(ConfModule.keyrings,":")); # This is a list of common last-name prefixes -LastNamesPre = {"van": None, "le": None, "de": None, "di": None}; +LastNamesPre = {"van": None, "von": None, "le": None, "de": None, "di": None}; + +# This is a list of common groups on Debian hosts +DebianGroups = {"Debian": 800, "guest": 60000} # SSH Key splitting. The result is: # (options,size,modulous,exponent,comment) SSHAuthSplit = re.compile('^(.* )?(\d+) (\d+) (\d+) ?(.+)$'); -SSH2AuthSplit = re.compile('^(.* )?ssh-(dss|rsa) ([a-zA-Z0-9=/+]+) (.+)$'); +SSH2AuthSplit = re.compile('^(.* )?ssh-(dss|rsa) ([a-zA-Z0-9=/+]+) ?(.+)$'); #'^([^\d](?:[^ "]+(?:".*")?)*)? ?(\d+) (\d+) (\d+) (.+)$'); AddressSplit = re.compile("(.*).*<([^@]*)@([^>]*)>"); @@ -77,7 +98,14 @@ def getpass(prompt = "Password: "): new[3] = new[3] & ~termios.ECHO; # lflags try: termios.tcsetattr(fd, termios.TCSADRAIN, new); - passwd = raw_input(prompt); + try: + passwd = raw_input(prompt); + except KeyboardInterrupt: + termios.tcsetattr(fd, termios.TCSADRAIN, old); + print + sys.exit(0) + except EOFError: + passwd = "" finally: termios.tcsetattr(fd, termios.TCSADRAIN, old); print; @@ -186,7 +214,7 @@ def FlushOutstanding(l,Outstanding,Fast=0): # Convert a lat/long attribute into Decimal degrees def DecDegree(Posn,Anon=0): - Parts = re.match('[+-]?(\d*)\\.?(\d*)?',Posn).groups(); + Parts = re.match('[-+]?(\d*)\\.?(\d*)',Posn).groups(); Val = string.atof(Posn); if (abs(Val) >= 1806060.0): @@ -356,4 +384,9 @@ def GetUID(l,Name,UnknownMap = {}): return (None,None); - +def Group2GID(name): + """Returns the numerical id of a common group""" + for g in DebianGroups.keys(): + if name == g: + return DebianGroups[g] + return name