Exemple #1
0
def check_ticket(client_ticket):
    server_ticket = load_server_manifest(include_file_list=False).ticket
    Control.logger.debug("client_ticket.host: %s", client_ticket.host, 2)
    Control.logger.debug("server_ticket.host: %s", server_ticket.host, 2)
    Control.logger.debug("client_ticket.checksum: %s", client_ticket.checksum)
    Control.logger.debug("server_ticket.checksum: %s" % server_ticket.checksum)
    Control.logger.debug("client_ticket.timestamp: %s",
                         client_ticket.timestamp)
    Control.logger.debug("server_ticket.timestamp: %s",
                         server_ticket.timestamp)
    response = etree.Element("Current")
    response.text = (client_ticket == server_ticket) and "Y" or "N"
    return WebService.Response(response, Control.logger)
Exemple #2
0
def make_delta(client_manifest):
    server_manifest = load_server_manifest()
    client_files = {}
    server_files = {}
    to_be_installed = []
    to_be_deleted = []
    manifest_name = None
    for f in client_manifest.files:
        client_files[f.name.upper()] = f
    for f in server_manifest.files:
        server_files[f.name.upper()] = f
    for key in server_files:
        serverFile = server_files[key]
        if "CDRMANIFEST.XML" in key:
            manifest_name = serverFile.name
        if key not in client_files:
            Control.logger.debug("adding new client file %s", serverFile.name)
            to_be_installed.append(serverFile.name)
        elif client_files[key] != serverFile:
            Control.logger.debug("adding changed client file %s",
                                 serverFile.name)
            to_be_installed.append(serverFile.name)
    for key in client_files:
        if key not in server_files:
            name = client_files[key].name
            Control.logger.debug("client file %s to be deleted", name)
            to_be_deleted.append(name)
    updates = etree.Element("Updates")
    if to_be_installed:
        if manifest_name and manifest_name not in to_be_installed:
            to_be_installed.append(manifest_name)
        Control.logger.debug("sending %d files to be installed",
                             len(to_be_installed))
        zip_file = base64.encodestring(build_zip_file(to_be_installed))
        etree.SubElement(updates, "ZipFile", encoding="base64").text = zip_file
    if to_be_deleted:
        Control.logger.debug("%d files will be removed", len(to_be_deleted))
        deletions = etree.SubElement(updates, "Delete")
        for name in to_be_deleted:
            etree.SubElement(deletions, "File").text = name
    return WebService.Response(updates, Control.logger)