Subscribe to MQTT topics and push them to InfluxDB 1.x or v2

Overview

MQTT 2 InfluxDB

Subscribe to MQTT topics and push them to InfluxDB 1.x or v2

Something like Telegraf for MQTT like it does with inputs.mqtt_consumer and output.influxdb. Telegraf has its downsides which sparked the creation of this tool.

Features

  • Telegraf uses a lot of resources. This tool is easily able to run on a Raspberry Pi 1 without any problems.
  • Telegraf publishes retained messages on startup. Retained messages have happened at some point in time. Time series databases are made for exact times, not some undefined times. This tool only pushes values to InfluxDB when the time is known (right when they are published/received).
  • Telegraf uses a loop every n seconds which gets the timing of MQTT messages wrong. This tool handles MQTT messages exactly when they arrive (and buffers them for better performance).
  • Some devices use values like true or on which are annoying to visualize. This tool migrates values like this into 1.0 and 0.0.
  • Telegraf publishes the values with a topic tag. This is fine but results in a lot of regular expressions in Grafana. This tool also sets the tags topic1, topic2, … and from the end with topic-1, topic-2, … (negative numbers). For example for topic foo/bar/test this results in the following tags: topic1=foo, topic2=bar, topic3=test and from the end topic-1=test, topic-2=bar and topic-3=foo. Creating queries with them is way easier and probably also faster to compute for InfluxDB.

Usage

Command Line Arguments

mqtt2influxdb 0.1.0
EdJoPaTo 
Subscribe to MQTT topics and push them to InfluxDB 1.x or v2

USAGE:
    mqtt2influxdb [OPTIONS] <--influx-org |--influx-database > [TOPIC]...

ARGS:
    ...
            MQTT topics to subscribe

            [env: MQTT_TOPICS=]
            [default: #]

OPTIONS:
        --buffer-amount 
            Send the buffer when the amount of messages is reached (or the time)

            [default: 1000]

        --buffer-seconds 
            Send the buffer when the timeout in seconds has reached (or the amount)

            [default: 28.2]

    -h, --help
            Print help information

        --influx-bucket 
            InfluxDB v2 bucket to put the values in

            [env: INFLUX_BUCKET=]
            [default: mqtt]

        --influx-database 
            InfluxDB 1.x database to put the value in

            [env: INFLUX_DATABASE=]

        --influx-host 
            HTTP address of InfluxDB

            [env: INFLUX_HOST=]
            [default: http://localhost:8086/]

        --influx-org 
            InfluxDB v2 organization

            [env: INFLUX_ORG=]

        --influx-token 
            InfluxDB api token with write access

            [env: INFLUX_TOKEN]

        --mqtt-broker 
            Host on which the MQTT Broker is running

            [env: MQTT_BROKER=]
            [default: localhost]

        --mqtt-password 
            Password to access the MQTT broker. Passing the password via command line is
            insecure as the password can be read from the history!

            [env: MQTT_PASSWORD]

        --mqtt-port 
            Port on which the MQTT Broker is running

            [env: MQTT_PORT=]
            [default: 1883]

        --mqtt-user 
            Username to access the MQTT broker. Anonymous access when not supplied.

            [env: MQTT_USERNAME=]

    -v, --verbose
            Show more details

    -V, --version
            Print version information

Useful Resources

Alternatives

Comments
  • build(cargo): bump clap from 3.1.18 to 3.2.2

    build(cargo): bump clap from 3.1.18 to 3.2.2

    Bumps clap from 3.1.18 to 3.2.2.

    Release notes

    Sourced from clap's releases.

    v3.2.2

    [3.2.2] - 2022-06-14

    Fixes

    • (derive) Improve the highlighted code for deprecation warnings

    gated behind unstable-v4

    • (derive) Default to #[clap(value_parser, action)] instead of #[clap(parse)] (#3827)

    v3.2.0

    [3.2.0] - 2022-06-13

    Features

    • Parsed, typed arguments via Arg::value_parser / ArgMatches::{get_one,get_many} (#2683, #3732)
      • Several built-in TypedValueParsers available with an API open for expansion
      • value_parser!(T) macro for selecting a parser for a given type (#3732) and open to expansion via the ValueParserFactory trait (#3755)
      • [&str] is implicitly a value parser for possible values
      • All ArgMatches getters do not assume required arguments (#2505)
      • Add ArgMatches::remove_* variants to transfer ownership
      • Add ArgMatches::try_* variants to avoid panics for developer errors (#3621)
      • Add a get_raw to access the underlying OsStrs
      • PathBuf value parsers imply ValueHint::AnyPath for completions (#3732)
    • Explicit control over parsing via Arg::action (#3774)
      • ArgAction::StoreValue: existing takes_value(true) behavior
      • ArgAction::IncOccurrences: existing takes_value(false) behavior
      • ArgAction::Help: existing --help behavior
      • ArgAction::Version: existing --version behavior
      • ArgAction::Set: Overwrite existing values (like Arg::multiple_occurrences mixed with Command::args_override_self) (#3777)
      • ArgAction::Append: like Arg::multiple_occurrences (#3777)
      • ArgAction::SetTrue: Treat --flag as --flag=true (#3775)
        • Implies Arg::default_value("false") (#3786)
        • Parses Arg::env via Arg::value_parser
      • ArgAction::SetFalse: Treat --flag as --flag=false (#3775)
        • Implies Arg::default_value("true") (#3786)
        • Parses Arg::env via Arg::value_parser
      • ArgAction::Count: Treat --flag --flag --flag as --flag=1 --flag=2 --flag=3 (#3775)
        • Implies Arg::default_value("0") (#3786)
        • Parses Arg::env via Arg::value_parser
    • (derive) Opt-in to new Arg::value_parser / Arg::action with either #[clap(value_parser)] (#3589, #3742) / #[clap(action)] attributes (#3794)
      • Default ValueParser is determined by value_parser! (#3199, #3496)
      • Default ArgAction is determine by a hard-coded lookup on the type (#3794)
    • Command::multicall is now stable for busybox-like programs and REPLs (#2861, #3684)
    • ArgMatches::{try_,}contains_id for checking if there are values for an argument that mirrors the new get_{one,many} API

    Fixes

    parser

    • Set ArgMatches::value_source and ArgMatches::occurrences_of for external subcommands (#3732)

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [3.2.2] - 2022-06-14

    Fixes

    • (derive) Improve the highlighted code for deprecation warnings

    gated behind unstable-v4

    • (derive) Default to #[clap(value_parser, action)] instead of #[clap(parse)] (#3827)

    [3.2.1] - 2022-06-13

    [3.2.0] - 2022-06-13

    Compatibility

    MSRV is now 1.56.0 (#3732)

    Behavior

    • Defaults no longer satisfy required and its variants (#3793)
    • When misusing ArgMatches::value_of and friends, debug asserts were turned into panics

    Moving (old location deprecated)

    • clap::{PossibleValue, ValueHint} to clap::builder::{PossibleValue, ValueHint}
    • clap::{Indices, OsValues, ValueSource, Values} to clap::parser::{Indices, OsValues, ValueSource, Values}
    • clap::ArgEnum to clap::ValueEnum (#3799)

    Replaced

    • Arg::allow_invalid_utf8 with Arg::value_parser(value_parser!(PathBuf)) (#3753)
    • Arg::validator / Arg::validator_os with Arg::value_parser (#3753)
    • Arg::validator_regex with users providing their own builder::TypedValueParser (#3756)
    • Arg::forbid_empty_values with builder::NonEmptyStringValueParser / builder::PathBufValueParser (#3753)
    • Arg::possible_values with Arg::value_parser([...]), builder::PossibleValuesParser, or builder::EnumValueParser (#3753)
    • Arg::max_occurrences with arg.action(ArgAction::Count).value_parser(value_parser!(u8).range(..N)) for flags (#3797)
    • Arg::multiple_occurrences with ArgAction::Append or ArgAction::Count though positionals will need Arg::multiple_values (#3772, #3797)
    • Command::args_override_self with ArgAction::Set (#2627, #3797)
    • AppSettings::NoAutoVersion with ArgAction or Command::disable_version_flag (#3800)
    • AppSettings::NoHelpVersion with ArgAction or Command::disable_help_flag / Command::disable_help_subcommand (#3800)
    • ArgMatches::{value_of, value_of_os, value_of_os_lossy, value_of_t} with ArgMatches::{get_one,remove_one} (#3753)
    • ArgMatches::{values_of, values_of_os, values_of_os_lossy, values_of_t} with ArgMatches::{get_many,remove_many} (#3753)
    • ArgMatches::is_valid_arg with ArgMatches::{try_get_one,try_get_many} (#3753)
    • ArgMatches::occurrences_of with ArgMatches::value_source or ArgAction::Count (#3797)
    • ArgMatches::is_present with ArgMatches::contains_id or ArgAction::SetTrue (#3797)
    • ArgAction::StoreValue with ArgAction::Set or ArgAction::Append (#3797)
    • ArgAction::IncOccurrences with ArgAction::SetTrue or ArgAction::Count (#3797)
    • (derive) #[clap(parse(...))] replaced with: (#3589, #3794)
      • For default parsers (no parse attribute), deprecation warnings can be silenced by opting into the new behavior by adding either #[clap(action)] or #[clap(value_parser)] (ie requesting the default behavior for these attributes). Alternatively, the unstable-v4 feature changes the default away from parse to action/value_parser.

    ... (truncated)

    Commits
    • 3823df9 chore: Release
    • 8a659bc docs: Update changelog
    • ceb7ee4 Merge pull request #3860 from epage/panic
    • 01da890 fix(parser): Don't panic on --=
    • dabb571 Merge pull request #3853 from dtolnay-contrib/valuevalidation
    • 690530a Fix typo in ErrorKind::ValueValidation message
    • ae78f88 Merge pull request #3852 from epage/msrv
    • 82d70d8 chore: Bump MSRV from 1.56.0 to 1.56.1
    • 8c28bec Merge pull request #3851 from tshepang/trim-manifest
    • 806f634 chore: trim Cargo manifest fields whose values are defaults
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(cargo): bump clap_complete from 3.1.4 to 3.2.3

    build(cargo): bump clap_complete from 3.1.4 to 3.2.3

    Bumps clap_complete from 3.1.4 to 3.2.3.

    Release notes

    Sourced from clap_complete's releases.

    v3.2.3

    [3.2.3] - 2022-06-14

    Fixes

    • Moved deprecations to be behind the deprecated Cargo.toml feature (#3830)
      • For now, it is disabled by default though we are considering enabling it by default as we release the next major version to help draw attention to the deprecation migration path

    v3.2.2

    [3.2.2] - 2022-06-14

    Fixes

    • (derive) Improve the highlighted code for deprecation warnings

    gated behind unstable-v4

    • (derive) Default to #[clap(value_parser, action)] instead of #[clap(parse)] (#3827)

    v3.2.0

    [3.2.0] - 2022-06-13

    Features

    • Parsed, typed arguments via Arg::value_parser / ArgMatches::{get_one,get_many} (#2683, #3732)
      • Several built-in TypedValueParsers available with an API open for expansion
      • value_parser!(T) macro for selecting a parser for a given type (#3732) and open to expansion via the ValueParserFactory trait (#3755)
      • [&str] is implicitly a value parser for possible values
      • All ArgMatches getters do not assume required arguments (#2505)
      • Add ArgMatches::remove_* variants to transfer ownership
      • Add ArgMatches::try_* variants to avoid panics for developer errors (#3621)
      • Add a get_raw to access the underlying OsStrs
      • PathBuf value parsers imply ValueHint::AnyPath for completions (#3732)
    • Explicit control over parsing via Arg::action (#3774)
      • ArgAction::StoreValue: existing takes_value(true) behavior
      • ArgAction::IncOccurrences: existing takes_value(false) behavior
      • ArgAction::Help: existing --help behavior
      • ArgAction::Version: existing --version behavior
      • ArgAction::Set: Overwrite existing values (like Arg::multiple_occurrences mixed with Command::args_override_self) (#3777)
      • ArgAction::Append: like Arg::multiple_occurrences (#3777)
      • ArgAction::SetTrue: Treat --flag as --flag=true (#3775)
        • Implies Arg::default_value("false") (#3786)
        • Parses Arg::env via Arg::value_parser
      • ArgAction::SetFalse: Treat --flag as --flag=false (#3775)
        • Implies Arg::default_value("true") (#3786)
        • Parses Arg::env via Arg::value_parser
      • ArgAction::Count: Treat --flag --flag --flag as --flag=1 --flag=2 --flag=3 (#3775)
        • Implies Arg::default_value("0") (#3786)
        • Parses Arg::env via Arg::value_parser

    ... (truncated)

    Changelog

    Sourced from clap_complete's changelog.

    [3.2.3] - 2022-06-14

    Fixes

    • Moved deprecations to be behind the deprecated Cargo.toml feature (#3830)
      • For now, it is disabled by default though we are considering enabling it by default as we release the next major version to help draw attention to the deprecation migration path

    [3.2.2] - 2022-06-14

    Fixes

    • (derive) Improve the highlighted code for deprecation warnings

    gated behind unstable-v4

    • (derive) Default to #[clap(value_parser, action)] instead of #[clap(parse)] (#3827)

    [3.2.1] - 2022-06-13

    [3.2.0] - 2022-06-13

    Compatibility

    MSRV is now 1.56.0 (#3732)

    Behavior

    • Defaults no longer satisfy required and its variants (#3793)
    • When misusing ArgMatches::value_of and friends, debug asserts were turned into panics

    Moving (old location deprecated)

    • clap::{PossibleValue, ValueHint} to clap::builder::{PossibleValue, ValueHint}
    • clap::{Indices, OsValues, ValueSource, Values} to clap::parser::{Indices, OsValues, ValueSource, Values}
    • clap::ArgEnum to clap::ValueEnum (#3799)

    Replaced

    • Arg::allow_invalid_utf8 with Arg::value_parser(value_parser!(PathBuf)) (#3753)
    • Arg::validator / Arg::validator_os with Arg::value_parser (#3753)
    • Arg::validator_regex with users providing their own builder::TypedValueParser (#3756)
    • Arg::forbid_empty_values with builder::NonEmptyStringValueParser / builder::PathBufValueParser (#3753)
    • Arg::possible_values with Arg::value_parser([...]), builder::PossibleValuesParser, or builder::EnumValueParser (#3753)
    • Arg::max_occurrences with arg.action(ArgAction::Count).value_parser(value_parser!(u8).range(..N)) for flags (#3797)
    • Arg::multiple_occurrences with ArgAction::Append or ArgAction::Count though positionals will need Arg::multiple_values (#3772, #3797)
    • Command::args_override_self with ArgAction::Set (#2627, #3797)
    • AppSettings::NoAutoVersion with ArgAction or Command::disable_version_flag (#3800)
    • AppSettings::NoHelpVersion with ArgAction or Command::disable_help_flag / Command::disable_help_subcommand (#3800)
    • ArgMatches::{value_of, value_of_os, value_of_os_lossy, value_of_t} with ArgMatches::{get_one,remove_one} (#3753)
    • ArgMatches::{values_of, values_of_os, values_of_os_lossy, values_of_t} with ArgMatches::{get_many,remove_many} (#3753)
    • ArgMatches::is_valid_arg with ArgMatches::{try_get_one,try_get_many} (#3753)
    • ArgMatches::occurrences_of with ArgMatches::value_source or ArgAction::Count (#3797)

    ... (truncated)

    Commits
    • b4a1362 chore: Release
    • 3e80393 docs: Update changelog
    • f406d99 Merge pull request #3879 from epage/env
    • 72d206e fix(parser): Ensure globals override env vars
    • f082eb6 test(parser): Verify global/default interaction
    • 9962393 Merge pull request #3877 from epage/assert
    • 3c4e684 test: Verify auto-traits for core types
    • a05f4d3 Merge pull request #3870 from stepancheg/macro-refs
    • 5ba41d7 docs(license): Update years/holders
    • 464ef39 refactor: Put once_cell reexport into __macro_refs
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(cargo): bump rumqttc from 0.12.0 to 0.13.0

    build(cargo): bump rumqttc from 0.12.0 to 0.13.0

    Bumps rumqttc from 0.12.0 to 0.13.0.

    Changelog

    Sourced from rumqttc's changelog.

    rumqttc v0.13.0

    • Add code in rumqttc::v5, moving towards support for operating the client with MQTT 5 (#351, #393, #398)
    • Add missing self.inflight += 1 in MqttState.save_pubrel() (#389)
    • Error out when Subscription filter list is empty (#392)
    • Make public rumqttc::client::Iter (#402)

    R12


    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(cargo): bump tokio from 1.18.2 to 1.19.2

    build(cargo): bump tokio from 1.18.2 to 1.19.2

    ⚠️ Dependabot is rebasing this PR ⚠️

    Rebasing might not happen immediately, so don't worry if this takes some time.

    Note: if you make any changes to this PR yourself, they will take precedence over the rebase.


    Bumps tokio from 1.18.2 to 1.19.2.

    Release notes

    Sourced from tokio's releases.

    Tokio v1.19.2

    1.19.2 (June 6, 2022)

    This release fixes another bug in Notified::enable. (#4751)

    #4751: tokio-rs/tokio#4751

    Tokio v1.19.1

    1.19.1 (June 5, 2022)

    This release fixes a bug in Notified::enable. (#4747)

    #4747: tokio-rs/tokio#4747

    Tokio v1.19.0

    1.19.0 (June 3, 2022)

    Added

    • runtime: add is_finished method for JoinHandle and AbortHandle (#4709)
    • runtime: make global queue and event polling intervals configurable (#4671)
    • sync: add Notified::enable (#4705)
    • sync: add watch::Sender::send_if_modified (#4591)
    • sync: add resubscribe method to broadcast::Receiver (#4607)
    • net: add take_error to TcpSocket and TcpStream (#4739)

    Changed

    • io: refactor out usage of Weak in the io handle (#4656)

    Fixed

    • macros: avoid starvation in join! and try_join! (#4624)

    Documented

    • runtime: clarify semantics of tasks outliving block_on (#4729)
    • time: fix example for MissedTickBehavior::Burst (#4713)

    Unstable

    • metrics: correctly update atomics in IoDriverMetrics (#4725)
    • metrics: fix compilation with unstable, process, and rt, but without net (#4682)
    • task: add #[track_caller] to JoinSet/JoinMap (#4697)
    • task: add Builder::{spawn_on, spawn_local_on, spawn_blocking_on} (#4683)
    • task: add consume_budget for cooperative scheduling (#4498)
    • task: add join_set::Builder for configuring JoinSet tasks (#4687)
    • task: update return value of JoinSet::join_one (#4726)

    #4498: tokio-rs/tokio#4498 #4591: tokio-rs/tokio#4591 #4607: tokio-rs/tokio#4607 #4624: tokio-rs/tokio#4624 #4656: tokio-rs/tokio#4656 #4671: tokio-rs/tokio#4671 #4682: tokio-rs/tokio#4682 #4683: tokio-rs/tokio#4683 #4687: tokio-rs/tokio#4687

    ... (truncated)

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(cargo): bump clap from 3.1.1 to 3.1.3

    build(cargo): bump clap from 3.1.1 to 3.1.3

    Bumps clap from 3.1.1 to 3.1.3.

    Release notes

    Sourced from clap's releases.

    v3.1.3

    [3.1.3] - 2022-02-28

    Fixes

    • Don't panic when validating delimited defaults (#3514)

    v3.1.2

    [3.1.2] - 2022-02-23

    Fixes

    • (derive) Allow other attribute with a subcommand that has subcommands

    Documentation

    • (examples) List example topics
    • (derive) Clarify syntax and relation to builder API
    Changelog

    Sourced from clap's changelog.

    [3.1.3] - 2022-02-28

    Fixes

    • Don't panic when validating delimited defaults (#3514)

    [3.1.2] - 2022-02-23

    Fixes

    • (derive) Allow other attribute with a subcommand that has subcommands

    Documentation

    • (examples) List example topics
    • (derive) Clarify syntax and relation to builder API
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 1
  • build(cargo): bump clap from 3.2.13 to 3.2.16

    build(cargo): bump clap from 3.2.13 to 3.2.16

    Bumps clap from 3.2.13 to 3.2.16.

    Release notes

    Sourced from clap's releases.

    v3.2.16

    [3.2.16] - 2022-07-30

    Fixes

    • Ensure required arguments appear in errors when they are also members of a group (#4004)

    v3.2.15

    [3.2.15] - 2022-07-25

    Features

    • (derive) New default_values_t and default_values_os_t attributes

    v3.2.14

    [3.2.14] - 2022-07-21

    Fixes

    • A multple_values positional followed by another positional now works with multiple flags
    Changelog

    Sourced from clap's changelog.

    [3.2.16] - 2022-07-30

    Fixes

    • Ensure required arguments appear in errors when they are also members of a group (#4004)

    [3.2.15] - 2022-07-25

    Features

    • (derive) New default_values_t and default_values_os_t attributes

    [3.2.14] - 2022-07-21

    Fixes

    • A multple_values positional followed by another positional now works with multiple flags
    Commits
    • 9bd1e2f chore: Release
    • 5e52594 docs: Update changelog
    • 80ea08c Merge pull request #4006 from epage/error
    • 4c43b21 fix(parser): Include required argument in message
    • ef1424b refactor(usage): Clarify required gathering
    • b2a8fd7 chore: Release
    • 026e858 chore: Allow releasing from release branches
    • 84ae6df docs: Update changelog
    • 69b0904 Merge pull request #3987 from emersonford/default-values-t-v3-backport
    • 027a675 feat(clap_derive): Add default_values_t and default_values_os_t
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(cargo): bump clap from 3.2.8 to 3.2.13

    build(cargo): bump clap from 3.2.8 to 3.2.13

    Bumps clap from 3.2.8 to 3.2.13.

    Release notes

    Sourced from clap's releases.

    v3.2.13

    [3.2.13] - 2022-07-19

    Documentation

    • Pulled in tutorials, cookbook, and derive reference into rustdoc

    v3.2.12

    [3.2.12] - 2022-07-14

    Fixes

    • Allow an arg to declare a conflict with a group

    v3.2.11

    [3.2.11] - 2022-07-13

    Features

    • Added Arg::get_all_short_aliaes and Arg::get_all_aliases

    v3.2.10

    [3.2.10] - 2022-07-12

    Fixes

    • Loosen lifetime on Command::mut_subcommand
    Changelog

    Sourced from clap's changelog.

    [3.2.13] - 2022-07-19

    Documentation

    • Pulled in tutorials, cookbook, and derive reference into rustdoc

    [3.2.12] - 2022-07-14

    Fixes

    • Allow an arg to declare a conflict with a group

    [3.2.11] - 2022-07-13

    Features

    • Added Arg::get_all_short_aliaes and Arg::get_all_aliases

    [3.2.10] - 2022-07-12

    Fixes

    • Loosen lifetime on Command::mut_subcommand
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(cargo): bump reqwest from 0.11.10 to 0.11.11

    build(cargo): bump reqwest from 0.11.10 to 0.11.11

    Bumps reqwest from 0.11.10 to 0.11.11.

    Release notes

    Sourced from reqwest's releases.

    v0.11.11

    What's Changed

    • Add HTTP/2 keep-alive configuration methods on ClientBuilder.
    • Add ClientBuilder::http1_allow_obsolete_multiline_headers_in_responses().
    • Add impl Service<Request> for Client and &'_ Client.
    • (wasm) Add RequestBuilder::basic_auth().
    • Fix RequestBuilder::header to not override sensitive if user explicitly set on a HeaderValue.
    • Fix rustls parsing of elliptic curve private keys.
    • Fix Proxy URL parsing of some invalid targets.

    New Contributors

    Changelog

    Sourced from reqwest's changelog.

    v0.11.11

    • Add HTTP/2 keep-alive configuration methods on ClientBuilder.
    • Add ClientBuilder::http1_allow_obsolete_multiline_headers_in_responses().
    • Add impl Service<Request> for Client and &'_ Client.
    • (wasm) Add RequestBuilder::basic_auth().
    • Fix RequestBuilder::header to not override sensitive if user explicitly set on a HeaderValue.
    • Fix rustls parsing of elliptic curve private keys.
    • Fix Proxy URL parsing of some invalid targets.
    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(cargo): bump float_eq from 0.7.0 to 1.0.0

    build(cargo): bump float_eq from 0.7.0 to 1.0.0

    Bumps float_eq from 0.7.0 to 1.0.0.

    Changelog

    Sourced from float_eq's changelog.

    [1.0.0] - 2022-06-02

    Added some resource links to the documentation and promoted the crate to release version 1.0.0, as it has been stable for some time now.

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(cargo): bump anyhow from 1.0.57 to 1.0.58

    build(cargo): bump anyhow from 1.0.57 to 1.0.58

    Bumps anyhow from 1.0.57 to 1.0.58.

    Release notes

    Sourced from anyhow's releases.

    1.0.58

    • Fix some broken links in documentation
    Commits
    • 8f950ac Release 1.0.58
    • bf23b3b Merge pull request #242 from MedzikUser/master
    • d8c2388 Use upstreamed docs.rs icon in docs.rs badge
    • db82639 Fix broken doc links to anyhow macro
    • 462212b Update docs.rs badge
    • ff37db3 Check all crates in workspace for outdated deps
    • 302acad Match components in CI to rust-toolchain.toml file
    • 26023f7 Run miri in stricter miri-strict-provenance mode
    • f450657 Drop unneeded quoting from env variable in workflows yaml
    • 09e4db3 Update workflows to actions/checkout@v3
    • See full diff in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • build(cargo): bump clap from 3.1.14 to 3.1.18

    build(cargo): bump clap from 3.1.14 to 3.1.18

    Bumps clap from 3.1.14 to 3.1.18.

    Release notes

    Sourced from clap's releases.

    v3.1.18

    [3.1.18] - 2022-05-10

    Fixes

    • Fix deprecated arg_enum! for users migrating to clap3 (#3717)
    • Verify all required_unless_present_all arguments exist
    • Verify group members exist before processing group members (#3711)
    • (help) Use ... when not enough value_names are supplied

    gated behind unstable-v4

    • Verify required is not used with conditional required settings (#3660)
    • Disallow more value_names than number_of_values (#2695)
    • (parser) Assert on unknown args when using external subcommands (#3703)
    • (parser) Always fill in "" argument for external subcommands (#3263)
    • (derive) Detect escaped external subcommands that look like built-in subcommands (#3703)
    • (derive) Leave Arg::id as verbatim casing (#3282)

    v3.1.17

    [3.1.17] - 2022-05-06

    Fixes

    • Allow value names for arg! macro to have dashes when quoted, like longs

    v3.1.16

    [3.1.16] - 2022-05-06

    Fixes

    • (parser) Arg::exclusive overrides Arg::required, like other conflicts
    • (error) Don't duplicate arguments in usage
    • (error) Don't show hidden arguments in conflict error usage
    • (help) New help_template variable {name} to fix problems with {bin}
    • (help) Don't wrap URLs

    gated behind unstable-v4

    • Leading dashes in Arg::long are no longer allowed
    • (help) Use Command::display_name in the help title rather than Command::bin_name

    v3.1.15

    [3.1.15] - 2022-05-02

    Fixes

    • (error) Render actual usage for unrecognized subcommands
    • (multicall) Improve bad command error
    • (multicall) Always require a multicall command
    • (multicall) Disallow arguments on multicall parent command
    • (multicall) More consistent with rest of clap errors
    Changelog

    Sourced from clap's changelog.

    [3.1.18] - 2022-05-10

    Fixes

    • Fix deprecated arg_enum! for users migrating to clap3 (#3717)
    • Verify all required_unless_present_all arguments exist
    • Verify group members exist before processing group members (#3711)
    • (help) Use ... when not enough value_names are supplied

    gated behind unstable-v4

    • Verify required is not used with conditional required settings (#3660)
    • Disallow more value_names than number_of_values (#2695)
    • (parser) Assert on unknown args when using external subcommands (#3703)
    • (parser) Always fill in "" argument for external subcommands (#3263)
    • (derive) Detect escaped external subcommands that look like built-in subcommands (#3703)
    • (derive) Leave Arg::id as verbatim casing (#3282)

    [3.1.17] - 2022-05-06

    Fixes

    • Allow value names for arg! macro to have dashes when quoted, like longs

    [3.1.16] - 2022-05-06

    Fixes

    • (parser) Arg::exclusive overrides Arg::required, like other conflicts
    • (error) Don't duplicate arguments in usage
    • (error) Don't show hidden arguments in conflict error usage
    • (help) New help_template variable {name} to fix problems with {bin}
    • (help) Don't wrap URLs

    gated behind unstable-v4

    • Leading dashes in Arg::long are no longer allowed
    • (help) Use Command::display_name in the help title rather than Command::bin_name

    [3.1.15] - 2022-05-02

    Fixes

    • (error) Render actual usage for unrecognized subcommands
    • (multicall) Improve bad command error
    • (multicall) Always require a multicall command
    • (multicall) Disallow arguments on multicall parent command
    • (multicall) More consistent with rest of clap errors
    Commits
    • 524e36c chore: Release
    • 6635237 docs: Update changelog
    • 20d95d2 Merge pull request #3718 from epage/arg_enum
    • 52f6939 fix(macros): Add needed call for arg_enum
    • 9713cd9 Merge pull request #3712 from epage/assert
    • 7c1f912 fix(assert): Make sure group members exist before using them
    • a57a411 Merge pull request #3708 from epage/rename_sub
    • 2e35403 fix(derive): Don't change case of Arg id's (unstable)
    • f7e4dd2 refactor(derive): Divide rename_all assertions
    • ddc9d54 refactor(derive): Generalize test name
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    dependencies 
    opened by dependabot[bot] 0
  • InfluxDB Error should binary search the lines to find the line causing the error

    InfluxDB Error should binary search the lines to find the line causing the error

    When Sending hundreds of line protocol lines and one of them contains an error the whole message seems to be denied. This tool should binary search the existing lines and report which failed to send. These can then be reported back to this tool to fix the underlying issue.

    Currently the error looks like this which does not help debugging the root cause:

     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
     InfluxDB write failed HTTP status client error (400 Bad Request) for url (http://localhost:8086/write?db=mqtt)
    
    opened by EdJoPaTo 0
Releases(v0.3.1)
Owner
Full of cheese
null
Converts Hikvision camera events to MQTT

HikSink streams Hikvision camera and NVR events (motion, line crossing, tamper, illegal logins, etc.) to MQTT messages for consumption by home automat

Corner Bit 48 Dec 27, 2022
TeleMQ is an experimental MQTT broker implemented in Rust language.

TeleMQ TeleMQ is an experimental MQTT broker implemented in Rust language. The broker implements MQTT version 3.1.1 specification. License This projec

null 12 Dec 27, 2022
MQTT over QUIC

MQuicTT ?? This is a pre-alpha project, tread carefully ?? A rustlang utility/library for MQTT over QUIC. QUIC allows us to send data over multiple co

null 29 Dec 16, 2022
Export statistics of Mosquitto MQTT broker (topic: $SYS) to Prometheus

Preface The Mosquitto MQTT broker provides a number of statistics on the special $SYS/# topic (see mosquitto(8)). Build requirements As a Rust program

Bobobo-bo Bo-bobo 2 Dec 15, 2022
Pure rust mqtt cilent

NOTE: Archived. No further development under this repo. Follow progress of a different implementation here Pure rust MQTT client which strives to be s

Ather Energy Pvt Ltd 201 Dec 2, 2022
This Intelligent Transportation Systems (ITS) MQTT client based on the JSon ETSI specification transcription provides a ready to connect project for the mobility

This Intelligent Transportation Systems (ITS) MQTT client based on the JSon ETSI specification transcription provides a ready to connect project for the mobility (connected and autonomous vehicles, road side units, vulnerable road users,...). Let's connect your device or application to our Intelligent Transport Systems (ITS) platform!

Orange 4 Nov 29, 2022
Easily add metrics to your system -- and actually understand them using automatically customized Prometheus queries

Autometrics ?? ✨ Autometrics is a macro that makes it trivial to add useful metrics to any function in your codebase. Easily understand and debug your

Fiberplane 341 Feb 6, 2023
Easily add metrics to your system -- and actually understand them using automatically customized Prometheus queries

A Rust macro that makes it easy to understand the error rate, response time, and production usage of any function in your code. Jump from your IDE to

Autometrics 462 Mar 6, 2023
A small utility to wake computers up or put them to sleep over the local network

WKSL - a wake and sleep utility An experiment in writing a small CLI utility in Rust. The program lets you wake a machine on your local network up fro

Henrik Ravn 0 Nov 14, 2021
MASQ Network 121 Dec 20, 2022
An end-to-end encrypted, anonymous IP-hiding, decentralized, audio/video/file sharing/offline messaging multi-device platform built for both communications and application security and performance.

An end-to-end encrypted, anonymous IP-hiding, decentralized, audio/video/file sharing/offline messaging multi-device platform built for both communications and application security and performance.

null 2 Apr 27, 2022
A fast, stable, efficient, and lightweight intranet penetration, port forwarding tool supports multiple connections, cascading proxy, and transmission encryption

A fast, stable, efficient, and lightweight intranet penetration, port forwarding tool supports multiple connections, cascading proxy, and transmission encryption

editso 1.3k Dec 30, 2022
A proxy implement with http / socks5 in-bound and vmess out-bound, written in Rust and tokio.rs

tokio-vmess an Asynchronous proxy implement with http / socks5 in-bound and vmess out-bound, written in Rust and tokio Run example first, Fill out the

irumeria 7 Oct 3, 2022
A simple web server(and library) to display server stats over HTTP and Websockets/SSE or stream it to other systems.

x-server-stats A simple web server(and library) to display server stats over HTTP and Websockets/SSE or stream it to other systems. x-server(in x-serv

Pratyaksh 11 Oct 17, 2022
RDE1 (Rusty Data Exfiltrator) is client and server tool allowing auditor to extract files from DNS and HTTPS protocols written in Rust. 🦀

Information: RDE1 is an old personal project (end 2022) that I didn't continue development on. It's part of a list of projects that helped me to learn

Quentin Texier (g0h4n) 32 Oct 6, 2023
The gRPC library for Rust built on C Core library and futures

gRPC-rs gRPC-rs is a Rust wrapper of gRPC Core. gRPC is a high performance, open source universal RPC framework that puts mobile and HTTP/2 first. Sta

TiKV Project 1.6k Jan 7, 2023
🥧 Savoury implementation of the QUIC transport protocol and HTTP/3

quiche is an implementation of the QUIC transport protocol and HTTP/3 as specified by the IETF. It provides a low level API for processing QUIC packet

Cloudflare 7.1k Jan 8, 2023
Imagine your SSH server only listens on an IPv6 address, and where the last 6 digits are changing every 30 seconds as a TOTP code...

tosh Imagine your SSH server only listens on an IPv6 address, and where the last 6 digits are changing every 30 seconds as a TOTP code... Inspired fro

Mark Vainomaa 409 Oct 23, 2022
Library + CLI-Tool to measure the TTFB (time to first byte) of HTTP requests. Additionally, this crate measures the times of DNS lookup, TCP connect and TLS handshake.

TTFB: CLI + Lib to Measure the TTFB of HTTP/1.1 Requests Similar to the network tab in Google Chrome or Mozilla Firefox, this crate helps you find the

Philipp Schuster 24 Dec 1, 2022