Compare commits
52 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
83cf8bdcde | ||
![]() |
2a23c5ea13 | ||
![]() |
a666afef7c | ||
![]() |
ba79de0135 | ||
![]() |
0ede48bfc6 | ||
![]() |
d0b5b3874e | ||
![]() |
59479597d5 | ||
![]() |
e85229dc90 | ||
![]() |
504e7bddb9 | ||
![]() |
2e7e2e1289 | ||
![]() |
3fabc7efbd | ||
![]() |
be4257c49a | ||
![]() |
0d8e832980 | ||
![]() |
e8fc4a38ee | ||
![]() |
7f7a74bf48 | ||
![]() |
bfd851b3f8 | ||
![]() |
8541e6851e | ||
![]() |
f886f251db | ||
![]() |
ce4c42d75a | ||
![]() |
fb55eb2908 | ||
![]() |
6e7b711a65 | ||
![]() |
03a40a7905 | ||
![]() |
468184528a | ||
![]() |
caa8356f96 | ||
![]() |
55cecee87c | ||
![]() |
9452295b69 | ||
![]() |
3eaa3e545c | ||
![]() |
d94e6db309 | ||
![]() |
03c7ee8301 | ||
![]() |
bb1c2263ab | ||
![]() |
d5c3013861 | ||
![]() |
82cead1e3e | ||
![]() |
7f6c6a4cb3 | ||
![]() |
fb9985e65c | ||
![]() |
e5f50aa62e | ||
![]() |
0b4bdaa68b | ||
![]() |
e2b228042b | ||
![]() |
cd6a54b994 | ||
![]() |
7dd13b15a4 | ||
![]() |
c9da9a9dcb | ||
![]() |
b324b057bc | ||
![]() |
c0495df940 | ||
![]() |
a63463321a | ||
![]() |
3af2c1dfaa | ||
![]() |
66311b9951 | ||
![]() |
547e168bb9 | ||
![]() |
e208f52e50 | ||
![]() |
dff0057eb9 | ||
![]() |
06c2d61577 | ||
![]() |
8beaf13dec | ||
![]() |
b267cfa928 | ||
![]() |
6c95b64750 |
89
.github/workflows/release.yaml
vendored
Normal file
89
.github/workflows/release.yaml
vendored
Normal file
@@ -0,0 +1,89 @@
|
||||
name: Release
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v*'
|
||||
workflow_dispatch:
|
||||
|
||||
jobs:
|
||||
build-and-release:
|
||||
runs-on: ubuntu-latest
|
||||
permissions:
|
||||
contents: write
|
||||
|
||||
steps:
|
||||
- name: Checkout code
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v4
|
||||
with:
|
||||
go-version: '1.21'
|
||||
cache: true
|
||||
|
||||
- name: Install build dependencies
|
||||
run: |
|
||||
sudo add-apt-repository -y ppa:i2p-maintainers/i2p
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y make git fakeroot checkinstall i2p i2p-router
|
||||
|
||||
- name: Build binaries
|
||||
run: |
|
||||
# Build for various platforms
|
||||
GOOS=linux GOARCH=amd64 make build
|
||||
GOOS=linux GOARCH=386 make build
|
||||
GOOS=linux GOARCH=arm make build
|
||||
GOOS=linux GOARCH=arm64 make build
|
||||
GOOS=openbsd GOARCH=amd64 make build
|
||||
GOOS=freebsd GOARCH=386 make build
|
||||
GOOS=freebsd GOARCH=amd64 make build
|
||||
GOOS=windows GOARCH=amd64 make build
|
||||
GOOS=windows GOARCH=386 make build
|
||||
|
||||
- name: Build Debian packages
|
||||
run: |
|
||||
# Build .deb packages
|
||||
sudo -u i2psvc mkdir -p /var/lib/i2p/i2p-config/reseed
|
||||
sudo mkdir -p /etc/systemd/system/reseed.service.d/
|
||||
sudo bash -c "GOOS=linux GOARCH=amd64 make checkinstall"
|
||||
sudo bash -c "GOOS=linux GOARCH=386 make checkinstall"
|
||||
sudo bash -c "GOOS=linux GOARCH=arm make checkinstall"
|
||||
sudo bash -c "GOOS=linux GOARCH=arm64 make checkinstall"
|
||||
|
||||
#- name: Build plugins
|
||||
#run: |
|
||||
## Build plugins for various platforms
|
||||
#GOOS=linux GOARCH=amd64 make su3s
|
||||
#GOOS=linux GOARCH=386 make su3s
|
||||
#GOOS=linux GOARCH=arm make su3s
|
||||
#GOOS=linux GOARCH=arm64 make su3s
|
||||
#GOOS=openbsd GOARCH=amd64 make su3s
|
||||
#GOOS=freebsd GOARCH=386 make su3s
|
||||
#GOOS=freebsd GOARCH=amd64 make su3s
|
||||
#GOOS=windows GOARCH=amd64 make su3s
|
||||
#GOOS=windows GOARCH=386 make su3s
|
||||
|
||||
- name: Create Release
|
||||
id: create_release
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
body_path: CHANGELOG.md
|
||||
files: |
|
||||
reseed-tools-*
|
||||
*.deb
|
||||
*.su3
|
||||
generate_release_notes: false
|
||||
draft: false
|
||||
prerelease: false
|
||||
env:
|
||||
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
|
||||
|
||||
# - name: Build and push Docker image
|
||||
# if: success()
|
||||
# run: |
|
||||
# docker login -u ${{ github.actor }} -p ${{ secrets.GITHUB_TOKEN }} ghcr.io
|
||||
# docker build -t ghcr.io/${{ github.repository }}:${{ github.ref_name }} .
|
||||
# docker push ghcr.io/${{ github.repository }}:${{ github.ref_name }}
|
||||
# docker tag ghcr.io/${{ github.repository }}:${{ github.ref_name }} ghcr.io/${{ github.repository }}:latest
|
||||
# docker push ghcr.io/${{ github.repository }}:latest
|
13
.gitignore
vendored
13
.gitignore
vendored
@@ -2,6 +2,10 @@
|
||||
/cert.pem
|
||||
/key.pem
|
||||
/_netdb
|
||||
/i2pkeys
|
||||
/onionkeys
|
||||
/tlskeys
|
||||
/tmp
|
||||
i2pseeds.su3
|
||||
*.pem
|
||||
onion.key
|
||||
@@ -12,4 +16,11 @@ i2p-tools-*
|
||||
*.pem
|
||||
plugin
|
||||
reseed-tools*
|
||||
data-dir*
|
||||
data-dir*
|
||||
audit.json
|
||||
*ed25519*
|
||||
client.yaml
|
||||
plugin.yaml
|
||||
err
|
||||
/plugin-linux-amd64.yaml
|
||||
/client-linux-amd64.yaml
|
2
.vscode/settings.json
vendored
2
.vscode/settings.json
vendored
@@ -11,7 +11,7 @@
|
||||
"editor.snippetSuggestions": "none",
|
||||
"editor.formatOnSave": true,
|
||||
"editor.codeActionsOnSave": {
|
||||
"source.organizeImports": true
|
||||
"source.organizeImports": "explicit"
|
||||
},
|
||||
},
|
||||
"gopls": {
|
||||
|
@@ -1,3 +1,12 @@
|
||||
2024-06-29
|
||||
* app.Version = 2.5
|
||||
* Add password-protected netDb sync capability
|
||||
|
||||
2024-06-25
|
||||
* app.Version = 2.4
|
||||
* Remove dependency on libp2p
|
||||
* Use go-i2p to parse RouterInfos prior to inclusion in reseed bundles, exclude less-useful RIs
|
||||
|
||||
2023-01-27
|
||||
* app.Version = "0.2.32"
|
||||
* This changelog has been inadequately updated.
|
||||
|
171
Makefile
171
Makefile
@@ -1,16 +1,18 @@
|
||||
|
||||
VERSION=0.2.33
|
||||
VERSION=$(shell /usr/bin/go run . version 2>/dev/null)
|
||||
APP=reseed-tools
|
||||
USER_GH=eyedeekay
|
||||
SIGNER=hankhill19580@gmail.com
|
||||
CGO_ENABLED=0
|
||||
export CGO_ENABLED=0
|
||||
PLUGIN_PORT=7671
|
||||
export PLUGIN_PORT=7671
|
||||
prefix?=/
|
||||
|
||||
GOOS?=$(shell uname -s | tr A-Z a-z)
|
||||
GOARCH?="amd64"
|
||||
|
||||
ARG=-v -tags netgo -ldflags '-w -extldflags "-static"'
|
||||
ARG=-v -tags netgo,osusergo -ldflags '-w -extldflags "-static"'
|
||||
|
||||
#MIN_GO_VERSION=`ls /usr/lib/go-1.14 2>/dev/null >/dev/null && echo 1.14`
|
||||
MIN_GO_VERSION?=1.16
|
||||
@@ -21,13 +23,16 @@ I2P_GID=$(shell id -g i2psvc)
|
||||
WHOAMI=$(shell whoami)
|
||||
|
||||
echo:
|
||||
@echo "type make version to do release $(APP) $(VERSION) $(GOOS) $(GOARCH) $(MIN_GO_VERSION) $(I2P_UID) $(I2P_GID)"
|
||||
@echo "type make version to do release '$(APP)' '$(VERSION)' $(GOOS) $(GOARCH) $(MIN_GO_VERSION) $(I2P_UID) $(I2P_GID)"
|
||||
|
||||
host:
|
||||
/usr/bin/go build -o reseed-tools-host 2>/dev/null 1>/dev/null
|
||||
|
||||
index:
|
||||
edgar
|
||||
|
||||
build:
|
||||
go build $(ARG) -o reseed-tools-$(GOOS)-$(GOARCH)
|
||||
/usr/bin/go build $(ARG) -o reseed-tools-$(GOOS)-$(GOARCH)
|
||||
|
||||
1.15-build: gofmt
|
||||
/usr/lib/go-$(MIN_GO_VERSION)/bin/go build $(ARG) -o reseed-tools-$(GOOS)-$(GOARCH)
|
||||
@@ -36,31 +41,30 @@ clean:
|
||||
rm reseed-tools-* tmp -rfv *.deb plugin reseed-tools
|
||||
|
||||
tar:
|
||||
tar --exclude="./.git" --exclude="./tmp" --exclude=".vscode" --exclude="./*.pem" --exclude="./*.crl" --exclude="./*.crt" -cvf ../reseed-tools.tar.xz .
|
||||
git pull github --tags; true
|
||||
git pull --tags; true
|
||||
git archive --format=tar.gz --output=reseed-tools.tar.gz v$(VERSION)
|
||||
|
||||
install:
|
||||
install -m755 reseed-tools-$(GOOS)-$(GOARCH) /usr/bin/reseed-tools
|
||||
install -m644 etc/default/reseed /etc/default/reseed
|
||||
install -m755 etc/init.d/reseed /etc/init.d/reseed
|
||||
mkdir -p /etc/systemd/system/reseed.service.d/
|
||||
mkdir -p /var/lib/i2p/
|
||||
mkdir -p /var/lib/i2p/i2p-config/reseed/
|
||||
install -g i2psvc -o i2psvc -d /var/lib/i2p/i2p-config/reseed/
|
||||
cp -r reseed/content /var/lib/i2p/i2p-config/reseed/content
|
||||
chown -R i2psvc:i2psvc /var/lib/i2p/i2p-config/reseed/
|
||||
install -m644 etc/systemd/system/reseed.service.d/override.conf /etc/systemd/system/reseed.service.d/override.conf
|
||||
install -m644 etc/systemd/system/reseed.service /etc/systemd/system/reseed.service
|
||||
install -m755 reseed-tools-$(GOOS)-$(GOARCH) ${prefix}usr/bin/reseed-tools
|
||||
install -m644 etc/default/reseed ${prefix}etc/default/reseed
|
||||
install -m755 etc/init.d/reseed ${prefix}etc/init.d/reseed
|
||||
install -g i2psvc -o i2psvc -D -d ${prefix}var/lib/i2p/i2p-config/reseed/
|
||||
install -g i2psvc -o i2psvc -D -d ${prefix}etc/systemd/system/reseed.service.d/
|
||||
install -m644 etc/systemd/system/reseed.service.d/override.conf ${prefix}etc/systemd/system/reseed.service.d/override.conf
|
||||
install -m644 etc/systemd/system/reseed.service ${prefix}etc/systemd/system/reseed.service
|
||||
|
||||
uninstall:
|
||||
rm /usr/bin/reseed-tools
|
||||
rm /etc/default/reseed
|
||||
rm /etc/init.d/reseed
|
||||
rm /etc/systemd/system/reseed.service.d/reseed.conf
|
||||
rm /etc/systemd/system/reseed.service
|
||||
rm -rf /var/lib/i2p/i2p-config/reseed/
|
||||
rm -rf ${prefix}bin/reseed-tools
|
||||
rm -rf ${prefix}etc/default/reseed
|
||||
rm -rf ${prefix}etc/init.d/reseed
|
||||
rm -rf ${prefix}etc/systemd/system/reseed.service.d/reseed.conf
|
||||
rm -rf ${prefix}etc/systemd/system/reseed.service
|
||||
rm -rf ${prefix}var/lib/i2p/i2p-config/reseed/
|
||||
|
||||
checkinstall: build
|
||||
fakeroot checkinstall \
|
||||
checkinstall:
|
||||
checkinstall -D \
|
||||
--arch=$(GOARCH) \
|
||||
--default \
|
||||
--install=no \
|
||||
--fstrans=yes \
|
||||
@@ -97,70 +101,7 @@ unfork:
|
||||
make gofmt build-unfork
|
||||
|
||||
gofmt:
|
||||
gofmt -w main.go cmd/*.go reseed/*.go su3/*.go
|
||||
|
||||
try:
|
||||
mkdir -p tmp && \
|
||||
cd tmp && \
|
||||
../reseed-tools-$(GOOS)-$(GOARCH) reseed --signer=you@mail.i2p --netdb=/home/idk/.i2p/netDb --tlsHost=your-domain.tld --onion --p2p --i2p
|
||||
|
||||
stop:
|
||||
mkdir -p tmp && \
|
||||
cd tmp && \
|
||||
../reseed-tools-$(GOOS)-$(GOARCH) reseed --signer=you@mail.i2p --netdb=/home/idk/.i2p/netDb --tlsHost=your-domain.tld --onion --p2p --i2p
|
||||
|
||||
docker:
|
||||
docker build -t eyedeekay/reseed .
|
||||
|
||||
docker-push: docker
|
||||
docker push --disable-content-trust=false eyedeekay/reseed:$(VERSION)
|
||||
|
||||
users:
|
||||
docker run --rm eyedeekay/reseed cat /etc/passwd
|
||||
|
||||
docker-ls:
|
||||
docker run --rm \
|
||||
--user $(I2P_UID) \
|
||||
--group-add $(I2P_GID) \
|
||||
--name reseed \
|
||||
--publish 8443:8443 \
|
||||
--volume /var/lib/i2p/i2p-config/netDb:/var/lib/i2p/i2p-config/netDb \
|
||||
eyedeekay/reseed ls /var/lib/i2p/i2p-config -lah
|
||||
|
||||
docker-server:
|
||||
docker run -itd \
|
||||
--name reseed \
|
||||
--user $(I2P_UID) \
|
||||
--group-add $(I2P_GID) \
|
||||
--publish 8443:8443 \
|
||||
--restart=always \
|
||||
--volume /var/lib/i2p/i2p-config/netDb:/var/lib/i2p/i2p-config/netDb:z \
|
||||
--volume reseed-keys:/var/lib/i2p/i2p-config/reseed \
|
||||
eyedeekay/reseed \
|
||||
--signer=hankhill19580@gmail.com
|
||||
docker logs -f reseed
|
||||
|
||||
docker-run:
|
||||
docker run -itd \
|
||||
--name reseed \
|
||||
--user $(I2P_UID) \
|
||||
--group-add $(I2P_GID) \
|
||||
--publish 8443:8443 \
|
||||
--volume /var/lib/i2p/i2p-config/netDb:/var/lib/i2p/i2p-config/netDb:z \
|
||||
--volume reseed-keys:/var/lib/i2p/i2p-config/reseed \
|
||||
eyedeekay/reseed \
|
||||
--signer=hankhill19580@gmail.com
|
||||
|
||||
docker-homerun:
|
||||
docker run -itd \
|
||||
--name reseed \
|
||||
--user 1000 \
|
||||
--group-add 1000 \
|
||||
--publish 8443:8443 \
|
||||
--volume $(HOME)/i2p/netDb:/var/lib/i2p/i2p-config/netDb:z \
|
||||
--volume reseed-keys:/var/lib/i2p/i2p-config/reseed:z \
|
||||
eyedeekay/reseed \
|
||||
--signer=hankhill19580@gmail.com
|
||||
find . -name '*.go' -exec gofumpt -w -s -extra {} \;
|
||||
|
||||
export JAVA_HOME=/usr/lib/jvm/java-8-openjdk-amd64/jre/
|
||||
export CGO_CFLAGS=-I/usr/lib/jvm/java-8-openjdk-amd64/include/ -I/usr/lib/jvm/java-8-openjdk-amd64/include/linux/
|
||||
@@ -173,32 +114,21 @@ jar: gojava
|
||||
echo $(JAVA_HOME)
|
||||
./gojava -v -o reseed.jar -s . build ./reseed
|
||||
|
||||
release: version upload checkinstall upload-single-deb plugins upload-su3s upload-bin
|
||||
release: version plugins upload-su3s
|
||||
|
||||
tag:
|
||||
git tag -a v$(VERSION) -m "Release $(VERSION)"
|
||||
git push --tags
|
||||
|
||||
version:
|
||||
cat README.md | gothub release -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION) -d -; true
|
||||
#head -n 5 README.md | github-release release -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION) -d -; true
|
||||
echo "make version is deprecated, use make tag instead"
|
||||
|
||||
delete-version:
|
||||
gothub delete -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION)
|
||||
github-release delete -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION)
|
||||
|
||||
edit:
|
||||
cat README.md | gothub edit -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION) -d -
|
||||
|
||||
upload: tar
|
||||
gothub upload -R -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION) -f ../reseed-tools.tar.xz -n "reseed-tools.tar.xz"
|
||||
|
||||
binary:
|
||||
##export GOOS=darwin; export GOARCH=amd64; make build
|
||||
###export GOOS=darwin; export GOARCH=arm64; make build
|
||||
export GOOS=linux; export GOARCH=amd64; make build
|
||||
export GOOS=linux; export GOARCH=386; make build
|
||||
export GOOS=linux; export GOARCH=arm; make build
|
||||
export GOOS=linux; export GOARCH=arm64; make build
|
||||
export GOOS=openbsd; export GOARCH=amd64; make build
|
||||
export GOOS=freebsd; export GOARCH=386; make build
|
||||
export GOOS=freebsd; export GOARCH=amd64; make build
|
||||
export GOOS=windows; export GOARCH=amd64; make build
|
||||
export GOOS=windows; export GOARCH=386; make build
|
||||
cat README.md | github-release edit -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION) -d -
|
||||
|
||||
plugins:
|
||||
#export GOOS=darwin; export GOARCH=amd64; make su3s
|
||||
@@ -213,18 +143,11 @@ plugins:
|
||||
export GOOS=windows; export GOARCH=amd64; make su3s
|
||||
export GOOS=windows; export GOARCH=386; make su3s
|
||||
|
||||
upload-bin:
|
||||
#export GOOS=darwin; export GOARCH=amd64; make upload-single-bin
|
||||
#export GOOS=darwin; export GOARCH=arm64; make upload-single-bin
|
||||
export GOOS=linux; export GOARCH=386; make upload-single-bin
|
||||
export GOOS=linux; export GOARCH=amd64; make upload-single-bin
|
||||
export GOOS=linux; export GOARCH=arm; make upload-single-bin
|
||||
export GOOS=linux; export GOARCH=arm64; make upload-single-bin
|
||||
export GOOS=openbsd; export GOARCH=amd64; make upload-single-bin
|
||||
export GOOS=freebsd; export GOARCH=386; make upload-single-bin
|
||||
export GOOS=freebsd; export GOARCH=amd64; make upload-single-bin
|
||||
export GOOS=windows; export GOARCH=amd64; make upload-single-bin
|
||||
export GOOS=windows; export GOARCH=386; make upload-single-bin
|
||||
debs:
|
||||
export GOOS=linux; export GOARCH=amd64; make build checkinstall
|
||||
export GOOS=linux; export GOARCH=386; make build checkinstall
|
||||
export GOOS=linux; export GOARCH=arm; make build checkinstall
|
||||
export GOOS=linux; export GOARCH=arm64; make build checkinstall
|
||||
|
||||
rm-su3s:
|
||||
rm *.su3 -f
|
||||
@@ -258,14 +181,8 @@ upload-su3s:
|
||||
download-single-su3:
|
||||
wget-ds "https://github.com/eyedeekay/reseed-tools/releases/download/v$(VERSION)/reseed-tools-$(GOOS)-$(GOARCH).su3"
|
||||
|
||||
upload-single-deb:
|
||||
gothub upload -R -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION) -f reseed-tools_$(VERSION)-1_amd64.deb -l "`sha256sum reseed-tools_$(VERSION)-1_amd64.deb`" -n "reseed-tools_$(VERSION)-1_amd64.deb"
|
||||
|
||||
upload-single-bin:
|
||||
gothub upload -R -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION) -f reseed-tools-"$(GOOS)"-"$(GOARCH)" -l "`sha256sum reseed-tools-$(GOOS)-$(GOARCH)`" -n "reseed-tools-$(GOOS)"-"$(GOARCH)"
|
||||
|
||||
upload-single-su3:
|
||||
gothub upload -R -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION) -f reseed-tools-"$(GOOS)"-"$(GOARCH).su3" -l "`sha256sum reseed-tools-$(GOOS)-$(GOARCH).su3`" -n "reseed-tools-$(GOOS)"-"$(GOARCH).su3"
|
||||
github-release upload -s $(GITHUB_TOKEN) -u $(USER_GH) -r $(APP) -t v$(VERSION) -f reseed-tools-"$(GOOS)"-"$(GOARCH).su3" -l "`sha256sum reseed-tools-$(GOOS)-$(GOARCH).su3`" -n "reseed-tools-$(GOOS)"-"$(GOARCH).su3"; true
|
||||
|
||||
tmp/content:
|
||||
mkdir -p tmp
|
||||
|
@@ -8,7 +8,7 @@ There are several utility commands to create, sign, and validate SU3 files.
|
||||
Please note that this requires at least Go version 1.13, and uses Go Modules.
|
||||
|
||||
Standard reseeds are distributed with the I2P packages. To get your reseed
|
||||
included, apply on [zzz.i2p](http://zzz.i2p).
|
||||
included, apply on [i2pforum.i2p](http://i2pforum.i2p).
|
||||
|
||||
## Dependencies
|
||||
|
||||
@@ -73,3 +73,4 @@ reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --port=84
|
||||
|
||||
- **Usage** [More examples can be found here.](docs/EXAMPLES.md)
|
||||
- **Docker** [Docker examples can be found here](docs/DOCKER.md)
|
||||
|
@@ -6,6 +6,7 @@ import (
|
||||
"github.com/urfave/cli/v3"
|
||||
)
|
||||
|
||||
// NewKeygenCommand creates a new CLI command for generating keys.
|
||||
func NewKeygenCommand() *cli.Command {
|
||||
return &cli.Command{
|
||||
Name: "keygen",
|
||||
|
183
cmd/reseed.go
183
cmd/reseed.go
@@ -1,7 +1,9 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
"net/url"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
//"flag"
|
||||
@@ -18,9 +20,10 @@ import (
|
||||
"github.com/cretz/bine/torutil"
|
||||
"github.com/cretz/bine/torutil/ed25519"
|
||||
"github.com/eyedeekay/i2pkeys"
|
||||
"github.com/eyedeekay/onramp"
|
||||
"github.com/eyedeekay/sam3"
|
||||
"github.com/libp2p/go-libp2p"
|
||||
"github.com/libp2p/go-libp2p-core/host"
|
||||
"github.com/otiai10/copy"
|
||||
"github.com/rglonek/untar"
|
||||
"github.com/urfave/cli/v3"
|
||||
"i2pgit.org/idk/reseed-tools/reseed"
|
||||
|
||||
@@ -53,6 +56,7 @@ func providedReseeds(c *cli.Context) []string {
|
||||
return reseed.AllReseeds
|
||||
}
|
||||
|
||||
// NewReseedCommand creates a new CLI command for starting a reseed server.
|
||||
func NewReseedCommand() *cli.Command {
|
||||
ndb, err := getmeanetdb.WhereIstheNetDB()
|
||||
if err != nil {
|
||||
@@ -147,10 +151,6 @@ func NewReseedCommand() *cli.Command {
|
||||
Value: 0,
|
||||
Usage: "Periodically print memory stats.",
|
||||
},
|
||||
&cli.BoolFlag{
|
||||
Name: "p2p",
|
||||
Usage: "Listen for reseed request via libp2p",
|
||||
},
|
||||
&cli.BoolFlag{
|
||||
Name: "i2p",
|
||||
Usage: "Listen for reseed request inside the I2P network",
|
||||
@@ -169,6 +169,16 @@ func NewReseedCommand() *cli.Command {
|
||||
Value: cli.NewStringSlice(reseed.AllReseeds...),
|
||||
Usage: "Ping other reseed servers and display the result on the homepage to provide information about reseed uptime.",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "share-peer",
|
||||
Value: "",
|
||||
Usage: "Download the shared netDb content of another I2P router, over I2P",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "share-password",
|
||||
Value: "",
|
||||
Usage: "Password for downloading netDb content from another router. Required for share-peer to work.",
|
||||
},
|
||||
&cli.BoolFlag{
|
||||
Name: "acme",
|
||||
Usage: "Automatically generate a TLS certificate with the ACME protocol, defaults to Let's Encrypt",
|
||||
@@ -272,6 +282,19 @@ func reseedAction(c *cli.Context) error {
|
||||
}
|
||||
signerID = string(bytes)
|
||||
}
|
||||
if c.String("share-peer") != "" {
|
||||
count := []int{1, 2, 3, 4, 5, 6, 7, 8, 9, 10}
|
||||
for i := range count {
|
||||
err := downloadRemoteNetDB(c.String("share-peer"), c.String("share-password"), c.String("netdb"), c.String("samaddr"))
|
||||
if err != nil {
|
||||
log.Println("Error downloading remote netDb,", err, "retrying in 10 seconds", i, "attempts remaining")
|
||||
time.Sleep(time.Second * 10)
|
||||
} else {
|
||||
break
|
||||
}
|
||||
}
|
||||
go getSupplementalNetDb(c.String("share-peer"), c.String("share-password"), c.String("netdb"), c.String("samaddr"))
|
||||
}
|
||||
|
||||
var tlsCert, tlsKey string
|
||||
tlsHost := c.String("tlsHost")
|
||||
@@ -372,7 +395,7 @@ func reseedAction(c *cli.Context) error {
|
||||
if onionTlsHost == "" {
|
||||
onionTlsHost = torutil.OnionServiceIDFromPrivateKey(ed25519.PrivateKey(ok)) + ".onion"
|
||||
}
|
||||
err = ioutil.WriteFile(c.String("onionKey"), ok, 0644)
|
||||
err = ioutil.WriteFile(c.String("onionKey"), ok, 0o644)
|
||||
if err != nil {
|
||||
log.Fatalln(err.Error())
|
||||
}
|
||||
@@ -448,14 +471,6 @@ func reseedAction(c *cli.Context) error {
|
||||
reseedI2P(c, i2pTlsCert, i2pTlsKey, i2pkey, reseeder)
|
||||
}
|
||||
}
|
||||
if c.Bool("p2p") {
|
||||
log.Printf("libP2P listener starting\n")
|
||||
if tlsHost != "" && tlsCert != "" && tlsKey != "" {
|
||||
go reseedP2P(c, reseeder)
|
||||
} else {
|
||||
reseedP2P(c, reseeder)
|
||||
}
|
||||
}
|
||||
if !c.Bool("trustProxy") {
|
||||
log.Printf("HTTPS server starting\n")
|
||||
reseedHTTPS(c, tlsCert, tlsKey, reseeder)
|
||||
@@ -528,52 +543,6 @@ func reseedHTTP(c *cli.Context, reseeder *reseed.ReseederImpl) {
|
||||
}
|
||||
}
|
||||
|
||||
func makeRandomHost(port int) (host.Host, error) {
|
||||
host, err := libp2p.New(context.Background(), libp2p.ListenAddrStrings(fmt.Sprintf("/ip4/127.0.0.1/tcp/%d", port)))
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return host, nil
|
||||
}
|
||||
|
||||
func reseedP2P(c *cli.Context, reseeder *reseed.ReseederImpl) {
|
||||
server := reseed.NewServer(c.String("prefix"), c.Bool("trustProxy"))
|
||||
server.Reseeder = reseeder
|
||||
server.Addr = net.JoinHostPort(c.String("ip"), c.String("port"))
|
||||
|
||||
// load a blacklist
|
||||
blacklist := reseed.NewBlacklist()
|
||||
server.Blacklist = blacklist
|
||||
blacklistFile := c.String("blacklist")
|
||||
if "" != blacklistFile {
|
||||
blacklist.LoadFile(blacklistFile)
|
||||
}
|
||||
|
||||
// print stats once in a while
|
||||
if c.Duration("stats") != 0 {
|
||||
go func() {
|
||||
var mem runtime.MemStats
|
||||
for range time.Tick(c.Duration("stats")) {
|
||||
runtime.ReadMemStats(&mem)
|
||||
log.Printf("TotalAllocs: %d Kb, Allocs: %d Kb, Mallocs: %d, NumGC: %d", mem.TotalAlloc/1024, mem.Alloc/1024, mem.Mallocs, mem.NumGC)
|
||||
}
|
||||
}()
|
||||
}
|
||||
port, err := strconv.Atoi(c.String("port"))
|
||||
if err != nil {
|
||||
log.Fatalln(err.Error())
|
||||
}
|
||||
port += 2
|
||||
host, err := makeRandomHost(port)
|
||||
if err != nil {
|
||||
log.Fatalln(err.Error())
|
||||
}
|
||||
log.Printf("P2P listener started on %s\n", host.ID())
|
||||
if err := server.ListenAndServeLibP2P(host); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
}
|
||||
|
||||
func reseedOnion(c *cli.Context, onionTlsCert, onionTlsKey string, reseeder *reseed.ReseederImpl) {
|
||||
server := reseed.NewServer(c.String("prefix"), c.Bool("trustProxy"))
|
||||
server.Reseeder = reseeder
|
||||
@@ -687,8 +656,96 @@ func reseedI2P(c *cli.Context, i2pTlsCert, i2pTlsKey string, i2pIdentKey i2pkeys
|
||||
if err := server.ListenAndServeI2P(c.String("samaddr"), i2pIdentKey); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
log.Printf("Onion server started on %s\n", server.Addr)
|
||||
}
|
||||
|
||||
func getSupplementalNetDb(remote, password, path, samaddr string) {
|
||||
log.Println("Remote NetDB Update Loop")
|
||||
for {
|
||||
if err := downloadRemoteNetDB(remote, password, path, samaddr); err != nil {
|
||||
log.Println("Error downloading remote netDb", err)
|
||||
time.Sleep(time.Second * 30)
|
||||
} else {
|
||||
log.Println("Success downloading remote netDb", err)
|
||||
time.Sleep(time.Minute * 30)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func downloadRemoteNetDB(remote, password, path, samaddr string) error {
|
||||
var hremote string
|
||||
if !strings.HasPrefix("http://", remote) && !strings.HasPrefix("https://", remote) {
|
||||
hremote = "http://" + remote
|
||||
}
|
||||
if !strings.HasSuffix(hremote, ".tar.gz") {
|
||||
hremote += "/netDb.tar.gz"
|
||||
}
|
||||
url, err := url.Parse(hremote)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
httpRequest := http.Request{
|
||||
URL: url,
|
||||
Header: http.Header{},
|
||||
}
|
||||
garlic, err := onramp.NewGarlic("reseed-client", samaddr, onramp.OPT_WIDE)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
defer garlic.Close()
|
||||
httpRequest.Header.Add(http.CanonicalHeaderKey("reseed-password"), password)
|
||||
httpRequest.Header.Add(http.CanonicalHeaderKey("x-user-agent"), reseed.I2pUserAgent)
|
||||
transport := http.Transport{
|
||||
Dial: garlic.Dial,
|
||||
}
|
||||
client := http.Client{
|
||||
Transport: &transport,
|
||||
}
|
||||
if resp, err := client.Do(&httpRequest); err != nil {
|
||||
return err
|
||||
} else {
|
||||
if bodyBytes, err := ioutil.ReadAll(resp.Body); err != nil {
|
||||
return err
|
||||
} else {
|
||||
if err := ioutil.WriteFile("netDb.tar.gz", bodyBytes, 0o644); err != nil {
|
||||
return err
|
||||
} else {
|
||||
dbPath := filepath.Join(path, "reseed-netDb")
|
||||
if err := untar.UntarFile("netDb.tar.gz", dbPath); err != nil {
|
||||
return err
|
||||
} else {
|
||||
// For example...
|
||||
opt := copy.Options{
|
||||
Skip: func(info os.FileInfo, src, dest string) (bool, error) {
|
||||
srcBase := filepath.Base(src)
|
||||
dstBase := filepath.Base(dest)
|
||||
if info.IsDir() {
|
||||
return false, nil
|
||||
}
|
||||
if srcBase == dstBase {
|
||||
log.Println("Ignoring existing RI", srcBase, dstBase)
|
||||
return true, nil
|
||||
}
|
||||
return false, nil
|
||||
},
|
||||
}
|
||||
if err := copy.Copy(dbPath, path, opt); err != nil {
|
||||
return err
|
||||
} else {
|
||||
if err := os.RemoveAll(dbPath); err != nil {
|
||||
return err
|
||||
} else {
|
||||
if err := os.RemoveAll("netDb.tar.gz"); err != nil {
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
153
cmd/share.go
Normal file
153
cmd/share.go
Normal file
@@ -0,0 +1,153 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
|
||||
//"flag"
|
||||
|
||||
"archive/tar"
|
||||
"bytes"
|
||||
"io"
|
||||
"log"
|
||||
"net/http"
|
||||
"os"
|
||||
"path/filepath"
|
||||
"strings"
|
||||
|
||||
"github.com/urfave/cli/v3"
|
||||
|
||||
"github.com/eyedeekay/checki2cp/getmeanetdb"
|
||||
"github.com/eyedeekay/onramp"
|
||||
)
|
||||
|
||||
// NewShareCommand creates a new CLI Command for sharing the netDb over I2P with a password.
|
||||
// Can be used to combine the local netDb with the netDb of a remote I2P router.
|
||||
func NewShareCommand() *cli.Command {
|
||||
ndb, err := getmeanetdb.WhereIstheNetDB()
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
return &cli.Command{
|
||||
Name: "share",
|
||||
Usage: "Start a netDb sharing server",
|
||||
Action: shareAction,
|
||||
Flags: []cli.Flag{
|
||||
&cli.StringFlag{
|
||||
Name: "signer",
|
||||
Value: getDefaultSigner(),
|
||||
Usage: "Your su3 signing ID (ex. something@mail.i2p)",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "key",
|
||||
Usage: "Path to your su3 signing private key",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "netdb",
|
||||
Value: ndb,
|
||||
Usage: "Path to NetDB directory containing routerInfos",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "samaddr",
|
||||
Value: "127.0.0.1:7656",
|
||||
Usage: "Use this SAM address to set up I2P connections for in-network sharing",
|
||||
},
|
||||
&cli.StringFlag{
|
||||
Name: "share-password",
|
||||
Value: "",
|
||||
Usage: "Share the contents of your netDb directory privately over I2P as a tar.gz archive. Will fail is password is blank.",
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
type sharer struct {
|
||||
http.FileSystem
|
||||
http.Handler
|
||||
Path string
|
||||
Password string
|
||||
}
|
||||
|
||||
func (s *sharer) ServeHTTP(w http.ResponseWriter, r *http.Request) {
|
||||
p, ok := r.Header[http.CanonicalHeaderKey("reseed-password")]
|
||||
if !ok {
|
||||
return
|
||||
}
|
||||
if p[0] != s.Password {
|
||||
return
|
||||
}
|
||||
log.Println("Path", r.URL.Path)
|
||||
if strings.HasSuffix(r.URL.Path, "tar.gz") {
|
||||
log.Println("Serving netdb")
|
||||
archive, err := walker(s.Path)
|
||||
if err != nil {
|
||||
return
|
||||
}
|
||||
w.Write(archive.Bytes())
|
||||
return
|
||||
}
|
||||
s.Handler.ServeHTTP(w, r)
|
||||
}
|
||||
|
||||
func Sharer(netDbDir, password string) *sharer {
|
||||
fileSystem := &sharer{
|
||||
FileSystem: http.Dir(netDbDir),
|
||||
Path: netDbDir,
|
||||
Password: password,
|
||||
}
|
||||
fileSystem.Handler = http.FileServer(fileSystem.FileSystem)
|
||||
return fileSystem
|
||||
}
|
||||
|
||||
func shareAction(c *cli.Context) error {
|
||||
netDbDir, err := filepath.Abs(c.String("netdb"))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
httpFs := Sharer(netDbDir, c.String("share-password"))
|
||||
garlic, err := onramp.NewGarlic("reseed", c.String("samaddr"), onramp.OPT_WIDE)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
garlicListener, err := garlic.Listen()
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return http.Serve(garlicListener, httpFs)
|
||||
}
|
||||
|
||||
func walker(netDbDir string) (*bytes.Buffer, error) {
|
||||
var buf bytes.Buffer
|
||||
tw := tar.NewWriter(&buf)
|
||||
walkFn := func(path string, info os.FileInfo, err error) error {
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if info.Mode().IsDir() {
|
||||
return nil
|
||||
}
|
||||
new_path := path[len(netDbDir):]
|
||||
if len(new_path) == 0 {
|
||||
return nil
|
||||
}
|
||||
fr, err := os.Open(path)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
defer fr.Close()
|
||||
if h, err := tar.FileInfoHeader(info, new_path); err != nil {
|
||||
log.Fatalln(err)
|
||||
} else {
|
||||
h.Name = new_path
|
||||
if err = tw.WriteHeader(h); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
}
|
||||
if _, err := io.Copy(tw, fr); err != nil {
|
||||
log.Fatalln(err)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
if err := filepath.Walk(netDbDir, walkFn); err != nil {
|
||||
return nil, err
|
||||
}
|
||||
return &buf, nil
|
||||
}
|
20
cmd/utils.go
20
cmd/utils.go
@@ -55,9 +55,11 @@ type MyUser struct {
|
||||
func (u *MyUser) GetEmail() string {
|
||||
return u.Email
|
||||
}
|
||||
|
||||
func (u MyUser) GetRegistration() *registration.Resource {
|
||||
return u.Registration
|
||||
}
|
||||
|
||||
func (u *MyUser) GetPrivateKey() crypto.PrivateKey {
|
||||
return u.key
|
||||
}
|
||||
@@ -150,7 +152,7 @@ func checkUseAcmeCert(tlsHost, signer, cadirurl string, tlsCert, tlsKey *string,
|
||||
return err
|
||||
}
|
||||
filename := tlsHost + signer + ".acme.key"
|
||||
keypem, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
||||
keypem, err := os.OpenFile(filename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
@@ -201,8 +203,8 @@ func renewAcmeIssuedCert(client *lego.Client, user MyUser, tlsHost string, tlsCe
|
||||
return err
|
||||
}
|
||||
|
||||
ioutil.WriteFile(tlsHost+".pem", certificates.PrivateKey, 0600)
|
||||
ioutil.WriteFile(tlsHost+".crt", certificates.Certificate, 0600)
|
||||
ioutil.WriteFile(tlsHost+".pem", certificates.PrivateKey, 0o600)
|
||||
ioutil.WriteFile(tlsHost+".crt", certificates.Certificate, 0o600)
|
||||
// ioutil.WriteFile(tlsHost+".crl", certificates.PrivateKey, 0600)
|
||||
*tlsCert = tlsHost + ".crt"
|
||||
*tlsKey = tlsHost + ".pem"
|
||||
@@ -238,8 +240,8 @@ func newAcmeIssuedCert(client *lego.Client, user MyUser, tlsHost string, tlsCert
|
||||
return err
|
||||
}
|
||||
|
||||
ioutil.WriteFile(tlsHost+".pem", certificates.PrivateKey, 0600)
|
||||
ioutil.WriteFile(tlsHost+".crt", certificates.Certificate, 0600)
|
||||
ioutil.WriteFile(tlsHost+".pem", certificates.PrivateKey, 0o600)
|
||||
ioutil.WriteFile(tlsHost+".crt", certificates.Certificate, 0o600)
|
||||
// ioutil.WriteFile(tlsHost+".crl", certificates.PrivateKey, 0600)
|
||||
*tlsCert = tlsHost + ".crt"
|
||||
*tlsKey = tlsHost + ".pem"
|
||||
@@ -303,7 +305,7 @@ func createSigningCertificate(signerID string) error {
|
||||
|
||||
// save signing private key
|
||||
privFile := signerFile(signerID) + ".pem"
|
||||
keyOut, err := os.OpenFile(privFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
||||
keyOut, err := os.OpenFile(privFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to open %s for writing: %v", privFile, err)
|
||||
}
|
||||
@@ -314,7 +316,7 @@ func createSigningCertificate(signerID string) error {
|
||||
|
||||
// CRL
|
||||
crlFile := signerFile(signerID) + ".crl"
|
||||
crlOut, err := os.OpenFile(crlFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
||||
crlOut, err := os.OpenFile(crlFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to open %s for writing: %s", crlFile, err)
|
||||
}
|
||||
@@ -373,7 +375,7 @@ func CreateTLSCertificate(host string) error {
|
||||
|
||||
// save the TLS private key
|
||||
privFile := host + ".pem"
|
||||
keyOut, err := os.OpenFile(privFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
||||
keyOut, err := os.OpenFile(privFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to open %s for writing: %v", privFile, err)
|
||||
}
|
||||
@@ -388,7 +390,7 @@ func CreateTLSCertificate(host string) error {
|
||||
|
||||
// CRL
|
||||
crlFile := host + ".crl"
|
||||
crlOut, err := os.OpenFile(crlFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0600)
|
||||
crlOut, err := os.OpenFile(crlFile, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, 0o600)
|
||||
if err != nil {
|
||||
return fmt.Errorf("failed to open %s for writing: %s", crlFile, err)
|
||||
}
|
||||
|
@@ -32,7 +32,6 @@ func I2PHome() string {
|
||||
return usrCheck
|
||||
}
|
||||
return ""
|
||||
|
||||
}
|
||||
|
||||
func NewSu3VerifyCommand() *cli.Command {
|
||||
@@ -101,7 +100,7 @@ func su3VerifyAction(c *cli.Context) error {
|
||||
|
||||
if c.Bool("extract") {
|
||||
// @todo: don't assume zip
|
||||
ioutil.WriteFile("extracted.zip", su3File.BodyBytes(), 0755)
|
||||
ioutil.WriteFile("extracted.zip", su3File.BodyBytes(), 0o755)
|
||||
}
|
||||
return nil
|
||||
}
|
||||
|
19
cmd/version.go
Normal file
19
cmd/version.go
Normal file
@@ -0,0 +1,19 @@
|
||||
package cmd
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
||||
"github.com/urfave/cli/v3"
|
||||
"i2pgit.org/idk/reseed-tools/reseed"
|
||||
)
|
||||
|
||||
func NewVersionCommand() *cli.Command {
|
||||
return &cli.Command{
|
||||
Name: "version",
|
||||
Usage: "Print the version number of reseed-tools",
|
||||
Action: func(c *cli.Context) error {
|
||||
fmt.Printf("%s\n", reseed.Version)
|
||||
return nil
|
||||
},
|
||||
}
|
||||
}
|
BIN
content/images/reseed-icon.png
Normal file
BIN
content/images/reseed-icon.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 18 KiB |
BIN
content/images/reseed.png
Normal file
BIN
content/images/reseed.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 116 KiB |
10
content/index.html
Normal file
10
content/index.html
Normal file
@@ -0,0 +1,10 @@
|
||||
<h1 id="you-have-found-an-i2p-reseed">You have found an I2P Reseed</h1>
|
||||
<p>Maybe it was by accident, or maybe you visited the URL because you saw it in the software somewhere. While we’ve got your attention, we’re going to take this opportunity to tell you a little about what we do here. I2P is a peer-to-peer network which uses “Garlic Routing” to maintain privacy. Reseed nodes help you get connected to I2P for the first time, and even though you should only have to use them once in a great while, they are very important services.</p>
|
||||
<h2 id="to-learn-more-about-i2p-visit"><a href="https://geti2p.net">To learn more about I2P, visit</a></h2>
|
||||
<p><a href="https://geti2p.net"><img src="images/reseed.png" alt="Help reseed" /></a></p>
|
||||
<ul>
|
||||
<li><a href="https://geti2p.net/en/docs/reseed">Learn more about reseeds here:</a></li>
|
||||
<li><a href="https://geti2p.net/en/get-involved/guides/reseed">Learn how to run a reseed here:</a></li>
|
||||
<li><a href="https://i2pgit.org/idk/reseed-tools">Read the reseed server code and learn about more reseed options here:</a></li>
|
||||
</ul>
|
||||
<p>Here on purpose? Here’s a one-time link to a reseed bundle for you.</p>
|
18
content/lang/ar/homepage.md
Normal file
18
content/lang/ar/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
هذا هو خادم I2P Reseed
|
||||
=============================
|
||||
|
||||
I2P هي شبكة نظير إلى نظير تستخدم "توجيه الثوم" للحفاظ على الخصوصية.
|
||||
تساعدك عقد Reseed على الاتصال بـ I2P لأول مرة ، وعلى الرغم من ذلك
|
||||
يجب عليك فقط استخدامها مرة واحدة كل فترة ، فهي مهمة جدًا
|
||||
خدمات.
|
||||
|
||||
[لمزيد من المعلومات حول I2P ، قم بزيارة موقع المشروع] (https://geti2p.net)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
[! [إعادة المساعدة] (images / reseed.png)] (https://geti2p.net)
|
||||
|
||||
- [مزيد من المعلومات حول عمليات إعادة التوريد] (https://geti2p.net/en/docs/reseed)
|
||||
- [تعرف على كيفية تشغيل Reseed] (https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [اقرأ رمز خادم إعادة التزويد وتعرّف على المزيد من خيارات إعادة التزويد] (https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### هل لديك مشاكل في الاتصال؟ إليك رابط لمرة واحدة لحزمة إعادة إرسال لك.
|
18
content/lang/bn/homepage.md
Normal file
18
content/lang/bn/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
এটি একটি I2P রিসিড সার্ভার
|
||||
============================
|
||||
|
||||
I2P হল একটি পিয়ার-টু-পিয়ার নেটওয়ার্ক যা গোপনীয়তা বজায় রাখতে "গার্লিক রাউটিং" ব্যবহার করে।
|
||||
রিসিড নোড আপনাকে প্রথমবার I2P এর সাথে সংযুক্ত হতে সাহায্য করে, এবং যদিও
|
||||
আপনি শুধুমাত্র একটি মহান সময়ের মধ্যে একবার তাদের ব্যবহার করা উচিত, তারা খুবই গুরুত্বপূর্ণ
|
||||
সেবা.
|
||||
|
||||
[I2P সম্পর্কে আরও জানতে, প্রকল্পের ওয়েবসাইট দেখুন](https://geti2p.net)
|
||||
-------------------------------------------------------------------------------------
|
||||
|
||||
[](https://geti2p.net)
|
||||
|
||||
- [রিসিড সম্পর্কে আরও জানুন](https://geti2p.net/en/docs/reseed)
|
||||
- [কিভাবে রিসিড চালাতে হয় তা জানুন](https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [রিসিড সার্ভার কোড পড়ুন এবং আরও রিসিড বিকল্প সম্পর্কে জানুন](https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### সংযোগ সমস্যা হচ্ছে? এখানে আপনার জন্য একটি রিসিড বান্ডেলের একটি এককালীন লিঙ্ক রয়েছে৷
|
18
content/lang/de/homepage.md
Normal file
18
content/lang/de/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
Dies ist ein I2P-Reseed-Server
|
||||
============================
|
||||
|
||||
I2P ist ein Peer-to-Peer-Netzwerk, das „Garlic Routing“ verwendet, um die Privatsphäre zu wahren.
|
||||
Reseed-Knoten helfen Ihnen, zum ersten Mal mit I2P verbunden zu werden, und das obwohl
|
||||
Sie sollten sie nur ab und zu verwenden müssen, sie sind sehr wichtig
|
||||
Dienstleistungen.
|
||||
|
||||
[Um mehr über I2P zu erfahren, besuchen Sie die Projektwebsite](https://geti2p.net)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
[](https://geti2p.net)
|
||||
|
||||
- [Erfahren Sie mehr über Reseeds](https://geti2p.net/en/docs/reseed)
|
||||
- [Erfahren Sie, wie Sie einen Reseed ausführen](https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [Lesen Sie den Re-Seed-Server-Code und erfahren Sie mehr über Re-Seed-Optionen](https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### Haben Sie Verbindungsprobleme? Hier ist ein einmaliger Link zu einem Re-Seed-Bundle für Sie.
|
18
content/lang/en/homepage.md
Normal file
18
content/lang/en/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
This is an I2P Reseed Server
|
||||
============================
|
||||
|
||||
I2P is a peer-to-peer network which uses “Garlic Routing” to maintain privacy.
|
||||
Reseed nodes help you get connected to I2P for the first time, and even though
|
||||
you should only have to use them once in a great while, they are very important
|
||||
services.
|
||||
|
||||
[To learn more about I2P, visit the project website](https://geti2p.net)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
[](https://geti2p.net)
|
||||
|
||||
- [Learn more about reseeds](https://geti2p.net/en/docs/reseed)
|
||||
- [Learn how to run a reseed](https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [Read the reseed server code and learn about more reseed options](https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### Having connection issues? Here is a one-time link to a reseed bundle for you.
|
18
content/lang/es/homepage.md
Normal file
18
content/lang/es/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
Este es un servidor de reinicio I2P
|
||||
============================
|
||||
|
||||
I2P es una red de igual a igual que utiliza "Enrutamiento de ajo" para mantener la privacidad.
|
||||
Los nodos de reseed le ayudan a conectarse a I2P por primera vez, y aunque
|
||||
solo debería tener que usarlos de vez en cuando, son muy importantes
|
||||
servicios.
|
||||
|
||||
[Para obtener más información sobre I2P, visite el sitio web del proyecto] (https://geti2p.net)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
[! [Help reseed] (images / reseed.png)] (https://geti2p.net)
|
||||
|
||||
- [Obtenga más información sobre reseeds] (https://geti2p.net/en/docs/reseed)
|
||||
- [Aprenda a ejecutar un reseed] (https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [Lea el código del servidor reseed y conozca más opciones de reseed] (https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### ¿Tienes problemas de conexión? Aquí hay un enlace único a un paquete reseed para usted.
|
18
content/lang/fr/homepage.md
Normal file
18
content/lang/fr/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
Ceci est un serveur de réensemencement I2P
|
||||
============================
|
||||
|
||||
I2P est un réseau peer-to-peer qui utilise le « routage à l'ail » pour maintenir la confidentialité.
|
||||
Les nœuds de réamorçage vous aident à vous connecter à I2P pour la première fois, et même si
|
||||
vous ne devriez avoir à les utiliser qu'une fois de temps en temps, ils sont très importants
|
||||
prestations de service.
|
||||
|
||||
[Pour en savoir plus sur I2P, visitez le site Web du projet](https://geti2p.net)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
[](https://geti2p.net)
|
||||
|
||||
- [En savoir plus sur les réensemencements](https://geti2p.net/en/docs/reseed)
|
||||
- [Apprenez à exécuter un reseed](https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [Lire le code du serveur de réensemencement et en savoir plus sur les options de réensemencement] (https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### Vous avez des problèmes de connexion ? Voici un lien unique vers un paquet de graines pour vous.
|
18
content/lang/hi/homepage.md
Normal file
18
content/lang/hi/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
यह एक I2P शोधित सर्वर है
|
||||
===========================
|
||||
|
||||
I2P एक पीयर-टू-पीयर नेटवर्क है जो गोपनीयता बनाए रखने के लिए "लहसुन रूटिंग" का उपयोग करता है।
|
||||
रीसेड नोड्स आपको पहली बार I2P से कनेक्ट होने में मदद करते हैं, और भले ही
|
||||
आपको उन्हें केवल एक बार ही उपयोग करना चाहिए, वे बहुत महत्वपूर्ण हैं
|
||||
सेवाएं।
|
||||
|
||||
[I2P के बारे में अधिक जानने के लिए, प्रोजेक्ट वेबसाइट पर जाएँ](https://geti2p.net)
|
||||
-------------------------------------------------------------------------
|
||||
|
||||
[](https://geti2p.net)
|
||||
|
||||
- [रिसेड्स के बारे में और जानें](https://geti2p.net/hi/docs/reseed)
|
||||
- [रिसेड चलाना सीखें](https://geti2p.net/hi/get-involved/guides/reseed)
|
||||
- [रीडेड सर्वर कोड पढ़ें और अधिक शोध विकल्पों के बारे में जानें](https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### कनेक्शन की समस्या आ रही है? यहां आपके लिए एक शोधित बंडल का वन-टाइम लिंक दिया गया है।
|
18
content/lang/id/homepage.md
Normal file
18
content/lang/id/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
Ini adalah Server Reseed I2P
|
||||
==============================
|
||||
|
||||
I2P adalah jaringan peer-to-peer yang menggunakan "Garlic Routing" untuk menjaga privasi.
|
||||
Reseed node membantu Anda terhubung ke I2P untuk pertama kalinya, dan meskipun
|
||||
Anda hanya perlu menggunakannya sesekali, itu sangat penting
|
||||
jasa.
|
||||
|
||||
[Untuk mempelajari lebih lanjut tentang I2P, kunjungi situs web proyek](https://geti2p.net)
|
||||
-------------------------------------------------- -----------------------
|
||||
|
||||
[](https://geti2p.net)
|
||||
|
||||
- [Pelajari lebih lanjut tentang reseed](https://geti2p.net/en/docs/reseed)
|
||||
- [Pelajari cara menjalankan reseed](https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [Baca kode server reseed dan pelajari tentang opsi reseed lainnya](https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### Mengalami masalah koneksi? Berikut ini tautan satu kali ke bundel reseed untuk Anda.
|
18
content/lang/jp/homepage.md
Normal file
18
content/lang/jp/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
これはI2PReseedServerです
|
||||
============================
|
||||
|
||||
I2Pは、プライバシーを維持するために「GarlicRouting」を使用するピアツーピアネットワークです。
|
||||
再シードノードは、I2Pに初めて接続するのに役立ちます。
|
||||
たまに一度だけ使用する必要があります、それらは非常に重要です
|
||||
サービス。
|
||||
|
||||
[I2Pの詳細については、プロジェクトのWebサイトにアクセスしてください](https://geti2p.net)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
[](https://geti2p.net)
|
||||
|
||||
-[再シードの詳細](https://geti2p.net/en/docs/reseed)
|
||||
-[再シードの実行方法を学ぶ](https://geti2p.net/en/get-involved/guides/reseed)
|
||||
-[再シードサーバーコードを読み、再シードオプションの詳細を確認してください](https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
###接続に問題がありますか? これがあなたのための再シードバンドルへのワンタイムリンクです。
|
18
content/lang/ko/homepage.md
Normal file
18
content/lang/ko/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
I2P Reseed 서버입니다.
|
||||
==============================
|
||||
|
||||
I2P는 "Garlic Routing"을 사용하여 개인 정보를 유지하는 P2P 네트워크입니다.
|
||||
Reseed 노드는 처음으로 I2P에 연결하는 데 도움이 됩니다.
|
||||
아주 가끔은 한 번만 사용해야 하므로 매우 중요합니다.
|
||||
서비스.
|
||||
|
||||
[I2P에 대한 자세한 내용은 프로젝트 웹 사이트를 방문하십시오.](https://geti2p.net)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
[](https://geti2p.net)
|
||||
|
||||
- [리시드에 대해 자세히 알아보기](https://geti2p.net/en/docs/reseed)
|
||||
- [리시드 실행 방법 알아보기](https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [리시드 서버 코드를 읽고 더 많은 리시드 옵션에 대해 알아보세요](https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### 연결 문제가 있습니까? 다음은 reseed 번들에 대한 일회성 링크입니다.
|
18
content/lang/pr/homepage.md
Normal file
18
content/lang/pr/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
Este é um servidor I2P Reseed
|
||||
==============================
|
||||
|
||||
I2P é uma rede ponto a ponto que usa “Roteamento de alho” para manter a privacidade.
|
||||
Nós Reseed ajudam você a se conectar ao I2P pela primeira vez, e mesmo que
|
||||
você só deve ter que usá-los de vez em quando, eles são muito importantes
|
||||
Serviços.
|
||||
|
||||
[Para saber mais sobre I2P, visite o site do projeto] (https://geti2p.net)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
[! [Help reseed] (images / reseed.png)] (https://geti2p.net)
|
||||
|
||||
- [Saiba mais sobre reseeds] (https://geti2p.net/en/docs/reseed)
|
||||
- [Saiba como executar uma nova propagação] (https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [Leia o código do servidor de nova propagação e aprenda sobre mais opções de nova propagação] (https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### Tendo problemas de conexão? Aqui está um link único para um pacote reenviado para você.
|
18
content/lang/ru/homepage.md
Normal file
18
content/lang/ru/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
Это сервер I2P Reseed
|
||||
============================
|
||||
|
||||
I2P - это одноранговая сеть, которая использует «Garlic Routing» для обеспечения конфиденциальности.
|
||||
Узлы с повторным заполнением помогут вам впервые подключиться к I2P, и даже если
|
||||
вы должны использовать их только время от времени, они очень важны
|
||||
Сервисы.
|
||||
|
||||
[Чтобы узнать больше об I2P, посетите сайт проекта] (https://geti2p.net)
|
||||
------------------------------------------------------------------------
|
||||
|
||||
[! [Повторное заполнение справки] (images / Reseed.png)] (https://geti2p.net)
|
||||
|
||||
- [Подробнее о Reseeds] (https://geti2p.net/en/docs/reseed)
|
||||
- [Узнайте, как запустить повторное заполнение] (https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [Прочтите код сервера повторного заполнения и узнайте о дополнительных параметрах повторного заполнения] (https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### Возникли проблемы с подключением? Вот вам одноразовая ссылка на набор повторных рассылок.
|
18
content/lang/zh/homepage.md
Normal file
18
content/lang/zh/homepage.md
Normal file
@@ -0,0 +1,18 @@
|
||||
这是一个 I2P Reseed 服务器
|
||||
============================
|
||||
|
||||
I2P 是一种点对点网络,它使用“大蒜路由”来维护隐私。
|
||||
Reseed 节点可帮助您首次连接到 I2P,即使
|
||||
你应该只需要偶尔使用它们,它们非常重要
|
||||
服务。
|
||||
|
||||
【了解更多关于I2P,请访问项目网站】(https://geti2p.net)
|
||||
-----------------------------------------------------------------
|
||||
|
||||
[](https://geti2p.net)
|
||||
|
||||
- [了解更多关于 reseeds](https://geti2p.net/en/docs/reseed)
|
||||
- [了解如何进行重新播种](https://geti2p.net/en/get-involved/guides/reseed)
|
||||
- [阅读 reseed 服务器代码并了解更多 reseed 选项](https://i2pgit.org/idk/reseed-tools)
|
||||
|
||||
### 有连接问题? 这是为您提供的重新种子包的一次性链接。
|
0
content/script.js
Normal file
0
content/script.js
Normal file
85
content/style.css
Normal file
85
content/style.css
Normal file
@@ -0,0 +1,85 @@
|
||||
body {
|
||||
font-family: "Roboto", monospace;
|
||||
text-align: justify;
|
||||
background-color: #D9D9D9;
|
||||
}
|
||||
h1 {
|
||||
width: 55%;
|
||||
margin-left: 45%;
|
||||
margin-top: 5%;
|
||||
}
|
||||
h2 {
|
||||
width: 55%;
|
||||
margin-left: 45%;
|
||||
}
|
||||
#homepage > h2:nth-child(3) > a:nth-child(1) {
|
||||
text-decoration: none;
|
||||
}
|
||||
h3 {
|
||||
width: 55%;
|
||||
margin-left: 45%;
|
||||
}
|
||||
h4 {
|
||||
width: 55%;
|
||||
margin-left: 45%;
|
||||
}
|
||||
ul {
|
||||
width: 55%;
|
||||
display: block;
|
||||
margin-left: 40%;
|
||||
}
|
||||
li {
|
||||
margin-top: 1%;
|
||||
margin-left: 20%;
|
||||
}
|
||||
p {
|
||||
max-width: 55%;
|
||||
font-size: 1.2em;
|
||||
margin-right: 2%;
|
||||
}
|
||||
#homepage > p:nth-child(2){
|
||||
margin-left: 45%;
|
||||
}
|
||||
|
||||
.pingtest {
|
||||
margin-left: 45%;
|
||||
}
|
||||
|
||||
img {
|
||||
position: absolute;
|
||||
margin-top: 3%;
|
||||
top: 5%;
|
||||
left: 5%;
|
||||
width: 35%;
|
||||
display: inline;
|
||||
margin-bottom: 5%;
|
||||
padding-bottom: 5%;
|
||||
|
||||
}
|
||||
|
||||
.inline {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.link-button {
|
||||
margin-top: 3%;
|
||||
padding: 2%;
|
||||
padding-left: 5%;
|
||||
padding-right: 5%;
|
||||
margin-left: -3%;
|
||||
border-radius: 20%;
|
||||
border-style: groove;
|
||||
}
|
||||
|
||||
.link-button:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.link-button:active {
|
||||
color:red;
|
||||
}
|
||||
|
||||
figure > img {
|
||||
max-width: 35%;
|
||||
display: inline;
|
||||
}
|
19
doc-pak/LICENSE
Normal file
19
doc-pak/LICENSE
Normal file
@@ -0,0 +1,19 @@
|
||||
Copyright (c) 2014 Matt Drollette
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
75
doc-pak/README.md
Normal file
75
doc-pak/README.md
Normal file
@@ -0,0 +1,75 @@
|
||||
I2P Reseed Tools
|
||||
==================
|
||||
|
||||

|
||||
|
||||
This tool provides a secure and efficient reseed server for the I2P network.
|
||||
There are several utility commands to create, sign, and validate SU3 files.
|
||||
Please note that this requires at least Go version 1.13, and uses Go Modules.
|
||||
|
||||
Standard reseeds are distributed with the I2P packages. To get your reseed
|
||||
included, apply on [i2pforum.i2p](http://i2pforum.i2p).
|
||||
|
||||
## Dependencies
|
||||
|
||||
`go`, `git`, and optionally `make` are required to build the project.
|
||||
Precompiled binaries for most platforms are available at my github mirror
|
||||
https://github.com/eyedeekay/i2p-tools-1.
|
||||
|
||||
In order to install the build-dependencies on Ubuntu or Debian, you may use:
|
||||
|
||||
```sh
|
||||
sudo apt-get install golang-go git make
|
||||
```
|
||||
|
||||
## Installation
|
||||
|
||||
Reseed-tools can be run as a user, as a freestanding service, or be installed
|
||||
as an I2P Plugin. It will attempt to configure itself automatically. You should
|
||||
make sure to set the `--signer` flag or the `RESEED_EMAIL` environment variable
|
||||
to configure your signing keys/contact info.
|
||||
|
||||
### Installation(From Source)
|
||||
|
||||
```
|
||||
git clone https://i2pgit.org/idk/reseed-tools
|
||||
cd reseed-tools
|
||||
make build
|
||||
# Optionally, if you want to install to /usr/bin/reseed-tools
|
||||
sudo make install
|
||||
```
|
||||
|
||||
## Usage
|
||||
|
||||
#### Debian/Ubuntu note:
|
||||
|
||||
It is possible to create a `.deb` package using [these instructions](docs/DEBIAN.md).
|
||||
|
||||
Debian users who are running I2P as a system service must also run the
|
||||
`reseed-tools` as the same user. This is so that the reseed-tools can access
|
||||
the I2P service's netDb directory. On Debian and Ubuntu, that user is `i2psvc`
|
||||
and the netDb directory is: `/var/lib/i2p/i2p-config/netDb`.
|
||||
|
||||
## Example Commands:
|
||||
|
||||
### Without a webserver, standalone with TLS support
|
||||
|
||||
If this is your first time running a reseed server (ie. you don't have any existing keys),
|
||||
you can simply run the command and follow the prompts to create the appropriate keys, crl and certificates.
|
||||
Afterwards an HTTPS reseed server will start on the default port and generate 6 files in your current directory
|
||||
(a TLS key, certificate and crl, and a su3-file signing key, certificate and crl).
|
||||
|
||||
```
|
||||
reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --tlsHost=your-domain.tld
|
||||
```
|
||||
|
||||
### Locally behind a webserver (reverse proxy setup), preferred:
|
||||
|
||||
If you are using a reverse proxy server it may provide the TLS certificate instead.
|
||||
|
||||
```
|
||||
reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --port=8443 --ip=127.0.0.1 --trustProxy
|
||||
```
|
||||
|
||||
- **Usage** [More examples can be found here.](docs/EXAMPLES.md)
|
||||
- **Docker** [Docker examples can be found here](docs/DOCKER.md)
|
179
doc-pak/docs/DEBIAN.html
Normal file
179
doc-pak/docs/DEBIAN.html
Normal file
@@ -0,0 +1,179 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
I2P Reseed Tools
|
||||
</title>
|
||||
<meta name="author" content="eyedeekay" />
|
||||
<meta name="description" content="reseed-tools" />
|
||||
<meta name="keywords" content="master" />
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="showhider.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="navbar">
|
||||
<a href="#shownav">
|
||||
Show navigation
|
||||
</a>
|
||||
<div id="shownav">
|
||||
<div id="hidenav">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="..">
|
||||
Up one level ^
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DEBIAN.html">
|
||||
DEBIAN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DOCKER.html">
|
||||
DOCKER
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="EXAMPLES.html">
|
||||
EXAMPLES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="PLUGIN.html">
|
||||
PLUGIN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="SERVICES.html">
|
||||
SERVICES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="TLS.html">
|
||||
TLS
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="#hidenav">
|
||||
Hide Navigation
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a id="returnhome" href="/">
|
||||
/
|
||||
</a>
|
||||
<h1>
|
||||
Debian and Ubuntu Packages
|
||||
</h1>
|
||||
<p>
|
||||
It’s possible to generate a package which is compatible with Debian and Ubuntu,
|
||||
using the command:
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
make checkinstall
|
||||
sudo apt-get install ./reseed-tools_0.2.30-1_amd64.deb
|
||||
</code></pre>
|
||||
<p>
|
||||
This requires you to have
|
||||
<code>
|
||||
fakeroot
|
||||
</code>
|
||||
and
|
||||
<code>
|
||||
checkinstall
|
||||
</code>
|
||||
installed. Use the command
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
sudo apt-get install fakeroot checkinstall
|
||||
</code></pre>
|
||||
<p>
|
||||
to install them.
|
||||
</p>
|
||||
<div id="sourcecode">
|
||||
<span id="sourcehead">
|
||||
<strong>
|
||||
Get the source code:
|
||||
</strong>
|
||||
</span>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://i2pgit.org/idk/reseed-tools">
|
||||
Source Repository: (https://i2pgit.org/idk/reseed-tools)
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<a href="#show">
|
||||
Show license
|
||||
</a>
|
||||
<div id="show">
|
||||
<div id="hide">
|
||||
<pre><code>Copyright (c) 2014 Matt Drollette
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
</code></pre>
|
||||
<a href="#hide">
|
||||
Hide license
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://geti2p.net/">
|
||||
<img src="i2plogo.png"></img>
|
||||
I2P
|
||||
</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
19
doc-pak/docs/DEBIAN.md
Normal file
19
doc-pak/docs/DEBIAN.md
Normal file
@@ -0,0 +1,19 @@
|
||||
# Debian and Ubuntu Packages
|
||||
|
||||
It's possible to generate a package which is compatible with Debian and Ubuntu,
|
||||
using the command:
|
||||
|
||||
```sh
|
||||
|
||||
make checkinstall
|
||||
sudo apt-get install ./reseed-tools_0.2.30-1_amd64.deb
|
||||
```
|
||||
|
||||
This requires you to have `fakeroot` and `checkinstall` installed. Use the command
|
||||
|
||||
```sh
|
||||
|
||||
sudo apt-get install fakeroot checkinstall
|
||||
```
|
||||
|
||||
to install them.
|
232
doc-pak/docs/DOCKER.html
Normal file
232
doc-pak/docs/DOCKER.html
Normal file
@@ -0,0 +1,232 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
I2P Reseed Tools
|
||||
</title>
|
||||
<meta name="author" content="eyedeekay" />
|
||||
<meta name="description" content="reseed-tools" />
|
||||
<meta name="keywords" content="master" />
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="showhider.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="navbar">
|
||||
<a href="#shownav">
|
||||
Show navigation
|
||||
</a>
|
||||
<div id="shownav">
|
||||
<div id="hidenav">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="..">
|
||||
Up one level ^
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DEBIAN.html">
|
||||
DEBIAN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DOCKER.html">
|
||||
DOCKER
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="EXAMPLES.html">
|
||||
EXAMPLES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="PLUGIN.html">
|
||||
PLUGIN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="SERVICES.html">
|
||||
SERVICES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="TLS.html">
|
||||
TLS
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="#hidenav">
|
||||
Hide Navigation
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a id="returnhome" href="/">
|
||||
/
|
||||
</a>
|
||||
<h1>
|
||||
Docker
|
||||
</h1>
|
||||
<p>
|
||||
To make it easier to deploy reseeds, it is possible to run this software as a
|
||||
Docker image. Because the software requires access to a network database to host
|
||||
a reseed, you will need to mount the netDb as a volume inside your docker
|
||||
container to provide access to it, and you will need to run it as the same user
|
||||
and group inside the container as I2P.
|
||||
</p>
|
||||
<p>
|
||||
When you run a reseed under Docker in this fashion, it will automatically
|
||||
generate a self-signed certificate for your reseed server in a Docker volume
|
||||
named reseed-keys.
|
||||
<em>
|
||||
Back up this directory
|
||||
</em>
|
||||
, if it is lost it is impossible
|
||||
to reproduce.
|
||||
</p>
|
||||
<p>
|
||||
Additional flags can be passed to the application in the Docker container by
|
||||
appending them to the command. Please note that Docker is not currently
|
||||
compatible with .onion reseeds unless you pass the –network=host tag.
|
||||
</p>
|
||||
<h2>
|
||||
If I2P is running as your user, do this:
|
||||
</h2>
|
||||
<pre><code> docker run -itd \
|
||||
--name reseed \
|
||||
--publish 443:8443 \
|
||||
--restart always \
|
||||
--volume $HOME/.i2p/netDb:$HOME/.i2p/netDb:z \
|
||||
--volume reseed-keys:/var/lib/i2p/i2p-config/reseed \
|
||||
eyedeekay/reseed \
|
||||
--signer $YOUR_EMAIL_HERE
|
||||
</code></pre>
|
||||
<h2>
|
||||
If I2P is running as another user, do this:
|
||||
</h2>
|
||||
<pre><code> docker run -itd \
|
||||
--name reseed \
|
||||
--user $(I2P_UID) \
|
||||
--group-add $(I2P_GID) \
|
||||
--publish 443:8443 \
|
||||
--restart always \
|
||||
--volume /PATH/TO/USER/I2P/HERE/netDb:/var/lib/i2p/i2p-config/netDb:z \
|
||||
--volume reseed-keys:/var/lib/i2p/i2p-config/reseed \
|
||||
eyedeekay/reseed \
|
||||
--signer $YOUR_EMAIL_HERE
|
||||
</code></pre>
|
||||
<h2>
|
||||
<strong>
|
||||
Debian/Ubuntu and Docker
|
||||
</strong>
|
||||
</h2>
|
||||
<p>
|
||||
In many cases I2P will be running as the Debian system user
|
||||
<code>
|
||||
i2psvc
|
||||
</code>
|
||||
. This
|
||||
is the case for all installs where Debian’s Advanced Packaging Tool(apt) was
|
||||
used to peform the task. If you used
|
||||
<code>
|
||||
apt-get install
|
||||
</code>
|
||||
this command will
|
||||
work for you. In that case, just copy-and-paste:
|
||||
</p>
|
||||
<pre><code> docker run -itd \
|
||||
--name reseed \
|
||||
--user $(id -u i2psvc) \
|
||||
--group-add $(id -g i2psvc) \
|
||||
--publish 443:8443 \
|
||||
--restart always \
|
||||
--volume /var/lib/i2p/i2p-config/netDb:/var/lib/i2p/i2p-config/netDb:z \
|
||||
--volume reseed-keys:/var/lib/i2p/i2p-config/reseed \
|
||||
eyedeekay/reseed \
|
||||
--signer $YOUR_EMAIL_HERE
|
||||
</code></pre>
|
||||
<div id="sourcecode">
|
||||
<span id="sourcehead">
|
||||
<strong>
|
||||
Get the source code:
|
||||
</strong>
|
||||
</span>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://i2pgit.org/idk/reseed-tools">
|
||||
Source Repository: (https://i2pgit.org/idk/reseed-tools)
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<a href="#show">
|
||||
Show license
|
||||
</a>
|
||||
<div id="show">
|
||||
<div id="hide">
|
||||
<pre><code>Copyright (c) 2014 Matt Drollette
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
</code></pre>
|
||||
<a href="#hide">
|
||||
Hide license
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://geti2p.net/">
|
||||
<img src="i2plogo.png"></img>
|
||||
I2P
|
||||
</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
58
doc-pak/docs/DOCKER.md
Normal file
58
doc-pak/docs/DOCKER.md
Normal file
@@ -0,0 +1,58 @@
|
||||
# Docker
|
||||
|
||||
To make it easier to deploy reseeds, it is possible to run this software as a
|
||||
Docker image. Because the software requires access to a network database to host
|
||||
a reseed, you will need to mount the netDb as a volume inside your docker
|
||||
container to provide access to it, and you will need to run it as the same user
|
||||
and group inside the container as I2P.
|
||||
|
||||
When you run a reseed under Docker in this fashion, it will automatically
|
||||
generate a self-signed certificate for your reseed server in a Docker volume
|
||||
named reseed-keys. *Back up this directory*, if it is lost it is impossible
|
||||
to reproduce.
|
||||
|
||||
Additional flags can be passed to the application in the Docker container by
|
||||
appending them to the command. Please note that Docker is not currently
|
||||
compatible with .onion reseeds unless you pass the --network=host tag.
|
||||
|
||||
## If I2P is running as your user, do this:
|
||||
|
||||
docker run -itd \
|
||||
--name reseed \
|
||||
--publish 443:8443 \
|
||||
--restart always \
|
||||
--volume $HOME/.i2p/netDb:$HOME/.i2p/netDb:z \
|
||||
--volume reseed-keys:/var/lib/i2p/i2p-config/reseed \
|
||||
eyedeekay/reseed \
|
||||
--signer $YOUR_EMAIL_HERE
|
||||
|
||||
## If I2P is running as another user, do this:
|
||||
|
||||
docker run -itd \
|
||||
--name reseed \
|
||||
--user $(I2P_UID) \
|
||||
--group-add $(I2P_GID) \
|
||||
--publish 443:8443 \
|
||||
--restart always \
|
||||
--volume /PATH/TO/USER/I2P/HERE/netDb:/var/lib/i2p/i2p-config/netDb:z \
|
||||
--volume reseed-keys:/var/lib/i2p/i2p-config/reseed \
|
||||
eyedeekay/reseed \
|
||||
--signer $YOUR_EMAIL_HERE
|
||||
|
||||
## **Debian/Ubuntu and Docker**
|
||||
|
||||
In many cases I2P will be running as the Debian system user ```i2psvc```. This
|
||||
is the case for all installs where Debian's Advanced Packaging Tool(apt) was
|
||||
used to peform the task. If you used ```apt-get install``` this command will
|
||||
work for you. In that case, just copy-and-paste:
|
||||
|
||||
docker run -itd \
|
||||
--name reseed \
|
||||
--user $(id -u i2psvc) \
|
||||
--group-add $(id -g i2psvc) \
|
||||
--publish 443:8443 \
|
||||
--restart always \
|
||||
--volume /var/lib/i2p/i2p-config/netDb:/var/lib/i2p/i2p-config/netDb:z \
|
||||
--volume reseed-keys:/var/lib/i2p/i2p-config/reseed \
|
||||
eyedeekay/reseed \
|
||||
--signer $YOUR_EMAIL_HERE
|
179
doc-pak/docs/EXAMPLES.html
Normal file
179
doc-pak/docs/EXAMPLES.html
Normal file
@@ -0,0 +1,179 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
I2P Reseed Tools
|
||||
</title>
|
||||
<meta name="author" content="eyedeekay" />
|
||||
<meta name="description" content="reseed-tools" />
|
||||
<meta name="keywords" content="master" />
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="showhider.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="navbar">
|
||||
<a href="#shownav">
|
||||
Show navigation
|
||||
</a>
|
||||
<div id="shownav">
|
||||
<div id="hidenav">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="..">
|
||||
Up one level ^
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DEBIAN.html">
|
||||
DEBIAN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DOCKER.html">
|
||||
DOCKER
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="EXAMPLES.html">
|
||||
EXAMPLES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="PLUGIN.html">
|
||||
PLUGIN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="SERVICES.html">
|
||||
SERVICES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="TLS.html">
|
||||
TLS
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="#hidenav">
|
||||
Hide Navigation
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a id="returnhome" href="/">
|
||||
/
|
||||
</a>
|
||||
<h2>
|
||||
Example Commands:
|
||||
</h2>
|
||||
<h3>
|
||||
Without a webserver, standalone, automatic OnionV3 with TLS support
|
||||
</h3>
|
||||
<pre><code>./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --onion --i2p --p2p
|
||||
</code></pre>
|
||||
<h3>
|
||||
Without a webserver, standalone, serve P2P with LibP2P
|
||||
</h3>
|
||||
<pre><code>./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --p2p
|
||||
</code></pre>
|
||||
<h3>
|
||||
Without a webserver, standalone, in-network reseed
|
||||
</h3>
|
||||
<pre><code>./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --i2p
|
||||
</code></pre>
|
||||
<h3>
|
||||
Without a webserver, standalone, Regular TLS, OnionV3 with TLS
|
||||
</h3>
|
||||
<pre><code>./reseed-tools reseed --tlsHost=your-domain.tld --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --onion
|
||||
</code></pre>
|
||||
<h3>
|
||||
Without a webserver, standalone, Regular TLS, OnionV3 with TLS, and LibP2P
|
||||
</h3>
|
||||
<pre><code>./reseed-tools reseed --tlsHost=your-domain.tld --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --onion --p2p
|
||||
</code></pre>
|
||||
<div id="sourcecode">
|
||||
<span id="sourcehead">
|
||||
<strong>
|
||||
Get the source code:
|
||||
</strong>
|
||||
</span>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://i2pgit.org/idk/reseed-tools">
|
||||
Source Repository: (https://i2pgit.org/idk/reseed-tools)
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<a href="#show">
|
||||
Show license
|
||||
</a>
|
||||
<div id="show">
|
||||
<div id="hide">
|
||||
<pre><code>Copyright (c) 2014 Matt Drollette
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
</code></pre>
|
||||
<a href="#hide">
|
||||
Hide license
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://geti2p.net/">
|
||||
<img src="i2plogo.png"></img>
|
||||
I2P
|
||||
</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
32
doc-pak/docs/EXAMPLES.md
Normal file
32
doc-pak/docs/EXAMPLES.md
Normal file
@@ -0,0 +1,32 @@
|
||||
|
||||
## Example Commands:
|
||||
|
||||
### Without a webserver, standalone, automatic OnionV3 with TLS support
|
||||
|
||||
```
|
||||
./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --onion --i2p --p2p
|
||||
```
|
||||
|
||||
### Without a webserver, standalone, serve P2P with LibP2P
|
||||
|
||||
```
|
||||
./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --p2p
|
||||
```
|
||||
|
||||
### Without a webserver, standalone, in-network reseed
|
||||
|
||||
```
|
||||
./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --i2p
|
||||
```
|
||||
|
||||
### Without a webserver, standalone, Regular TLS, OnionV3 with TLS
|
||||
|
||||
```
|
||||
./reseed-tools reseed --tlsHost=your-domain.tld --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --onion
|
||||
```
|
||||
|
||||
### Without a webserver, standalone, Regular TLS, OnionV3 with TLS, and LibP2P
|
||||
|
||||
```
|
||||
./reseed-tools reseed --tlsHost=your-domain.tld --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --onion --p2p
|
||||
```
|
263
doc-pak/docs/PLUGIN.html
Normal file
263
doc-pak/docs/PLUGIN.html
Normal file
@@ -0,0 +1,263 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
I2P Reseed Tools
|
||||
</title>
|
||||
<meta name="author" content="eyedeekay" />
|
||||
<meta name="description" content="reseed-tools" />
|
||||
<meta name="keywords" content="master" />
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="showhider.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="navbar">
|
||||
<a href="#shownav">
|
||||
Show navigation
|
||||
</a>
|
||||
<div id="shownav">
|
||||
<div id="hidenav">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="..">
|
||||
Up one level ^
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DEBIAN.html">
|
||||
DEBIAN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DOCKER.html">
|
||||
DOCKER
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="EXAMPLES.html">
|
||||
EXAMPLES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="PLUGIN.html">
|
||||
PLUGIN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="SERVICES.html">
|
||||
SERVICES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="TLS.html">
|
||||
TLS
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="#hidenav">
|
||||
Hide Navigation
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a id="returnhome" href="/">
|
||||
/
|
||||
</a>
|
||||
<h1>
|
||||
Plugin install URL’s
|
||||
</h1>
|
||||
<p>
|
||||
Plugin releases are available inside of i2p at
|
||||
<a href="http://idk.i2p/reseed-tools/">
|
||||
http://idk.i2p/reseed-tools/
|
||||
</a>
|
||||
and via the github mirror at
|
||||
<a href="https://github.com/eyedeekay/reseed-tools/releases">
|
||||
https://github.com/eyedeekay/reseed-tools/releases
|
||||
</a>
|
||||
.
|
||||
These can be installed by adding them on the
|
||||
<a href="http://127.0.0.1:7657/configplugins">
|
||||
http://127.0.0.1:7657/configplugins
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
<p>
|
||||
After installing the plugin, you should immediately edit the
|
||||
<code>
|
||||
$PLUGIN/signer
|
||||
</code>
|
||||
file in order to set your
|
||||
<code>
|
||||
--signer
|
||||
</code>
|
||||
email, which is used to name your keys.
|
||||
You can find the
|
||||
<code>
|
||||
$PLUGIN
|
||||
</code>
|
||||
directory in your I2P config directory, which is
|
||||
usually
|
||||
<code>
|
||||
$HOME/.i2p
|
||||
</code>
|
||||
on Unixes.
|
||||
</p>
|
||||
<p>
|
||||
This will allow the developers to contact you if your reseed has issues
|
||||
and will authenticate your reseed to the I2P routers that use it.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
darwin/amd64:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-darwin-amd64.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-darwin-amd64.su3
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
darwin/arm64:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-darwin-arm64.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-darwin-arm64.su3
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
linux/386:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-linux-386.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-linux-386.su3
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
linux/amd64:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-linux-amd64.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-linux-amd64.su3
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
linux/arm:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-linux-arm.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-linux-arm.su3
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
linux/arm64:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-linux-arm64.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-linux-arm64.su3
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
openbsd/amd64:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-openbsd-amd64.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-openbsd-amd64.su3
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
freebsd/386:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-freebsd-386.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-freebsd-386.su3
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
freebsd/amd64:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-freebsd-amd64.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-freebsd-amd64.su3
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
windows/amd64:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-windows-amd64.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-windows-amd64.su3
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
windows/386:
|
||||
<a href="http://idk.i2p/reseed-tools/reseed-tools-windows-386.su3">
|
||||
http://idk.i2p/reseed-tools/reseed-tools-windows-386.su3
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<div id="sourcecode">
|
||||
<span id="sourcehead">
|
||||
<strong>
|
||||
Get the source code:
|
||||
</strong>
|
||||
</span>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://i2pgit.org/idk/reseed-tools">
|
||||
Source Repository: (https://i2pgit.org/idk/reseed-tools)
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<a href="#show">
|
||||
Show license
|
||||
</a>
|
||||
<div id="show">
|
||||
<div id="hide">
|
||||
<pre><code>Copyright (c) 2014 Matt Drollette
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
</code></pre>
|
||||
<a href="#hide">
|
||||
Hide license
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://geti2p.net/">
|
||||
<img src="i2plogo.png"></img>
|
||||
I2P
|
||||
</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
26
doc-pak/docs/PLUGIN.md
Normal file
26
doc-pak/docs/PLUGIN.md
Normal file
@@ -0,0 +1,26 @@
|
||||
# Plugin install URL's
|
||||
|
||||
Plugin releases are available inside of i2p at http://idk.i2p/reseed-tools/
|
||||
and via the github mirror at https://github.com/eyedeekay/reseed-tools/releases.
|
||||
These can be installed by adding them on the
|
||||
[http://127.0.0.1:7657/configplugins](http://127.0.0.1:7657/configplugins).
|
||||
|
||||
After installing the plugin, you should immediately edit the `$PLUGIN/signer`
|
||||
file in order to set your `--signer` email, which is used to name your keys.
|
||||
You can find the `$PLUGIN` directory in your I2P config directory, which is
|
||||
usually `$HOME/.i2p` on Unixes.
|
||||
|
||||
This will allow the developers to contact you if your reseed has issues
|
||||
and will authenticate your reseed to the I2P routers that use it.
|
||||
|
||||
- darwin/amd64: [http://idk.i2p/reseed-tools/reseed-tools-darwin-amd64.su3](http://idk.i2p/reseed-tools/reseed-tools-darwin-amd64.su3)
|
||||
- darwin/arm64: [http://idk.i2p/reseed-tools/reseed-tools-darwin-arm64.su3](http://idk.i2p/reseed-tools/reseed-tools-darwin-arm64.su3)
|
||||
- linux/386: [http://idk.i2p/reseed-tools/reseed-tools-linux-386.su3](http://idk.i2p/reseed-tools/reseed-tools-linux-386.su3)
|
||||
- linux/amd64: [http://idk.i2p/reseed-tools/reseed-tools-linux-amd64.su3](http://idk.i2p/reseed-tools/reseed-tools-linux-amd64.su3)
|
||||
- linux/arm: [http://idk.i2p/reseed-tools/reseed-tools-linux-arm.su3](http://idk.i2p/reseed-tools/reseed-tools-linux-arm.su3)
|
||||
- linux/arm64: [http://idk.i2p/reseed-tools/reseed-tools-linux-arm64.su3](http://idk.i2p/reseed-tools/reseed-tools-linux-arm64.su3)
|
||||
- openbsd/amd64: [http://idk.i2p/reseed-tools/reseed-tools-openbsd-amd64.su3](http://idk.i2p/reseed-tools/reseed-tools-openbsd-amd64.su3)
|
||||
- freebsd/386: [http://idk.i2p/reseed-tools/reseed-tools-freebsd-386.su3](http://idk.i2p/reseed-tools/reseed-tools-freebsd-386.su3)
|
||||
- freebsd/amd64: [http://idk.i2p/reseed-tools/reseed-tools-freebsd-amd64.su3](http://idk.i2p/reseed-tools/reseed-tools-freebsd-amd64.su3)
|
||||
- windows/amd64: [http://idk.i2p/reseed-tools/reseed-tools-windows-amd64.su3](http://idk.i2p/reseed-tools/reseed-tools-windows-amd64.su3)
|
||||
- windows/386: [http://idk.i2p/reseed-tools/reseed-tools-windows-386.su3](http://idk.i2p/reseed-tools/reseed-tools-windows-386.su3)
|
0
doc-pak/docs/PROXY.md
Normal file
0
doc-pak/docs/PROXY.md
Normal file
91
doc-pak/docs/README.md
Normal file
91
doc-pak/docs/README.md
Normal file
@@ -0,0 +1,91 @@
|
||||
Configure an I2P Reseed Server Very Rapidly on Debian and Ubuntu
|
||||
================================================================
|
||||
|
||||
It is possible to easily and automatically configure a reseed server
|
||||
with a self-signed certificate on any Debian-based operating system,
|
||||
including Ubuntu and it's downstreams. This is achieved using the `checkinstall`
|
||||
tool to set up the software dependencies and the operating system to
|
||||
run the `I2P` service and the `reseed` service.
|
||||
|
||||
Using a binary package
|
||||
----------------------
|
||||
|
||||
If you do not wish to build from source, you can use a binary package
|
||||
from me. This package is built from this repo with the `make checkinstall`
|
||||
target and uploaded by me. I build it on an up-to-date Debian `sid` system
|
||||
at tag time. It contains a static binary and files for configuring it as a
|
||||
system service.
|
||||
|
||||
```sh
|
||||
|
||||
wget https://github.com/eyedeekay/reseed-tools/releases/download/v0.2.30/reseed-tools_0.2.30-1_amd64.deb
|
||||
# Obtain the checksum from the release web page
|
||||
echo "38941246e980dfc0456e066f514fc96a4ba25d25a7ef993abd75130770fa4d4d reseed-tools_0.2.30-1_amd64.deb" > SHA256SUMS
|
||||
sha256sums -c SHA256SUMS
|
||||
sudo apt-get install ./reseed-tools_0.2.30-1_amd64.deb
|
||||
```
|
||||
|
||||
Building the `.deb` package from the source(Optional)
|
||||
-----------------------------------------------------
|
||||
|
||||
If your software is too old, it's possible that the binary package I build will
|
||||
not work for you. It's very easy to generate your own from the source code in this
|
||||
repository.
|
||||
|
||||
\\**1.** Install the build dependencies
|
||||
|
||||
```sh
|
||||
|
||||
sudo apt-get install fakeroot checkinstall go git make
|
||||
```
|
||||
|
||||
\\**2.** Clone the source code
|
||||
|
||||
```sh
|
||||
|
||||
git clone https://i2pgit.org/idk/reseed-tools ~/go/src/i2pgit.org/idk/reseed-tools
|
||||
```
|
||||
|
||||
\\**3.** Generate the `.deb` package using the `make checkinstall` target
|
||||
|
||||
```sh
|
||||
|
||||
cd ~/go/src/i2pgit.org/idk/reseed-tools
|
||||
make checkinstall
|
||||
```
|
||||
|
||||
\\**4.** Install the `.deb` package
|
||||
|
||||
```sh
|
||||
|
||||
sudo apt-get install ./reseed-tools_*.deb
|
||||
```
|
||||
|
||||
Running the Service
|
||||
-------------------
|
||||
|
||||
\\**1.** First, ensure that the I2P service is already running. The longer the better,
|
||||
if you have to re-start the service, or if the service has very few peers, allow it to
|
||||
run for 24 hours before advancing to step **2.**
|
||||
|
||||
```sh
|
||||
|
||||
sudo systemctl start i2p
|
||||
# or, if you use sysvinit
|
||||
sudo service i2p start
|
||||
```
|
||||
|
||||
\\**2.** Once your I2P router is "Well-Integrated," start the reseed service.
|
||||
|
||||
```sh
|
||||
|
||||
sudo systemctl start reseed
|
||||
# or, if you use sysvinit
|
||||
sudo service reseed start
|
||||
```
|
||||
|
||||
Your reseed will auto-configure with a self-signed certificate on port `:8443`. The
|
||||
certificates themselves are available in `/var/lib/i2p/i2p-config/reseed`. When
|
||||
you are ready, you should copy the `*.crt` files from that directory and share them
|
||||
witth the I2P community on [`zzz.i2p`](http://zzz.i2p). These will allow I2P users
|
||||
to authenticate your reseed services and secure the I2P network.
|
34
doc-pak/docs/REMOTE.md
Normal file
34
doc-pak/docs/REMOTE.md
Normal file
@@ -0,0 +1,34 @@
|
||||
Using a remote Network Database
|
||||
-------------------------------
|
||||
|
||||
Beginning in `reseed-tools 2.5.0` it is possible to use reseed-tools to "share" a netDb directory on one host with a reseed server on another hose.
|
||||
This feature is built into the reseed-tools software.
|
||||
It is also possible to do this manually using `sshfs`, `ssh` combined with `cron`, and most available backup utilities like `borg` and `syncthing`.
|
||||
This guide only covers `reseed-tools`.
|
||||
|
||||
Password-Protected Sharing of NetDB content over I2P
|
||||
----------------------------------------------------
|
||||
|
||||
Run this command on a well-integrated I2P router which is **not** hosting a reseed server on the same IP address.
|
||||
To share the whole contents of your netDb directory over I2P, run reseed-tools with the following arguments:
|
||||
|
||||
```sh
|
||||
reseed-tools share --share-password $(use_a_strong_password) --netdb $(path_to_your_netdb)
|
||||
```
|
||||
|
||||
In a few seconds, you will have a new I2P site which will provide your netDb as a `.tar.gz` file to anyone with the password.
|
||||
Make a note of the base32 address of the new site for the next step.
|
||||
|
||||
Password-Protected Retrieval of Shared NetDB content over I2P
|
||||
-------------------------------------------------------------
|
||||
|
||||
Run this command on a router hosting which **is** hosting a reseed server on the same IP address, or add the arguments to your existing command.
|
||||
To retrieve a remote NetDB bundle from a hidden service, run reseed tools with the following arguments:
|
||||
|
||||
```sh
|
||||
reseed-tools reseed --share-peer $(thebase32addressyoumadeanoteofaboveintheotherstepnow.b32.i2p) --share-password $(use_a_strong_password) --netdb $(path_to_your_netdb)
|
||||
```
|
||||
|
||||
Periodically, the remote `netdb.tar.gz` bundle will be fetched from the remote server and extracted to the `--netdb` directory.
|
||||
If the `--netdb` directory is not empty, local RI's are left intact and never overwritten, essentially combining the local and remote netDb.
|
||||
If the directory is empty, the remote netDb will be the only netDb used by the reseed server.
|
254
doc-pak/docs/SERVICES.html
Normal file
254
doc-pak/docs/SERVICES.html
Normal file
@@ -0,0 +1,254 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
I2P Reseed Tools
|
||||
</title>
|
||||
<meta name="author" content="eyedeekay" />
|
||||
<meta name="description" content="reseed-tools" />
|
||||
<meta name="keywords" content="master" />
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="showhider.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="navbar">
|
||||
<a href="#shownav">
|
||||
Show navigation
|
||||
</a>
|
||||
<div id="shownav">
|
||||
<div id="hidenav">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="..">
|
||||
Up one level ^
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DEBIAN.html">
|
||||
DEBIAN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DOCKER.html">
|
||||
DOCKER
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="EXAMPLES.html">
|
||||
EXAMPLES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="PLUGIN.html">
|
||||
PLUGIN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="SERVICES.html">
|
||||
SERVICES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="TLS.html">
|
||||
TLS
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="#hidenav">
|
||||
Hide Navigation
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a id="returnhome" href="/">
|
||||
/
|
||||
</a>
|
||||
<h1>
|
||||
Service Integration
|
||||
</h1>
|
||||
<p>
|
||||
Support for running as a system service as part of the reseed package
|
||||
is new. PR’s that improve integration are welcome.
|
||||
</p>
|
||||
<h2>
|
||||
Systemd Service
|
||||
</h2>
|
||||
<p>
|
||||
A systemd service is provided which should work with the I2P Debian package
|
||||
when reseed-tools is installed in
|
||||
<code>
|
||||
/usr/bin/reseed-tools
|
||||
</code>
|
||||
. If you install with
|
||||
<code>
|
||||
make install
|
||||
</code>
|
||||
this service is also installed. This service will cause the
|
||||
bundles to regenerate every 12 hours.
|
||||
</p>
|
||||
<p>
|
||||
The contact email for your reseed should be added in:
|
||||
<code>
|
||||
/etc/systemd/system/reseed.service.d/override.conf
|
||||
</code>
|
||||
.
|
||||
</p>
|
||||
<p>
|
||||
Self-signed certificates will be auto-generated for these services. To change
|
||||
this you should edit the
|
||||
<code>
|
||||
/etc/systemd/system/reseed.service
|
||||
</code>
|
||||
. For instance:
|
||||
</p>
|
||||
<pre><code>ExecStart=/usr/bin/reseed-tools reseed --yes=true --netdb=/var/lib/i2p/i2p-config/netDb --trustProxy --ip=127.0.0.1
|
||||
</code></pre>
|
||||
<p>
|
||||
to disable self-signed certificate generation.
|
||||
</p>
|
||||
<ul>
|
||||
<li>
|
||||
To enable starting the reseed service automatically with the system:
|
||||
<code>
|
||||
sudo systemctl enable reseed.service
|
||||
</code>
|
||||
</li>
|
||||
<li>
|
||||
To run the service manually:
|
||||
<code>
|
||||
sudo sysctl start reseed.service
|
||||
</code>
|
||||
<br />
|
||||
</li>
|
||||
<li>
|
||||
To reload the systemd services:
|
||||
<code>
|
||||
sudo systemctl daemon-reload
|
||||
</code>
|
||||
</li>
|
||||
<li>
|
||||
To view the status/logs:
|
||||
<code>
|
||||
sudo journalctl -u reseed.service
|
||||
</code>
|
||||
</li>
|
||||
</ul>
|
||||
<h2>
|
||||
SysV Service
|
||||
</h2>
|
||||
<p>
|
||||
An initscript is also provided. The initscript, unlike the systemd service,
|
||||
cannot schedule itself to restart. You should restart the service roughly once
|
||||
a day to ensure that the information does not expire.
|
||||
</p>
|
||||
<p>
|
||||
The contact email for your reseed should be added in:
|
||||
<code>
|
||||
/etc/init.d/reseed
|
||||
</code>
|
||||
.
|
||||
</p>
|
||||
<p>
|
||||
Self-signed certificates will be auto-generated for these services.
|
||||
To change this you should edit the
|
||||
<code>
|
||||
/etc/default/reseed
|
||||
</code>
|
||||
.
|
||||
Create a
|
||||
<code>
|
||||
MORE_OPTIONS=""
|
||||
</code>
|
||||
field. For instance:
|
||||
</p>
|
||||
<pre><code class="language-sh">MORE_OPTIONS="--trustProxy --ip=127.0.0.1"
|
||||
</code></pre>
|
||||
<p>
|
||||
will disable self-signed certificate generation.
|
||||
</p>
|
||||
<div id="sourcecode">
|
||||
<span id="sourcehead">
|
||||
<strong>
|
||||
Get the source code:
|
||||
</strong>
|
||||
</span>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://i2pgit.org/idk/reseed-tools">
|
||||
Source Repository: (https://i2pgit.org/idk/reseed-tools)
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<a href="#show">
|
||||
Show license
|
||||
</a>
|
||||
<div id="show">
|
||||
<div id="hide">
|
||||
<pre><code>Copyright (c) 2014 Matt Drollette
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
</code></pre>
|
||||
<a href="#hide">
|
||||
Hide license
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://geti2p.net/">
|
||||
<img src="i2plogo.png"></img>
|
||||
I2P
|
||||
</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
47
doc-pak/docs/SERVICES.md
Normal file
47
doc-pak/docs/SERVICES.md
Normal file
@@ -0,0 +1,47 @@
|
||||
# Service Integration
|
||||
|
||||
Support for running as a system service as part of the reseed package
|
||||
is new. PR's that improve integration are welcome.
|
||||
|
||||
## Systemd Service
|
||||
|
||||
A systemd service is provided which should work with the I2P Debian package
|
||||
when reseed-tools is installed in `/usr/bin/reseed-tools`. If you install with
|
||||
`make install` this service is also installed. This service will cause the
|
||||
bundles to regenerate every 12 hours.
|
||||
|
||||
The contact email for your reseed should be added in:
|
||||
`/etc/systemd/system/reseed.service.d/override.conf`.
|
||||
|
||||
Self-signed certificates will be auto-generated for these services. To change
|
||||
this you should edit the `/etc/systemd/system/reseed.service`. For instance:
|
||||
|
||||
```
|
||||
ExecStart=/usr/bin/reseed-tools reseed --yes=true --netdb=/var/lib/i2p/i2p-config/netDb --trustProxy --ip=127.0.0.1
|
||||
```
|
||||
|
||||
to disable self-signed certificate generation.
|
||||
|
||||
- To enable starting the reseed service automatically with the system: `sudo systemctl enable reseed.service`
|
||||
- To run the service manually: `sudo sysctl start reseed.service`
|
||||
- To reload the systemd services: `sudo systemctl daemon-reload`
|
||||
- To view the status/logs: `sudo journalctl -u reseed.service`
|
||||
|
||||
## SysV Service
|
||||
|
||||
An initscript is also provided. The initscript, unlike the systemd service,
|
||||
cannot schedule itself to restart. You should restart the service roughly once
|
||||
a day to ensure that the information does not expire.
|
||||
|
||||
The contact email for your reseed should be added in:
|
||||
`/etc/init.d/reseed`.
|
||||
|
||||
Self-signed certificates will be auto-generated for these services.
|
||||
To change this you should edit the `/etc/default/reseed`.
|
||||
Create a `MORE_OPTIONS=""` field. For instance:
|
||||
|
||||
```sh
|
||||
MORE_OPTIONS="--trustProxy --ip=127.0.0.1"
|
||||
```
|
||||
|
||||
will disable self-signed certificate generation.
|
263
doc-pak/docs/TLS.html
Normal file
263
doc-pak/docs/TLS.html
Normal file
@@ -0,0 +1,263 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
I2P Reseed Tools
|
||||
</title>
|
||||
<meta name="author" content="eyedeekay" />
|
||||
<meta name="description" content="reseed-tools" />
|
||||
<meta name="keywords" content="master" />
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="showhider.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="navbar">
|
||||
<a href="#shownav">
|
||||
Show navigation
|
||||
</a>
|
||||
<div id="shownav">
|
||||
<div id="hidenav">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="..">
|
||||
Up one level ^
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DEBIAN.html">
|
||||
DEBIAN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DOCKER.html">
|
||||
DOCKER
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="EXAMPLES.html">
|
||||
EXAMPLES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="PLUGIN.html">
|
||||
PLUGIN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="SERVICES.html">
|
||||
SERVICES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="TLS.html">
|
||||
TLS
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="#hidenav">
|
||||
Hide Navigation
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a id="returnhome" href="/">
|
||||
/
|
||||
</a>
|
||||
<h1>
|
||||
TLS Configuration for your Reseed Server
|
||||
</h1>
|
||||
<p>
|
||||
By default,
|
||||
<code>
|
||||
reseed-tools
|
||||
</code>
|
||||
will generate self-signed certificates for your reseed service.
|
||||
This is so that it can use TLS by default, and so that it can offer self-signed certificates when operating in
|
||||
<code>
|
||||
.onion
|
||||
</code>
|
||||
mode.
|
||||
It is also possible to configure
|
||||
<code>
|
||||
reseed-tools
|
||||
</code>
|
||||
without TLS certificates,
|
||||
or to configure it to use ACME in order to automtically obtain a certificate from Let’s Encrypt.
|
||||
</p>
|
||||
<p>
|
||||
I2P does not rely on TLS Certificate Authorities to authenticate reseed servers.
|
||||
Instead, the certificates are effectively “Pinned” in the software, after manual review by the I2P developers and the community.
|
||||
It is acceptable to use self-signed certificates in this fashion because they are not summarily trusted.
|
||||
A self-signed certificate which is not configured in the I2P software will not work when serving a reseed to an I2P router.
|
||||
</p>
|
||||
<h2>
|
||||
Disable TLS
|
||||
</h2>
|
||||
<p>
|
||||
If you do this, it is highly recommended that you use a reverse proxy such as
|
||||
<code>
|
||||
Apache2
|
||||
</code>
|
||||
or
|
||||
<code>
|
||||
nginx
|
||||
</code>
|
||||
to provide a TLS connection to clients.
|
||||
Alternatively, you could run
|
||||
<code>
|
||||
reseed-tools
|
||||
</code>
|
||||
as an
|
||||
<code>
|
||||
.onion
|
||||
</code>
|
||||
service and rely on Tor for encryption and authentication.
|
||||
</p>
|
||||
<p>
|
||||
You can disable automatic TLS configuration with the
|
||||
<code>
|
||||
--trustProxy
|
||||
</code>
|
||||
flag like this:
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --trustProxy --ip=127.0.0.1
|
||||
</code></pre>
|
||||
<h2>
|
||||
Setup Self-Signed TLS non-interactively
|
||||
</h2>
|
||||
<p>
|
||||
If you don’t want to interactively configure TLS but still want to use self-signed certificates, you can pass the
|
||||
<code>
|
||||
--yes
|
||||
</code>
|
||||
flag, which will use the defaults for all config values.
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --yes
|
||||
</code></pre>
|
||||
<h2>
|
||||
Use ACME to acquire TLS certificate
|
||||
</h2>
|
||||
<p>
|
||||
Instead of self-signed certificates, if you want to chain up to a TLS CA, you can.
|
||||
To automate this process using an ACME CA, like Let’s Encrypt, you can use the
|
||||
<code>
|
||||
--acme
|
||||
</code>
|
||||
flag.
|
||||
Be sure to change the
|
||||
<code>
|
||||
--acmeserver
|
||||
</code>
|
||||
option in order to use a
|
||||
<strong>
|
||||
production
|
||||
</strong>
|
||||
ACME server, as
|
||||
the software defaults to a
|
||||
<strong>
|
||||
staging
|
||||
</strong>
|
||||
ACME server for testing purposes.
|
||||
</p>
|
||||
<p>
|
||||
This functionality is new and may have issues. Please file bug reports at (i2pgit)[
|
||||
<a href="https://i2pgit.org/idk/reseed-tools)">
|
||||
https://i2pgit.org/idk/reseed-tools)
|
||||
</a>
|
||||
or
|
||||
<a href="https://github.com/eyedeekay/reseed-tools">
|
||||
github
|
||||
</a>
|
||||
.
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --acme --acmeserver="https://acme-v02.api.letsencrypt.org/directory"
|
||||
</code></pre>
|
||||
<div id="sourcecode">
|
||||
<span id="sourcehead">
|
||||
<strong>
|
||||
Get the source code:
|
||||
</strong>
|
||||
</span>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://i2pgit.org/idk/reseed-tools">
|
||||
Source Repository: (https://i2pgit.org/idk/reseed-tools)
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<a href="#show">
|
||||
Show license
|
||||
</a>
|
||||
<div id="show">
|
||||
<div id="hide">
|
||||
<pre><code>Copyright (c) 2014 Matt Drollette
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
</code></pre>
|
||||
<a href="#hide">
|
||||
Hide license
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://geti2p.net/">
|
||||
<img src="i2plogo.png"></img>
|
||||
I2P
|
||||
</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
50
doc-pak/docs/TLS.md
Normal file
50
doc-pak/docs/TLS.md
Normal file
@@ -0,0 +1,50 @@
|
||||
TLS Configuration for your Reseed Server
|
||||
========================================
|
||||
|
||||
By default, `reseed-tools` will generate self-signed certificates for your reseed service.
|
||||
This is so that it can use TLS by default, and so that it can offer self-signed certificates when operating in `.onion` mode.
|
||||
It is also possible to configure `reseed-tools` without TLS certificates,
|
||||
or to configure it to use ACME in order to automtically obtain a certificate from Let's Encrypt.
|
||||
|
||||
I2P does not rely on TLS Certificate Authorities to authenticate reseed servers.
|
||||
Instead, the certificates are effectively "Pinned" in the software, after manual review by the I2P developers and the community.
|
||||
It is acceptable to use self-signed certificates in this fashion because they are not summarily trusted.
|
||||
A self-signed certificate which is not configured in the I2P software will not work when serving a reseed to an I2P router.
|
||||
|
||||
Disable TLS
|
||||
-----------
|
||||
|
||||
If you do this, it is highly recommended that you use a reverse proxy such as `Apache2` or `nginx` to provide a TLS connection to clients.
|
||||
Alternatively, you could run `reseed-tools` as an `.onion` service and rely on Tor for encryption and authentication.
|
||||
|
||||
You can disable automatic TLS configuration with the `--trustProxy` flag like this:
|
||||
|
||||
```sh
|
||||
|
||||
./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --trustProxy --ip=127.0.0.1
|
||||
```
|
||||
|
||||
Setup Self-Signed TLS non-interactively
|
||||
---------------------------------------
|
||||
|
||||
If you don't want to interactively configure TLS but still want to use self-signed certificates, you can pass the `--yes` flag, which will use the defaults for all config values.
|
||||
|
||||
```sh
|
||||
|
||||
./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --yes
|
||||
```
|
||||
|
||||
Use ACME to acquire TLS certificate
|
||||
-----------------------------------
|
||||
|
||||
Instead of self-signed certificates, if you want to chain up to a TLS CA, you can.
|
||||
To automate this process using an ACME CA, like Let's Encrypt, you can use the `--acme` flag.
|
||||
Be sure to change the `--acmeserver` option in order to use a **production** ACME server, as
|
||||
the software defaults to a **staging** ACME server for testing purposes.
|
||||
|
||||
This functionality is new and may have issues. Please file bug reports at (i2pgit)[https://i2pgit.org/idk/reseed-tools) or [github](https://github.com/eyedeekay/reseed-tools).
|
||||
|
||||
```sh
|
||||
|
||||
./reseed-tools reseed --signer=you@mail.i2p --netdb=/home/i2p/.i2p/netDb --acme --acmeserver="https://acme-v02.api.letsencrypt.org/directory"
|
||||
```
|
40
doc-pak/docs/UPGRADE.md
Normal file
40
doc-pak/docs/UPGRADE.md
Normal file
@@ -0,0 +1,40 @@
|
||||
Upgrading from an older version of reseed-tools
|
||||
===============================================
|
||||
|
||||
This reseed server sometimes gains helpful features that reseed operators may wish to use.
|
||||
Additionally, it is possible that at some point we'll need to release a security update.
|
||||
This document provides a path to upgrade the various binary distributions of reseed-tools.
|
||||
|
||||
Debian and Ubuntu Users
|
||||
-----------------------
|
||||
|
||||
1. Shut down the existing `reseed-tools` service.
|
||||
If you are using `sysvinit` or something like it, you should be able to run: `sudo service reseed stop`.
|
||||
If you are using `systemd` you should be able to run `sudo systemctl stop reseed`.
|
||||
If those commands don't work, use `killall reseed-tools`
|
||||
2. Download the `.deb` package from the Github Releases page.
|
||||
Make sure you get the right package for your ARCH/OS pair.
|
||||
Most will need the `_amd64.deb` package.
|
||||
3. Install the package using: `sudo dpkg -i ./reseed-tools*.deb`
|
||||
|
||||
Docker Users
|
||||
------------
|
||||
|
||||
1. Build the container locally: `docker build -t eyedeekay/reseed .`
|
||||
2. Stop the container: `docker stop reseed`
|
||||
3. Start the container: `docker start reseed`
|
||||
|
||||
Freestanding `tar.gz` Users, People who built from source
|
||||
---------------------------------------------------------
|
||||
|
||||
1. Shut down the existing `reseed-tools` service.
|
||||
If you are using `sysvinit` or something like it, you should be able to run: `sudo service reseed stop`.
|
||||
If you are using `systemd` you should be able to run `sudo systemctl stop reseed`.
|
||||
If those commands don't work, use `killall reseed-tools`
|
||||
2. Extract the tar file: `tar xzf reseed-tools.tgz`
|
||||
3. Copy the `reseed-tools` binary to the correct location if you're on `amd64` or compile it if you are not.
|
||||
`cp reseed-tools reseed-tools-linux-amd64`
|
||||
OR
|
||||
`make build`
|
||||
4. Install the new software and service management files:
|
||||
`sudo make install`
|
318
doc-pak/docs/index.html
Normal file
318
doc-pak/docs/index.html
Normal file
@@ -0,0 +1,318 @@
|
||||
<html>
|
||||
<head>
|
||||
<title>
|
||||
I2P Reseed Tools
|
||||
</title>
|
||||
<meta name="author" content="eyedeekay" />
|
||||
<meta name="description" content="reseed-tools" />
|
||||
<meta name="keywords" content="master" />
|
||||
<link rel="stylesheet" type="text/css" href="style.css" />
|
||||
<link rel="stylesheet" type="text/css" href="showhider.css" />
|
||||
</head>
|
||||
<body>
|
||||
<div id="navbar">
|
||||
<a href="#shownav">
|
||||
Show navigation
|
||||
</a>
|
||||
<div id="shownav">
|
||||
<div id="hidenav">
|
||||
<ul>
|
||||
<li>
|
||||
<a href="..">
|
||||
Up one level ^
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href=""></a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DEBIAN.html">
|
||||
DEBIAN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="DOCKER.html">
|
||||
DOCKER
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="EXAMPLES.html">
|
||||
EXAMPLES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="PLUGIN.html">
|
||||
PLUGIN
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="SERVICES.html">
|
||||
SERVICES
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="TLS.html">
|
||||
TLS
|
||||
</a>
|
||||
</li>
|
||||
<li>
|
||||
<a href="index.html">
|
||||
index.html
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
<br>
|
||||
<a href="#hidenav">
|
||||
Hide Navigation
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<a id="returnhome" href="/">
|
||||
/
|
||||
</a>
|
||||
<h1>
|
||||
Configure an I2P Reseed Server Very Rapidly on Debian and Ubuntu
|
||||
</h1>
|
||||
<p>
|
||||
It is possible to easily and automatically configure a reseed server
|
||||
with a self-signed certificate on any Debian-based operating system,
|
||||
including Ubuntu and it’s downstreams. This is achieved using the
|
||||
<code>
|
||||
checkinstall
|
||||
</code>
|
||||
tool to set up the software dependencies and the operating system to
|
||||
run the
|
||||
<code>
|
||||
I2P
|
||||
</code>
|
||||
service and the
|
||||
<code>
|
||||
reseed
|
||||
</code>
|
||||
service.
|
||||
</p>
|
||||
<h2>
|
||||
Using a binary package
|
||||
</h2>
|
||||
<p>
|
||||
If you do not wish to build from source, you can use a binary package
|
||||
from me. This package is built from this repo with the
|
||||
<code>
|
||||
make checkinstall
|
||||
</code>
|
||||
target and uploaded by me. I build it on an up-to-date Debian
|
||||
<code>
|
||||
sid
|
||||
</code>
|
||||
system
|
||||
at tag time. It contains a static binary and files for configuring it as a
|
||||
system service.
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
wget https://github.com/eyedeekay/reseed-tools/releases/download/v0.2.30/reseed-tools_0.2.30-1_amd64.deb
|
||||
# Obtain the checksum from the release web page
|
||||
echo "38941246e980dfc0456e066f514fc96a4ba25d25a7ef993abd75130770fa4d4d reseed-tools_0.2.30-1_amd64.deb" > SHA256SUMS
|
||||
sha256sums -c SHA256SUMS
|
||||
sudo apt-get install ./reseed-tools_0.2.30-1_amd64.deb
|
||||
</code></pre>
|
||||
<h2>
|
||||
Building the
|
||||
<code>
|
||||
.deb
|
||||
</code>
|
||||
package from the source(Optional)
|
||||
</h2>
|
||||
<p>
|
||||
If your software is too old, it’s possible that the binary package I build will
|
||||
not work for you. It’s very easy to generate your own from the source code in this
|
||||
repository.
|
||||
</p>
|
||||
<p>
|
||||
\
|
||||
<strong>
|
||||
1.
|
||||
</strong>
|
||||
Install the build dependencies
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
sudo apt-get install fakeroot checkinstall go git make
|
||||
</code></pre>
|
||||
<p>
|
||||
\
|
||||
<strong>
|
||||
2.
|
||||
</strong>
|
||||
Clone the source code
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
git clone https://i2pgit.org/idk/reseed-tools ~/go/src/i2pgit.org/idk/reseed-tools
|
||||
</code></pre>
|
||||
<p>
|
||||
\
|
||||
<strong>
|
||||
3.
|
||||
</strong>
|
||||
Generate the
|
||||
<code>
|
||||
.deb
|
||||
</code>
|
||||
package using the
|
||||
<code>
|
||||
make checkinstall
|
||||
</code>
|
||||
target
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
cd ~/go/src/i2pgit.org/idk/reseed-tools
|
||||
make checkinstall
|
||||
</code></pre>
|
||||
<p>
|
||||
\
|
||||
<strong>
|
||||
4.
|
||||
</strong>
|
||||
Install the
|
||||
<code>
|
||||
.deb
|
||||
</code>
|
||||
package
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
sudo apt-get install ./reseed-tools_*.deb
|
||||
</code></pre>
|
||||
<h2>
|
||||
Running the Service
|
||||
</h2>
|
||||
<p>
|
||||
\
|
||||
<strong>
|
||||
1.
|
||||
</strong>
|
||||
First, ensure that the I2P service is already running. The longer the better,
|
||||
if you have to re-start the service, or if the service has very few peers, allow it to
|
||||
run for 24 hours before advancing to step
|
||||
<strong>
|
||||
2.
|
||||
</strong>
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
sudo systemctl start i2p
|
||||
# or, if you use sysvinit
|
||||
sudo service i2p start
|
||||
</code></pre>
|
||||
<p>
|
||||
\
|
||||
<strong>
|
||||
2.
|
||||
</strong>
|
||||
Once your I2P router is “Well-Integrated,” start the reseed service.
|
||||
</p>
|
||||
<pre><code class="language-sh">
|
||||
sudo systemctl start reseed
|
||||
# or, if you use sysvinit
|
||||
sudo service reseed start
|
||||
</code></pre>
|
||||
<p>
|
||||
Your reseed will auto-configure with a self-signed certificate on port
|
||||
<code>
|
||||
:8443
|
||||
</code>
|
||||
. The
|
||||
certificates themselves are available in
|
||||
<code>
|
||||
/var/lib/i2p/i2p-config/reseed
|
||||
</code>
|
||||
. When
|
||||
you are ready, you should copy the
|
||||
<code>
|
||||
*.crt
|
||||
</code>
|
||||
files from that directory and share them
|
||||
witth the I2P community on
|
||||
<a href="http://zzz.i2p">
|
||||
<code>
|
||||
zzz.i2p
|
||||
</code>
|
||||
</a>
|
||||
. These will allow I2P users
|
||||
to authenticate your reseed services and secure the I2P network.
|
||||
</p>
|
||||
<div id="sourcecode">
|
||||
<span id="sourcehead">
|
||||
<strong>
|
||||
Get the source code:
|
||||
</strong>
|
||||
</span>
|
||||
<ul>
|
||||
<li>
|
||||
<a href="https://i2pgit.org/idk/reseed-tools">
|
||||
Source Repository: (https://i2pgit.org/idk/reseed-tools)
|
||||
</a>
|
||||
</li>
|
||||
</ul>
|
||||
</div>
|
||||
<div>
|
||||
<a href="#show">
|
||||
Show license
|
||||
</a>
|
||||
<div id="show">
|
||||
<div id="hide">
|
||||
<pre><code>Copyright (c) 2014 Matt Drollette
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in
|
||||
all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
||||
THE SOFTWARE.
|
||||
</code></pre>
|
||||
<a href="#hide">
|
||||
Hide license
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div>
|
||||
<iframe src="https://snowflake.torproject.org/embed.html" width="320" height="240" frameborder="0" scrolling="no"></iframe>
|
||||
</div>
|
||||
<div>
|
||||
<a href="https://geti2p.net/">
|
||||
<img src="i2plogo.png"></img>
|
||||
I2P
|
||||
</a>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
15
doc-pak/docs/showhider.css
Normal file
15
doc-pak/docs/showhider.css
Normal file
@@ -0,0 +1,15 @@
|
||||
/* edgar showhider CSS file */
|
||||
#show {display:none; }
|
||||
#hide {display:block; }
|
||||
#show:target {display: block; }
|
||||
#hide:target {display: none; }
|
||||
|
||||
#shownav {display:none; }
|
||||
#hidenav {display:block; }
|
||||
#shownav:target {display: block; }
|
||||
#hidenav:target {display: none; }
|
||||
|
||||
#donate {display:none; }
|
||||
#hidedonate {display:block; }
|
||||
#donate:target {display: block; }
|
||||
#hidedonate:target {display: none; }
|
165
doc-pak/docs/style.css
Normal file
165
doc-pak/docs/style.css
Normal file
@@ -0,0 +1,165 @@
|
||||
/* edgar default CSS file */
|
||||
|
||||
body {
|
||||
font-family: "Roboto";
|
||||
font-family: monospace;
|
||||
text-align: justify;
|
||||
background-color: #373636;
|
||||
color: whitesmoke;
|
||||
font-size: 1.15em;
|
||||
}
|
||||
|
||||
ul {
|
||||
width: 55%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
ol {
|
||||
width: 55%;
|
||||
display: block;
|
||||
}
|
||||
|
||||
li {
|
||||
margin-top: 1%;
|
||||
}
|
||||
|
||||
p {
|
||||
max-width: 90%;
|
||||
margin-top: 1%;
|
||||
margin-left: 3%;
|
||||
margin-right: 3%;
|
||||
}
|
||||
|
||||
img {
|
||||
float: left;
|
||||
top: 5%;
|
||||
left: 5%;
|
||||
max-width: 60%;
|
||||
display: inline;
|
||||
padding-right: 2%;
|
||||
}
|
||||
|
||||
.inline {
|
||||
display: inline;
|
||||
}
|
||||
|
||||
.link-button:focus {
|
||||
outline: none;
|
||||
}
|
||||
|
||||
.link-button:active {
|
||||
color: red;
|
||||
}
|
||||
|
||||
code {
|
||||
font-family: monospace;
|
||||
border-radius: 5%;
|
||||
padding: 1%;
|
||||
border-color: darkgray;
|
||||
font-size: .9em;
|
||||
}
|
||||
|
||||
a {
|
||||
color: #C6D9FE;
|
||||
padding: 1%;
|
||||
}
|
||||
|
||||
ul li {
|
||||
color: #C6D9FE;
|
||||
}
|
||||
|
||||
iframe {
|
||||
background: aliceblue;
|
||||
border-radius: 15%;
|
||||
margin: 2%;
|
||||
}
|
||||
|
||||
.container {
|
||||
width: 36vw;
|
||||
height: 64vh;
|
||||
display: inline-block;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
|
||||
.editor-toolbar a {
|
||||
display: inline-block;
|
||||
text-align: center;
|
||||
text-decoration: none !important;
|
||||
color: whitesmoke !important;
|
||||
}
|
||||
|
||||
#feed {
|
||||
width: 60vw;
|
||||
height: unset !important;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
float: right;
|
||||
background-color: #373636;
|
||||
color: whitesmoke;
|
||||
border: #C6D9FE solid 1px;
|
||||
}
|
||||
|
||||
.thread-post,
|
||||
.thread {
|
||||
color: whitesmoke !important;
|
||||
background-color: #373636;
|
||||
border: 1px solid darkgray;
|
||||
font-size: inherit;
|
||||
padding-top: 1%;
|
||||
padding-bottom: 1%;
|
||||
}
|
||||
|
||||
.thread-post {
|
||||
margin-left: 4%;
|
||||
}
|
||||
|
||||
input {
|
||||
text-align: center;
|
||||
color: whitesmoke !important;
|
||||
background-color: #373636;
|
||||
border: 1px solid darkgray;
|
||||
font: normal normal normal 14px/1 FontAwesome;
|
||||
font-size: inherit;
|
||||
padding-top: 1%;
|
||||
padding-bottom: 1%;
|
||||
}
|
||||
|
||||
.thread-hash {
|
||||
text-align: right;
|
||||
color: whitesmoke !important;
|
||||
background-color: #373636;
|
||||
border: 1px solid darkgray;
|
||||
font-size: inherit;
|
||||
padding-top: 1%;
|
||||
padding-bottom: 1%;
|
||||
}
|
||||
|
||||
.post-body {
|
||||
text-align: left;
|
||||
color: whitesmoke !important;
|
||||
font-size: inherit;
|
||||
padding-top: 1%;
|
||||
padding-bottom: 1%;
|
||||
}
|
||||
#show {display:none; }
|
||||
#hide {display:block; }
|
||||
#show:target {display: block; }
|
||||
#hide:target {display: none; }
|
||||
|
||||
#shownav {display:none; }
|
||||
#hidenav {display:block; }
|
||||
#shownav:target {display: block; }
|
||||
#hidenav:target {display: none; }
|
||||
|
||||
#navbar {
|
||||
float: right;
|
||||
width: 15%;
|
||||
}
|
||||
#returnhome {
|
||||
font-size: xxx-large;
|
||||
display: inline;
|
||||
}
|
||||
h1 {
|
||||
display: inline;
|
||||
}
|
94
docs/REMOTE-SSH.md
Normal file
94
docs/REMOTE-SSH.md
Normal file
@@ -0,0 +1,94 @@
|
||||
Using a remote Network Database with SSH
|
||||
========================================
|
||||
|
||||
Beginning in `reseed-tools 2.5.0` it is possible to use reseed-tools to "share" a netDb directory on one host with a reseed server on another host.
|
||||
This feature is built into the reseed-tools software.
|
||||
It is also possible to do this manually using `sshfs`, `ssh` combined with `cron`, and most available backup utilities like `borg` and `syncthing`.
|
||||
This guide only covers `rsync+ssh` and `cron` where I2P is running as a user(not as `i2psvc`).
|
||||
It requires 2 hosts with exposed SSH ports that can reach eachother.
|
||||
It also pretty much assumes you're using something based on Debian.
|
||||
|
||||
Why?
|
||||
----
|
||||
|
||||
In most setups, a reseed service is using a network database which is kept on the same server as the I2P router where it finds it's netDb.
|
||||
This is convenient, however if reseed servers are targeted for a RouterInfo spam attack, then the reseed server could potentially be overwhelmed with spammy routerInfos.
|
||||
That impairs a new user's ability to join the network and slows down network integration.
|
||||
|
||||
SSH-Protected Retrieval of NetDB content over I2P
|
||||
-----------------------------------------------
|
||||
|
||||
In this guide, the NetDB is retrieved from a remote router by the reseed server.
|
||||
|
||||
### On the Remote Router
|
||||
|
||||
Install openssh-server and rsync and enable the service:
|
||||
|
||||
```sh
|
||||
sudo apt install openssh-server rsync
|
||||
sudo systemctl enable ssh
|
||||
```
|
||||
|
||||
### On the Reseed Server
|
||||
|
||||
Set up SSH and generate new keys, without passwords:
|
||||
|
||||
```sh
|
||||
ssh-keygen -f ~/.ssh/netdb_sync_ed25519 -N ""
|
||||
```
|
||||
|
||||
Then, copy the keys to the remote router:
|
||||
|
||||
```sh
|
||||
ssh-copy-id -f ~/.ssh/netdb_sync_ed25519 $(UserRunningI2P)@$(RemoteRouter)
|
||||
```
|
||||
|
||||
After, set up the `cron` job to copy the netDB.
|
||||
|
||||
```sh
|
||||
crontab -e
|
||||
>>
|
||||
* 30 * * * rsync --update -raz $(UserRunningI2P)@$(RemoteRouter):$(/Path/To/Remote/NetDB) $(Path/To/My/NetDB)
|
||||
```
|
||||
|
||||
SSH-Protected Sharing of NetDB content over I2P
|
||||
-----------------------------------------------
|
||||
|
||||
In this guide, the NetDB is pushed to a reseed server by a remote router.
|
||||
|
||||
### On the Reseed Server
|
||||
|
||||
Install openssh-server and rsync and enable the service:
|
||||
|
||||
```sh
|
||||
sudo apt install openssh-server rsync
|
||||
sudo systemctl enable ssh
|
||||
```
|
||||
|
||||
Next, stop your reseed server.
|
||||
|
||||
```sh
|
||||
killall reseed-tools
|
||||
```
|
||||
|
||||
### On the Remote Router
|
||||
|
||||
Start by setting up SSH and generating new keys, without passwords:
|
||||
|
||||
```sh
|
||||
ssh-keygen -f ~/.ssh/netdb_sync_ed25519 -N ""
|
||||
```
|
||||
|
||||
Then, copy the keys to the Reseed Server:
|
||||
|
||||
```sh
|
||||
ssh-copy-id -f ~/.ssh/netdb_sync_ed25519 $(UserRunningReseed)@$(ReseedServer)
|
||||
```
|
||||
|
||||
After, set up the `cron` job to copy the netDB.
|
||||
|
||||
```sh
|
||||
crontab -e
|
||||
>>
|
||||
* 30 * * * rsync --update -raz $(/Path/To/My/NetDB) $(UserRunningReseed)@$(ReseedServer):/$(Path/To/Reseed/NetDB)
|
||||
```
|
47
docs/REMOTE.md
Normal file
47
docs/REMOTE.md
Normal file
@@ -0,0 +1,47 @@
|
||||
Using a remote Network Database
|
||||
===============================
|
||||
|
||||
Beginning in `reseed-tools 2.5.0` it is possible to use reseed-tools to "share" a netDb directory on one host with a reseed server on another host.
|
||||
This feature is built into the reseed-tools software.
|
||||
It is also possible to do this manually using `sshfs`, `ssh` combined with `cron`, and most available backup utilities like `borg` and `syncthing`.
|
||||
This guide only covers `reseed-tools`.
|
||||
It requires only `reseed-tools` and an I2P router.
|
||||
Presumably, if you are reading this document, you are already comfortable running both of these pieces of software.
|
||||
|
||||
Why?
|
||||
----
|
||||
|
||||
In most setups, a reseed service is using a network database which is kept on the same server as the I2P router where it finds it's netDb.
|
||||
This is convenient, however if reseed servers are targeted for a RouterInfo spam attack, then the reseed server could potentially be overwhelmed with spammy RouterInfos.
|
||||
That impairs a new user's ability to join the network and slows down network integration.
|
||||
|
||||
Password-Protected Sharing of NetDB content over I2P
|
||||
----------------------------------------------------
|
||||
|
||||
This method uses SAMv3 via the `onramp` library with `wide` tunnel options(1 hop, 2 tunnels) on both sides.
|
||||
By using I2P, this method trades some performance for ofuscation.
|
||||
However, the data is tiny so in-practice it works very well.
|
||||
|
||||
Run this command on a well-integrated I2P router which is **not** hosting a reseed server on the same IP address.
|
||||
To share the whole contents of your netDb directory over I2P, run reseed-tools with the following arguments:
|
||||
|
||||
```sh
|
||||
reseed-tools share --share-password $(use_a_strong_password) --netdb $(path_to_your_netdb)
|
||||
```
|
||||
|
||||
In a few seconds, you will have a new I2P site which will provide your netDb as a `.tar.gz` file to anyone with the password.
|
||||
Make a note of the base32 address of the new site for the next step.
|
||||
|
||||
Password-Protected Retrieval of Shared NetDB content over I2P
|
||||
-------------------------------------------------------------
|
||||
|
||||
Run this command on a router hosting which **is** hosting a reseed server on the same IP address, or add the arguments to your existing command.
|
||||
To retrieve a remote NetDB bundle from a hidden service, run reseed tools with the following arguments:
|
||||
|
||||
```sh
|
||||
reseed-tools reseed --share-peer $(thebase32addressyoumadeanoteofaboveintheotherstepnow.b32.i2p) --share-password $(use_a_strong_password) --netdb $(path_to_your_netdb)
|
||||
```
|
||||
|
||||
Periodically, the remote `netdb.tar.gz` bundle will be fetched from the remote server and extracted to the `--netdb` directory.
|
||||
If the `--netdb` directory is not empty, local RI's are left intact and never overwritten, essentially combining the local and remote netDb.
|
||||
If the directory is empty, the remote netDb will be the only netDb used by the reseed server.
|
40
docs/UPGRADE.md
Normal file
40
docs/UPGRADE.md
Normal file
@@ -0,0 +1,40 @@
|
||||
Upgrading from an older version of reseed-tools
|
||||
===============================================
|
||||
|
||||
This reseed server sometimes gains helpful features that reseed operators may wish to use.
|
||||
Additionally, it is possible that at some point we'll need to release a security update.
|
||||
This document provides a path to upgrade the various binary distributions of reseed-tools.
|
||||
|
||||
Debian and Ubuntu Users
|
||||
-----------------------
|
||||
|
||||
1. Shut down the existing `reseed-tools` service.
|
||||
If you are using `sysvinit` or something like it, you should be able to run: `sudo service reseed stop`.
|
||||
If you are using `systemd` you should be able to run `sudo systemctl stop reseed`.
|
||||
If those commands don't work, use `killall reseed-tools`
|
||||
2. Download the `.deb` package from the Github Releases page.
|
||||
Make sure you get the right package for your ARCH/OS pair.
|
||||
Most will need the `_amd64.deb` package.
|
||||
3. Install the package using: `sudo dpkg -i ./reseed-tools*.deb`
|
||||
|
||||
Docker Users
|
||||
------------
|
||||
|
||||
1. Build the container locally: `docker build -t eyedeekay/reseed .`
|
||||
2. Stop the container: `docker stop reseed`
|
||||
3. Start the container: `docker start reseed`
|
||||
|
||||
Freestanding `tar.gz` Users, People who built from source
|
||||
---------------------------------------------------------
|
||||
|
||||
1. Shut down the existing `reseed-tools` service.
|
||||
If you are using `sysvinit` or something like it, you should be able to run: `sudo service reseed stop`.
|
||||
If you are using `systemd` you should be able to run `sudo systemctl stop reseed`.
|
||||
If those commands don't work, use `killall reseed-tools`
|
||||
2. Extract the tar file: `tar xzf reseed-tools.tgz`
|
||||
3. Copy the `reseed-tools` binary to the correct location if you're on `amd64` or compile it if you are not.
|
||||
`cp reseed-tools reseed-tools-linux-amd64`
|
||||
OR
|
||||
`make build`
|
||||
4. Install the new software and service management files:
|
||||
`sudo make install`
|
@@ -1,2 +1,3 @@
|
||||
#Edit the contact/signing email used by your reseed server here
|
||||
# Edit the contact/signing email used by your reseed server here
|
||||
# Required: Set a valid email address
|
||||
export RESEED_EMAIL=""
|
@@ -1,4 +1,4 @@
|
||||
#!/bin/sh
|
||||
#!/bin/bash
|
||||
### BEGIN INIT INFO
|
||||
# Provides: reseed
|
||||
# Required-Start: $local_fs $network $named $time $syslog
|
||||
@@ -13,21 +13,58 @@ RUNAS=i2psvc
|
||||
NETDBDIR=/var/lib/i2p/i2p-config/netDb
|
||||
RUNDIR=/var/lib/i2p/i2p-config/reseed
|
||||
MORE_OPTIONS=""
|
||||
PIDFILE="$RUNDIR/reseed.pid"
|
||||
TIMEOUT=60
|
||||
if [ -f /etc/default/reseed ]; then
|
||||
. /etc/default/reseed
|
||||
fi
|
||||
RUNOPTS=" reseed --yes=true --netdb=$NETDBDIR $MORE_OPTIONS "
|
||||
|
||||
start() {
|
||||
start-stop-daemon --background --user $RUNAS --chuid $RUNAS --exec $SCRIPT --chdir $RUNDIR --make-pidfile --pidfile $RUNDIR/reseed.pid --start -- $RUNOPTS
|
||||
if [ ! -d "$RUNDIR" ]; then
|
||||
mkdir -p "$RUNDIR"
|
||||
chown $RUNAS:$RUNAS "$RUNDIR"
|
||||
fi
|
||||
if [ -z "$RESEED_EMAIL" ]; then
|
||||
echo "Error: RESEED_EMAIL not configured" >&2
|
||||
return 1
|
||||
fi
|
||||
start-stop-daemon --background \
|
||||
--user $RUNAS \
|
||||
--chuid $RUNAS \
|
||||
--exec $SCRIPT \
|
||||
--chdir $RUNDIR \
|
||||
--make-pidfile \
|
||||
--pidfile $PIDFILE \
|
||||
--start \
|
||||
--startas $SCRIPT -- $RUNOPTS
|
||||
|
||||
for i in $(seq 1 $TIMEOUT); do
|
||||
if status >/dev/null; then
|
||||
return 0
|
||||
fi
|
||||
sleep 1
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
stop() {
|
||||
start-stop-daemon --background --user $RUNAS --exec $SCRIPT --chdir $RUNDIR --remove-pidfile --pidfile $RUNDIR/reseed.pid --stop
|
||||
start-stop-daemon \
|
||||
--user $RUNAS \
|
||||
--exec $SCRIPT \
|
||||
--chdir $RUNDIR \
|
||||
--remove-pidfile \
|
||||
--pidfile $RUNDIR/reseed.pid \
|
||||
--stop
|
||||
}
|
||||
|
||||
status() {
|
||||
start-stop-daemon --background --user $RUNAS --exec $SCRIPT --chdir $RUNDIR --pidfile $RUNDIR/reseed.pid --status
|
||||
start-stop-daemon \
|
||||
--user $RUNAS \
|
||||
--exec $SCRIPT \
|
||||
--chdir $RUNDIR \
|
||||
--pidfile $RUNDIR/reseed.pid \
|
||||
--status
|
||||
}
|
||||
|
||||
restart() {
|
||||
@@ -42,7 +79,7 @@ uninstall() {
|
||||
if [ "$SURE" = "yes" ]; then
|
||||
stop
|
||||
rm -f "$PIDFILE"
|
||||
echo "Notice: log file is not be removed: '$LOGFILE'" >&2
|
||||
echo "Notice: log file is not removed" >&2
|
||||
update-rc.d -f reseed remove
|
||||
rm -fv "$0"
|
||||
fi
|
||||
@@ -65,5 +102,5 @@ case "$1" in
|
||||
restart
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 {start|stop|restart|uninstall}"
|
||||
echo "Usage: $0 {start|stop|restart|uninstall|status}"
|
||||
esac
|
||||
|
@@ -11,6 +11,10 @@ ExecStart=/usr/bin/reseed-tools reseed --yes=true --netdb=/var/lib/i2p/i2p-confi
|
||||
Restart=always
|
||||
RestartSec=10
|
||||
RuntimeMaxSec=43200
|
||||
StandardOutput=journal
|
||||
StandardError=journal
|
||||
#MemoryMax=512M
|
||||
#CPUQuota=50%
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
||||
|
@@ -2,4 +2,5 @@
|
||||
# without it the reseed will fail to start.
|
||||
|
||||
[Service]
|
||||
# Required: Set a valid email address
|
||||
Environment="RESEED_EMAIL="
|
26
go.mod
26
go.mod
@@ -4,30 +4,22 @@ go 1.16
|
||||
|
||||
require (
|
||||
github.com/cretz/bine v0.2.0
|
||||
github.com/eyedeekay/checki2cp v0.0.21
|
||||
github.com/eyedeekay/checki2cp v0.33.8
|
||||
github.com/eyedeekay/go-i2pd v0.0.0-20220213070306-9807541b2dfc
|
||||
github.com/eyedeekay/i2pkeys v0.33.0
|
||||
github.com/eyedeekay/sam3 v0.33.5
|
||||
github.com/eyedeekay/i2pkeys v0.33.8
|
||||
github.com/eyedeekay/onramp v0.33.7
|
||||
github.com/eyedeekay/sam3 v0.33.8
|
||||
github.com/eyedeekay/unembed v0.0.0-20230123014222-9916b121855b
|
||||
github.com/go-acme/lego/v4 v4.3.1
|
||||
github.com/go-i2p/go-i2p v0.0.0-20250130205134-f144c457ba5d
|
||||
github.com/gorilla/handlers v1.5.1
|
||||
github.com/justinas/alice v1.2.0
|
||||
github.com/libp2p/go-libp2p v0.13.0
|
||||
github.com/libp2p/go-libp2p-core v0.8.0
|
||||
github.com/libp2p/go-libp2p-gostream v0.3.1
|
||||
github.com/libp2p/go-libp2p-http v0.2.0
|
||||
github.com/otiai10/copy v1.14.0
|
||||
github.com/rglonek/untar v0.0.1
|
||||
github.com/throttled/throttled/v2 v2.7.1
|
||||
github.com/urfave/cli/v3 v3.0.0-alpha
|
||||
gitlab.com/golang-commonmark/markdown v0.0.0-20191127184510-91b5b3c99c19
|
||||
golang.org/x/crypto v0.5.0 // indirect
|
||||
golang.org/x/text v0.6.0
|
||||
golang.org/x/text v0.15.0
|
||||
)
|
||||
|
||||
replace github.com/libp2p/go-libp2p => github.com/libp2p/go-libp2p v0.13.0
|
||||
|
||||
replace github.com/libp2p/go-libp2p-core => github.com/libp2p/go-libp2p-core v0.8.0
|
||||
|
||||
replace github.com/libp2p/go-libp2p-gostream => github.com/libp2p/go-libp2p-gostream v0.3.1
|
||||
|
||||
replace github.com/libp2p/go-libp2p-http => github.com/libp2p/go-libp2p-http v0.2.0
|
||||
|
||||
//replace github.com/go-i2p/go-i2p => ../../../github.com/go-i2p/go-i2p
|
||||
|
460
go.sum
460
go.sum
@@ -1,4 +1,3 @@
|
||||
cloud.google.com/go v0.16.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.34.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw=
|
||||
cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU=
|
||||
@@ -24,7 +23,6 @@ cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0Zeo
|
||||
cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk=
|
||||
contrib.go.opencensus.io/exporter/ocagent v0.4.12/go.mod h1:450APlNTSR6FrvC3CTRqYosuDstRB9un7SOx2k/9ckA=
|
||||
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
|
||||
github.com/AndreasBriese/bbloom v0.0.0-20190306092124-e2d15f34fcf9/go.mod h1:bOvUY6CB00SOBii9/FifXqc0awNKxLFCL/+pkDPuyl8=
|
||||
github.com/Azure/azure-sdk-for-go v32.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc=
|
||||
github.com/Azure/go-autorest/autorest v0.1.0/go.mod h1:AKyIcETwSUFxIcs/Wnq/C+kwCtlEYGUVd7FPNb2slmg=
|
||||
github.com/Azure/go-autorest/autorest v0.9.0/go.mod h1:xyHB1BMZT0cuDHU7I0+g046+BFDTQ8rEZB0s4Yfa6bI=
|
||||
@@ -41,23 +39,18 @@ github.com/Azure/go-autorest/logger v0.1.0/go.mod h1:oExouG+K6PryycPJfVSxi/koC6L
|
||||
github.com/Azure/go-autorest/tracing v0.1.0/go.mod h1:ROEEAFwXycQw7Sn3DXNtEedEvdeRAgDr0izn4z5Ij88=
|
||||
github.com/Azure/go-autorest/tracing v0.5.0/go.mod h1:r/s2XiOKccPW3HrqB+W0TQzfbtp2fGCgRFtBroKn4Dk=
|
||||
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
|
||||
github.com/BurntSushi/toml v1.1.0 h1:ksErzDEI1khOiGPgpwuI7x2ebx/uXQNw7xJpn9Eq1+I=
|
||||
github.com/BurntSushi/toml v1.1.0/go.mod h1:CxXYINrC8qIiEnFrOxCa7Jy5BFHlXnUU2pbicEuybxQ=
|
||||
github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo=
|
||||
github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU=
|
||||
github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks=
|
||||
github.com/Shopify/sarama v1.19.0/go.mod h1:FVkBWblsNy7DGZRfXLU0O9RCGt5g3g3yEuWXgklEdEo=
|
||||
github.com/Shopify/toxiproxy v2.1.4+incompatible/go.mod h1:OXgGpZ6Cli1/URJOF1DMxUHB2q5Ap20/P/eIdh4G0pI=
|
||||
github.com/aead/siphash v1.0.1/go.mod h1:Nywa3cDsYNNK3gaciGTWPwHt0wlpNV15vwmswBAUSII=
|
||||
github.com/akamai/AkamaiOPEN-edgegrid-golang v1.1.0/go.mod h1:kX6YddBkXqqywAe8c9LyvgTCyFuZCTMF4cRPQhc3Fy8=
|
||||
github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc=
|
||||
github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0=
|
||||
github.com/aliyun/alibaba-cloud-sdk-go v1.61.976/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA=
|
||||
github.com/andybalholm/brotli v0.0.0-20190621154722-5f990b63d2d6/go.mod h1:+lx6/Aqd1kLJ1GQfkvOnaZ1WGmLpMpbprPuIOOZX30U=
|
||||
github.com/andybalholm/brotli v1.0.0/go.mod h1:loMXtMfwqflxFJPmdbJO0a3KNoPuLBgiu3qAvBg8x/Y=
|
||||
github.com/apache/thrift v0.12.0/go.mod h1:cp2SuWMxlEZw2r+iP2GNCdIi4C1qmUzdZFSVb+bacwQ=
|
||||
github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o=
|
||||
github.com/armon/consul-api v0.0.0-20180202201655-eb2c6b5be1b6/go.mod h1:grANhF5doyWs3UAsr3K4I6qtAmlQcZDesFNEHPZAzj8=
|
||||
github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY=
|
||||
github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8=
|
||||
github.com/aws/aws-sdk-go v1.37.27/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro=
|
||||
@@ -67,16 +60,6 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r
|
||||
github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs=
|
||||
github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84=
|
||||
github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8=
|
||||
github.com/bradfitz/gomemcache v0.0.0-20170208213004-1952afaa557d/go.mod h1:PmM6Mmwb0LSuEubjR8N7PtNe1KxZLtOUHtbeikc5h60=
|
||||
github.com/btcsuite/btcd v0.20.1-beta h1:Ik4hyJqN8Jfyv3S4AGBOmyouMsYE3EdYODkMbQjwPGw=
|
||||
github.com/btcsuite/btcd v0.20.1-beta/go.mod h1:wVuoA8VJLEcwgqHBwHmzLRazpKxTv13Px/pDuV7OomQ=
|
||||
github.com/btcsuite/btclog v0.0.0-20170628155309-84c8d2346e9f/go.mod h1:TdznJufoqS23FtqVCzL0ZqgP5MqXbb4fg/WgDys70nA=
|
||||
github.com/btcsuite/btcutil v0.0.0-20190425235716-9e5f4b9a998d/go.mod h1:+5NJ2+qvTyV9exUAL/rxXi3DcLg2Ts+ymUAY5y4NvMg=
|
||||
github.com/btcsuite/go-socks v0.0.0-20170105172521-4720035b7bfd/go.mod h1:HHNXQzUsZCxOoE+CPiyCTO6x34Zs86zZUiwtpXoGdtg=
|
||||
github.com/btcsuite/goleveldb v0.0.0-20160330041536-7834afc9e8cd/go.mod h1:F+uVaaLLH7j4eDXPRvw78tMflu7Ie2bzYOH4Y8rRKBY=
|
||||
github.com/btcsuite/snappy-go v0.0.0-20151229074030-0bdef8d06723/go.mod h1:8woku9dyThutzjeg+3xrA5iCpBRH8XEEg3lh6TiUghc=
|
||||
github.com/btcsuite/websocket v0.0.0-20150119174127-31079b680792/go.mod h1:ghJtEyQwv5/p4Mg4C0fgbePVuGr935/5ddU9Z3TmDRY=
|
||||
github.com/btcsuite/winsvc v1.0.0/go.mod h1:jsenWakMcC0zFBFurPLEAyrnc/teJEM1O46fmI40EZs=
|
||||
github.com/c-bata/go-prompt v0.2.5/go.mod h1:vFnjEGDIIA/Lib7giyE4E9c50Lvl8j0S+7FVlAwDAVw=
|
||||
github.com/cenkalti/backoff/v4 v4.1.0 h1:c8LkOFQTzuO0WBM/ae5HdGQuZPfPxp7lqBRwQRm4fSc=
|
||||
github.com/cenkalti/backoff/v4 v4.1.0/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw=
|
||||
@@ -88,19 +71,12 @@ github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5P
|
||||
github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU=
|
||||
github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw=
|
||||
github.com/cloudflare/cloudflare-go v0.14.0/go.mod h1:EnwdgGMaFOruiPZRFSgn+TsQ3hQ7C/YWzIGLeu5c304=
|
||||
github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc=
|
||||
github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk=
|
||||
github.com/coreos/etcd v3.3.10+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||
github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE=
|
||||
github.com/coreos/go-etcd v2.0.0+incompatible/go.mod h1:Jez6KQU2B/sWsbdaef3ED8NzMklzPG4d5KIOhIy30Tk=
|
||||
github.com/coreos/go-semver v0.2.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||
github.com/coreos/go-semver v0.3.0 h1:wkHLiw0WNATZnSG7epLsujiMCgPAc9xhjJ4tgnAxmfM=
|
||||
github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk=
|
||||
github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4=
|
||||
github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA=
|
||||
github.com/cpu/goacmedns v0.1.1/go.mod h1:MuaouqEhPAHxsbqjgnck5zeghuwBP1dLnPoobeGqugQ=
|
||||
github.com/cpuguy83/go-md2man v1.0.10 h1:BSKMNlYxDvnunlTymqtgONjNnaRV1sTpcovwwjF22jk=
|
||||
github.com/cpuguy83/go-md2man v1.0.10/go.mod h1:SmD6nW6nTyfqj6ABTjUi3V3JVMnlJmwcJI5acqYI6dE=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0-20190314233015-f79a8a8ca69d/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.0/go.mod h1:maD7wRr/U5Z6m/iR4s+kqSMx2CaBsrgA7czyZG/E6dU=
|
||||
github.com/cpuguy83/go-md2man/v2 v2.0.2 h1:p1EgwI/C7NhT0JmVkwCD2ZBK8j4aeHQX2pMHHBfMQ6w=
|
||||
@@ -108,62 +84,50 @@ github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46t
|
||||
github.com/cretz/bine v0.2.0 h1:8GiDRGlTgz+o8H9DSnsl+5MeBK4HsExxgl6WgzOCuZo=
|
||||
github.com/cretz/bine v0.2.0/go.mod h1:WU4o9QR9wWp8AVKtTM1XD5vUHkEqnf2vVSo6dBqbetI=
|
||||
github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4=
|
||||
github.com/davecgh/go-spew v0.0.0-20171005155431-ecdeabc65495/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c=
|
||||
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
|
||||
github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018 h1:6xT9KW8zLC5IlbaIF5Q7JNieBoACT7iW0YTxQHR0in0=
|
||||
github.com/davidlazar/go-crypto v0.0.0-20170701192655-dcfb0a7ac018/go.mod h1:rQYf4tfk5sSwFsnDg3qYaBxSjsD9S8+59vW0dKUgme4=
|
||||
github.com/deepmap/oapi-codegen v1.3.11/go.mod h1:suMvK7+rKlx3+tpa8ByptmvoXbAV70wERKTOGH3hLp0=
|
||||
github.com/dgraph-io/badger v1.6.1/go.mod h1:FRmFw3uxvcpa8zG3Rxs0th+hCLIuaQg8HlNV5bjgnuU=
|
||||
github.com/dgraph-io/ristretto v0.0.2/go.mod h1:KPxhHT9ZxKefz+PCeOGsrHpl1qZ7i70dGTu2u+Ahh6E=
|
||||
github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ=
|
||||
github.com/dgryski/go-farm v0.0.0-20190423205320-6a90982ecee2/go.mod h1:SqUrOPUnsFjfmXRMNPybcSiG0BgUW2AuFH8PAnS2iTw=
|
||||
github.com/dgryski/go-sip13 v0.0.0-20181026042036-e10d5fee7954/go.mod h1:vAd38F8PWV+bWy6jNmig1y/TA+kYO4g3RSRF0IAv0no=
|
||||
github.com/dimchansky/utfbom v1.1.0/go.mod h1:rO41eb7gLfo8SF1jd9F8HplJm1Fewwi4mQvIirEdv+8=
|
||||
github.com/dnsimple/dnsimple-go v0.63.0/go.mod h1:O5TJ0/U6r7AfT8niYNlmohpLbCSG+c71tQlGr9SeGrg=
|
||||
github.com/dsnet/compress v0.0.1/go.mod h1:Aw8dCMJ7RioblQeTqt88akK31OvO8Dhf5JflhBbQEHo=
|
||||
github.com/dsnet/golib v0.0.0-20171103203638-1ea166775780/go.mod h1:Lj+Z9rebOhdfkVLjJ8T6VcRQv3SXugXy999NBtR9aFY=
|
||||
github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk=
|
||||
github.com/eapache/go-resiliency v1.1.0/go.mod h1:kFI+JgMyC7bLPUVY133qvEBtVayf5mFgVsvEsIPBvNs=
|
||||
github.com/eapache/go-xerial-snappy v0.0.0-20180814174437-776d5712da21/go.mod h1:+020luEh2TKB4/GOp8oxxtq0Daoen/Cii55CzbTV6DU=
|
||||
github.com/eapache/queue v1.1.0/go.mod h1:6eCeP0CKFpHLu8blIFXhExK/dRa7WDZfr6jVFPTqq+I=
|
||||
github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/emirpasic/gods v1.18.1/go.mod h1:8tpGGwCnJ5H4r6BWwaV6OrWmMoPhUl5jm/FMNAnJvWQ=
|
||||
github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4=
|
||||
github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1mIlRU8Am5FuJP05cCM98=
|
||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||
github.com/exoscale/egoscale v0.46.0/go.mod h1:mpEXBpROAa/2i5GC0r33rfxG+TxSEka11g1PIXt9+zc=
|
||||
github.com/eyedeekay/checki2cp v0.0.21 h1:DVer7H6RffCWS8Bo3+J6EyppUc1y8lvApKdQnAiVj5g=
|
||||
github.com/eyedeekay/checki2cp v0.0.21/go.mod h1:75sGwBgnacHmxxx8RQ7BIeS0gu5Pw916gFb2c80OUTc=
|
||||
github.com/eyedeekay/go-fpw v0.0.0-20200512022837-c8b4dcdc74d4/go.mod h1:RyCx7KuH+5ryvIpUF7SpxiChLtjeuPbVFCIzf8shIFc=
|
||||
github.com/eyedeekay/checki2cp v0.33.8 h1:h31UDIuTP7Pv0T332RlRUieTwaNT+LoLPPLOhkwecsk=
|
||||
github.com/eyedeekay/checki2cp v0.33.8/go.mod h1:n40YU2DtJI4iW6H8Wdqma062PI6L2ruVpG8QtsOjYRQ=
|
||||
github.com/eyedeekay/go-i2cp v0.0.0-20190716135428-6d41bed718b0 h1:rnn9OlD/3+tATEZNuiMR1C84O5CX8bZL2qqgttprKrw=
|
||||
github.com/eyedeekay/go-i2cp v0.0.0-20190716135428-6d41bed718b0/go.mod h1:+P0fIhkqIYjo7exMJRTlSteRMbRyHbiBiKw+YlPWk+c=
|
||||
github.com/eyedeekay/go-i2pcontrol v0.0.0-20200110011336-510cca77e350/go.mod h1:bhIQsVpbNNXMtcoZ9UF4hLQleOjaCgKGXiRRhNc8TOA=
|
||||
github.com/eyedeekay/go-i2pcontrol v0.1.6/go.mod h1:976YyzS3THPwlBelkp3t1pMzzsjyn96eLaVdhaaSI78=
|
||||
github.com/eyedeekay/go-i2pd v0.0.0-20220213070306-9807541b2dfc h1:ozp8Cxn9nsFF+p4tMcE63G0Kx+2lEywlCW0EvtISEZg=
|
||||
github.com/eyedeekay/go-i2pd v0.0.0-20220213070306-9807541b2dfc/go.mod h1:Yg8xCWRLyq0mezPV+xJygBhJCf7wYsIdXbYGQk5tnW8=
|
||||
github.com/eyedeekay/goSam v0.32.31-0.20210122211817-f97683379f23/go.mod h1:UgJnih/LpotwKriwVPOEa6yPDM2NDdVrKfLtS5DOLPE=
|
||||
github.com/eyedeekay/i2pd v0.3.0-1stbinrelease.0.20210702172028-5d01ee95810a/go.mod h1:4qJhWn+yNrWRbqFHhU8kl7JgbcW1hm3PMgvlPlxO3gg=
|
||||
github.com/eyedeekay/i2pkeys v0.0.0-20220310052025-204d4ae6dcae/go.mod h1:W9KCm9lqZ+Ozwl3dwcgnpPXAML97+I8Jiht7o5A8YBM=
|
||||
github.com/eyedeekay/i2pkeys v0.33.0 h1:5SzUyWxNjV6AvYv/WaI8J4dSgAfv7/WEps6pDLe2YSs=
|
||||
github.com/eyedeekay/i2pkeys v0.33.0/go.mod h1:W9KCm9lqZ+Ozwl3dwcgnpPXAML97+I8Jiht7o5A8YBM=
|
||||
github.com/eyedeekay/ramp v0.0.0-20190429201811-305b382042ab/go.mod h1:h7mvUAMgZ/rtRDUOkvKTK+8LnDMeUhJSoa5EPdB51fc=
|
||||
github.com/eyedeekay/sam3 v0.32.2/go.mod h1:Y3igFVzN4ybqkkpfUWULGhw7WRp8lieq0ORXbLBbcZM=
|
||||
github.com/eyedeekay/i2pkeys v0.33.7/go.mod h1:W9KCm9lqZ+Ozwl3dwcgnpPXAML97+I8Jiht7o5A8YBM=
|
||||
github.com/eyedeekay/i2pkeys v0.33.8 h1:f3llyruchFqs1QwCacBYbShArKPpMSSOqo/DVZXcfVs=
|
||||
github.com/eyedeekay/i2pkeys v0.33.8/go.mod h1:W9KCm9lqZ+Ozwl3dwcgnpPXAML97+I8Jiht7o5A8YBM=
|
||||
github.com/eyedeekay/onramp v0.33.7 h1:LkPklut7Apa6CPGdIoOJpyIpzP9H/Jw7RKvrVxEEYEM=
|
||||
github.com/eyedeekay/onramp v0.33.7/go.mod h1:+Dutoc91mCHLJlYNE3Ir6kSfmpEcQA6/RNHnmVVznWg=
|
||||
github.com/eyedeekay/sam3 v0.32.32/go.mod h1:qRA9KIIVxbrHlkj+ZB+OoxFGFgdKeGp1vSgPw26eOVU=
|
||||
github.com/eyedeekay/sam3 v0.33.5 h1:mY2MmEG4W35AOpG/G7DOdAhFZWRwFxlm+NmIoub1Xnw=
|
||||
github.com/eyedeekay/sam3 v0.33.5/go.mod h1:sPtlI4cRm7wD0UywOzLPvvdY1G++vBSK3n+jiIGqWlU=
|
||||
github.com/eyedeekay/sam3 v0.33.7/go.mod h1:25cRGEFawSkbiPNSh7vTUIpRtEYLVLg/4J4He6LndAY=
|
||||
github.com/eyedeekay/sam3 v0.33.8 h1:emuSZ4qSyoqc1EDjIBFbJ3GXNHOXw6hjbNp2OqdOpgI=
|
||||
github.com/eyedeekay/sam3 v0.33.8/go.mod h1:ytbwLYLJlW6UA92Ffyc6oioWTKnGeeUMr9CLuJbtqSA=
|
||||
github.com/eyedeekay/unembed v0.0.0-20230123014222-9916b121855b h1:QyCSwbHpkJtKGvIvHsvvlbDkf7/3a8qUlaa4rEr8myQ=
|
||||
github.com/eyedeekay/unembed v0.0.0-20230123014222-9916b121855b/go.mod h1:A6dZU88muI132XMrmdM0+cc2yIuwmhwgRfyrU54DjPc=
|
||||
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
|
||||
github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M=
|
||||
github.com/felixge/httpsnoop v1.0.1 h1:lvB5Jl89CsZtGIWuTcDM1E/vkVs49/Ml7JJe07l8SPQ=
|
||||
github.com/felixge/httpsnoop v1.0.1/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
|
||||
github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6 h1:u/UEqS66A5ckRmS4yNpjmVH56sVtS/RfclBAYocb4as=
|
||||
github.com/flynn/noise v0.0.0-20180327030543-2492fe189ae6/go.mod h1:1i71OnUq3iUe1ma7Lr6yG6/rjvM3emb6yoL7xLFzcVQ=
|
||||
github.com/fsnotify/fsnotify v1.4.3-0.20170329110642-4da3e2cfbabc/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/flynn/noise v1.1.0/go.mod h1:xbMo+0i6+IGbYdJhF31t2eR1BIU0CYc12+BNAKwUTag=
|
||||
github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo=
|
||||
github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWoS4=
|
||||
github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
|
||||
github.com/garyburd/redigo v1.1.1-0.20170914051019-70e1b1943d4f/go.mod h1:NR3MbYisc3/PwhQ00EMzDiPmrwpPxAn5GI05/YaO1SY=
|
||||
github.com/gabriel-vasile/mimetype v1.4.0 h1:Cn9dkdYsMIu56tGho+fqzh7XmvY2YyGU0FnbhiOsEro=
|
||||
github.com/gabriel-vasile/mimetype v1.4.0/go.mod h1:fA8fi6KUiG7MgQQ+mEWotXoEOvmxRtOJlERCzSmRvr8=
|
||||
github.com/getkin/kin-openapi v0.13.0/go.mod h1:WGRs2ZMM1Q8LR1QBEwUxC6RJEfaBcD0s+pcEVXFuAjw=
|
||||
github.com/getlantern/context v0.0.0-20190109183933-c447772a6520/go.mod h1:L+mq6/vvYHKjCX2oez0CgEAJmbq1fbb/oNJIWQkBybY=
|
||||
github.com/getlantern/errors v1.0.1/go.mod h1:l+xpFBrCtDLpK9qNjxs+cHU6+BAdlBaxHqikB6Lku3A=
|
||||
@@ -183,29 +147,24 @@ github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm
|
||||
github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8=
|
||||
github.com/go-i2p/go-i2p v0.0.0-20250130205134-f144c457ba5d h1:D3Ah0QjtBNY/ADd6795pomzDi0fAYl7VpudwNw3kjAQ=
|
||||
github.com/go-i2p/go-i2p v0.0.0-20250130205134-f144c457ba5d/go.mod h1:EU/fbQiZWSeBfStBTdijfuPMGSQLYuQNSE+ngT9vtiY=
|
||||
github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as=
|
||||
github.com/go-logfmt/logfmt v0.3.0/go.mod h1:Qt1PoO58o5twSAckw1HlFXLmHsOX5/0LbT9GBnD5lWE=
|
||||
github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V4qmtdjCk=
|
||||
github.com/go-redis/redis v6.15.8+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA=
|
||||
github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8=
|
||||
github.com/go-stack/stack v1.6.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY=
|
||||
github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM=
|
||||
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.2.0/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
|
||||
github.com/gogo/protobuf v1.2.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4=
|
||||
github.com/gogo/protobuf v1.3.1 h1:DqDEcV5aeaTmdFBePNpYsp3FlcVH/2ISVVM9Qf8PSls=
|
||||
github.com/gogo/protobuf v1.3.1/go.mod h1:SlYgWuQ5SjCEi6WLHjHCa1yvBfUnHcTbrrZtXPKa29o=
|
||||
github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A=
|
||||
github.com/golang/gddo v0.0.0-20190419222130-af0f2af80721/go.mod h1:xEhNfoBDX1hzLm2Nf80qUvZ2sVwoMZ8d6IE2SrsQfh4=
|
||||
github.com/golang/gddo v0.0.0-20200324184333-3c2cc9a6329d/go.mod h1:sam69Hju0uq+5uvLJUMDlsKlQ21Vrs1Kd/1YFPNYdOU=
|
||||
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
|
||||
github.com/golang/groupcache v0.0.0-20190129154638-5b532d6fd5ef/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20190702054246-869f871628b6/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20191227052852-215e87163ea7/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e h1:1r7pUrabqp18hOBcwBwiTsbnFeTZHV9eER/QT5JVZxY=
|
||||
github.com/golang/groupcache v0.0.0-20200121045136-8c9f03a8e57e/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc=
|
||||
github.com/golang/lint v0.0.0-20170918230701-e5d664eb928e/go.mod h1:tluoj9z5200jBnyusfRPU2LqT6J+DAorxEvtC7LHB+E=
|
||||
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.2.0/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
|
||||
github.com/golang/mock v1.3.1/go.mod h1:sBzyDLLjw3U8JLTeZvSv8jJB+tU5PVekmnlKIyFUx0Y=
|
||||
@@ -222,15 +181,12 @@ github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrU
|
||||
github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:WU3c8KckQ9AFe+yFwt9sWVRKCVIyN9cPHBJSNnbL67w=
|
||||
github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0=
|
||||
github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI=
|
||||
github.com/golang/snappy v0.0.0-20170215233205-553a64147049/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.0-20180518054509-2e65f85255db/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golang/snappy v0.0.1/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||
github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y=
|
||||
github.com/gomodule/redigo v2.0.0+incompatible h1:K/R+8tc58AaqLkqG2Ol3Qk+DR/TlNuhuh457pBFPtt0=
|
||||
github.com/gomodule/redigo v2.0.0+incompatible/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4=
|
||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||
github.com/google/go-cmp v0.1.1-0.20171103154506-982329095285/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M=
|
||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||
@@ -240,8 +196,6 @@ github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/
|
||||
github.com/google/go-github/v32 v32.1.0/go.mod h1:rIEpZD9CTDQwDK9GDrtMTycQNA4JU3qBsCizh3q2WCI=
|
||||
github.com/google/go-querystring v1.0.0/go.mod h1:odCYkC5MyYFN7vkCjXpyrEuKhc/BUO6wN/zVPAxq5ck=
|
||||
github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
|
||||
github.com/google/gopacket v1.1.17 h1:rMrlX2ZY2UbvT+sdz3+6J+pp2z+msCq9MxTU6ymxbBY=
|
||||
github.com/google/gopacket v1.1.17/go.mod h1:UdDNZ1OO62aGYVnPhxT1U6aI7ukYtA/kB8vaU0diBUM=
|
||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||
github.com/google/pprof v0.0.0-20190515194954-54271f7e092f/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||
@@ -250,9 +204,7 @@ github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hf
|
||||
github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM=
|
||||
github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI=
|
||||
github.com/google/renameio v1.0.0/go.mod h1:t/HQoYBZSsWSNK35C6CO/TpPLDVWvxOHboWUAweKUpk=
|
||||
github.com/google/uuid v1.1.1 h1:Gkbcsh/GbpXz7lPftLA3P6TYMwjCLYm83jiFQZF/3gY=
|
||||
github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
|
||||
github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY=
|
||||
github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg=
|
||||
github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk=
|
||||
github.com/gophercloud/gophercloud v0.15.1-0.20210202035223-633d73521055/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4=
|
||||
@@ -264,15 +216,11 @@ github.com/gorilla/handlers v1.5.1 h1:9lRY6j8DEeeBT10CvO9hGW0gmky0BprnvDI5vfhUHH
|
||||
github.com/gorilla/handlers v1.5.1/go.mod h1:t8XrUpc4KVXb7HGyJ4/cEnwQiaxrX/hz1Zv/4g96P1Q=
|
||||
github.com/gorilla/mux v1.6.2/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
||||
github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs=
|
||||
github.com/gorilla/websocket v1.4.2 h1:+/TMaTYc4QFitKJxsQ7Yye35DkWvkdLcvGKqM+x0Ufc=
|
||||
github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE=
|
||||
github.com/gregjones/httpcache v0.0.0-20170920190843-316c5e0ff04e/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
|
||||
github.com/grpc-ecosystem/go-grpc-middleware v1.0.0/go.mod h1:FiyG127CGDf3tlThmgyCl78X/SZQqEOJBCDaAfeWzPs=
|
||||
github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk=
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.8.5/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
|
||||
github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY=
|
||||
github.com/gxed/hashland/keccakpg v0.0.1/go.mod h1:kRzw3HkwxFU1mpmPP8v1WyQzwdGfmKFJ6tItnhQ67kU=
|
||||
github.com/gxed/hashland/murmur3 v0.0.1/go.mod h1:KjXop02n4/ckmZSnY2+HKcLud/tcmvhST0bie/0lS48=
|
||||
github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542/go.mod h1:Ow0tF8D4Kplbc8s8sSb3V2oUCygFHVp8gC3Dn6U4MNI=
|
||||
github.com/hashicorp/consul/api v1.1.0/go.mod h1:VmuI/Lkw1nC05EYQWNKwWGbkg+FbDBtguAZLlVdkD9Q=
|
||||
github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8=
|
||||
@@ -294,60 +242,20 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ
|
||||
github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8=
|
||||
github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc=
|
||||
github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4=
|
||||
github.com/hashicorp/hcl v0.0.0-20170914154624-68e816d1c783/go.mod h1:oZtUIOe8dh44I2q6ScRibXws4Ajl+d+nod3AaR9vL5w=
|
||||
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
|
||||
github.com/hashicorp/logutils v1.0.0/go.mod h1:QIAnNjmIWmVIIkWDTG1z5v++HQmx9WQRO+LraFDTW64=
|
||||
github.com/hashicorp/mdns v1.0.0/go.mod h1:tL+uN++7HEJ6SQLQ2/p+z2pH24WQKWjBPkE0mNTz8vQ=
|
||||
github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I=
|
||||
github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc=
|
||||
github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU=
|
||||
github.com/huin/goupnp v1.0.0 h1:wg75sLpL6DZqwHQN6E1Cfk6mtfzS45z8OV+ic+DtHRo=
|
||||
github.com/huin/goupnp v1.0.0/go.mod h1:n9v9KO1tAxYH82qOn+UTIFQDmx5n1Zxd/ClZDMX7Bnc=
|
||||
github.com/huin/goutil v0.0.0-20170803182201-1ca381bf3150/go.mod h1:PpLOETDnJ0o3iZrZfqZzyLl6l7F3c6L1oWn7OICBi6o=
|
||||
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
|
||||
github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4=
|
||||
github.com/inconshreveable/log15 v0.0.0-20170622235902-74a0988b5f80/go.mod h1:cOaXtrgN4ScfRrD9Bre7U1thNq5RtJ8ZoP4iXVGRj6o=
|
||||
github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8=
|
||||
github.com/ipfs/go-cid v0.0.6/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
|
||||
github.com/ipfs/go-cid v0.0.7 h1:ysQJVJA3fNDF1qigJbsSQOdjhVLsOEoPdh0+R97k3jY=
|
||||
github.com/ipfs/go-cid v0.0.7/go.mod h1:6Ux9z5e+HpkQdckYoX1PG/6xqKspzlEIR5SDmgqgC/I=
|
||||
github.com/ipfs/go-datastore v0.4.1/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA=
|
||||
github.com/ipfs/go-datastore v0.4.4/go.mod h1:SX/xMIKoCszPqp+z9JhPYCmoOoXTvaa13XEbGtsFUhA=
|
||||
github.com/ipfs/go-detect-race v0.0.1 h1:qX/xay2W3E4Q1U7d9lNs1sU9nvguX0a7319XbyQ6cOk=
|
||||
github.com/ipfs/go-detect-race v0.0.1/go.mod h1:8BNT7shDZPo99Q74BpGMK+4D8Mn4j46UU0LZ723meps=
|
||||
github.com/ipfs/go-ds-badger v0.2.3/go.mod h1:pEYw0rgg3FIrywKKnL+Snr+w/LjJZVMTBRn4FS6UHUk=
|
||||
github.com/ipfs/go-ds-leveldb v0.4.2/go.mod h1:jpbku/YqBSsBc1qgME8BkWS4AxzF2cEu1Ii2r79Hh9s=
|
||||
github.com/ipfs/go-ipfs-delay v0.0.0-20181109222059-70721b86a9a8/go.mod h1:8SP1YXK1M1kXuc4KJZINY3TQQ03J2rwBG9QfXmbRPrw=
|
||||
github.com/ipfs/go-ipfs-util v0.0.2 h1:59Sswnk1MFaiq+VcaknX7aYEyGyGDAA73ilhEK2POp8=
|
||||
github.com/ipfs/go-ipfs-util v0.0.2/go.mod h1:CbPtkWJzjLdEcezDns2XYaehFVNXG9zrdrtMecczcsQ=
|
||||
github.com/ipfs/go-log v0.0.1/go.mod h1:kL1d2/hzSpI0thNYjiKfjanbVNU+IIGA/WnNESY9leM=
|
||||
github.com/ipfs/go-log v1.0.2/go.mod h1:1MNjMxe0u6xvJZgeqbJ8vdo2TKaGwZ1a0Bpza+sr2Sk=
|
||||
github.com/ipfs/go-log v1.0.3/go.mod h1:OsLySYkwIbiSUR/yBTdv1qPtcE4FW3WPWk/ewz9Ru+A=
|
||||
github.com/ipfs/go-log v1.0.4 h1:6nLQdX4W8P9yZZFH7mO+X/PzjN8Laozm/lMJ6esdgzY=
|
||||
github.com/ipfs/go-log v1.0.4/go.mod h1:oDCg2FkjogeFOhqqb+N39l2RpTNPL6F/StPkB3kPgcs=
|
||||
github.com/ipfs/go-log/v2 v2.0.2/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0=
|
||||
github.com/ipfs/go-log/v2 v2.0.3/go.mod h1:O7P1lJt27vWHhOwQmcFEvlmo49ry2VY2+JfBWFaa9+0=
|
||||
github.com/ipfs/go-log/v2 v2.0.5/go.mod h1:eZs4Xt4ZUJQFM3DlanGhy7TkwwawCZcSByscwkWG+dw=
|
||||
github.com/ipfs/go-log/v2 v2.1.1 h1:G4TtqN+V9y9HY9TA6BwbCVyyBZ2B9MbCjR2MtGx8FR0=
|
||||
github.com/ipfs/go-log/v2 v2.1.1/go.mod h1:2v2nsGfZsvvAJz13SyFzf9ObaqwHiHxsPLEHntrv9KM=
|
||||
github.com/jackpal/go-nat-pmp v1.0.2 h1:KzKSgb7qkJvOUTqYl9/Hg/me3pWgBmERKrTGD7BdWus=
|
||||
github.com/jackpal/go-nat-pmp v1.0.2/go.mod h1:QPH045xvCAeXUZOxsnwmrtiCoxIr9eob+4orBN1SBKc=
|
||||
github.com/jarcoal/httpmock v1.0.6/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik=
|
||||
github.com/jbenet/go-cienv v0.1.0 h1:Vc/s0QbQtoxX8MwwSLWWh+xNNZvM3Lw7NsTcHrvvhMc=
|
||||
github.com/jbenet/go-cienv v0.1.0/go.mod h1:TqNnHUmJgXau0nCzC7kXWeotg3J9W34CUv5Djy1+FlA=
|
||||
github.com/jbenet/go-temp-err-catcher v0.0.0-20150120210811-aac704a3f4f2/go.mod h1:8GXXJV31xl8whumTzdZsTt3RnUIiPqzkyf7mxToRCMs=
|
||||
github.com/jbenet/go-temp-err-catcher v0.1.0 h1:zpb3ZH6wIE8Shj2sKS+khgRvf7T7RABoLk/+KKHggpk=
|
||||
github.com/jbenet/go-temp-err-catcher v0.1.0/go.mod h1:0kJRvmDZXNMIiJirNPEYfhpPwbGVtZVWC34vc5WLsDk=
|
||||
github.com/jbenet/goprocess v0.0.0-20160826012719-b497e2f366b8/go.mod h1:Ly/wlsjFq/qrU3Rar62tu1gASgGw6chQbSh/XgIIXCY=
|
||||
github.com/jbenet/goprocess v0.1.4 h1:DRGOFReOMqqDNXwW70QkacFW0YN9QnwLV0Vqk+3oU0o=
|
||||
github.com/jbenet/goprocess v0.1.4/go.mod h1:5yspPrukOVuOLORacaBi858NqyClJPQxYZlqdZVfqY4=
|
||||
github.com/jessevdk/go-flags v0.0.0-20141203071132-1679536dcc89/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI=
|
||||
github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k=
|
||||
github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo=
|
||||
github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U=
|
||||
github.com/jonboulle/clockwork v0.1.0/go.mod h1:Ii8DK3G1RaLaWxj9trq07+26W01tbo22gdxWY5EU2bo=
|
||||
github.com/jpillora/go-tcp-proxy v1.0.0/go.mod h1:dDLgFeNeCec5CsLCmJlat+bb/oNDHc3d90G+anWRcBQ=
|
||||
github.com/jrick/logrotate v1.0.0/go.mod h1:LNinyqDIJnpAur+b8yyulnQw/wDuN1+BYKlTRt3OuAQ=
|
||||
github.com/json-iterator/go v1.1.5/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU=
|
||||
github.com/json-iterator/go v1.1.7/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4=
|
||||
@@ -359,155 +267,35 @@ github.com/justinas/alice v1.2.0 h1:+MHSA/vccVCF4Uq37S42jwlkvI2Xzl7zTPCN5BnZNVo=
|
||||
github.com/justinas/alice v1.2.0/go.mod h1:fN5HRH/reO/zrUflLfTN43t3vXvKzvZIENsNEe7i7qA=
|
||||
github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213/go.mod h1:vNUNkEQ1e29fT/6vq2aBdFsgNPmy8qMdSay1npru+Sw=
|
||||
github.com/kisielk/errcheck v1.1.0/go.mod h1:EZBBE59ingxPouuu3KfxchcWSUPOHkagtvWXihfKN4Q=
|
||||
github.com/kisielk/errcheck v1.2.0/go.mod h1:/BMXB+zMLi60iA8Vv6Ksmxu/1UDYcXs4uQLJ+jE2L00=
|
||||
github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
|
||||
github.com/kkdai/bstream v0.0.0-20161212061736-f391b8402d23/go.mod h1:J+Gs4SYgM6CZQHDETBtE9HaSEkGmuNXF86RwHhHUvq4=
|
||||
github.com/klauspost/compress v1.4.1/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/klauspost/compress v1.9.2/go.mod h1:RyIbtBH6LamlWaDj8nUwkbUhJ87Yi3uG0guNDohfE1A=
|
||||
github.com/klauspost/compress v1.10.5/go.mod h1:aoV0uJVorq1K+umq18yTdKaF57EivdYsUV+/s2qKfXs=
|
||||
github.com/klauspost/cpuid v1.2.0/go.mod h1:Pj4uuM528wm8OyEC2QMXAi2YiTZ96dNQPGgoMS4s3ek=
|
||||
github.com/klauspost/pgzip v1.2.1/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
||||
github.com/klauspost/pgzip v1.2.3/go.mod h1:Ch1tH69qFZu15pkjo5kYi6mth2Zzwzt50oCQKQE9RUs=
|
||||
github.com/kolo/xmlrpc v0.0.0-20200310150728-e0350524596b/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ=
|
||||
github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d h1:68u9r4wEvL3gYg2jvAOgROwZ3H+Y3hIDk4tbbmIjcYQ=
|
||||
github.com/koron/go-ssdp v0.0.0-20191105050749-2e1c40ed0b5d/go.mod h1:5Ky9EC2xfoUKUor0Hjgi2BJhCSXJfMOFlmyYrVKGQMk=
|
||||
github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg=
|
||||
github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc=
|
||||
github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo=
|
||||
github.com/kr/pretty v0.2.0 h1:s5hAObm+yFO5uHYt5dYjxi2rXrsnmRpJx4OYvIWUaQs=
|
||||
github.com/kr/pretty v0.2.0/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI=
|
||||
github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ=
|
||||
github.com/kr/text v0.1.0 h1:45sCR5RtlFHMR4UwH9sdQ5TC8v0qDQCHnXt+kaKSTVE=
|
||||
github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI=
|
||||
github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA=
|
||||
github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w=
|
||||
github.com/labstack/echo/v4 v4.1.11/go.mod h1:i541M3Fj6f76NZtHSj7TXnyM8n2gaodfvfxNnFqi74g=
|
||||
github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k=
|
||||
github.com/libp2p/go-addr-util v0.0.2 h1:7cWK5cdA5x72jX0g8iLrQWm5TRJZ6CzGdPEhWj7plWU=
|
||||
github.com/libp2p/go-addr-util v0.0.2/go.mod h1:Ecd6Fb3yIuLzq4bD7VcywcVSBtefcAwnUISBM3WG15E=
|
||||
github.com/libp2p/go-buffer-pool v0.0.1/go.mod h1:xtyIz9PMobb13WaxR6Zo1Pd1zXJKYg0a8KiIvDp3TzQ=
|
||||
github.com/libp2p/go-buffer-pool v0.0.2 h1:QNK2iAFa8gjAe1SPz6mHSMuCcjs+X1wlHzeOSqcmlfs=
|
||||
github.com/libp2p/go-buffer-pool v0.0.2/go.mod h1:MvaB6xw5vOrDl8rYZGLFdKAuk/hRoRZd1Vi32+RXyFM=
|
||||
github.com/libp2p/go-conn-security-multistream v0.2.0 h1:uNiDjS58vrvJTg9jO6bySd1rMKejieG7v45ekqHbZ1M=
|
||||
github.com/libp2p/go-conn-security-multistream v0.2.0/go.mod h1:hZN4MjlNetKD3Rq5Jb/P5ohUnFLNzEAR4DLSzpn2QLU=
|
||||
github.com/libp2p/go-eventbus v0.2.1 h1:VanAdErQnpTioN2TowqNcOijf6YwhuODe4pPKSDpxGc=
|
||||
github.com/libp2p/go-eventbus v0.2.1/go.mod h1:jc2S4SoEVPP48H9Wpzm5aiGwUCBMfGhVhhBjyhhCJs8=
|
||||
github.com/libp2p/go-flow-metrics v0.0.3 h1:8tAs/hSdNvUiLgtlSy3mxwxWP4I9y/jlkPFT7epKdeM=
|
||||
github.com/libp2p/go-flow-metrics v0.0.3/go.mod h1:HeoSNUrOJVK1jEpDqVEiUOIXqhbnS27omG0uWU5slZs=
|
||||
github.com/libp2p/go-libp2p v0.13.0 h1:tDdrXARSghmusdm0nf1U/4M8aj8Rr0V2IzQOXmbzQ3s=
|
||||
github.com/libp2p/go-libp2p v0.13.0/go.mod h1:pM0beYdACRfHO1WcJlp65WXyG2A6NqYM+t2DTVAJxMo=
|
||||
github.com/libp2p/go-libp2p-autonat v0.4.0 h1:3y8XQbpr+ssX8QfZUHekjHCYK64sj6/4hnf/awD4+Ug=
|
||||
github.com/libp2p/go-libp2p-autonat v0.4.0/go.mod h1:YxaJlpr81FhdOv3W3BTconZPfhaYivRdf53g+S2wobk=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.2.0 h1:3EsGAi0CBGcZ33GwRuXEYJLLPoVWyXJ1bcJzAJjINkk=
|
||||
github.com/libp2p/go-libp2p-blankhost v0.2.0/go.mod h1:eduNKXGTioTuQAUcZ5epXi9vMl+t4d8ugUBRQ4SqaNQ=
|
||||
github.com/libp2p/go-libp2p-circuit v0.4.0 h1:eqQ3sEYkGTtybWgr6JLqJY6QLtPWRErvFjFDfAOO1wc=
|
||||
github.com/libp2p/go-libp2p-circuit v0.4.0/go.mod h1:t/ktoFIUzM6uLQ+o1G6NuBl2ANhBKN9Bc8jRIk31MoA=
|
||||
github.com/libp2p/go-libp2p-core v0.8.0 h1:5K3mT+64qDTKbV3yTdbMCzJ7O6wbNsavAEb8iqBvBcI=
|
||||
github.com/libp2p/go-libp2p-core v0.8.0/go.mod h1:FfewUH/YpvWbEB+ZY9AQRQ4TAD8sJBt/G1rVvhz5XT8=
|
||||
github.com/libp2p/go-libp2p-discovery v0.5.0 h1:Qfl+e5+lfDgwdrXdu4YNCWyEo3fWuP+WgN9mN0iWviQ=
|
||||
github.com/libp2p/go-libp2p-discovery v0.5.0/go.mod h1:+srtPIU9gDaBNu//UHvcdliKBIcr4SfDcm0/PfPJLug=
|
||||
github.com/libp2p/go-libp2p-gostream v0.3.1 h1:XlwohsPn6uopGluEWs1Csv1QCEjrTXf2ZQagzZ5paAg=
|
||||
github.com/libp2p/go-libp2p-gostream v0.3.1/go.mod h1:1V3b+u4Zhaq407UUY9JLCpboaeufAeVQbnvAt12LRsI=
|
||||
github.com/libp2p/go-libp2p-http v0.2.0 h1:GYeVd+RZzkRa8XFLITqOpcrIQG6KbFLPJqII6HHBHzY=
|
||||
github.com/libp2p/go-libp2p-http v0.2.0/go.mod h1:GlNKFqDZHe25LVy2CvnZKx75/jLtMaD3VxZV6N39X7E=
|
||||
github.com/libp2p/go-libp2p-loggables v0.1.0 h1:h3w8QFfCt2UJl/0/NW4K829HX/0S4KD31PQ7m8UXXO8=
|
||||
github.com/libp2p/go-libp2p-loggables v0.1.0/go.mod h1:EyumB2Y6PrYjr55Q3/tiJ/o3xoDasoRYM7nOzEpoa90=
|
||||
github.com/libp2p/go-libp2p-mplex v0.2.1/go.mod h1:SC99Rxs8Vuzrf/6WhmH41kNn13TiYdAWNYHrwImKLnE=
|
||||
github.com/libp2p/go-libp2p-mplex v0.2.3/go.mod h1:CK3p2+9qH9x+7ER/gWWDYJ3QW5ZxWDkm+dVvjfuG3ek=
|
||||
github.com/libp2p/go-libp2p-mplex v0.4.0/go.mod h1:yCyWJE2sc6TBTnFpjvLuEJgTSw/u+MamvzILKdX7asw=
|
||||
github.com/libp2p/go-libp2p-mplex v0.4.1 h1:/pyhkP1nLwjG3OM+VuaNJkQT/Pqq73WzB3aDN3Fx1sc=
|
||||
github.com/libp2p/go-libp2p-mplex v0.4.1/go.mod h1:cmy+3GfqfM1PceHTLL7zQzAAYaryDu6iPSC+CIb094g=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.6 h1:wMWis3kYynCbHoyKLPBEMu4YRLltbm8Mk08HGSfvTkU=
|
||||
github.com/libp2p/go-libp2p-nat v0.0.6/go.mod h1:iV59LVhB3IkFvS6S6sauVTSOrNEANnINbI/fkaLimiw=
|
||||
github.com/libp2p/go-libp2p-netutil v0.1.0 h1:zscYDNVEcGxyUpMd0JReUZTrpMfia8PmLKcKF72EAMQ=
|
||||
github.com/libp2p/go-libp2p-netutil v0.1.0/go.mod h1:3Qv/aDqtMLTUyQeundkKsA+YCThNdbQD54k3TqjpbFU=
|
||||
github.com/libp2p/go-libp2p-noise v0.1.1 h1:vqYQWvnIcHpIoWJKC7Al4D6Hgj0H012TuXRhPwSMGpQ=
|
||||
github.com/libp2p/go-libp2p-noise v0.1.1/go.mod h1:QDFLdKX7nluB7DEnlVPbz7xlLHdwHFA9HiohJRr3vwM=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.6 h1:2ACefBX23iMdJU9Ke+dcXt3w86MIryes9v7In4+Qq3U=
|
||||
github.com/libp2p/go-libp2p-peerstore v0.2.6/go.mod h1:ss/TWTgHZTMpsU/oKVVPQCGuDHItOpf2W8RxAi50P2s=
|
||||
github.com/libp2p/go-libp2p-pnet v0.2.0 h1:J6htxttBipJujEjz1y0a5+eYoiPcFHhSYHH6na5f0/k=
|
||||
github.com/libp2p/go-libp2p-pnet v0.2.0/go.mod h1:Qqvq6JH/oMZGwqs3N1Fqhv8NVhrdYcO0BW4wssv21LA=
|
||||
github.com/libp2p/go-libp2p-swarm v0.2.8/go.mod h1:JQKMGSth4SMqonruY0a8yjlPVIkb0mdNSwckW7OYziM=
|
||||
github.com/libp2p/go-libp2p-swarm v0.3.0/go.mod h1:hdv95GWCTmzkgeJpP+GK/9D9puJegb7H57B5hWQR5Kk=
|
||||
github.com/libp2p/go-libp2p-swarm v0.4.0 h1:hahq/ijRoeH6dgROOM8x7SeaKK5VgjjIr96vdrT+NUA=
|
||||
github.com/libp2p/go-libp2p-swarm v0.4.0/go.mod h1:XVFcO52VoLoo0eitSxNQWYq4D6sydGOweTOAjJNraCw=
|
||||
github.com/libp2p/go-libp2p-testing v0.0.3/go.mod h1:gvchhf3FQOtBdr+eFUABet5a4MBLK8jM3V4Zghvmi+E=
|
||||
github.com/libp2p/go-libp2p-testing v0.1.1/go.mod h1:xaZWMJrPUM5GlDBxCeGUi7kI4eqnjVyavGroI2nxEM0=
|
||||
github.com/libp2p/go-libp2p-testing v0.1.2-0.20200422005655-8775583591d8/go.mod h1:Qy8sAncLKpwXtS2dSnDOP8ktexIAHKu+J+pnZOFZLTc=
|
||||
github.com/libp2p/go-libp2p-testing v0.3.0/go.mod h1:efZkql4UZ7OVsEfaxNHZPzIehtsBXMrXnCfJIgDti5g=
|
||||
github.com/libp2p/go-libp2p-testing v0.4.0 h1:PrwHRi0IGqOwVQWR3xzgigSlhlLfxgfXgkHxr77EghQ=
|
||||
github.com/libp2p/go-libp2p-testing v0.4.0/go.mod h1:Q+PFXYoiYFN5CAEG2w3gLPEzotlKsNSbKQ/lImlOWF0=
|
||||
github.com/libp2p/go-libp2p-tls v0.1.3 h1:twKMhMu44jQO+HgQK9X8NHO5HkeJu2QbhLzLJpa8oNM=
|
||||
github.com/libp2p/go-libp2p-tls v0.1.3/go.mod h1:wZfuewxOndz5RTnCAxFliGjvYSDA40sKitV4c50uI1M=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.2.0/go.mod h1:mQcrHj4asu6ArfSoMuyojOdjx73Q47cYD7s5+gZOlns=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.3.0/go.mod h1:i+SKzbRnvXdVbU3D1dwydnTmKRPXiAR/fyvi1dXuL4o=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.0 h1:xwj4h3hJdBrxqMOyMUjwscjoVst0AASTsKtZiTChoHI=
|
||||
github.com/libp2p/go-libp2p-transport-upgrader v0.4.0/go.mod h1:J4ko0ObtZSmgn5BX5AmegP+dK3CSnU2lMCKsSq/EY0s=
|
||||
github.com/libp2p/go-libp2p-yamux v0.2.8/go.mod h1:/t6tDqeuZf0INZMTgd0WxIRbtK2EzI2h7HbFm9eAKI4=
|
||||
github.com/libp2p/go-libp2p-yamux v0.4.0/go.mod h1:+DWDjtFMzoAwYLVkNZftoucn7PelNoy5nm3tZ3/Zw30=
|
||||
github.com/libp2p/go-libp2p-yamux v0.5.0/go.mod h1:AyR8k5EzyM2QN9Bbdg6X1SkVVuqLwTGf0L4DFq9g6po=
|
||||
github.com/libp2p/go-libp2p-yamux v0.5.1 h1:sX4WQPHMhRxJE5UZTfjEuBvlQWXB5Bo3A2JK9ZJ9EM0=
|
||||
github.com/libp2p/go-libp2p-yamux v0.5.1/go.mod h1:dowuvDu8CRWmr0iqySMiSxK+W0iL5cMVO9S94Y6gkv4=
|
||||
github.com/libp2p/go-maddr-filter v0.0.5/go.mod h1:Jk+36PMfIqCJhAnaASRH83bdAvfDRp/w6ENFaC9bG+M=
|
||||
github.com/libp2p/go-maddr-filter v0.1.0/go.mod h1:VzZhTXkMucEGGEOSKddrwGiOv0tUhgnKqNEmIAz/bPU=
|
||||
github.com/libp2p/go-mplex v0.1.0/go.mod h1:SXgmdki2kwCUlCCbfGLEgHjC4pFqhTp0ZoV6aiKgxDU=
|
||||
github.com/libp2p/go-mplex v0.1.2/go.mod h1:Xgz2RDCi3co0LeZfgjm4OgUF15+sVR8SRcu3SFXI1lk=
|
||||
github.com/libp2p/go-mplex v0.2.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ=
|
||||
github.com/libp2p/go-mplex v0.3.0 h1:U1T+vmCYJaEoDJPV1aq31N56hS+lJgb397GsylNSgrU=
|
||||
github.com/libp2p/go-mplex v0.3.0/go.mod h1:0Oy/A9PQlwBytDRp4wSkFnzHYDKcpLot35JQ6msjvYQ=
|
||||
github.com/libp2p/go-msgio v0.0.6 h1:lQ7Uc0kS1wb1EfRxO2Eir/RJoHkHn7t6o+EiwsYIKJA=
|
||||
github.com/libp2p/go-msgio v0.0.6/go.mod h1:4ecVB6d9f4BDSL5fqvPiC4A3KivjWn+Venn/1ALLMWA=
|
||||
github.com/libp2p/go-nat v0.0.5 h1:qxnwkco8RLKqVh1NmjQ+tJ8p8khNLFxuElYG/TwqW4Q=
|
||||
github.com/libp2p/go-nat v0.0.5/go.mod h1:B7NxsVNPZmRLvMOwiEO1scOSyjA56zxYAGv1yQgRkEU=
|
||||
github.com/libp2p/go-netroute v0.1.2/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk=
|
||||
github.com/libp2p/go-netroute v0.1.3 h1:1ngWRx61us/EpaKkdqkMjKk/ufr/JlIFYQAxV2XX8Ig=
|
||||
github.com/libp2p/go-netroute v0.1.3/go.mod h1:jZLDV+1PE8y5XxBySEBgbuVAXbhtuHSdmLPL2n9MKbk=
|
||||
github.com/libp2p/go-openssl v0.0.7 h1:eCAzdLejcNVBzP/iZM9vqHnQm+XyCEbSSIheIPRGNsw=
|
||||
github.com/libp2p/go-openssl v0.0.7/go.mod h1:unDrJpgy3oFr+rqXsarWifmJuNnJR4chtO1HmaZjggc=
|
||||
github.com/libp2p/go-reuseport v0.0.1/go.mod h1:jn6RmB1ufnQwl0Q1f+YxAj8isJgDCQzaaxIFYDhcYEA=
|
||||
github.com/libp2p/go-reuseport v0.0.2 h1:XSG94b1FJfGA01BUrT82imejHQyTxO4jEWqheyCXYvU=
|
||||
github.com/libp2p/go-reuseport v0.0.2/go.mod h1:SPD+5RwGC7rcnzngoYC86GjPzjSywuQyMVAheVBD9nQ=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.3/go.mod h1:Spv+MPft1exxARzP2Sruj2Wb5JSyHNncjf1Oi2dEbzM=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.4 h1:OZGz0RB620QDGpv300n1zaOcKGGAoGVf8h9txtt/1uM=
|
||||
github.com/libp2p/go-reuseport-transport v0.0.4/go.mod h1:trPa7r/7TJK/d+0hdBLOCGvpQQVOU74OXbNCIMkufGw=
|
||||
github.com/libp2p/go-sockaddr v0.0.2 h1:tCuXfpA9rq7llM/v834RKc/Xvovy/AqM9kHvTV/jY/Q=
|
||||
github.com/libp2p/go-sockaddr v0.0.2/go.mod h1:syPvOmNs24S3dFVGJA1/mrqdeijPxLV2Le3BRLKd68k=
|
||||
github.com/libp2p/go-stream-muxer-multistream v0.3.0 h1:TqnSHPJEIqDEO7h1wZZ0p3DXdvDSiLHQidKKUGZtiOY=
|
||||
github.com/libp2p/go-stream-muxer-multistream v0.3.0/go.mod h1:yDh8abSIzmZtqtOt64gFJUXEryejzNb0lisTt+fAMJA=
|
||||
github.com/libp2p/go-tcp-transport v0.2.0/go.mod h1:vX2U0CnWimU4h0SGSEsg++AzvBcroCGYw28kh94oLe0=
|
||||
github.com/libp2p/go-tcp-transport v0.2.1 h1:ExZiVQV+h+qL16fzCWtd1HSzPsqWottJ8KXwWaVi8Ns=
|
||||
github.com/libp2p/go-tcp-transport v0.2.1/go.mod h1:zskiJ70MEfWz2MKxvFB/Pv+tPIB1PpPUrHIWQ8aFw7M=
|
||||
github.com/libp2p/go-ws-transport v0.4.0 h1:9tvtQ9xbws6cA5LvqdE6Ne3vcmGB4f1z9SByggk4s0k=
|
||||
github.com/libp2p/go-ws-transport v0.4.0/go.mod h1:EcIEKqf/7GDjth6ksuS/6p7R49V4CBY6/E7R/iyhYUA=
|
||||
github.com/libp2p/go-yamux v1.3.7/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE=
|
||||
github.com/libp2p/go-yamux v1.4.0/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE=
|
||||
github.com/libp2p/go-yamux v1.4.1 h1:P1Fe9vF4th5JOxxgQvfbOHkrGqIZniTLf+ddhZp8YTI=
|
||||
github.com/libp2p/go-yamux v1.4.1/go.mod h1:fr7aVgmdNGJK+N1g+b6DW6VxzbRCjCOejR/hkmpooHE=
|
||||
github.com/libp2p/go-yamux/v2 v2.0.0 h1:vSGhAy5u6iHBq11ZDcyHH4Blcf9xlBhT4WQDoOE90LU=
|
||||
github.com/libp2p/go-yamux/v2 v2.0.0/go.mod h1:NVWira5+sVUIU6tu1JWvaRn1dRnG+cawOJiflsAM+7U=
|
||||
github.com/linode/linodego v0.25.3/go.mod h1:GSBKPpjoQfxEfryoCRcgkuUOCuVtGHWhzI8OMdycNTE=
|
||||
github.com/liquidweb/go-lwApi v0.0.0-20190605172801-52a4864d2738/go.mod h1:0sYF9rMXb0vlG+4SzdiGMXHheCZxjguMq+Zb4S2BfBs=
|
||||
github.com/liquidweb/go-lwApi v0.0.5/go.mod h1:0sYF9rMXb0vlG+4SzdiGMXHheCZxjguMq+Zb4S2BfBs=
|
||||
github.com/liquidweb/liquidweb-cli v0.6.9/go.mod h1:cE1uvQ+x24NGUL75D0QagOFCG8Wdvmwu8aL9TLmA/eQ=
|
||||
github.com/liquidweb/liquidweb-go v1.6.3/go.mod h1:SuXXp+thr28LnjEw18AYtWwIbWMHSUiajPQs8T9c/Rc=
|
||||
github.com/magiconair/properties v1.7.4-0.20170902060319-8d7837e64d3c/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.0/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.1/go.mod h1:PppfXfuXeibc/6YijjN8zIbojt8czPbwD3XqdrwzmxQ=
|
||||
github.com/magiconair/properties v1.8.4/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60=
|
||||
github.com/majestrate/i2p-tools v0.0.0-20170507194519-afc8e46afa95/go.mod h1:e/TZ1O6X9t0qitnKc3xvHq8VXDpm/FmYuFf21epEkUc=
|
||||
github.com/matryer/moq v0.0.0-20190312154309-6cfb0558e1bd/go.mod h1:9ELz6aaclSIGnZBoaSLZ3NAl1VTufbOrXBPvtcy6WiQ=
|
||||
github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
github.com/mattn/go-colorable v0.0.10-0.20170816031813-ad5389df28cd/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU=
|
||||
github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ=
|
||||
github.com/mattn/go-colorable v0.1.2/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE=
|
||||
github.com/mattn/go-colorable v0.1.7/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-colorable v0.1.8/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc=
|
||||
github.com/mattn/go-isatty v0.0.2/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4=
|
||||
github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.8/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s=
|
||||
github.com/mattn/go-isatty v0.0.9/go.mod h1:YNRxwqDuOph6SZLI9vUUz6OYw3QyUt7WiY2yME+cCiQ=
|
||||
github.com/mattn/go-isatty v0.0.10/go.mod h1:qgIWMr58cqv1PHHyhnkY9lrL7etaEgOFcMEpPG5Rm84=
|
||||
@@ -518,19 +306,9 @@ github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m
|
||||
github.com/mattn/go-tty v0.0.0-20180219170247-931426f7535a/go.mod h1:XPvLUNfbS4fJH25nqRHfWLMa1ONC8Amw+mIA639KxkE=
|
||||
github.com/mattn/go-tty v0.0.3/go.mod h1:ihxohKRERHTVzN+aSVRwACLCeqIoZAWpoICkkvrWyR0=
|
||||
github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0=
|
||||
github.com/mgutz/ansi v0.0.0-20170206155736-9520e82c474b/go.mod h1:01TrycV0kFyexm33Z7vhZRXopbI8J3TDReVlkTgMUxE=
|
||||
github.com/mholt/archiver v3.1.1+incompatible/go.mod h1:Dh2dOXnSdiLxRiPoVfIr/fI1TwETms9B8CTWfeh7ROU=
|
||||
github.com/mholt/archiver/v3 v3.3.0/go.mod h1:YnQtqsp+94Rwd0D/rk5cnLrxusUBUXg+08Ebtr1Mqao=
|
||||
github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg=
|
||||
github.com/miekg/dns v1.1.31/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
||||
github.com/miekg/dns v1.1.40 h1:pyyPFfGMnciYUk/mXpKkVmeMQjfXqt3FAJ2hy7tPiLA=
|
||||
github.com/miekg/dns v1.1.40/go.mod h1:KNUDUusw/aVsxyTYZM1oqvCicbwhgbNgztCETuNZ7xM=
|
||||
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1 h1:lYpkrQH5ajf0OXOcUbGjvZxxijuBwbbmlSxLiuofa+g=
|
||||
github.com/minio/blake2b-simd v0.0.0-20160723061019-3f5f724cb5b1/go.mod h1:pD8RvIylQ358TN4wwqatJ8rNavkEINozVn9DtGI3dfQ=
|
||||
github.com/minio/sha256-simd v0.0.0-20190131020904-2d45a736cd16/go.mod h1:2FMWW+8GMoPweT6+pI63m9YE3Lmw4J71hV56Chs1E/U=
|
||||
github.com/minio/sha256-simd v0.1.1-0.20190913151208-6de447530771/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
|
||||
github.com/minio/sha256-simd v0.1.1 h1:5QHSlgo3nt5yKOJrC7W8w7X+NFl8cMPZm96iu8kKUJU=
|
||||
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
|
||||
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
|
||||
github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
|
||||
@@ -539,57 +317,12 @@ github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaC
|
||||
github.com/mitchellh/gox v0.4.0/go.mod h1:Sd9lOJ0+aimLBi73mGofS1ycjY8lL3uZM3JPS42BGNg=
|
||||
github.com/mitchellh/iochan v1.0.0/go.mod h1:JwYml1nuB7xOzsp52dPpHFffvOCDupsG0QubkSMEySY=
|
||||
github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mitchellh/mapstructure v0.0.0-20170523030023-d0303fe80992/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mitchellh/mapstructure v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y=
|
||||
github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo=
|
||||
github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
|
||||
github.com/modern-go/reflect2 v0.0.0-20180701023420-4b7aa43c6742/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/modern-go/reflect2 v1.0.1/go.mod h1:bx2lNnkwVCuqBIxFjflWJWanXIb3RllmbCylyMrvgv0=
|
||||
github.com/mr-tron/base58 v1.1.0/go.mod h1:xcD2VGqlgYjBdcBLw+TuYLr8afG+Hj8g2eTVqeSzSU8=
|
||||
github.com/mr-tron/base58 v1.1.2/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
||||
github.com/mr-tron/base58 v1.1.3/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
||||
github.com/mr-tron/base58 v1.2.0 h1:T/HDJBh4ZCPbU39/+c3rRvE0uKBQlU27+QI8LJ4t64o=
|
||||
github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc=
|
||||
github.com/multiformats/go-base32 v0.0.3 h1:tw5+NhuwaOjJCC5Pp82QuXbrmLzWg7uxlMFp8Nq/kkI=
|
||||
github.com/multiformats/go-base32 v0.0.3/go.mod h1:pLiuGC8y0QR3Ue4Zug5UzK9LjgbkL8NSQj0zQ5Nz/AA=
|
||||
github.com/multiformats/go-base36 v0.1.0 h1:JR6TyF7JjGd3m6FbLU2cOxhC0Li8z8dLNGQ89tUg4F4=
|
||||
github.com/multiformats/go-base36 v0.1.0/go.mod h1:kFGE83c6s80PklsHO9sRn2NCoffoRdUUOENyW/Vv6sM=
|
||||
github.com/multiformats/go-multiaddr v0.0.1/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44=
|
||||
github.com/multiformats/go-multiaddr v0.0.2/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44=
|
||||
github.com/multiformats/go-multiaddr v0.0.4/go.mod h1:xKVEak1K9cS1VdmPZW3LSIb6lgmoS58qz/pzqmAxV44=
|
||||
github.com/multiformats/go-multiaddr v0.1.1/go.mod h1:aMKBKNEYmzmDmxfX88/vz+J5IU55txyt0p4aiWVohjo=
|
||||
github.com/multiformats/go-multiaddr v0.2.0/go.mod h1:0nO36NvPpyV4QzvTLi/lafl2y95ncPj0vFwVF6k6wJ4=
|
||||
github.com/multiformats/go-multiaddr v0.2.1/go.mod h1:s/Apk6IyxfvMjDafnhJgJ3/46z7tZ04iMk5wP4QMGGE=
|
||||
github.com/multiformats/go-multiaddr v0.2.2/go.mod h1:NtfXiOtHvghW9KojvtySjH5y0u0xW5UouOmQQrn6a3Y=
|
||||
github.com/multiformats/go-multiaddr v0.3.0/go.mod h1:dF9kph9wfJ+3VLAaeBqo9Of8x4fJxp6ggJGteB8HQTI=
|
||||
github.com/multiformats/go-multiaddr v0.3.1 h1:1bxa+W7j9wZKTZREySx1vPMs2TqrYWjVZ7zE6/XLG1I=
|
||||
github.com/multiformats/go-multiaddr v0.3.1/go.mod h1:uPbspcUPd5AfaP6ql3ujFY+QWzmBD8uLLL4bXW0XfGc=
|
||||
github.com/multiformats/go-multiaddr-dns v0.2.0 h1:YWJoIDwLePniH7OU5hBnDZV6SWuvJqJ0YtN6pLeH9zA=
|
||||
github.com/multiformats/go-multiaddr-dns v0.2.0/go.mod h1:TJ5pr5bBO7Y1B18djPuRsVkduhQH2YqYSbxWJzYGdK0=
|
||||
github.com/multiformats/go-multiaddr-fmt v0.1.0 h1:WLEFClPycPkp4fnIzoFoV9FVd49/eQsuaL3/CWe167E=
|
||||
github.com/multiformats/go-multiaddr-fmt v0.1.0/go.mod h1:hGtDIW4PU4BqJ50gW2quDuPVjyWNZxToGUh/HwTZYJo=
|
||||
github.com/multiformats/go-multiaddr-net v0.1.2/go.mod h1:QsWt3XK/3hwvNxZJp92iMQKME1qHfpYmyIjFVsSOY6Y=
|
||||
github.com/multiformats/go-multiaddr-net v0.1.3/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA=
|
||||
github.com/multiformats/go-multiaddr-net v0.1.4/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA=
|
||||
github.com/multiformats/go-multiaddr-net v0.1.5/go.mod h1:ilNnaM9HbmVFqsb/qcNysjCu4PVONlrBZpHIrw/qQuA=
|
||||
github.com/multiformats/go-multiaddr-net v0.2.0 h1:MSXRGN0mFymt6B1yo/6BPnIRpLPEnKgQNvVfCX5VDJk=
|
||||
github.com/multiformats/go-multiaddr-net v0.2.0/go.mod h1:gGdH3UXny6U3cKKYCvpXI5rnK7YaOIEOPVDI9tsJbEA=
|
||||
github.com/multiformats/go-multibase v0.0.3 h1:l/B6bJDQjvQ5G52jw4QGSYeOTZoAwIO77RblWplfIqk=
|
||||
github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPwIdYQD509ZjSb5y9Oc=
|
||||
github.com/multiformats/go-multihash v0.0.1/go.mod h1:w/5tugSrLEbWqlcgJabL3oHFKTwfvkofsjW2Qa1ct4U=
|
||||
github.com/multiformats/go-multihash v0.0.8/go.mod h1:YSLudS+Pi8NHE7o6tb3D8vrpKa63epEDmG8nTduyAew=
|
||||
github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
||||
github.com/multiformats/go-multihash v0.0.14 h1:QoBceQYQQtNUuf6s7wHxnE2c8bhbMqhfGzNI032se/I=
|
||||
github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
||||
github.com/multiformats/go-multistream v0.1.1/go.mod h1:KmHZ40hzVxiaiwlj3MEbYgK9JFk2/9UktWZAF54Du38=
|
||||
github.com/multiformats/go-multistream v0.2.0 h1:6AuNmQVKUkRnddw2YiDjt5Elit40SFxMJkVnhmETXtU=
|
||||
github.com/multiformats/go-multistream v0.2.0/go.mod h1:5GZPQZbkWOLOn3J2y4Y99vVW7vOfsAflxARk3x14o6k=
|
||||
github.com/multiformats/go-varint v0.0.1/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/multiformats/go-varint v0.0.2/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY=
|
||||
github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/mwitkow/go-conntrack v0.0.0-20161129095857-cc309e4a2223/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U=
|
||||
github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04/go.mod h1:5sN+Lt1CaY4wsPvgQH/jsuJi4XO2ssZbdsIizr4CVC8=
|
||||
github.com/nbio/st v0.0.0-20140626010706-e9e8d9816f32/go.mod h1:9wM+0iRr9ahx58uYLpLIr5fm8diHn0JbqRycJi6w0Ms=
|
||||
@@ -598,41 +331,29 @@ github.com/nrdcg/desec v0.5.0/go.mod h1:2ejvMazkav1VdDbv2HeQO7w+Ta1CGHqzQr27ZBYT
|
||||
github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ=
|
||||
github.com/nrdcg/goinwx v0.8.1/go.mod h1:tILVc10gieBp/5PMvbcYeXM6pVQ+c9jxDZnpaR1UW7c=
|
||||
github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw=
|
||||
github.com/nwaples/rardecode v1.0.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
|
||||
github.com/nwaples/rardecode v1.1.0/go.mod h1:5DzqNKiOdpKKBH87u8VlvAnPZMXcGRhxWkRpHbbfGS0=
|
||||
github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78=
|
||||
github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A=
|
||||
github.com/oklog/ulid v1.3.1/go.mod h1:CirwcVhetQ6Lv90oh/F+FBtV6XMibvdAFo93nm5qn4U=
|
||||
github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
|
||||
github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.7.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.10.1/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE=
|
||||
github.com/onsi/ginkgo v1.12.0/go.mod h1:oUhWkIvk5aDxtKvDDuw8gItl8pKl42LzjC9KZE0HfGg=
|
||||
github.com/onsi/ginkgo v1.12.1 h1:mFwc4LvZ0xpSvDZ3E+k8Yte0hLOMxXUlP+yXtJqkYfQ=
|
||||
github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk=
|
||||
github.com/onsi/gomega v1.4.3/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.5.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.7.0/go.mod h1:ex+gbHU/CVuBBDIJjb2X0qEXbFg53c61hWP/1CpauHY=
|
||||
github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY=
|
||||
github.com/onsi/gomega v1.9.0 h1:R1uwffexN6Pr340GtYRIdZmAiN4J+iw6WG4wog1DUXg=
|
||||
github.com/onsi/gomega v1.9.0/go.mod h1:Ho0h+IUsWyvy1OpqCwxlQ/21gkhVunqlU8fDGcoTdcA=
|
||||
github.com/opentracing/opentracing-go v1.0.2/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||
github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o=
|
||||
github.com/opentracing/opentracing-go v1.2.0 h1:uEJPy/1a5RIPAJ0Ov+OIO8OxWu77jEv+1B0VhjKrZUs=
|
||||
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
|
||||
github.com/openzipkin/zipkin-go v0.1.6/go.mod h1:QgAqvLzwWbR/WpD4A3cGpPtJrZXNIiJc5AZX7/PBEpw=
|
||||
github.com/oracle/oci-go-sdk v24.3.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888=
|
||||
github.com/otiai10/copy v1.14.0 h1:dCI/t1iTdYGtkvCuBG2BgR6KZa83PTclw4U5n2wAllU=
|
||||
github.com/otiai10/copy v1.14.0/go.mod h1:ECfuL02W+/FkTWZWgQqXPWZgW9oeKCSQ5qVfSc4qc4w=
|
||||
github.com/otiai10/mint v1.5.1 h1:XaPLeE+9vGbuyEHem1JNk3bYc7KKqyI/na0/mLd/Kks=
|
||||
github.com/otiai10/mint v1.5.1/go.mod h1:MJm72SBthJjz8qhefc4z1PYEieWmy8Bku7CjcAqyUSM=
|
||||
github.com/ovh/go-ovh v1.1.0/go.mod h1:AxitLZ5HBRPyUd+Zl60Ajaag+rNTdVXWIkzfrVuTXWA=
|
||||
github.com/oxtoacart/bpool v0.0.0-20190530202638-03653db5a59c/go.mod h1:X07ZCGwUbLaax7L0S3Tw4hpejzu63ZrrQiUe6W0hcy0=
|
||||
github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc=
|
||||
github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ=
|
||||
github.com/pelletier/go-toml v1.0.1-0.20170904195809-1d6b12b7cb29/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||
github.com/pelletier/go-toml v1.2.0/go.mod h1:5z9KED0ma1S8pY6P1sdut58dfprrGBbd/94hg7ilaic=
|
||||
github.com/pelletier/go-toml v1.8.1/go.mod h1:T2/BmBdy8dvIRq1a/8aqjN41wvWlN4lrapLU/GW4pbc=
|
||||
github.com/pierrec/lz4 v2.0.5+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
||||
github.com/pierrec/lz4 v2.5.2+incompatible/go.mod h1:pdkljMzZIN41W+lC3N2tnIh5sFi+IEE17M5jbnwPHcY=
|
||||
github.com/pkg/errors v0.8.0/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
|
||||
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
|
||||
github.com/pkg/sftp v1.10.1/go.mod h1:lYOWFsE0bwd1+KfKJaKeuokY15vzFx25BLbzYYoAxZI=
|
||||
github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw=
|
||||
@@ -662,11 +383,12 @@ github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDa
|
||||
github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU=
|
||||
github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA=
|
||||
github.com/rcrowley/go-metrics v0.0.0-20181016184325-3113b8401b8a/go.mod h1:bCqnVzQkZxMG4s8nGwiZ5l3QUCyqpo9Y+/ZMZ9VjZe4=
|
||||
github.com/rglonek/untar v0.0.1 h1:fI1QmP07eQvOgudrUP/NDUCob56JuAYlLDknxX8485A=
|
||||
github.com/rglonek/untar v0.0.1/go.mod h1:yq/FZcge2BBdmPQEShskttgtHZG+LOtiHZyXknL54a0=
|
||||
github.com/riobard/go-x25519 v0.0.0-20190716001027-10cc4d8d0b33/go.mod h1:BjmVxzAnkLeoEbqHEerI4eSw6ua+RaIB0S4jMV21RAs=
|
||||
github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg=
|
||||
github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4=
|
||||
github.com/rogpeppe/go-internal v1.6.2/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc=
|
||||
github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||
github.com/russross/blackfriday v2.0.0+incompatible h1:cBXrhZNUf9C+La9/YpS+UHpUT8YD6Td9ZMSU9APFcsk=
|
||||
github.com/russross/blackfriday v2.0.0+incompatible/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g=
|
||||
github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
|
||||
@@ -675,59 +397,50 @@ github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQD
|
||||
github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts=
|
||||
github.com/sacloud/libsacloud v1.36.2/go.mod h1:P7YAOVmnIn3DKHqCZcUKYUXmSwGBm3yS7IBEjKVSrjg=
|
||||
github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc=
|
||||
github.com/shurcooL/httpfs v0.0.0-20190707220628-8d4bc4ba7749/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0 h1:PdmoCO6wvbs+7yrJyMORt4/BmY5IYyJwS/kOiWx8mHo=
|
||||
github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc=
|
||||
github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo=
|
||||
github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE=
|
||||
github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
|
||||
github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
|
||||
github.com/skratchdot/open-golang v0.0.0-20160302144031-75fb7ed4208c/go.mod h1:sUM3LWHvSMaG192sy56D9F7CNvL7jUJVXoqM1QKLnog=
|
||||
github.com/smartystreets/assertions v0.0.0-20180927180507-b2de0cb4f26d/go.mod h1:OnSkiWE9lh6wB0YB77sQom3nweQdgAjqCqsofrRNTgc=
|
||||
github.com/smartystreets/goconvey v0.0.0-20190330032615-68dc04aab96a/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/smartystreets/goconvey v1.6.4/go.mod h1:syvi0/a8iFYH4r/RixwvyeAJjdLS9QV7WQ/tjFTllLA=
|
||||
github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM=
|
||||
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572 h1:RC6RW7j+1+HkWaX/Yh71Ee5ZHaHYt7ZP4sQgUrm6cDU=
|
||||
github.com/spacemonkeygo/spacelog v0.0.0-20180420211403-2296661a0572/go.mod h1:w0SWMsp6j9O/dk4/ZpIhL+3CkG8ofA2vuv7k+ltqUMc=
|
||||
github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
|
||||
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||
github.com/spf13/afero v0.0.0-20170901052352-ee1bd8ee15a1/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
|
||||
github.com/spf13/afero v1.1.2/go.mod h1:j4pytiNVoe2o6bmDsKpLACNPDBIoEAkihy7loJ1B0CQ=
|
||||
github.com/spf13/afero v1.4.1/go.mod h1:Ai8FlHk4v/PARR026UzYexafAt9roJ7LcLMAmO6Z93I=
|
||||
github.com/spf13/cast v1.1.0/go.mod h1:r2rcYCSwa1IExKTDiTfzaxqT2FNHs8hODu4LnUfgKEg=
|
||||
github.com/spf13/cast v1.3.0/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
||||
github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE=
|
||||
github.com/spf13/cobra v0.0.5/go.mod h1:3K3wKZymM7VvHMDS9+Akkh4K60UwM26emMESw8tLCHU=
|
||||
github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI=
|
||||
github.com/spf13/jwalterweatherman v0.0.0-20170901151539-12bd96e66386/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
|
||||
github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo=
|
||||
github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo=
|
||||
github.com/spf13/pflag v1.0.1-0.20170901120850-7aff26db30c1/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4=
|
||||
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
|
||||
github.com/spf13/viper v1.0.0/go.mod h1:A8kyI5cUJhb8N+3pkfONlcEcZbueH6nhAm0Fq7SrnBM=
|
||||
github.com/spf13/viper v1.3.2/go.mod h1:ZiWeW+zYFKm7srdB9IoDzzZXaJaI5eL9QjNiN/DMA2s=
|
||||
github.com/spf13/viper v1.7.0/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
|
||||
github.com/spf13/viper v1.7.1/go.mod h1:8WkrPz2fc9jxqZNCJI/76HCieCp4Q8HaLFoCha5qpdg=
|
||||
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
|
||||
github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
|
||||
github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw=
|
||||
github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo=
|
||||
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
|
||||
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
|
||||
github.com/stretchr/testify v1.4.0/go.mod h1:j7eGeouHqKxXV5pUuKE4zz7dFj8WfuZ+81PSLYec5m4=
|
||||
github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA=
|
||||
github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY=
|
||||
github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
|
||||
github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU=
|
||||
github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk=
|
||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||
github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw=
|
||||
github.com/syndtr/goleveldb v1.0.0/go.mod h1:ZVVdQEZoIme9iO1Ch2Jdy24qqXrMMOU6lpPAyBWyWuQ=
|
||||
github.com/throttled/throttled/v2 v2.7.1 h1:FnBysDX4Sok55bvfDMI0l2Y71V1vM2wi7O79OW7fNtw=
|
||||
github.com/throttled/throttled/v2 v2.7.1/go.mod h1:fuOeyK9fmnA+LQnsBbfT/mmPHjmkdogRBQxaD8YsgZ8=
|
||||
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
|
||||
github.com/transip/gotransip/v6 v6.6.0/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g=
|
||||
github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g=
|
||||
github.com/ugorji/go/codec v0.0.0-20181204163529-d75b2dcb6bc8/go.mod h1:VFNgLljTbGfSG7qAOspJ7OScBnGdDN/yBr0sguwnwf0=
|
||||
github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
|
||||
github.com/ulikunitz/xz v0.5.10/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||
github.com/urfave/cli v1.22.5 h1:lNq9sAHXK2qfdI8W+GRItjCEkI+2oR4d+MEHy1CKXoU=
|
||||
github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0=
|
||||
github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI=
|
||||
@@ -737,24 +450,15 @@ github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyC
|
||||
github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
|
||||
github.com/valyala/fasttemplate v1.1.0/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8=
|
||||
github.com/vultr/govultr/v2 v2.4.0/go.mod h1:U+dZLAmyGD62IGykgC9JYU/zQIOkIhf93nw6dJL/47M=
|
||||
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1/go.mod h1:8UvriyWtv5Q5EOgjHaSseUEdkQfvwFv1I/In/O2M9gc=
|
||||
github.com/whyrusleeping/go-logging v0.0.0-20170515211332-0457bb6b88fc/go.mod h1:bopw91TMyo8J3tvftk8xmU2kPmlrt4nScJQZU2hE5EM=
|
||||
github.com/whyrusleeping/mdns v0.0.0-20190826153040-b9b60ed33aa9/go.mod h1:j4l84WPFclQPj320J9gp0XwNKBb3U0zt5CBqjPp22G4=
|
||||
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7 h1:E9S12nwJwEOXe2d6gT6qxdvqMnNq+VnSsKPgm2ZZNds=
|
||||
github.com/whyrusleeping/multiaddr-filter v0.0.0-20160516205228-e903e4adabd7/go.mod h1:X2c0RVCI1eSUFI8eLcY3c0423ykwiUdxLJtkDvruhjI=
|
||||
github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU=
|
||||
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
|
||||
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
|
||||
github.com/xi2/xz v0.0.0-20171230120015-48954b6210f8/go.mod h1:HUYIGzjTL3rfEspMxjDjgmT5uz5wzYJKVo23qUhYTos=
|
||||
github.com/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU=
|
||||
github.com/xordataexchange/crypt v0.0.3-0.20170626215501-b2862e3d0a77/go.mod h1:aYKd//L2LvnjZzWKhF00oedf4jCCReLcmhLdhm1A27Q=
|
||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673 h1:bAn7/zixMGCfxrRTfdpNzjtPYqr8smhKouy9mxVdGPU=
|
||||
github.com/xrash/smetrics v0.0.0-20201216005158-039620a65673/go.mod h1:N3UwUGtsrSj3ccvlPHLoLsHnpR27oXr4ZE984MbSER8=
|
||||
github.com/ybbus/jsonrpc v2.1.2+incompatible/go.mod h1:XJrh1eMSzdIYFbM08flv0wp5G35eRniyeGut1z+LSiE=
|
||||
github.com/ybbus/jsonrpc/v2 v2.1.7/go.mod h1:rIuG1+ORoiqocf9xs/v+ecaAVeo3zcZHQgInyKFMeg0=
|
||||
github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
|
||||
github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY=
|
||||
github.com/zserge/lorca v0.1.9/go.mod h1:bVmnIbIRlOcoV285KIRSe4bUABKi7R7384Ycuum6e4A=
|
||||
gitlab.com/golang-commonmark/html v0.0.0-20191124015941-a22733972181 h1:K+bMSIx9A7mLES1rtG+qKduLIXq40DAzYHtb0XuCukA=
|
||||
gitlab.com/golang-commonmark/html v0.0.0-20191124015941-a22733972181/go.mod h1:dzYhVIwWCtzPAa4QP98wfB9+mzt33MSmM8wsKiMi2ow=
|
||||
gitlab.com/golang-commonmark/linkify v0.0.0-20191026162114-a0c2df6c8f82 h1:oYrL81N608MLZhma3ruL8qTM4xcpYECGut8KSxRY59g=
|
||||
@@ -774,48 +478,32 @@ go.opencensus.io v0.21.0/go.mod h1:mSImk1erAIZhrmZN+AvHh14ztQfjbGwt4TtuofqLduU=
|
||||
go.opencensus.io v0.22.0/go.mod h1:+kGneAE2xo2IficOXnaByMWTGM9T73dGwxeWcUqIpI8=
|
||||
go.opencensus.io v0.22.2/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.22.3/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.opencensus.io v0.22.4 h1:LYy1Hy3MJdrCdMwwzxA/dRok4ejH+RwNGbuoD9fCjto=
|
||||
go.opencensus.io v0.22.4/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw=
|
||||
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
|
||||
go.uber.org/atomic v1.6.0 h1:Ezj3JGmsOnG1MoRWQkPBsKLe9DwWD9QeXzTRzzldNVk=
|
||||
go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ=
|
||||
go.uber.org/goleak v1.0.0 h1:qsup4IcBdlmsnGfqyLl4Ntn3C2XCCuKAE7DwHpScyUo=
|
||||
go.uber.org/goleak v1.0.0/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A=
|
||||
go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0=
|
||||
go.uber.org/multierr v1.5.0 h1:KCa4XfM8CWFCpxXRGok+Q0SS/0XBhMDbHHGABQLvD2A=
|
||||
go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU=
|
||||
go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y=
|
||||
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee h1:0mgffUl7nfd+FpvXMVz4IDEaUSmT1ysygQC7qYo7sG4=
|
||||
go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA=
|
||||
go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q=
|
||||
go.uber.org/zap v1.14.1/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
|
||||
go.uber.org/zap v1.15.0 h1:ZZCA22JRF2gQE5FoNmhmrf7jeJJ2uhqDUNRYKm8dvmM=
|
||||
go.uber.org/zap v1.15.0/go.mod h1:Mb2vm2krFEG5DV0W9qcHBYFtp/Wku1cvYaqPsS/WYfc=
|
||||
golang.org/x/crypto v0.0.0-20170930174604-9419663f5a44/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20180621125126-a49355c7e3f8/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20180904163835-0709b304e793/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181029021203-45a5f77698d3/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20181203042331-505ab145d0a9/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190211182817-74369b46fc67/go.mod h1:6SG95UA2DQfeDnfUPMdvaQW0Q7yPrPDi9nlGo2tz2b4=
|
||||
golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
|
||||
golang.org/x/crypto v0.0.0-20190418165655-df01cb2cc480/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE=
|
||||
golang.org/x/crypto v0.0.0-20190510104115-cbcb75029529/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190605123033-f99c8df09eb5/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190611184440-5c40567a22f8/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190618222545-ea8f1a30c443/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190701094942-4def268fd1a4/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
|
||||
golang.org/x/crypto v0.0.0-20191112222119-e1110fd1c708/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200423211502-4bdfaf469ed5/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
|
||||
golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I=
|
||||
golang.org/x/crypto v0.0.0-20210322153248-0c34fe9e7dc2/go.mod h1:T9bdIzuCu7OtxOm1hfPfRQxPLYneinmdGuTeoZ9dtd4=
|
||||
golang.org/x/crypto v0.0.0-20210513164829-c07d793c2f9a/go.mod h1:P+XmwS30IXTQdn5tA2iutPOUgjI07+tq3H3K9MVA1s8=
|
||||
golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc=
|
||||
golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE=
|
||||
golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU=
|
||||
golang.org/x/crypto v0.11.0/go.mod h1:xgJhtzW8F9jGdVFWZESrid1U1bjeNy4zgy5cRr/CIio=
|
||||
golang.org/x/crypto v0.19.0/go.mod h1:Iy9bg/ha4yyC70EfRS8jz+B6ybOBKMaSxLj6P6oBDfU=
|
||||
golang.org/x/crypto v0.23.0 h1:dIJU/v2J8Mdglj/8rJ6UUOM3Zc9zLZxVZwwxMooUSAI=
|
||||
golang.org/x/crypto v0.23.0/go.mod h1:CKFgDieR+mRhux2Lsu27y0fO304Db0wZe70UKqHu0v8=
|
||||
golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA=
|
||||
golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8=
|
||||
@@ -837,7 +525,6 @@ golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHl
|
||||
golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc=
|
||||
golang.org/x/lint v0.0.0-20191125180803-fdd1cda4f05f/go.mod h1:5qLYkcX4OjUUV8bRuDixDT3tpyyb+LUpUlRWLxfhWrs=
|
||||
golang.org/x/lint v0.0.0-20200130185559-910be7a94367/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b h1:Wh+f8QHJXR411sJR8/vRBTZ7YapZaRvUcLFFJhusH0k=
|
||||
golang.org/x/lint v0.0.0-20200302205851-738671d3881b/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY=
|
||||
golang.org/x/mobile v0.0.0-20190312151609-d3739f865fa6/go.mod h1:z+o9i4GpDbdi3rU15maQ/Ox0txvL9dWGYEHz965HBQE=
|
||||
golang.org/x/mobile v0.0.0-20190719004257-d2bd2a29d028/go.mod h1:E/iHnbuqvinMTCcRqshq8CkpyQDoeVncDDYHnLhea+o=
|
||||
@@ -846,13 +533,11 @@ golang.org/x/mod v0.1.0/go.mod h1:0QHyrYULN0/3qlju5TqG8bIK38QM8yzMo5ekMj3DlcY=
|
||||
golang.org/x/mod v0.1.1-0.20191105210325-c90efee705ee/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.1.1-0.20191107180719-034126e5016b/go.mod h1:QqPTAvyqsEbceGzBzNggFXnrqF1CaUcvgkdR5Ot7KZg=
|
||||
golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4 h1:6zppjxzCulZykYSLyVDYbneBfbaBIQPYMevg0bEwv2s=
|
||||
golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4=
|
||||
golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs=
|
||||
golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181011144130-49bb7cea24b1/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181114220301-adae6a3d119a/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20181201002055-351d144fa1fc/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
@@ -860,7 +545,6 @@ golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73r
|
||||
golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190125091013-d26f9f9a57f3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190213061140-3a22650c66bd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190227160552-c95aed5357e7/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4=
|
||||
golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
golang.org/x/net v0.0.0-20190501004415-9ce7a6920f09/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
|
||||
@@ -878,31 +562,33 @@ golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLL
|
||||
golang.org/x/net v0.0.0-20200222125558-5a598a2470a0/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20200301022130-244492dfa37a/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
|
||||
golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20201110031124-69a78807bb2b/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
|
||||
golang.org/x/net v0.0.0-20210220033124-5f55cee0dc0d/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
|
||||
golang.org/x/net v0.0.0-20210505024714-0287a6fb4125/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
|
||||
golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c=
|
||||
golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
|
||||
golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws=
|
||||
golang.org/x/oauth2 v0.0.0-20170912212905-13449ad91cb2/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs=
|
||||
golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg=
|
||||
golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA=
|
||||
golang.org/x/net v0.21.0 h1:AQyQV4dYCvJ7vGmJyKki9+PBdyvhkSd8EIx/qb0AYv4=
|
||||
golang.org/x/net v0.21.0/go.mod h1:bIjVDfnllIU7BJ2DNgfnXvpSvtn8VRwhlsaeUTyUS44=
|
||||
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
|
||||
golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20191202225959-858c2ad4c8b6/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/oauth2 v0.0.0-20200107190931-bf48bf16ab8d/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw=
|
||||
golang.org/x/sync v0.0.0-20170517211232-f52d1811a629/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190227155943-e225da77a7e6/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20200317015054-43a5402ce75a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4 h1:uVc8UZUe6tr40fFVnUP5Oj+veunVezqYl9z7DYw9xzw=
|
||||
golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
|
||||
golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E=
|
||||
golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y=
|
||||
golang.org/x/sys v0.0.0-20180622082034-63fc586f45fe/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
@@ -912,26 +598,19 @@ golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5h
|
||||
golang.org/x/sys v0.0.0-20181107165924-66b7b1311ac8/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181116152217-5ac8a444bdc5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181122145206-62eef0e2fa9b/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20181205085412-a5c9d58dba9a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190219092855-153ac476189d/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190228124157-a34e9553db1e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
|
||||
golang.org/x/sys v0.0.0-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190405154228-4b34438f7a67/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190422165155-953cdadca894/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190502145724-3ef323f4f1fd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190507160741-ecd444e8653b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190526052359-791d8a0f4d09/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190606165138-5da285871e9c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190624142023-c5567b49c5d0/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190626221950-04f50cda93cb/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190726091711-fc99dfbffb4e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190801041406-cbf593c0f2f3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190904154756-749cb33beabd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191001151750-bb3f8db39f24/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
@@ -957,13 +636,24 @@ golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7w
|
||||
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
|
||||
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18=
|
||||
golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
|
||||
golang.org/x/sys v0.17.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y=
|
||||
golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
|
||||
golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw=
|
||||
golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo=
|
||||
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8=
|
||||
golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ=
|
||||
golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k=
|
||||
golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo=
|
||||
golang.org/x/term v0.10.0/go.mod h1:lpqdcUyK/oCiQxvxVrppt5ggO2KCZ5QblwqPnfZ6d5o=
|
||||
golang.org/x/term v0.17.0/go.mod h1:lLRBjIVuehSbZlaOtGMbcMncT+aqLLLmKrsjNrUguwk=
|
||||
golang.org/x/term v0.20.0/go.mod h1:8UkIAJTvZgivsXaD6/pH6U9ecQzZ45awqEOzuCvwpFY=
|
||||
golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
|
||||
@@ -972,9 +662,13 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
|
||||
golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ=
|
||||
golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k=
|
||||
golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/time v0.0.0-20170424234030-8be79e1e0910/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8=
|
||||
golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8=
|
||||
golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
|
||||
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk=
|
||||
golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
|
||||
golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ=
|
||||
@@ -983,7 +677,6 @@ golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxb
|
||||
golang.org/x/tools v0.0.0-20180221164845-07fd8470d635/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20180828015842-6cd1fcedba52/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20181030221726-6c7e314b6563/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
|
||||
golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY=
|
||||
golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs=
|
||||
@@ -999,9 +692,6 @@ golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgw
|
||||
golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20190911174233-4f2ddba30aff/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191012152004-8de300cfc20a/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191112195655-aa38f8e97acc/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191113191852-77e3bb0ad9e7/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
golang.org/x/tools v0.0.0-20191115202509-3a792d9c32b2/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
|
||||
@@ -1020,15 +710,12 @@ golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapK
|
||||
golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
|
||||
golang.org/x/tools v0.0.0-20200304193943-95d2e580d8eb/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw=
|
||||
golang.org/x/tools v0.0.0-20200410194907-79a7a3126eef/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
|
||||
golang.org/x/tools v0.0.0-20201125231158-b5590deeca9b/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
|
||||
golang.org/x/tools v0.1.12 h1:VveCTK38A2rkS8ZqFY25HIDFscX5X9OoEhJd3quQmXU=
|
||||
golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc=
|
||||
golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU=
|
||||
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1 h1:go1bK/D/BFZV2I8cIQd1NKEZ+0owSTG1fDTci4IqFcE=
|
||||
golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
|
||||
google.golang.org/api v0.0.0-20170921000349-586095a6e407/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0=
|
||||
google.golang.org/api v0.3.1/go.mod h1:6wY9I6uQWHQ8EM57III9mq/AjF+i8G65rmVagqKMtkk=
|
||||
google.golang.org/api v0.4.0/go.mod h1:8k5glujaEP+g9n7WNsDg8QP6cUVNI86fCNMcbazEtwE=
|
||||
google.golang.org/api v0.7.0/go.mod h1:WtwebWUNSVBH/HAw79HIFXZNqEvBhG+Ra+ax0hx3E3M=
|
||||
@@ -1045,7 +732,6 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7
|
||||
google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4=
|
||||
google.golang.org/appengine v1.6.1/go.mod h1:i06prIuMbXzDqacNJfV5OdTW448YApPu5ww/cMBSeb0=
|
||||
google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc=
|
||||
google.golang.org/genproto v0.0.0-20170918111702-1e559d0a00ee/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc=
|
||||
google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
google.golang.org/genproto v0.0.0-20190418145605-e7d98fc518a7/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE=
|
||||
@@ -1064,20 +750,15 @@ google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4
|
||||
google.golang.org/genproto v0.0.0-20200212174721-66ed5ce911ce/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200224152610-e50cd9704f63/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c=
|
||||
google.golang.org/grpc v1.2.1-0.20170921194603-d4b75ebd4f9f/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw=
|
||||
google.golang.org/grpc v1.17.0/go.mod h1:6QZJwpn2B+Zp71q/5VxRsJ6NXXVCE5NRUHRo+f3cWCs=
|
||||
google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.19.1/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c=
|
||||
google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38=
|
||||
google.golang.org/grpc v1.21.1/go.mod h1:oYelfM1adQP15Ek0mdvEgi9Df8B9CZIaU1084ijfRaM=
|
||||
google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyacEbxg=
|
||||
google.golang.org/grpc v1.25.1/go.mod h1:c3i+UQWmh7LiEpx4sFZnkU36qjEYZ0imhYfXVyQciAY=
|
||||
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||
google.golang.org/grpc v1.28.1/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60=
|
||||
google.golang.org/grpc v1.31.1 h1:SfXqXS5hkufcdZ/mHtYCh53P2b+92WQq/DZcKLgsFRs=
|
||||
google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak=
|
||||
google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8=
|
||||
google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0=
|
||||
google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM=
|
||||
@@ -1087,8 +768,8 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2
|
||||
gopkg.in/alecthomas/kingpin.v2 v2.2.6/go.mod h1:FMv+mEhP44yOT+4EoQTLFTRgOQ1FBLkstjWtayDeSgw=
|
||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15 h1:YR8cESwS4TdDjEe65xsg0ogRM/Nc3DYOhEAlW+xobZo=
|
||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
|
||||
gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI=
|
||||
gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys=
|
||||
gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE=
|
||||
@@ -1101,7 +782,6 @@ gopkg.in/ns1/ns1-go.v2 v2.4.4/go.mod h1:GMnKY+ZuoJ+lVLL+78uSTjwTz2jMazq6AfGKQOYh
|
||||
gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo=
|
||||
gopkg.in/square/go-jose.v2 v2.5.1 h1:7odma5RETjNHWJnR32wx8t+Io4djHE1PqxCFx3iiZ2w=
|
||||
gopkg.in/square/go-jose.v2 v2.5.1/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
|
||||
gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
|
||||
gopkg.in/yaml.v2 v2.0.0-20170812160011-eb3733d160e7/go.mod h1:JAlM8MvJe8wmxCU4Bli9HhUf9+ttbYbLASfIpnQbh74=
|
||||
gopkg.in/yaml.v2 v2.2.1/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
@@ -1111,7 +791,6 @@ gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.7/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.2.8/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI=
|
||||
gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY=
|
||||
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
|
||||
gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
|
||||
@@ -1124,7 +803,6 @@ honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWh
|
||||
honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4=
|
||||
honnef.co/go/tools v0.0.1-2019.2.3/go.mod h1:a3bituU0lyd329TUQxRnasdCoJDkEUEAqEt0JzvZhAg=
|
||||
honnef.co/go/tools v0.0.1-2020.1.3/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k=
|
||||
honnef.co/go/tools v0.0.1-2020.1.6 h1:W18jzjh8mfPez+AwGLxmOImucz/IFjpNlrKVnaj2YVc=
|
||||
honnef.co/go/tools v0.0.1-2020.1.6/go.mod h1:pyyisuGw24ruLjrr1ddx39WE0y9OooInRzEYLhQB2YY=
|
||||
rsc.io/binaryregexp v0.2.0/go.mod h1:qTv7/COck+e2FymRvadv62gMdZztPaShugOCi3I+8D8=
|
||||
rsc.io/quote/v3 v3.1.0/go.mod h1:yEA65RcK8LyAZtP9Kv3t0HmxON59tX3rD+tICJqUlj0=
|
||||
|
44
history.txt
44
history.txt
@@ -1,44 +0,0 @@
|
||||
2019-11-16
|
||||
* allow multiple reseed transports from the same application
|
||||
* incorporate libp2p(ipfs) listener from RTradeLtd/i2p-tools-1 master
|
||||
* in-network(I2P) reseeds in case there's a point to that.
|
||||
* self-supervising reseed service, if it crashes it will restart itself
|
||||
* add an initscript
|
||||
|
||||
2019-06-27
|
||||
* automatically configuring Tor Onionv3 Server
|
||||
|
||||
2019-04-21
|
||||
* app.Version = "0.1.7"
|
||||
* enabling TLS 1.3 *only*
|
||||
|
||||
2016-12-21
|
||||
* deactivating previous random time delta, makes only sense when patching ri too
|
||||
* app.Version = "0.1.6"
|
||||
|
||||
2016-10-09
|
||||
* seed the math random generator with time.Now().UnixNano()
|
||||
* added 6h+6h random time delta at su3-age to increase anonymity
|
||||
* app.Version = "0.1.5"
|
||||
|
||||
|
||||
2016-05-15
|
||||
* README.md updated
|
||||
* allowed routerInfos age increased from 96 to 192 hours
|
||||
* app.Version = "0.1.4"
|
||||
|
||||
2016-03-05
|
||||
* app.Version = "0.1.3"
|
||||
* CRL creation added
|
||||
|
||||
2016-01-31
|
||||
* allowed TLS ciphers updated (hardened)
|
||||
* TLS certificate generation: RSA 4096 --> ECDSAWithSHA512 384bit secp384r1
|
||||
* ECDHE handshake: only CurveP384 + CurveP521, default CurveP256 removed
|
||||
* TLS certificate valid: 2y --> 5y
|
||||
* throttled.PerDay(4) --> PerHour(4), to enable limited testing
|
||||
* su3 RebuildInterval: 24h --> 90h, higher anonymity for the running i2p-router
|
||||
* numRi per su3 file: 75 --> 77
|
||||
|
||||
2016-01
|
||||
* fork from https://i2pgit.org/idk/reseed-tools
|
5
main.go
5
main.go
@@ -6,6 +6,7 @@ import (
|
||||
|
||||
"github.com/urfave/cli/v3"
|
||||
"i2pgit.org/idk/reseed-tools/cmd"
|
||||
"i2pgit.org/idk/reseed-tools/reseed"
|
||||
)
|
||||
|
||||
func main() {
|
||||
@@ -19,7 +20,7 @@ func main() {
|
||||
|
||||
app := cli.NewApp()
|
||||
app.Name = "reseed-tools"
|
||||
app.Version = "0.2.33"
|
||||
app.Version = reseed.Version
|
||||
app.Usage = "I2P tools and reseed server"
|
||||
auth := &cli.Author{
|
||||
Name: "eyedeekay",
|
||||
@@ -31,6 +32,8 @@ func main() {
|
||||
cmd.NewReseedCommand(),
|
||||
cmd.NewSu3VerifyCommand(),
|
||||
cmd.NewKeygenCommand(),
|
||||
cmd.NewShareCommand(),
|
||||
cmd.NewVersionCommand(),
|
||||
// cmd.NewSu3VerifyPublicCommand(),
|
||||
}
|
||||
|
||||
|
@@ -33,11 +33,14 @@ var SupportedLanguages = []language.Tag{
|
||||
language.Korean,
|
||||
language.Bengali,
|
||||
}
|
||||
var CachedLanguagePages = map[string]string{}
|
||||
var CachedDataPages = map[string][]byte{}
|
||||
|
||||
var (
|
||||
CachedLanguagePages = map[string]string{}
|
||||
CachedDataPages = map[string][]byte{}
|
||||
)
|
||||
|
||||
func StableContentPath() (string, error) {
|
||||
var BaseContentPath, ContentPathError = ContentPath()
|
||||
BaseContentPath, ContentPathError := ContentPath()
|
||||
if _, err := os.Stat(BaseContentPath); os.IsNotExist(err) {
|
||||
if err := unembed.Unembed(f, BaseContentPath); err != nil {
|
||||
return "", err
|
||||
@@ -59,6 +62,7 @@ var header = []byte(`<!DOCTYPE html>
|
||||
<script src="script.js"></script>
|
||||
</head>
|
||||
<body>`)
|
||||
|
||||
var footer = []byte(` </body>
|
||||
</html>`)
|
||||
|
||||
@@ -69,7 +73,7 @@ func ContentPath() (string, error) {
|
||||
if err != nil {
|
||||
return "", err
|
||||
}
|
||||
//exPath := filepath.Dir(ex)
|
||||
// exPath := filepath.Dir(ex)
|
||||
if _, err := os.Stat(filepath.Join(exPath, "content")); err != nil {
|
||||
return "", err
|
||||
}
|
||||
|
@@ -24,7 +24,7 @@ func Ping(urlInput string) (bool, error) {
|
||||
if err != nil {
|
||||
return false, err
|
||||
}
|
||||
req.Header.Set("User-Agent", i2pUserAgent)
|
||||
req.Header.Set("User-Agent", I2pUserAgent)
|
||||
|
||||
resp, err := http.DefaultClient.Do(req)
|
||||
if err != nil {
|
||||
@@ -60,11 +60,11 @@ func PingWriteContent(urlInput string) error {
|
||||
result, err := Ping(urlInput)
|
||||
if result {
|
||||
log.Printf("Ping: %s OK", urlInput)
|
||||
err := ioutil.WriteFile(path, []byte("Alive: Status OK"), 0644)
|
||||
err := ioutil.WriteFile(path, []byte("Alive: Status OK"), 0o644)
|
||||
return err
|
||||
} else {
|
||||
log.Printf("Ping: %s %s", urlInput, err)
|
||||
err := ioutil.WriteFile(path, []byte("Dead: "+err.Error()), 0644)
|
||||
err := ioutil.WriteFile(path, []byte("Dead: "+err.Error()), 0o644)
|
||||
return err
|
||||
}
|
||||
}
|
||||
|
@@ -18,15 +18,12 @@ import (
|
||||
"github.com/eyedeekay/sam3"
|
||||
"github.com/gorilla/handlers"
|
||||
"github.com/justinas/alice"
|
||||
"github.com/libp2p/go-libp2p-core/host"
|
||||
gostream "github.com/libp2p/go-libp2p-gostream"
|
||||
p2phttp "github.com/libp2p/go-libp2p-http"
|
||||
throttled "github.com/throttled/throttled/v2"
|
||||
"github.com/throttled/throttled/v2/store"
|
||||
)
|
||||
|
||||
const (
|
||||
i2pUserAgent = "Wget/1.11.4"
|
||||
I2pUserAgent = "Wget/1.11.4"
|
||||
)
|
||||
|
||||
type Server struct {
|
||||
@@ -117,7 +114,7 @@ func SecureRandomAlphaString() string {
|
||||
|
||||
// SecureRandomBytes returns the requested number of bytes using crypto/rand
|
||||
func SecureRandomBytes(length int) []byte {
|
||||
var randomBytes = make([]byte, length)
|
||||
randomBytes := make([]byte, length)
|
||||
_, err := rand.Read(randomBytes)
|
||||
if err != nil {
|
||||
log.Fatal("Unable to generate random bytes")
|
||||
@@ -326,15 +323,6 @@ func (srv *Server) ListenAndServeI2P(samaddr string, I2PKeys i2pkeys.I2PKeys) er
|
||||
return srv.Serve(srv.I2PListener)
|
||||
}
|
||||
|
||||
// ListenAndServeLibP2P is used to serve the reseed server over libp2p http connections
|
||||
func (srv *Server) ListenAndServeLibP2P(hst host.Host) error {
|
||||
listener, err := gostream.Listen(hst, p2phttp.DefaultP2PProtocol)
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
return srv.Serve(listener)
|
||||
}
|
||||
|
||||
func (srv *Server) reseedHandler(w http.ResponseWriter, r *http.Request) {
|
||||
var peer Peer
|
||||
if ip, _, err := net.SplitHostPort(r.RemoteAddr); err == nil {
|
||||
@@ -359,6 +347,7 @@ func (srv *Server) reseedHandler(w http.ResponseWriter, r *http.Request) {
|
||||
func disableKeepAliveMiddleware(next http.Handler) http.Handler {
|
||||
fn := func(w http.ResponseWriter, r *http.Request) {
|
||||
w.Header().Set("Connection", "close")
|
||||
w.Header().Set("Version", Version)
|
||||
next.ServeHTTP(w, r)
|
||||
}
|
||||
return http.HandlerFunc(fn)
|
||||
@@ -373,7 +362,7 @@ func (srv *Server) browsingMiddleware(next http.Handler) http.Handler {
|
||||
if srv.CheckAcceptable(r.FormValue("onetime")) {
|
||||
srv.reseedHandler(w, r)
|
||||
}
|
||||
if i2pUserAgent != r.UserAgent() {
|
||||
if I2pUserAgent != r.UserAgent() {
|
||||
srv.HandleARealBrowser(w, r)
|
||||
return
|
||||
}
|
||||
@@ -384,7 +373,7 @@ func (srv *Server) browsingMiddleware(next http.Handler) http.Handler {
|
||||
|
||||
func verifyMiddleware(next http.Handler) http.Handler {
|
||||
fn := func(w http.ResponseWriter, r *http.Request) {
|
||||
if i2pUserAgent != r.UserAgent() {
|
||||
if I2pUserAgent != r.UserAgent() {
|
||||
http.Error(w, "403 Forbidden", http.StatusForbidden)
|
||||
return
|
||||
}
|
||||
|
@@ -15,6 +15,7 @@ import (
|
||||
"sync"
|
||||
"time"
|
||||
|
||||
"github.com/go-i2p/go-i2p/lib/common/router_info"
|
||||
"i2pgit.org/idk/reseed-tools/su3"
|
||||
)
|
||||
|
||||
@@ -22,6 +23,7 @@ type routerInfo struct {
|
||||
Name string
|
||||
ModTime time.Time
|
||||
Data []byte
|
||||
RI *router_info.RouterInfo
|
||||
}
|
||||
|
||||
type Peer string
|
||||
@@ -264,12 +266,25 @@ func (db *LocalNetDbImpl) RouterInfos() (routerInfos []routerInfo, err error) {
|
||||
if age.Hours() > 192 {
|
||||
continue
|
||||
}
|
||||
riStruct, remainder, err := router_info.NewRouterInfo(riBytes)
|
||||
if err != nil {
|
||||
log.Println("RouterInfo Parsing Error:", err)
|
||||
log.Println("Leftover Data(for debugging):", remainder)
|
||||
riStruct = nil
|
||||
continue
|
||||
}
|
||||
|
||||
routerInfos = append(routerInfos, routerInfo{
|
||||
Name: file.Name(),
|
||||
ModTime: file.ModTime(),
|
||||
Data: riBytes,
|
||||
})
|
||||
// skip crappy routerInfos
|
||||
if riStruct.Reachable() && riStruct.UnCongested() && riStruct.GoodVersion() {
|
||||
routerInfos = append(routerInfos, routerInfo{
|
||||
Name: file.Name(),
|
||||
ModTime: file.ModTime(),
|
||||
Data: riBytes,
|
||||
RI: riStruct,
|
||||
})
|
||||
} else {
|
||||
log.Println("Skipped less-useful RouterInfo Capabilities:", riStruct.RouterCapabilities(), riStruct.RouterVersion())
|
||||
}
|
||||
}
|
||||
|
||||
return
|
||||
|
3
reseed/version.go
Normal file
3
reseed/version.go
Normal file
@@ -0,0 +1,3 @@
|
||||
package reseed
|
||||
|
||||
const Version = "0.3.4"
|
@@ -105,7 +105,7 @@ func NewSigningCertificate(signerID string, privateKey *rsa.PrivateKey) ([]byte,
|
||||
publicKey := &privateKey.PublicKey
|
||||
|
||||
// create a self-signed certificate. template = parent
|
||||
var parent = template
|
||||
parent := template
|
||||
cert, err := x509.CreateCertificate(rand.Reader, template, parent, publicKey, privateKey)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
|
Reference in New Issue
Block a user