Пример #1
0
def _set_public_acl_if_needed(url):
    """Sets public ACL on the object with given URL, if it's not public yet."""
    if storage.get_acl(url, 'allUsers'):
        logs.log('%s is already marked public, skipping.' % url)
        return True

    if not storage.set_acl(url, 'allUsers'):
        logs.log_error('Failed to mark %s public.' % url)
        return False

    return True
Пример #2
0
def _make_corpus_backup_public(target, corpus_fuzzer_name_override,
                               corpus_backup_bucket_name):
    """Identifies old corpus backups and makes them public."""
    corpus_backup_date = utils.utcnow().date() - datetime.timedelta(
        days=data_types.CORPUS_BACKUP_PUBLIC_LOOKBACK_DAYS)

    corpus_backup_url = corpus_manager.gcs_url_for_backup_file(
        corpus_backup_bucket_name,
        corpus_fuzzer_name_override or target.engine,
        target.project_qualified_name(),
        corpus_backup_date,
    )

    try:
        result = storage.get(corpus_backup_url)
    except:
        result = None

    if not result:
        logs.log_warn("Failed to find corpus backup %s." % corpus_backup_url)
        return

    try:
        result = storage.get_acl(corpus_backup_url, "allUsers")
    except:
        result = None

    if result:
        # Backup is already marked public. Skip.
        logs.log("Corpus backup %s is already marked public, skipping." %
                 corpus_backup_url)
        return

    try:
        result = storage.set_acl(corpus_backup_url, "allUsers")
    except:
        result = None

    if not result:
        logs.log_error("Failed to mark corpus backup %s public." %
                       corpus_backup_url)
        return

    logs.log("Corpus backup %s is now marked public." % corpus_backup_url)