4 #include "proto/service.grpc.pb.h"
5 #include "proto/service.pb.h"
9 #include <grpcpp/server_context.h>
10 #include <grpcpp/support/sync_stream.h>
12 #include <tins/sniffer.h>
13 #include <unordered_map>
20 class Service :
public proto::Sniffer::Service {
22 Service(
const std::filesystem::path &save_path,
23 const std::filesystem::path &sniff_path,
25 bool save_on_shutdown =
false);
27 std::optional<uuid::UUIDv4>
33 const proto::SnifferCreateRequest *request,
34 proto::SnifferID *reply)
override;
37 const proto::SnifferID *request,
38 proto::Empty *reply)
override;
40 grpc::Status
SnifferList(grpc::ServerContext *context,
41 const proto::Empty *request,
42 proto::SnifferListResponse *reply)
override;
45 const proto::SnifferID *request,
46 proto::APListResponse *reply)
override;
49 const proto::APGetRequest *request,
50 proto::APGetResponse *reply)
override;
54 const proto::APProvidePasswordRequest *request,
55 proto::APProvidePasswordResponse *reply)
override;
58 grpc::ServerContext *context,
59 const proto::APGetDeryptedStreamRequest *request,
60 grpc::ServerWriter<proto::Packet> *writer)
override;
63 const proto::APDeauthRequest *request,
64 proto::Empty *reply)
override;
68 const proto::APDeauthClientRequest *request,
69 proto::Empty *reply)
override;
72 const proto::APGetHashRequest *request,
73 proto::APGetHashResponse *reply)
override;
76 const proto::APIgnoreRequest *request,
77 proto::Empty *reply)
override;
80 const proto::SnifferID *request,
81 proto::APListResponse *reply)
override;
85 const proto::APCreateRecordingRequest *request,
86 proto::APCreateRecordingResponse *reply)
override;
88 grpc::Status
FocusStart(grpc::ServerContext *context,
89 const proto::FocusStartRequest *request,
90 proto::FocusStartResponse *reply)
override;
93 const proto::SnifferID *request,
94 proto::FocusGetActiveResponse *reply)
override;
96 grpc::Status
FocusStop(grpc::ServerContext *context,
97 const proto::SnifferID *request,
98 proto::Empty *reply)
override;
101 const proto::RecordingCreateRequest *request,
102 proto::RecordingCreateResponse *reply)
override;
105 const proto::RecordingListRequest *request,
106 proto::RecordingListResponse *reply)
override;
110 const proto::RecordingLoadDecryptedRequest *request,
111 grpc::ServerWriter<proto::Packet> *writer)
override;
115 const proto::Empty *request,
116 proto::NetworkInterfaceListResponse *reply)
override;
119 LogGetStream(grpc::ServerContext *context,
const proto::Empty *request,
120 grpc::ServerWriter<proto::LogEntry> *writer)
override;
123 std::unordered_map<uuid::UUIDv4, std::unique_ptr<Sniffer>> sniffers;
124 std::unordered_map<uuid::UUIDv4, std::unique_ptr<Sniffer>>
126 std::shared_ptr<spdlog::logger> logger;
127 const std::filesystem::path save_path;
128 const std::filesystem::path sniff_path;
130 const bool save_on_shutdown;
Service delivering an external gRPC API.
Definition: service.h:20
Service(const std::filesystem::path &save_path, const std::filesystem::path &sniff_path, const MACAddress &ignored_bssid=Sniffer::NoAddress, bool save_on_shutdown=false)
Definition: service.cpp:37
grpc::Status SnifferCreate(grpc::ServerContext *context, const proto::SnifferCreateRequest *request, proto::SnifferID *reply) override
Definition: service.cpp:116
grpc::Status SnifferList(grpc::ServerContext *context, const proto::Empty *request, proto::SnifferListResponse *reply) override
Definition: service.cpp:160
grpc::Status RecordingList(grpc::ServerContext *context, const proto::RecordingListRequest *request, proto::RecordingListResponse *reply) override
Definition: service.cpp:635
grpc::Status AccessPointListIgnored(grpc::ServerContext *context, const proto::SnifferID *request, proto::APListResponse *reply) override
Definition: service.cpp:514
void shutdown()
Definition: service.cpp:102
grpc::Status FocusStop(grpc::ServerContext *context, const proto::SnifferID *request, proto::Empty *reply) override
Definition: service.cpp:596
grpc::Status AccessPointDeauth(grpc::ServerContext *context, const proto::APDeauthRequest *request, proto::Empty *reply) override
Definition: service.cpp:385
std::optional< uuid::UUIDv4 > add_iface_sniffer(const std::string &iface_name)
Definition: service.cpp:67
grpc::Status AccessPointGetHash(grpc::ServerContext *context, const proto::APGetHashRequest *request, proto::APGetHashResponse *reply) override
Definition: service.cpp:448
grpc::Status AccessPointGet(grpc::ServerContext *context, const proto::APGetRequest *request, proto::APGetResponse *reply) override
Definition: service.cpp:197
grpc::Status RecordingLoadDecrypted(grpc::ServerContext *context, const proto::RecordingLoadDecryptedRequest *request, grpc::ServerWriter< proto::Packet > *writer) override
Definition: service.cpp:649
grpc::Status FocusStart(grpc::ServerContext *context, const proto::FocusStartRequest *request, proto::FocusStartResponse *reply) override
Definition: service.cpp:557
grpc::Status FocusGetActive(grpc::ServerContext *context, const proto::SnifferID *request, proto::FocusGetActiveResponse *reply) override
Definition: service.cpp:578
std::optional< uuid::UUIDv4 > add_file_sniffer(const std::filesystem::path &file)
Definition: service.cpp:48
grpc::Status SnifferDestroy(grpc::ServerContext *context, const proto::SnifferID *request, proto::Empty *reply) override
Definition: service.cpp:148
grpc::Status AccessPointGetDeryptedStream(grpc::ServerContext *context, const proto::APGetDeryptedStreamRequest *request, grpc::ServerWriter< proto::Packet > *writer) override
Definition: service.cpp:344
grpc::Status AccessPointProvidePassword(grpc::ServerContext *context, const proto::APProvidePasswordRequest *request, proto::APProvidePasswordResponse *reply) override
Definition: service.cpp:304
grpc::Status AccessPointDeauthClient(grpc::ServerContext *context, const proto::APDeauthClientRequest *request, proto::Empty *reply) override
Definition: service.cpp:417
grpc::Status NetworkInterfaceList(grpc::ServerContext *context, const proto::Empty *request, proto::NetworkInterfaceListResponse *reply) override
Definition: service.cpp:677
grpc::Status LogGetStream(grpc::ServerContext *context, const proto::Empty *request, grpc::ServerWriter< proto::LogEntry > *writer) override
Definition: service.cpp:686
grpc::Status AccessPointIgnore(grpc::ServerContext *context, const proto::APIgnoreRequest *request, proto::Empty *reply) override
Definition: service.cpp:484
grpc::Status AccessPointList(grpc::ServerContext *context, const proto::SnifferID *request, proto::APListResponse *reply) override
Definition: service.cpp:180
grpc::Status RecordingCreate(grpc::ServerContext *context, const proto::RecordingCreateRequest *request, proto::RecordingCreateResponse *reply) override
Definition: service.cpp:614
grpc::Status AccessPointCreateRecording(grpc::ServerContext *context, const proto::APCreateRecordingRequest *request, proto::APCreateRecordingResponse *reply) override
Definition: service.cpp:530
static MACAddress NoAddress
Definition: sniffer.h:27
Definition: access_point.cpp:22
Tins::HWAddress< 6 > MACAddress
Definition: decrypter.h:20