The Dual-Stack Dynamic DNS client, the world's first dynamic DNS client built for IPv6.

dsddns

DsDDNS is the Dual-Stack Dynamic DNS client. A dynamic DNS client keeps your DNS records in sync with the IP addresses associated with your home Internet connection, which are subject to reassignment by your ISP.

DsDDNS is the world's first dynamic DNS client built from the ground-up for IPv6. In comparison to other dynamic DNS clients available on the Internet, including some others that support IPv6, DsDDNS features:

  • First-class support for IPv6, including the ability to update multiple hostnames within a dynamically allocated prefix—not just the one that refers to the host system.
  • Support for determining the lower bits of the address either manually or with SLAAC.
  • Support for managing multiple domains across multiple accounts and services.
  • A single binary and a single configuration file that can be deployed anywhere.
  • A YAML configuration format that supports the DRY ("don't repeat yourself") principle.

Currently, DsDDNS can manage A and AAAA records for the following services:

Installation

Grab Linux, Windows, and MacOS binaries from the releases page.

Or, to build and install your own copy,

$ go get -u github.com/YoRyan/dsddns

With systemd

For Linux servers, here is the suggested systemd service definition:

[Unit]
Description=DsDDNS Dynamic DNS Client
[Service]
ExecStart=/path/to/dsddns /etc/dsddns.conf
Restart=always
[Install]
WantedBy=multi-user.target

With Docker

If you are a Docker fan, a DsDDNS Dockerfile and Docker image are available. However, be aware that Docker does not enable IPv6 support out of the box. (Boo!) Until you manually assign a prefix, containers will not be able to use IPv6, and DsDDNS will not be able to manage AAAA records.

To use the Docker image, bind mount the configuration file to /etc/dsddns.conf.

Configuration

The configuration file is in YAML format. Its path should be supplied to as the sole argument to DsDDNS:

dsddns /etc/dsddns.conf

This file contains a list of records to manage under the records key. Here is a simple example configuration:

records:
  - type: A
    service: cloudflare,
    api_token: XXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXXXXXX
    record_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    zone_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    name: ipv4.youngryan.com
  - type: AAAA
    service: cloudflare,
    api_token: XXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXXXXXX
    record_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    zone_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    name: ipv6.youngryan.com

To test the configuration file without making any changes to your DNS records, you can add the -dryrun flag:

dsddns -dryrun /etc/dsddns.conf

(To see the other command-line flags available, run dsddns -help.)

Common fields

Some keys apply to all kinds of records, regardless of service. The following keys must be specified:

Key Type Value
type string Specifies the type of DNS record. Can be A (IPv4) or AAAA (IPv6).
service string

Specifies the dynamic DNS service that manages this record. Must be one of the following values:

  • cloudflare
  • duck
  • google

The following keys are optional:

Key Type Value
interface string Selects the source network interface to use when reading the current IP address. This setting refers to the interface used by the HTTP client; DsDDNS always reads the current IP address from a web service. The interface should be specified by its name, such as eth0. If it is not specified, the operating system selects the interface.
ip_mask_bits number Zeroes out the specified number of lower bits from the IP address. The value 64 can be used to zero out the interface identifier portion (right half) of an IPv6 address.
ip_offset string Sets the lower bits of the IP address once they have been masked with ip_mask_bits. The value should be an "offset" IP address, such as ::1, which will be added to the masked address.
ip_slaac string Sets the lower 64 bits of the IP address using the provided MAC address, such as 11:22:33:44:55:66. The EUI-64 method is used, matching the addresses generated by SLAAC. This setting overrides ip_mask_bits and ip_offset.

Per-service fields

Other keys only apply to records managed by specific services. Some of them are required by the service.

Cloudflare

Cloudflare API requests can be authenticated using your account's global API key or by issuing individual API tokens. Specify a global API key or an API token, but not both.

The following keys are mandatory for Cloudflare-managed records:

Key Type Value
api_key string If using your global API key, provide it here.
api_email string If using your global API key, provide your Cloudflare login here.
api_token string If using an API token, provide it here.
name string Specify the full domain managed by this record, including its suffix.
zone_id string Specify the identifier of your domain's DNS zone. You can obtain this with the List Zones API call.
record_id string Specify the identifier of your DNS record. You can obtain this with the List DNS Records API call.

The following keys are optional:

Key Type Value
ttl number Sets the TTL for this record's updates. If it is not specified, the value 1 (automatic) is used.
Duck DNS

The following keys are mandatory for Duck DNS-managed records:

Key Type Value
subname string The domain managed by this record. Should not include the ".duckdns.org" suffix.
token string The API token for this dynamic DNS client.
Google Domains

To use a dynamic DNS client with Google Domains, you have to set up a synthetic record for the hostname you want to manage and then generate a username/password combination for the client.

The following keys are mandatory for Google-managed records:

Key Type Value
username string The username generated for this dynamic DNS client.
password string The password generated for this client.
hostname string The FQDN for this record.

Avoiding repetition with merge keys

Because the configuration file uses YAML, you can use YAML's anchor, alias, and merge key features to consolidate information that repeats itself.

Here is an example of a configuration file that uses merge keys to centralize authentication information:

my_merges:
  - &CfYoungryanCom {
      service: cloudflare,
      api_token: XXXXXXXXXXXXXXXXXX_XXXXXXXXXXXXXXXXXXXXX,
      zone_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    }
records:
  - << : *CfYoungryanCom
    type: AAAA
    record_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    name: radio-free.youngryan.com
    ip_mask_bits: 64
    ip_offset: ::1
  - << : *CfYoungryanCom
    type: AAAA
    record_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    name: arvin.radio-free.youngryan.com
    ip_slaac: c8:5b:76:xx:xx:xx
  - << : *CfYoungryanCom
    type: AAAA
    record_id: XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
    name: shafter.radio-free.youngryan.com
    ip_slaac: 10:60:4b:xx:xx:xx
Owner
Ryan Young
Polyglot programmer-writer and citizen of the Internet.
Ryan Young
Comments
  • build(deps): bump github.com/cloudflare/cloudflare-go from 0.55.0 to 0.56.0

    build(deps): bump github.com/cloudflare/cloudflare-go from 0.55.0 to 0.56.0

    Bumps github.com/cloudflare/cloudflare-go from 0.55.0 to 0.56.0.

    Release notes

    Sourced from github.com/cloudflare/cloudflare-go's releases.

    v0.56.0

    BREAKING CHANGES:

    • pages: Changed the type of EnvVars in PagesProjectDeploymentConfigEnvironment & PagesProjectDeployment in order to properly support secrets. (cloudflare/cloudflare-go#1136)

    ENHANCEMENTS:

    DEPENDENCIES:

    Changelog

    Sourced from github.com/cloudflare/cloudflare-go's changelog.

    0.56.0 (December 5th, 2022)

    BREAKING CHANGES:

    • pages: Changed the type of EnvVars in PagesProjectDeploymentConfigEnvironment & PagesProjectDeployment in order to properly support secrets. (#1136)

    NOTES:

    ENHANCEMENTS:

    • cache_rules: add ignore option to query string struct (#1140)
    • pages: Updates bindings and other Functions related propreties. Service bindings, secrets, fail open/close and usage model are all now supported. (#1136)
    • workers: Support for Workers Analytics Engine bindings (#1133)

    DEPENDENCIES:

    • deps: bumps github.com/urfave/cli/v2 from 2.23.5 to 2.23.6 (#1139)
    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)
  • build(deps): bump docker/setup-qemu-action from 1 to 2

    build(deps): bump docker/setup-qemu-action from 1 to 2

    Bumps docker/setup-qemu-action from 1 to 2.

    Release notes

    Sourced from docker/setup-qemu-action's releases.

    v2.0.0

    • Node 16 as default runtime by @​crazy-max (#48)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.
    • chore: update dev dependencies and workflow by @​crazy-max (#43 #47)
    • Bump @​actions/core from 1.3.0 to 1.6.0 (#37 #39 #41)
    • Bump @​actions/exec from 1.0.4 to 1.1.1 (#38 #46)

    Full Changelog: https://github.com/docker/setup-qemu-action/compare/v1.2.0...v2.0.0

    v1.2.0

    • Display image information (#36)
    • Bump @​actions/core from 1.2.7 to 1.3.0 (#35)

    v1.1.0

    • Remove os limitation (#30)
    • Bump @​actions/core from 1.2.6 to 1.2.7 (#29)

    v1.0.2

    • Enhance workflow (#26)
    • Container based developer flow (#19 #20)

    v1.0.1

    • Fix CVE-2020-15228
    Commits
    • e81a89b Merge pull request #63 from crazy-max/setOutput
    • 2d3efc7 Remove workaround for setOutput
    • bfc44ea Merge pull request #62 from crazy-max/context
    • 25725d8 Use context for inputs
    • 8c1e35a Merge pull request #61 from crazy-max/exec-output
    • f3c51a3 update README
    • c47ad32 Use built-in getExecOutput
    • aa08745 Merge pull request #59 from docker/dependabot/npm_and_yarn/actions/core-1.10.0
    • 9443994 Update generated content
    • 81a47e1 Bump @​actions/core from 1.9.1 to 1.10.0
    • 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)
  • build(deps): bump docker/login-action from 1 to 2

    build(deps): bump docker/login-action from 1 to 2

    Bumps docker/login-action from 1 to 2.

    Release notes

    Sourced from docker/login-action's releases.

    v2.0.0

    • Node 16 as default runtime by @​crazy-max (#161)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.
    • chore: update dev dependencies and workflow by @​crazy-max (#170)
    • Bump @​actions/exec from 1.1.0 to 1.1.1 (#167)
    • Bump @​actions/io from 1.1.1 to 1.1.2 (#168)
    • Bump minimist from 1.2.5 to 1.2.6 (#176)
    • Bump https-proxy-agent from 5.0.0 to 5.0.1 (#182)

    Full Changelog: https://github.com/docker/login-action/compare/v1.14.1...v2.0.0

    v1.14.1

    • Revert to Node 12 as default runtime to fix issue for GHE users (#160)

    v1.14.0

    • Update to node 16 (#158)
    • Bump @​aws-sdk/client-ecr from 3.45.0 to 3.53.0 (#157)
    • Bump @​aws-sdk/client-ecr-public from 3.45.0 to 3.53.0 (#156)

    v1.13.0

    • Handle proxy settings for aws-sdk (#152)
    • Workload identity based authentication docs for GCR and GAR (#112)
    • Test login against ACR (#49)
    • Bump @​aws-sdk/client-ecr from 3.44.0 to 3.45.0 (#132)
    • Bump @​aws-sdk/client-ecr-public from 3.43.0 to 3.45.0 (#131)

    v1.12.0

    • ECR: only set credentials if username and password are specified (#128)
    • Refactor to use aws-sdk v3 (#128)

    v1.11.0

    • ECR: switch implementation to use the AWS SDK (#126)
    • ecr input to specify whether the given registry is ECR (#123)
    • Test against Windows runner (#126)
    • Update instructions for Google registry (#127)
    • Update dev workflow (#111)
    • Small changes for GHCR doc (#86)
    • Update dev dependencies (#85)
    • Bump ansi-regex from 5.0.0 to 5.0.1 (#101)
    • Bump tmpl from 1.0.4 to 1.0.5 (#100)
    • Bump @​actions/core from 1.4.0 to 1.6.0 (#94 #103)
    • Bump codecov/codecov-action from 1 to 2 (#88)
    • Bump hosted-git-info from 2.8.8 to 2.8.9 (#83)
    • Bump node-notifier from 8.0.0 to 8.0.2 (#82)
    • Bump ws from 7.3.1 to 7.5.0 (#81)
    • Bump lodash from 4.17.20 to 4.17.21 (#80)
    • Bump y18n from 4.0.0 to 4.0.3 (#79)

    v1.10.0

    • GitHub Packages Docker Registry deprecated (#78)

    ... (truncated)

    Commits
    • f4ef78c Merge pull request #299 from docker/dependabot/npm_and_yarn/aws-sdk/client-ec...
    • 9ad4ce3 Update generated content
    • 884eadd Bump @​aws-sdk/client-ecr-public from 3.53.0 to 3.186.0
    • a266232 Merge pull request #298 from docker/dependabot/npm_and_yarn/aws-sdk/client-ec...
    • f97efcf Update generated content
    • 5ae789b Bump @​aws-sdk/client-ecr from 3.53.0 to 3.186.0
    • 71c23b5 Merge pull request #292 from docker/dependabot/npm_and_yarn/actions/core-1.10.0
    • 6401d70 Update generated content
    • 67e8909 Bump @​actions/core from 1.9.1 to 1.10.0
    • 21f251a Merge pull request #275 from crazy-max/redact-aws-creds
    • 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)
  • build(deps): bump github.com/cloudflare/cloudflare-go from 0.29.0 to 0.55.0

    build(deps): bump github.com/cloudflare/cloudflare-go from 0.29.0 to 0.55.0

    Bumps github.com/cloudflare/cloudflare-go from 0.29.0 to 0.55.0.

    Release notes

    Sourced from github.com/cloudflare/cloudflare-go's releases.

    v0.55.0

    BREAKING CHANGES:

    ENHANCEMENTS:

    • device_posture_rule: add input fields crowdstrike (#1126)
    • queue: add support queue API (#1131)
    • r2: Add support for listing R2 buckets (#1063)
    • workers_domain: add support for workers domain API (#1130)
    • workers_kv: ListWorkersKVNamespaces automatically paginates all results unless PerPage is defined. (#1115)

    DEPENDENCIES:

    • deps: bumps github.com/urfave/cli/v2 from 2.23.4 to 2.23.5 (#1127)

    v0.54.0

    ENHANCEMENTS:

    • access: add support for service token rotation (#1120)
    • deps: fix import grouping, code formatting and enable goimports linter (#1121)

    DEPENDENCIES:

    • deps: bumps dependabot/fetch-metadata from 1.3.4 to 1.3.5 (#1123)
    • deps: bumps github.com/urfave/cli/v2 from 2.20.3 to 2.23.0 (#1122)
    • deps: bumps github.com/urfave/cli/v2 from 2.23.0 to 2.23.2 (#1124)
    • deps: bumps github.com/urfave/cli/v2 from 2.23.2 to 2.23.4 (#1125)

    v0.53.0

    BREAKING CHANGES:

    • account_member: CreateAccountMember has been updated to accept a CreateAccountMemberParams struct instead of multiple parameters (#1095)
    • teams_list: updated methods to match the experimental client format (#1114)

    ENHANCEMENTS:

    • account_member: add support for domain scoped roles (#1095)
    • cloudflare: expose Messages from the Response object (#1106)

    ... (truncated)

    Changelog

    Sourced from github.com/cloudflare/cloudflare-go's changelog.

    0.55.0 (November 23th, 2022)

    BREAKING CHANGES:

    ENHANCEMENTS:

    • device_posture_rule: add input fields crowdstrike (#1126)
    • queue: add support queue API (#1131)
    • r2: Add support for listing R2 buckets (#1063)
    • workers_domain: add support for workers domain API (#1130)
    • workers_kv: ListWorkersKVNamespaces automatically paginates all results unless PerPage is defined. (#1115)

    DEPENDENCIES:

    • deps: bumps github.com/urfave/cli/v2 from 2.23.4 to 2.23.5 (#1127)

    0.54.0 (November 9th, 2022)

    ENHANCEMENTS:

    • access: add support for service token rotation (#1120)
    • deps: fix import grouping, code formatting and enable goimports linter (#1121)

    DEPENDENCIES:

    • deps: bumps dependabot/fetch-metadata from 1.3.4 to 1.3.5 (#1123)
    • deps: bumps github.com/urfave/cli/v2 from 2.20.3 to 2.23.0 (#1122)
    • deps: bumps github.com/urfave/cli/v2 from 2.23.0 to 2.23.2 (#1124)
    • deps: bumps github.com/urfave/cli/v2 from 2.23.2 to 2.23.4 (#1125)

    0.53.0 (October 26th, 2022)

    BREAKING CHANGES:

    • account_member: CreateAccountMember has been updated to accept a CreateAccountMemberParams struct instead of multiple parameters (#1095)
    • teams_list: updated methods to match the experimental client format (#1114)

    ENHANCEMENTS:

    ... (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)
  • build(deps): bump actions/checkout from 2 to 3

    build(deps): bump actions/checkout from 2 to 3

    Bumps actions/checkout from 2 to 3.

    Release notes

    Sourced from actions/checkout's releases.

    v3.0.0

    • Updated to the node16 runtime by default
      • This requires a minimum Actions Runner version of v2.285.0 to run, which is by default available in GHES 3.4 or later.

    v2.5.0

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2...v2.5.0

    v2.4.2

    What's Changed

    Full Changelog: https://github.com/actions/checkout/compare/v2...v2.4.2

    v2.4.1

    • Fixed an issue where checkout failed to run in container jobs due to the new git setting safe.directory

    v2.4.0

    • Convert SSH URLs like org-<ORG_ID>@github.com: to https://github.com/ - pr

    v2.3.5

    Update dependencies

    v2.3.4

    v2.3.3

    v2.3.2

    Add Third Party License Information to Dist Files

    v2.3.1

    Fix default branch resolution for .wiki and when using SSH

    v2.3.0

    Fallback to the default branch

    v2.2.0

    Fetch all history for all tags and branches when fetch-depth=0

    v2.1.1

    Changes to support GHES (here and here)

    ... (truncated)

    Changelog

    Sourced from actions/checkout's changelog.

    Changelog

    v3.1.0

    v3.0.2

    v3.0.1

    v3.0.0

    v2.3.1

    v2.3.0

    v2.2.0

    v2.1.1

    • Changes to support GHES (here and here)

    v2.1.0

    v2.0.0

    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)
  • build(deps): bump docker/setup-buildx-action from 1 to 2

    build(deps): bump docker/setup-buildx-action from 1 to 2

    Bumps docker/setup-buildx-action from 1 to 2.

    Release notes

    Sourced from docker/setup-buildx-action's releases.

    v2.0.0

    • Node 16 as default runtime by @​crazy-max (#131)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.

    Full Changelog: https://github.com/docker/setup-buildx-action/compare/v1.7.0...v2.0.0

    v1.7.0

    • Standalone mode by @​crazy-max in (#119)
    • Update dev dependencies and workflow by @​crazy-max (#114 #130)
    • Bump tmpl from 1.0.4 to 1.0.5 (#108)
    • Bump ansi-regex from 5.0.0 to 5.0.1 (#109)
    • Bump @​actions/core from 1.5.0 to 1.6.0 (#110)
    • Bump actions/checkout from 2 to 3 (#126)
    • Bump @​actions/tool-cache from 1.7.1 to 1.7.2 (#128)
    • Bump @​actions/exec from 1.1.0 to 1.1.1 (#129)
    • Bump minimist from 1.2.5 to 1.2.6 (#132)
    • Bump codecov/codecov-action from 2 to 3 (#133)
    • Bump semver from 7.3.5 to 7.3.7 (#136)

    v1.6.0

    • Add config-inline input (#106)
    • Bump @​actions/core from 1.4.0 to 1.5.0 (#104)
    • Bump codecov/codecov-action from 1 to 2 (#101)

    v1.5.1

    • Explicit version spec for caching (#100)

    v1.5.0

    • Allow building buildx from source (#99)

    v1.4.1

    • Fix docker: invalid reference format (#97)

    v1.4.0

    • Update dev deps (#95)
    • Use built-in getExecOutput (#94)
    • Use core.getBooleanInput (#93)
    • Bump @​actions/exec from 1.0.4 to 1.1.0 (#85)
    • Bump y18n from 4.0.0 to 4.0.3 (#91)
    • Bump hosted-git-info from 2.8.8 to 2.8.9 (#89)
    • Bump ws from 7.3.1 to 7.5.0 (#90)
    • Bump @​actions/tool-cache from 1.6.1 to 1.7.1 (#82 #86)
    • Bump @​actions/core from 1.2.7 to 1.4.0 (#80 #87)

    v1.3.0

    • Display BuildKit version (#72)

    v1.2.0

    • Remove os limitation (#71)
    • Add test job for config input (#68)

    ... (truncated)

    Commits
    • 8c0edbc Merge pull request #175 from crazy-max/input-list-quotes
    • 1fb9cbd escape surrounding quotes for platforms input
    • 693fdd6 Merge pull request #174 from crazy-max/input-quote
    • fe4c1ac preserve quotes surrounding fields in input list
    • c74574e Merge pull request #172 from docker/dependabot/npm_and_yarn/csv-parse-5.3.1
    • 2d0cf98 update generated content
    • 5f1d4ea Bump csv-parse from 5.3.0 to 5.3.1
    • 59b5ed6 Merge pull request #165 from crazy-max/append
    • bd61d52 update generated content
    • f6efb5f platforms input
    • 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)
  • build(deps): bump docker/metadata-action from 3 to 4

    build(deps): bump docker/metadata-action from 3 to 4

    Bumps docker/metadata-action from 3 to 4.

    Release notes

    Sourced from docker/metadata-action's releases.

    v4.0.0

    • Node 16 as default runtime by @​crazy-max (#176)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.
    • Do not sanitize before pattern matching by @​crazy-max (#201)
      • Breaking change with type=match pattern matching

    Full Changelog: https://github.com/docker/metadata-action/compare/v3.8.0...v4.0.0

    v3.8.0

    Full Changelog: https://github.com/docker/metadata-action/compare/v3.7.0...v3.8.0

    v3.7.0

    • Handle comments for multi-line inputs (#172)
    • Missing json output in action.yml (#167)
    • Update dev dependencies and workflow (#175)
    • Bump minimist from 1.2.5 to 1.2.6 (#182)
    • Bump moment from 2.29.1 to 2.29.2 (#180)
    • Bump @​actions/github from 5.0.0 to 5.0.1 (#179)
    • Bump node-fetch from 2.6.1 to 2.6.7 (#173)

    v3.6.2

    • Handle raw statement for pre-release (#155 #156)

    v3.6.1

    • Preserve quotes inside unquoted field (#153)

    v3.6.0

    • base_ref global expression (#142)
    • Trim tags and flavor inputs (#143)
    • Bump @​actions/core from 1.5.0 to 1.6.0 (#135)
    • Bump ansi-regex from 5.0.0 to 5.0.1 (#134)
    • Bump tmpl from 1.0.4 to 1.0.5 (#132)
    • Bump csv-parse from 4.16.0 to 4.16.3 (#131)

    v3.5.0

    • Add global expression date (#121)
    • Bump @​actions/core from 1.4.0 to 1.5.0 (#122)

    v3.4.1

    • Only return edge if branch matches (#115)

    v3.4.0

    • PEP 440 support (#108)

    ... (truncated)

    Upgrade guide

    Sourced from docker/metadata-action's upgrade guide.

    Upgrade notes

    v2 to v3

    • Repository has been moved to docker org. Replace crazy-max/ghaction-docker-meta@v2 with docker/metadata-action@v4
    • The default bake target has been changed: ghaction-docker-meta > docker-metadata-action

    v1 to v2

    inputs

    New Unchanged Removed
    tags images tag-sha
    flavor sep-tags tag-edge
    labels sep-labels tag-edge-branch
    tag-semver
    tag-match
    tag-match-group
    tag-latest
    tag-schedule
    tag-custom
    tag-custom-only
    label-custom

    tag-sha

    tags: |
      type=sha
    

    tag-edge / tag-edge-branch

    tags: |
      # default branch
    </tr></table> 
    

    ... (truncated)

    Commits
    • 5739616 Merge pull request #237 from docker/dependabot/npm_and_yarn/csv-parse-5.3.1
    • 473bdc5 update generated content
    • ebedea2 Bump csv-parse from 5.3.0 to 5.3.1
    • d00b20e Merge pull request #239 from crazy-max/github-sha
    • a99e71c revert changes to set associated head sha on pull request event
    • 12cce9e Merge pull request #236 from crazy-max/setOutput
    • f17e188 Remove workaround for setOutput
    • 210d783 Merge pull request #235 from crazy-max/update-docs
    • 5f26473 docs: update links and layout
    • 49e79e3 docs: priority attribute
    • 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)
  • build(deps): bump docker/build-push-action from 2 to 3

    build(deps): bump docker/build-push-action from 2 to 3

    Bumps docker/build-push-action from 2 to 3.

    Release notes

    Sourced from docker/build-push-action's releases.

    v3.0.0

    • Node 16 as default runtime by @​crazy-max (#564)
      • This requires a minimum Actions Runner version of v2.285.0, which is by default available in GHES 3.4 or later.
    • Standalone mode support by @​crazy-max (#601 #609)
    • chore: update dev dependencies and workflow by @​crazy-max (#571)
    • Bump @​actions/exec from 1.1.0 to 1.1.1 (#573)
    • Bump @​actions/github from 5.0.0 to 5.0.1 (#582)
    • Bump minimist from 1.2.5 to 1.2.6 (#584)
    • Bump semver from 7.3.5 to 7.3.7 (#595)
    • Bump csv-parse from 4.16.3 to 5.0.4 (#533)

    Full Changelog: https://github.com/docker/build-push-action/compare/v2.10.0...v3.0.0

    v2.10.0

    • Add imageid output and use metadata to set digest output (#569)
    • Add build-contexts input (#563)
    • Enhance outputs display (#559)

    v2.9.0

    • add-hosts input (#553 #555)
    • Fix git context subdir example and improve README (#552)
    • Add e2e tests for ACR (#548)
    • Add description on github-token option to README (#544)
    • Bump node-fetch from 2.6.1 to 2.6.7 (#549)

    v2.8.0

    • Allow specifying subdirectory with default git context (#531)
    • Add cgroup-parent, shm-size, ulimit inputs (#501)
    • Don't set outputs if empty or nil (#470)
    • docs: example to sanitize tags with metadata-action (#476)
    • docs: wrong syntax to sanitize repo slug (#475)
    • docs: test before pushing your image (#455)
    • readme: remove v1 section (#500)
    • ci: virtual env file system info (#510)
    • dev: update workflow (#499)
    • Bump @​actions/core from 1.5.0 to 1.6.0 (#160)
    • Bump ansi-regex from 5.0.0 to 5.0.1 (#469)
    • Bump tmpl from 1.0.4 to 1.0.5 (#465)
    • Bump csv-parse from 4.16.0 to 4.16.3 (#451 #459)

    v2.7.0

    • Add metadata output (#412)
    • Bump @​actions/core from 1.4.0 to 1.5.0 (#439)
    • Add note to sanitize tags (#426)
    • Cache backend API docs (#406)
    • Git context now supports subdir (#407)
    • Bump codecov/codecov-action from 1 to 2 (#415)

    v2.6.1

    • Small typo and ensure trimmed output (#400)

    ... (truncated)

    Commits
    • c56af95 Merge pull request #704 from crazy-max/setOutput
    • 75aaa63 Remove workaround for setOutput
    • f97d6e2 Merge pull request #700 from crazy-max/update-docs
    • 47c00d7 ci: secret job to check for invalid secrets
    • 871b930 docs: update links and layout
    • 105bf59 docs: copy between registries with buildx
    • 48888e0 Merge pull request #699 from crazy-max/docs-outputs
    • 6b820ad docs: note about multiple outputs
    • e1a1035 Merge pull request #665 from baibaratsky/patch-1
    • 0f5a7d4 docs: named contexts
    • 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)
  • build(deps): bump github/codeql-action from 1 to 2

    build(deps): bump github/codeql-action from 1 to 2

    Bumps github/codeql-action from 1 to 2.

    Changelog

    Sourced from github/codeql-action's changelog.

    Commits
    • c61f4c6 Merge pull request #1391 from github/alexet/update-2.11.4-v2
    • ad7ca9b Add some new tests and fix some comments
    • f79028a Add the feature to bypass the toolcache for kotlin and swift
    • 909c868 Test Linux against Swift 5.7
    • 5b7c9da Add the bypass_toolcache_kotlin_switft_enabled flag
    • ce90479 Test latest and nightly-latest against Swift 5.7.1
    • d52e657 Update default CodeQL bundle version to 2.11.4
    • 187515b Merge pull request #1390 from github/henrymercer/remove-dead-code
    • bc341c5 Remove fallback logic for GHES 2.22 when determining Action repository
    • 39fe7aa Remove dead guard for GHES 3.0
    • 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)
  • build(deps): bump github.com/cloudflare/cloudflare-go from 0.55.0 to 0.57.1

    build(deps): bump github.com/cloudflare/cloudflare-go from 0.55.0 to 0.57.1

    Bumps github.com/cloudflare/cloudflare-go from 0.55.0 to 0.57.1.

    Release notes

    Sourced from github.com/cloudflare/cloudflare-go's releases.

    v0.57.1

    ENHANCEMENTS:

    • tiered_cache: Add support for Tiered Caching interactions for setting Smart and Generic topologies (#1149)

    BUG FIXES:

    • workers: correctly set body value for non-ES module uploads (#1155)

    v0.57.0

    REAKING CHANGES:

    • workers: API operations now target account level resources instead of older zone level resources (these are a 1:1 now) (#1137)
    • workers: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_bindings: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_cron_triggers: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_kv: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_routes: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_secrets: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_tails: method signatures have been updated to align with the upcoming client conventions (#1137)

    NOTES:

    • workers: all worker methods have been split into product ownership(-ish) files (#1137)
    • workers: all worker methods now require an explicit ResourceContainer for endpoints instead of relying on the globally defined api.AccountID (#1137)

    ENHANCEMENTS:

    • managed_networks: add CRUD functionality for managednetworks (#1148)

    DEPENDENCIES:

    • deps: bumps goreleaser/goreleaser-action from 3.2.0 to 4.1.0 (#1146)

    v0.56.0

    BREAKING CHANGES:

    • pages: Changed the type of EnvVars in PagesProjectDeploymentConfigEnvironment & PagesProjectDeployment in order to properly support secrets. (cloudflare/cloudflare-go#1136)

    ENHANCEMENTS:

    DEPENDENCIES:

    Changelog

    Sourced from github.com/cloudflare/cloudflare-go's changelog.

    0.57.1 (December 23rd, 2022)

    ENHANCEMENTS:

    • tiered_cache: Add support for Tiered Caching interactions for setting Smart and Generic topologies (#1149)

    BUG FIXES:

    • workers: correctly set body value for non-ES module uploads (#1155)

    0.57.0 (December 22nd, 2022)

    BREAKING CHANGES:

    • workers: API operations now target account level resources instead of older zone level resources (these are a 1:1 now) (#1137)
    • workers: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_bindings: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_cron_triggers: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_kv: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_routes: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_secrets: method signatures have been updated to align with the upcoming client conventions (#1137)
    • workers_tails: method signatures have been updated to align with the upcoming client conventions (#1137)

    NOTES:

    • workers: all worker methods have been split into product ownership(-ish) files (#1137)
    • workers: all worker methods now require an explicit ResourceContainer for endpoints instead of relying on the globally defined api.AccountID (#1137)

    ENHANCEMENTS:

    • managed_networks: add CRUD functionality for managednetworks (#1148)

    DEPENDENCIES:

    • deps: bumps goreleaser/goreleaser-action from 3.2.0 to 4.1.0 (#1146)

    0.56.0 (December 5th, 2022)

    BREAKING CHANGES:

    • pages: Changed the type of EnvVars in PagesProjectDeploymentConfigEnvironment & PagesProjectDeployment in order to properly support secrets. (#1136)

    NOTES:

    ENHANCEMENTS:

    • cache_rules: add ignore option to query string struct (#1140)
    • pages: Updates bindings and other Functions related propreties. Service bindings, secrets, fail open/close and usage model are all now supported. (#1136)

    ... (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)
Render minecraft: bedrock worlds using dragonfly
Render minecraft: bedrock worlds using dragonfly

worldrenderer render minecraft: bedrock worlds using dragonfly

Dec 25, 2022
SOCKS Protocol Version 5 Library in Go. Full TCP/UDP and IPv4/IPv6 support

socks5 中文 SOCKS Protocol Version 5 Library. Full TCP/UDP and IPv4/IPv6 support. Goals: KISS, less is more, small API, code is like the original protoc

Jan 8, 2023
Sep 23, 2022
Quickly find all IPv6 and IPv4 hosts in a LAN.

invaentory Quickly find all IPv6 and IPv4 hosts in a LAN. Overview ?? This project is a work-in-progress! Instructions will be added as soon as it is

May 17, 2022
CoreRAD is an extensible and observable IPv6 Neighbor Discovery Protocol router advertisement daemon. Apache 2.0 Licensed.
CoreRAD is an extensible and observable IPv6 Neighbor Discovery Protocol router advertisement daemon. Apache 2.0 Licensed.

CoreRAD CoreRAD is an extensible and observable IPv6 Neighbor Discovery Protocol router advertisement daemon. Apache 2.0 Licensed. To get started with

Nov 14, 2022
Hetzner-dns-updater - A simple tool to update a DNS record via Hetzner DNS API. Used for simple HA together with Nomad

hetzner-dns-updater A small utility tool to update a single record via Hetzner D

Feb 12, 2022
Dynamic dns for name.com

name-ddns Dynamic DNS for Name.com using v4 name.com API Usage docker run --rm \ -e "NAME_DDNS_USER=namecom-user" \ -e "NAME_DDNS_TOKEN=namecom-toke

Aug 17, 2022
Self-hosted and Easy-to-deploy Cloudflare based Dynamic DNS service for router
Self-hosted and Easy-to-deploy Cloudflare based Dynamic DNS service for router

Self-hosted and Easy-to-deploy Cloudflare based Dynamic DNS service for router Contents Features Environment Variables Installation Heroku Docker (Run

Oct 9, 2022
DNS Ping: to check packet loss and latency issues with DNS servers

DNSping DNS Ping checks packet loss and latency issues with DNS servers Installation If you have golang, easiest install is go get -u fortio.org/dnspi

Nov 18, 2022
Verify IP addresses of respectful crawlers like Googlebot by reverse dns and forward dns lookups
Verify IP addresses of respectful crawlers like Googlebot by reverse dns and forward dns lookups

goodbots - trust but verify goodbots verifies the IP addresses of respectful crawlers like Googlebot by performing reverse dns and forward dns lookups

Aug 16, 2022
netcup DNS module for caddy: dns.providers.netcup

netcup DNS module for Caddy This package contains a DNS provider module for Caddy. It can be used to manage DNS records with the netcup DNS API using

Nov 9, 2022
A fork on miekg/dns (since I've already forked zmap/dns)

Alternative (more granular) approach to a DNS library Less is more. Complete and usable DNS library. All Resource Records are supported, including the

Jan 19, 2022
A simple DNS forwarder that forwards DNS queries to various upstreams

A simple DNS forwarder that forwards DNS queries to various upstreams. If an upstream returns NXDomain, the next upstream is tried.

Jul 8, 2022
Used gRPC for the first time, and it was a amazing developer experience

gRPC Used gRPC for the first time, and it was a amazing developer experience. Edge points of using gPRC which I felt: Structured Code Uniform request

Oct 11, 2021
Reflections on a first-run of a very simple Go project.

Go-Example Working example of the write-up posted on my blog. Installation Set GOPATH to this (root) folder. On Unix-like systems: export GOPATH=. In

Nov 13, 2021
App with CRUD for user, with palindrome checker for user's first and last name

Run db container first, so that app does not connect to db while db has not started yet docker-compose up -d db docker-compose up -d app CRUD endpoint

Dec 9, 2021
A Minecraft scanner written in Golang (first Golang project)

__ __/ \__ Gothyc A Minecraft port scanner written in Go. ?? / \__/ \__ \__/ \__/ \ Version 0.3.0 \__/ \__/ Author @toas

Nov 6, 2022
Keeps track of Steam Deck Verifications. On first run, it reports all games with their respective Steam Deck Verification status. On subsequent runs, the tool will report newly tested and updated games.

Keeps track of Steam Deck Verifications. On first run, it reports all games with their respective Steam Deck Verification status. On subsequent runs, the tool will report newly tested and updated games.

Feb 2, 2022
Diameter stack and Base Protocol (RFC 6733) for the Go programming language

Diameter Base Protocol Package go-diameter is an implementation of the Diameter Base Protocol RFC 6733 and a stack for the Go programming language. St

Dec 28, 2022