// Copyright (c) 2010 The Chromium Authors. All rights reserved. // Use of this source code is governed by a BSD-style license that can be // found in the LICENSE file. // // Safe Browsing reporting protocol buffers. // // A ClientMalwareReportRequest is sent when a user opts-in to // sending detailed malware reports from the safe browsing interstitial page. // // It is a list of Resource messages, which may contain the url of a // resource such as the page in the address bar or any other resource // that was loaded for this page. // // In addition to the url, a resource can contain HTTP request and response // headers and bodies. syntax = "proto2"; option optimize_for = LITE_RUNTIME; package safe_browsing; message ClientMalwareReportRequest { message HTTPHeader { required bytes name = 1; optional bytes value = 2; } message HTTPRequest { message FirstLine { optional bytes verb = 1; // Also known as method, eg "GET" optional bytes uri = 2; optional bytes version = 3; } optional FirstLine firstline = 1; repeated HTTPHeader headers = 2; optional bytes body = 3; // bodydigest and bodylength can be useful if the report does not // contain the body itself. optional bytes bodydigest = 4; optional int32 bodylength = 5; } message HTTPResponse { message FirstLine { optional int32 code = 1; optional bytes reason = 2; optional bytes version = 3; } optional FirstLine firstline = 1; repeated HTTPHeader headers = 2; optional bytes body = 3; // bodydigest and bodylength can be useful if the report does not // contain the body itself. optional bytes bodydigest = 4; optional int32 bodylength = 5; optional bytes remote_ip = 6; } message Resource { required int32 id = 1; optional string url = 2; optional HTTPRequest request = 3; optional HTTPResponse response = 4; optional int32 parent_id = 5; // Id of the parent, if known. // A list of children. The order of the children in this list is // significant. The |parent_id| field for child nodes can be derived // from this, but this allows us to be more flexible. repeated int32 child_ids = 6; // Tag that was used to include this resource, eg "iframe" optional string tag_name = 7; } // URL of the resource that matches the safe browsing list. optional string malware_url = 1; // URL of the page in the address bar. optional string page_url = 2; optional string referrer_url = 3; repeated Resource resources = 4; // Whether the report has HTTP Responses. optional bool complete = 5; }