-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
1 parent
8bed89b
commit e281a31
Showing
4 changed files
with
1,518 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,89 @@ | ||
package caddy_libp2p_listener | ||
|
||
import ( | ||
"github.com/caddyserver/caddy/v2" | ||
"github.com/caddyserver/caddy/v2/caddyconfig" | ||
"github.com/caddyserver/caddy/v2/caddyconfig/caddyfile" | ||
"github.com/caddyserver/caddy/v2/caddyconfig/httpcaddyfile" | ||
"go.uber.org/zap" | ||
"strconv" | ||
) | ||
|
||
func init() { | ||
caddy.RegisterModule(App{}) | ||
httpcaddyfile.RegisterGlobalOption("libp2p", parseAppConfig) | ||
} | ||
|
||
// App is the libp2p Caddy app used to configure libp2p nodes. | ||
type App struct { | ||
// PrivateKey is the location of the private key as a PEM file | ||
PrivateKey string `json:"private_key,omitempty" caddy:"namespace=libp2p.key"` | ||
|
||
// AdvertiseAmino indicates if the peer's addresses should be adverised in the Amino DHT | ||
// This is particularly useful for WebTransport and WebRTC which have their certificate hashes rotate | ||
// even while their peerID remains the same | ||
AdvertiseAmino bool `json:"advertise_amino,omitempty" caddy:"namespace=libp2p.advertise_amino"` | ||
|
||
logger *zap.Logger | ||
} | ||
|
||
func (App) CaddyModule() caddy.ModuleInfo { | ||
return caddy.ModuleInfo{ | ||
ID: "libp2p", | ||
New: func() caddy.Module { return new(App) }, | ||
} | ||
} | ||
|
||
func (t *App) Provision(ctx caddy.Context) error { | ||
t.logger = ctx.Logger(t) | ||
return nil | ||
} | ||
|
||
func (t *App) Start() error { | ||
return nil | ||
} | ||
|
||
func (t *App) Stop() error { | ||
return nil | ||
} | ||
|
||
func parseAppConfig(d *caddyfile.Dispenser, _ any) (any, error) { | ||
app := &App{} | ||
if !d.Next() { | ||
return app, d.ArgErr() | ||
|
||
} | ||
|
||
for d.NextBlock(0) { | ||
val := d.Val() | ||
|
||
switch val { | ||
case "advertise_amino": | ||
if d.NextArg() { | ||
v, err := strconv.ParseBool(d.Val()) | ||
if err != nil { | ||
return nil, d.WrapErr(err) | ||
} | ||
app.AdvertiseAmino = v | ||
} else { | ||
app.AdvertiseAmino = true | ||
} | ||
case "private_key": | ||
if !d.NextArg() { | ||
return nil, d.ArgErr() | ||
} | ||
app.PrivateKey = d.Val() | ||
default: | ||
return nil, d.Errf("unrecognized directive: %s", d.Val()) | ||
} | ||
} | ||
return httpcaddyfile.App{ | ||
Name: "libp2p", | ||
Value: caddyconfig.JSON(app, nil), | ||
}, nil | ||
} | ||
|
||
var ( | ||
_ caddy.App = (*App)(nil) | ||
_ caddy.Provisioner = (*App)(nil) | ||
) |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,210 @@ | ||
module github.com/aschmahmann/caddy-libp2p-listener | ||
|
||
go 1.21.4 | ||
|
||
require ( | ||
github.com/caddyserver/caddy/v2 v2.8.4 | ||
github.com/libp2p/go-libp2p v0.35.0 | ||
github.com/libp2p/go-libp2p-kad-dht v0.25.2 | ||
github.com/multiformats/go-multiaddr v0.12.4 | ||
go.uber.org/zap v1.27.0 | ||
) | ||
|
||
require ( | ||
filippo.io/edwards25519 v1.1.0 // indirect | ||
github.com/AndreasBriese/bbloom v0.0.0-20190825152654-46b345b51c96 // indirect | ||
github.com/Masterminds/goutils v1.1.1 // indirect | ||
github.com/Masterminds/semver/v3 v3.2.0 // indirect | ||
github.com/Masterminds/sprig/v3 v3.2.3 // indirect | ||
github.com/Microsoft/go-winio v0.6.0 // indirect | ||
github.com/antlr4-go/antlr/v4 v4.13.0 // indirect | ||
github.com/aryann/difflib v0.0.0-20210328193216-ff5ff6dc229b // indirect | ||
github.com/benbjohnson/clock v1.3.5 // indirect | ||
github.com/beorn7/perks v1.0.1 // indirect | ||
github.com/caddyserver/certmagic v0.21.3 // indirect | ||
github.com/caddyserver/zerossl v0.1.3 // indirect | ||
github.com/cespare/xxhash v1.1.0 // indirect | ||
github.com/cespare/xxhash/v2 v2.2.0 // indirect | ||
github.com/chzyer/readline v1.5.1 // indirect | ||
github.com/containerd/cgroups v1.1.0 // indirect | ||
github.com/coreos/go-systemd/v22 v22.5.0 // indirect | ||
github.com/cpuguy83/go-md2man/v2 v2.0.3 // indirect | ||
github.com/davecgh/go-spew v1.1.1 // indirect | ||
github.com/davidlazar/go-crypto v0.0.0-20200604182044-b73af7476f6c // indirect | ||
github.com/decred/dcrd/dcrec/secp256k1/v4 v4.3.0 // indirect | ||
github.com/dgraph-io/badger v1.6.2 // indirect | ||
github.com/dgraph-io/badger/v2 v2.2007.4 // indirect | ||
github.com/dgraph-io/ristretto v0.1.0 // indirect | ||
github.com/dgryski/go-farm v0.0.0-20200201041132-a6ae2369ad13 // indirect | ||
github.com/docker/go-units v0.5.0 // indirect | ||
github.com/dustin/go-humanize v1.0.1 // indirect | ||
github.com/elastic/gosigar v0.14.2 // indirect | ||
github.com/flynn/noise v1.1.0 // indirect | ||
github.com/francoispqt/gojay v1.2.13 // indirect | ||
github.com/go-jose/go-jose/v3 v3.0.3 // indirect | ||
github.com/go-kit/kit v0.13.0 // indirect | ||
github.com/go-kit/log v0.2.1 // indirect | ||
github.com/go-logfmt/logfmt v0.6.0 // indirect | ||
github.com/go-logr/logr v1.4.1 // indirect | ||
github.com/go-logr/stdr v1.2.2 // indirect | ||
github.com/go-sql-driver/mysql v1.7.1 // indirect | ||
github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 // indirect | ||
github.com/godbus/dbus/v5 v5.1.0 // indirect | ||
github.com/gogo/protobuf v1.3.2 // indirect | ||
github.com/golang/glog v1.2.0 // indirect | ||
github.com/golang/protobuf v1.5.4 // indirect | ||
github.com/golang/snappy v0.0.4 // indirect | ||
github.com/google/cel-go v0.20.1 // indirect | ||
github.com/google/gopacket v1.1.19 // indirect | ||
github.com/google/pprof v0.0.0-20240207164012-fb44976bdcd5 // indirect | ||
github.com/google/uuid v1.6.0 // indirect | ||
github.com/gorilla/websocket v1.5.1 // indirect | ||
github.com/hashicorp/errwrap v1.1.0 // indirect | ||
github.com/hashicorp/go-multierror v1.1.1 // indirect | ||
github.com/hashicorp/golang-lru v0.5.4 // indirect | ||
github.com/hashicorp/golang-lru/v2 v2.0.7 // indirect | ||
github.com/huandu/xstrings v1.3.3 // indirect | ||
github.com/huin/goupnp v1.3.0 // indirect | ||
github.com/imdario/mergo v0.3.12 // indirect | ||
github.com/inconshreveable/mousetrap v1.1.0 // indirect | ||
github.com/ipfs/boxo v0.10.0 // indirect | ||
github.com/ipfs/go-cid v0.4.1 // indirect | ||
github.com/ipfs/go-datastore v0.6.0 // indirect | ||
github.com/ipfs/go-log v1.0.5 // indirect | ||
github.com/ipfs/go-log/v2 v2.5.1 // indirect | ||
github.com/ipld/go-ipld-prime v0.20.0 // indirect | ||
github.com/jackc/chunkreader/v2 v2.0.1 // indirect | ||
github.com/jackc/pgconn v1.14.3 // indirect | ||
github.com/jackc/pgio v1.0.0 // indirect | ||
github.com/jackc/pgpassfile v1.0.0 // indirect | ||
github.com/jackc/pgproto3/v2 v2.3.3 // indirect | ||
github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect | ||
github.com/jackc/pgtype v1.14.0 // indirect | ||
github.com/jackc/pgx/v4 v4.18.3 // indirect | ||
github.com/jackpal/go-nat-pmp v1.0.2 // indirect | ||
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect | ||
github.com/jbenet/goprocess v0.1.4 // indirect | ||
github.com/klauspost/compress v1.17.8 // indirect | ||
github.com/klauspost/cpuid/v2 v2.2.7 // indirect | ||
github.com/koron/go-ssdp v0.0.4 // indirect | ||
github.com/libdns/libdns v0.2.2 // indirect | ||
github.com/libp2p/go-buffer-pool v0.1.0 // indirect | ||
github.com/libp2p/go-cidranger v1.1.0 // indirect | ||
github.com/libp2p/go-flow-metrics v0.1.0 // indirect | ||
github.com/libp2p/go-libp2p-asn-util v0.4.1 // indirect | ||
github.com/libp2p/go-libp2p-kbucket v0.6.3 // indirect | ||
github.com/libp2p/go-libp2p-record v0.2.0 // indirect | ||
github.com/libp2p/go-libp2p-routing-helpers v0.7.2 // indirect | ||
github.com/libp2p/go-msgio v0.3.0 // indirect | ||
github.com/libp2p/go-nat v0.2.0 // indirect | ||
github.com/libp2p/go-netroute v0.2.1 // indirect | ||
github.com/libp2p/go-reuseport v0.4.0 // indirect | ||
github.com/libp2p/go-yamux/v4 v4.0.1 // indirect | ||
github.com/manifoldco/promptui v0.9.0 // indirect | ||
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect | ||
github.com/mattn/go-colorable v0.1.13 // indirect | ||
github.com/mattn/go-isatty v0.0.20 // indirect | ||
github.com/mgutz/ansi v0.0.0-20200706080929-d51e80ef957d // indirect | ||
github.com/mholt/acmez/v2 v2.0.1 // indirect | ||
github.com/miekg/dns v1.1.59 // indirect | ||
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect | ||
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect | ||
github.com/minio/sha256-simd v1.0.1 // indirect | ||
github.com/mitchellh/copystructure v1.2.0 // indirect | ||
github.com/mitchellh/go-ps v1.0.0 // indirect | ||
github.com/mitchellh/reflectwalk v1.0.2 // indirect | ||
github.com/mr-tron/base58 v1.2.0 // indirect | ||
github.com/multiformats/go-base32 v0.1.0 // indirect | ||
github.com/multiformats/go-base36 v0.2.0 // indirect | ||
github.com/multiformats/go-multiaddr-dns v0.3.1 // indirect | ||
github.com/multiformats/go-multiaddr-fmt v0.1.0 // indirect | ||
github.com/multiformats/go-multibase v0.2.0 // indirect | ||
github.com/multiformats/go-multicodec v0.9.0 // indirect | ||
github.com/multiformats/go-multihash v0.2.3 // indirect | ||
github.com/multiformats/go-multistream v0.5.0 // indirect | ||
github.com/multiformats/go-varint v0.0.7 // indirect | ||
github.com/onsi/ginkgo/v2 v2.15.0 // indirect | ||
github.com/opencontainers/runtime-spec v1.2.0 // indirect | ||
github.com/opentracing/opentracing-go v1.2.0 // indirect | ||
github.com/pbnjay/memory v0.0.0-20210728143218-7b4eea64cf58 // indirect | ||
github.com/pion/datachannel v1.5.6 // indirect | ||
github.com/pion/dtls/v2 v2.2.11 // indirect | ||
github.com/pion/ice/v2 v2.3.24 // indirect | ||
github.com/pion/interceptor v0.1.29 // indirect | ||
github.com/pion/logging v0.2.2 // indirect | ||
github.com/pion/mdns v0.0.12 // indirect | ||
github.com/pion/randutil v0.1.0 // indirect | ||
github.com/pion/rtcp v1.2.14 // indirect | ||
github.com/pion/rtp v1.8.6 // indirect | ||
github.com/pion/sctp v1.8.16 // indirect | ||
github.com/pion/sdp/v3 v3.0.9 // indirect | ||
github.com/pion/srtp/v2 v2.0.18 // indirect | ||
github.com/pion/stun v0.6.1 // indirect | ||
github.com/pion/transport/v2 v2.2.5 // indirect | ||
github.com/pion/turn/v2 v2.1.6 // indirect | ||
github.com/pion/webrtc/v3 v3.2.40 // indirect | ||
github.com/pkg/errors v0.9.1 // indirect | ||
github.com/pmezard/go-difflib v1.0.0 // indirect | ||
github.com/polydawn/refmt v0.89.0 // indirect | ||
github.com/prometheus/client_golang v1.19.1 // indirect | ||
github.com/prometheus/client_model v0.6.1 // indirect | ||
github.com/prometheus/common v0.48.0 // indirect | ||
github.com/prometheus/procfs v0.12.0 // indirect | ||
github.com/quic-go/qpack v0.4.0 // indirect | ||
github.com/quic-go/quic-go v0.44.0 // indirect | ||
github.com/quic-go/webtransport-go v0.8.0 // indirect | ||
github.com/raulk/go-watchdog v1.3.0 // indirect | ||
github.com/rs/xid v1.5.0 // indirect | ||
github.com/russross/blackfriday/v2 v2.1.0 // indirect | ||
github.com/shopspring/decimal v1.2.0 // indirect | ||
github.com/shurcooL/sanitized_anchor_name v1.0.0 // indirect | ||
github.com/slackhq/nebula v1.6.1 // indirect | ||
github.com/smallstep/certificates v0.26.1 // indirect | ||
github.com/smallstep/nosql v0.6.1 // indirect | ||
github.com/smallstep/pkcs7 v0.0.0-20231024181729-3b98ecc1ca81 // indirect | ||
github.com/smallstep/scep v0.0.0-20231024192529-aee96d7ad34d // indirect | ||
github.com/smallstep/truststore v0.13.0 // indirect | ||
github.com/spaolacci/murmur3 v1.1.0 // indirect | ||
github.com/spf13/cast v1.4.1 // indirect | ||
github.com/spf13/cobra v1.8.0 // indirect | ||
github.com/spf13/pflag v1.0.5 // indirect | ||
github.com/stoewer/go-strcase v1.2.0 // indirect | ||
github.com/stretchr/testify v1.9.0 // indirect | ||
github.com/tailscale/tscert v0.0.0-20240517230440-bbccfbf48933 // indirect | ||
github.com/urfave/cli v1.22.14 // indirect | ||
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect | ||
github.com/zeebo/blake3 v0.2.3 // indirect | ||
go.etcd.io/bbolt v1.3.9 // indirect | ||
go.opencensus.io v0.24.0 // indirect | ||
go.opentelemetry.io/otel v1.24.0 // indirect | ||
go.opentelemetry.io/otel/metric v1.24.0 // indirect | ||
go.opentelemetry.io/otel/trace v1.24.0 // indirect | ||
go.step.sm/cli-utils v0.9.0 // indirect | ||
go.step.sm/crypto v0.45.0 // indirect | ||
go.step.sm/linkedca v0.20.1 // indirect | ||
go.uber.org/automaxprocs v1.5.3 // indirect | ||
go.uber.org/dig v1.17.1 // indirect | ||
go.uber.org/fx v1.21.1 // indirect | ||
go.uber.org/mock v0.4.0 // indirect | ||
go.uber.org/multierr v1.11.0 // indirect | ||
go.uber.org/zap/exp v0.2.0 // indirect | ||
golang.org/x/crypto v0.23.0 // indirect | ||
golang.org/x/crypto/x509roots/fallback v0.0.0-20240507223354-67b13616a595 // indirect | ||
golang.org/x/exp v0.0.0-20240506185415-9bf2ced13842 // indirect | ||
golang.org/x/mod v0.17.0 // indirect | ||
golang.org/x/net v0.25.0 // indirect | ||
golang.org/x/sync v0.7.0 // indirect | ||
golang.org/x/sys v0.20.0 // indirect | ||
golang.org/x/term v0.20.0 // indirect | ||
golang.org/x/text v0.15.0 // indirect | ||
golang.org/x/time v0.5.0 // indirect | ||
golang.org/x/tools v0.21.0 // indirect | ||
gonum.org/v1/gonum v0.13.0 // indirect | ||
google.golang.org/genproto/googleapis/api v0.0.0-20240506185236-b8a5c65736ae // indirect | ||
google.golang.org/genproto/googleapis/rpc v0.0.0-20240429193739-8cf5692501f6 // indirect | ||
google.golang.org/grpc v1.63.2 // indirect | ||
google.golang.org/protobuf v1.34.1 // indirect | ||
gopkg.in/yaml.v3 v3.0.1 // indirect | ||
howett.net/plist v1.0.0 // indirect | ||
lukechampine.com/blake3 v1.2.1 // indirect | ||
) |
Oops, something went wrong.