A clean and simple network looking glass application

Overview

lg

Build Clippy

lg is my custom Looking Glass server software for use in ZZANet. The whole application is lightweight, self-contained, and easy to use even outside of ZZANet.

Running in Docker

lg can be run in a Docker container with one simple command:

docker run --rm \
    -v $(pwd)/configs/local.json:/config/local.json:ro \
    -v $(pwd)/configs/global.json:/config/global.json:ro \
    --sysctl net.ipv6.conf.all.disable_ipv6=0 \
    -p 80:80 \
    ewpratten/lg

Note: by default, Docker will not work with the IPv6 stack. It is your responsibility to enable it.

Screenshots

You might also like...
Auto launch any application or executable at startup

Auto Launch Auto launch any application or executable at startup. Supports Windows, Mac (via AppleScript or Launch Agent), and Linux. How does it work

A example bevy application using bevy-kajiya for its renderer
A example bevy application using bevy-kajiya for its renderer

☀️ bevy-kajiya playground A example bevy application using bevy-kajiya for its renderer NOTE: only tested on Windows. For more context, check out the

Envwoman is an application, to sync your .env-files across multiple machines

Envwoman is an application, to sync your .env-files across multiple machines. The main goal is to make Envwoman secure and trustworthy, so everything is open-source and the data will never in plain-text on the server. Encryption happens client-sided via aes-gcm.

Application that simulates a large grid of Pokémon types fighting each other.
Application that simulates a large grid of Pokémon types fighting each other.

poke-fighting-rust Rust project that simulates a grid of Pokémon fighting with each other. Each Pokémon type is a pixel on the grid and is represented

A cross-platform application for custom presence on Discord.
A cross-platform application for custom presence on Discord.

Discord Presence ⚠️ macOS is NOT supported. This is due the package for setting the presence being broken on mac. It may work for some people (only wh

Open Source Application Stack & PaaS

mycelia Open Source Application Stack & PaaS Installation cargo xtask build NOTE: We opted for cargo-xtask because Cargo build.rs is not supported for

This is a simple Telegram bot with interface to Firefly III to process and store simple transactions.
This is a simple Telegram bot with interface to Firefly III to process and store simple transactions.

Firefly Telegram Bot Fireflies are free, so beautiful. (Les lucioles sont libres, donc belles.) ― Charles de Leusse, Les Contes de la nuit This is a s

Small and simple stateful applications, designed to facilitate the monitoring of unwanted behaviors of the same.

Violet Violet é um pequeno e simples monitorador de aplicação, voltado para receber eventos de erro e estado. Instalação simples: Dependencias: Docker

A simple induction and BMC engine.

Mikino is a (relatively) simple induction and BMC engine. Its goal is to serve as a simple yet interesting tool for those interested in formal verification, especially SMT-based induction.

Comments
  • Update clap requirement from 2.33 to 3.2

    Update clap requirement from 2.33 to 3.2

    Updates the requirements on clap to permit the latest version.

    Changelog

    Sourced from clap's changelog.

    [3.2.1] - 2022-06-13

    [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)
    • Use value delimiter for Arg::default_missing_values (#3761, #3765)
    • SplitArg::default_value / Arg::env on value delimiters independent of whether -- was used (#3765)
    • Allow applying defaults to flags (#3294, 3775)
    • Defaults no longer satisfy required and its variants (#3793)

    Compatibility

    MSRV is now 1.56.0 (#3732)

    ... (truncated)

    Commits

    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
  • Update clap requirement from 2.33 to 3.1

    Update clap requirement from 2.33 to 3.1

    Updates the requirements on clap to permit the latest version.

    Release notes

    Sourced from clap's releases.

    v3.1.0

    [3.1.0] - 2022-02-16

    Compatibility

    Changes in behavior of note that are not guaranteed to be compatible across releases:

    • (help) help subcommand shows long help like --help, rather than short help (-h), deprecated clap::AppSettings::UseLongFormatForHelpSubcommand (#3440)
    • (help) Pacman-style subcommands are now ordered the same as usage errors (#3470)
    • (help) Pacman-style subcommands use standard alternate syntax in usage (#3470)

    Deprecations

    • clap::Command is now preferred over clap::App (#3089 in #3472)
      • clap::command! is now preferred over clap::app_from_crate (#3089 in #3474)
      • clap::CommandFactory::command is now preferred over clap::IntoApp::into_app (#3089 in #3473)
    • (help) help subcommand shows long help like --help, rather than short help (-h), deprecated clap::AppSettings::UseLongFormatForHelpSubcommand (#3440)
    • (error) Deprecate clap::AppSettings::WaitOnError, leaving it to the user to implement
    • (validation) clap::Command::subcommand_required(true).arg_required_else_help(true) is now preferred over clap::AppSettings::SubcommandRequiredElseHelp (#3280)
    • (builder) clap::AppSettings are nearly all deprecated and replaced with builder methods and getters (#2717)
    • (builder) clap::ArgSettings is deprecated and replaced with builder methods and getters (#2717)
    • (builder) clap::Arg::id and clap::ArgGroup::id are now preferred over clap::Arg::name and clap::ArgGroup::name (#3335)
    • (help) clap::Command::next_help_heading is now preferred over clap::Command::help_heading (#1807, #1553)
    • (error) clap::error::ErrorKind is now preferred over clap::ErrorKind (#3395)
    • (error) clap::Error::kind() is now preferred over clap::Error::kind
    • (error) clap::Error::context() is now preferred over clap::Error::info (#2628)

    Note: All items deprecated in 3.0.0 are now hidden in the documentation. (#3458)

    Features

    • (matches) Add clap::ArgMatches::value_source to determine what insert the value (#1345)
    • (help) Override derived display order with clap::Command::next_display_order (#1807)
    • (error) Show possible values when an argument doesn't have a value (#3320)
    • (error) New clap::Error::context API to open the door for fully-custom error messages (#2628)
      • (error) clap::error::ErrorKind now implements Display

    Fixes

    • (builder) Some functions were renamed for consistency and fixing spelling issues
    • (builder) Allow clap::Command::color to override previous calls (#3449)
    • (parse) Propagate globals with multiple subcommands (#3428)
    • (validation) Give ArgRequiredElseHelp precedence over SubcommandRequired (#3456)
    • (validation) Default values no longer count as "present" for conflicts, requires, clap::Command::arg_required_else_help, etc (#3076, #1264)
    • (assert) Report invalid defaults (#3202)
    • (help) Clarify how to handle -h conflicts (#3403)
    • (help) Make it easier to debug the addition of help flags (#3425)
    • (help) Pacman-style subcommands are now separated with spaces (#3470)
    • (help) Pacman-style subcommands are now ordered the same as usage errors (#3470)
    • (help) Pacman-style subcommands use standard alternate syntax in usage (#3470)

    ... (truncated)

    Changelog

    Sourced from clap's changelog.

    [3.1.0] - 2022-02-16

    Compatibility

    Changes in behavior of note that are not guaranteed to be compatible across releases:

    • (help) help subcommand shows long help like --help, rather than short help (-h), deprecated clap::AppSettings::UseLongFormatForHelpSubcommand (#3440)
    • (help) Pacman-style subcommands are now ordered the same as usage errors (#3470)
    • (help) Pacman-style subcommands use standard alternate syntax in usage (#3470)

    Deprecations

    • clap::Command is now preferred over clap::App (#3089 in #3472)
      • clap::command! is now preferred over clap::app_from_crate (#3089 in #3474)
      • clap::CommandFactory::command is now preferred over clap::IntoApp::into_app (#3089 in #3473)
    • (help) help subcommand shows long help like --help, rather than short help (-h), deprecated clap::AppSettings::UseLongFormatForHelpSubcommand (#3440)
    • (error) Deprecate clap::AppSettings::WaitOnError, leaving it to the user to implement
    • (validation) clap::Command::subcommand_required(true).arg_required_else_help(true) is now preferred over clap::AppSettings::SubcommandRequiredElseHelp (#3280)
    • (builder) clap::AppSettings are nearly all deprecated and replaced with builder methods and getters (#2717)
    • (builder) clap::ArgSettings is deprecated and replaced with builder methods and getters (#2717)
    • (builder) clap::Arg::id and clap::ArgGroup::id are now preferred over clap::Arg::name and clap::ArgGroup::name (#3335)
    • (help) clap::Command::next_help_heading is now preferred over clap::Command::help_heading (#1807, #1553)
    • (error) clap::error::ErrorKind is now preferred over clap::ErrorKind (#3395)
    • (error) clap::Error::kind() is now preferred over clap::Error::kind
    • (error) clap::Error::context() is now preferred over clap::Error::info (#2628)

    Note: All items deprecated in 3.0.0 are now hidden in the documentation. (#3458)

    Features

    • (matches) Add clap::ArgMatches::value_source to determine what insert the value (#1345)
    • (help) Override derived display order with clap::Command::next_display_order (#1807)
    • (error) Show possible values when an argument doesn't have a value (#3320)
    • (error) New clap::Error::context API to open the door for fully-custom error messages (#2628)
      • (error) clap::error::ErrorKind now implements Display

    Fixes

    • (builder) Some functions were renamed for consistency and fixing spelling issues
    • (builder) Allow clap::Command::color to override previous calls (#3449)
    • (parse) Propagate globals with multiple subcommands (#3428)
    • (validation) Give ArgRequiredElseHelp precedence over SubcommandRequired (#3456)
    • (validation) Default values no longer count as "present" for conflicts, requires, clap::Command::arg_required_else_help, etc (#3076, #1264)
    • (assert) Report invalid defaults (#3202)
    • (help) Clarify how to handle -h conflicts (#3403)
    • (help) Make it easier to debug the addition of help flags (#3425)
    • (help) Pacman-style subcommands are now separated with spaces (#3470)
    • (help) Pacman-style subcommands are now ordered the same as usage errors (#3470)
    • (help) Pacman-style subcommands use standard alternate syntax in usage (#3470)
    • (error) Be consistent in showing of required attributes between errors / usage (#3390)

    ... (truncated)

    Commits
    • e6729f9 chore: Release
    • aad9fdc Merge pull request #3477 from epage/compat
    • 62c2ca4 chore: Remove compatibility crates
    • 73847b3 chore: Upgrade boilerplate
    • 9bc0af8 Merge pull request #3475 from epage/fixes
    • 3dd3993 docs(builder): Add ToC to Command, Arg
    • 94e2727 docs(builder): Clarify command-wide
    • 92d1002 docs(changelog): Add missing deprecation
    • e2136f9 docs(contrib): Align release windows
    • 15c7abb docs(parser): Fix ArgMatches::value_source documentation
    • Additional commits viewable in compare view

    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
  • Update clap requirement from 2.33 to 3.0

    Update clap requirement from 2.33 to 3.0

    Updates the requirements on clap to permit the latest version.

    Release notes

    Sourced from clap's releases.

    v3.0.1

    [3.0.1] - 2022-01-03

    Fixes

    • Don't panic when getting number of values (#3241)
    • Don't warn when using default_value_t derive attribute with a Subcommand (#3245)

    Documentation

    • Added name attribute to ArgEnum variant derive reference
    Changelog

    Sourced from clap's changelog.

    [3.0.1] - 2022-01-03

    Fixes

    • Don't panic when getting number of values (#3241)
    • Don't warn when using default_value_t derive attribute with a Subcommand (#3245)

    Documentation

    • Added name attribute to ArgEnum variant derive reference

    [3.0.0] - 2021-12-31

    Note: clap v3 has been in development for several years and has changed hands multiple times. Unfortunately, our changelog might be incomplete, whether in changes or their motivation.

    Highlights

    A special thanks to the maintainers, contributors, beta users, and sponsors who have helped along this journey, especially kbknapp.

    StructOpt Integration

    StructOpt provides a serde-like declarative approach to defining your parser. The main benefits we've seen so far from integrating are:

    • Tighter feedback between the design of clap and the derives
    • More universal traits. Crates exist for common CLI patterns (example) and we've re-designed the StructOpt traits so crates built on clap3 can be reused not just with other derives but also people using the builder API. People can even hand implement these so people using the builder API won't have the pay the cost for derives.

    Custom Help Headings

    Previously, clap automatically grouped arguments in the help as either ARGS, FLAGS, OPTIONS, and SUBCOMMANDS.

    You can now override the default group with Arg::help_heading and App::subcommand_help_heading. To apply a heading to a series of arguments, you can set App::help_heading.

    Deprecations

    While a lot of deprecations have been added to clean up the API (overloaded meaning of Arg::multiple) or make things more consistent, some particular highlights are:

    ... (truncated)

    Commits
    • d392b88 chore: Release
    • 1a19d48 docs: Update changelog
    • 3782d8e Merge pull request #3247 from epage/len
    • 5c829ff Merge pull request #3246 from epage/warn
    • e580683 fix: Don't panic when getting number of values
    • 6b9ae54 fix(derive): Don't enit warnings
    • b0cb205 docs(derive): Include name magic attribute
    • 06f24b1 Merge pull request #3243 from intgr/fix-clap_complete-documentation-imports
    • f10c5d1 docs(complete): Fix imports in documentation
    • 879219a Merge pull request #3240 from epage/heck
    • Additional commits viewable in compare view

    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
  • Update clap requirement from 2.33 to 4.0

    Update clap requirement from 2.33 to 4.0

    Updates the requirements on clap to permit the latest version.

    Changelog

    Sourced from clap's changelog.

    [4.0.0] - 2022-09-28

    Highlights

    Arg::num_args(range)

    Clap has had several ways for controlling how many values will be captured without always being clear on how they interacted, including

    • Arg::multiple_values(true)
    • Arg::number_of_values(4)
    • Arg::min_values(2)
    • Arg::max_values(20)
    • Arg::takes_value(true)

    These have now all been collapsed into Arg::num_args which accepts both single values and ranges of values. num_args controls how many raw arguments on the command line will be captured as values per occurrence and independent of value delimiters.

    See Issue 2688 for more background.

    Polishing Help

    Clap strives to give a polished CLI experience out of the box with little ceremony. With some feedback that has accumulated over time, we took this release as an opportunity to re-evaluate our --help output to make sure it is meeting that goal.

    In doing this evaluation, we wanted to keep in mind:

    • Whether other CLIs had ideas that make sense to apply
    • Providing an experience that fits within the rest of applications and works across all shells

    Before:

    git
    A fictional versioning CLI
    

    USAGE: git <SUBCOMMAND>

    OPTIONS: -h, --help Print help information

    SUBCOMMANDS: add adds things clone Clones repos help Print this message or the help of the given subcommand(s) push pushes things stash

    ... (truncated)

    Commits
    • 3a74d82 chore: Release
    • 9cd1939 Merge pull request #4269 from epage/usage
    • cb1cd67 fix(error): Include failed arg in usage in --flag=bad-value error
    • 12d76d6 fix(error): Include 'Usage:' title in --flag=bad-value error
    • 3a8d2a5 test(parser): Verify existing --flag=bad-value case
    • c7dd03e Merge pull request #4267 from jpgrayson/override-usage-help-4
    • f925ca8 docs: Clarify how to use examples
    • 7dd216b docs: Update multiline usage override rules
    • a0c8c7d docs: Clean up StyledStr entries
    • 01672f8 chore: Release
    • Additional commits viewable in compare view

    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
Owner
Evan Pratten
I build software to assist people in building software
Evan Pratten
Elegant, clean Rust development framework

Preview version, will not guarantee the stability of the API! Elegant, clean Rust development framework Core Features Relational database client for M

Ideal World 35 Dec 29, 2022
A clean implementation of Reso using Rust.

A clean implementation of Reso using Rust. The principle of Reso Rust is almost identical to Reso, only missing some functionality

Matas Minelga 12 Nov 26, 2022
Another Network Tunnel; A simple program for local/remote port forwarding over a SSH tunnel.

?? ANT Another Network Tunnel; A simple program for local/remote port forwarding over a SSH tunnel. Table of Contents Installation Pre-requisites Pre-

Hendrik Böck 20 Jun 25, 2023
Very simple Rust binary that can turn on/off a TP-Link L920 led light strip in your local network

TP-Link L920 on/off script This is a (very) simple Rust binary that can turn on/off a TP-Link L920 led light strip in your local network. Installation

Luciano Mammino 3 Aug 21, 2023
Simple tray application which shows battery level for HyperX Cloud Flight Wireless Headset.

HyperX Cloud Flight Battery Monitoring Introduction Simple tray application which shows battery level for HyperX Cloud Flight Wireless Headset. Screen

Stefan Kondinski 18 Dec 27, 2022
Private swaps for Secret Network using a private entropy pool & differential privacy.

WIP SecretSwap: Anon Edition Private swaps for Secret Network! Uses private entropy pool for differential privacy when reporting pools sizes. Swap amo

Enigma 5 Apr 5, 2022
Federated blogging application, thanks to ActivityPub (now on https://git.joinplu.me/ — this is just a mirror)

Plume Website — Documentation — Contribute — Instances list Plume is a federated blogging engine, based on ActivityPub. It is written in Rust, with th

Plume 1.9k Jan 8, 2023
QueingSimulator is an application that can be used to build intuitions about behavior of synchronous request/reply systems

Queueing Simulator QueingSimulator is an application that can be used to build intuitions about behavior of synchronous request/reply systems (such as

Joe Magerramov 7 Sep 11, 2022
An application for reading comics together.

Shared comic reader Creates a web server that serves image sets to one or more clients. When one of those clients turns a page, all other clients who

null 0 Dec 17, 2021
01 Solana program application interface.

01 abi The abi is a repository for interfacing with the 01 program either through a rust client or through CPIs from another Solana program. Program A

Zero One Global Foundation 19 Oct 16, 2022