10 releases

0.4.1 Jul 31, 2023
0.4.0 Jun 29, 2023
0.3.1 Aug 26, 2022
0.3.0 Jun 17, 2022
0.1.1 Mar 24, 2020

#2121 in Network programming

Download history 25/week @ 2024-06-17 76/week @ 2024-06-24 29/week @ 2024-07-08 31/week @ 2024-07-15 14/week @ 2024-08-05 6/week @ 2024-08-12 97/week @ 2024-09-23

97 downloads per month

MIT license

110KB
311 lines

Fleetspeak (for Rust)

CI status Crate Documentation

Fleetspeak is a communication framework with a focus on security monitoring. Currently, it is primarily used in the GRR project (a remote live forensics framework).

This repository contains a library for writing code in the Rust language for client-side Fleetspeak services. In a nutshell, this library is just a set of functions for sending and receiving messages from the Fleetspeak client.

Currently there are no plans to provide capabilities for writing server-side services as well. Since server-side services communicate with the Fleetspeak server through gRPC, having a sufficiently ergonomic gRPC library should be more than enough for such purposes.

This project is not an official Google product, is under heavy development and should not be used for any production code. It is merely a proof of concept and part of the experiment of rewriting the GRR client in Rust.

Using

To write your service, first add this library to dependencies in your project's Cargo.toml file:

[dependencies]
fleetspeak = "0.4.0"

Now, in your project, you can use functions such as fleetspeak::send and fleetspeak::receive to communicate with the Fleetspeak client. Consult the documentation about the details. You can also checkout the example.

Read the Fleetspeak manual to learn how to make the Fleetspeak client aware of your service and launch it as a daemon.

FAQ

  • What are the build requirements?

This library uses Protocol Buffers to communicate with Fleetspeak. To work with proto messages in Rust, it uses the rust-protobuf crate and compiles needed proto files to Rust code.


lib.rs:

A Fleetspeak client connector library.

This library exposes a set of functions for writing client-side Fleetspeak services. Each of these functions operates on a global connection object that is lazily established. If this global connection cannot be established, the library will panic (because without this connection Fleetspeak will shut the service down anyway).

Note that each service should send startup information upon its inception and continue to heartbeat from time to time to notify the Fleetspeak client that it did not get stuck.

Dependencies

~1–13MB
~102K SLoC