def _read_header(self, header_data, header_flags): if header_flags & MPM_HEADER_COMPRESSED_GZIP: t = cStringIO.StringIO(header_data) g = gzip.GzipFile(None, "r", 0, t) header_data = g.read() g.close() t.close() try: params, foo = xmlrpclib.loads(header_data) except: # XXX raise self.header = MPM_Header(params[0])
def reload(self, text): """ load data from a text certificate passed on by a client """ log_debug(4) text_id = string.strip(text) if not text_id: return -1 # Now decode this certificate try: sysid, junk = xmlrpclib.loads(text_id) except: return -1 else: s = sysid[0] del junk if not s.has_key("system_id") or not s.has_key("fields"): log_error("Got certificate with missing entries: %s" % s) return -1 # check the certificate some more for k in s["fields"]: if not s.has_key(k): log_error("Certificate lists unknown %s as a checksum field" % k, "cert data: %s" % s) return -1 # clear out the state self.__init__() # at this point we know the certificate is sane enough for the # following processing for k in s.keys(): if k == "fields": self.__fields = s[k] continue if k == "checksum": self.__checksum = s[k] continue self.attrs[k] = s[k] # okay, the certificate is now loaded return 0