EX_PERMFAIL = 65; # EX_DATAERR
Error = 'Message Error';
SeenRSA = 0;
+SeenDSA = 0;
SeenDNS = 0;
ArbChanges = {"c": "..",
"latitude": None,
"longitude": None,
"icquin": None,
- "sshrsaauthkey": None};
+ "sshrsaauthkey": None,
+ "sshdsaauthkey": None};
# Decode a GPS location from some common forms
def LocDecode(Str,Dir):
SeenRSA = 1;
return "SSH Keys replaced with "+FormatSSHAuth(Str);
+# Handle a SSH DSA authentication key, the line format is:
+# ssh-dss [key] [comment]
+def DoSSH2(Str,Attrs):
+ Match = SSHDSAAuthSplit.match(Str);
+ if Match == None:
+ return None;
+
+ global SeenDSA;
+ if SeenDSA:
+ Attrs.append((ldap.MOD_ADD,"sshdsaauthkey",Str));
+ return "SSH2 Key added "+FormatSSH2Auth(Str);
+
+ Attrs.append((ldap.MOD_REPLACE,"sshdsaauthkey",Str));
+ SeenDSA = 1;
+ return "SSH2 Keys replaced with "+FormatSSH2Auth(Str);
+
# Handle changing a dns entry
# host in a 12.12.12.12
# host in cname foo.bar. <- Trailing dot is required
# Handle an [almost] arbitary change
def HandleChange(Reply,DnRecord,Key):
global PlainText;
- Lines = string.split(PlainText,"\r\n");
+ Lines = re.split("\n *\r?",PlainText);
Result = "";
Attrs = [];
else:
Res = DoPosition(Line,Attrs) or DoDNS(Line,Attrs,DnRecord) or \
DoArbChange(Line,Attrs) or DoSSH(Line,Attrs) or \
- DoDel(Line,Attrs);
+ DoSSH2(Line,Attrs) or DoDel(Line,Attrs);
except:
Res = None;
Result = Result + "==> %s: %s\n" %(sys.exc_type,sys.exc_value);