Skip to content
This repository was archived by the owner on Jul 28, 2022. It is now read-only.
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ SHELL := /bin/bash

PROTOS := protos/schema.proto protos/outputs.proto protos/version.proto
PROTO_URLS := https://raw.githubusercontent.com/falcosecurity/falco/master/userspace/falco/schema.proto https://raw.githubusercontent.com/falcosecurity/falco/master/userspace/falco/outputs.proto https://raw.githubusercontent.com/falcosecurity/falco/master/userspace/falco/version.proto
PROTO_SHAS := 1adf7fbb2b92793a3cf490204314af7788ffd81655c4cedb40587a22db9c1915 5e3bdc564c4d38f7d70a8fe50e6022a733ed93197edff6b824a24c6a45fed6c3 fc470546c00273bafe20b53ab6b7e0784206b8f6f9a705df92994e89035a5dc4
PROTO_SHAS := ad4e9d62717e82b9fb9ec30625d392fd66ced3e53eb73faea739c63063650ac3 18fa7f7a4870ae0e0703c775fda41362aa654445893546d9b2d49f59dd487026 c57a8a3f37a14ca8f33ce6d26156c9348e716029bca87bf9143807a68b1f31f5

PROTO_DIRS := $(dir ${PROTOS})
PROTO_DIRS_INCLUDES := $(patsubst %/, -I %, ${PROTO_DIRS})
Expand Down
19 changes: 17 additions & 2 deletions falco/domain/outputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -43,6 +43,7 @@ class OutputsResponse:
"output",
"output_fields",
"hostname",
"tags",
)

class Priority(Enum):
Expand All @@ -69,16 +70,26 @@ class Priority(Enum):
class Source(Enum):
SYSCALL = "syscall"
K8S_AUDIT = "k8s_audit"
INTERNAL = "internal"

PB_SOURCE_TO_SOURCE_MAP = {
0: Source.SYSCALL,
1: Source.K8S_AUDIT,
2: Source.INTERNAL,
}

SERIALIZERS = {"json": "to_json"}

def __init__(
self, time=None, priority=None, source=None, rule=None, output=None, output_fields=None, hostname=None,
self,
time=None,
priority=None,
source=None,
rule=None,
output=None,
output_fields=None,
hostname=None,
tags=None,
):
self.time: datetime = time.astimezone(tz.tzutc())
self.priority: OutputsResponse.Priority = priority
Expand All @@ -87,9 +98,10 @@ def __init__(
self.output: str = output
self.output_fields: Dict = output_fields
self.hostname: str = hostname
self.tags: list = tags

def __repr__(self):
return f"{self.__class__.__name__}(time={self.time}, priority={self.priority}, source={self.source}, rule={self.rule}, output={self.output}, output_fields={self.output_fields}, hostname={self.hostname})"
return f"{self.__class__.__name__}(time={self.time}, priority={self.priority}, source={self.source}, rule={self.rule}, output={self.output}, output_fields={self.output_fields}, hostname={self.hostname}, tags={self.tags})"

@property
def priority(self):
Expand Down Expand Up @@ -123,6 +135,7 @@ def from_proto(cls, pb_response):
output=pb_response.output,
output_fields=dict(pb_response.output_fields),
hostname=pb_response.hostname,
tags=list(pb_response.tags),
)

def to_proto(self):
Expand All @@ -134,6 +147,7 @@ def to_proto(self):
output=self.output,
output_fields=self.output_fields,
hostname=self.hostname,
tags=self.tags,
)

def to_json(self):
Expand All @@ -146,5 +160,6 @@ def to_json(self):
"output": self.output,
"output_fields": self.output_fields,
"hostname": self.hostname,
"tags": self.tags,
}
)
33 changes: 30 additions & 3 deletions falco/domain/version.py
Original file line number Diff line number Diff line change
Expand Up @@ -15,20 +15,41 @@ def to_proto(self):


class VersionResponse:
__slots__ = ("version", "major", "minor", "patch", "prerelease", "build")
__slots__ = (
"version",
"major",
"minor",
"patch",
"prerelease",
"build",
"engine_version",
"engine_fields_checksum",
)

SERIALIZERS = {"json": "to_json"}

def __init__(self, version: str, major: int, minor: int, patch: int, prerelease: str, build: str):
def __init__(
self,
version: str,
major: int,
minor: int,
patch: int,
prerelease: str,
build: str,
engine_version: int,
engine_fields_checksum: str,
):
self.version = version
self.major = major
self.minor = minor
self.patch = patch
self.prerelease = prerelease
self.build = build
self.engine_version = engine_version
self.engine_fields_checksum = engine_fields_checksum

def __repr__(self):
return f"{self.__class__.__name__}(version={self.version}, major={self.major}, minor={self.minor}, patch={self.patch}, prerelease={self.prerelease}, build={self.build})"
return f"{self.__class__.__name__}(version={self.version}, major={self.major}, minor={self.minor}, patch={self.patch}, prerelease={self.prerelease}, build={self.build}, engine_version={self.engine_version}, engine_fields_checksum={self.engine_fields_checksum})"

@classmethod
def from_proto(cls, pb_response):
Expand All @@ -39,6 +60,8 @@ def from_proto(cls, pb_response):
patch=pb_response.patch,
prerelease=pb_response.prerelease,
build=pb_response.build,
engine_version=pb_response.engine_version,
engine_fields_checksum=pb_response.engine_fields_checksum,
)

def to_proto(self):
Expand All @@ -49,6 +72,8 @@ def to_proto(self):
patch=self.patch,
prerelease=self.prerelease,
build=self.build,
engine_version=self.engine_version,
engine_fields_checksum=self.engine_fields_checksum,
)

def to_json(self):
Expand All @@ -60,5 +85,7 @@ def to_json(self):
"patch": self.patch,
"prerelease": self.prerelease,
"build": self.build,
"engine_version": self.engine_version,
"engine_fields_checksum": self.engine_fields_checksum,
}
)
19 changes: 13 additions & 6 deletions falco/schema/outputs_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 18 additions & 3 deletions falco/schema/schema_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

24 changes: 19 additions & 5 deletions falco/schema/version_pb2.py

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 1 addition & 2 deletions protos/outputs.proto
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,5 @@ message response {
string output = 5;
map<string, string> output_fields = 6;
string hostname = 7;
// TODO(leodido,fntlnz): tags not supported yet, keeping it for reference.
// repeated string tags = 8;
repeated string tags = 8;
}
3 changes: 3 additions & 0 deletions protos/schema.proto
Original file line number Diff line number Diff line change
Expand Up @@ -56,4 +56,7 @@ enum source {
k8s_audit = 1;
K8s_audit = 1;
K8S_audit = 1;
INTERNAL = 2;
internal = 2;
Internal = 2;
}
6 changes: 5 additions & 1 deletion protos/version.proto
Original file line number Diff line number Diff line change
Expand Up @@ -35,10 +35,14 @@ message request
// its parts as per semver 2.0 specification (https://semver.org).
message response
{
// falco version
string version = 1;
uint32 major = 2;
uint32 minor = 3;
uint32 patch = 4;
string prerelease = 5;
string build = 6;
}
// falco engine version
uint32 engine_version = 7;
string engine_fields_checksum = 8;
}
12 changes: 11 additions & 1 deletion tests/conftest.py
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ def outputs_response():
output="output",
output_fields={"a": "b"},
hostname="hostname",
tags=["test"],
)


Expand All @@ -31,4 +32,13 @@ def version_request():

@pytest.fixture
def version_response():
return VersionResponse(version="123456", major=1, minor=2, patch=3, prerelease="654321", build="1337")
return VersionResponse(
version="123456",
major=1,
minor=2,
patch=3,
prerelease="654321",
build="1337",
engine_version=1,
engine_fields_checksum="12345678",
)
1 change: 1 addition & 0 deletions tests/domain/test_outputs.py
Original file line number Diff line number Diff line change
Expand Up @@ -32,4 +32,5 @@ def test_to_json(self, outputs_response):
"rule": "rule",
"source": "k8s_audit",
"time": "2020-01-01T22:55:59.300000+00:00",
"tags": ["test"],
}
Loading