X-Git-Url: https://git.adam-barratt.org.uk/?p=mirror%2Fuserdir-ldap.git;a=blobdiff_plain;f=ud-xearth;h=25e001a297a0395b76972b4791a6393ebda3acfe;hp=cec3308a091b276a105f0129d679bec19a8634cb;hb=a6fb69805c3999a85c064a96c93417bb1c284c5c;hpb=a08a09f4b8ae3e3a34d26e4441ec4c6a6fa18e1c diff --git a/ud-xearth b/ud-xearth index cec3308..25e001a 100755 --- a/ud-xearth +++ b/ud-xearth @@ -14,41 +14,11 @@ # DGMS -> DD DDD + (MM + (SS.SSSSSS)/60)/60 # For Latitude + is North, for Longitude + is East -import string, re, time, ldap, getopt, sys, pwd, posix; +import re, time, ldap, getopt, sys, pwd, os, posix; from userdir_ldap import *; Anon = 0; -# This needs to check for leading 0 to disambiguate some things -def DecDegree(Attr,Type): - Parts = re.match('[+-]?(\d*)\\.?(\d*)?',GetAttr(Attr,Type)).groups(); - Val = string.atof(GetAttr(Attr,Type)); - - if (abs(Val) >= 1806060.0): - raise ValueError,"Too Big"; - - # Val is in DGMS - if abs(Val) >= 18060.0 or len(Parts[0]) > 5: - Val = Val/100.0; - Secs = Val - long(Val); - Val = long(Val)/100.0; - Min = Val - long(Val); - Val = long(Val) + (Min*100.0 + Secs*100.0/60.0)/60.0; - - # Val is in DGM - elif abs(Val) >= 180 or len(Parts[0]) > 3: - Val = Val/100.0; - Min = Val - long(Val); - Val = long(Val) + Min*100.0/60.0; - - if Anon != 0: - Str = "%3.3f"%(Val); - else: - Str = str(Val); - if Val >= 0: - return "+" + Str; - return Str; - # Main program starts here User = pwd.getpwuid(posix.getuid())[0]; BindUser = User; @@ -60,11 +30,7 @@ for (switch, val) in options: Anon = 1; # Connect to the ldap server -l = ldap.open(LDAPServer); -print "Accessing LDAP directory as '" + User + "'"; -Password = getpass(User + "'s password: "); -UserDn = "uid=" + User + "," + BaseDn; -l.simple_bind_s(UserDn,Password); +l = passwdAccessLDAP(LDAPServer, BaseDn, User) Attrs = l.search_s(BaseDn,ldap.SCOPE_ONELEVEL,"latitude=*",\ ["uid","cn","mn","sn","latitude","longitude"]); @@ -82,9 +48,9 @@ for x in Attrs: Count = Count + 1; try: if Anon != 0: - F.write("%8s %8s \"\"\n"%(DecDegree(x,"latitude"),DecDegree(x,"longitude"))); + F.write("%8s %8s \"\"\n"%(DecDegree(GetAttr(x,"latitude"),Anon),DecDegree(GetAttr(x,"longitude"),Anon))); else: - F.write("%16s %16s \"%s\" \t# %s\n"%(DecDegree(x,"latitude"),DecDegree(x,"longitude"),GetAttr(x,"uid"),EmailAddress(x))); + F.write("%16s %16s \"%s\" \t# %s\n"%(DecDegree(GetAttr(x,"latitude"),Anon),DecDegree(GetAttr(x,"longitude"),Anon),GetAttr(x,"uid"),EmailAddress(x))); except: Failed = Failed + 1; if Anon == 0: