Files
trufflehog/proto/source_metadata.proto
Tim Strazzere 4cffadbd04 feat: allow input source from pipe (#4088)
* feat: allow input source from pipe

While performing a bit of experimentation,
I found it was easier to allow data to flow
from other segments of my machine via piping
it in, rather than flushing it to disk. This
can speed up the process when pre-processing
large amounts of data. This allow allowed me
to keep disk space low and just utilize a large
ram machine.

* (chore) update readme for new source pipe

* (fix) pipe -> stdin per PR
2025-05-23 09:53:20 -04:00

407 lines
7.5 KiB
Protocol Buffer

syntax = "proto3";
package source_metadata;
option go_package = "github.com/trufflesecurity/trufflehog/v3/pkg/pb/source_metadatapb";
import "google/protobuf/timestamp.proto";
message Azure {
string container = 1;
string file = 2;
string uploaded = 3;
string link = 4;
string email = 5;
}
message Bitbucket {
string file = 1;
string repository = 2;
string workspace = 3;
string snippet_id = 4;
string title = 5;
string commit = 6;
string email = 7;
string link = 8;
string timestamp = 9;
int64 line = 10;
}
message Buildkite {
string org = 1;
string pipeline = 2;
string link = 3;
string email = 4;
int64 build_number = 5;
string timestamp = 6;
}
message CircleCI {
string vcs_type = 1;
string username = 2;
string repository = 3;
int64 build_number = 4;
string build_step = 5;
string link = 6;
string email = 7;
}
message TravisCI {
string username = 2;
string repository = 3;
string build_number = 4;
string job_number = 5;
string link = 6;
bool public = 7;
}
message Confluence {
string page = 1;
string space = 2;
string version = 3;
string link = 4;
string email = 5;
string timestamp = 6;
string location = 7;
string file = 8;
}
message Docker {
string file = 1;
string image = 2;
string layer = 3;
string tag = 4;
}
message ECR {
string file = 1;
string layer = 2;
string image = 3;
string registry = 4;
string region = 5;
string link = 6;
string email = 7;
}
message Filesystem {
string file = 1;
string link = 2;
string email = 3;
int64 line = 4;
}
message Git {
string commit = 1;
string file = 2;
string email = 3;
string repository = 4;
string timestamp = 5;
int64 line = 6;
}
message Github {
string link = 1;
string username = 2;
string repository = 3;
string commit = 4;
string email = 5;
string file = 6;
string timestamp = 7;
int64 line = 8;
Visibility visibility = 9;
}
message Gitlab {
string commit = 1;
string file = 2;
string link = 3;
string email = 4;
string repository = 5;
string timestamp = 6;
int64 line = 7;
int64 project_id = 8;
string project_name = 9;
string project_owner = 10;
}
message GCS {
string bucket = 1;
string filename = 2;
string link = 3;
string email = 4;
string created_at = 5;
string updated_at = 6;
repeated string acls = 7;
string content_type = 8;
}
message Huggingface {
string link = 1;
string username = 2;
string repository = 3;
string commit = 4;
string email = 5;
string file = 6;
string timestamp = 7;
int64 line = 8;
Visibility visibility = 9;
string resource_type = 10;
}
message Jira {
string issue = 1;
string author = 2;
string link = 3;
string location = 4;
string email = 5;
string timestamp = 6;
}
message NPM {
string file = 1;
string package = 2;
string release = 3;
string link = 4;
string email = 5;
}
message PyPi {
string file = 1;
string package = 2;
string release = 3;
string link = 4;
string email = 5;
}
message S3 {
string bucket = 1;
string file = 2;
string link = 3;
string email = 5;
string timestamp = 6;
}
enum Visibility {
public = 0;
private = 1;
shared = 2;
unknown = 3;
}
message Slack {
string channel_id = 1;
string channel_name = 2;
string timestamp = 3;
string user_id = 4;
string link = 5;
string file = 6;
string email = 7;
Visibility visibility = 8;
string location = 9;
}
message Gerrit {
string commit = 1;
string file = 2;
string email = 3;
string project = 4; // projects are what Gerrit calls repositories
string timestamp = 5;
int64 line = 6;
}
message Test {
string file = 1;
}
message Jenkins {
string project_name = 1;
int64 build_number = 2;
string link = 3;
string timestamp = 4;
}
message Teams {
string channel_id = 1;
string channel_name = 2;
string timestamp = 3;
string user_id = 4;
string link = 5;
string file = 6;
string email = 7;
string location = 8;
string team_name = 9;
string team_id = 10;
}
// https://www.jfrog.com/confluence/display/JFROG/Artifactory+REST+API#ArtifactoryRESTAPI-FileInfo
message Artifactory {
string repo = 1;
string path = 2;
string link = 3;
string timestamp = 4;
string username = 5;
string email = 6;
}
message Syslog {
string hostname = 1;
string appname = 2;
string procid = 3;
string timestamp = 4;
string client = 5;
string facility = 6;
}
message Forager {
oneof metadata {
Github github = 1;
NPM npm = 2;
PyPi pypi = 3;
}
}
message SharePoint {
string link = 1;
string timestamp = 2;
string author = 3;
string title = 4;
int64 views = 5;
string docid = 6;
string email = 7;
}
message GoogleDrive {
string file = 1;
string link = 2;
string email = 3;
string timestamp = 4;
bool shared = 5;
string last_modified_by = 6;
string path = 7;
}
message AzureRepos {
string link = 1;
string username = 2;
string repository = 3;
string commit = 4;
string email = 5;
string file = 6;
string timestamp = 7;
int64 line = 8;
Visibility visibility = 9;
string project = 10;
string organization = 11;
}
message Postman {
reserved 4, 14, 15;
reserved "globals_id", "field_name", "variable_type";
string link = 1;
string workspace_uuid = 2;
string workspace_name = 3;
string collection_id = 5;
string collection_name = 6;
string environment_id = 7;
string environment_name = 8;
string request_id = 9;
string request_name = 10;
string folder_id = 11;
string folder_name = 12;
string field_type = 13; // Do not use this field for transport. It is only used for output to STDOUT.
PostmanLocationType location_type = 16;
}
enum PostmanLocationType {
UNKNOWN_POSTMAN = 0;
REQUEST_QUERY_PARAMETER = 1;
REQUEST_AUTHORIZATION = 2;
REQUEST_HEADER = 3;
REQUEST_BODY_FORM_DATA = 4;
REQUEST_BODY_RAW = 5;
REQUEST_BODY_URL_ENCODED = 6;
REQUEST_BODY_GRAPHQL = 7;
REQUEST_SCRIPT = 8;
REQUEST_URL = 9;
ENVIRONMENT_VARIABLE = 10;
FOLDER_AUTHORIZATION = 11;
FOLDER_SCRIPT = 12;
COLLECTION_SCRIPT = 13;
COLLECTION_VARIABLE = 14;
COLLECTION_AUTHORIZATION = 15;
RESPONSE_BODY = 16;
RESPONSE_HEADER = 17;
}
message Vector {
google.protobuf.Timestamp timestamp = 1;
string source_type = 2;
string host = 3;
}
message Webhook {
oneof data {
Vector vector = 1;
}
}
message Elasticsearch {
string index = 1;
string document_id = 2;
string timestamp = 3;
}
message Sentry {
string event_id = 1;
string organization_id = 2;
string organization_slug = 3;
string organization_date_created = 4;
string project_id = 5;
string project_slug = 6;
string issue_id = 7;
string date_created = 8;
string link = 9;
}
message Stdin {}
message MetaData {
oneof data {
Azure azure = 1;
Bitbucket bitbucket = 2;
CircleCI circleci = 3;
Confluence confluence = 4;
Docker docker = 5;
ECR ecr = 6;
GCS gcs = 7;
Github github = 8;
Gitlab gitlab = 9;
Jira jira = 10;
NPM npm = 11;
PyPi pypi = 12;
S3 s3 = 13;
Slack slack = 14;
Filesystem filesystem = 15;
Git git = 16;
Test test = 17;
Buildkite buildkite = 18;
Gerrit gerrit = 19;
Jenkins jenkins = 20;
Teams teams = 21;
Artifactory artifactory = 22;
Syslog syslog = 23;
Forager forager = 24;
SharePoint sharepoint = 25;
GoogleDrive googleDrive = 26;
AzureRepos azureRepos = 27;
TravisCI travisCI = 28;
Postman postman = 29;
Webhook webhook = 30;
Elasticsearch elasticsearch = 31;
Huggingface huggingface = 32;
Sentry sentry = 33;
Stdin stdin = 34;
}
}