115 lines
3.4 KiB
Markdown
115 lines
3.4 KiB
Markdown
|
# Examples
|
||
|
|
||
|
- `reader`: Example of reading DNSTAP from a file and printing it's content, using `dnswire_reader` (unidirectional mode)
|
||
|
- `writer`: Example of constructing a DNSTAP message and writing it to a file, using `dnswire_writer` (unidirectional mode)
|
||
|
- `receiver`: Example of receiving a DNSTAP message over a TCP connection and printing it's content, using `dnswire_reader` (bidirectional mode)
|
||
|
- `sender`: Example of constructing a DNSTAP message and sending it over a TCP connection, using `dnswire_writer` (bidirectional mode)
|
||
|
- `daemon_sender_uv`: Example of a daemon that will continuously send DNSTAP messages to connected clients (unidirectional mode), using the event engine `libuv` and `dnstap_encode_protobuf` along with `tinyframe` to encode once and send to many
|
||
|
- `client_receiver_uv`: Example of a client that will receive DNSTAP message from the daemon (unidirectional mode), using the event engine `libuv` and `dnswire_reader` with the buffer push interface
|
||
|
- `reader_sender`: Example of a reader that read DNSTAP from a file (unidirectional mode) and then sends the DNSTAP messages over a TCP connection (bidirectional mode)
|
||
|
|
||
|
## receiver and sender
|
||
|
|
||
|
These examples uses the way of connecting as implemented in the `fstrm`
|
||
|
library, the receiver listens for connections by the sender and the sender
|
||
|
connects to the receiver.
|
||
|
|
||
|
```
|
||
|
$ ./receiver 127.0.0.1 5353
|
||
|
socket
|
||
|
bind
|
||
|
listen
|
||
|
accept
|
||
|
receiving...
|
||
|
---- dnstap
|
||
|
identity: sender
|
||
|
version: 0.1.0
|
||
|
message:
|
||
|
type: MESSAGE
|
||
|
query_time: 1574765731.199945162
|
||
|
response_time: 1574765731.199945362
|
||
|
socket_family: INET
|
||
|
socket_protocol: UDP
|
||
|
query_address: 127.0.0.1
|
||
|
query_port: 12345
|
||
|
response_address: 127.0.0.1
|
||
|
response_port: 53
|
||
|
query_message_length: 27
|
||
|
query_message: dns_wire_format_placeholder
|
||
|
response_message_length: 27
|
||
|
response_message: dns_wire_format_placeholder
|
||
|
----
|
||
|
stopped
|
||
|
```
|
||
|
|
||
|
```
|
||
|
$ ./sender 127.0.0.1 5353
|
||
|
socket
|
||
|
connect
|
||
|
sending...
|
||
|
sent, stopping...
|
||
|
stopped
|
||
|
```
|
||
|
|
||
|
## daemon_sender_uv and client_receiver_uv
|
||
|
|
||
|
These examples works in the reverse way compared to `receiver` and `sender`,
|
||
|
and maybe a more traditional way, the daemon listens and accepts connections
|
||
|
from new clients, and will continuously send messages to established clients
|
||
|
that are ready to receive them.
|
||
|
|
||
|
```
|
||
|
$ ./daemon_sender_uv 127.0.0.1 5353
|
||
|
client 1 connected
|
||
|
client 1: sending control start and content type
|
||
|
client 1: sending DNSTAP
|
||
|
client 1: sending DNSTAP
|
||
|
client 1 disconnected
|
||
|
```
|
||
|
|
||
|
```
|
||
|
$ ./client_receiver_uv 127.0.0.1 5353
|
||
|
received 42 bytes
|
||
|
got control start
|
||
|
got content type DNSTAP
|
||
|
received 133 bytes
|
||
|
---- dnstap
|
||
|
identity: daemon_sender_uv
|
||
|
version: 0.1.0
|
||
|
message:
|
||
|
type: MESSAGE
|
||
|
query_time: 1574257180.95619354
|
||
|
response_time: 1574257180.95619490
|
||
|
socket_family: INET
|
||
|
socket_protocol: UDP
|
||
|
query_address: 127.0.0.1
|
||
|
query_port: 12345
|
||
|
response_address: 127.0.0.1
|
||
|
response_port: 53
|
||
|
query_message_length: 27
|
||
|
query_message: dns_wire_format_placeholder
|
||
|
response_message_length: 27
|
||
|
response_message: dns_wire_format_placeholder
|
||
|
----
|
||
|
received 133 bytes
|
||
|
---- dnstap
|
||
|
identity: daemon_sender_uv
|
||
|
version: 0.1.0
|
||
|
message:
|
||
|
type: MESSAGE
|
||
|
query_time: 1574257181.96381443
|
||
|
response_time: 1574257181.96381557
|
||
|
socket_family: INET
|
||
|
socket_protocol: UDP
|
||
|
query_address: 127.0.0.1
|
||
|
query_port: 12345
|
||
|
response_address: 127.0.0.1
|
||
|
response_port: 53
|
||
|
query_message_length: 27
|
||
|
query_message: dns_wire_format_placeholder
|
||
|
response_message_length: 27
|
||
|
response_message: dns_wire_format_placeholder
|
||
|
----
|
||
|
^C
|
||
|
```
|