X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=userdir_ldap.py;h=32b830ef130930da73dcf77892464696c77a14d2;hb=f42595c4de6b10a9f81d17f4360361130458c2af;hp=21b215bd7c24f0634b495cbeb00b0de6a0cdcb3a;hpb=51f98437460dd3adac2cacd9510551dd2f3d54a7;p=mirror%2Fuserdir-ldap.git diff --git a/userdir_ldap.py b/userdir_ldap.py index 21b215b..32b830e 100644 --- a/userdir_ldap.py +++ b/userdir_ldap.py @@ -21,7 +21,12 @@ PassDir = ConfModule.passdir; # This is a list of common last-name prefixes LastNamesPre = {"van": None, "le": None, "de": None, "di": None}; - + +# SSH Key splitting. The result is: +# (options,size,modulous,exponent,comment) +SSHAuthSplit = re.compile('^(.* )?(\d+) (\d+) (\d+) (.+)$'); +#'^([^\d](?:[^ "]+(?:".*")?)*)? ?(\d+) (\d+) (\d+) (.+)$'); + # Safely get an attribute from a tuple representing a dn and an attribute # list. It returns the first attribute if there are multi. def GetAttr(DnRecord,Attribute,Default = ""): @@ -170,9 +175,9 @@ def FlushOutstanding(l,Outstanding,Fast=0): return Outstanding; # Convert a lat/long attribute into Decimal degrees -def DecDegree(Attr,Type,Anon=0): - Parts = re.match('[+-]?(\d*)\\.?(\d*)?',GetAttr(Attr,Type)).groups(); - Val = string.atof(GetAttr(Attr,Type)); +def DecDegree(Posn,Anon=0): + Parts = re.match('[+-]?(\d*)\\.?(\d*)?',Posn).groups(); + Val = string.atof(Posn); if (abs(Val) >= 1806060.0): raise ValueError,"Too Big"; @@ -198,3 +203,14 @@ def DecDegree(Attr,Type,Anon=0): if Val >= 0: return "+" + Str; return Str; + +def FormatSSHAuth(Str): + Match = SSHAuthSplit.match(Str); + if Match == None: + return ""; + G = Match.groups(); + + # No options + if G[0] == None: + return "%s %s %s..%s %s"%(G[1],G[2],G[3][:8],G[3][-8:],G[4]); + return "%s %s %s %s..%s %s"%(G[0],G[1],G[2],G[3][:8],G[3][-8:],G[4]);