From e6959915c68e24506e55277cf783d47e867064bc Mon Sep 17 00:00:00 2001 From: Peter Kurfer Date: Mon, 15 Feb 2021 08:45:34 +0100 Subject: [PATCH] Restructure and extend protos for easier usage --- api/.editorconfig | 10 ++++ api/.gitignore | 2 + api/README.md | 1 + api/proto/audit/details/dns_details.proto | 43 ++++++++++++++++++ api/proto/audit/details/http_details.proto | 33 ++++++++++++++ api/proto/audit/event_entity.proto | 52 +++++++++++++++++++++ api/proto/rpc/audit.proto | 53 ++++++++++++++++++++++ api/proto/rpc/health.proto | 35 ++++++++++++++ 8 files changed, 229 insertions(+) create mode 100644 api/.editorconfig create mode 100644 api/.gitignore create mode 100644 api/README.md create mode 100644 api/proto/audit/details/dns_details.proto create mode 100644 api/proto/audit/details/http_details.proto create mode 100644 api/proto/audit/event_entity.proto create mode 100644 api/proto/rpc/audit.proto create mode 100644 api/proto/rpc/health.proto diff --git a/api/.editorconfig b/api/.editorconfig new file mode 100644 index 0000000..698c63d --- /dev/null +++ b/api/.editorconfig @@ -0,0 +1,10 @@ +root = true + +[*] +end_of_line = lf +insert_final_newline = true +charset = utf-8 + +[*.proto] +indent_style = space +indent_size = 4 diff --git a/api/.gitignore b/api/.gitignore new file mode 100644 index 0000000..1c0b8d4 --- /dev/null +++ b/api/.gitignore @@ -0,0 +1,2 @@ +.vscode/ +.idea/ \ No newline at end of file diff --git a/api/README.md b/api/README.md new file mode 100644 index 0000000..19fee22 --- /dev/null +++ b/api/README.md @@ -0,0 +1 @@ +# INetMock protobuf API \ No newline at end of file diff --git a/api/proto/audit/details/dns_details.proto b/api/proto/audit/details/dns_details.proto new file mode 100644 index 0000000..f820840 --- /dev/null +++ b/api/proto/audit/details/dns_details.proto @@ -0,0 +1,43 @@ +syntax = "proto3"; + +option go_package = "gitlab.com/inetmock/inetmock/pkg/audit/details"; +option java_multiple_files = true; +option java_package = "com.github.baez90.inetmock.audit.details"; +option java_outer_classname = "HandlerEventProto"; +option csharp_namespace = "INetMock.Client.Audit.Details"; + +package inetmock.audit.details; + +enum DNSOpCode { + Query = 0; + Status = 2; + Notify = 4; + Update = 5; +} + +enum ResourceRecordType { + UnknownRR = 0; + A = 1; + NS = 2; + CNAME = 5; + SOA = 6; + PTR = 12; + HINFO = 13; + MINFO = 14; + MX = 15; + TXT = 16; + RP = 17; + AAAA = 28; + SRV = 33; + NAPTR = 35; +} + +message DNSQuestionEntity { + ResourceRecordType type = 1; + string name = 2; +} + +message DNSDetailsEntity { + DNSOpCode opcode = 1; + repeated DNSQuestionEntity questions = 2; +} diff --git a/api/proto/audit/details/http_details.proto b/api/proto/audit/details/http_details.proto new file mode 100644 index 0000000..e5e5d7a --- /dev/null +++ b/api/proto/audit/details/http_details.proto @@ -0,0 +1,33 @@ +syntax = "proto3"; + +option go_package = "gitlab.com/inetmock/inetmock/pkg/audit/details"; +option java_multiple_files = true; +option java_package = "com.github.baez90.inetmock.audit.details"; +option java_outer_classname = "HandlerEventProto"; +option csharp_namespace = "INetMock.Client.Audit.Details"; + +package inetmock.audit.details; + +enum HTTPMethod { + GET = 0; + HEAD = 1; + POST = 2; + PUT = 3; + DELETE = 4; + CONNECT = 5; + OPTIONS = 6; + TRACE = 7; + PATCH = 8; +} + +message HTTPHeaderValue { + repeated string values = 1; +} + +message HTTPDetailsEntity { + HTTPMethod method = 1; + string host = 2; + string uri = 3; + string proto = 4; + map headers = 5; +} diff --git a/api/proto/audit/event_entity.proto b/api/proto/audit/event_entity.proto new file mode 100644 index 0000000..3b213ee --- /dev/null +++ b/api/proto/audit/event_entity.proto @@ -0,0 +1,52 @@ +syntax = "proto3"; + +option go_package = "gitlab.com/inetmock/inetmock/pkg/audit"; +option java_multiple_files = true; +option java_package = "com.github.baez90.inetmock.audit"; +option java_outer_classname = "HandlerEventProto"; +option csharp_namespace = "INetMock.Client.Audit"; + +package inetmock.audit; + +import "google/protobuf/any.proto"; +import "google/protobuf/timestamp.proto"; + +enum TransportProtocol { + UNKNOWN_TRANSPORT = 0; + TCP = 1; + UDP = 2; +} + +enum AppProtocol { + UNKNOWN_APPLICATION = 0; + DNS = 1; + HTTP = 2; + HTTP_PROXY = 3; +} + +enum TLSVersion { + SSLv30 = 0; + TLS10 = 1; + TLS11 = 2; + TLS12 = 3; + TLS13 = 4; +} + +message TLSDetailsEntity { + TLSVersion version = 1; + string cipherSuite = 2; + string serverName = 3; +} + +message EventEntity { + int64 id = 1; + google.protobuf.Timestamp timestamp = 2; + TransportProtocol transport = 3; + AppProtocol application = 4; + bytes sourceIP = 5; + bytes destinationIP = 6; + uint32 sourcePort = 7; + uint32 destinationPort = 8; + TLSDetailsEntity tls = 9; + google.protobuf.Any protocolDetails = 10; +} diff --git a/api/proto/rpc/audit.proto b/api/proto/rpc/audit.proto new file mode 100644 index 0000000..ca369c1 --- /dev/null +++ b/api/proto/rpc/audit.proto @@ -0,0 +1,53 @@ +syntax = "proto3"; + +option go_package = "gitlab.com/inetmock/inetmock/pkg/rpc"; +option java_multiple_files = true; +option java_package = "com.github.baez90.inetmock.rpc"; +option java_outer_classname = "AuditProto"; +option csharp_namespace = "INetMock.Client.Rpc"; + +import 'proto/audit/event_entity.proto'; + +package inetmock.rpc; + +enum FileOpenMode { + TRUNCATE = 0; + APPEND = 1; +} + +message WatchEventsRequest { + string watcherName = 1; +} + +message RegisterFileSinkRequest { + string targetPath = 1; + FileOpenMode openMode = 2; + uint32 permissions = 3; +} + +message RegisterFileSinkResponse { + +} + +message RemoveFileSinkRequest { + string targetPath = 1; +} + +message RemoveFileSinkResponse { + bool SinkGotRemoved = 1; +} + +message ListSinksRequest { + +} + +message ListSinksResponse { + repeated string sinks = 1; +} + +service Audit { + rpc WatchEvents (WatchEventsRequest) returns (stream inetmock.audit.EventEntity); + rpc RegisterFileSink (RegisterFileSinkRequest) returns (RegisterFileSinkResponse); + rpc RemoveFileSink (RemoveFileSinkRequest) returns (RemoveFileSinkResponse); + rpc ListSinks(ListSinksRequest) returns (ListSinksResponse); +} diff --git a/api/proto/rpc/health.proto b/api/proto/rpc/health.proto new file mode 100644 index 0000000..193bc8c --- /dev/null +++ b/api/proto/rpc/health.proto @@ -0,0 +1,35 @@ +syntax = "proto3"; + +option go_package = "gitlab.com/inetmock/inetmock/internal/rpc"; +option java_multiple_files = true; +option java_package = "com.github.baez90.inetmock.rpc"; +option java_outer_classname = "HealthProto"; +option csharp_namespace = "INetMock.Client.Rpc"; + +package inetmock.rpc; + +service Health { + rpc GetHealth (HealthRequest) returns (HealthResponse) { + } +} + +enum HealthState { + HEALTHY = 0; + INITIALIZING = 1; + UNHEALTHY = 2; + UNKNOWN = 3; +} + +message HealthRequest { + repeated string components = 1; +} + +message ComponentHealth { + HealthState State = 1; + string message = 2; +} + +message HealthResponse { + HealthState overallHealthState = 1; + map componentsHealth = 2; +}