From cdcce2ec26b7439ba046ad909f9b9a5b057ad281 Mon Sep 17 00:00:00 2001 From: Peter Kurfer Date: Sat, 13 Feb 2021 18:20:57 +0100 Subject: [PATCH] Initial commit --- .editorconfig | 10 +++++ .gitignore | 2 + README.md | 1 + proto/audit/details/dns_details.proto | 42 +++++++++++++++++++++ proto/audit/details/http_details.proto | 32 ++++++++++++++++ proto/audit/event_entity.proto | 51 +++++++++++++++++++++++++ proto/rpc/audit.proto | 52 ++++++++++++++++++++++++++ proto/rpc/health.proto | 34 +++++++++++++++++ 8 files changed, 224 insertions(+) create mode 100644 .editorconfig create mode 100644 .gitignore create mode 100644 README.md create mode 100644 proto/audit/details/dns_details.proto create mode 100644 proto/audit/details/http_details.proto create mode 100644 proto/audit/event_entity.proto create mode 100644 proto/rpc/audit.proto create mode 100644 proto/rpc/health.proto diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..698c63d --- /dev/null +++ b/.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/.gitignore b/.gitignore new file mode 100644 index 0000000..1c0b8d4 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +.vscode/ +.idea/ \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..19fee22 --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# INetMock protobuf API \ No newline at end of file diff --git a/proto/audit/details/dns_details.proto b/proto/audit/details/dns_details.proto new file mode 100644 index 0000000..3dc2fb8 --- /dev/null +++ b/proto/audit/details/dns_details.proto @@ -0,0 +1,42 @@ +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"; + +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/proto/audit/details/http_details.proto b/proto/audit/details/http_details.proto new file mode 100644 index 0000000..e9a3955 --- /dev/null +++ b/proto/audit/details/http_details.proto @@ -0,0 +1,32 @@ +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"; + +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; +} \ No newline at end of file diff --git a/proto/audit/event_entity.proto b/proto/audit/event_entity.proto new file mode 100644 index 0000000..00492af --- /dev/null +++ b/proto/audit/event_entity.proto @@ -0,0 +1,51 @@ +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"; + +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; +} \ No newline at end of file diff --git a/proto/rpc/audit.proto b/proto/rpc/audit.proto new file mode 100644 index 0000000..1d43bd3 --- /dev/null +++ b/proto/rpc/audit.proto @@ -0,0 +1,52 @@ +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"; + +import 'pkg/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); +} \ No newline at end of file diff --git a/proto/rpc/health.proto b/proto/rpc/health.proto new file mode 100644 index 0000000..3ff1aee --- /dev/null +++ b/proto/rpc/health.proto @@ -0,0 +1,34 @@ +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"; + +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; +} \ No newline at end of file