Skip to content

Commit a83fd07

Browse files
committed
feat(p2p): support autotls using IP shipyard
1 parent 458e0dd commit a83fd07

File tree

10 files changed

+146
-24
lines changed

10 files changed

+146
-24
lines changed

Diff for: go.mod

+17-7
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ require (
77
github.com/BurntSushi/toml v1.4.1-0.20240526193622-a339e1f7089c
88
github.com/alecthomas/jsonschema v0.0.0-20220216202328-9eeeec9d044b
99
github.com/benbjohnson/clock v1.3.5
10+
github.com/caddyserver/certmagic v0.21.6
1011
github.com/celestiaorg/celestia-app/v3 v3.8.0-arabica
1112
github.com/celestiaorg/go-fraud v0.2.1
1213
github.com/celestiaorg/go-header v0.6.4
@@ -41,7 +42,7 @@ require (
4142
github.com/ipfs/go-metrics-interface v0.3.0
4243
github.com/ipfs/go-metrics-prometheus v0.1.0
4344
github.com/klauspost/reedsolomon v1.12.1
44-
github.com/libp2p/go-libp2p v0.41.0
45+
github.com/libp2p/go-libp2p v0.41.1
4546
github.com/libp2p/go-libp2p-kad-dht v0.30.2
4647
github.com/libp2p/go-libp2p-pubsub v0.13.0
4748
github.com/libp2p/go-libp2p-record v0.3.1
@@ -52,7 +53,7 @@ require (
5253
github.com/multiformats/go-multiaddr-dns v0.4.1
5354
github.com/multiformats/go-multihash v0.2.3
5455
github.com/open-rpc/meta-schema v0.0.0-20201029221707-1b72ef2ea333
55-
github.com/prometheus/client_golang v1.21.0
56+
github.com/prometheus/client_golang v1.21.1
5657
github.com/rollkit/go-da v0.8.0
5758
github.com/spf13/cobra v1.9.1
5859
github.com/spf13/pflag v1.0.6
@@ -77,6 +78,14 @@ require (
7778
google.golang.org/protobuf v1.36.6
7879
)
7980

81+
require (
82+
github.com/caddyserver/zerossl v0.1.3 // indirect
83+
github.com/libdns/libdns v0.2.2 // indirect
84+
github.com/mholt/acmez/v3 v3.0.0 // indirect
85+
github.com/zeebo/blake3 v0.2.4 // indirect
86+
go.uber.org/zap/exp v0.3.0 // indirect
87+
)
88+
8089
require (
8190
cloud.google.com/go v0.112.1 // indirect
8291
cloud.google.com/go/compute/metadata v0.6.0 // indirect
@@ -93,7 +102,7 @@ require (
93102
github.com/StackExchange/wmi v1.2.1 // indirect
94103
github.com/Workiva/go-datastructures v1.0.53 // indirect
95104
github.com/armon/go-metrics v0.4.1 // indirect
96-
github.com/aws/aws-sdk-go v1.44.122 // indirect
105+
github.com/aws/aws-sdk-go v1.55.6 // indirect
97106
github.com/beorn7/perks v1.0.1 // indirect
98107
github.com/bgentry/go-netrc v0.0.0-20140422174119-9fd32a8b3d3d // indirect
99108
github.com/bgentry/speakeasy v0.1.0 // indirect
@@ -218,6 +227,7 @@ require (
218227
github.com/ipfs/go-peertaskqueue v0.8.2 // indirect
219228
github.com/ipld/go-codec-dagpb v1.6.0 // indirect
220229
github.com/ipld/go-ipld-prime v0.21.0 // indirect
230+
github.com/ipshipyard/p2p-forge v0.5.0
221231
github.com/jackpal/go-nat-pmp v1.0.2 // indirect
222232
github.com/jbenet/go-temp-err-catcher v0.1.0 // indirect
223233
github.com/jmespath/go-jmespath v0.4.0 // indirect
@@ -245,7 +255,7 @@ require (
245255
github.com/marten-seemann/tcp v0.0.0-20210406111302-dfbc87cc63fd // indirect
246256
github.com/mattn/go-colorable v0.1.13 // indirect
247257
github.com/mattn/go-isatty v0.0.20 // indirect
248-
github.com/miekg/dns v1.1.63 // indirect
258+
github.com/miekg/dns v1.1.64 // indirect
249259
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b // indirect
250260
github.com/mikioh/tcpopt v0.0.0-20190314235656-172688c1accc // indirect
251261
github.com/mimoo/StrobeGo v0.0.0-20210601165009-122bf33a46e0 // indirect
@@ -272,14 +282,14 @@ require (
272282
github.com/pion/datachannel v1.5.10 // indirect
273283
github.com/pion/dtls/v2 v2.2.12 // indirect
274284
github.com/pion/dtls/v3 v3.0.4 // indirect
275-
github.com/pion/ice/v4 v4.0.6 // indirect
285+
github.com/pion/ice/v4 v4.0.8 // indirect
276286
github.com/pion/interceptor v0.1.37 // indirect
277287
github.com/pion/logging v0.2.3 // indirect
278288
github.com/pion/mdns/v2 v2.0.7 // indirect
279289
github.com/pion/randutil v0.1.0 // indirect
280290
github.com/pion/rtcp v1.2.15 // indirect
281291
github.com/pion/rtp v1.8.11 // indirect
282-
github.com/pion/sctp v1.8.36 // indirect
292+
github.com/pion/sctp v1.8.37 // indirect
283293
github.com/pion/sdp/v3 v3.0.10 // indirect
284294
github.com/pion/srtp/v3 v3.0.4 // indirect
285295
github.com/pion/stun v0.6.1 // indirect
@@ -295,7 +305,7 @@ require (
295305
github.com/prometheus/common v0.62.0 // indirect
296306
github.com/prometheus/procfs v0.15.1 // indirect
297307
github.com/quic-go/qpack v0.5.1 // indirect
298-
github.com/quic-go/quic-go v0.50.0 // indirect
308+
github.com/quic-go/quic-go v0.50.1 // indirect
299309
github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 // indirect
300310
github.com/rakyll/statik v0.1.7 // indirect
301311
github.com/raulk/go-watchdog v1.3.0 // indirect

Diff for: go.sum

+32-13
Original file line numberDiff line numberDiff line change
@@ -281,8 +281,9 @@ github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj
281281
github.com/aryann/difflib v0.0.0-20170710044230-e206f873d14a/go.mod h1:DAHtR1m6lCRdSC2Tm3DSWRPvIPr6xNKyeHdqDQSQT+A=
282282
github.com/aws/aws-lambda-go v1.13.3/go.mod h1:4UKl9IzQMoD+QF79YdCuzCwp8VbmG4VAQwij/eHl5CU=
283283
github.com/aws/aws-sdk-go v1.27.0/go.mod h1:KmX6BPdI08NWTb3/sm4ZGu5ShLoqVDhKgpiN924inxo=
284-
github.com/aws/aws-sdk-go v1.44.122 h1:p6mw01WBaNpbdP2xrisz5tIkcNwzj/HysobNoaAHjgo=
285284
github.com/aws/aws-sdk-go v1.44.122/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo=
285+
github.com/aws/aws-sdk-go v1.55.6 h1:cSg4pvZ3m8dgYcgqB97MrcdjUmZ1BeMYKUxMMB89IPk=
286+
github.com/aws/aws-sdk-go v1.55.6/go.mod h1:eRwEWoyTWFMVYVQzKMNHWP5/RV4xIUGMQfXQHfHkpNU=
286287
github.com/aws/aws-sdk-go-v2 v0.18.0/go.mod h1:JWVYvqSMppoMJC0x5wdwiImzgXTI9FuZwxzkQq9wy+g=
287288
github.com/aws/aws-sdk-go-v2 v1.2.0/go.mod h1:zEQs02YRBw1DjK0PoJv3ygDYOFTre1ejlJWl8FwAuQo=
288289
github.com/aws/aws-sdk-go-v2/config v1.1.1/go.mod h1:0XsVy9lBI/BCXm+2Tuvt39YmdHwS5unDQmxZOYe8F5Y=
@@ -343,6 +344,10 @@ github.com/bufbuild/protocompile v0.14.1/go.mod h1:ppVdAIhbr2H8asPk6k4pY7t9zB1OU
343344
github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s=
344345
github.com/bwesterb/go-ristretto v1.2.0/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0=
345346
github.com/c-bata/go-prompt v0.2.2/go.mod h1:VzqtzE2ksDBcdln8G7mk2RX9QyGjH+OVqOCSiVIqS34=
347+
github.com/caddyserver/certmagic v0.21.6 h1:1th6GfprVfsAtFNOu4StNMF5IxK5XiaI0yZhAHlZFPE=
348+
github.com/caddyserver/certmagic v0.21.6/go.mod h1:n1sCo7zV1Ez2j+89wrzDxo4N/T1Ws/Vx8u5NvuBFabw=
349+
github.com/caddyserver/zerossl v0.1.3 h1:onS+pxp3M8HnHpN5MMbOMyNjmTheJyWRaZYwn+YTAyA=
350+
github.com/caddyserver/zerossl v0.1.3/go.mod h1:CxA0acn7oEGO6//4rtrRjYgEoa4MFw/XofZnrYwGqG4=
346351
github.com/casbin/casbin/v2 v2.1.2/go.mod h1:YcPU1XXisHhLzuxH9coDNf2FbKpjGlbCg3n9yuLkIJQ=
347352
github.com/celestiaorg/blobstream-contracts/v3 v3.1.0 h1:h1Y4V3EMQ2mFmNtWt2sIhZIuyASInj1a9ExI8xOsTOw=
348353
github.com/celestiaorg/blobstream-contracts/v3 v3.1.0/go.mod h1:x4DKyfKOSv1ZJM9NwV+Pw01kH2CD7N5zTFclXIVJ6GQ=
@@ -1068,6 +1073,8 @@ github.com/ipld/go-codec-dagpb v1.6.0 h1:9nYazfyu9B1p3NAgfVdpRco3Fs2nFC72DqVsMj6
10681073
github.com/ipld/go-codec-dagpb v1.6.0/go.mod h1:ANzFhfP2uMJxRBr8CE+WQWs5UsNa0pYtmKZ+agnUw9s=
10691074
github.com/ipld/go-ipld-prime v0.21.0 h1:n4JmcpOlPDIxBcY037SVfpd1G+Sj1nKZah0m6QH9C2E=
10701075
github.com/ipld/go-ipld-prime v0.21.0/go.mod h1:3RLqy//ERg/y5oShXXdx5YIp50cFGOanyMctpPjsvxQ=
1076+
github.com/ipshipyard/p2p-forge v0.5.0 h1:U1ta2RYkSOLPXNbeCWGT5iv5t5TS1GNDvE1hSupwPZA=
1077+
github.com/ipshipyard/p2p-forge v0.5.0/go.mod h1:GNDXM2CR8KRS8mJGw7ARIRVlrG9NH8MdewgNVfIIByA=
10711078
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
10721079
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
10731080
github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA=
@@ -1161,6 +1168,8 @@ github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgx
11611168
github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo=
11621169
github.com/lib/pq v1.10.9 h1:YXG7RB+JIjhP29X+OtkiDnYaXQwpS4JEWq7dtCCRUEw=
11631170
github.com/lib/pq v1.10.9/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
1171+
github.com/libdns/libdns v0.2.2 h1:O6ws7bAfRPaBsgAYt8MDe2HcNBGC29hkZ9MX2eUSX3s=
1172+
github.com/libdns/libdns v0.2.2/go.mod h1:4Bj9+5CQiNMVGf87wjX4CY3HQJypUHRuLvlsfsZqLWQ=
11641173
github.com/libp2p/go-addr-util v0.1.0/go.mod h1:6I3ZYuFr2O/9D+SoyM0zEw0EF3YkldtTX406BpdQMqw=
11651174
github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ=
11661175
github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM=
@@ -1175,8 +1184,8 @@ github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS
11751184
github.com/libp2p/go-flow-metrics v0.2.0 h1:EIZzjmeOE6c8Dav0sNv35vhZxATIXWZg6j/C08XmmDw=
11761185
github.com/libp2p/go-flow-metrics v0.2.0/go.mod h1:st3qqfu8+pMfh+9Mzqb2GTiwrAGjIPszEjZmtksN8Jc=
11771186
github.com/libp2p/go-libp2p v0.19.0/go.mod h1:Ki9jJXLO2YqrTIFxofV7Twyd3INWPT97+r8hGt7XPjI=
1178-
github.com/libp2p/go-libp2p v0.41.0 h1:JRaD39dqf/tBBGapJ0T38N73vOaDCsWgcx3mE6HgXWk=
1179-
github.com/libp2p/go-libp2p v0.41.0/go.mod h1:Be8QYqC4JW6Xq8buukNeoZJjyT1XUDcGoIooCHm1ye4=
1187+
github.com/libp2p/go-libp2p v0.41.1 h1:8ecNQVT5ev/jqALTvisSJeVNvXYJyK4NhQx1nNRXQZE=
1188+
github.com/libp2p/go-libp2p v0.41.1/go.mod h1:DcGTovJzQl/I7HMrby5ZRjeD0kQkGiy+9w6aEkSZpRI=
11801189
github.com/libp2p/go-libp2p-asn-util v0.1.0/go.mod h1:wu+AnM9Ii2KgO5jMmS1rz9dvzTdj8BXqsPR9HR0XB7I=
11811190
github.com/libp2p/go-libp2p-asn-util v0.4.1 h1:xqL7++IKD9TBFMgnLPZR6/6iYhawHKHl950SO9L6n94=
11821191
github.com/libp2p/go-libp2p-asn-util v0.4.1/go.mod h1:d/NI6XZ9qxw67b4e+NgpQexCIiFYJjErASrYW4PFDN8=
@@ -1339,13 +1348,15 @@ github.com/mattn/go-sqlite3 v1.11.0/go.mod h1:FPy6KqzDD04eiIsT53CuJW3U88zkxoIYsO
13391348
github.com/mattn/go-tty v0.0.0-20180907095812-13ff1204f104/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
13401349
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
13411350
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
1351+
github.com/mholt/acmez/v3 v3.0.0 h1:r1NcjuWR0VaKP2BTjDK9LRFBw/WvURx3jlaEUl9Ht8E=
1352+
github.com/mholt/acmez/v3 v3.0.0/go.mod h1:L1wOU06KKvq7tswuMDwKdcHeKpFFgkppZy/y0DFxagQ=
13421353
github.com/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4=
13431354
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
13441355
github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI=
13451356
github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4=
13461357
github.com/miekg/dns v1.1.48/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME=
1347-
github.com/miekg/dns v1.1.63 h1:8M5aAw6OMZfFXTT7K5V0Eu5YiiL8l7nUAkyN6C9YwaY=
1348-
github.com/miekg/dns v1.1.63/go.mod h1:6NGHfjhpmr5lt3XPLuyfDJi5AXbNIPM9PY6H6sF1Nfs=
1358+
github.com/miekg/dns v1.1.64 h1:wuZgD9wwCE6XMT05UU/mlSko71eRSXEAm2EbjQXLKnQ=
1359+
github.com/miekg/dns v1.1.64/go.mod h1:Dzw9769uoKVaLuODMDZz9M6ynFU6Em65csPuoi8G0ck=
13491360
github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c h1:bzE/A84HN25pxAuk9Eej1Kz9OUelF97nAc82bDquQI8=
13501361
github.com/mikioh/tcp v0.0.0-20190314235350-803a9b46060c/go.mod h1:0SQS9kMwD2VsyFEB++InYyBJroV/FRmBgcydeSUcJms=
13511362
github.com/mikioh/tcpinfo v0.0.0-20190314235526-30a79bb1804b h1:z78hV3sbSMAUoyUMM0I83AUIT6Hu17AWfgjzIbtrYFc=
@@ -1561,8 +1572,8 @@ github.com/pion/dtls/v2 v2.2.12 h1:KP7H5/c1EiVAAKUmXyCzPiQe5+bCJrpOeKg/L05dunk=
15611572
github.com/pion/dtls/v2 v2.2.12/go.mod h1:d9SYc9fch0CqK90mRk1dC7AkzzpwJj6u2GU3u+9pqFE=
15621573
github.com/pion/dtls/v3 v3.0.4 h1:44CZekewMzfrn9pmGrj5BNnTMDCFwr+6sLH+cCuLM7U=
15631574
github.com/pion/dtls/v3 v3.0.4/go.mod h1:R373CsjxWqNPf6MEkfdy3aSe9niZvL/JaKlGeFphtMg=
1564-
github.com/pion/ice/v4 v4.0.6 h1:jmM9HwI9lfetQV/39uD0nY4y++XZNPhvzIPCb8EwxUM=
1565-
github.com/pion/ice/v4 v4.0.6/go.mod h1:y3M18aPhIxLlcO/4dn9X8LzLLSma84cx6emMSu14FGw=
1575+
github.com/pion/ice/v4 v4.0.8 h1:ajNx0idNG+S+v9Phu4LSn2cs8JEfTsA1/tEjkkAVpFY=
1576+
github.com/pion/ice/v4 v4.0.8/go.mod h1:y3M18aPhIxLlcO/4dn9X8LzLLSma84cx6emMSu14FGw=
15661577
github.com/pion/interceptor v0.1.37 h1:aRA8Zpab/wE7/c0O3fh1PqY0AJI3fCSEM5lRWJVorwI=
15671578
github.com/pion/interceptor v0.1.37/go.mod h1:JzxbJ4umVTlZAf+/utHzNesY8tmRkM2lVmkS82TTj8Y=
15681579
github.com/pion/logging v0.2.2/go.mod h1:k0/tDVsRCX2Mb2ZEmTqNa7CWsQPc+YYCB7Q+5pahoms=
@@ -1576,8 +1587,8 @@ github.com/pion/rtcp v1.2.15 h1:LZQi2JbdipLOj4eBjK4wlVoQWfrZbh3Q6eHtWtJBZBo=
15761587
github.com/pion/rtcp v1.2.15/go.mod h1:jlGuAjHMEXwMUHK78RgX0UmEJFV4zUKOFHR7OP+D3D0=
15771588
github.com/pion/rtp v1.8.11 h1:17xjnY5WO5hgO6SD3/NTIUPvSFw/PbLsIJyz1r1yNIk=
15781589
github.com/pion/rtp v1.8.11/go.mod h1:8uMBJj32Pa1wwx8Fuv/AsFhn8jsgw+3rUC2PfoBZ8p4=
1579-
github.com/pion/sctp v1.8.36 h1:owNudmnz1xmhfYje5L/FCav3V9wpPRePHle3Zi+P+M0=
1580-
github.com/pion/sctp v1.8.36/go.mod h1:cNiLdchXra8fHQwmIoqw0MbLLMs+f7uQ+dGMG2gWebE=
1590+
github.com/pion/sctp v1.8.37 h1:ZDmGPtRPX9mKCiVXtMbTWybFw3z/hVKAZgU81wcOrqs=
1591+
github.com/pion/sctp v1.8.37/go.mod h1:cNiLdchXra8fHQwmIoqw0MbLLMs+f7uQ+dGMG2gWebE=
15811592
github.com/pion/sdp/v3 v3.0.10 h1:6MChLE/1xYB+CjumMw+gZ9ufp2DPApuVSnDT8t5MIgA=
15821593
github.com/pion/sdp/v3 v3.0.10/go.mod h1:88GMahN5xnScv1hIMTqLdu/cOcUkj6a9ytbncwMCq2E=
15831594
github.com/pion/srtp/v3 v3.0.4 h1:2Z6vDVxzrX3UHEgrUyIGM4rRouoC7v+NiF1IHtp9B5M=
@@ -1622,8 +1633,8 @@ github.com/prometheus/client_golang v1.9.0/go.mod h1:FqZLKOZnGdFAhOK4nqGHa7D66Id
16221633
github.com/prometheus/client_golang v1.10.0/go.mod h1:WJM3cc3yu7XKBKa/I8WeZm+V3eltZnBwfENSU7mdogU=
16231634
github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0=
16241635
github.com/prometheus/client_golang v1.12.1/go.mod h1:3Z9XVyYiZYEO+YQWt3RD2R3jrbd179Rt297l4aS6nDY=
1625-
github.com/prometheus/client_golang v1.21.0 h1:DIsaGmiaBkSangBgMtWdNfxbMNdku5IK6iNhrEqWvdA=
1626-
github.com/prometheus/client_golang v1.21.0/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg=
1636+
github.com/prometheus/client_golang v1.21.1 h1:DOvXXTqVzvkIewV/CDPFdejpMCGeMcbGCQ8YOmu+Ibk=
1637+
github.com/prometheus/client_golang v1.21.1/go.mod h1:U9NM32ykUErtVBxdvD3zfi+EuFkkaBvMb09mIfe0Zgg=
16271638
github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
16281639
github.com/prometheus/client_model v0.0.0-20190115171406-56726106282f/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo=
16291640
github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA=
@@ -1662,8 +1673,8 @@ github.com/prometheus/procfs v0.15.1/go.mod h1:fB45yRUv8NstnjriLhBQLuOUt+WW4BsoG
16621673
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
16631674
github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI=
16641675
github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg=
1665-
github.com/quic-go/quic-go v0.50.0 h1:3H/ld1pa3CYhkcc20TPIyG1bNsdhn9qZBGN3b9/UyUo=
1666-
github.com/quic-go/quic-go v0.50.0/go.mod h1:Vim6OmUvlYdwBhXP9ZVrtGmCMWa3wEqhq3NgYrI8b4E=
1676+
github.com/quic-go/quic-go v0.50.1 h1:unsgjFIUqW8a2oopkY7YNONpV1gYND6Nt9hnt1PN94Q=
1677+
github.com/quic-go/quic-go v0.50.1/go.mod h1:Vim6OmUvlYdwBhXP9ZVrtGmCMWa3wEqhq3NgYrI8b4E=
16671678
github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66 h1:4WFk6u3sOT6pLa1kQ50ZVdm8BQFgJNA117cepZxtLIg=
16681679
github.com/quic-go/webtransport-go v0.8.1-0.20241018022711-4ac2c9250e66/go.mod h1:Vp72IJajgeOL6ddqrAhmp7IM9zbTcgkQxD/YdxrVwMw=
16691680
github.com/rakyll/statik v0.1.7 h1:OF3QCZUuyPxuGEP7B4ypUa7sB/iHtqOTDYZXGM8KOdQ=
@@ -1894,6 +1905,12 @@ github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9dec
18941905
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
18951906
github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
18961907
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
1908+
github.com/zeebo/assert v1.1.0 h1:hU1L1vLTHsnO8x8c9KAR5GmM5QscxHg5RNU5z5qbUWY=
1909+
github.com/zeebo/assert v1.1.0/go.mod h1:Pq9JiuJQpG8JLJdtkwrJESF0Foym2/D9XMU5ciN/wJ0=
1910+
github.com/zeebo/blake3 v0.2.4 h1:KYQPkhpRtcqh0ssGYcKLG1JYvddkEA8QwCM/yBqhaZI=
1911+
github.com/zeebo/blake3 v0.2.4/go.mod h1:7eeQ6d2iXWRGF6npfaxl2CU+xy2Fjo2gxeyZGCRUjcE=
1912+
github.com/zeebo/pcg v1.0.1 h1:lyqfGeWiv4ahac6ttHs+I5hwtH/+1mrhlCtVNQM2kHo=
1913+
github.com/zeebo/pcg v1.0.1/go.mod h1:09F0S9iiKrwn9rlI5yjLkmrug154/YRW6KnnXVDM/l4=
18971914
github.com/zondax/hid v0.9.2 h1:WCJFnEDMiqGF64nlZz28E9qLVZ0KSJ7xpc5DLEyma2U=
18981915
github.com/zondax/hid v0.9.2/go.mod h1:l5wttcP0jwtdLjqjMMWFVEE7d1zO0jvSPA9OPZxWpEM=
18991916
github.com/zondax/ledger-go v0.14.3 h1:wEpJt2CEcBJ428md/5MgSLsXLBos98sBOyxNmCjfUCw=
@@ -1988,6 +2005,8 @@ go.uber.org/zap v1.19.1/go.mod h1:j3DNczoxDZroyBnOT1L/Q79cfUMGZxlv/9dzN7SM1rI=
19882005
go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw=
19892006
go.uber.org/zap v1.27.0 h1:aJMhYGrd5QSmlpLMr2MftRKl7t8J8PTZPA732ud/XR8=
19902007
go.uber.org/zap v1.27.0/go.mod h1:GB2qFLM7cTU87MWRP2mPIjqfIDnGu+VIO4V/SdhGo2E=
2008+
go.uber.org/zap/exp v0.3.0 h1:6JYzdifzYkGmTdRR59oYH+Ng7k49H9qVpWwNSsGJj3U=
2009+
go.uber.org/zap/exp v0.3.0/go.mod h1:5I384qq7XGxYyByIhHm6jg5CHkGY0nsTfbDLgDDlgJQ=
19912010
go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE=
19922011
golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw=
19932012
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=

Diff for: nodebuilder/init.go

+5
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,11 @@ func Init(cfg Config, path string, tp node.Type) error {
5656
return err
5757
}
5858

59+
err = initDir(certsPath(path))
60+
if err != nil {
61+
return err
62+
}
63+
5964
cfgPath := configPath(path)
6065
err = SaveConfig(cfgPath, &cfg)
6166
if err != nil {

Diff for: nodebuilder/module.go

+1
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ func ConstructModule(tp node.Type, network p2p.Network, cfg *Config, store Store
4242
fx.Supply(store.Config),
4343
fx.Provide(store.Datastore),
4444
fx.Provide(store.Keystore),
45+
fx.Provide(store.Certstore),
4546
core.ConstructModule(tp, &cfg.Core),
4647
fx.Supply(node.StorePath(store.Path())),
4748
// modules provided by the node

Diff for: nodebuilder/p2p/autotls.go

+42
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package p2p
2+
3+
import (
4+
"crypto/tls"
5+
6+
"github.com/caddyserver/certmagic"
7+
p2pForge "github.com/ipshipyard/p2p-forge/client"
8+
"github.com/libp2p/go-libp2p/core/peer"
9+
)
10+
11+
// User-Agent to use during DNS-01 ACME challenge
12+
const userAgent = "go-libp2p/celestia-node"
13+
14+
// setupAutoTLS attempts to obtain TLS certificates automatically using p2p-forge.
15+
// It returns a TLS config if successful, or nil if AutoTLS is not enabled or fails.
16+
func setupAutoTLS(peerId peer.ID, certstore certmagic.FileStorage) (*tls.Config, error) {
17+
// p2pforge is the AutoTLS client library.
18+
// The cert manager handles the creation and management of certificate
19+
certManager, err := p2pForge.NewP2PForgeCertMgr(
20+
// Configure CA ACME endpoint
21+
p2pForge.WithCAEndpoint(p2pForge.DefaultCAEndpoint),
22+
23+
// Configure where to store certificate
24+
p2pForge.WithCertificateStorage(&certstore),
25+
26+
// Configure logger to use
27+
p2pForge.WithLogger(&log.SugaredLogger),
28+
29+
// User-Agent to use during DNS-01 ACME challenge
30+
p2pForge.WithUserAgent(userAgent),
31+
)
32+
// Handle errors
33+
if err != nil {
34+
return nil, err
35+
}
36+
37+
// Start the cert manager
38+
certManager.Start()
39+
defer certManager.Stop()
40+
41+
return certManager.TLSConfig(), nil
42+
}

Diff for: nodebuilder/p2p/config.go

+2
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,8 @@ type Config struct {
3030

3131
// Allowlist for IPColocation PubSub parameter, a list of string CIDRs
3232
IPColocationWhitelist []string
33+
// TLSEnabled specifies whether libp2p should use TLS or not.
34+
TLSEnabled bool
3335
}
3436

3537
// DefaultConfig returns default configuration for P2P subsystem.

Diff for: nodebuilder/p2p/flags.go

+16
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ const EnvCustomNetwork = "CELESTIA_CUSTOM"
1616
const (
1717
networkFlag = "p2p.network"
1818
mutualFlag = "p2p.mutual"
19+
tlsFlag = "p2p.tls"
1920
)
2021

2122
// Flags gives a set of p2p flags.
@@ -38,6 +39,12 @@ Peers must bidirectionally point to each other. (Format: multiformats.io/multiad
3839
listAvailableNetworks(),
3940
DefaultNetwork.String()),
4041
)
42+
flags.Bool(
43+
tlsFlag,
44+
false,
45+
`Specifies whether TLS for libp2p should be enabled or not. If enabled it will
46+
automatically generate a certificate using Letsencrypt. Default: false`,
47+
)
4148

4249
return flags
4350
}
@@ -62,6 +69,15 @@ func ParseFlags(
6269
if len(mutualPeers) != 0 {
6370
cfg.MutualPeers = mutualPeers
6471
}
72+
73+
tlsEnabled, err := cmd.Flags().GetBool(tlsFlag)
74+
if err != nil {
75+
return err
76+
}
77+
78+
if tlsEnabled {
79+
cfg.TLSEnabled = true
80+
}
6581
return nil
6682
}
6783

Diff for: nodebuilder/p2p/host.go

+3-1
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ import (
55
"fmt"
66
"strings"
77

8+
"github.com/caddyserver/certmagic"
89
"github.com/libp2p/go-libp2p"
910
p2pconfig "github.com/libp2p/go-libp2p/config"
1011
"github.com/libp2p/go-libp2p/core/connmgr"
@@ -71,7 +72,7 @@ func (ua *UserAgent) String() string {
7172
func newHost(params hostParams) (HostBase, error) {
7273
ua := newUserAgent().WithNetwork(params.Net).WithNodeType(params.Tp)
7374

74-
tlsCfg, isEnabled, err := tlsEnabled()
75+
tlsCfg, isEnabled, err := tlsEnabled(params.Cfg, params.ID, params.Certstore)
7576
if err != nil {
7677
return nil, err
7778
}
@@ -143,6 +144,7 @@ type hostParams struct {
143144
ConnGater *conngater.BasicConnectionGater
144145
Bandwidth *metrics.BandwidthCounter
145146
ResourceManager network.ResourceManager
147+
Certstore certmagic.FileStorage
146148
Registerer prometheus.Registerer `optional:"true"`
147149

148150
Tp node.Type

0 commit comments

Comments
 (0)