mirror of
https://github.com/falcosecurity/falco.git
synced 2025-10-21 11:29:26 +00:00
This is required due to the plugin API version being bumped to 1.0.0 in the framework after the recent breaking changes. cloudtrail and json will be switched back to a stable build once they get released to require the plugin API version with the newest major. Signed-off-by: Jason Dellaluce <jasondellaluce@gmail.com>
117 lines
2.6 KiB
C++
117 lines
2.6 KiB
C++
/*
|
|
Copyright (C) 2021 The Falco Authors.
|
|
|
|
Licensed under the Apache License, Version 2.0 (the "License");
|
|
you may not use this file except in compliance with the License.
|
|
You may obtain a copy of the License at
|
|
|
|
http://www.apache.org/licenses/LICENSE-2.0
|
|
|
|
Unless required by applicable law or agreed to in writing, software
|
|
distributed under the License is distributed on an "AS IS" BASIS,
|
|
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
See the License for the specific language governing permissions and
|
|
limitations under the License.
|
|
*/
|
|
|
|
#include <stdio.h>
|
|
#include <stdlib.h>
|
|
#include <string.h>
|
|
#include <plugin_info.h>
|
|
|
|
static const char *pl_required_api_version = "1.0.0";
|
|
static uint32_t pl_type = TYPE_EXTRACTOR_PLUGIN;
|
|
static const char *pl_name_base = "test_extract";
|
|
static char pl_name[1024];
|
|
static const char *pl_desc = "Test Plugin For Regression Tests";
|
|
static const char *pl_contact = "github.com/falcosecurity/falco";
|
|
static const char *pl_version = "0.1.0";
|
|
static const char *pl_extract_sources = "[\"test_source\"]";
|
|
static const char *pl_fields = "[]";
|
|
|
|
// This struct represents the state of a plugin. Just has a placeholder string value.
|
|
typedef struct plugin_state
|
|
{
|
|
} plugin_state;
|
|
|
|
extern "C"
|
|
const char* plugin_get_required_api_version()
|
|
{
|
|
return pl_required_api_version;
|
|
}
|
|
|
|
extern "C"
|
|
uint32_t plugin_get_type()
|
|
{
|
|
return pl_type;
|
|
}
|
|
|
|
extern "C"
|
|
const char* plugin_get_name()
|
|
{
|
|
// Add a random-ish suffix to the end, as some tests load
|
|
// multiple copies of this plugin
|
|
snprintf(pl_name, sizeof(pl_name)-1, "%s%ld\n", pl_name_base, random());
|
|
return pl_name;
|
|
}
|
|
|
|
extern "C"
|
|
const char* plugin_get_description()
|
|
{
|
|
return pl_desc;
|
|
}
|
|
|
|
extern "C"
|
|
const char* plugin_get_contact()
|
|
{
|
|
return pl_contact;
|
|
}
|
|
|
|
extern "C"
|
|
const char* plugin_get_version()
|
|
{
|
|
return pl_version;
|
|
}
|
|
|
|
extern "C"
|
|
const char* plugin_get_extract_event_sources()
|
|
{
|
|
return pl_extract_sources;
|
|
}
|
|
|
|
extern "C"
|
|
const char* plugin_get_fields()
|
|
{
|
|
return pl_fields;
|
|
}
|
|
|
|
extern "C"
|
|
const char* plugin_get_last_error(ss_plugin_t* s)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
extern "C"
|
|
ss_plugin_t* plugin_init(const char* config, int32_t* rc)
|
|
{
|
|
// Note: Using new/delete is okay, as long as the plugin
|
|
// framework is not deleting the memory.
|
|
plugin_state *ret = new plugin_state();
|
|
*rc = SS_PLUGIN_SUCCESS;
|
|
return ret;
|
|
}
|
|
|
|
extern "C"
|
|
void plugin_destroy(ss_plugin_t* s)
|
|
{
|
|
plugin_state *ps = (plugin_state *) s;
|
|
|
|
delete(ps);
|
|
}
|
|
|
|
extern "C"
|
|
int32_t plugin_extract_fields(ss_plugin_t *s, const ss_plugin_event *evt, uint32_t num_fields, ss_plugin_extract_field *fields)
|
|
{
|
|
return SS_PLUGIN_SUCCESS;
|
|
}
|