-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathinfo.toml
126 lines (104 loc) · 5 KB
/
info.toml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
# The format version is an indicator of the compatibility of third-party exercises with the
# Rustlings program.
# The format version is not the same as the version of the Rustlings program.
# In case Rustlings makes an unavoidable breaking change to the expected format of third-party
# exercises, you would need to raise this version and adapt to the new format.
# Otherwise, the newest version of the Rustlings program won't be able to run these exercises.
format_version = 1
# Optional multi-line message to be shown to users when just starting with the exercises.
welcome_message = """
Welcome to the Falco Plugin Rust SDK exercises!
These exercises will walk you through the process of developing Falco Plugins using
the Rust SDK. You may want to open the Rust SDK Documenation
(https://falcosecurity.github.io/plugin-sdk-rs) in a separate browser window
as a reference.
Each exercise has a partially complete implementation of a plugin. Your job is to
identify the missing components and fill them in.
After saving your changes, the framework will build the plugin and run tests that
verify that your changes correctly implement the exercise.
Just tl;dr:
1. exercises usually contain some compiler or logic errors
2. search for `TODO` and `todo!()` in the code
3. if you're stuck on an exercise, enter `h` to show a hint.
"""
# Optional multi-line message to be shown to users after finishing all exercises.
final_message = """
\u001b[0;36m###
###
# ##
### ##
### ##
# ### ## ##### ###
## ## ### ### ########### ###
### ## ## ## ### ###
### ## ### ### ####### ### ###### ######
## ### # ### ## #### ### ######## ##########
## ### ## ########## ### ### ### ### ###
### ## ## ### ######### ### ### ### ###
### ## ### ### ### ### ### ### ### ####
### ## ## ### #### ### #### ##### # #### ####
## ## ### ### ######## #### ####### ######\u001b[0m
Congratulations! You can now create your own Falco plugin in Rust!
Where to go next? It's very easy to build your plugin and load it into Falco.
Don't believe us? We took the code for the sourcing and extract plugin you just worked on
and can show you that it can be built with a single `cargo` command, then loaded
and tested with a single `docker` command: https://github.com/madchicken/rand-generator-plugin
"""
# Repeat this section for every exercise.
[[exercises]]
# Exercise name which is the exercise file name without the `.rs` extension.
name = "building_the_sdk_just_a_moment_please"
# Optional directory name to be provided if you want to organize exercises in directories.
# If `dir` is specified, the exercise path is `exercises/DIR/NAME.rs`
# Otherwise, the path is `exercises/NAME.rs`
dir = "00_setup"
# Rustlings expects the exercise to contain tests and run them.
# You can optionally disable testing by setting `test` to `false` (the default is `true`).
# In that case, the exercise will be considered done when it just successfully compiles.
# test = true
# Rustlings will always run Clippy on exercises.
# You can optionally set `strict_clippy` to `true` (the default is `false`) to only consider
# the exercise as done when there are no warnings left.
# strict_clippy = false
# A multi-line hint to be shown to users on request.
hint = """No hints here, if this exercise doesn't pass automatically, please report a bug"""
[[exercises]]
name = "your_first_plugin"
hint = """Implement all the missing constants (and the constructor method) for your plugin"""
[[exercises]]
name = "source_plugin"
hint = """Implement an instance type and connect it to your source plugin. Make sure the tests pass"""
test = true
[[exercises]]
name = "source_plugin_with_events"
hint = """Make the source plugin emit a continuous stream of random numbers"""
test = true
[[exercises]]
name = "async_events_plugin"
hint = "Implement async events capability"
test = true
[[exercises]]
name = "field_extraction"
hint = """Implement source plugin extraction capability"""
test = true
[[exercises]]
name = "plugin_configuration"
test = true
hint = """
The plugin configuration format is vastly flexible. It can receive
unstructured data or payloads in JSON, YAML, TOML, and other popular
formats. The plugin SDK supports the JSON schema out of the box. For
more information head to https://falcosecurity.github.io/plugin-sdk-rs/falco_plugin/base/struct.Json.html
"""
[[exercises]]
name = "event_parsing"
hint = """Implement event parsing capability"""
test = true
[[exercises]]
name = "event_parsing_using_tables"
hint = """Expose the parse plugin state as a table and consume it in a separate extract plugin"""
test = true
[[exercises]]
name = "extract_fields_syscall_events"
hint = """Implement an extract plugin that handles system call events. Make sure the tests pass"""
test = true