From b2051be2e21a6031ba9e0c27b4f15dfe0547946f Mon Sep 17 00:00:00 2001 From: misakano7545 Date: Wed, 27 Apr 2022 12:23:11 +0800 Subject: [PATCH] Init files --- .github/build/friendly-filenames.json | 33 + .github/dependabot.yml | 11 + .github/workflows/codeql-analysis.yml | 67 + .github/workflows/docker.yml | 40 + .github/workflows/release.yml | 187 + .gitignore | 15 + Dockerfile | 17 + LICENSE | 373 + README.md | 86 + api/api.go | 17 + api/apimodel.go | 92 + api/pmpanel/model.go | 72 + api/pmpanel/pmpanel.go | 502 + api/pmpanel/pmpanel_test.go | 161 + api/proxypanel/model.go | 111 + api/proxypanel/proxypanel.go | 606 ++ api/proxypanel/proypanel_test.go | 165 + api/sspanel/model.go | 105 + api/sspanel/sspanel.go | 798 ++ api/sspanel/sspanel_test.go | 159 + api/v2board/model.go | 7 + api/v2board/v2board.go | 419 + api/v2board/v2board_test.go | 101 + app/app.go | 2 + app/mydispatcher/config.pb.go | 204 + app/mydispatcher/config.proto | 15 + app/mydispatcher/default.go | 491 + app/mydispatcher/dispatcher.go | 4 + app/mydispatcher/errors.generated.go | 9 + app/mydispatcher/fakednssniffer.go | 117 + app/mydispatcher/sniffer.go | 132 + app/mydispatcher/stats.go | 25 + app/mydispatcher/stats_test.go | 44 + common/common.go | 2 + common/legocmd/cmd/account.go | 33 + common/legocmd/cmd/accounts_storage.go | 243 + common/legocmd/cmd/certs_storage.go | 205 + common/legocmd/cmd/cmd.go | 14 + common/legocmd/cmd/cmd_before.go | 23 + common/legocmd/cmd/cmd_dnshelp.go | 73 + common/legocmd/cmd/cmd_list.go | 136 + common/legocmd/cmd/cmd_renew.go | 225 + common/legocmd/cmd/cmd_renew_test.go | 118 + common/legocmd/cmd/cmd_revoke.go | 62 + common/legocmd/cmd/cmd_run.go | 186 + common/legocmd/cmd/flags.go | 120 + common/legocmd/cmd/hook.go | 47 + common/legocmd/cmd/setup.go | 129 + common/legocmd/cmd/setup_challenges.go | 126 + common/legocmd/cmd/zz_gen_cmd_dnshelp.go | 1884 ++++ common/legocmd/lego.go | 189 + common/legocmd/lego_test.go | 82 + common/legocmd/log/log.go | 60 + common/limiter/errors.go | 9 + common/limiter/limiter.go | 180 + common/limiter/rate.go | 31 + common/rule/errors.go | 9 + common/rule/rule.go | 82 + common/serverstatus/serverstatus.go | 41 + go.mod | 169 + go.sum | 1486 +++ main/config.yml.example | 80 + main/custom_inbound.json | 19 + main/custom_outbound.json | 17 + main/distro/all/all.go | 70 + main/dns.json | 8 + main/geoip.dat | Bin 0 -> 5213751 bytes main/geosite.dat | 11255 ++++++++++++++++++++ main/main.go | 103 + main/route.json | 26 + main/rulelist | 3 + panel/config.go | 36 + panel/defaultConfig.go | 30 + panel/panel.go | 235 + service/controller/config.go | 36 + service/controller/control.go | 164 + service/controller/controller.go | 467 + service/controller/controller_test.go | 79 + service/controller/inboundbuilder.go | 283 + service/controller/inboundbuilder_test.go | 100 + service/controller/outboundbuilder.go | 48 + service/controller/userbuilder.go | 126 + service/service.go | 16 + 83 files changed, 24352 insertions(+) create mode 100644 .github/build/friendly-filenames.json create mode 100644 .github/dependabot.yml create mode 100644 .github/workflows/codeql-analysis.yml create mode 100644 .github/workflows/docker.yml create mode 100644 .github/workflows/release.yml create mode 100644 .gitignore create mode 100644 Dockerfile create mode 100644 LICENSE create mode 100644 README.md create mode 100644 api/api.go create mode 100644 api/apimodel.go create mode 100644 api/pmpanel/model.go create mode 100644 api/pmpanel/pmpanel.go create mode 100644 api/pmpanel/pmpanel_test.go create mode 100644 api/proxypanel/model.go create mode 100644 api/proxypanel/proxypanel.go create mode 100644 api/proxypanel/proypanel_test.go create mode 100644 api/sspanel/model.go create mode 100644 api/sspanel/sspanel.go create mode 100644 api/sspanel/sspanel_test.go create mode 100644 api/v2board/model.go create mode 100644 api/v2board/v2board.go create mode 100644 api/v2board/v2board_test.go create mode 100644 app/app.go create mode 100644 app/mydispatcher/config.pb.go create mode 100644 app/mydispatcher/config.proto create mode 100644 app/mydispatcher/default.go create mode 100644 app/mydispatcher/dispatcher.go create mode 100644 app/mydispatcher/errors.generated.go create mode 100644 app/mydispatcher/fakednssniffer.go create mode 100644 app/mydispatcher/sniffer.go create mode 100644 app/mydispatcher/stats.go create mode 100644 app/mydispatcher/stats_test.go create mode 100644 common/common.go create mode 100644 common/legocmd/cmd/account.go create mode 100644 common/legocmd/cmd/accounts_storage.go create mode 100644 common/legocmd/cmd/certs_storage.go create mode 100644 common/legocmd/cmd/cmd.go create mode 100644 common/legocmd/cmd/cmd_before.go create mode 100644 common/legocmd/cmd/cmd_dnshelp.go create mode 100644 common/legocmd/cmd/cmd_list.go create mode 100644 common/legocmd/cmd/cmd_renew.go create mode 100644 common/legocmd/cmd/cmd_renew_test.go create mode 100644 common/legocmd/cmd/cmd_revoke.go create mode 100644 common/legocmd/cmd/cmd_run.go create mode 100644 common/legocmd/cmd/flags.go create mode 100644 common/legocmd/cmd/hook.go create mode 100644 common/legocmd/cmd/setup.go create mode 100644 common/legocmd/cmd/setup_challenges.go create mode 100644 common/legocmd/cmd/zz_gen_cmd_dnshelp.go create mode 100644 common/legocmd/lego.go create mode 100644 common/legocmd/lego_test.go create mode 100644 common/legocmd/log/log.go create mode 100644 common/limiter/errors.go create mode 100644 common/limiter/limiter.go create mode 100644 common/limiter/rate.go create mode 100644 common/rule/errors.go create mode 100644 common/rule/rule.go create mode 100644 common/serverstatus/serverstatus.go create mode 100644 go.mod create mode 100644 go.sum create mode 100644 main/config.yml.example create mode 100644 main/custom_inbound.json create mode 100644 main/custom_outbound.json create mode 100644 main/distro/all/all.go create mode 100644 main/dns.json create mode 100644 main/geoip.dat create mode 100644 main/geosite.dat create mode 100644 main/main.go create mode 100644 main/route.json create mode 100644 main/rulelist create mode 100644 panel/config.go create mode 100644 panel/defaultConfig.go create mode 100644 panel/panel.go create mode 100644 service/controller/config.go create mode 100644 service/controller/control.go create mode 100644 service/controller/controller.go create mode 100644 service/controller/controller_test.go create mode 100644 service/controller/inboundbuilder.go create mode 100644 service/controller/inboundbuilder_test.go create mode 100644 service/controller/outboundbuilder.go create mode 100644 service/controller/userbuilder.go create mode 100644 service/service.go diff --git a/.github/build/friendly-filenames.json b/.github/build/friendly-filenames.json new file mode 100644 index 0000000..d885565 --- /dev/null +++ b/.github/build/friendly-filenames.json @@ -0,0 +1,33 @@ +{ + "android-arm64": { "friendlyName": "android-arm64-v8a" }, + "darwin-amd64": { "friendlyName": "macos-64" }, + "darwin-arm64": { "friendlyName": "macos-arm64-v8a" }, + "dragonfly-amd64": { "friendlyName": "dragonfly-64" }, + "freebsd-386": { "friendlyName": "freebsd-32" }, + "freebsd-amd64": { "friendlyName": "freebsd-64" }, + "freebsd-arm64": { "friendlyName": "freebsd-arm64-v8a" }, + "freebsd-arm7": { "friendlyName": "freebsd-arm32-v7a" }, + "linux-386": { "friendlyName": "linux-32" }, + "linux-amd64": { "friendlyName": "linux-64" }, + "linux-arm5": { "friendlyName": "linux-arm32-v5" }, + "linux-arm64": { "friendlyName": "linux-arm64-v8a" }, + "linux-arm6": { "friendlyName": "linux-arm32-v6" }, + "linux-arm7": { "friendlyName": "linux-arm32-v7a" }, + "linux-mips64le": { "friendlyName": "linux-mips64le" }, + "linux-mips64": { "friendlyName": "linux-mips64" }, + "linux-mipslesoftfloat": { "friendlyName": "linux-mips32le-softfloat" }, + "linux-mipsle": { "friendlyName": "linux-mips32le" }, + "linux-mipssoftfloat": { "friendlyName": "linux-mips32-softfloat" }, + "linux-mips": { "friendlyName": "linux-mips32" }, + "linux-ppc64le": { "friendlyName": "linux-ppc64le" }, + "linux-ppc64": { "friendlyName": "linux-ppc64" }, + "linux-riscv64": { "friendlyName": "linux-riscv64" }, + "linux-s390x": { "friendlyName": "linux-s390x" }, + "openbsd-386": { "friendlyName": "openbsd-32" }, + "openbsd-amd64": { "friendlyName": "openbsd-64" }, + "openbsd-arm64": { "friendlyName": "openbsd-arm64-v8a" }, + "openbsd-arm7": { "friendlyName": "openbsd-arm32-v7a" }, + "windows-386": { "friendlyName": "windows-32" }, + "windows-amd64": { "friendlyName": "windows-64" }, + "windows-arm7": { "friendlyName": "windows-arm32-v7a" } + } \ No newline at end of file diff --git a/.github/dependabot.yml b/.github/dependabot.yml new file mode 100644 index 0000000..b444581 --- /dev/null +++ b/.github/dependabot.yml @@ -0,0 +1,11 @@ +# To get started with Dependabot version updates, you'll need to specify which +# package ecosystems to update and where the package manifests are located. +# Please see the documentation for all configuration options: +# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates + +version: 2 +updates: + - package-ecosystem: "gomod" # See documentation for possible values + directory: "/" # Location of package manifests + schedule: + interval: "daily" diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml new file mode 100644 index 0000000..3decb6b --- /dev/null +++ b/.github/workflows/codeql-analysis.yml @@ -0,0 +1,67 @@ +# For most projects, this workflow file will not need changing; you simply need +# to commit it to your repository. +# +# You may wish to alter this file to override the set of languages analyzed, +# or to provide custom queries or build logic. +# +# ******** NOTE ******** +# We have attempted to detect the languages in your repository. Please check +# the `language` matrix defined below to confirm you have the correct set of +# supported CodeQL languages. +# +name: "CodeQL" + +on: + push: + branches: [ master ] + pull_request: + # The branches below must be a subset of the branches above + branches: [ master ] + schedule: + - cron: '43 22 * * 3' + +jobs: + analyze: + name: Analyze + runs-on: ubuntu-latest + + strategy: + fail-fast: false + matrix: + language: [ 'go' ] + # CodeQL supports [ 'cpp', 'csharp', 'go', 'java', 'javascript', 'python' ] + # Learn more: + # https://docs.github.com/en/free-pro-team@latest/github/finding-security-vulnerabilities-and-errors-in-your-code/configuring-code-scanning#changing-the-languages-that-are-analyzed + + steps: + - name: Checkout repository + uses: actions/checkout@v2 + + # Initializes the CodeQL tools for scanning. + - name: Initialize CodeQL + uses: github/codeql-action/init@v1 + with: + languages: ${{ matrix.language }} + # If you wish to specify custom queries, you can do so here or in a config file. + # By default, queries listed here will override any specified in a config file. + # Prefix the list here with "+" to use these queries and those in the config file. + # queries: ./path/to/local/query, your-org/your-repo/queries@main + + # Autobuild attempts to build any compiled languages (C/C++, C#, or Java). + # If this step fails, then you should remove it and run the build manually (see below) + - name: Autobuild + uses: github/codeql-action/autobuild@v1 + + # ℹ️ Command-line programs to run using the OS shell. + # 📚 https://git.io/JvXDl + + # ✏️ If the Autobuild fails above, remove it and uncomment the following three lines + # and modify them (or add more) to build your code if your project + # uses a compiled language + + #- run: | + # make bootstrap + # make release + + - name: Perform CodeQL Analysis + uses: github/codeql-action/analyze@v1 diff --git a/.github/workflows/docker.yml b/.github/workflows/docker.yml new file mode 100644 index 0000000..b1ae3c2 --- /dev/null +++ b/.github/workflows/docker.yml @@ -0,0 +1,40 @@ +name: Publish Docker image +on: + workflow_dispatch: + push: + tags: + - 'v*' +jobs: + push_to_registry: + name: Push Docker image to Docker Hub + runs-on: ubuntu-latest + steps: + - name: Check out the repo + uses: actions/checkout@v2 + - + name: Docker meta + id: docker_meta + uses: crazy-max/ghaction-docker-meta@v1 + with: + images: crackair/xrayr + tag-semver: | + {{version}} + {{major}}.{{minor}} + - + name: Set up Docker Buildx + uses: docker/setup-buildx-action@v1 + - + name: Login to DockerHub + uses: docker/login-action@v1 + with: + username: ${{ secrets.DOCKER_USERNAME }} + password: ${{ secrets.DOCKER_PASSWORD }} + - + name: Build and push + uses: docker/build-push-action@v2 + with: + context: . + platforms: linux/arm/v7,linux/arm64,linux/amd64 + push: ${{ github.event_name != 'pull_request' }} + tags: ${{ steps.docker_meta.outputs.tags }} + labels: ${{ steps.docker_meta.outputs.labels }} \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..fc57e2f --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,187 @@ +name: Build and Release + +on: + workflow_dispatch: + push: + branches: + - master + paths: + - "**/*.go" + - "go.mod" + - "go.sum" + - ".github/workflows/*.yml" + pull_request: + types: [opened, synchronize, reopened] + paths: + - "**/*.go" + - "go.mod" + - "go.sum" + - ".github/workflows/*.yml" + release: + types: [published] + +jobs: + + build: + strategy: + matrix: + # Include amd64 on all platforms. + goos: [windows, freebsd, openbsd, linux, dragonfly, darwin] + goarch: [amd64, 386] + exclude: + # Exclude i386 on darwin and dragonfly. + - goarch: 386 + goos: dragonfly + - goarch: 386 + goos: darwin + - goarch: 386 + goos: openbsd + include: + # BEIGIN MacOS ARM64 + - goos: darwin + goarch: arm64 + # END MacOS ARM64 + # BEGIN Linux ARM 5 6 7 + - goos: linux + goarch: arm + goarm: 7 + - goos: linux + goarch: arm + goarm: 6 + - goos: linux + goarch: arm + goarm: 5 + # END Linux ARM 5 6 7 + # BEGIN Android ARM 8 + - goos: android + goarch: arm64 + # END Android ARM 8 + # BEGIN Other architectures + # BEGIN riscv64 & ARM64 + - goos: linux + goarch: arm64 + - goos: linux + goarch: riscv64 + # END riscv64 & ARM64 + # BEGIN MIPS + - goos: linux + goarch: mips64 + - goos: linux + goarch: mips64le + - goos: linux + goarch: mipsle + - goos: linux + goarch: mips + # END MIPS + # BEGIN PPC + - goos: linux + goarch: ppc64 + - goos: linux + goarch: ppc64le + # END PPC + # BEGIN FreeBSD ARM + - goos: freebsd + goarch: arm64 + - goos: freebsd + goarch: arm + goarm: 7 + # END FreeBSD ARM + # BEGIN S390X + - goos: linux + goarch: s390x + # END S390X + # END Other architectures + fail-fast: false + + runs-on: ubuntu-latest + env: + GOOS: ${{ matrix.goos }} + GOARCH: ${{ matrix.goarch }} + GOARM: ${{ matrix.goarm }} + CGO_ENABLED: 0 + steps: + - name: Checkout codebase + uses: actions/checkout@v2 + - name: Show workflow information + id: get_filename + run: | + export _NAME=$(jq ".[\"$GOOS-$GOARCH$GOARM$GOMIPS\"].friendlyName" -r < .github/build/friendly-filenames.json) + echo "GOOS: $GOOS, GOARCH: $GOARCH, GOARM: $GOARM, GOMIPS: $GOMIPS, RELEASE_NAME: $_NAME" + echo "::set-output name=ASSET_NAME::$_NAME" + echo "ASSET_NAME=$_NAME" >> $GITHUB_ENV + + - name: Set up Go + uses: actions/setup-go@v2 + with: + go-version: ^1.17.2 + + - name: Get project dependencies + run: go mod download + + + - name: Build XrayR + run: | + mkdir -p build_assets + go build -v -o build_assets/XrayR -trimpath -ldflags "-s -w -buildid=" ./main + + - name: Build Mips softfloat XrayR + if: matrix.goarch == 'mips' || matrix.goarch == 'mipsle' + run: | + GOMIPS=softfloat go build -v -o build_assets/XrayR_softfloat -trimpath -ldflags "-s -w -buildid=" ./main + - name: Rename Windows XrayR + if: matrix.goos == 'windows' + run: | + cd ./build_assets || exit 1 + mv XrayR XrayR.exe + + - name: Prepare to release + run: | + cp ${GITHUB_WORKSPACE}/README.md ./build_assets/README.md + cp ${GITHUB_WORKSPACE}/LICENSE ./build_assets/LICENSE + cp ${GITHUB_WORKSPACE}/main/dns.json ./build_assets/dns.json + cp ${GITHUB_WORKSPACE}/main/route.json ./build_assets/route.json + cp ${GITHUB_WORKSPACE}/main/custom_outbound.json ./build_assets/custom_outbound.json + cp ${GITHUB_WORKSPACE}/main/rulelist ./build_assets/rulelist + cp ${GITHUB_WORKSPACE}/main/config.yml.example ./build_assets/config.yml + LIST=('geoip geoip geoip' 'domain-list-community dlc geosite') + for i in "${LIST[@]}" + do + INFO=($(echo $i | awk 'BEGIN{FS=" ";OFS=" "} {print $1,$2,$3}')) + LASTEST_TAG="$(curl -sL "https://api.github.com/repos/v2fly/${INFO[0]}/releases" | jq -r ".[0].tag_name" || echo "latest")" + FILE_NAME="${INFO[2]}.dat" + echo -e "Downloading ${FILE_NAME}..." + curl -L "https://github.com/v2fly/${INFO[0]}/releases/download/${LASTEST_TAG}/${INFO[1]}.dat" -o ./build_assets/${FILE_NAME} + echo -e "Verifying HASH key..." + HASH="$(curl -sL "https://github.com/v2fly/${INFO[0]}/releases/download/${LASTEST_TAG}/${INFO[1]}.dat.sha256sum" | awk -F ' ' '{print $1}')" + [ "$(sha256sum "./build_assets/${FILE_NAME}" | awk -F ' ' '{print $1}')" == "${HASH}" ] || { echo -e "The HASH key of ${FILE_NAME} does not match cloud one."; exit 1; } + done + - name: Create ZIP archive + shell: bash + run: | + pushd build_assets || exit 1 + touch -mt $(date +%Y01010000) * + zip -9vr ../XrayR-$ASSET_NAME.zip . + popd || exit 1 + FILE=./XrayR-$ASSET_NAME.zip + DGST=$FILE.dgst + for METHOD in {"md5","sha1","sha256","sha512"} + do + openssl dgst -$METHOD $FILE | sed 's/([^)]*)//g' >>$DGST + done + - name: Change the name + run: | + mv build_assets XrayR-$ASSET_NAME + - name: Upload files to Artifacts + uses: actions/upload-artifact@v2 + with: + name: XrayR-${{ steps.get_filename.outputs.ASSET_NAME }} + path: | + ./XrayR-${{ steps.get_filename.outputs.ASSET_NAME }}/* + - name: Upload binaries to release + uses: svenstaro/upload-release-action@v2 + if: github.event_name == 'release' + with: + repo_token: ${{ secrets.GITHUB_TOKEN }} + file: ./XrayR-${{ steps.get_filename.outputs.ASSET_NAME }}.zip* + tag: ${{ github.ref }} + file_glob: true diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..5a576a9 --- /dev/null +++ b/.gitignore @@ -0,0 +1,15 @@ +main/main +main/XrayR +main/XrayR* +main/mytest +main/access.logo +main/error.log +api/chooseparser.go.bak +common/Inboundbuilder/.lego/ +common/legocmd/.lego/ +.vscode/launch.json +main/.lego +main/cert +main/config.yml +./vscode +.idea/* \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..acd6989 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,17 @@ +# Build go +FROM golang:1.17-alpine AS builder +WORKDIR /app +COPY . . +ENV CGO_ENABLED=0 +RUN go mod download +RUN go build -v -o XrayR -trimpath -ldflags "-s -w -buildid=" ./main + +# Release +FROM alpine +# 安装必要的工具包 +RUN apk --update --no-cache add tzdata ca-certificates \ + && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime +RUN mkdir /etc/XrayR/ +COPY --from=builder /app/XrayR /usr/local/bin + +ENTRYPOINT [ "XrayR", "--config", "/etc/XrayR/config.yml"] \ No newline at end of file diff --git a/LICENSE b/LICENSE new file mode 100644 index 0000000..a612ad9 --- /dev/null +++ b/LICENSE @@ -0,0 +1,373 @@ +Mozilla Public License Version 2.0 +================================== + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/README.md b/README.md new file mode 100644 index 0000000..dbee277 --- /dev/null +++ b/README.md @@ -0,0 +1,86 @@ +# XrayR +[![](https://img.shields.io/badge/TgChat-@XrayR讨论-blue.svg)](https://t.me/XrayR_project) +[![](https://img.shields.io/badge/Channel-@XrayR通知-blue.svg)](https://t.me/XrayR_channel) + +A Xray backend framework that can easily support many panels. + +一个基于Xray的后端框架,支持V2ay,Trojan,Shadowsocks协议,极易扩展,支持多面板对接。 + +如果您喜欢本项目,可以右上角点个star+watch,持续关注本项目的进展。 + +使用教程:[详细使用教程](https://crackair.gitbook.io/xrayr-project/) +## 免责声明 + +本项目只是本人个人学习开发并维护,本人不保证任何可用性,也不对使用本软件造成的任何后果负责。 + +## 特点 +* 永久开源且免费。 +* 支持V2ray,Trojan, Shadowsocks多种协议。 +* 支持Vless和XTLS等新特性。 +* 支持单实例对接多面板、多节点,无需重复启动。 +* 支持限制在线IP +* 支持节点端口级别、用户级别限速。 +* 配置简单明了。 +* 修改配置自动重启实例。 +* 方便编译和升级,可以快速更新核心版本, 支持Xray-core新特性。 + +## 功能介绍 + +| 功能 | v2ray | trojan | shadowsocks | +| --------------- | ----- | ------ | ----------- | +| 获取节点信息 | √ | √ | √ | +| 获取用户信息 | √ | √ | √ | +| 用户流量统计 | √ | √ | √ | +| 服务器信息上报 | √ | √ | √ | +| 自动申请tls证书 | √ | √ | √ | +| 自动续签tls证书 | √ | √ | √ | +| 在线人数统计 | √ | √ | √ | +| 在线用户限制 | √ | √ | √ | +| 审计规则 | √ | √ | √ | +| 节点端口限速 | √ | √ | √ | +| 按照用户限速 | √ | √ | √ | +| 自定义DNS | √ | √ | √ | +## 支持前端 + +| 前端 | v2ray | trojan | shadowsocks | +| ------------------------------------------------------ | ----- | ------ | ------------------------------ | +| sspanel-uim | √ | √ | √ (单端口多用户和V2ray-Plugin) | +| v2board | √ | √ | √ | +| [PMPanel](https://github.com/ByteInternetHK/PMPanel) | √ | √ | √ | +| [ProxyPanel](https://github.com/ProxyPanel/ProxyPanel) | √ | √ | √ | + +## 软件安装 +### 一键安装 +``` +bash <(curl -Ls https://raw.githubusercontent.com/XrayR-project/XrayR-release/master/install.sh) +``` +### 使用Docker部署软件 +[Docker部署教程](https://crackair.gitbook.io/xrayr-project/xrayr-xia-zai-he-an-zhuang/install/docker) + +### 手动安装 +[手动安装教程](https://crackair.gitbook.io/xrayr-project/xrayr-xia-zai-he-an-zhuang/install/manual) + +## 配置文件及详细使用教程 + +[详细使用教程](https://crackair.gitbook.io/xrayr-project/) + +## Thanks + +* [Project X](https://github.com/XTLS/) +* [V2Fly](https://github.com/v2fly) +* [VNet-V2ray](https://github.com/ProxyPanel/VNet-V2ray) +* [Air-Universe](https://github.com/crossfw/Air-Universe) + +## Licence + +[Mozilla Public License Version 2.0](https://github.com/XrayR-project/XrayR/blob/master/LICENSE) + +## Telgram + +[XrayR后端讨论](https://t.me/XrayR_project) + +[XrayR通知](https://t.me/XrayR_channel) +## Stargazers over time + +[![Stargazers over time](https://starchart.cc/XrayR-project/XrayR.svg)](https://starchart.cc/XrayR-project/XrayR) + diff --git a/api/api.go b/api/api.go new file mode 100644 index 0000000..d52ce27 --- /dev/null +++ b/api/api.go @@ -0,0 +1,17 @@ +// Package api contains all the api used by XrayR +// To implement an api , one needs to implement the interface below. + +package api + +// API is the interface for different panel's api. +type API interface { + GetNodeInfo() (nodeInfo *NodeInfo, err error) + GetUserList() (userList *[]UserInfo, err error) + ReportNodeStatus(nodeStatus *NodeStatus) (err error) + ReportNodeOnlineUsers(onlineUser *[]OnlineUser) (err error) + ReportUserTraffic(userTraffic *[]UserTraffic) (err error) + Describe() ClientInfo + GetNodeRule() (ruleList *[]DetectRule, err error) + ReportIllegal(detectResultList *[]DetectResult) (err error) + Debug() +} diff --git a/api/apimodel.go b/api/apimodel.go new file mode 100644 index 0000000..ba05fc8 --- /dev/null +++ b/api/apimodel.go @@ -0,0 +1,92 @@ +package api + +import ( + "encoding/json" + "regexp" +) + +// API config +type Config struct { + APIHost string `mapstructure:"ApiHost"` + NodeID int `mapstructure:"NodeID"` + Key string `mapstructure:"ApiKey"` + NodeType string `mapstructure:"NodeType"` + EnableVless bool `mapstructure:"EnableVless"` + EnableXTLS bool `mapstructure:"EnableXTLS"` + Timeout int `mapstructure:"Timeout"` + SpeedLimit float64 `mapstructure:"SpeedLimit"` + DeviceLimit int `mapstructure:"DeviceLimit"` + RuleListPath string `mapstructure:"RuleListPath"` + DisableCustomConfig bool `mapstructure:"DisableCustomConfig"` +} + +// Node status +type NodeStatus struct { + CPU float64 + Mem float64 + Disk float64 + Uptime int +} + +type NodeInfo struct { + NodeType string // Must be V2ray, Trojan, and Shadowsocks + NodeID int + Port int + SpeedLimit uint64 // Bps + AlterID int + TransportProtocol string + FakeType string + Host string + Path string + EnableTLS bool + TLSType string + EnableVless bool + CypherMethod string + ServiceName string + Header json.RawMessage +} + +type UserInfo struct { + UID int + Email string + Passwd string + Port int + Method string + SpeedLimit uint64 // Bps + DeviceLimit int + Protocol string + ProtocolParam string + Obfs string + ObfsParam string + UUID string + AlterID int +} + +type OnlineUser struct { + UID int + IP string +} + +type UserTraffic struct { + UID int + Email string + Upload int64 + Download int64 +} + +type ClientInfo struct { + APIHost string + NodeID int + Key string + NodeType string +} + +type DetectRule struct { + ID int + Pattern *regexp.Regexp +} + +type DetectResult struct { + UID int + RuleID int +} diff --git a/api/pmpanel/model.go b/api/pmpanel/model.go new file mode 100644 index 0000000..382fd55 --- /dev/null +++ b/api/pmpanel/model.go @@ -0,0 +1,72 @@ +package pmpanel + +import "encoding/json" + +// NodeInfoResponse is the response of node +type NodeInfoResponse struct { + Class int `json:"clazz"` + SpeedLimit float64 `json:"speedlimit"` + Method string `json:"method"` + TrafficRate float64 `json:"trafficRate"` + RawServerString string `json:"outServer"` + Port int `json:"outPort"` + AlterId int `json:"alterId"` + Network string `json:"network"` + Security string `json:"security"` + Host string `json:"host"` + Path string `json:"path"` + Grpc bool `json:"grpc"` + Sni string `json:sni` +} + +// UserResponse is the response of user +type UserResponse struct { + ID int `json:"id"` + Passwd string `json:"passwd"` + SpeedLimit float64 `json:"nodeSpeedlimit"` + DeviceLimit int `json:"nodeConnector"` +} + +// Response is the common response +type Response struct { + Ret uint `json:"ret"` + Data json.RawMessage `json:"data"` +} + +// PostData is the data structure of post data +type PostData struct { + Type string `json:"type"` + NodeId int `json:"nodeId"` + Users interface{} `json:"users"` + Onlines interface{} `json:"onlines"` +} + +// SystemLoad is the data structure of systemload +type SystemLoad struct { + Uptime string `json:"uptime"` + Load string `json:"load"` +} + +// OnlineUser is the data structure of online user +type OnlineUser struct { + UID int `json:"user_id"` + IP string `json:"ip"` +} + +// UserTraffic is the data structure of traffic +type UserTraffic struct { + UID int `json:"id"` + Upload int64 `json:"up"` + Download int64 `json:"down"` + Ip string `json:"ip"` +} + +type RuleItem struct { + ID int `json:"id"` + Content string `json:"regex"` +} + +type IllegalItem struct { + ID int `json:"list_id"` + UID int `json:"user_id"` +} diff --git a/api/pmpanel/pmpanel.go b/api/pmpanel/pmpanel.go new file mode 100644 index 0000000..72c406f --- /dev/null +++ b/api/pmpanel/pmpanel.go @@ -0,0 +1,502 @@ +package pmpanel + +import ( + "bufio" + "encoding/json" + "fmt" + "log" + "os" + "reflect" + "regexp" + "strconv" + "time" + + "github.com/XrayR-project/XrayR/api" + "github.com/go-resty/resty/v2" +) + +// APIClient create a api client to the panel. +type APIClient struct { + client *resty.Client + APIHost string + NodeID int + Key string + NodeType string + EnableVless bool + EnableXTLS bool + SpeedLimit float64 + DeviceLimit int + LocalRuleList []api.DetectRule +} + +// New creat a api instance +func New(apiConfig *api.Config) *APIClient { + + client := resty.New() + client.SetRetryCount(3) + if apiConfig.Timeout > 0 { + client.SetTimeout(time.Duration(apiConfig.Timeout) * time.Second) + } else { + client.SetTimeout(5 * time.Second) + } + client.OnError(func(req *resty.Request, err error) { + if v, ok := err.(*resty.ResponseError); ok { + // v.Response contains the last response from the server + // v.Err contains the original error + log.Print(v.Err) + } + }) + client.SetBaseURL(apiConfig.APIHost) + // Create Key for each requests + client.SetHeaders(map[string]string{ + "key": apiConfig.Key, + }) + // Read local rule list + localRuleList := readLocalRuleList(apiConfig.RuleListPath) + apiClient := &APIClient{ + client: client, + NodeID: apiConfig.NodeID, + Key: apiConfig.Key, + APIHost: apiConfig.APIHost, + NodeType: apiConfig.NodeType, + EnableVless: apiConfig.EnableVless, + EnableXTLS: apiConfig.EnableXTLS, + SpeedLimit: apiConfig.SpeedLimit, + DeviceLimit: apiConfig.DeviceLimit, + LocalRuleList: localRuleList, + } + return apiClient +} + +// readLocalRuleList reads the local rule list file +func readLocalRuleList(path string) (LocalRuleList []api.DetectRule) { + + LocalRuleList = make([]api.DetectRule, 0) + if path != "" { + // open the file + file, err := os.Open(path) + + //handle errors while opening + if err != nil { + log.Printf("Error when opening file: %s", err) + return LocalRuleList + } + + fileScanner := bufio.NewScanner(file) + + // read line by line + for fileScanner.Scan() { + LocalRuleList = append(LocalRuleList, api.DetectRule{ + ID: -1, + Pattern: regexp.MustCompile(fileScanner.Text()), + }) + } + // handle first encountered error while reading + if err := fileScanner.Err(); err != nil { + log.Fatalf("Error while reading file: %s", err) + return make([]api.DetectRule, 0) + } + + file.Close() + } + + return LocalRuleList +} + +// Describe return a description of the client +func (c *APIClient) Describe() api.ClientInfo { + return api.ClientInfo{APIHost: c.APIHost, NodeID: c.NodeID, Key: c.Key, NodeType: c.NodeType} +} + +// Debug set the client debug for client +func (c *APIClient) Debug() { + c.client.SetDebug(true) +} + +func (c *APIClient) assembleURL(path string) string { + return c.APIHost + path +} + +func (c *APIClient) parseResponse(res *resty.Response, path string, err error) (*Response, error) { + if err != nil { + return nil, fmt.Errorf("request %s failed: %s", c.assembleURL(path), err) + } + + if res.StatusCode() > 400 { + body := res.Body() + return nil, fmt.Errorf("request %s failed: %s, %s", c.assembleURL(path), string(body), err) + } + response := res.Result().(*Response) + + if response.Ret != 200 { + res, _ := json.Marshal(&response) + return nil, fmt.Errorf("Ret %s invalid", string(res)) + } + return response, nil +} + +// GetNodeInfo will pull NodeInfo Config from sspanel +func (c *APIClient) GetNodeInfo() (nodeInfo *api.NodeInfo, err error) { + path := fmt.Sprintf("/api/node") + var nodeType = "" + switch c.NodeType { + case "Shadowsocks": + nodeType = "ss" + case "V2ray": + nodeType = "v2ray" + case "Trojan": + nodeType = "trojan" + default: + return nil, fmt.Errorf("NodeType Error: %s", c.NodeType) + } + // body := fmt.Sprintf(`{"type":"%s", "nodeId":%d}`, nodeType, c.NodeID) + res, err := c.client.R(). + SetQueryParams(map[string]string{ + "type": nodeType, + "nodeId": strconv.Itoa(c.NodeID), + }). + SetResult(&Response{}). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + + nodeInfoResponse := new(NodeInfoResponse) + + if err := json.Unmarshal(response.Data, nodeInfoResponse); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(nodeInfoResponse), err) + } + switch c.NodeType { + case "V2ray": + nodeInfo, err = c.ParseV2rayNodeResponse(nodeInfoResponse) + case "Trojan": + nodeInfo, err = c.ParseTrojanNodeResponse(nodeInfoResponse) + case "Shadowsocks": + nodeInfo, err = c.ParseSSNodeResponse(nodeInfoResponse) + default: + return nil, fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + + if err != nil { + res, _ := json.Marshal(nodeInfoResponse) + return nil, fmt.Errorf("Parse node info failed: %s, \nError: %s", string(res), err) + } + + return nodeInfo, nil +} + +// GetUserList will pull user form sspanel +func (c *APIClient) GetUserList() (UserList *[]api.UserInfo, err error) { + path := "/api/users" + var nodeType = "" + switch c.NodeType { + case "Shadowsocks": + nodeType = "ss" + case "V2ray": + nodeType = "v2ray" + case "Trojan": + nodeType = "trojan" + default: + return nil, fmt.Errorf("NodeType Error: %s", c.NodeType) + } + res, err := c.client.R(). + SetQueryParams(map[string]string{ + "type": nodeType, + "nodeId": strconv.Itoa(c.NodeID), + "all": "true", + }). + SetResult(&Response{}). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + + var userListResponse *[]UserResponse + if err := json.Unmarshal(response.Data, &userListResponse); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(userListResponse), err) + } + userList, err := c.ParseUserListResponse(userListResponse) + if err != nil { + res, _ := json.Marshal(userListResponse) + return nil, fmt.Errorf("Parse user list failed: %s", string(res)) + } + return userList, nil +} + +// ReportNodeStatus reports the node status to the sspanel +func (c *APIClient) ReportNodeStatus(nodeStatus *api.NodeStatus) (err error) { + return nil +} + +//ReportNodeOnlineUsers reports online user ip +func (c *APIClient) ReportNodeOnlineUsers(onlineUserList *[]api.OnlineUser) error { + var nodeType = "" + switch c.NodeType { + case "Shadowsocks": + nodeType = "ss" + case "V2ray": + nodeType = "v2ray" + case "Trojan": + nodeType = "trojan" + default: + return fmt.Errorf("NodeType Error: %s", c.NodeType) + } + data := make([]OnlineUser, len(*onlineUserList)) + for i, user := range *onlineUserList { + data[i] = OnlineUser{UID: user.UID, IP: user.IP} + } + postData := &PostData{Type: nodeType, NodeId: c.NodeID, Onlines: data} + path := "/api/online" + + res, err := c.client.R(). + SetHeader("Content-Type", "application/json"). + SetBody(postData). + SetResult(&Response{}). + ForceContentType("application/json"). + Post(path) + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + + return nil +} + +// ReportUserTraffic reports the user traffic +func (c *APIClient) ReportUserTraffic(userTraffic *[]api.UserTraffic) error { + var nodeType = "" + switch c.NodeType { + case "Shadowsocks": + nodeType = "ss" + case "V2ray": + nodeType = "v2ray" + case "Trojan": + nodeType = "trojan" + default: + return fmt.Errorf("NodeType Error: %s", c.NodeType) + } + data := make([]UserTraffic, len(*userTraffic)) + for i, traffic := range *userTraffic { + data[i] = UserTraffic{ + UID: traffic.UID, + Upload: traffic.Upload, + Download: traffic.Download, + } + } + postData := &PostData{Type: nodeType, NodeId: c.NodeID, Users: data} + path := "/api/traffic" + + res, err := c.client.R(). + SetHeader("Content-Type", "application/json"). + SetBody(postData). + SetResult(&Response{}). + ForceContentType("application/json"). + Post(path) + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + + return nil +} + +// GetNodeRule will pull the audit rule form pmpanel +func (c *APIClient) GetNodeRule() (*[]api.DetectRule, error) { + ruleList := c.LocalRuleList + path := "/api/rules" + var nodeType = "" + switch c.NodeType { + case "Shadowsocks": + nodeType = "ss" + case "V2ray": + nodeType = "v2ray" + case "Trojan": + nodeType = "trojan" + default: + return nil, fmt.Errorf("NodeType Error: %s", c.NodeType) + } + res, err := c.client.R(). + SetQueryParams(map[string]string{ + "type": nodeType, + "nodeId": strconv.Itoa(c.NodeID), + }). + SetResult(&Response{}). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + + ruleListResponse := new([]RuleItem) + + if err := json.Unmarshal(response.Data, ruleListResponse); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(ruleListResponse), err) + } + + for _, r := range *ruleListResponse { + ruleList = append(ruleList, api.DetectRule{ + ID: r.ID, + Pattern: regexp.MustCompile(r.Content), + }) + } + return &ruleList, nil +} + +// ReportIllegal reports the user illegal behaviors +func (c *APIClient) ReportIllegal(detectResultList *[]api.DetectResult) error { + return nil +} + +// ParseV2rayNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseV2rayNodeResponse(nodeInfoResponse *NodeInfoResponse) (*api.NodeInfo, error) { + var enableTLS bool + var path, host, TLStype, transportProtocol, serviceName string + var speedlimit uint64 = 0 + + port := nodeInfoResponse.Port + alterID := nodeInfoResponse.AlterId + transportProtocol = nodeInfoResponse.Network + switch transportProtocol { + case "ws": + host = nodeInfoResponse.Host + path = nodeInfoResponse.Path + case "grpc": + serviceName = nodeInfoResponse.Sni + case "tcp": + // TODO + } + // Compatible with more node types config + switch nodeInfoResponse.Security { + case "tls", "xtls": + if c.EnableXTLS { + TLStype = "xtls" + } else { + TLStype = "tls" + } + enableTLS = true + default: + enableTLS = false + } + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((nodeInfoResponse.SpeedLimit * 1000000) / 8) + } + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + SpeedLimit: speedlimit, + AlterID: alterID, + TransportProtocol: transportProtocol, + EnableTLS: enableTLS, + TLSType: TLStype, + Path: path, + Host: host, + EnableVless: c.EnableVless, + ServiceName: serviceName, + } + + return nodeinfo, nil +} + +// ParseSSNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseSSNodeResponse(nodeInfoResponse *NodeInfoResponse) (*api.NodeInfo, error) { + var port int = 0 + var speedlimit uint64 = 0 + + port = nodeInfoResponse.Port + + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((nodeInfoResponse.SpeedLimit * 1000000) / 8) + } + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + SpeedLimit: speedlimit, + TransportProtocol: "tcp", + CypherMethod: nodeInfoResponse.Method, + } + + return nodeinfo, nil +} + +// ParseTrojanNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseTrojanNodeResponse(nodeInfoResponse *NodeInfoResponse) (*api.NodeInfo, error) { + // 域名或IP;port=连接端口#偏移端口|host=xx + // gz.aaa.com;port=443#12345|host=hk.aaa.com + var TLSType, host string + var transportProtocol = "tcp" + var speedlimit uint64 = 0 + if c.EnableXTLS { + TLSType = "xtls" + } else { + TLSType = "tls" + } + host = nodeInfoResponse.Host + port := nodeInfoResponse.Port + + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((nodeInfoResponse.SpeedLimit * 1000000) / 8) + } + if nodeInfoResponse.Grpc { + transportProtocol = "grpc" + } + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + SpeedLimit: speedlimit, + TransportProtocol: transportProtocol, + EnableTLS: true, + TLSType: TLSType, + Host: host, + ServiceName: nodeInfoResponse.Sni, + } + + return nodeinfo, nil +} + +// ParseUserListResponse parse the response for the given nodeinfo format +func (c *APIClient) ParseUserListResponse(userInfoResponse *[]UserResponse) (*[]api.UserInfo, error) { + var deviceLimit int = 0 + var speedlimit uint64 = 0 + userList := make([]api.UserInfo, len(*userInfoResponse)) + for i, user := range *userInfoResponse { + if c.DeviceLimit > 0 { + deviceLimit = c.DeviceLimit + } else { + deviceLimit = user.DeviceLimit + } + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((user.SpeedLimit * 1000000) / 8) + } + userList[i] = api.UserInfo{ + UID: user.ID, + Passwd: user.Passwd, + UUID: user.Passwd, + SpeedLimit: speedlimit, + DeviceLimit: deviceLimit, + } + } + + return &userList, nil +} diff --git a/api/pmpanel/pmpanel_test.go b/api/pmpanel/pmpanel_test.go new file mode 100644 index 0000000..7261426 --- /dev/null +++ b/api/pmpanel/pmpanel_test.go @@ -0,0 +1,161 @@ +package pmpanel_test + +import ( + "fmt" + "testing" + + "github.com/XrayR-project/XrayR/api" + "github.com/XrayR-project/XrayR/api/pmpanel" +) + +func CreateClient() api.API { + apiConfig := &api.Config{ + APIHost: "http://webapi.yyds.me", + Key: "123456", + NodeID: 4, + NodeType: "V2ray", + } + client := pmpanel.New(apiConfig) + return client +} + +func TestGetV2rayNodeinfo(t *testing.T) { + client := CreateClient() + client.Debug() + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetSSNodeinfo(t *testing.T) { + apiConfig := &api.Config{ + APIHost: "http://webapi.yyds.me", + Key: "123456", + NodeID: 1, + NodeType: "Shadowsocks", + } + client := pmpanel.New(apiConfig) + client.Debug() + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetTrojanNodeinfo(t *testing.T) { + apiConfig := &api.Config{ + APIHost: "http://webapi.yyds.me", + Key: "123456", + NodeID: 1, + NodeType: "Trojan", + } + client := pmpanel.New(apiConfig) + client.Debug() + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetSSinfo(t *testing.T) { + client := CreateClient() + + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetUserList(t *testing.T) { + client := CreateClient() + + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + + t.Log(userList) +} + +func TestReportNodeStatus(t *testing.T) { + client := CreateClient() + nodeStatus := &api.NodeStatus{ + 1, 1, 1, 256, + } + err := client.ReportNodeStatus(nodeStatus) + if err != nil { + t.Error(err) + } +} + +func TestReportReportNodeOnlineUsers(t *testing.T) { + client := CreateClient() + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + + onlineUserList := make([]api.OnlineUser, len(*userList)) + for i, userInfo := range *userList { + onlineUserList[i] = api.OnlineUser{ + UID: userInfo.UID, + IP: fmt.Sprintf("1.1.1.%d", i), + } + } + //client.Debug() + err = client.ReportNodeOnlineUsers(&onlineUserList) + if err != nil { + t.Error(err) + } +} + +func TestReportReportUserTraffic(t *testing.T) { + client := CreateClient() + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + generalUserTraffic := make([]api.UserTraffic, len(*userList)) + for i, userInfo := range *userList { + generalUserTraffic[i] = api.UserTraffic{ + UID: userInfo.UID, + Upload: 114514, + Download: 114514, + } + } + //client.Debug() + err = client.ReportUserTraffic(&generalUserTraffic) + if err != nil { + t.Error(err) + } +} + +func TestGetNodeRule(t *testing.T) { + client := CreateClient() + + ruleList, err := client.GetNodeRule() + if err != nil { + t.Error(err) + } + + t.Log(ruleList) +} + +func TestReportIllegal(t *testing.T) { + client := CreateClient() + + detectResult := []api.DetectResult{ + api.DetectResult{1, 2}, + api.DetectResult{1, 3}, + } + client.Debug() + err := client.ReportIllegal(&detectResult) + if err != nil { + t.Error(err) + } +} diff --git a/api/proxypanel/model.go b/api/proxypanel/model.go new file mode 100644 index 0000000..146baa0 --- /dev/null +++ b/api/proxypanel/model.go @@ -0,0 +1,111 @@ +package proxypanel + +import "encoding/json" + +type Response struct { + Status string `json:"status"` + Code int `json:"code"` + Data json.RawMessage `json:"data"` + Message string `json:"message"` +} + +type V2rayNodeInfo struct { + ID int `json:"id"` + IsUDP bool `json:"is_udp"` + SpeedLimit uint64 `json:"speed_limit"` + ClientLimit int `json:"client_limit"` + PushPort int `json:"push_port"` + Secret string `json:"secret"` + Key string `json:"key"` + Cert string `json:"pem"` + V2License string `json:"v2_license"` + V2AlterID int `json:"v2_alter_id"` + V2Port int `json:"v2_port"` + V2Method string `json:"v2_method"` + V2Net string `json:"v2_net"` + V2Type string `json:"v2_type"` + V2Host string `json:"v2_host"` + V2Path string `json:"v2_path"` + V2TLS bool `json:"v2_tls"` + V2Cdn bool `json:"v2_cdn"` + V2TLSProvider string `json:"v2_tls_provider"` + RedirectUrl string `json:"redirect_url"` +} + +type ShadowsocksNodeInfo struct { + ID int `json:"id"` + SpeedLimit uint64 `json:"speed_limit"` + ClientLimit int `json:"client_limit"` + Method string `json:"method"` + Port int `json:"port"` +} + +type TrojanNodeInfo struct { + ID int `json:"id"` + IsUDP bool `json:"is_udp"` + SpeedLimit uint64 `json:"speed_limit"` + ClientLimit int `json:"client_limit"` + PushPort int `json:"push_port"` + TrojanPort int `json:"trojan_port"` +} + +// Node status report +type NodeStatus struct { + CPU string `json:"cpu"` + Mem string `json:"mem"` + Net string `json:"net"` + Disk string `json:"disk"` + Uptime int `json:"uptime"` +} + +type NodeOnline struct { + UID int `json:"uid"` + IP string `json:"ip"` +} + +type VMessUser struct { + UID int `json:"uid"` + VmessUID string `json:"vmess_uid"` + SpeedLimit uint64 `json:"speed_limit"` +} + +type TrojanUser struct { + UID int `json:"uid"` + Password string `json:"password"` + SpeedLimit uint64 `json:"speed_limit"` +} + +type SSUser struct { + UID int `json:"uid"` + Password string `json:"passwd"` + SpeedLimit uint64 `json:"speed_limit"` +} + +type UserTraffic struct { + UID int `json:"uid"` + Upload int64 `json:"upload"` + Download int64 `json:"download"` +} + +type NodeRule struct { + Mode string `json:"mode"` + Rules []NodeRuleItem `json:"rules"` +} + +type NodeRuleItem struct { + ID int `json:"id"` + Type string `json:"type"` + Pattern string `json:"pattern"` +} + +// IllegalReport +type IllegalReport struct { + UID int `json:"uid"` + RuleID int `json:"rule_id"` + Reason string `json:"reason"` +} + +type Certificate struct { + Key string `json:"key"` + Pem string `json:"pem"` +} diff --git a/api/proxypanel/proxypanel.go b/api/proxypanel/proxypanel.go new file mode 100644 index 0000000..baf1a02 --- /dev/null +++ b/api/proxypanel/proxypanel.go @@ -0,0 +1,606 @@ +package proxypanel + +import ( + "bufio" + "encoding/json" + "fmt" + "log" + "os" + "reflect" + "regexp" + "strconv" + "time" + + "github.com/XrayR-project/XrayR/api" + "github.com/go-resty/resty/v2" +) + +// APIClient create a api client to the panel. +type APIClient struct { + client *resty.Client + APIHost string + NodeID int + Key string + NodeType string + EnableVless bool + EnableXTLS bool + SpeedLimit float64 + DeviceLimit int + LocalRuleList []api.DetectRule +} + +// New creat a api instance +func New(apiConfig *api.Config) *APIClient { + + client := resty.New() + client.SetRetryCount(3) + if apiConfig.Timeout > 0 { + client.SetTimeout(time.Duration(apiConfig.Timeout) * time.Second) + } else { + client.SetTimeout(5 * time.Second) + } + client.OnError(func(req *resty.Request, err error) { + if v, ok := err.(*resty.ResponseError); ok { + // v.Response contains the last response from the server + // v.Err contains the original error + log.Print(v.Err) + } + }) + client.SetBaseURL(apiConfig.APIHost) + // Read local rule list + localRuleList := readLocalRuleList(apiConfig.RuleListPath) + apiClient := &APIClient{ + client: client, + NodeID: apiConfig.NodeID, + Key: apiConfig.Key, + APIHost: apiConfig.APIHost, + NodeType: apiConfig.NodeType, + EnableVless: apiConfig.EnableVless, + EnableXTLS: apiConfig.EnableXTLS, + SpeedLimit: apiConfig.SpeedLimit, + DeviceLimit: apiConfig.DeviceLimit, + LocalRuleList: localRuleList, + } + return apiClient +} + +// readLocalRuleList reads the local rule list file +func readLocalRuleList(path string) (LocalRuleList []api.DetectRule) { + + LocalRuleList = make([]api.DetectRule, 0) + if path != "" { + // open the file + file, err := os.Open(path) + + //handle errors while opening + if err != nil { + log.Printf("Error when opening file: %s", err) + return LocalRuleList + } + + fileScanner := bufio.NewScanner(file) + + // read line by line + for fileScanner.Scan() { + LocalRuleList = append(LocalRuleList, api.DetectRule{ + ID: -1, + Pattern: regexp.MustCompile(fileScanner.Text()), + }) + } + // handle first encountered error while reading + if err := fileScanner.Err(); err != nil { + log.Fatalf("Error while reading file: %s", err) + return make([]api.DetectRule, 0) + } + + file.Close() + } + + return LocalRuleList +} + +// Describe return a description of the client +func (c *APIClient) Describe() api.ClientInfo { + return api.ClientInfo{APIHost: c.APIHost, NodeID: c.NodeID, Key: c.Key, NodeType: c.NodeType} +} + +// Debug set the client debug for client +func (c *APIClient) Debug() { + c.client.SetDebug(true) +} + +func (c *APIClient) assembleURL(path string) string { + return c.APIHost + path +} + +func (c *APIClient) createCommonRequest() *resty.Request { + request := c.client.R().EnableTrace() + request.EnableTrace() + request.SetHeader("key", c.Key) + request.SetHeader("timestamp", strconv.FormatInt(time.Now().Unix(), 10)) + return request +} + +func (c *APIClient) parseResponse(res *resty.Response, path string, err error) (*Response, error) { + if err != nil { + return nil, fmt.Errorf("request %s failed: %s", c.assembleURL(path), err) + } + + if res.StatusCode() > 400 { + body := res.Body() + return nil, fmt.Errorf("request %s failed: %s, %s", c.assembleURL(path), string(body), err) + } + response := res.Result().(*Response) + + if response.Status != "success" { + res, _ := json.Marshal(&response) + return nil, fmt.Errorf("Ret %s invalid", string(res)) + } + return response, nil +} + +// GetNodeInfo will pull NodeInfo Config from sspanel +func (c *APIClient) GetNodeInfo() (nodeInfo *api.NodeInfo, err error) { + var path string + switch c.NodeType { + case "V2ray": + path = fmt.Sprintf("/api/v2ray/v1/node/%d", c.NodeID) + case "Trojan": + path = fmt.Sprintf("/api/trojan/v1/node/%d", c.NodeID) + case "Shadowsocks": + path = fmt.Sprintf("/api/ss/v1/node/%d", c.NodeID) + default: + return nil, fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + + res, err := c.createCommonRequest(). + SetResult(&Response{}). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + + switch c.NodeType { + case "V2ray": + nodeInfo, err = c.ParseV2rayNodeResponse(&response.Data) + case "Trojan": + nodeInfo, err = c.ParseTrojanNodeResponse(&response.Data) + case "Shadowsocks": + nodeInfo, err = c.ParseSSNodeResponse(&response.Data) + default: + return nil, fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + + if err != nil { + res, _ := json.Marshal(response.Data) + return nil, fmt.Errorf("Parse node info failed: %s, \nError: %s", string(res), err) + } + + return nodeInfo, nil +} + +// GetUserList will pull user form sspanel +func (c *APIClient) GetUserList() (UserList *[]api.UserInfo, err error) { + var path string + switch c.NodeType { + case "V2ray": + path = fmt.Sprintf("/api/v2ray/v1/userList/%d", c.NodeID) + case "Trojan": + path = fmt.Sprintf("/api/trojan/v1/userList/%d", c.NodeID) + case "Shadowsocks": + path = fmt.Sprintf("/api/ss/v1/userList/%d", c.NodeID) + default: + return nil, fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + + res, err := c.createCommonRequest(). + SetResult(&Response{}). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + userList := new([]api.UserInfo) + switch c.NodeType { + case "V2ray": + userList, err = c.ParseV2rayUserListResponse(&response.Data) + case "Trojan": + userList, err = c.ParseTrojanUserListResponse(&response.Data) + case "Shadowsocks": + userList, err = c.ParseSSUserListResponse(&response.Data) + default: + return nil, fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + if err != nil { + res, _ := json.Marshal(response.Data) + return nil, fmt.Errorf("Parse user list failed: %s", string(res)) + } + return userList, nil +} + +// ReportNodeStatus reports the node status to the sspanel +func (c *APIClient) ReportNodeStatus(nodeStatus *api.NodeStatus) (err error) { + var path string + switch c.NodeType { + case "V2ray": + path = fmt.Sprintf("/api/v2ray/v1/nodeStatus/%d", c.NodeID) + case "Trojan": + path = fmt.Sprintf("/api/trojan/v1/nodeStatus/%d", c.NodeID) + case "Shadowsocks": + path = fmt.Sprintf("/api/ss/v1/nodeStatus/%d", c.NodeID) + default: + return fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + + systemload := NodeStatus{ + Uptime: nodeStatus.Uptime, + CPU: fmt.Sprintf("%d%%", int(nodeStatus.CPU)), + Mem: fmt.Sprintf("%d%%", int(nodeStatus.Mem)), + Disk: fmt.Sprintf("%d%%", int(nodeStatus.Disk)), + } + + res, err := c.createCommonRequest(). + SetBody(systemload). + SetResult(&Response{}). + ForceContentType("application/json"). + Post(path) + + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + + return nil +} + +//ReportNodeOnlineUsers reports online user ip +func (c *APIClient) ReportNodeOnlineUsers(onlineUserList *[]api.OnlineUser) error { + + var path string + switch c.NodeType { + case "V2ray": + path = fmt.Sprintf("/api/v2ray/v1/nodeOnline/%d", c.NodeID) + case "Trojan": + path = fmt.Sprintf("/api/trojan/v1/nodeOnline/%d", c.NodeID) + case "Shadowsocks": + path = fmt.Sprintf("/api/ss/v1/nodeOnline/%d", c.NodeID) + default: + return fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + + data := make([]NodeOnline, len(*onlineUserList)) + for i, user := range *onlineUserList { + data[i] = NodeOnline{UID: user.UID, IP: user.IP} + } + + res, err := c.createCommonRequest(). + SetBody(data). + SetResult(&Response{}). + ForceContentType("application/json"). + Post(path) + + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + + return nil +} + +// ReportUserTraffic reports the user traffic +func (c *APIClient) ReportUserTraffic(userTraffic *[]api.UserTraffic) error { + var path string + switch c.NodeType { + case "V2ray": + path = fmt.Sprintf("/api/v2ray/v1/userTraffic/%d", c.NodeID) + case "Trojan": + path = fmt.Sprintf("/api/trojan/v1/userTraffic/%d", c.NodeID) + case "Shadowsocks": + path = fmt.Sprintf("/api/ss/v1/userTraffic/%d", c.NodeID) + default: + return fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + + data := make([]UserTraffic, len(*userTraffic)) + for i, traffic := range *userTraffic { + data[i] = UserTraffic{ + UID: traffic.UID, + Upload: traffic.Upload, + Download: traffic.Download} + } + res, err := c.createCommonRequest(). + SetBody(data). + SetResult(&Response{}). + ForceContentType("application/json"). + Post(path) + + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + + return nil +} + +// GetNodeRule will pull the audit rule form sspanel +func (c *APIClient) GetNodeRule() (*[]api.DetectRule, error) { + var path string + switch c.NodeType { + case "V2ray": + path = fmt.Sprintf("/api/v2ray/v1/nodeRule/%d", c.NodeID) + case "Trojan": + path = fmt.Sprintf("/api/trojan/v1/nodeRule/%d", c.NodeID) + case "Shadowsocks": + path = fmt.Sprintf("/api/ss/v1/nodeRule/%d", c.NodeID) + default: + return nil, fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + + res, err := c.createCommonRequest(). + SetResult(&Response{}). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + + ruleListResponse := new(NodeRule) + + if err := json.Unmarshal(response.Data, ruleListResponse); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(ruleListResponse), err) + } + ruleList := c.LocalRuleList + // Only support reject rule type + if ruleListResponse.Mode != "reject" { + return &ruleList, nil + } else { + for _, r := range ruleListResponse.Rules { + if r.Type == "reg" { + ruleList = append(ruleList, api.DetectRule{ + ID: r.ID, + Pattern: regexp.MustCompile(r.Pattern), + }) + } + + } + } + + return &ruleList, nil +} + +// ReportIllegal reports the user illegal behaviors +func (c *APIClient) ReportIllegal(detectResultList *[]api.DetectResult) error { + var path string + switch c.NodeType { + case "V2ray": + path = fmt.Sprintf("/api/v2ray/v1/trigger/%d", c.NodeID) + case "Trojan": + path = fmt.Sprintf("/api/trojan/v1/trigger/%d", c.NodeID) + case "Shadowsocks": + path = fmt.Sprintf("/api/ss/v1/trigger/%d", c.NodeID) + default: + return fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + + for _, r := range *detectResultList { + res, err := c.createCommonRequest(). + SetBody(IllegalReport{ + RuleID: r.RuleID, + UID: r.UID, + Reason: "XrayR cannot save reason", + }). + SetResult(&Response{}). + ForceContentType("application/json"). + Post(path) + + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + } + + return nil +} + +// ParseV2rayNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseV2rayNodeResponse(nodeInfoResponse *json.RawMessage) (*api.NodeInfo, error) { + var TLStype string + var speedlimit uint64 = 0 + if c.EnableXTLS { + TLStype = "xtls" + } else { + TLStype = "tls" + } + + v2rayNodeInfo := new(V2rayNodeInfo) + if err := json.Unmarshal(*nodeInfoResponse, v2rayNodeInfo); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(*nodeInfoResponse), err) + } + + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((v2rayNodeInfo.SpeedLimit * 1000000) / 8) + } + + if c.DeviceLimit == 0 && v2rayNodeInfo.ClientLimit > 0 { + c.DeviceLimit = v2rayNodeInfo.ClientLimit + } + + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: v2rayNodeInfo.V2Port, + SpeedLimit: speedlimit, + AlterID: v2rayNodeInfo.V2AlterID, + TransportProtocol: v2rayNodeInfo.V2Net, + FakeType: v2rayNodeInfo.V2Type, + EnableTLS: v2rayNodeInfo.V2TLS, + TLSType: TLStype, + Path: v2rayNodeInfo.V2Path, + Host: v2rayNodeInfo.V2Host, + EnableVless: c.EnableVless, + } + + return nodeinfo, nil +} + +// ParseSSNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseSSNodeResponse(nodeInfoResponse *json.RawMessage) (*api.NodeInfo, error) { + var speedlimit uint64 = 0 + shadowsocksNodeInfo := new(ShadowsocksNodeInfo) + if err := json.Unmarshal(*nodeInfoResponse, shadowsocksNodeInfo); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(*nodeInfoResponse), err) + } + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((shadowsocksNodeInfo.SpeedLimit * 1000000) / 8) + } + + if c.DeviceLimit == 0 && shadowsocksNodeInfo.ClientLimit > 0 { + c.DeviceLimit = shadowsocksNodeInfo.ClientLimit + } + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: shadowsocksNodeInfo.Port, + SpeedLimit: speedlimit, + TransportProtocol: "tcp", + CypherMethod: shadowsocksNodeInfo.Method, + } + + return nodeinfo, nil +} + +// ParseTrojanNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseTrojanNodeResponse(nodeInfoResponse *json.RawMessage) (*api.NodeInfo, error) { + + var TLSType string + var speedlimit uint64 = 0 + if c.EnableXTLS { + TLSType = "xtls" + } else { + TLSType = "tls" + } + + trojanNodeInfo := new(TrojanNodeInfo) + if err := json.Unmarshal(*nodeInfoResponse, trojanNodeInfo); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(*nodeInfoResponse), err) + } + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((trojanNodeInfo.SpeedLimit * 1000000) / 8) + } + + if c.DeviceLimit == 0 && trojanNodeInfo.ClientLimit > 0 { + c.DeviceLimit = trojanNodeInfo.ClientLimit + } + + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: trojanNodeInfo.TrojanPort, + SpeedLimit: speedlimit, + TransportProtocol: "tcp", + EnableTLS: true, + TLSType: TLSType, + } + + return nodeinfo, nil +} + +// ParseV2rayUserListResponse parse the response for the given userinfo format +func (c *APIClient) ParseV2rayUserListResponse(userInfoResponse *json.RawMessage) (*[]api.UserInfo, error) { + var speedlimit uint64 = 0 + + vmessUserList := new([]*VMessUser) + if err := json.Unmarshal(*userInfoResponse, vmessUserList); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(*userInfoResponse), err) + } + + userList := make([]api.UserInfo, len(*vmessUserList)) + for i, user := range *vmessUserList { + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((user.SpeedLimit * 1000000) / 8) + } + userList[i] = api.UserInfo{ + UID: user.UID, + Email: "", + UUID: user.VmessUID, + DeviceLimit: c.DeviceLimit, + SpeedLimit: speedlimit, + } + } + + return &userList, nil +} + +// ParseTrojanUserListResponse parse the response for the given userinfo format +func (c *APIClient) ParseTrojanUserListResponse(userInfoResponse *json.RawMessage) (*[]api.UserInfo, error) { + var speedlimit uint64 = 0 + + trojanUserList := new([]*TrojanUser) + if err := json.Unmarshal(*userInfoResponse, trojanUserList); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(*userInfoResponse), err) + } + + userList := make([]api.UserInfo, len(*trojanUserList)) + for i, user := range *trojanUserList { + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((user.SpeedLimit * 1000000) / 8) + } + userList[i] = api.UserInfo{ + UID: user.UID, + Email: "", + UUID: user.Password, + DeviceLimit: c.DeviceLimit, + SpeedLimit: speedlimit, + } + } + + return &userList, nil +} + +// ParseSSUserListResponse parse the response for the given userinfo format +func (c *APIClient) ParseSSUserListResponse(userInfoResponse *json.RawMessage) (*[]api.UserInfo, error) { + var speedlimit uint64 = 0 + + ssUserList := new([]*SSUser) + if err := json.Unmarshal(*userInfoResponse, ssUserList); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(*userInfoResponse), err) + } + + userList := make([]api.UserInfo, len(*ssUserList)) + for i, user := range *ssUserList { + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((user.SpeedLimit * 1000000) / 8) + } + userList[i] = api.UserInfo{ + UID: user.UID, + Email: "", + Passwd: user.Password, + DeviceLimit: c.DeviceLimit, + SpeedLimit: speedlimit, + } + } + + return &userList, nil +} diff --git a/api/proxypanel/proypanel_test.go b/api/proxypanel/proypanel_test.go new file mode 100644 index 0000000..7b7bb0a --- /dev/null +++ b/api/proxypanel/proypanel_test.go @@ -0,0 +1,165 @@ +package proxypanel_test + +import ( + "fmt" + "testing" + + "github.com/XrayR-project/XrayR/api" + "github.com/XrayR-project/XrayR/api/proxypanel" +) + +func CreateClient() api.API { + apiConfig := &api.Config{ + APIHost: "http://127.0.0.1:8888", + Key: "naBDpLvREiwY9qPr", + NodeID: 1, + NodeType: "V2ray", + } + client := proxypanel.New(apiConfig) + return client +} + +func TestGetV2rayNodeinfo(t *testing.T) { + apiConfig := &api.Config{ + APIHost: "http://127.0.0.1:8888", + Key: "naBDpLvREiwY9qPr", + NodeID: 1, + NodeType: "V2ray", + } + client := proxypanel.New(apiConfig) + + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetSSNodeinfo(t *testing.T) { + apiConfig := &api.Config{ + APIHost: "http://127.0.0.1:8888", + Key: "8VtrYVGFHL0Q9azc", + NodeID: 3, + NodeType: "Shadowsocks", + } + client := proxypanel.New(apiConfig) + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetTrojanNodeinfo(t *testing.T) { + apiConfig := &api.Config{ + APIHost: "http://127.0.0.1:8888", + Key: "kgnO2O66FmvP8rDV", + NodeID: 2, + NodeType: "Trojan", + } + client := proxypanel.New(apiConfig) + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetSSinfo(t *testing.T) { + client := CreateClient() + + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetUserList(t *testing.T) { + client := CreateClient() + + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + + t.Log(userList) +} + +func TestReportNodeStatus(t *testing.T) { + client := CreateClient() + nodeStatus := &api.NodeStatus{ + 1, 1, 1, 256, + } + err := client.ReportNodeStatus(nodeStatus) + if err != nil { + t.Error(err) + } +} + +func TestReportReportNodeOnlineUsers(t *testing.T) { + client := CreateClient() + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + + onlineUserList := make([]api.OnlineUser, len(*userList)) + for i, userInfo := range *userList { + onlineUserList[i] = api.OnlineUser{ + UID: userInfo.UID, + IP: fmt.Sprintf("1.1.1.%d", i), + } + } + //client.Debug() + err = client.ReportNodeOnlineUsers(&onlineUserList) + if err != nil { + t.Error(err) + } +} + +func TestReportReportUserTraffic(t *testing.T) { + client := CreateClient() + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + generalUserTraffic := make([]api.UserTraffic, len(*userList)) + for i, userInfo := range *userList { + generalUserTraffic[i] = api.UserTraffic{ + UID: userInfo.UID, + Upload: 114514, + Download: 114514, + } + } + client.Debug() + err = client.ReportUserTraffic(&generalUserTraffic) + if err != nil { + t.Error(err) + } +} + +func TestGetNodeRule(t *testing.T) { + client := CreateClient() + client.Debug() + ruleList, err := client.GetNodeRule() + if err != nil { + t.Error(err) + } + + t.Log(ruleList) +} + +func TestReportIllegal(t *testing.T) { + client := CreateClient() + + detectResult := []api.DetectResult{ + api.DetectResult{1, 1}, + api.DetectResult{1, 2}, + } + client.Debug() + err := client.ReportIllegal(&detectResult) + if err != nil { + t.Error(err) + } +} diff --git a/api/sspanel/model.go b/api/sspanel/model.go new file mode 100644 index 0000000..0f87b0c --- /dev/null +++ b/api/sspanel/model.go @@ -0,0 +1,105 @@ +package sspanel + +import "encoding/json" + +// NodeInfoResponse is the response of node +type NodeInfoResponse struct { + Group int `json:"node_group"` + Class int `json:"node_class"` + SpeedLimit float64 `json:"node_speedlimit"` + TrafficRate float64 `json:"traffic_rate"` + MuOnly int `json:"mu_only"` + Sort int `json:"sort"` + RawServerString string `json:"server"` + Type string `json:"type"` + CustomConfig json.RawMessage `json:"custom_config"` + Version string `json:"version"` +} + +type CustomConfig struct { + OffsetPortUser string `json:"offset_port_user"` + OffsetPortNode string `json:"offset_port_node"` + ServerSub string `json:"server_sub"` + Host string `json:"host"` + MuPort string `json:"mu_port"` + MuEncryption string `json:"mu_encryption"` + MuProtocol string `json:"mu_protocol"` + MuObfs string `json:"mu_obfs"` + MuSuffix string `json:"mu_suffix"` + V2Port string `json:"v2_port"` + TLS string `json:"tls"` + EnableVless string `json:"enable_vless"` + AlterID string `json:"alter_id"` + Network string `json:"network"` + Security string `json:"security"` + Path string `json:"path"` + VerifyCert bool `json:"verify_cert"` + Obfs string `json:"obfs"` + Header json.RawMessage `json:"header"` + TrojanPort string `json:"trojan_port"` + AllowInsecure string `json:"allow_insecure"` + Grpc string `json:"grpc"` + Servicename string `json:"servicename"` + EnableXtls string `json:"enable_xtls"` + Flow string `json:"flow"` +} + +// UserResponse is the response of user +type UserResponse struct { + ID int `json:"id"` + Email string `json:"email"` + Passwd string `json:"passwd"` + Port int `json:"port"` + Method string `json:"method"` + SpeedLimit float64 `json:"node_speedlimit"` + DeviceLimit int `json:"node_connector"` + Protocol string `json:"protocol"` + ProtocolParam string `json:"protocol_param"` + Obfs string `json:"obfs"` + ObfsParam string `json:"obfs_param"` + ForbiddenIP string `json:"forbidden_ip"` + ForbiddenPort string `json:"forbidden_port"` + UUID string `json:"uuid"` + MultiUser int `json:"is_multi_user"` + AliveIP int `json:"alive_ip"` +} + +// Response is the common response +type Response struct { + Ret uint `json:"ret"` + Data json.RawMessage `json:"data"` +} + +// PostData is the data structure of post data +type PostData struct { + Data interface{} `json:"data"` +} + +// SystemLoad is the data structure of systemload +type SystemLoad struct { + Uptime string `json:"uptime"` + Load string `json:"load"` +} + +// OnlineUser is the data structure of online user +type OnlineUser struct { + UID int `json:"user_id"` + IP string `json:"ip"` +} + +// UserTraffic is the data structure of traffic +type UserTraffic struct { + UID int `json:"user_id"` + Upload int64 `json:"u"` + Download int64 `json:"d"` +} + +type RuleItem struct { + ID int `json:"id"` + Content string `json:"regex"` +} + +type IllegalItem struct { + ID int `json:"list_id"` + UID int `json:"user_id"` +} diff --git a/api/sspanel/sspanel.go b/api/sspanel/sspanel.go new file mode 100644 index 0000000..72552aa --- /dev/null +++ b/api/sspanel/sspanel.go @@ -0,0 +1,798 @@ +package sspanel + +import ( + "bufio" + "encoding/json" + "fmt" + "log" + "os" + "reflect" + "regexp" + "strconv" + "strings" + "sync" + "time" + + "github.com/XrayR-project/XrayR/api" + "github.com/go-resty/resty/v2" +) + +var ( + firstPortRe = regexp.MustCompile(`(?m)port=(?P\d+)#?`) // First Port + secondPortRe = regexp.MustCompile(`(?m)port=\d+#(\d+)`) // Second Port + hostRe = regexp.MustCompile(`(?m)host=([\w\.]+)\|?`) // Host +) + +// APIClient create a api client to the panel. +type APIClient struct { + client *resty.Client + APIHost string + NodeID int + Key string + NodeType string + EnableVless bool + EnableXTLS bool + SpeedLimit float64 + DeviceLimit int + DisableCustomConfig bool + LocalRuleList []api.DetectRule + LastReportOnline map[int]int + access sync.Mutex +} + +// New creat a api instance +func New(apiConfig *api.Config) *APIClient { + + client := resty.New() + client.SetRetryCount(3) + if apiConfig.Timeout > 0 { + client.SetTimeout(time.Duration(apiConfig.Timeout) * time.Second) + } else { + client.SetTimeout(5 * time.Second) + } + client.OnError(func(req *resty.Request, err error) { + if v, ok := err.(*resty.ResponseError); ok { + // v.Response contains the last response from the server + // v.Err contains the original error + log.Print(v.Err) + } + }) + client.SetBaseURL(apiConfig.APIHost) + // Create Key for each requests + client.SetQueryParam("key", apiConfig.Key) + // Add support for muKey + client.SetQueryParam("muKey", apiConfig.Key) + // Read local rule list + localRuleList := readLocalRuleList(apiConfig.RuleListPath) + + return &APIClient{ + client: client, + NodeID: apiConfig.NodeID, + Key: apiConfig.Key, + APIHost: apiConfig.APIHost, + NodeType: apiConfig.NodeType, + EnableVless: apiConfig.EnableVless, + EnableXTLS: apiConfig.EnableXTLS, + SpeedLimit: apiConfig.SpeedLimit, + DeviceLimit: apiConfig.DeviceLimit, + LocalRuleList: localRuleList, + DisableCustomConfig: apiConfig.DisableCustomConfig, + LastReportOnline: make(map[int]int), + } +} + +// readLocalRuleList reads the local rule list file +func readLocalRuleList(path string) (LocalRuleList []api.DetectRule) { + + LocalRuleList = make([]api.DetectRule, 0) + if path != "" { + // open the file + file, err := os.Open(path) + + //handle errors while opening + if err != nil { + log.Printf("Error when opening file: %s", err) + return LocalRuleList + } + + fileScanner := bufio.NewScanner(file) + + // read line by line + for fileScanner.Scan() { + LocalRuleList = append(LocalRuleList, api.DetectRule{ + ID: -1, + Pattern: regexp.MustCompile(fileScanner.Text()), + }) + } + // handle first encountered error while reading + if err := fileScanner.Err(); err != nil { + log.Fatalf("Error while reading file: %s", err) + return make([]api.DetectRule, 0) + } + + file.Close() + } + + return LocalRuleList +} + +// Describe return a description of the client +func (c *APIClient) Describe() api.ClientInfo { + return api.ClientInfo{APIHost: c.APIHost, NodeID: c.NodeID, Key: c.Key, NodeType: c.NodeType} +} + +// Debug set the client debug for client +func (c *APIClient) Debug() { + c.client.SetDebug(true) +} + +func (c *APIClient) assembleURL(path string) string { + return c.APIHost + path +} + +func (c *APIClient) parseResponse(res *resty.Response, path string, err error) (*Response, error) { + if err != nil { + return nil, fmt.Errorf("request %s failed: %s", c.assembleURL(path), err) + } + + if res.StatusCode() > 400 { + body := res.Body() + return nil, fmt.Errorf("request %s failed: %s, %s", c.assembleURL(path), string(body), err) + } + response := res.Result().(*Response) + + if response.Ret != 1 { + res, _ := json.Marshal(&response) + return nil, fmt.Errorf("Ret %s invalid", string(res)) + } + return response, nil +} + +// GetNodeInfo will pull NodeInfo Config from sspanel +func (c *APIClient) GetNodeInfo() (nodeInfo *api.NodeInfo, err error) { + path := fmt.Sprintf("/mod_mu/nodes/%d/info", c.NodeID) + res, err := c.client.R(). + SetResult(&Response{}). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + + nodeInfoResponse := new(NodeInfoResponse) + + if err := json.Unmarshal(response.Data, nodeInfoResponse); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(nodeInfoResponse), err) + } + + // New sspanel API + disableCustomConfig := c.DisableCustomConfig + if nodeInfoResponse.Version == "2021.11" && !disableCustomConfig { + // Check if custom_config is empty + if configString, err := json.Marshal(nodeInfoResponse.CustomConfig); err != nil || string(configString) == "[]" { + log.Printf("custom_config is empty! take config from address now.") + disableCustomConfig = true + } + } else { + disableCustomConfig = true + } + + if !disableCustomConfig { + nodeInfo, err = c.ParseSSPanelNodeInfo(nodeInfoResponse) + if err != nil { + res, _ := json.Marshal(nodeInfoResponse) + return nil, fmt.Errorf("Parse node info failed: %s, \nError: %s, \nPlease check the doc of custom_config for help: https://crackair.gitbook.io/xrayr-project/dui-jie-sspanel/sspanel/sspanel_custom_config", string(res), err) + } + } else { + switch c.NodeType { + case "V2ray": + nodeInfo, err = c.ParseV2rayNodeResponse(nodeInfoResponse) + case "Trojan": + nodeInfo, err = c.ParseTrojanNodeResponse(nodeInfoResponse) + case "Shadowsocks": + nodeInfo, err = c.ParseSSNodeResponse(nodeInfoResponse) + case "Shadowsocks-Plugin": + nodeInfo, err = c.ParseSSPluginNodeResponse(nodeInfoResponse) + default: + return nil, fmt.Errorf("Unsupported Node type: %s", c.NodeType) + } + } + + if err != nil { + res, _ := json.Marshal(nodeInfoResponse) + return nil, fmt.Errorf("Parse node info failed: %s, \nError: %s", string(res), err) + } + + return nodeInfo, nil +} + +// GetUserList will pull user form sspanel +func (c *APIClient) GetUserList() (UserList *[]api.UserInfo, err error) { + path := "/mod_mu/users" + res, err := c.client.R(). + SetQueryParam("node_id", strconv.Itoa(c.NodeID)). + SetResult(&Response{}). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + + userListResponse := new([]UserResponse) + + if err := json.Unmarshal(response.Data, userListResponse); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(userListResponse), err) + } + userList, err := c.ParseUserListResponse(userListResponse) + if err != nil { + res, _ := json.Marshal(userListResponse) + return nil, fmt.Errorf("Parse user list failed: %s", string(res)) + } + return userList, nil +} + +// ReportNodeStatus reports the node status to the sspanel +func (c *APIClient) ReportNodeStatus(nodeStatus *api.NodeStatus) (err error) { + path := fmt.Sprintf("/mod_mu/nodes/%d/info", c.NodeID) + systemload := SystemLoad{ + Uptime: strconv.Itoa(nodeStatus.Uptime), + Load: fmt.Sprintf("%.2f %.2f %.2f", nodeStatus.CPU/100, nodeStatus.CPU/100, nodeStatus.CPU/100), + } + + res, err := c.client.R(). + SetBody(systemload). + SetResult(&Response{}). + ForceContentType("application/json"). + Post(path) + + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + + return nil +} + +//ReportNodeOnlineUsers reports online user ip +func (c *APIClient) ReportNodeOnlineUsers(onlineUserList *[]api.OnlineUser) error { + c.access.Lock() + defer c.access.Unlock() + + reportOnline := make(map[int]int) + data := make([]OnlineUser, len(*onlineUserList)) + for i, user := range *onlineUserList { + data[i] = OnlineUser{UID: user.UID, IP: user.IP} + if _, ok := reportOnline[user.UID]; ok { + reportOnline[user.UID]++ + } else { + reportOnline[user.UID] = 1 + } + } + c.LastReportOnline = reportOnline // Update LastReportOnline + + postData := &PostData{Data: data} + path := fmt.Sprintf("/mod_mu/users/aliveip") + res, err := c.client.R(). + SetQueryParam("node_id", strconv.Itoa(c.NodeID)). + SetBody(postData). + SetResult(&Response{}). + ForceContentType("application/json"). + Post(path) + + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + + return nil +} + +// ReportUserTraffic reports the user traffic +func (c *APIClient) ReportUserTraffic(userTraffic *[]api.UserTraffic) error { + + data := make([]UserTraffic, len(*userTraffic)) + for i, traffic := range *userTraffic { + data[i] = UserTraffic{ + UID: traffic.UID, + Upload: traffic.Upload, + Download: traffic.Download} + } + postData := &PostData{Data: data} + path := "/mod_mu/users/traffic" + res, err := c.client.R(). + SetQueryParam("node_id", strconv.Itoa(c.NodeID)). + SetBody(postData). + SetResult(&Response{}). + ForceContentType("application/json"). + Post(path) + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + + return nil +} + +// GetNodeRule will pull the audit rule form sspanel +func (c *APIClient) GetNodeRule() (*[]api.DetectRule, error) { + ruleList := c.LocalRuleList + path := "/mod_mu/func/detect_rules" + res, err := c.client.R(). + SetResult(&Response{}). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + + ruleListResponse := new([]RuleItem) + + if err := json.Unmarshal(response.Data, ruleListResponse); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(ruleListResponse), err) + } + + for _, r := range *ruleListResponse { + ruleList = append(ruleList, api.DetectRule{ + ID: r.ID, + Pattern: regexp.MustCompile(r.Content), + }) + } + return &ruleList, nil +} + +// ReportIllegal reports the user illegal behaviors +func (c *APIClient) ReportIllegal(detectResultList *[]api.DetectResult) error { + + data := make([]IllegalItem, len(*detectResultList)) + for i, r := range *detectResultList { + data[i] = IllegalItem{ + ID: r.RuleID, + UID: r.UID, + } + } + postData := &PostData{Data: data} + path := "/mod_mu/users/detectlog" + res, err := c.client.R(). + SetQueryParam("node_id", strconv.Itoa(c.NodeID)). + SetBody(postData). + SetResult(&Response{}). + ForceContentType("application/json"). + Post(path) + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + return nil +} + +// ParseV2rayNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseV2rayNodeResponse(nodeInfoResponse *NodeInfoResponse) (*api.NodeInfo, error) { + var enableTLS bool + var path, host, TLStype, transportProtocol, serviceName, HeaderType string + var header json.RawMessage + var speedlimit uint64 = 0 + if nodeInfoResponse.RawServerString == "" { + return nil, fmt.Errorf("No server info in response") + } + //nodeInfo.RawServerString = strings.ToLower(nodeInfo.RawServerString) + serverConf := strings.Split(nodeInfoResponse.RawServerString, ";") + port, err := strconv.Atoi(serverConf[1]) + if err != nil { + return nil, err + } + alterID, err := strconv.Atoi(serverConf[2]) + if err != nil { + return nil, err + } + // Compatible with more node types config + for _, value := range serverConf[3:5] { + switch value { + case "tls", "xtls": + if c.EnableXTLS { + TLStype = "xtls" + } else { + TLStype = "tls" + } + enableTLS = true + default: + if value != "" { + transportProtocol = value + } + } + } + extraServerConf := strings.Split(serverConf[5], "|") + serviceName = "" + for _, item := range extraServerConf { + conf := strings.Split(item, "=") + key := conf[0] + if key == "" { + continue + } + value := conf[1] + switch key { + case "path": + rawPath := strings.Join(conf[1:], "=") // In case of the path strings contains the "=" + path = rawPath + case "host": + host = value + case "servicename": + serviceName = value + case "headertype": + HeaderType = value + } + } + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((nodeInfoResponse.SpeedLimit * 1000000) / 8) + } + + if HeaderType != "" { + headers := map[string]string{"type": HeaderType} + header, err = json.Marshal(headers) + } + + if err != nil { + return nil, fmt.Errorf("Marshal Header Type %s into config fialed: %s", header, err) + } + + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + SpeedLimit: speedlimit, + AlterID: alterID, + TransportProtocol: transportProtocol, + EnableTLS: enableTLS, + TLSType: TLStype, + Path: path, + Host: host, + EnableVless: c.EnableVless, + ServiceName: serviceName, + Header: header, + } + + return nodeinfo, nil +} + +// ParseSSNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseSSNodeResponse(nodeInfoResponse *NodeInfoResponse) (*api.NodeInfo, error) { + var port int = 0 + var speedlimit uint64 = 0 + var method string + path := "/mod_mu/users" + res, err := c.client.R(). + SetQueryParam("node_id", strconv.Itoa(c.NodeID)). + SetResult(&Response{}). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + + userListResponse := new([]UserResponse) + + if err := json.Unmarshal(response.Data, userListResponse); err != nil { + return nil, fmt.Errorf("Unmarshal %s failed: %s", reflect.TypeOf(userListResponse), err) + } + // Find the multi-user + for _, u := range *userListResponse { + if u.MultiUser > 0 { + port = u.Port + method = u.Method + break + } + } + if port == 0 || method == "" { + return nil, fmt.Errorf("Cant find the single port multi user") + } + + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((nodeInfoResponse.SpeedLimit * 1000000) / 8) + } + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + SpeedLimit: speedlimit, + TransportProtocol: "tcp", + CypherMethod: method, + } + + return nodeinfo, nil +} + +// ParseSSPluginNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseSSPluginNodeResponse(nodeInfoResponse *NodeInfoResponse) (*api.NodeInfo, error) { + var enableTLS bool + var path, host, TLStype, transportProtocol string + var speedlimit uint64 = 0 + + serverConf := strings.Split(nodeInfoResponse.RawServerString, ";") + port, err := strconv.Atoi(serverConf[1]) + if err != nil { + return nil, err + } + port = port - 1 // Shadowsocks-Plugin requires two ports, one for ss the other for other stream protocol + if port <= 0 { + return nil, fmt.Errorf("Shadowsocks-Plugin listen port must bigger than 1") + } + // Compatible with more node types config + for _, value := range serverConf[3:5] { + switch value { + case "tls", "xtls": + if c.EnableXTLS { + TLStype = "xtls" + } else { + TLStype = "tls" + } + enableTLS = true + case "ws": + transportProtocol = "ws" + case "obfs": + transportProtocol = "tcp" + } + } + + extraServerConf := strings.Split(serverConf[5], "|") + for _, item := range extraServerConf { + conf := strings.Split(item, "=") + key := conf[0] + if key == "" { + continue + } + value := conf[1] + switch key { + case "path": + rawPath := strings.Join(conf[1:], "=") // In case of the path strings contains the "=" + path = rawPath + case "host": + host = value + } + } + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((nodeInfoResponse.SpeedLimit * 1000000) / 8) + } + + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + SpeedLimit: speedlimit, + TransportProtocol: transportProtocol, + EnableTLS: enableTLS, + TLSType: TLStype, + Path: path, + Host: host, + } + + return nodeinfo, nil +} + +// ParseTrojanNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseTrojanNodeResponse(nodeInfoResponse *NodeInfoResponse) (*api.NodeInfo, error) { + // 域名或IP;port=连接端口#偏移端口|host=xx + // gz.aaa.com;port=443#12345|host=hk.aaa.com + var p, TLSType, host, outsidePort, insidePort, transportProtocol, serviceName string + var speedlimit uint64 = 0 + if c.EnableXTLS { + TLSType = "xtls" + } else { + TLSType = "tls" + } + + if nodeInfoResponse.RawServerString == "" { + return nil, fmt.Errorf("No server info in response") + } + if result := firstPortRe.FindStringSubmatch(nodeInfoResponse.RawServerString); len(result) > 1 { + outsidePort = result[1] + } + if result := secondPortRe.FindStringSubmatch(nodeInfoResponse.RawServerString); len(result) > 1 { + insidePort = result[1] + } + if result := hostRe.FindStringSubmatch(nodeInfoResponse.RawServerString); len(result) > 1 { + host = result[1] + } + + if insidePort != "" { + p = insidePort + } else { + p = outsidePort + } + + port, err := strconv.Atoi(p) + if err != nil { + return nil, err + } + + serverConf := strings.Split(nodeInfoResponse.RawServerString, ";") + extraServerConf := strings.Split(serverConf[1], "|") + transportProtocol = "tcp" + serviceName = "" + for _, item := range extraServerConf { + conf := strings.Split(item, "=") + key := conf[0] + if key == "" { + continue + } + value := conf[1] + switch key { + case "grpc": + transportProtocol = "grpc" + case "servicename": + serviceName = value + } + } + + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((nodeInfoResponse.SpeedLimit * 1000000) / 8) + } + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + SpeedLimit: speedlimit, + TransportProtocol: transportProtocol, + EnableTLS: true, + TLSType: TLSType, + Host: host, + ServiceName: serviceName, + } + + return nodeinfo, nil +} + +// ParseUserListResponse parse the response for the given nodeinfo format +func (c *APIClient) ParseUserListResponse(userInfoResponse *[]UserResponse) (*[]api.UserInfo, error) { + c.access.Lock() + // Clear Last report log + defer func() { + c.LastReportOnline = make(map[int]int) + c.access.Unlock() + }() + + var deviceLimit, localDeviceLimit int = 0, 0 + var speedlimit uint64 = 0 + userList := []api.UserInfo{} + for _, user := range *userInfoResponse { + if c.DeviceLimit > 0 { + deviceLimit = c.DeviceLimit + } else { + deviceLimit = user.DeviceLimit + } + + // If there is still device available, add the user + if deviceLimit > 0 && user.AliveIP > 0 { + lastOnline := 0 + if v, ok := c.LastReportOnline[user.ID]; ok { + lastOnline = v + } + // If there are any available device. + if localDeviceLimit = deviceLimit - user.AliveIP + lastOnline; localDeviceLimit > 0 { + deviceLimit = localDeviceLimit + // If this backend server has reported any user in the last reporting period. + } else if lastOnline > 0 { + deviceLimit = lastOnline + // Remove this user. + } else { + continue + } + } + + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((user.SpeedLimit * 1000000) / 8) + } + userList = append(userList, api.UserInfo{ + UID: user.ID, + Email: user.Email, + UUID: user.UUID, + Passwd: user.Passwd, + SpeedLimit: speedlimit, + DeviceLimit: deviceLimit, + Port: user.Port, + Method: user.Method, + Protocol: user.Protocol, + ProtocolParam: user.ProtocolParam, + Obfs: user.Obfs, + ObfsParam: user.ObfsParam, + }) + } + + return &userList, nil +} + +// ParseSSPanelNodeInfo parse the response for the given nodeinfor format +// Only used for SSPanel version >= 2021.11 +func (c *APIClient) ParseSSPanelNodeInfo(nodeInfoResponse *NodeInfoResponse) (*api.NodeInfo, error) { + + var speedlimit uint64 = 0 + var EnableTLS, EnableVless bool + var AlterID int = 0 + var TLSType, transportProtocol string + + nodeConfig := new(CustomConfig) + json.Unmarshal(nodeInfoResponse.CustomConfig, nodeConfig) + + if c.SpeedLimit > 0 { + speedlimit = uint64((c.SpeedLimit * 1000000) / 8) + } else { + speedlimit = uint64((nodeInfoResponse.SpeedLimit * 1000000) / 8) + } + + port, err := strconv.Atoi(nodeConfig.OffsetPortNode) + if err != nil { + return nil, err + } + + if c.NodeType == "Shadowsocks" { + transportProtocol = "tcp" + } + + if c.NodeType == "V2ray" { + transportProtocol = nodeConfig.Network + TLSType = nodeConfig.Security + if AlterID, err = strconv.Atoi(nodeConfig.AlterID); err != nil { + return nil, err + } + if TLSType == "tls" || TLSType == "xtls" { + EnableTLS = true + } + if nodeConfig.EnableVless == "1" { + EnableVless = true + } + } + + if c.NodeType == "Trojan" { + EnableTLS = true + TLSType = "tls" + if nodeConfig.Grpc == "1" { + transportProtocol = "grpc" + } else { + transportProtocol = "tcp" + } + + if nodeConfig.EnableXtls == "1" { + TLSType = "xtls" + } + } + + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + SpeedLimit: speedlimit, + AlterID: AlterID, + TransportProtocol: transportProtocol, + Host: nodeConfig.Host, + Path: nodeConfig.Path, + EnableTLS: EnableTLS, + TLSType: TLSType, + EnableVless: EnableVless, + CypherMethod: nodeConfig.MuEncryption, + ServiceName: nodeConfig.Servicename, + Header: nodeConfig.Header, + } + + return nodeinfo, nil +} diff --git a/api/sspanel/sspanel_test.go b/api/sspanel/sspanel_test.go new file mode 100644 index 0000000..7ef4a28 --- /dev/null +++ b/api/sspanel/sspanel_test.go @@ -0,0 +1,159 @@ +package sspanel_test + +import ( + "fmt" + "testing" + + "github.com/XrayR-project/XrayR/api" + "github.com/XrayR-project/XrayR/api/sspanel" +) + +func CreateClient() api.API { + apiConfig := &api.Config{ + APIHost: "http://127.0.0.1:667", + Key: "123", + NodeID: 3, + NodeType: "V2ray", + } + client := sspanel.New(apiConfig) + return client +} + +func TestGetV2rayNodeinfo(t *testing.T) { + client := CreateClient() + + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetSSNodeinfo(t *testing.T) { + apiConfig := &api.Config{ + APIHost: "http://127.0.0.1:667", + Key: "123", + NodeID: 64, + NodeType: "Shadowsocks", + } + client := sspanel.New(apiConfig) + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetTrojanNodeinfo(t *testing.T) { + apiConfig := &api.Config{ + APIHost: "http://127.0.0.1:667", + Key: "123", + NodeID: 72, + NodeType: "Trojan", + } + client := sspanel.New(apiConfig) + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetSSinfo(t *testing.T) { + client := CreateClient() + + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetUserList(t *testing.T) { + client := CreateClient() + + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + + t.Log(userList) +} + +func TestReportNodeStatus(t *testing.T) { + client := CreateClient() + nodeStatus := &api.NodeStatus{ + 1, 1, 1, 256, + } + err := client.ReportNodeStatus(nodeStatus) + if err != nil { + t.Error(err) + } +} + +func TestReportReportNodeOnlineUsers(t *testing.T) { + client := CreateClient() + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + + onlineUserList := make([]api.OnlineUser, len(*userList)) + for i, userInfo := range *userList { + onlineUserList[i] = api.OnlineUser{ + UID: userInfo.UID, + IP: fmt.Sprintf("1.1.1.%d", i), + } + } + //client.Debug() + err = client.ReportNodeOnlineUsers(&onlineUserList) + if err != nil { + t.Error(err) + } +} + +func TestReportReportUserTraffic(t *testing.T) { + client := CreateClient() + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + generalUserTraffic := make([]api.UserTraffic, len(*userList)) + for i, userInfo := range *userList { + generalUserTraffic[i] = api.UserTraffic{ + UID: userInfo.UID, + Upload: 114514, + Download: 114514, + } + } + //client.Debug() + err = client.ReportUserTraffic(&generalUserTraffic) + if err != nil { + t.Error(err) + } +} + +func TestGetNodeRule(t *testing.T) { + client := CreateClient() + + ruleList, err := client.GetNodeRule() + if err != nil { + t.Error(err) + } + + t.Log(ruleList) +} + +func TestReportIllegal(t *testing.T) { + client := CreateClient() + + detectResult := []api.DetectResult{ + api.DetectResult{1, 2}, + api.DetectResult{1, 3}, + } + client.Debug() + err := client.ReportIllegal(&detectResult) + if err != nil { + t.Error(err) + } +} diff --git a/api/v2board/model.go b/api/v2board/model.go new file mode 100644 index 0000000..606995a --- /dev/null +++ b/api/v2board/model.go @@ -0,0 +1,7 @@ +package v2board + +type UserTraffic struct { + UID int `json:"user_id"` + Upload int64 `json:"u"` + Download int64 `json:"d"` +} diff --git a/api/v2board/v2board.go b/api/v2board/v2board.go new file mode 100644 index 0000000..1c134d0 --- /dev/null +++ b/api/v2board/v2board.go @@ -0,0 +1,419 @@ +package v2board + +import ( + "bufio" + "encoding/json" + "fmt" + "log" + "os" + "regexp" + "strconv" + "sync" + "time" + + "github.com/XrayR-project/XrayR/api" + "github.com/bitly/go-simplejson" + "github.com/go-resty/resty/v2" +) + +// APIClient create an api client to the panel. +type APIClient struct { + client *resty.Client + APIHost string + NodeID int + Key string + NodeType string + EnableVless bool + EnableXTLS bool + SpeedLimit float64 + DeviceLimit int + LocalRuleList []api.DetectRule + ConfigResp *simplejson.Json + access sync.Mutex +} + +// New create an api instance +func New(apiConfig *api.Config) *APIClient { + + client := resty.New() + client.SetRetryCount(3) + if apiConfig.Timeout > 0 { + client.SetTimeout(time.Duration(apiConfig.Timeout) * time.Second) + } else { + client.SetTimeout(5 * time.Second) + } + client.OnError(func(req *resty.Request, err error) { + if v, ok := err.(*resty.ResponseError); ok { + // v.Response contains the last response from the server + // v.Err contains the original error + log.Print(v.Err) + } + }) + client.SetBaseURL(apiConfig.APIHost) + // Create Key for each requests + client.SetQueryParams(map[string]string{ + "node_id": strconv.Itoa(apiConfig.NodeID), + "token": apiConfig.Key, + }) + // Read local rule list + localRuleList := readLocalRuleList(apiConfig.RuleListPath) + apiClient := &APIClient{ + client: client, + NodeID: apiConfig.NodeID, + Key: apiConfig.Key, + APIHost: apiConfig.APIHost, + NodeType: apiConfig.NodeType, + EnableVless: apiConfig.EnableVless, + EnableXTLS: apiConfig.EnableXTLS, + SpeedLimit: apiConfig.SpeedLimit, + DeviceLimit: apiConfig.DeviceLimit, + LocalRuleList: localRuleList, + } + return apiClient +} + +// readLocalRuleList reads the local rule list file +func readLocalRuleList(path string) (LocalRuleList []api.DetectRule) { + + LocalRuleList = make([]api.DetectRule, 0) + if path != "" { + // open the file + file, err := os.Open(path) + + //handle errors while opening + if err != nil { + log.Printf("Error when opening file: %s", err) + return LocalRuleList + } + + fileScanner := bufio.NewScanner(file) + + // read line by line + for fileScanner.Scan() { + LocalRuleList = append(LocalRuleList, api.DetectRule{ + ID: -1, + Pattern: regexp.MustCompile(fileScanner.Text()), + }) + } + // handle first encountered error while reading + if err := fileScanner.Err(); err != nil { + log.Fatalf("Error while reading file: %s", err) + return make([]api.DetectRule, 0) + } + + file.Close() + } + + return LocalRuleList +} + +// Describe return a description of the client +func (c *APIClient) Describe() api.ClientInfo { + return api.ClientInfo{APIHost: c.APIHost, NodeID: c.NodeID, Key: c.Key, NodeType: c.NodeType} +} + +// Debug set the client debug for client +func (c *APIClient) Debug() { + c.client.SetDebug(true) +} + +func (c *APIClient) assembleURL(path string) string { + return c.APIHost + path +} + +func (c *APIClient) parseResponse(res *resty.Response, path string, err error) (*simplejson.Json, error) { + if err != nil { + return nil, fmt.Errorf("request %s failed: %s", c.assembleURL(path), err) + } + + if res.StatusCode() > 400 { + body := res.Body() + return nil, fmt.Errorf("request %s failed: %s, %s", c.assembleURL(path), string(body), err) + } + rtn, err := simplejson.NewJson(res.Body()) + if err != nil { + return nil, fmt.Errorf("Ret %s invalid", res.String()) + } + return rtn, nil +} + +// GetNodeInfo will pull NodeInfo Config from sspanel +func (c *APIClient) GetNodeInfo() (nodeInfo *api.NodeInfo, err error) { + var path string + switch c.NodeType { + case "V2ray": + path = "/api/v1/server/Deepbwork/config" + case "Trojan": + path = "/api/v1/server/TrojanTidalab/config" + case "Shadowsocks": + if nodeInfo, err = c.ParseSSNodeResponse(); err == nil { + return nodeInfo, nil + } else { + return nil, err + } + default: + return nil, fmt.Errorf("unsupported Node type: %s", c.NodeType) + } + res, err := c.client.R(). + SetQueryParam("local_port", "1"). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + c.access.Lock() + defer c.access.Unlock() + c.ConfigResp = response + if err != nil { + return nil, err + } + + switch c.NodeType { + case "V2ray": + nodeInfo, err = c.ParseV2rayNodeResponse(response) + case "Trojan": + nodeInfo, err = c.ParseTrojanNodeResponse(response) + case "Shadowsocks": + nodeInfo, err = c.ParseSSNodeResponse() + default: + return nil, fmt.Errorf("unsupported Node type: %s", c.NodeType) + } + + if err != nil { + res, _ := response.MarshalJSON() + return nil, fmt.Errorf("Parse node info failed: %s, \nError: %s", string(res), err) + } + + return nodeInfo, nil +} + +// GetUserList will pull user form sspanel +func (c *APIClient) GetUserList() (UserList *[]api.UserInfo, err error) { + var path string + switch c.NodeType { + case "V2ray": + path = "/api/v1/server/Deepbwork/user" + case "Trojan": + path = "/api/v1/server/TrojanTidalab/user" + case "Shadowsocks": + path = "/api/v1/server/ShadowsocksTidalab/user" + default: + return nil, fmt.Errorf("unsupported Node type: %s", c.NodeType) + } + res, err := c.client.R(). + ForceContentType("application/json"). + Get(path) + + response, err := c.parseResponse(res, path, err) + if err != nil { + return nil, err + } + numOfUsers := len(response.Get("data").MustArray()) + userList := make([]api.UserInfo, numOfUsers) + for i := 0; i < numOfUsers; i++ { + user := api.UserInfo{} + user.UID = response.Get("data").GetIndex(i).Get("id").MustInt() + user.SpeedLimit = uint64(c.SpeedLimit * 1000000 / 8) + user.DeviceLimit = c.DeviceLimit + switch c.NodeType { + case "Shadowsocks": + user.Email = response.Get("data").GetIndex(i).Get("secret").MustString() + user.Passwd = response.Get("data").GetIndex(i).Get("secret").MustString() + user.Method = response.Get("data").GetIndex(i).Get("cipher").MustString() + user.Port = response.Get("data").GetIndex(i).Get("port").MustInt() + case "Trojan": + user.UUID = response.Get("data").GetIndex(i).Get("trojan_user").Get("password").MustString() + user.Email = response.Get("data").GetIndex(i).Get("trojan_user").Get("password").MustString() + case "V2ray": + user.UUID = response.Get("data").GetIndex(i).Get("v2ray_user").Get("uuid").MustString() + user.Email = response.Get("data").GetIndex(i).Get("v2ray_user").Get("email").MustString() + user.AlterID = response.Get("data").GetIndex(i).Get("v2ray_user").Get("alter_id").MustInt() + } + userList[i] = user + } + return &userList, nil +} + +// ReportUserTraffic reports the user traffic +func (c *APIClient) ReportUserTraffic(userTraffic *[]api.UserTraffic) error { + var path string + switch c.NodeType { + case "V2ray": + path = "/api/v1/server/Deepbwork/submit" + case "Trojan": + path = "/api/v1/server/TrojanTidalab/submit" + case "Shadowsocks": + path = "/api/v1/server/ShadowsocksTidalab/submit" + } + + data := make([]UserTraffic, len(*userTraffic)) + for i, traffic := range *userTraffic { + data[i] = UserTraffic{ + UID: traffic.UID, + Upload: traffic.Upload, + Download: traffic.Download} + } + + res, err := c.client.R(). + SetQueryParam("node_id", strconv.Itoa(c.NodeID)). + SetBody(data). + ForceContentType("application/json"). + Post(path) + _, err = c.parseResponse(res, path, err) + if err != nil { + return err + } + return nil +} + +// GetNodeRule implements the API interface +func (c *APIClient) GetNodeRule() (*[]api.DetectRule, error) { + ruleList := c.LocalRuleList + if c.NodeType != "V2ray" { + return &ruleList, nil + } + + // V2board only support the rule for v2ray + // fix: reuse config response + c.access.Lock() + defer c.access.Unlock() + ruleListResponse := c.ConfigResp.Get("routing").Get("rules").GetIndex(1).Get("domain").MustStringArray() + for i, rule := range ruleListResponse { + ruleListItem := api.DetectRule{ + ID: i, + Pattern: regexp.MustCompile(rule), + } + ruleList = append(ruleList, ruleListItem) + } + return &ruleList, nil +} + +// ReportNodeStatus implements the API interface +func (c *APIClient) ReportNodeStatus(nodeStatus *api.NodeStatus) (err error) { + return nil +} + +//ReportNodeOnlineUsers implements the API interface +func (c *APIClient) ReportNodeOnlineUsers(onlineUserList *[]api.OnlineUser) error { + return nil +} + +// ReportIllegal implements the API interface +func (c *APIClient) ReportIllegal(detectResultList *[]api.DetectResult) error { + return nil +} + +// ParseTrojanNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseTrojanNodeResponse(nodeInfoResponse *simplejson.Json) (*api.NodeInfo, error) { + var TLSType = "tls" + if c.EnableXTLS { + TLSType = "xtls" + } + port := nodeInfoResponse.Get("local_port").MustInt() + host := nodeInfoResponse.Get("ssl").Get("sni").MustString() + + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + TransportProtocol: "tcp", + EnableTLS: true, + TLSType: TLSType, + Host: host, + } + return nodeinfo, nil +} + +// ParseSSNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseSSNodeResponse() (*api.NodeInfo, error) { + var port int + var method string + userInfo, err := c.GetUserList() + if err != nil { + return nil, err + } + if len(*userInfo) > 0 { + port = (*userInfo)[0].Port + method = (*userInfo)[0].Method + } + + // Create GeneralNodeInfo + nodeinfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + TransportProtocol: "tcp", + CypherMethod: method, + } + + return nodeinfo, nil +} + +// ParseV2rayNodeResponse parse the response for the given nodeinfor format +func (c *APIClient) ParseV2rayNodeResponse(nodeInfoResponse *simplejson.Json) (*api.NodeInfo, error) { + var TLSType string = "tls" + var path, host, serviceName string + var header json.RawMessage + var enableTLS bool + var alterID int = 0 + if c.EnableXTLS { + TLSType = "xtls" + } + + inboundInfo := simplejson.New() + if tmpInboundInfo, ok := nodeInfoResponse.CheckGet("inbound"); ok { + inboundInfo = tmpInboundInfo + // Compatible with v2board 1.5.5-dev + } else if tmpInboundInfo, ok := nodeInfoResponse.CheckGet("inbounds"); ok { + tmpInboundInfo := tmpInboundInfo.MustArray() + marshalByte, _ := json.Marshal(tmpInboundInfo[0].(map[string]interface{})) + inboundInfo, _ = simplejson.NewJson(marshalByte) + } else { + return nil, fmt.Errorf("Unable to find inbound(s) in the nodeInfo.") + } + + port := inboundInfo.Get("port").MustInt() + transportProtocol := inboundInfo.Get("streamSettings").Get("network").MustString() + + switch transportProtocol { + case "ws": + path = inboundInfo.Get("streamSettings").Get("wsSettings").Get("path").MustString() + host = inboundInfo.Get("streamSettings").Get("wsSettings").Get("headers").Get("Host").MustString() + case "grpc": + if data, ok := inboundInfo.Get("streamSettings").Get("grpcSettings").CheckGet("serviceName"); ok { + serviceName = data.MustString() + } + case "tcp": + if data, ok := inboundInfo.Get("streamSettings").Get("tcpSettings").CheckGet("header"); ok { + if httpHeader, err := data.MarshalJSON(); err != nil { + return nil, err + } else { + header = httpHeader + } + } + + } + if inboundInfo.Get("streamSettings").Get("security").MustString() == "tls" { + enableTLS = true + } else { + enableTLS = false + } + + // Create GeneralNodeInfo + // AlterID will be updated after next sync + nodeInfo := &api.NodeInfo{ + NodeType: c.NodeType, + NodeID: c.NodeID, + Port: port, + AlterID: alterID, + TransportProtocol: transportProtocol, + EnableTLS: enableTLS, + TLSType: TLSType, + Path: path, + Host: host, + EnableVless: c.EnableVless, + ServiceName: serviceName, + Header: header, + } + return nodeInfo, nil +} diff --git a/api/v2board/v2board_test.go b/api/v2board/v2board_test.go new file mode 100644 index 0000000..68572fa --- /dev/null +++ b/api/v2board/v2board_test.go @@ -0,0 +1,101 @@ +package v2board_test + +import ( + "testing" + + "github.com/XrayR-project/XrayR/api" + "github.com/XrayR-project/XrayR/api/v2board" +) + +func CreateClient() api.API { + apiConfig := &api.Config{ + APIHost: "http://localhost:9897", + Key: "qwertyuiopasdfghjkl", + NodeID: 1, + NodeType: "V2ray", + } + client := v2board.New(apiConfig) + return client +} + +func TestGetV2rayNodeinfo(t *testing.T) { + client := CreateClient() + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetSSNodeinfo(t *testing.T) { + apiConfig := &api.Config{ + APIHost: "http://127.0.0.1:668", + Key: "qwertyuiopasdfghjkl", + NodeID: 1, + NodeType: "Shadowsocks", + } + client := v2board.New(apiConfig) + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetTrojanNodeinfo(t *testing.T) { + apiConfig := &api.Config{ + APIHost: "http://127.0.0.1:668", + Key: "qwertyuiopasdfghjkl", + NodeID: 1, + NodeType: "Trojan", + } + client := v2board.New(apiConfig) + nodeInfo, err := client.GetNodeInfo() + if err != nil { + t.Error(err) + } + t.Log(nodeInfo) +} + +func TestGetUserList(t *testing.T) { + client := CreateClient() + + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + + t.Log(userList) +} + +func TestReportReportUserTraffic(t *testing.T) { + client := CreateClient() + userList, err := client.GetUserList() + if err != nil { + t.Error(err) + } + generalUserTraffic := make([]api.UserTraffic, len(*userList)) + for i, userInfo := range *userList { + generalUserTraffic[i] = api.UserTraffic{ + UID: userInfo.UID, + Upload: 114514, + Download: 114514, + } + } + //client.Debug() + err = client.ReportUserTraffic(&generalUserTraffic) + if err != nil { + t.Error(err) + } +} + +func TestGetNodeRule(t *testing.T) { + client := CreateClient() + client.Debug() + ruleList, err := client.GetNodeRule() + if err != nil { + t.Error(err) + } + + t.Log(ruleList) +} diff --git a/app/app.go b/app/app.go new file mode 100644 index 0000000..e046b65 --- /dev/null +++ b/app/app.go @@ -0,0 +1,2 @@ +// Package app contains the third-party app used to replace the default app in xray-core +package app diff --git a/app/mydispatcher/config.pb.go b/app/mydispatcher/config.pb.go new file mode 100644 index 0000000..59648cc --- /dev/null +++ b/app/mydispatcher/config.pb.go @@ -0,0 +1,204 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.26.0 +// protoc v3.19.4 +// source: config.proto + +package mydispatcher + +import ( + protoreflect "google.golang.org/protobuf/reflect/protoreflect" + protoimpl "google.golang.org/protobuf/runtime/protoimpl" + reflect "reflect" + sync "sync" +) + +const ( + // Verify that this generated code is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion) + // Verify that runtime/protoimpl is sufficiently up-to-date. + _ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20) +) + +type SessionConfig struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *SessionConfig) Reset() { + *x = SessionConfig{} + if protoimpl.UnsafeEnabled { + mi := &file_config_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *SessionConfig) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SessionConfig) ProtoMessage() {} + +func (x *SessionConfig) ProtoReflect() protoreflect.Message { + mi := &file_config_proto_msgTypes[0] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SessionConfig.ProtoReflect.Descriptor instead. +func (*SessionConfig) Descriptor() ([]byte, []int) { + return file_config_proto_rawDescGZIP(), []int{0} +} + +type Config struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Settings *SessionConfig `protobuf:"bytes,1,opt,name=settings,proto3" json:"settings,omitempty"` +} + +func (x *Config) Reset() { + *x = Config{} + if protoimpl.UnsafeEnabled { + mi := &file_config_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) + } +} + +func (x *Config) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Config) ProtoMessage() {} + +func (x *Config) ProtoReflect() protoreflect.Message { + mi := &file_config_proto_msgTypes[1] + if protoimpl.UnsafeEnabled && x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Config.ProtoReflect.Descriptor instead. +func (*Config) Descriptor() ([]byte, []int) { + return file_config_proto_rawDescGZIP(), []int{1} +} + +func (x *Config) GetSettings() *SessionConfig { + if x != nil { + return x.Settings + } + return nil +} + +var File_config_proto protoreflect.FileDescriptor + +var file_config_proto_rawDesc = []byte{ + 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x16, + 0x78, 0x72, 0x61, 0x79, 0x72, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x79, 0x64, 0x69, 0x73, 0x70, + 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x22, 0x15, 0x0a, 0x0d, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, + 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x4a, 0x04, 0x08, 0x01, 0x10, 0x02, 0x22, 0x4b, 0x0a, + 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x41, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x72, 0x61, 0x79, + 0x72, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x79, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, + 0x65, 0x72, 0x2e, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, + 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x42, 0x67, 0x0a, 0x1a, 0x63, 0x6f, + 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x72, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x79, 0x64, 0x69, + 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x50, 0x01, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, + 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x58, 0x72, 0x61, 0x79, 0x52, 0x2d, 0x70, 0x72, 0x6f, + 0x6a, 0x65, 0x63, 0x74, 0x2f, 0x58, 0x72, 0x61, 0x79, 0x52, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x6d, + 0x79, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0xaa, 0x02, 0x15, 0x58, 0x72, + 0x61, 0x79, 0x52, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x4d, 0x79, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, + 0x68, 0x65, 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, +} + +var ( + file_config_proto_rawDescOnce sync.Once + file_config_proto_rawDescData = file_config_proto_rawDesc +) + +func file_config_proto_rawDescGZIP() []byte { + file_config_proto_rawDescOnce.Do(func() { + file_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_config_proto_rawDescData) + }) + return file_config_proto_rawDescData +} + +var file_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) +var file_config_proto_goTypes = []interface{}{ + (*SessionConfig)(nil), // 0: xrayr.app.mydispatcher.SessionConfig + (*Config)(nil), // 1: xrayr.app.mydispatcher.Config +} +var file_config_proto_depIdxs = []int32{ + 0, // 0: xrayr.app.mydispatcher.Config.settings:type_name -> xrayr.app.mydispatcher.SessionConfig + 1, // [1:1] is the sub-list for method output_type + 1, // [1:1] is the sub-list for method input_type + 1, // [1:1] is the sub-list for extension type_name + 1, // [1:1] is the sub-list for extension extendee + 0, // [0:1] is the sub-list for field type_name +} + +func init() { file_config_proto_init() } +func file_config_proto_init() { + if File_config_proto != nil { + return + } + if !protoimpl.UnsafeEnabled { + file_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*SessionConfig); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + file_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { + switch v := v.(*Config); i { + case 0: + return &v.state + case 1: + return &v.sizeCache + case 2: + return &v.unknownFields + default: + return nil + } + } + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_config_proto_rawDesc, + NumEnums: 0, + NumMessages: 2, + NumExtensions: 0, + NumServices: 0, + }, + GoTypes: file_config_proto_goTypes, + DependencyIndexes: file_config_proto_depIdxs, + MessageInfos: file_config_proto_msgTypes, + }.Build() + File_config_proto = out.File + file_config_proto_rawDesc = nil + file_config_proto_goTypes = nil + file_config_proto_depIdxs = nil +} diff --git a/app/mydispatcher/config.proto b/app/mydispatcher/config.proto new file mode 100644 index 0000000..e88a709 --- /dev/null +++ b/app/mydispatcher/config.proto @@ -0,0 +1,15 @@ +syntax = "proto3"; + +package xrayr.app.mydispatcher; +option csharp_namespace = "XrayR.App.Myispatcher"; +option go_package = "github.com/XrayR-project/XrayR/app/mydispatcher"; +option java_package = "com.xrayr.app.mydispatcher"; +option java_multiple_files = true; + +message SessionConfig { + reserved 1; +} + +message Config { + SessionConfig settings = 1; +} diff --git a/app/mydispatcher/default.go b/app/mydispatcher/default.go new file mode 100644 index 0000000..0c123a3 --- /dev/null +++ b/app/mydispatcher/default.go @@ -0,0 +1,491 @@ +package mydispatcher + +//go:generate go run github.com/xtls/xray-core/common/errors/errorgen + +import ( + "context" + "fmt" + "strings" + "sync" + "time" + + "github.com/XrayR-project/XrayR/common/limiter" + "github.com/XrayR-project/XrayR/common/rule" + "github.com/xtls/xray-core/common" + "github.com/xtls/xray-core/common/buf" + "github.com/xtls/xray-core/common/log" + "github.com/xtls/xray-core/common/net" + "github.com/xtls/xray-core/common/protocol" + "github.com/xtls/xray-core/common/session" + "github.com/xtls/xray-core/core" + "github.com/xtls/xray-core/features/dns" + "github.com/xtls/xray-core/features/outbound" + "github.com/xtls/xray-core/features/policy" + "github.com/xtls/xray-core/features/routing" + routing_session "github.com/xtls/xray-core/features/routing/session" + "github.com/xtls/xray-core/features/stats" + "github.com/xtls/xray-core/transport" + "github.com/xtls/xray-core/transport/pipe" +) + +var errSniffingTimeout = newError("timeout on sniffing") + +type cachedReader struct { + sync.Mutex + reader *pipe.Reader + cache buf.MultiBuffer +} + +func (r *cachedReader) Cache(b *buf.Buffer) { + mb, _ := r.reader.ReadMultiBufferTimeout(time.Millisecond * 100) + r.Lock() + if !mb.IsEmpty() { + r.cache, _ = buf.MergeMulti(r.cache, mb) + } + b.Clear() + rawBytes := b.Extend(buf.Size) + n := r.cache.Copy(rawBytes) + b.Resize(0, int32(n)) + r.Unlock() +} + +func (r *cachedReader) readInternal() buf.MultiBuffer { + r.Lock() + defer r.Unlock() + + if r.cache != nil && !r.cache.IsEmpty() { + mb := r.cache + r.cache = nil + return mb + } + + return nil +} + +func (r *cachedReader) ReadMultiBuffer() (buf.MultiBuffer, error) { + mb := r.readInternal() + if mb != nil { + return mb, nil + } + + return r.reader.ReadMultiBuffer() +} + +func (r *cachedReader) ReadMultiBufferTimeout(timeout time.Duration) (buf.MultiBuffer, error) { + mb := r.readInternal() + if mb != nil { + return mb, nil + } + + return r.reader.ReadMultiBufferTimeout(timeout) +} + +func (r *cachedReader) Interrupt() { + r.Lock() + if r.cache != nil { + r.cache = buf.ReleaseMulti(r.cache) + } + r.Unlock() + r.reader.Interrupt() +} + +// DefaultDispatcher is a default implementation of Dispatcher. +type DefaultDispatcher struct { + ohm outbound.Manager + router routing.Router + policy policy.Manager + stats stats.Manager + hosts dns.HostsLookup + Limiter *limiter.Limiter + RuleManager *rule.RuleManager +} + +func init() { + common.Must(common.RegisterConfig((*Config)(nil), func(ctx context.Context, config interface{}) (interface{}, error) { + d := new(DefaultDispatcher) + if err := core.RequireFeatures(ctx, func(om outbound.Manager, router routing.Router, pm policy.Manager, sm stats.Manager, dc dns.Client) error { + return d.Init(config.(*Config), om, router, pm, sm, dc) + }); err != nil { + return nil, err + } + return d, nil + })) +} + +// Init initializes DefaultDispatcher. +func (d *DefaultDispatcher) Init(config *Config, om outbound.Manager, router routing.Router, pm policy.Manager, sm stats.Manager, dc dns.Client) error { + d.ohm = om + d.router = router + d.policy = pm + d.stats = sm + d.Limiter = limiter.New() + d.RuleManager = rule.New() + if hosts, ok := dc.(dns.HostsLookup); ok { + d.hosts = hosts + } + return nil +} + +// Type implements common.HasType. +func (*DefaultDispatcher) Type() interface{} { + return routing.DispatcherType() +} + +// Start implements common.Runnable. +func (*DefaultDispatcher) Start() error { + return nil +} + +// Close implements common.Closable. +func (*DefaultDispatcher) Close() error { return nil } + +func (d *DefaultDispatcher) getLink(ctx context.Context) (*transport.Link, *transport.Link, error) { + opt := pipe.OptionsFromContext(ctx) + uplinkReader, uplinkWriter := pipe.New(opt...) + downlinkReader, downlinkWriter := pipe.New(opt...) + + inboundLink := &transport.Link{ + Reader: downlinkReader, + Writer: uplinkWriter, + } + + outboundLink := &transport.Link{ + Reader: uplinkReader, + Writer: downlinkWriter, + } + + sessionInbound := session.InboundFromContext(ctx) + var user *protocol.MemoryUser + if sessionInbound != nil { + user = sessionInbound.User + } + + if user != nil && len(user.Email) > 0 { + // Speed Limit and Device Limit + bucket, ok, reject := d.Limiter.GetUserBucket(sessionInbound.Tag, user.Email, sessionInbound.Source.Address.IP().String()) + if reject { + newError("Devices reach the limit: ", user.Email).AtError().WriteToLog() + common.Close(outboundLink.Writer) + common.Close(inboundLink.Writer) + common.Interrupt(outboundLink.Reader) + common.Interrupt(inboundLink.Reader) + return nil, nil, newError("Devices reach the limit: ", user.Email) + } + if ok { + inboundLink.Writer = d.Limiter.RateWriter(inboundLink.Writer, bucket) + outboundLink.Writer = d.Limiter.RateWriter(outboundLink.Writer, bucket) + } + p := d.policy.ForLevel(user.Level) + if p.Stats.UserUplink { + name := "user>>>" + user.Email + ">>>traffic>>>uplink" + if c, _ := stats.GetOrRegisterCounter(d.stats, name); c != nil { + inboundLink.Writer = &SizeStatWriter{ + Counter: c, + Writer: inboundLink.Writer, + } + } + } + if p.Stats.UserDownlink { + name := "user>>>" + user.Email + ">>>traffic>>>downlink" + if c, _ := stats.GetOrRegisterCounter(d.stats, name); c != nil { + outboundLink.Writer = &SizeStatWriter{ + Counter: c, + Writer: outboundLink.Writer, + } + } + } + } + + return inboundLink, outboundLink, nil +} + +func shouldOverride(ctx context.Context, result SniffResult, request session.SniffingRequest, destination net.Destination) bool { + domain := result.Domain() + for _, d := range request.ExcludeForDomain { + if strings.ToLower(domain) == d { + return false + } + } + var fakeDNSEngine dns.FakeDNSEngine + core.RequireFeatures(ctx, func(fdns dns.FakeDNSEngine) { + fakeDNSEngine = fdns + }) + protocolString := result.Protocol() + if resComp, ok := result.(SnifferResultComposite); ok { + protocolString = resComp.ProtocolForDomainResult() + } + for _, p := range request.OverrideDestinationForProtocol { + if strings.HasPrefix(protocolString, p) { + return true + } + if fkr0, ok := fakeDNSEngine.(dns.FakeDNSEngineRev0); ok && protocolString != "bittorrent" && p == "fakedns" && + destination.Address.Family().IsIP() && fkr0.IsIPInIPPool(destination.Address) { + newError("Using sniffer ", protocolString, " since the fake DNS missed").WriteToLog(session.ExportIDToError(ctx)) + return true + } + if resultSubset, ok := result.(SnifferIsProtoSubsetOf); ok { + if resultSubset.IsProtoSubsetOf(p) { + return true + } + } + } + + return false +} + +// Dispatch implements routing.Dispatcher. +func (d *DefaultDispatcher) Dispatch(ctx context.Context, destination net.Destination) (*transport.Link, error) { + if !destination.IsValid() { + panic("Dispatcher: Invalid destination.") + } + ob := &session.Outbound{ + Target: destination, + } + ctx = session.ContextWithOutbound(ctx, ob) + + inbound, outbound, err := d.getLink(ctx) + if err != nil { + return nil, err + } + content := session.ContentFromContext(ctx) + if content == nil { + content = new(session.Content) + ctx = session.ContextWithContent(ctx, content) + } + sniffingRequest := content.SniffingRequest + switch { + case !sniffingRequest.Enabled: + go d.routedDispatch(ctx, outbound, destination) + case destination.Network != net.Network_TCP: + // Only metadata sniff will be used for non tcp connection + result, err := sniffer(ctx, nil, true) + if err == nil { + content.Protocol = result.Protocol() + if shouldOverride(ctx, result, sniffingRequest, destination) { + domain := result.Domain() + newError("sniffed domain: ", domain).WriteToLog(session.ExportIDToError(ctx)) + destination.Address = net.ParseAddress(domain) + if sniffingRequest.RouteOnly && result.Protocol() != "fakedns" { + ob.RouteTarget = destination + } else { + ob.Target = destination + } + } + } + go d.routedDispatch(ctx, outbound, destination) + default: + go func() { + cReader := &cachedReader{ + reader: outbound.Reader.(*pipe.Reader), + } + outbound.Reader = cReader + result, err := sniffer(ctx, cReader, sniffingRequest.MetadataOnly) + if err == nil { + content.Protocol = result.Protocol() + } + if err == nil && shouldOverride(ctx, result, sniffingRequest, destination) { + domain := result.Domain() + newError("sniffed domain: ", domain).WriteToLog(session.ExportIDToError(ctx)) + destination.Address = net.ParseAddress(domain) + if sniffingRequest.RouteOnly && result.Protocol() != "fakedns" { + ob.RouteTarget = destination + } else { + ob.Target = destination + } + } + d.routedDispatch(ctx, outbound, destination) + }() + } + return inbound, nil +} + +// DispatchLink implements routing.Dispatcher. +func (d *DefaultDispatcher) DispatchLink(ctx context.Context, destination net.Destination, outbound *transport.Link) error { + if !destination.IsValid() { + return newError("Dispatcher: Invalid destination.") + } + ob := &session.Outbound{ + Target: destination, + } + ctx = session.ContextWithOutbound(ctx, ob) + content := session.ContentFromContext(ctx) + if content == nil { + content = new(session.Content) + ctx = session.ContextWithContent(ctx, content) + } + sniffingRequest := content.SniffingRequest + switch { + case !sniffingRequest.Enabled: + go d.routedDispatch(ctx, outbound, destination) + case destination.Network != net.Network_TCP: + // Only metadata sniff will be used for non tcp connection + result, err := sniffer(ctx, nil, true) + if err == nil { + content.Protocol = result.Protocol() + if shouldOverride(ctx, result, sniffingRequest, destination) { + domain := result.Domain() + newError("sniffed domain: ", domain).WriteToLog(session.ExportIDToError(ctx)) + destination.Address = net.ParseAddress(domain) + if sniffingRequest.RouteOnly && result.Protocol() != "fakedns" { + ob.RouteTarget = destination + } else { + ob.Target = destination + } + } + } + go d.routedDispatch(ctx, outbound, destination) + default: + go func() { + cReader := &cachedReader{ + reader: outbound.Reader.(*pipe.Reader), + } + outbound.Reader = cReader + result, err := sniffer(ctx, cReader, sniffingRequest.MetadataOnly) + if err == nil { + content.Protocol = result.Protocol() + } + if err == nil && shouldOverride(ctx, result, sniffingRequest, destination) { + domain := result.Domain() + newError("sniffed domain: ", domain).WriteToLog(session.ExportIDToError(ctx)) + destination.Address = net.ParseAddress(domain) + if sniffingRequest.RouteOnly && result.Protocol() != "fakedns" { + ob.RouteTarget = destination + } else { + ob.Target = destination + } + } + d.routedDispatch(ctx, outbound, destination) + }() + } + return nil +} + +func sniffer(ctx context.Context, cReader *cachedReader, metadataOnly bool) (SniffResult, error) { + payload := buf.New() + defer payload.Release() + + sniffer := NewSniffer(ctx) + + metaresult, metadataErr := sniffer.SniffMetadata(ctx) + + if metadataOnly { + return metaresult, metadataErr + } + + contentResult, contentErr := func() (SniffResult, error) { + totalAttempt := 0 + for { + select { + case <-ctx.Done(): + return nil, ctx.Err() + default: + totalAttempt++ + if totalAttempt > 2 { + return nil, errSniffingTimeout + } + + cReader.Cache(payload) + if !payload.IsEmpty() { + result, err := sniffer.Sniff(ctx, payload.Bytes()) + if err != common.ErrNoClue { + return result, err + } + } + if payload.IsFull() { + return nil, errUnknownContent + } + } + } + }() + if contentErr != nil && metadataErr == nil { + return metaresult, nil + } + if contentErr == nil && metadataErr == nil { + return CompositeResult(metaresult, contentResult), nil + } + return contentResult, contentErr +} + +func (d *DefaultDispatcher) routedDispatch(ctx context.Context, link *transport.Link, destination net.Destination) { + ob := session.OutboundFromContext(ctx) + if d.hosts != nil && destination.Address.Family().IsDomain() { + proxied := d.hosts.LookupHosts(ob.Target.String()) + if proxied != nil { + ro := ob.RouteTarget == destination + destination.Address = *proxied + if ro { + ob.RouteTarget = destination + } else { + ob.Target = destination + } + } + } + + var handler outbound.Handler + + // Check if domain and protocol hit the rule + sessionInbound := session.InboundFromContext(ctx) + // Whether the inbound connection contains a user + if sessionInbound.User != nil { + if d.RuleManager.Detect(sessionInbound.Tag, destination.String(), sessionInbound.User.Email) { + newError(fmt.Sprintf("User %s access %s reject by rule", sessionInbound.User.Email, destination.String())).AtError().WriteToLog() + newError("destination is reject by rule") + common.Close(link.Writer) + common.Interrupt(link.Reader) + return + } + } + + routingLink := routing_session.AsRoutingContext(ctx) + inTag := routingLink.GetInboundTag() + + if forcedOutboundTag := session.GetForcedOutboundTagFromContext(ctx); forcedOutboundTag != "" { + ctx = session.SetForcedOutboundTagToContext(ctx, "") + if h := d.ohm.GetHandler(forcedOutboundTag); h != nil { + newError("taking platform initialized detour [", forcedOutboundTag, "] for [", destination, "]").WriteToLog(session.ExportIDToError(ctx)) + handler = h + } else { + newError("non existing tag for platform initialized detour: ", forcedOutboundTag).AtError().WriteToLog(session.ExportIDToError(ctx)) + common.Close(link.Writer) + common.Interrupt(link.Reader) + return + } + } else if d.router != nil { + if route, err := d.router.PickRoute(routing_session.AsRoutingContext(ctx)); err == nil { + tag := route.GetOutboundTag() + if h := d.ohm.GetHandler(tag); h != nil { + newError("taking detour [", tag, "] for [", destination, "]").WriteToLog(session.ExportIDToError(ctx)) + handler = h + } else { + newError("non existing outTag: ", tag).AtWarning().WriteToLog(session.ExportIDToError(ctx)) + } + } else { + newError("default route for ", destination).WriteToLog(session.ExportIDToError(ctx)) + } + } + + if handler == nil { + handler = d.ohm.GetHandler(inTag) // Default outbound hander tag should be as same as the inbound tag + } + + // If there is no outbound with tag as same as the inbound tag + if handler == nil { + handler = d.ohm.GetDefaultHandler() + } + + if handler == nil { + newError("default outbound handler not exist").WriteToLog(session.ExportIDToError(ctx)) + common.Close(link.Writer) + common.Interrupt(link.Reader) + return + } + + if accessMessage := log.AccessMessageFromContext(ctx); accessMessage != nil { + if tag := handler.Tag(); tag != "" { + accessMessage.Detour = tag + } + log.Record(accessMessage) + } + + handler.Dispatch(ctx, link) +} diff --git a/app/mydispatcher/dispatcher.go b/app/mydispatcher/dispatcher.go new file mode 100644 index 0000000..d7fdf22 --- /dev/null +++ b/app/mydispatcher/dispatcher.go @@ -0,0 +1,4 @@ +// Package dispather implement the rate limiter and the onlie device counter +package mydispatcher + +//go:generate go run github.com/xtls/xray-core/common/errors/errorgen diff --git a/app/mydispatcher/errors.generated.go b/app/mydispatcher/errors.generated.go new file mode 100644 index 0000000..5350087 --- /dev/null +++ b/app/mydispatcher/errors.generated.go @@ -0,0 +1,9 @@ +package mydispatcher + +import "github.com/xtls/xray-core/common/errors" + +type errPathObjHolder struct{} + +func newError(values ...interface{}) *errors.Error { + return errors.New(values...).WithPathObj(errPathObjHolder{}) +} diff --git a/app/mydispatcher/fakednssniffer.go b/app/mydispatcher/fakednssniffer.go new file mode 100644 index 0000000..d4b0ea7 --- /dev/null +++ b/app/mydispatcher/fakednssniffer.go @@ -0,0 +1,117 @@ +package mydispatcher + +import ( + "context" + "strings" + + "github.com/xtls/xray-core/common" + "github.com/xtls/xray-core/common/net" + "github.com/xtls/xray-core/common/session" + "github.com/xtls/xray-core/core" + "github.com/xtls/xray-core/features/dns" +) + +// newFakeDNSSniffer Create a Fake DNS metadata sniffer +func newFakeDNSSniffer(ctx context.Context) (protocolSnifferWithMetadata, error) { + var fakeDNSEngine dns.FakeDNSEngine + err := core.RequireFeatures(ctx, func(fdns dns.FakeDNSEngine) { + fakeDNSEngine = fdns + }) + if err != nil { + return protocolSnifferWithMetadata{}, err + } + if fakeDNSEngine == nil { + errNotInit := newError("FakeDNSEngine is not initialized, but such a sniffer is used").AtError() + return protocolSnifferWithMetadata{}, errNotInit + } + return protocolSnifferWithMetadata{protocolSniffer: func(ctx context.Context, bytes []byte) (SniffResult, error) { + Target := session.OutboundFromContext(ctx).Target + if Target.Network == net.Network_TCP || Target.Network == net.Network_UDP { + domainFromFakeDNS := fakeDNSEngine.GetDomainFromFakeDNS(Target.Address) + if domainFromFakeDNS != "" { + newError("fake dns got domain: ", domainFromFakeDNS, " for ip: ", Target.Address.String()).WriteToLog(session.ExportIDToError(ctx)) + return &fakeDNSSniffResult{domainName: domainFromFakeDNS}, nil + } + } + + if ipAddressInRangeValueI := ctx.Value(ipAddressInRange); ipAddressInRangeValueI != nil { + ipAddressInRangeValue := ipAddressInRangeValueI.(*ipAddressInRangeOpt) + if fkr0, ok := fakeDNSEngine.(dns.FakeDNSEngineRev0); ok { + inPool := fkr0.IsIPInIPPool(Target.Address) + ipAddressInRangeValue.addressInRange = &inPool + } + } + + return nil, common.ErrNoClue + }, metadataSniffer: true}, nil +} + +type fakeDNSSniffResult struct { + domainName string +} + +func (fakeDNSSniffResult) Protocol() string { + return "fakedns" +} + +func (f fakeDNSSniffResult) Domain() string { + return f.domainName +} + +type fakeDNSExtraOpts int + +const ipAddressInRange fakeDNSExtraOpts = 1 + +type ipAddressInRangeOpt struct { + addressInRange *bool +} + +type DNSThenOthersSniffResult struct { + domainName string + protocolOriginalName string +} + +func (f DNSThenOthersSniffResult) IsProtoSubsetOf(protocolName string) bool { + return strings.HasPrefix(protocolName, f.protocolOriginalName) +} + +func (DNSThenOthersSniffResult) Protocol() string { + return "fakedns+others" +} + +func (f DNSThenOthersSniffResult) Domain() string { + return f.domainName +} + +func newFakeDNSThenOthers(ctx context.Context, fakeDNSSniffer protocolSnifferWithMetadata, others []protocolSnifferWithMetadata) ( + protocolSnifferWithMetadata, error) { // nolint: unparam + // ctx may be used in the future + _ = ctx + return protocolSnifferWithMetadata{ + protocolSniffer: func(ctx context.Context, bytes []byte) (SniffResult, error) { + ipAddressInRangeValue := &ipAddressInRangeOpt{} + ctx = context.WithValue(ctx, ipAddressInRange, ipAddressInRangeValue) + result, err := fakeDNSSniffer.protocolSniffer(ctx, bytes) + if err == nil { + return result, nil + } + if ipAddressInRangeValue.addressInRange != nil { + if *ipAddressInRangeValue.addressInRange { + for _, v := range others { + if v.metadataSniffer || bytes != nil { + if result, err := v.protocolSniffer(ctx, bytes); err == nil { + return DNSThenOthersSniffResult{domainName: result.Domain(), protocolOriginalName: result.Protocol()}, nil + } + } + } + return nil, common.ErrNoClue + } + newError("ip address not in fake dns range, return as is").AtDebug().WriteToLog() + return nil, common.ErrNoClue + } + newError("fake dns sniffer did not set address in range option, assume false.").AtWarning().WriteToLog() + return nil, common.ErrNoClue + }, + metadataSniffer: false, + }, nil +} diff --git a/app/mydispatcher/sniffer.go b/app/mydispatcher/sniffer.go new file mode 100644 index 0000000..18c45e3 --- /dev/null +++ b/app/mydispatcher/sniffer.go @@ -0,0 +1,132 @@ +package mydispatcher + +import ( + "context" + + "github.com/xtls/xray-core/common" + "github.com/xtls/xray-core/common/protocol/bittorrent" + "github.com/xtls/xray-core/common/protocol/http" + "github.com/xtls/xray-core/common/protocol/tls" +) + +type SniffResult interface { + Protocol() string + Domain() string +} + +type protocolSniffer func(context.Context, []byte) (SniffResult, error) + +type protocolSnifferWithMetadata struct { + protocolSniffer protocolSniffer + // A Metadata sniffer will be invoked on connection establishment only, with nil body, + // for both TCP and UDP connections + // It will not be shown as a traffic type for routing unless there is no other successful sniffing. + metadataSniffer bool +} + +type Sniffer struct { + sniffer []protocolSnifferWithMetadata +} + +func NewSniffer(ctx context.Context) *Sniffer { + ret := &Sniffer{ + sniffer: []protocolSnifferWithMetadata{ + {func(c context.Context, b []byte) (SniffResult, error) { return http.SniffHTTP(b) }, false}, + {func(c context.Context, b []byte) (SniffResult, error) { return tls.SniffTLS(b) }, false}, + {func(c context.Context, b []byte) (SniffResult, error) { return bittorrent.SniffBittorrent(b) }, false}, + }, + } + if sniffer, err := newFakeDNSSniffer(ctx); err == nil { + others := ret.sniffer + ret.sniffer = append(ret.sniffer, sniffer) + fakeDNSThenOthers, err := newFakeDNSThenOthers(ctx, sniffer, others) + if err == nil { + ret.sniffer = append([]protocolSnifferWithMetadata{fakeDNSThenOthers}, ret.sniffer...) + } + } + return ret +} + +var errUnknownContent = newError("unknown content") + +func (s *Sniffer) Sniff(c context.Context, payload []byte) (SniffResult, error) { + var pendingSniffer []protocolSnifferWithMetadata + for _, si := range s.sniffer { + s := si.protocolSniffer + if si.metadataSniffer { + continue + } + result, err := s(c, payload) + if err == common.ErrNoClue { + pendingSniffer = append(pendingSniffer, si) + continue + } + + if err == nil && result != nil { + return result, nil + } + } + + if len(pendingSniffer) > 0 { + s.sniffer = pendingSniffer + return nil, common.ErrNoClue + } + + return nil, errUnknownContent +} + +func (s *Sniffer) SniffMetadata(c context.Context) (SniffResult, error) { + var pendingSniffer []protocolSnifferWithMetadata + for _, si := range s.sniffer { + s := si.protocolSniffer + if !si.metadataSniffer { + pendingSniffer = append(pendingSniffer, si) + continue + } + result, err := s(c, nil) + if err == common.ErrNoClue { + pendingSniffer = append(pendingSniffer, si) + continue + } + + if err == nil && result != nil { + return result, nil + } + } + + if len(pendingSniffer) > 0 { + s.sniffer = pendingSniffer + return nil, common.ErrNoClue + } + + return nil, errUnknownContent +} + +func CompositeResult(domainResult SniffResult, protocolResult SniffResult) SniffResult { + return &compositeResult{domainResult: domainResult, protocolResult: protocolResult} +} + +type compositeResult struct { + domainResult SniffResult + protocolResult SniffResult +} + +func (c compositeResult) Protocol() string { + return c.protocolResult.Protocol() +} + +func (c compositeResult) Domain() string { + return c.domainResult.Domain() +} + +func (c compositeResult) ProtocolForDomainResult() string { + return c.domainResult.Protocol() +} + +type SnifferResultComposite interface { + ProtocolForDomainResult() string +} + +type SnifferIsProtoSubsetOf interface { + IsProtoSubsetOf(protocolName string) bool +} diff --git a/app/mydispatcher/stats.go b/app/mydispatcher/stats.go new file mode 100644 index 0000000..5296ba6 --- /dev/null +++ b/app/mydispatcher/stats.go @@ -0,0 +1,25 @@ +package mydispatcher + +import ( + "github.com/xtls/xray-core/common" + "github.com/xtls/xray-core/common/buf" + "github.com/xtls/xray-core/features/stats" +) + +type SizeStatWriter struct { + Counter stats.Counter + Writer buf.Writer +} + +func (w *SizeStatWriter) WriteMultiBuffer(mb buf.MultiBuffer) error { + w.Counter.Add(int64(mb.Len())) + return w.Writer.WriteMultiBuffer(mb) +} + +func (w *SizeStatWriter) Close() error { + return common.Close(w.Writer) +} + +func (w *SizeStatWriter) Interrupt() { + common.Interrupt(w.Writer) +} diff --git a/app/mydispatcher/stats_test.go b/app/mydispatcher/stats_test.go new file mode 100644 index 0000000..70745ae --- /dev/null +++ b/app/mydispatcher/stats_test.go @@ -0,0 +1,44 @@ +package mydispatcher_test + +import ( + "testing" + + . "github.com/xtls/xray-core/app/dispatcher" + "github.com/xtls/xray-core/common" + "github.com/xtls/xray-core/common/buf" +) + +type TestCounter int64 + +func (c *TestCounter) Value() int64 { + return int64(*c) +} + +func (c *TestCounter) Add(v int64) int64 { + x := int64(*c) + v + *c = TestCounter(x) + return x +} + +func (c *TestCounter) Set(v int64) int64 { + *c = TestCounter(v) + return v +} + +func TestStatsWriter(t *testing.T) { + var c TestCounter + writer := &SizeStatWriter{ + Counter: &c, + Writer: buf.Discard, + } + + mb := buf.MergeBytes(nil, []byte("abcd")) + common.Must(writer.WriteMultiBuffer(mb)) + + mb = buf.MergeBytes(nil, []byte("efg")) + common.Must(writer.WriteMultiBuffer(mb)) + + if c.Value() != 7 { + t.Fatal("unexpected counter value. want 7, but got ", c.Value()) + } +} diff --git a/common/common.go b/common/common.go new file mode 100644 index 0000000..a7d06d5 --- /dev/null +++ b/common/common.go @@ -0,0 +1,2 @@ +// Package common contains common utilities that are shared among other packages. +package common diff --git a/common/legocmd/cmd/account.go b/common/legocmd/cmd/account.go new file mode 100644 index 0000000..73247c9 --- /dev/null +++ b/common/legocmd/cmd/account.go @@ -0,0 +1,33 @@ +package cmd + +import ( + "crypto" + + "github.com/go-acme/lego/v4/registration" +) + +// Account represents a users local saved credentials. +type Account struct { + Email string `json:"email"` + Registration *registration.Resource `json:"registration"` + key crypto.PrivateKey +} + +/** Implementation of the registration.User interface **/ + +// GetEmail returns the email address for the account. +func (a *Account) GetEmail() string { + return a.Email +} + +// GetPrivateKey returns the private RSA account key. +func (a *Account) GetPrivateKey() crypto.PrivateKey { + return a.key +} + +// GetRegistration returns the server registration. +func (a *Account) GetRegistration() *registration.Resource { + return a.Registration +} + +/** End **/ diff --git a/common/legocmd/cmd/accounts_storage.go b/common/legocmd/cmd/accounts_storage.go new file mode 100644 index 0000000..e87440f --- /dev/null +++ b/common/legocmd/cmd/accounts_storage.go @@ -0,0 +1,243 @@ +package cmd + +import ( + "crypto" + "crypto/x509" + "encoding/json" + "encoding/pem" + "errors" + "fmt" + "io/ioutil" + "net/url" + "os" + "path/filepath" + "strings" + + "github.com/XrayR-project/XrayR/common/legocmd/log" + "github.com/go-acme/lego/v4/certcrypto" + "github.com/go-acme/lego/v4/lego" + "github.com/go-acme/lego/v4/registration" + "github.com/urfave/cli" +) + +const ( + baseAccountsRootFolderName = "accounts" + baseKeysFolderName = "keys" + accountFileName = "account.json" +) + +// AccountsStorage A storage for account data. +// +// rootPath: +// +// ./.lego/accounts/ +// │ └── root accounts directory +// └── "path" option +// +// rootUserPath: +// +// ./.lego/accounts/localhost_14000/hubert@hubert.com/ +// │ │ │ └── userID ("email" option) +// │ │ └── CA server ("server" option) +// │ └── root accounts directory +// └── "path" option +// +// keysPath: +// +// ./.lego/accounts/localhost_14000/hubert@hubert.com/keys/ +// │ │ │ │ └── root keys directory +// │ │ │ └── userID ("email" option) +// │ │ └── CA server ("server" option) +// │ └── root accounts directory +// └── "path" option +// +// accountFilePath: +// +// ./.lego/accounts/localhost_14000/hubert@hubert.com/account.json +// │ │ │ │ └── account file +// │ │ │ └── userID ("email" option) +// │ │ └── CA server ("server" option) +// │ └── root accounts directory +// └── "path" option +// +type AccountsStorage struct { + userID string + rootPath string + rootUserPath string + keysPath string + accountFilePath string + ctx *cli.Context +} + +// NewAccountsStorage Creates a new AccountsStorage. +func NewAccountsStorage(ctx *cli.Context) *AccountsStorage { + // TODO: move to account struct? Currently MUST pass email. + email := getEmail(ctx) + + serverURL, err := url.Parse(ctx.GlobalString("server")) + if err != nil { + log.Panic(err) + } + + rootPath := filepath.Join(ctx.GlobalString("path"), baseAccountsRootFolderName) + serverPath := strings.NewReplacer(":", "_", "/", string(os.PathSeparator)).Replace(serverURL.Host) + accountsPath := filepath.Join(rootPath, serverPath) + rootUserPath := filepath.Join(accountsPath, email) + + return &AccountsStorage{ + userID: email, + rootPath: rootPath, + rootUserPath: rootUserPath, + keysPath: filepath.Join(rootUserPath, baseKeysFolderName), + accountFilePath: filepath.Join(rootUserPath, accountFileName), + ctx: ctx, + } +} + +func (s *AccountsStorage) ExistsAccountFilePath() bool { + accountFile := filepath.Join(s.rootUserPath, accountFileName) + if _, err := os.Stat(accountFile); os.IsNotExist(err) { + return false + } else if err != nil { + log.Panic(err) + } + return true +} + +func (s *AccountsStorage) GetRootPath() string { + return s.rootPath +} + +func (s *AccountsStorage) GetRootUserPath() string { + return s.rootUserPath +} + +func (s *AccountsStorage) GetUserID() string { + return s.userID +} + +func (s *AccountsStorage) Save(account *Account) error { + jsonBytes, err := json.MarshalIndent(account, "", "\t") + if err != nil { + return err + } + + return ioutil.WriteFile(s.accountFilePath, jsonBytes, filePerm) +} + +func (s *AccountsStorage) LoadAccount(privateKey crypto.PrivateKey) *Account { + fileBytes, err := ioutil.ReadFile(s.accountFilePath) + if err != nil { + log.Panicf("Could not load file for account %s: %v", s.userID, err) + } + + var account Account + err = json.Unmarshal(fileBytes, &account) + if err != nil { + log.Panicf("Could not parse file for account %s: %v", s.userID, err) + } + + account.key = privateKey + + if account.Registration == nil || account.Registration.Body.Status == "" { + reg, err := tryRecoverRegistration(s.ctx, privateKey) + if err != nil { + log.Panicf("Could not load account for %s. Registration is nil: %#v", s.userID, err) + } + + account.Registration = reg + err = s.Save(&account) + if err != nil { + log.Panicf("Could not save account for %s. Registration is nil: %#v", s.userID, err) + } + } + + return &account +} + +func (s *AccountsStorage) GetPrivateKey(keyType certcrypto.KeyType) crypto.PrivateKey { + accKeyPath := filepath.Join(s.keysPath, s.userID+".key") + + if _, err := os.Stat(accKeyPath); os.IsNotExist(err) { + log.Printf("No key found for account %s. Generating a %s key.", s.userID, keyType) + s.createKeysFolder() + + privateKey, err := generatePrivateKey(accKeyPath, keyType) + if err != nil { + log.Panicf("Could not generate RSA private account key for account %s: %v", s.userID, err) + } + + log.Printf("Saved key to %s", accKeyPath) + return privateKey + } + + privateKey, err := loadPrivateKey(accKeyPath) + if err != nil { + log.Panicf("Could not load RSA private key from file %s: %v", accKeyPath, err) + } + + return privateKey +} + +func (s *AccountsStorage) createKeysFolder() { + if err := createNonExistingFolder(s.keysPath); err != nil { + log.Panicf("Could not check/create directory for account %s: %v", s.userID, err) + } +} + +func generatePrivateKey(file string, keyType certcrypto.KeyType) (crypto.PrivateKey, error) { + privateKey, err := certcrypto.GeneratePrivateKey(keyType) + if err != nil { + return nil, err + } + + certOut, err := os.Create(file) + if err != nil { + return nil, err + } + defer certOut.Close() + + pemKey := certcrypto.PEMBlock(privateKey) + err = pem.Encode(certOut, pemKey) + if err != nil { + return nil, err + } + + return privateKey, nil +} + +func loadPrivateKey(file string) (crypto.PrivateKey, error) { + keyBytes, err := ioutil.ReadFile(file) + if err != nil { + return nil, err + } + + keyBlock, _ := pem.Decode(keyBytes) + + switch keyBlock.Type { + case "RSA PRIVATE KEY": + return x509.ParsePKCS1PrivateKey(keyBlock.Bytes) + case "EC PRIVATE KEY": + return x509.ParseECPrivateKey(keyBlock.Bytes) + } + + return nil, errors.New("unknown private key type") +} + +func tryRecoverRegistration(ctx *cli.Context, privateKey crypto.PrivateKey) (*registration.Resource, error) { + // couldn't load account but got a key. Try to look the account up. + config := lego.NewConfig(&Account{key: privateKey}) + config.CADirURL = ctx.GlobalString("server") + config.UserAgent = fmt.Sprintf("lego-cli/%s", ctx.App.Version) + + client, err := lego.NewClient(config) + if err != nil { + return nil, err + } + + reg, err := client.Registration.ResolveAccountByKey() + if err != nil { + return nil, err + } + return reg, nil +} diff --git a/common/legocmd/cmd/certs_storage.go b/common/legocmd/cmd/certs_storage.go new file mode 100644 index 0000000..3e3575e --- /dev/null +++ b/common/legocmd/cmd/certs_storage.go @@ -0,0 +1,205 @@ +package cmd + +import ( + "bytes" + "crypto/x509" + "encoding/json" + "io/ioutil" + "os" + "path/filepath" + "strconv" + "strings" + "time" + + "github.com/XrayR-project/XrayR/common/legocmd/log" + "github.com/go-acme/lego/v4/certcrypto" + "github.com/go-acme/lego/v4/certificate" + "github.com/urfave/cli" + "golang.org/x/net/idna" +) + +const ( + baseCertificatesFolderName = "certificates" + baseArchivesFolderName = "archives" +) + +// CertificatesStorage a certificates storage. +// +// rootPath: +// +// ./.lego/certificates/ +// │ └── root certificates directory +// └── "path" option +// +// archivePath: +// +// ./.lego/archives/ +// │ └── archived certificates directory +// └── "path" option +// +type CertificatesStorage struct { + rootPath string + archivePath string + pem bool + filename string // Deprecated +} + +// NewCertificatesStorage create a new certificates storage. +func NewCertificatesStorage(ctx *cli.Context) *CertificatesStorage { + return &CertificatesStorage{ + rootPath: filepath.Join(ctx.GlobalString("path"), baseCertificatesFolderName), + archivePath: filepath.Join(ctx.GlobalString("path"), baseArchivesFolderName), + pem: ctx.GlobalBool("pem"), + filename: ctx.GlobalString("filename"), + } +} + +func (s *CertificatesStorage) CreateRootFolder() { + err := createNonExistingFolder(s.rootPath) + if err != nil { + log.Panicf("Could not check/create path: %v", err) + } +} + +func (s *CertificatesStorage) CreateArchiveFolder() { + err := createNonExistingFolder(s.archivePath) + if err != nil { + log.Panicf("Could not check/create path: %v", err) + } +} + +func (s *CertificatesStorage) GetRootPath() string { + return s.rootPath +} + +func (s *CertificatesStorage) SaveResource(certRes *certificate.Resource) { + domain := certRes.Domain + + // We store the certificate, private key and metadata in different files + // as web servers would not be able to work with a combined file. + err := s.WriteFile(domain, ".crt", certRes.Certificate) + if err != nil { + log.Panicf("Unable to save Certificate for domain %s\n\t%v", domain, err) + } + + if certRes.IssuerCertificate != nil { + err = s.WriteFile(domain, ".issuer.crt", certRes.IssuerCertificate) + if err != nil { + log.Panicf("Unable to save IssuerCertificate for domain %s\n\t%v", domain, err) + } + } + + if certRes.PrivateKey != nil { + // if we were given a CSR, we don't know the private key + err = s.WriteFile(domain, ".key", certRes.PrivateKey) + if err != nil { + log.Panicf("Unable to save PrivateKey for domain %s\n\t%v", domain, err) + } + + if s.pem { + err = s.WriteFile(domain, ".pem", bytes.Join([][]byte{certRes.Certificate, certRes.PrivateKey}, nil)) + if err != nil { + log.Panicf("Unable to save Certificate and PrivateKey in .pem for domain %s\n\t%v", domain, err) + } + } + } else if s.pem { + // we don't have the private key; can't write the .pem file + log.Panicf("Unable to save pem without private key for domain %s\n\t%v; are you using a CSR?", domain, err) + } + + jsonBytes, err := json.MarshalIndent(certRes, "", "\t") + if err != nil { + log.Panicf("Unable to marshal CertResource for domain %s\n\t%v", domain, err) + } + + err = s.WriteFile(domain, ".json", jsonBytes) + if err != nil { + log.Panicf("Unable to save CertResource for domain %s\n\t%v", domain, err) + } +} + +func (s *CertificatesStorage) ReadResource(domain string) certificate.Resource { + raw, err := s.ReadFile(domain, ".json") + if err != nil { + log.Panicf("Error while loading the meta data for domain %s\n\t%v", domain, err) + } + + var resource certificate.Resource + if err = json.Unmarshal(raw, &resource); err != nil { + log.Panicf("Error while marshaling the meta data for domain %s\n\t%v", domain, err) + } + + return resource +} + +func (s *CertificatesStorage) ExistsFile(domain, extension string) bool { + filePath := s.GetFileName(domain, extension) + + if _, err := os.Stat(filePath); os.IsNotExist(err) { + return false + } else if err != nil { + log.Panic(err) + } + return true +} + +func (s *CertificatesStorage) ReadFile(domain, extension string) ([]byte, error) { + return ioutil.ReadFile(s.GetFileName(domain, extension)) +} + +func (s *CertificatesStorage) GetFileName(domain, extension string) string { + filename := sanitizedDomain(domain) + extension + return filepath.Join(s.rootPath, filename) +} + +func (s *CertificatesStorage) ReadCertificate(domain, extension string) ([]*x509.Certificate, error) { + content, err := s.ReadFile(domain, extension) + if err != nil { + return nil, err + } + + // The input may be a bundle or a single certificate. + return certcrypto.ParsePEMBundle(content) +} + +func (s *CertificatesStorage) WriteFile(domain, extension string, data []byte) error { + var baseFileName string + if s.filename != "" { + baseFileName = s.filename + } else { + baseFileName = sanitizedDomain(domain) + } + + filePath := filepath.Join(s.rootPath, baseFileName+extension) + + return ioutil.WriteFile(filePath, data, filePerm) +} + +func (s *CertificatesStorage) MoveToArchive(domain string) error { + matches, err := filepath.Glob(filepath.Join(s.rootPath, sanitizedDomain(domain)+".*")) + if err != nil { + return err + } + + for _, oldFile := range matches { + date := strconv.FormatInt(time.Now().Unix(), 10) + filename := date + "." + filepath.Base(oldFile) + newFile := filepath.Join(s.archivePath, filename) + + err = os.Rename(oldFile, newFile) + if err != nil { + return err + } + } + + return nil +} + +// sanitizedDomain Make sure no funny chars are in the cert names (like wildcards ;)). +func sanitizedDomain(domain string) string { + safe, err := idna.ToASCII(strings.ReplaceAll(domain, "*", "_")) + if err != nil { + log.Panic(err) + } + return safe +} diff --git a/common/legocmd/cmd/cmd.go b/common/legocmd/cmd/cmd.go new file mode 100644 index 0000000..05b135f --- /dev/null +++ b/common/legocmd/cmd/cmd.go @@ -0,0 +1,14 @@ +package cmd + +import "github.com/urfave/cli" + +// CreateCommands Creates all CLI commands. +func CreateCommands() []cli.Command { + return []cli.Command{ + createRun(), + createRevoke(), + createRenew(), + createDNSHelp(), + createList(), + } +} diff --git a/common/legocmd/cmd/cmd_before.go b/common/legocmd/cmd/cmd_before.go new file mode 100644 index 0000000..2901742 --- /dev/null +++ b/common/legocmd/cmd/cmd_before.go @@ -0,0 +1,23 @@ +package cmd + +import ( + "github.com/XrayR-project/XrayR/common/legocmd/log" + "github.com/urfave/cli" +) + +func Before(ctx *cli.Context) error { + if ctx.GlobalString("path") == "" { + log.Panic("Could not determine current working directory. Please pass --path.") + } + + err := createNonExistingFolder(ctx.GlobalString("path")) + if err != nil { + log.Panicf("Could not check/create path: %v", err) + } + + if ctx.GlobalString("server") == "" { + log.Panic("Could not determine current working server. Please pass --server.") + } + + return nil +} diff --git a/common/legocmd/cmd/cmd_dnshelp.go b/common/legocmd/cmd/cmd_dnshelp.go new file mode 100644 index 0000000..3359211 --- /dev/null +++ b/common/legocmd/cmd/cmd_dnshelp.go @@ -0,0 +1,73 @@ +package cmd + +import ( + "fmt" + "io" + "os" + "strings" + "text/tabwriter" + + "github.com/urfave/cli" +) + +func createDNSHelp() cli.Command { + return cli.Command{ + Name: "dnshelp", + Usage: "Shows additional help for the '--dns' global option", + Action: dnsHelp, + Flags: []cli.Flag{ + cli.StringFlag{ + Name: "code, c", + Usage: fmt.Sprintf("DNS code: %s", allDNSCodes()), + }, + }, + } +} + +func dnsHelp(ctx *cli.Context) error { + code := ctx.String("code") + if code == "" { + w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0) + ew := &errWriter{w: w} + + ew.writeln(`Credentials for DNS providers must be passed through environment variables.`) + ew.writeln() + ew.writeln(`To display the documentation for a DNS providers:`) + ew.writeln() + ew.writeln("\t$ lego dnshelp -c code") + ew.writeln() + ew.writeln("All DNS codes:") + ew.writef("\t%s\n", allDNSCodes()) + ew.writeln() + ew.writeln("More information: https://go-acme.github.io/lego/dns") + + if ew.err != nil { + return ew.err + } + + return w.Flush() + } + + return displayDNSHelp(strings.ToLower(code)) +} + +type errWriter struct { + w io.Writer + err error +} + +func (ew *errWriter) writeln(a ...interface{}) { + if ew.err != nil { + return + } + + _, ew.err = fmt.Fprintln(ew.w, a...) +} + +func (ew *errWriter) writef(format string, a ...interface{}) { + if ew.err != nil { + return + } + + _, ew.err = fmt.Fprintf(ew.w, format, a...) +} diff --git a/common/legocmd/cmd/cmd_list.go b/common/legocmd/cmd/cmd_list.go new file mode 100644 index 0000000..68fd0c7 --- /dev/null +++ b/common/legocmd/cmd/cmd_list.go @@ -0,0 +1,136 @@ +package cmd + +import ( + "encoding/json" + "fmt" + "io/ioutil" + "net/url" + "path/filepath" + "strings" + + "github.com/go-acme/lego/v4/certcrypto" + "github.com/urfave/cli" +) + +func createList() cli.Command { + return cli.Command{ + Name: "list", + Usage: "Display certificates and accounts information.", + Action: list, + Flags: []cli.Flag{ + cli.BoolFlag{ + Name: "accounts, a", + Usage: "Display accounts.", + }, + cli.BoolFlag{ + Name: "names, n", + Usage: "Display certificate common names only.", + }, + }, + } +} + +func list(ctx *cli.Context) error { + if ctx.Bool("accounts") && !ctx.Bool("names") { + if err := listAccount(ctx); err != nil { + return err + } + } + + return listCertificates(ctx) +} + +func listCertificates(ctx *cli.Context) error { + certsStorage := NewCertificatesStorage(ctx) + + matches, err := filepath.Glob(filepath.Join(certsStorage.GetRootPath(), "*.crt")) + if err != nil { + return err + } + + names := ctx.Bool("names") + + if len(matches) == 0 { + if !names { + fmt.Println("No certificates found.") + } + return nil + } + + if !names { + fmt.Println("Found the following certs:") + } + + for _, filename := range matches { + if strings.HasSuffix(filename, ".issuer.crt") { + continue + } + + data, err := ioutil.ReadFile(filename) + if err != nil { + return err + } + + pCert, err := certcrypto.ParsePEMCertificate(data) + if err != nil { + return err + } + + if names { + fmt.Println(pCert.Subject.CommonName) + } else { + fmt.Println(" Certificate Name:", pCert.Subject.CommonName) + fmt.Println(" Domains:", strings.Join(pCert.DNSNames, ", ")) + fmt.Println(" Expiry Date:", pCert.NotAfter) + fmt.Println(" Certificate Path:", filename) + fmt.Println() + } + } + + return nil +} + +func listAccount(ctx *cli.Context) error { + // fake email, needed by NewAccountsStorage + if err := ctx.GlobalSet("email", "unknown"); err != nil { + return err + } + + accountsStorage := NewAccountsStorage(ctx) + + matches, err := filepath.Glob(filepath.Join(accountsStorage.GetRootPath(), "*", "*", "*.json")) + if err != nil { + return err + } + + if len(matches) == 0 { + fmt.Println("No accounts found.") + return nil + } + + fmt.Println("Found the following accounts:") + for _, filename := range matches { + data, err := ioutil.ReadFile(filename) + if err != nil { + return err + } + + var account Account + err = json.Unmarshal(data, &account) + if err != nil { + return err + } + + uri, err := url.Parse(account.Registration.URI) + if err != nil { + return err + } + + fmt.Println(" Email:", account.Email) + fmt.Println(" Server:", uri.Host) + fmt.Println(" Path:", filepath.Dir(filename)) + fmt.Println() + } + + return nil +} diff --git a/common/legocmd/cmd/cmd_renew.go b/common/legocmd/cmd/cmd_renew.go new file mode 100644 index 0000000..fa63c02 --- /dev/null +++ b/common/legocmd/cmd/cmd_renew.go @@ -0,0 +1,225 @@ +package cmd + +import ( + "crypto" + "crypto/x509" + "time" + + "github.com/XrayR-project/XrayR/common/legocmd/log" + "github.com/go-acme/lego/v4/certcrypto" + "github.com/go-acme/lego/v4/certificate" + "github.com/go-acme/lego/v4/lego" + "github.com/urfave/cli" +) + +const ( + renewEnvAccountEmail = "LEGO_ACCOUNT_EMAIL" + renewEnvCertDomain = "LEGO_CERT_DOMAIN" + renewEnvCertPath = "LEGO_CERT_PATH" + renewEnvCertKeyPath = "LEGO_CERT_KEY_PATH" +) + +func createRenew() cli.Command { + return cli.Command{ + Name: "renew", + Usage: "Renew a certificate", + Action: renew, + Before: func(ctx *cli.Context) error { + // we require either domains or csr, but not both + hasDomains := len(ctx.GlobalStringSlice("domains")) > 0 + hasCsr := len(ctx.GlobalString("csr")) > 0 + if hasDomains && hasCsr { + log.Panic("Please specify either --domains/-d or --csr/-c, but not both") + } + if !hasDomains && !hasCsr { + log.Panic("Please specify --domains/-d (or --csr/-c if you already have a CSR)") + } + return nil + }, + Flags: []cli.Flag{ + cli.IntFlag{ + Name: "days", + Value: 30, + Usage: "The number of days left on a certificate to renew it.", + }, + cli.BoolFlag{ + Name: "reuse-key", + Usage: "Used to indicate you want to reuse your current private key for the new certificate.", + }, + cli.BoolFlag{ + Name: "no-bundle", + Usage: "Do not create a certificate bundle by adding the issuers certificate to the new certificate.", + }, + cli.BoolFlag{ + Name: "must-staple", + Usage: "Include the OCSP must staple TLS extension in the CSR and generated certificate. Only works if the CSR is generated by lego.", + }, + cli.StringFlag{ + Name: "renew-hook", + Usage: "Define a hook. The hook is executed only when the certificates are effectively renewed.", + }, + cli.StringFlag{ + Name: "preferred-chain", + Usage: "If the CA offers multiple certificate chains, prefer the chain with an issuer matching this Subject Common Name. If no match, the default offered chain will be used.", + }, + }, + } +} + +func renew(ctx *cli.Context) error { + account, client := setup(ctx, NewAccountsStorage(ctx)) + setupChallenges(ctx, client) + + if account.Registration == nil { + log.Panicf("Account %s is not registered. Use 'run' to register a new account.\n", account.Email) + } + + certsStorage := NewCertificatesStorage(ctx) + + bundle := !ctx.Bool("no-bundle") + + meta := map[string]string{renewEnvAccountEmail: account.Email} + + // CSR + if ctx.GlobalIsSet("csr") { + return renewForCSR(ctx, client, certsStorage, bundle, meta) + } + + // Domains + return renewForDomains(ctx, client, certsStorage, bundle, meta) +} + +func renewForDomains(ctx *cli.Context, client *lego.Client, certsStorage *CertificatesStorage, bundle bool, meta map[string]string) error { + domains := ctx.GlobalStringSlice("domains") + domain := domains[0] + + // load the cert resource from files. + // We store the certificate, private key and metadata in different files + // as web servers would not be able to work with a combined file. + certificates, err := certsStorage.ReadCertificate(domain, ".crt") + if err != nil { + log.Panicf("Error while loading the certificate for domain %s\n\t%v", domain, err) + } + + cert := certificates[0] + + if !needRenewal(cert, domain, ctx.Int("days")) { + return nil + } + + // This is just meant to be informal for the user. + timeLeft := cert.NotAfter.Sub(time.Now().UTC()) + log.Infof("[%s] acme: Trying renewal with %d hours remaining", domain, int(timeLeft.Hours())) + + certDomains := certcrypto.ExtractDomains(cert) + + var privateKey crypto.PrivateKey + if ctx.Bool("reuse-key") { + keyBytes, errR := certsStorage.ReadFile(domain, ".key") + if errR != nil { + log.Panicf("Error while loading the private key for domain %s\n\t%v", domain, errR) + } + + privateKey, errR = certcrypto.ParsePEMPrivateKey(keyBytes) + if errR != nil { + return errR + } + } + + request := certificate.ObtainRequest{ + Domains: merge(certDomains, domains), + Bundle: bundle, + PrivateKey: privateKey, + MustStaple: ctx.Bool("must-staple"), + PreferredChain: ctx.String("preferred-chain"), + } + certRes, err := client.Certificate.Obtain(request) + if err != nil { + log.Panic(err) + } + + certsStorage.SaveResource(certRes) + + meta[renewEnvCertDomain] = domain + meta[renewEnvCertPath] = certsStorage.GetFileName(domain, ".crt") + meta[renewEnvCertKeyPath] = certsStorage.GetFileName(domain, ".key") + + return launchHook(ctx.String("renew-hook"), meta) +} + +func renewForCSR(ctx *cli.Context, client *lego.Client, certsStorage *CertificatesStorage, bundle bool, meta map[string]string) error { + csr, err := readCSRFile(ctx.GlobalString("csr")) + if err != nil { + log.Panic(err) + } + + domain := csr.Subject.CommonName + + // load the cert resource from files. + // We store the certificate, private key and metadata in different files + // as web servers would not be able to work with a combined file. + certificates, err := certsStorage.ReadCertificate(domain, ".crt") + if err != nil { + log.Panicf("Error while loading the certificate for domain %s\n\t%v", domain, err) + } + + cert := certificates[0] + + if !needRenewal(cert, domain, ctx.Int("days")) { + return nil + } + + // This is just meant to be informal for the user. + timeLeft := cert.NotAfter.Sub(time.Now().UTC()) + log.Infof("[%s] acme: Trying renewal with %d hours remaining", domain, int(timeLeft.Hours())) + + certRes, err := client.Certificate.ObtainForCSR(certificate.ObtainForCSRRequest{ + CSR: csr, + Bundle: bundle, + PreferredChain: ctx.String("preferred-chain"), + }) + if err != nil { + log.Panic(err) + } + + certsStorage.SaveResource(certRes) + + meta[renewEnvCertDomain] = domain + meta[renewEnvCertPath] = certsStorage.GetFileName(domain, ".crt") + meta[renewEnvCertKeyPath] = certsStorage.GetFileName(domain, ".key") + + return launchHook(ctx.String("renew-hook"), meta) +} + +func needRenewal(x509Cert *x509.Certificate, domain string, days int) bool { + if x509Cert.IsCA { + log.Panicf("[%s] Certificate bundle starts with a CA certificate", domain) + } + + if days >= 0 { + notAfter := int(time.Until(x509Cert.NotAfter).Hours() / 24.0) + if notAfter > days { + log.Printf("[%s] The certificate expires in %d days, the number of days defined to perform the renewal is %d: no renewal.", + domain, notAfter, days) + return false + } + } + + return true +} + +func merge(prevDomains, nextDomains []string) []string { + for _, next := range nextDomains { + var found bool + for _, prev := range prevDomains { + if prev == next { + found = true + break + } + } + if !found { + prevDomains = append(prevDomains, next) + } + } + return prevDomains +} diff --git a/common/legocmd/cmd/cmd_renew_test.go b/common/legocmd/cmd/cmd_renew_test.go new file mode 100644 index 0000000..0ad9526 --- /dev/null +++ b/common/legocmd/cmd/cmd_renew_test.go @@ -0,0 +1,118 @@ +package cmd + +import ( + "crypto/x509" + "testing" + "time" + + "github.com/stretchr/testify/assert" +) + +func Test_merge(t *testing.T) { + testCases := []struct { + desc string + prevDomains []string + nextDomains []string + expected []string + }{ + { + desc: "all empty", + prevDomains: []string{}, + nextDomains: []string{}, + expected: []string{}, + }, + { + desc: "next empty", + prevDomains: []string{"a", "b", "c"}, + nextDomains: []string{}, + expected: []string{"a", "b", "c"}, + }, + { + desc: "prev empty", + prevDomains: []string{}, + nextDomains: []string{"a", "b", "c"}, + expected: []string{"a", "b", "c"}, + }, + { + desc: "merge append", + prevDomains: []string{"a", "b", "c"}, + nextDomains: []string{"a", "c", "d"}, + expected: []string{"a", "b", "c", "d"}, + }, + { + desc: "merge same", + prevDomains: []string{"a", "b", "c"}, + nextDomains: []string{"a", "b", "c"}, + expected: []string{"a", "b", "c"}, + }, + } + + for _, test := range testCases { + test := test + t.Run(test.desc, func(t *testing.T) { + t.Parallel() + + actual := merge(test.prevDomains, test.nextDomains) + assert.Equal(t, test.expected, actual) + }) + } +} + +func Test_needRenewal(t *testing.T) { + testCases := []struct { + desc string + x509Cert *x509.Certificate + days int + expected bool + }{ + { + desc: "30 days, NotAfter now", + x509Cert: &x509.Certificate{ + NotAfter: time.Now(), + }, + days: 30, + expected: true, + }, + { + desc: "30 days, NotAfter 31 days", + x509Cert: &x509.Certificate{ + NotAfter: time.Now().Add(31*24*time.Hour + 1*time.Second), + }, + days: 30, + expected: false, + }, + { + desc: "30 days, NotAfter 30 days", + x509Cert: &x509.Certificate{ + NotAfter: time.Now().Add(30 * 24 * time.Hour), + }, + days: 30, + expected: true, + }, + { + desc: "0 days, NotAfter 30 days: only the day of the expiration", + x509Cert: &x509.Certificate{ + NotAfter: time.Now().Add(30 * 24 * time.Hour), + }, + days: 0, + expected: false, + }, + { + desc: "-1 days, NotAfter 30 days: always renew", + x509Cert: &x509.Certificate{ + NotAfter: time.Now().Add(30 * 24 * time.Hour), + }, + days: -1, + expected: true, + }, + } + + for _, test := range testCases { + test := test + t.Run(test.desc, func(t *testing.T) { + actual := needRenewal(test.x509Cert, "foo.com", test.days) + + assert.Equal(t, test.expected, actual) + }) + } +} diff --git a/common/legocmd/cmd/cmd_revoke.go b/common/legocmd/cmd/cmd_revoke.go new file mode 100644 index 0000000..6d2d664 --- /dev/null +++ b/common/legocmd/cmd/cmd_revoke.go @@ -0,0 +1,62 @@ +package cmd + +import ( + "github.com/XrayR-project/XrayR/common/legocmd/log" + "github.com/urfave/cli" +) + +func createRevoke() cli.Command { + return cli.Command{ + Name: "revoke", + Usage: "Revoke a certificate", + Action: revoke, + Flags: []cli.Flag{ + cli.BoolFlag{ + Name: "keep, k", + Usage: "Keep the certificates after the revocation instead of archiving them.", + }, + }, + } +} + +func revoke(ctx *cli.Context) error { + acc, client := setup(ctx, NewAccountsStorage(ctx)) + + if acc.Registration == nil { + log.Panicf("Account %s is not registered. Use 'run' to register a new account.\n", acc.Email) + } + + certsStorage := NewCertificatesStorage(ctx) + certsStorage.CreateRootFolder() + + for _, domain := range ctx.GlobalStringSlice("domains") { + log.Printf("Trying to revoke certificate for domain %s", domain) + + certBytes, err := certsStorage.ReadFile(domain, ".crt") + if err != nil { + log.Panicf("Error while revoking the certificate for domain %s\n\t%v", domain, err) + } + + err = client.Certificate.Revoke(certBytes) + if err != nil { + log.Panicf("Error while revoking the certificate for domain %s\n\t%v", domain, err) + } + + log.Println("Certificate was revoked.") + + if ctx.Bool("keep") { + return nil + } + + certsStorage.CreateArchiveFolder() + + err = certsStorage.MoveToArchive(domain) + if err != nil { + return err + } + + log.Println("Certificate was archived for domain:", domain) + } + + return nil +} diff --git a/common/legocmd/cmd/cmd_run.go b/common/legocmd/cmd/cmd_run.go new file mode 100644 index 0000000..505fe60 --- /dev/null +++ b/common/legocmd/cmd/cmd_run.go @@ -0,0 +1,186 @@ +package cmd + +import ( + "bufio" + "fmt" + "os" + "strings" + + "github.com/XrayR-project/XrayR/common/legocmd/log" + "github.com/go-acme/lego/v4/certificate" + "github.com/go-acme/lego/v4/lego" + "github.com/go-acme/lego/v4/registration" + "github.com/urfave/cli" +) + +func createRun() cli.Command { + return cli.Command{ + Name: "run", + Usage: "Register an account, then create and install a certificate", + Before: func(ctx *cli.Context) error { + // we require either domains or csr, but not both + hasDomains := len(ctx.GlobalStringSlice("domains")) > 0 + hasCsr := len(ctx.GlobalString("csr")) > 0 + if hasDomains && hasCsr { + log.Panic("Please specify either --domains/-d or --csr/-c, but not both") + } + if !hasDomains && !hasCsr { + log.Panic("Please specify --domains/-d (or --csr/-c if you already have a CSR)") + } + return nil + }, + Action: run, + Flags: []cli.Flag{ + cli.BoolFlag{ + Name: "no-bundle", + Usage: "Do not create a certificate bundle by adding the issuers certificate to the new certificate.", + }, + cli.BoolFlag{ + Name: "must-staple", + Usage: "Include the OCSP must staple TLS extension in the CSR and generated certificate. Only works if the CSR is generated by lego.", + }, + cli.StringFlag{ + Name: "run-hook", + Usage: "Define a hook. The hook is executed when the certificates are effectively created.", + }, + cli.StringFlag{ + Name: "preferred-chain", + Usage: "If the CA offers multiple certificate chains, prefer the chain with an issuer matching this Subject Common Name. If no match, the default offered chain will be used.", + }, + }, + } +} + +const rootPathWarningMessage = `!!!! HEADS UP !!!! + +Your account credentials have been saved in your Let's Encrypt +configuration directory at "%s". + +You should make a secure backup of this folder now. This +configuration directory will also contain certificates and +private keys obtained from Let's Encrypt so making regular +backups of this folder is ideal. +` + +func run(ctx *cli.Context) error { + accountsStorage := NewAccountsStorage(ctx) + + account, client := setup(ctx, accountsStorage) + setupChallenges(ctx, client) + + if account.Registration == nil { + reg, err := register(ctx, client) + if err != nil { + log.Panicf("Could not complete registration\n\t%v", err) + } + + account.Registration = reg + if err = accountsStorage.Save(account); err != nil { + log.Panic(err) + } + + fmt.Printf(rootPathWarningMessage, accountsStorage.GetRootPath()) + } + + certsStorage := NewCertificatesStorage(ctx) + certsStorage.CreateRootFolder() + + cert, err := obtainCertificate(ctx, client) + if err != nil { + // Make sure to return a non-zero exit code if ObtainSANCertificate returned at least one error. + // Due to us not returning partial certificate we can just exit here instead of at the end. + log.Panicf("Could not obtain certificates:\n\t%v", err) + } + + certsStorage.SaveResource(cert) + + meta := map[string]string{ + renewEnvAccountEmail: account.Email, + renewEnvCertDomain: cert.Domain, + renewEnvCertPath: certsStorage.GetFileName(cert.Domain, ".crt"), + renewEnvCertKeyPath: certsStorage.GetFileName(cert.Domain, ".key"), + } + + return launchHook(ctx.String("run-hook"), meta) +} + +func handleTOS(ctx *cli.Context, client *lego.Client) bool { + // Check for a global accept override + if ctx.GlobalBool("accept-tos") { + return true + } + + reader := bufio.NewReader(os.Stdin) + log.Printf("Please review the TOS at %s", client.GetToSURL()) + + for { + fmt.Println("Do you accept the TOS? Y/n") + text, err := reader.ReadString('\n') + if err != nil { + log.Panicf("Could not read from console: %v", err) + } + + text = strings.Trim(text, "\r\n") + switch text { + case "", "y", "Y": + return true + case "n", "N": + return false + default: + fmt.Println("Your input was invalid. Please answer with one of Y/y, n/N or by pressing enter.") + } + } +} + +func register(ctx *cli.Context, client *lego.Client) (*registration.Resource, error) { + accepted := handleTOS(ctx, client) + if !accepted { + log.Panic("You did not accept the TOS. Unable to proceed.") + } + + if ctx.GlobalBool("eab") { + kid := ctx.GlobalString("kid") + hmacEncoded := ctx.GlobalString("hmac") + + if kid == "" || hmacEncoded == "" { + log.Panicf("Requires arguments --kid and --hmac.") + } + + return client.Registration.RegisterWithExternalAccountBinding(registration.RegisterEABOptions{ + TermsOfServiceAgreed: accepted, + Kid: kid, + HmacEncoded: hmacEncoded, + }) + } + + return client.Registration.Register(registration.RegisterOptions{TermsOfServiceAgreed: true}) +} + +func obtainCertificate(ctx *cli.Context, client *lego.Client) (*certificate.Resource, error) { + bundle := !ctx.Bool("no-bundle") + + domains := ctx.GlobalStringSlice("domains") + if len(domains) > 0 { + // obtain a certificate, generating a new private key + request := certificate.ObtainRequest{ + Domains: domains, + Bundle: bundle, + MustStaple: ctx.Bool("must-staple"), + PreferredChain: ctx.String("preferred-chain"), + } + return client.Certificate.Obtain(request) + } + + // read the CSR + csr, err := readCSRFile(ctx.GlobalString("csr")) + if err != nil { + return nil, err + } + + // obtain a certificate for this CSR + return client.Certificate.ObtainForCSR(certificate.ObtainForCSRRequest{ + CSR: csr, + Bundle: bundle, + PreferredChain: ctx.String("preferred-chain"), + }) +} diff --git a/common/legocmd/cmd/flags.go b/common/legocmd/cmd/flags.go new file mode 100644 index 0000000..8307b2c --- /dev/null +++ b/common/legocmd/cmd/flags.go @@ -0,0 +1,120 @@ +package cmd + +import ( + "github.com/go-acme/lego/v4/lego" + "github.com/urfave/cli" +) + +func CreateFlags(defaultPath string) []cli.Flag { + return []cli.Flag{ + cli.StringSliceFlag{ + Name: "domains, d", + Usage: "Add a domain to the process. Can be specified multiple times.", + }, + cli.StringFlag{ + Name: "server, s", + Usage: "CA hostname (and optionally :port). The server certificate must be trusted in order to avoid further modifications to the client.", + Value: lego.LEDirectoryProduction, + }, + cli.BoolFlag{ + Name: "accept-tos, a", + Usage: "By setting this flag to true you indicate that you accept the current Let's Encrypt terms of service.", + }, + cli.StringFlag{ + Name: "email, m", + Usage: "Email used for registration and recovery contact.", + }, + cli.StringFlag{ + Name: "csr, c", + Usage: "Certificate signing request filename, if an external CSR is to be used.", + }, + cli.BoolFlag{ + Name: "eab", + Usage: "Use External Account Binding for account registration. Requires --kid and --hmac.", + }, + cli.StringFlag{ + Name: "kid", + Usage: "Key identifier from External CA. Used for External Account Binding.", + }, + cli.StringFlag{ + Name: "hmac", + Usage: "MAC key from External CA. Should be in Base64 URL Encoding without padding format. Used for External Account Binding.", + }, + cli.StringFlag{ + Name: "key-type, k", + Value: "ec256", + Usage: "Key type to use for private keys. Supported: rsa2048, rsa4096, rsa8192, ec256, ec384.", + }, + cli.StringFlag{ + Name: "filename", + Usage: "(deprecated) Filename of the generated certificate.", + }, + cli.StringFlag{ + Name: "path", + EnvVar: "LEGO_PATH", + Usage: "Directory to use for storing the data.", + Value: defaultPath, + }, + cli.BoolFlag{ + Name: "http", + Usage: "Use the HTTP challenge to solve challenges. Can be mixed with other types of challenges.", + }, + cli.StringFlag{ + Name: "http.port", + Usage: "Set the port and interface to use for HTTP based challenges to listen on.Supported: interface:port or :port.", + Value: ":80", + }, + cli.StringFlag{ + Name: "http.proxy-header", + Usage: "Validate against this HTTP header when solving HTTP based challenges behind a reverse proxy.", + Value: "Host", + }, + cli.StringFlag{ + Name: "http.webroot", + Usage: "Set the webroot folder to use for HTTP based challenges to write directly in a file in .well-known/acme-challenge. This disables the built-in server and expects the given directory to be publicly served with access to .well-known/acme-challenge", + }, + cli.StringSliceFlag{ + Name: "http.memcached-host", + Usage: "Set the memcached host(s) to use for HTTP based challenges. Challenges will be written to all specified hosts.", + }, + cli.BoolFlag{ + Name: "tls", + Usage: "Use the TLS challenge to solve challenges. Can be mixed with other types of challenges.", + }, + cli.StringFlag{ + Name: "tls.port", + Usage: "Set the port and interface to use for TLS based challenges to listen on. Supported: interface:port or :port.", + Value: ":443", + }, + cli.StringFlag{ + Name: "dns", + Usage: "Solve a DNS challenge using the specified provider. Can be mixed with other types of challenges. Run 'lego dnshelp' for help on usage.", + }, + cli.BoolFlag{ + Name: "dns.disable-cp", + Usage: "By setting this flag to true, disables the need to wait the propagation of the TXT record to all authoritative name servers.", + }, + cli.StringSliceFlag{ + Name: "dns.resolvers", + Usage: "Set the resolvers to use for performing recursive DNS queries. Supported: host:port. The default is to use the system resolvers, or Google's DNS resolvers if the system's cannot be determined.", + }, + cli.IntFlag{ + Name: "http-timeout", + Usage: "Set the HTTP timeout value to a specific value in seconds.", + }, + cli.IntFlag{ + Name: "dns-timeout", + Usage: "Set the DNS timeout value to a specific value in seconds. Used only when performing authoritative name servers queries.", + Value: 10, + }, + cli.BoolFlag{ + Name: "pem", + Usage: "Generate a .pem file by concatenating the .key and .crt files together.", + }, + cli.IntFlag{ + Name: "cert.timeout", + Usage: "Set the certificate timeout value to a specific value in seconds. Only used when obtaining certificates.", + Value: 30, + }, + } +} diff --git a/common/legocmd/cmd/hook.go b/common/legocmd/cmd/hook.go new file mode 100644 index 0000000..0b0ca40 --- /dev/null +++ b/common/legocmd/cmd/hook.go @@ -0,0 +1,47 @@ +package cmd + +import ( + "context" + "errors" + "fmt" + "os" + "os/exec" + "strings" + "time" +) + +func launchHook(hook string, meta map[string]string) error { + if hook == "" { + return nil + } + + ctxCmd, cancel := context.WithTimeout(context.Background(), 120*time.Second) + defer cancel() + + parts := strings.Fields(hook) + + cmdCtx := exec.CommandContext(ctxCmd, parts[0], parts[1:]...) + cmdCtx.Env = append(os.Environ(), metaToEnv(meta)...) + + output, err := cmdCtx.CombinedOutput() + + if len(output) > 0 { + fmt.Println(string(output)) + } + + if errors.Is(ctxCmd.Err(), context.DeadlineExceeded) { + return errors.New("hook timed out") + } + + return err +} + +func metaToEnv(meta map[string]string) []string { + var envs []string + + for k, v := range meta { + envs = append(envs, k+"="+v) + } + + return envs +} diff --git a/common/legocmd/cmd/setup.go b/common/legocmd/cmd/setup.go new file mode 100644 index 0000000..4fb6fda --- /dev/null +++ b/common/legocmd/cmd/setup.go @@ -0,0 +1,129 @@ +package cmd + +import ( + "crypto/x509" + "encoding/pem" + "fmt" + "io/ioutil" + "os" + "strings" + "time" + + "github.com/XrayR-project/XrayR/common/legocmd/log" + "github.com/go-acme/lego/v4/certcrypto" + "github.com/go-acme/lego/v4/lego" + "github.com/go-acme/lego/v4/registration" + "github.com/urfave/cli" +) + +const filePerm os.FileMode = 0o600 + +func setup(ctx *cli.Context, accountsStorage *AccountsStorage) (*Account, *lego.Client) { + keyType := getKeyType(ctx) + privateKey := accountsStorage.GetPrivateKey(keyType) + + var account *Account + if accountsStorage.ExistsAccountFilePath() { + account = accountsStorage.LoadAccount(privateKey) + } else { + account = &Account{Email: accountsStorage.GetUserID(), key: privateKey} + } + + client := newClient(ctx, account, keyType) + + return account, client +} + +func newClient(ctx *cli.Context, acc registration.User, keyType certcrypto.KeyType) *lego.Client { + config := lego.NewConfig(acc) + config.CADirURL = ctx.GlobalString("server") + + config.Certificate = lego.CertificateConfig{ + KeyType: keyType, + Timeout: time.Duration(ctx.GlobalInt("cert.timeout")) * time.Second, + } + config.UserAgent = fmt.Sprintf("lego-cli/%s", ctx.App.Version) + + if ctx.GlobalIsSet("http-timeout") { + config.HTTPClient.Timeout = time.Duration(ctx.GlobalInt("http-timeout")) * time.Second + } + + client, err := lego.NewClient(config) + if err != nil { + log.Panicf("Could not create client: %v", err) + } + + if client.GetExternalAccountRequired() && !ctx.GlobalIsSet("eab") { + log.Panic("Server requires External Account Binding. Use --eab with --kid and --hmac.") + } + + return client +} + +// getKeyType the type from which private keys should be generated. +func getKeyType(ctx *cli.Context) certcrypto.KeyType { + keyType := ctx.GlobalString("key-type") + switch strings.ToUpper(keyType) { + case "RSA2048": + return certcrypto.RSA2048 + case "RSA4096": + return certcrypto.RSA4096 + case "RSA8192": + return certcrypto.RSA8192 + case "EC256": + return certcrypto.EC256 + case "EC384": + return certcrypto.EC384 + } + + log.Panicf("Unsupported KeyType: %s", keyType) + return "" +} + +func getEmail(ctx *cli.Context) string { + email := ctx.GlobalString("email") + if email == "" { + log.Panic("You have to pass an account (email address) to the program using --email or -m") + } + return email +} + +func createNonExistingFolder(path string) error { + if _, err := os.Stat(path); os.IsNotExist(err) { + return os.MkdirAll(path, 0o700) + } else if err != nil { + return err + } + return nil +} + +func readCSRFile(filename string) (*x509.CertificateRequest, error) { + bytes, err := ioutil.ReadFile(filename) + if err != nil { + return nil, err + } + raw := bytes + + // see if we can find a PEM-encoded CSR + var p *pem.Block + rest := bytes + for { + // decode a PEM block + p, rest = pem.Decode(rest) + + // did we fail? + if p == nil { + break + } + + // did we get a CSR? + if p.Type == "CERTIFICATE REQUEST" { + raw = p.Bytes + } + } + + // no PEM-encoded CSR + // assume we were given a DER-encoded ASN.1 CSR + // (if this assumption is wrong, parsing these bytes will fail) + return x509.ParseCertificateRequest(raw) +} diff --git a/common/legocmd/cmd/setup_challenges.go b/common/legocmd/cmd/setup_challenges.go new file mode 100644 index 0000000..eeb3970 --- /dev/null +++ b/common/legocmd/cmd/setup_challenges.go @@ -0,0 +1,126 @@ +package cmd + +import ( + "net" + "strings" + "time" + + "github.com/XrayR-project/XrayR/common/legocmd/log" + "github.com/go-acme/lego/v4/challenge" + "github.com/go-acme/lego/v4/challenge/dns01" + "github.com/go-acme/lego/v4/challenge/http01" + "github.com/go-acme/lego/v4/challenge/tlsalpn01" + "github.com/go-acme/lego/v4/lego" + "github.com/go-acme/lego/v4/providers/dns" + "github.com/go-acme/lego/v4/providers/http/memcached" + "github.com/go-acme/lego/v4/providers/http/webroot" + "github.com/urfave/cli" +) + +func setupChallenges(ctx *cli.Context, client *lego.Client) { + if !ctx.GlobalBool("http") && !ctx.GlobalBool("tls") && !ctx.GlobalIsSet("dns") { + log.Panic("No challenge selected. You must specify at least one challenge: `--http`, `--tls`, `--dns`.") + } + + if ctx.GlobalBool("http") { + err := client.Challenge.SetHTTP01Provider(setupHTTPProvider(ctx)) + if err != nil { + log.Panic(err) + } + } + + if ctx.GlobalBool("tls") { + err := client.Challenge.SetTLSALPN01Provider(setupTLSProvider(ctx)) + if err != nil { + log.Panic(err) + } + } + + if ctx.GlobalIsSet("dns") { + setupDNS(ctx, client) + } +} + +func setupHTTPProvider(ctx *cli.Context) challenge.Provider { + switch { + case ctx.GlobalIsSet("http.webroot"): + ps, err := webroot.NewHTTPProvider(ctx.GlobalString("http.webroot")) + if err != nil { + log.Panic(err) + } + return ps + case ctx.GlobalIsSet("http.memcached-host"): + ps, err := memcached.NewMemcachedProvider(ctx.GlobalStringSlice("http.memcached-host")) + if err != nil { + log.Panic(err) + } + return ps + case ctx.GlobalIsSet("http.port"): + iface := ctx.GlobalString("http.port") + if !strings.Contains(iface, ":") { + log.Panicf("The --http switch only accepts interface:port or :port for its argument.") + } + + host, port, err := net.SplitHostPort(iface) + if err != nil { + log.Panic(err) + } + + srv := http01.NewProviderServer(host, port) + if header := ctx.GlobalString("http.proxy-header"); header != "" { + srv.SetProxyHeader(header) + } + return srv + case ctx.GlobalBool("http"): + srv := http01.NewProviderServer("", "") + if header := ctx.GlobalString("http.proxy-header"); header != "" { + srv.SetProxyHeader(header) + } + return srv + default: + log.Panic("Invalid HTTP challenge options.") + return nil + } +} + +func setupTLSProvider(ctx *cli.Context) challenge.Provider { + switch { + case ctx.GlobalIsSet("tls.port"): + iface := ctx.GlobalString("tls.port") + if !strings.Contains(iface, ":") { + log.Panicf("The --tls switch only accepts interface:port or :port for its argument.") + } + + host, port, err := net.SplitHostPort(iface) + if err != nil { + log.Panic(err) + } + + return tlsalpn01.NewProviderServer(host, port) + case ctx.GlobalBool("tls"): + return tlsalpn01.NewProviderServer("", "") + default: + log.Panic("Invalid HTTP challenge options.") + return nil + } +} + +func setupDNS(ctx *cli.Context, client *lego.Client) { + provider, err := dns.NewDNSChallengeProviderByName(ctx.GlobalString("dns")) + if err != nil { + log.Panic(err) + } + + servers := ctx.GlobalStringSlice("dns.resolvers") + err = client.Challenge.SetDNS01Provider(provider, + dns01.CondOption(len(servers) > 0, + dns01.AddRecursiveNameservers(dns01.ParseNameservers(ctx.GlobalStringSlice("dns.resolvers")))), + dns01.CondOption(ctx.GlobalBool("dns.disable-cp"), + dns01.DisableCompletePropagationRequirement()), + dns01.CondOption(ctx.GlobalIsSet("dns-timeout"), + dns01.AddDNSTimeout(time.Duration(ctx.GlobalInt("dns-timeout"))*time.Second)), + ) + if err != nil { + log.Panic(err) + } +} diff --git a/common/legocmd/cmd/zz_gen_cmd_dnshelp.go b/common/legocmd/cmd/zz_gen_cmd_dnshelp.go new file mode 100644 index 0000000..29db62c --- /dev/null +++ b/common/legocmd/cmd/zz_gen_cmd_dnshelp.go @@ -0,0 +1,1884 @@ +package cmd + +// CODE GENERATED AUTOMATICALLY +// THIS FILE MUST NOT BE EDITED BY HAND + +import ( + "fmt" + "os" + "sort" + "strings" + "text/tabwriter" +) + +func allDNSCodes() string { + providers := []string{ + "manual", + "acme-dns", + "alidns", + "arvancloud", + "auroradns", + "autodns", + "azure", + "bindman", + "bluecat", + "checkdomain", + "clouddns", + "cloudflare", + "cloudns", + "cloudxns", + "conoha", + "constellix", + "desec", + "designate", + "digitalocean", + "dnsimple", + "dnsmadeeasy", + "dnspod", + "dode", + "domeneshop", + "dreamhost", + "duckdns", + "dyn", + "dynu", + "easydns", + "edgedns", + "exec", + "exoscale", + "gandi", + "gandiv5", + "gcloud", + "glesys", + "godaddy", + "hetzner", + "hostingde", + "httpreq", + "hurricane", + "hyperone", + "iij", + "infomaniak", + "inwx", + "ionos", + "joker", + "lightsail", + "linode", + "liquidweb", + "loopia", + "luadns", + "mydnsjp", + "mythicbeasts", + "namecheap", + "namedotcom", + "namesilo", + "netcup", + "netlify", + "nifcloud", + "njalla", + "ns1", + "oraclecloud", + "otc", + "ovh", + "pdns", + "rackspace", + "regru", + "rfc2136", + "rimuhosting", + "route53", + "sakuracloud", + "scaleway", + "selectel", + "servercow", + "stackpath", + "transip", + "vegadns", + "versio", + "vscale", + "vultr", + "yandex", + "zoneee", + "zonomi", + } + sort.Strings(providers) + return strings.Join(providers, ", ") +} + +func displayDNSHelp(name string) error { + w := tabwriter.NewWriter(os.Stdout, 0, 0, 2, ' ', 0) + ew := &errWriter{w: w} + + switch name { + case "acme-dns": + // generated from: providers/dns/acmedns/acmedns.toml + ew.writeln(`Configuration for Joohoi's ACME-DNS.`) + ew.writeln(`Code: 'acme-dns'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "ACME_DNS_API_BASE": The ACME-DNS API address`) + ew.writeln(` - "ACME_DNS_STORAGE_PATH": The ACME-DNS JSON account data file. A per-domain account will be registered/persisted to this file and used for TXT updates.`) + ew.writeln() + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/acme-dns`) + + case "alidns": + // generated from: providers/dns/alidns/alidns.toml + ew.writeln(`Configuration for Alibaba Cloud DNS.`) + ew.writeln(`Code: 'alidns'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "ALICLOUD_ACCESS_KEY": Access key ID`) + ew.writeln(` - "ALICLOUD_SECRET_KEY": Access Key secret`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "ALICLOUD_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "ALICLOUD_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "ALICLOUD_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "ALICLOUD_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/alidns`) + + case "arvancloud": + // generated from: providers/dns/arvancloud/arvancloud.toml + ew.writeln(`Configuration for ArvanCloud.`) + ew.writeln(`Code: 'arvancloud'`) + ew.writeln(`Since: 'v3.8.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "ARVANCLOUD_API_KEY": API key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "ARVANCLOUD_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "ARVANCLOUD_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "ARVANCLOUD_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "ARVANCLOUD_SEQUENCE_INTERVAL": Interval between iteration`) + ew.writeln(` - "ARVANCLOUD_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/arvancloud`) + + case "auroradns": + // generated from: providers/dns/auroradns/auroradns.toml + ew.writeln(`Configuration for Aurora DNS.`) + ew.writeln(`Code: 'auroradns'`) + ew.writeln(`Since: 'v0.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "AURORA_KEY": User API key`) + ew.writeln(` - "AURORA_USER_ID": User ID`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "AURORA_ENDPOINT": API endpoint URL`) + ew.writeln(` - "AURORA_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "AURORA_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "AURORA_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/auroradns`) + + case "autodns": + // generated from: providers/dns/autodns/autodns.toml + ew.writeln(`Configuration for Autodns.`) + ew.writeln(`Code: 'autodns'`) + ew.writeln(`Since: 'v3.2.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "AUTODNS_API_PASSWORD": User Password`) + ew.writeln(` - "AUTODNS_API_USER": Username`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "AUTODNS_CONTEXT": API context (4 for production, 1 for testing. Defaults to 4)`) + ew.writeln(` - "AUTODNS_ENDPOINT": API endpoint URL, defaults to https://api.autodns.com/v1/`) + ew.writeln(` - "AUTODNS_HTTP_TIMEOUT": API request timeout, defaults to 30 seconds`) + ew.writeln(` - "AUTODNS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "AUTODNS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "AUTODNS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/autodns`) + + case "azure": + // generated from: providers/dns/azure/azure.toml + ew.writeln(`Configuration for Azure.`) + ew.writeln(`Code: 'azure'`) + ew.writeln(`Since: 'v0.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "AZURE_CLIENT_ID": Client ID`) + ew.writeln(` - "AZURE_CLIENT_SECRET": Client secret`) + ew.writeln(` - "AZURE_ENVIRONMENT": Azure environment, one of: public, usgovernment, german, and china`) + ew.writeln(` - "AZURE_RESOURCE_GROUP": Resource group`) + ew.writeln(` - "AZURE_SUBSCRIPTION_ID": Subscription ID`) + ew.writeln(` - "AZURE_TENANT_ID": Tenant ID`) + ew.writeln(` - "instance metadata service": If the credentials are **not** set via the environment, then it will attempt to get a bearer token via the [instance metadata service](https://docs.microsoft.com/en-us/azure/virtual-machines/windows/instance-metadata-service).`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "AZURE_METADATA_ENDPOINT": Metadata Service endpoint URL`) + ew.writeln(` - "AZURE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "AZURE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "AZURE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/azure`) + + case "bindman": + // generated from: providers/dns/bindman/bindman.toml + ew.writeln(`Configuration for Bindman.`) + ew.writeln(`Code: 'bindman'`) + ew.writeln(`Since: 'v2.6.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "BINDMAN_MANAGER_ADDRESS": The server URL, should have scheme, hostname, and port (if required) of the Bindman-DNS Manager server`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "BINDMAN_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "BINDMAN_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "BINDMAN_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/bindman`) + + case "bluecat": + // generated from: providers/dns/bluecat/bluecat.toml + ew.writeln(`Configuration for Bluecat.`) + ew.writeln(`Code: 'bluecat'`) + ew.writeln(`Since: 'v0.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "BLUECAT_CONFIG_NAME": Configuration name`) + ew.writeln(` - "BLUECAT_DNS_VIEW": External DNS View Name`) + ew.writeln(` - "BLUECAT_PASSWORD": API password`) + ew.writeln(` - "BLUECAT_SERVER_URL": The server URL, should have scheme, hostname, and port (if required) of the authoritative Bluecat BAM serve`) + ew.writeln(` - "BLUECAT_USER_NAME": API username`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "BLUECAT_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "BLUECAT_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "BLUECAT_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "BLUECAT_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/bluecat`) + + case "checkdomain": + // generated from: providers/dns/checkdomain/checkdomain.toml + ew.writeln(`Configuration for Checkdomain.`) + ew.writeln(`Code: 'checkdomain'`) + ew.writeln(`Since: 'v3.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "CHECKDOMAIN_TOKEN": API token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "CHECKDOMAIN_ENDPOINT": API endpoint URL, defaults to https://api.checkdomain.de`) + ew.writeln(` - "CHECKDOMAIN_HTTP_TIMEOUT": API request timeout, defaults to 30 seconds`) + ew.writeln(` - "CHECKDOMAIN_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "CHECKDOMAIN_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "CHECKDOMAIN_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/checkdomain`) + + case "clouddns": + // generated from: providers/dns/clouddns/clouddns.toml + ew.writeln(`Configuration for CloudDNS.`) + ew.writeln(`Code: 'clouddns'`) + ew.writeln(`Since: 'v3.6.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "CLOUDDNS_CLIENT_ID": Client ID`) + ew.writeln(` - "CLOUDDNS_EMAIL": Account email`) + ew.writeln(` - "CLOUDDNS_PASSWORD": Account password`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "CLOUDDNS_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "CLOUDDNS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "CLOUDDNS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "CLOUDDNS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/clouddns`) + + case "cloudflare": + // generated from: providers/dns/cloudflare/cloudflare.toml + ew.writeln(`Configuration for Cloudflare.`) + ew.writeln(`Code: 'cloudflare'`) + ew.writeln(`Since: 'v0.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "CF_API_EMAIL": Account email`) + ew.writeln(` - "CF_API_KEY": API key`) + ew.writeln(` - "CF_DNS_API_TOKEN": API token with DNS:Edit permission (since v3.1.0)`) + ew.writeln(` - "CF_ZONE_API_TOKEN": API token with Zone:Read permission (since v3.1.0)`) + ew.writeln(` - "CLOUDFLARE_API_KEY": Alias to CF_API_KEY`) + ew.writeln(` - "CLOUDFLARE_DNS_API_TOKEN": Alias to CF_DNS_API_TOKEN`) + ew.writeln(` - "CLOUDFLARE_EMAIL": Alias to CF_API_EMAIL`) + ew.writeln(` - "CLOUDFLARE_ZONE_API_TOKEN": Alias to CF_ZONE_API_TOKEN`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "CLOUDFLARE_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "CLOUDFLARE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "CLOUDFLARE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "CLOUDFLARE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/cloudflare`) + + case "cloudns": + // generated from: providers/dns/cloudns/cloudns.toml + ew.writeln(`Configuration for ClouDNS.`) + ew.writeln(`Code: 'cloudns'`) + ew.writeln(`Since: 'v2.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "CLOUDNS_AUTH_ID": The API user ID`) + ew.writeln(` - "CLOUDNS_AUTH_PASSWORD": The password for API user ID`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "CLOUDNS_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "CLOUDNS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "CLOUDNS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "CLOUDNS_SUB_AUTH_ID": The API sub user ID`) + ew.writeln(` - "CLOUDNS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/cloudns`) + + case "cloudxns": + // generated from: providers/dns/cloudxns/cloudxns.toml + ew.writeln(`Configuration for CloudXNS.`) + ew.writeln(`Code: 'cloudxns'`) + ew.writeln(`Since: 'v0.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "CLOUDXNS_API_KEY": The API key`) + ew.writeln(` - "CLOUDXNS_SECRET_KEY": The API secret key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "CLOUDXNS_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "CLOUDXNS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "CLOUDXNS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "CLOUDXNS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/cloudxns`) + + case "conoha": + // generated from: providers/dns/conoha/conoha.toml + ew.writeln(`Configuration for ConoHa.`) + ew.writeln(`Code: 'conoha'`) + ew.writeln(`Since: 'v1.2.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "CONOHA_API_PASSWORD": The API password`) + ew.writeln(` - "CONOHA_API_USERNAME": The API username`) + ew.writeln(` - "CONOHA_TENANT_ID": Tenant ID`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "CONOHA_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "CONOHA_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "CONOHA_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "CONOHA_REGION": The region`) + ew.writeln(` - "CONOHA_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/conoha`) + + case "constellix": + // generated from: providers/dns/constellix/constellix.toml + ew.writeln(`Configuration for Constellix.`) + ew.writeln(`Code: 'constellix'`) + ew.writeln(`Since: 'v3.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "CONSTELLIX_API_KEY": User API key`) + ew.writeln(` - "CONSTELLIX_SECRET_KEY": User secret key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "CONSTELLIX_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "CONSTELLIX_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "CONSTELLIX_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "CONSTELLIX_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/constellix`) + + case "desec": + // generated from: providers/dns/desec/desec.toml + ew.writeln(`Configuration for deSEC.io.`) + ew.writeln(`Code: 'desec'`) + ew.writeln(`Since: 'v3.7.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DESEC_TOKEN": Domain token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DESEC_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "DESEC_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DESEC_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DESEC_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/desec`) + + case "designate": + // generated from: providers/dns/designate/designate.toml + ew.writeln(`Configuration for Designate DNSaaS for Openstack.`) + ew.writeln(`Code: 'designate'`) + ew.writeln(`Since: 'v2.2.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "OS_APPLICATION_CREDENTIAL_ID": Application credential ID`) + ew.writeln(` - "OS_APPLICATION_CREDENTIAL_NAME": Application credential name`) + ew.writeln(` - "OS_APPLICATION_CREDENTIAL_SECRET": Application credential secret`) + ew.writeln(` - "OS_AUTH_URL": Identity endpoint URL`) + ew.writeln(` - "OS_PASSWORD": Password`) + ew.writeln(` - "OS_PROJECT_NAME": Project name`) + ew.writeln(` - "OS_REGION_NAME": Region name`) + ew.writeln(` - "OS_USERNAME": Username`) + ew.writeln(` - "OS_USER_ID": User ID`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DESIGNATE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DESIGNATE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DESIGNATE_TTL": The TTL of the TXT record used for the DNS challenge`) + ew.writeln(` - "OS_PROJECT_ID": Project ID`) + ew.writeln(` - "OS_TENANT_NAME": Tenant name (deprecated see OS_PROJECT_NAME and OS_PROJECT_ID)`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/designate`) + + case "digitalocean": + // generated from: providers/dns/digitalocean/digitalocean.toml + ew.writeln(`Configuration for Digital Ocean.`) + ew.writeln(`Code: 'digitalocean'`) + ew.writeln(`Since: 'v0.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DO_AUTH_TOKEN": Authentication token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DO_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "DO_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DO_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DO_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/digitalocean`) + + case "dnsimple": + // generated from: providers/dns/dnsimple/dnsimple.toml + ew.writeln(`Configuration for DNSimple.`) + ew.writeln(`Code: 'dnsimple'`) + ew.writeln(`Since: 'v0.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DNSIMPLE_OAUTH_TOKEN": OAuth token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DNSIMPLE_BASE_URL": API endpoint URL`) + ew.writeln(` - "DNSIMPLE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DNSIMPLE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DNSIMPLE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/dnsimple`) + + case "dnsmadeeasy": + // generated from: providers/dns/dnsmadeeasy/dnsmadeeasy.toml + ew.writeln(`Configuration for DNS Made Easy.`) + ew.writeln(`Code: 'dnsmadeeasy'`) + ew.writeln(`Since: 'v0.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DNSMADEEASY_API_KEY": The API key`) + ew.writeln(` - "DNSMADEEASY_API_SECRET": The API Secret key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DNSMADEEASY_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "DNSMADEEASY_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DNSMADEEASY_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DNSMADEEASY_SANDBOX": Activate the sandbox (boolean)`) + ew.writeln(` - "DNSMADEEASY_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/dnsmadeeasy`) + + case "dnspod": + // generated from: providers/dns/dnspod/dnspod.toml + ew.writeln(`Configuration for DNSPod.`) + ew.writeln(`Code: 'dnspod'`) + ew.writeln(`Since: 'v0.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DNSPOD_API_KEY": The user token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DNSPOD_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "DNSPOD_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DNSPOD_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DNSPOD_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/dnspod`) + + case "dode": + // generated from: providers/dns/dode/dode.toml + ew.writeln(`Configuration for Domain Offensive (do.de).`) + ew.writeln(`Code: 'dode'`) + ew.writeln(`Since: 'v2.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DODE_TOKEN": API token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DODE_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "DODE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DODE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DODE_SEQUENCE_INTERVAL": Interval between iteration`) + ew.writeln(` - "DODE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/dode`) + + case "domeneshop": + // generated from: providers/dns/domeneshop/domeneshop.toml + ew.writeln(`Configuration for Domeneshop.`) + ew.writeln(`Code: 'domeneshop'`) + ew.writeln(`Since: 'v4.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DOMENESHOP_API_PASSWORD": API secret`) + ew.writeln(` - "DOMENESHOP_API_TOKEN": API token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DOMENESHOP_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "DOMENESHOP_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DOMENESHOP_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/domeneshop`) + + case "dreamhost": + // generated from: providers/dns/dreamhost/dreamhost.toml + ew.writeln(`Configuration for DreamHost.`) + ew.writeln(`Code: 'dreamhost'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DREAMHOST_API_KEY": The API key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DREAMHOST_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "DREAMHOST_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DREAMHOST_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DREAMHOST_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/dreamhost`) + + case "duckdns": + // generated from: providers/dns/duckdns/duckdns.toml + ew.writeln(`Configuration for Duck DNS.`) + ew.writeln(`Code: 'duckdns'`) + ew.writeln(`Since: 'v0.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DUCKDNS_TOKEN": Account token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DUCKDNS_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "DUCKDNS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DUCKDNS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DUCKDNS_SEQUENCE_INTERVAL": Interval between iteration`) + ew.writeln(` - "DUCKDNS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/duckdns`) + + case "dyn": + // generated from: providers/dns/dyn/dyn.toml + ew.writeln(`Configuration for Dyn.`) + ew.writeln(`Code: 'dyn'`) + ew.writeln(`Since: 'v0.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DYN_CUSTOMER_NAME": Customer name`) + ew.writeln(` - "DYN_PASSWORD": Password`) + ew.writeln(` - "DYN_USER_NAME": User name`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DYN_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "DYN_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DYN_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DYN_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/dyn`) + + case "dynu": + // generated from: providers/dns/dynu/dynu.toml + ew.writeln(`Configuration for Dynu.`) + ew.writeln(`Code: 'dynu'`) + ew.writeln(`Since: 'v3.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "DYNU_API_KEY": API key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "DYNU_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "DYNU_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "DYNU_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "DYNU_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/dynu`) + + case "easydns": + // generated from: providers/dns/easydns/easydns.toml + ew.writeln(`Configuration for EasyDNS.`) + ew.writeln(`Code: 'easydns'`) + ew.writeln(`Since: 'v2.6.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "EASYDNS_KEY": API Key`) + ew.writeln(` - "EASYDNS_TOKEN": API Token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "EASYDNS_ENDPOINT": The endpoint URL of the API Server`) + ew.writeln(` - "EASYDNS_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "EASYDNS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "EASYDNS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "EASYDNS_SEQUENCE_INTERVAL": Time between sequential requests`) + ew.writeln(` - "EASYDNS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/easydns`) + + case "edgedns": + // generated from: providers/dns/edgedns/edgedns.toml + ew.writeln(`Configuration for Akamai EdgeDNS.`) + ew.writeln(`Code: 'edgedns'`) + ew.writeln(`Since: 'v3.9.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "AKAMAI_ACCESS_TOKEN": Access token, managed by the Akamai EdgeGrid client`) + ew.writeln(` - "AKAMAI_CLIENT_SECRET": Client secret, managed by the Akamai EdgeGrid client`) + ew.writeln(` - "AKAMAI_CLIENT_TOKEN": Client token, managed by the Akamai EdgeGrid client`) + ew.writeln(` - "AKAMAI_EDGERC": Path to the .edgerc file, managed by the Akamai EdgeGrid client`) + ew.writeln(` - "AKAMAI_EDGERC_SECTION": Configuration section, managed by the Akamai EdgeGrid client`) + ew.writeln(` - "AKAMAI_HOST": API host, managed by the Akamai EdgeGrid client`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "AKAMAI_POLLING_INTERVAL": Time between DNS propagation check. Default: 15 seconds`) + ew.writeln(` - "AKAMAI_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation. Default: 3 minutes`) + ew.writeln(` - "AKAMAI_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/edgedns`) + + case "exec": + // generated from: providers/dns/exec/exec.toml + ew.writeln(`Configuration for External program.`) + ew.writeln(`Code: 'exec'`) + ew.writeln(`Since: 'v0.5.0'`) + ew.writeln() + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/exec`) + + case "exoscale": + // generated from: providers/dns/exoscale/exoscale.toml + ew.writeln(`Configuration for Exoscale.`) + ew.writeln(`Code: 'exoscale'`) + ew.writeln(`Since: 'v0.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "EXOSCALE_API_KEY": API key`) + ew.writeln(` - "EXOSCALE_API_SECRET": API secret`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "EXOSCALE_ENDPOINT": API endpoint URL`) + ew.writeln(` - "EXOSCALE_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "EXOSCALE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "EXOSCALE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "EXOSCALE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/exoscale`) + + case "gandi": + // generated from: providers/dns/gandi/gandi.toml + ew.writeln(`Configuration for Gandi.`) + ew.writeln(`Code: 'gandi'`) + ew.writeln(`Since: 'v0.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "GANDI_API_KEY": API key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "GANDI_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "GANDI_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "GANDI_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "GANDI_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/gandi`) + + case "gandiv5": + // generated from: providers/dns/gandiv5/gandiv5.toml + ew.writeln(`Configuration for Gandi Live DNS (v5).`) + ew.writeln(`Code: 'gandiv5'`) + ew.writeln(`Since: 'v0.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "GANDIV5_API_KEY": API key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "GANDIV5_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "GANDIV5_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "GANDIV5_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "GANDIV5_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/gandiv5`) + + case "gcloud": + // generated from: providers/dns/gcloud/gcloud.toml + ew.writeln(`Configuration for Google Cloud.`) + ew.writeln(`Code: 'gcloud'`) + ew.writeln(`Since: 'v0.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "Application Default Credentials": [Documentation](https://cloud.google.com/docs/authentication/production#providing_credentials_to_your_application)`) + ew.writeln(` - "GCE_PROJECT": Project name (by default, the project name is auto-detected by using the metadata service)`) + ew.writeln(` - "GCE_SERVICE_ACCOUNT": Account`) + ew.writeln(` - "GCE_SERVICE_ACCOUNT_FILE": Account file path`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "GCE_ALLOW_PRIVATE_ZONE": Allows requested domain to be in private DNS zone, works only with a private ACME server (by default: false)`) + ew.writeln(` - "GCE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "GCE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "GCE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/gcloud`) + + case "glesys": + // generated from: providers/dns/glesys/glesys.toml + ew.writeln(`Configuration for Glesys.`) + ew.writeln(`Code: 'glesys'`) + ew.writeln(`Since: 'v0.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "GLESYS_API_KEY": API key`) + ew.writeln(` - "GLESYS_API_USER": API user`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "GLESYS_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "GLESYS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "GLESYS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "GLESYS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/glesys`) + + case "godaddy": + // generated from: providers/dns/godaddy/godaddy.toml + ew.writeln(`Configuration for Go Daddy.`) + ew.writeln(`Code: 'godaddy'`) + ew.writeln(`Since: 'v0.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "GODADDY_API_KEY": API key`) + ew.writeln(` - "GODADDY_API_SECRET": API secret`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "GODADDY_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "GODADDY_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "GODADDY_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "GODADDY_SEQUENCE_INTERVAL": Interval between iteration`) + ew.writeln(` - "GODADDY_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/godaddy`) + + case "hetzner": + // generated from: providers/dns/hetzner/hetzner.toml + ew.writeln(`Configuration for Hetzner.`) + ew.writeln(`Code: 'hetzner'`) + ew.writeln(`Since: 'v3.7.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "HETZNER_API_KEY": API key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "HETZNER_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "HETZNER_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "HETZNER_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "HETZNER_SEQUENCE_INTERVAL": Interval between iteration`) + ew.writeln(` - "HETZNER_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/hetzner`) + + case "hostingde": + // generated from: providers/dns/hostingde/hostingde.toml + ew.writeln(`Configuration for Hosting.de.`) + ew.writeln(`Code: 'hostingde'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "HOSTINGDE_API_KEY": API key`) + ew.writeln(` - "HOSTINGDE_ZONE_NAME": Zone name in ACE format`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "HOSTINGDE_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "HOSTINGDE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "HOSTINGDE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "HOSTINGDE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/hostingde`) + + case "httpreq": + // generated from: providers/dns/httpreq/httpreq.toml + ew.writeln(`Configuration for HTTP request.`) + ew.writeln(`Code: 'httpreq'`) + ew.writeln(`Since: 'v2.0.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "HTTPREQ_ENDPOINT": The URL of the server`) + ew.writeln(` - "HTTPREQ_MODE": 'RAW', none`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "HTTPREQ_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "HTTPREQ_PASSWORD": Basic authentication password`) + ew.writeln(` - "HTTPREQ_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "HTTPREQ_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "HTTPREQ_USERNAME": Basic authentication username`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/httpreq`) + + case "hurricane": + // generated from: providers/dns/hurricane/hurricane.toml + ew.writeln(`Configuration for Hurricane Electric DNS.`) + ew.writeln(`Code: 'hurricane'`) + ew.writeln(`Since: 'v4.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "HURRICANE_TOKENS": TXT record names and tokens`) + ew.writeln() + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/hurricane`) + + case "hyperone": + // generated from: providers/dns/hyperone/hyperone.toml + ew.writeln(`Configuration for HyperOne.`) + ew.writeln(`Code: 'hyperone'`) + ew.writeln(`Since: 'v3.9.0'`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "HYPERONE_API_URL": Allows to pass custom API Endpoint to be used in the challenge (default https://api.hyperone.com/v2)`) + ew.writeln(` - "HYPERONE_LOCATION_ID": Specifies location (region) to be used in API calls. (default pl-waw-1)`) + ew.writeln(` - "HYPERONE_PASSPORT_LOCATION": Allows to pass custom passport file location (default ~/.h1/passport.json)`) + ew.writeln(` - "HYPERONE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "HYPERONE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "HYPERONE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/hyperone`) + + case "iij": + // generated from: providers/dns/iij/iij.toml + ew.writeln(`Configuration for Internet Initiative Japan.`) + ew.writeln(`Code: 'iij'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "IIJ_API_ACCESS_KEY": API access key`) + ew.writeln(` - "IIJ_API_SECRET_KEY": API secret key`) + ew.writeln(` - "IIJ_DO_SERVICE_CODE": DO service code`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "IIJ_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "IIJ_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "IIJ_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/iij`) + + case "infomaniak": + // generated from: providers/dns/infomaniak/infomaniak.toml + ew.writeln(`Configuration for Infomaniak.`) + ew.writeln(`Code: 'infomaniak'`) + ew.writeln(`Since: 'v4.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "INFOMANIAK_ACCESS_TOKEN": Access token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "INFOMANIAK_ENDPOINT": https://api.infomaniak.com`) + ew.writeln(` - "INFOMANIAK_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "INFOMANIAK_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "INFOMANIAK_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "INFOMANIAK_TTL": The TTL of the TXT record used for the DNS challenge in seconds`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/infomaniak`) + + case "inwx": + // generated from: providers/dns/inwx/inwx.toml + ew.writeln(`Configuration for INWX.`) + ew.writeln(`Code: 'inwx'`) + ew.writeln(`Since: 'v2.0.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "INWX_PASSWORD": Password`) + ew.writeln(` - "INWX_USERNAME": Username`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "INWX_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "INWX_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation (default 360s)`) + ew.writeln(` - "INWX_SANDBOX": Activate the sandbox (boolean)`) + ew.writeln(` - "INWX_SHARED_SECRET": shared secret related to 2FA`) + ew.writeln(` - "INWX_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/inwx`) + + case "ionos": + // generated from: providers/dns/ionos/ionos.toml + ew.writeln(`Configuration for Ionos.`) + ew.writeln(`Code: 'ionos'`) + ew.writeln(`Since: 'v4.2.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "IONOS_API_KEY": API key '.' https://developer.hosting.ionos.com/docs/getstarted`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "IONOS_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "IONOS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "IONOS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "IONOS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/ionos`) + + case "joker": + // generated from: providers/dns/joker/joker.toml + ew.writeln(`Configuration for Joker.`) + ew.writeln(`Code: 'joker'`) + ew.writeln(`Since: 'v2.6.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "JOKER_API_KEY": API key (only with DMAPI mode)`) + ew.writeln(` - "JOKER_API_MODE": 'DMAPI' or 'SVC'. DMAPI is for resellers accounts. (Default: DMAPI)`) + ew.writeln(` - "JOKER_PASSWORD": Joker.com password`) + ew.writeln(` - "JOKER_USERNAME": Joker.com username`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "JOKER_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "JOKER_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "JOKER_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "JOKER_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/joker`) + + case "lightsail": + // generated from: providers/dns/lightsail/lightsail.toml + ew.writeln(`Configuration for Amazon Lightsail.`) + ew.writeln(`Code: 'lightsail'`) + ew.writeln(`Since: 'v0.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "AWS_ACCESS_KEY_ID": Access key ID`) + ew.writeln(` - "AWS_SECRET_ACCESS_KEY": Secret access key`) + ew.writeln(` - "DNS_ZONE": DNS zone`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "LIGHTSAIL_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "LIGHTSAIL_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/lightsail`) + + case "linode": + // generated from: providers/dns/linode/linode.toml + ew.writeln(`Configuration for Linode (v4).`) + ew.writeln(`Code: 'linode'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "LINODE_TOKEN": API token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "LINODE_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "LINODE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "LINODE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "LINODE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/linode`) + + case "liquidweb": + // generated from: providers/dns/liquidweb/liquidweb.toml + ew.writeln(`Configuration for Liquid Web.`) + ew.writeln(`Code: 'liquidweb'`) + ew.writeln(`Since: 'v3.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "LIQUID_WEB_PASSWORD": Storm API Password`) + ew.writeln(` - "LIQUID_WEB_USERNAME": Storm API Username`) + ew.writeln(` - "LIQUID_WEB_ZONE": DNS Zone`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "LIQUID_WEB_HTTP_TIMEOUT": Maximum waiting time for the DNS records to be created (not verified)`) + ew.writeln(` - "LIQUID_WEB_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "LIQUID_WEB_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "LIQUID_WEB_TTL": The TTL of the TXT record used for the DNS challenge`) + ew.writeln(` - "LIQUID_WEB_URL": Storm API endpoint`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/liquidweb`) + + case "loopia": + // generated from: providers/dns/loopia/loopia.toml + ew.writeln(`Configuration for Loopia.`) + ew.writeln(`Code: 'loopia'`) + ew.writeln(`Since: 'v4.2.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "LOOPIA_API_PASSWORD": API password`) + ew.writeln(` - "LOOPIA_API_USER": API username`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "LOOPIA_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "LOOPIA_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "LOOPIA_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "LOOPIA_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/loopia`) + + case "luadns": + // generated from: providers/dns/luadns/luadns.toml + ew.writeln(`Configuration for LuaDNS.`) + ew.writeln(`Code: 'luadns'`) + ew.writeln(`Since: 'v3.7.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "LUADNS_API_TOKEN": API token`) + ew.writeln(` - "LUADNS_API_USERNAME": Username (your email)`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "LUADNS_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "LUADNS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "LUADNS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "LUADNS_SEQUENCE_INTERVAL": Interval between iteration`) + ew.writeln(` - "LUADNS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/luadns`) + + case "mydnsjp": + // generated from: providers/dns/mydnsjp/mydnsjp.toml + ew.writeln(`Configuration for MyDNS.jp.`) + ew.writeln(`Code: 'mydnsjp'`) + ew.writeln(`Since: 'v1.2.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "MYDNSJP_MASTER_ID": Master ID`) + ew.writeln(` - "MYDNSJP_PASSWORD": Password`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "MYDNSJP_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "MYDNSJP_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "MYDNSJP_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "MYDNSJP_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/mydnsjp`) + + case "mythicbeasts": + // generated from: providers/dns/mythicbeasts/mythicbeasts.toml + ew.writeln(`Configuration for MythicBeasts.`) + ew.writeln(`Code: 'mythicbeasts'`) + ew.writeln(`Since: 'v0.3.7'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "MYTHICBEASTS_PASSWORD": Password`) + ew.writeln(` - "MYTHICBEASTS_USERNAME": User name`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "MYTHICBEASTS_API_ENDPOINT": The endpoint for the API (must implement v2)`) + ew.writeln(` - "MYTHICBEASTS_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "MYTHICBEASTS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "MYTHICBEASTS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "MYTHICBEASTS_TTL": The TTL of the TXT record used for the DNS challenge`) + ew.writeln(` - "MYTHICBEASYS_AUTH_API_ENDPOINT": The endpoint for Mythic Beasts' Authentication`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/mythicbeasts`) + + case "namecheap": + // generated from: providers/dns/namecheap/namecheap.toml + ew.writeln(`Configuration for Namecheap.`) + ew.writeln(`Code: 'namecheap'`) + ew.writeln(`Since: 'v0.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "NAMECHEAP_API_KEY": API key`) + ew.writeln(` - "NAMECHEAP_API_USER": API user`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "NAMECHEAP_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "NAMECHEAP_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "NAMECHEAP_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "NAMECHEAP_SANDBOX": Activate the sandbox (boolean)`) + ew.writeln(` - "NAMECHEAP_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/namecheap`) + + case "namedotcom": + // generated from: providers/dns/namedotcom/namedotcom.toml + ew.writeln(`Configuration for Name.com.`) + ew.writeln(`Code: 'namedotcom'`) + ew.writeln(`Since: 'v0.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "NAMECOM_API_TOKEN": API token`) + ew.writeln(` - "NAMECOM_USERNAME": Username`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "NAMECOM_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "NAMECOM_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "NAMECOM_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "NAMECOM_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/namedotcom`) + + case "namesilo": + // generated from: providers/dns/namesilo/namesilo.toml + ew.writeln(`Configuration for Namesilo.`) + ew.writeln(`Code: 'namesilo'`) + ew.writeln(`Since: 'v2.7.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "NAMESILO_API_KEY": Client ID`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "NAMESILO_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "NAMESILO_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation, it is better to set larger than 15m`) + ew.writeln(` - "NAMESILO_TTL": The TTL of the TXT record used for the DNS challenge, should be in [3600, 2592000]`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/namesilo`) + + case "netcup": + // generated from: providers/dns/netcup/netcup.toml + ew.writeln(`Configuration for Netcup.`) + ew.writeln(`Code: 'netcup'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "NETCUP_API_KEY": API key`) + ew.writeln(` - "NETCUP_API_PASSWORD": API password`) + ew.writeln(` - "NETCUP_CUSTOMER_NUMBER": Customer number`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "NETCUP_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "NETCUP_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "NETCUP_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "NETCUP_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/netcup`) + + case "netlify": + // generated from: providers/dns/netlify/netlify.toml + ew.writeln(`Configuration for Netlify.`) + ew.writeln(`Code: 'netlify'`) + ew.writeln(`Since: 'v3.7.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "NETLIFY_TOKEN": Token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "NETLIFY_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "NETLIFY_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "NETLIFY_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "NETLIFY_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/netlify`) + + case "nifcloud": + // generated from: providers/dns/nifcloud/nifcloud.toml + ew.writeln(`Configuration for NIFCloud.`) + ew.writeln(`Code: 'nifcloud'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "NIFCLOUD_ACCESS_KEY_ID": Access key`) + ew.writeln(` - "NIFCLOUD_SECRET_ACCESS_KEY": Secret access key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "NIFCLOUD_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "NIFCLOUD_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "NIFCLOUD_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "NIFCLOUD_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/nifcloud`) + + case "njalla": + // generated from: providers/dns/njalla/njalla.toml + ew.writeln(`Configuration for Njalla.`) + ew.writeln(`Code: 'njalla'`) + ew.writeln(`Since: 'v4.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "NJALLA_TOKEN": API token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "NJALLA_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "NJALLA_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "NJALLA_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "NJALLA_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/njalla`) + + case "ns1": + // generated from: providers/dns/ns1/ns1.toml + ew.writeln(`Configuration for NS1.`) + ew.writeln(`Code: 'ns1'`) + ew.writeln(`Since: 'v0.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "NS1_API_KEY": API key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "NS1_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "NS1_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "NS1_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "NS1_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/ns1`) + + case "oraclecloud": + // generated from: providers/dns/oraclecloud/oraclecloud.toml + ew.writeln(`Configuration for Oracle Cloud.`) + ew.writeln(`Code: 'oraclecloud'`) + ew.writeln(`Since: 'v2.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "OCI_COMPARTMENT_OCID": Compartment OCID`) + ew.writeln(` - "OCI_PRIVKEY_FILE": Private key file`) + ew.writeln(` - "OCI_PRIVKEY_PASS": Private key password`) + ew.writeln(` - "OCI_PUBKEY_FINGERPRINT": Public key fingerprint`) + ew.writeln(` - "OCI_REGION": Region`) + ew.writeln(` - "OCI_TENANCY_OCID": Tenancy OCID`) + ew.writeln(` - "OCI_USER_OCID": User OCID`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "OCI_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "OCI_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "OCI_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/oraclecloud`) + + case "otc": + // generated from: providers/dns/otc/otc.toml + ew.writeln(`Configuration for Open Telekom Cloud.`) + ew.writeln(`Code: 'otc'`) + ew.writeln(`Since: 'v0.4.1'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "OTC_DOMAIN_NAME": Domain name`) + ew.writeln(` - "OTC_IDENTITY_ENDPOINT": Identity endpoint URL`) + ew.writeln(` - "OTC_PASSWORD": Password`) + ew.writeln(` - "OTC_PROJECT_NAME": Project name`) + ew.writeln(` - "OTC_USER_NAME": User name`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "OTC_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "OTC_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "OTC_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "OTC_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/otc`) + + case "ovh": + // generated from: providers/dns/ovh/ovh.toml + ew.writeln(`Configuration for OVH.`) + ew.writeln(`Code: 'ovh'`) + ew.writeln(`Since: 'v0.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "OVH_APPLICATION_KEY": Application key`) + ew.writeln(` - "OVH_APPLICATION_SECRET": Application secret`) + ew.writeln(` - "OVH_CONSUMER_KEY": Consumer key`) + ew.writeln(` - "OVH_ENDPOINT": Endpoint URL (ovh-eu or ovh-ca)`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "OVH_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "OVH_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "OVH_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "OVH_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/ovh`) + + case "pdns": + // generated from: providers/dns/pdns/pdns.toml + ew.writeln(`Configuration for PowerDNS.`) + ew.writeln(`Code: 'pdns'`) + ew.writeln(`Since: 'v0.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "PDNS_API_KEY": API key`) + ew.writeln(` - "PDNS_API_URL": API URL`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "PDNS_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "PDNS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "PDNS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "PDNS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/pdns`) + + case "rackspace": + // generated from: providers/dns/rackspace/rackspace.toml + ew.writeln(`Configuration for Rackspace.`) + ew.writeln(`Code: 'rackspace'`) + ew.writeln(`Since: 'v0.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "RACKSPACE_API_KEY": API key`) + ew.writeln(` - "RACKSPACE_USER": API user`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "RACKSPACE_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "RACKSPACE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "RACKSPACE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "RACKSPACE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/rackspace`) + + case "regru": + // generated from: providers/dns/regru/regru.toml + ew.writeln(`Configuration for reg.ru.`) + ew.writeln(`Code: 'regru'`) + ew.writeln(`Since: 'v3.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "REGRU_PASSWORD": API password`) + ew.writeln(` - "REGRU_USERNAME": API username`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "REGRU_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "REGRU_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "REGRU_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "REGRU_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/regru`) + + case "rfc2136": + // generated from: providers/dns/rfc2136/rfc2136.toml + ew.writeln(`Configuration for RFC2136.`) + ew.writeln(`Code: 'rfc2136'`) + ew.writeln(`Since: 'v0.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "RFC2136_NAMESERVER": Network address in the form "host" or "host:port"`) + ew.writeln(` - "RFC2136_TSIG_ALGORITHM": TSIG algorithm. See [miekg/dns#tsig.go](https://github.com/miekg/dns/blob/master/tsig.go) for supported values. To disable TSIG authentication, leave the 'RFC2136_TSIG*' variables unset.`) + ew.writeln(` - "RFC2136_TSIG_KEY": Name of the secret key as defined in DNS server configuration. To disable TSIG authentication, leave the 'RFC2136_TSIG*' variables unset.`) + ew.writeln(` - "RFC2136_TSIG_SECRET": Secret key payload. To disable TSIG authentication, leave the' RFC2136_TSIG*' variables unset.`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "RFC2136_DNS_TIMEOUT": API request timeout`) + ew.writeln(` - "RFC2136_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "RFC2136_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "RFC2136_SEQUENCE_INTERVAL": Interval between iteration`) + ew.writeln(` - "RFC2136_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/rfc2136`) + + case "rimuhosting": + // generated from: providers/dns/rimuhosting/rimuhosting.toml + ew.writeln(`Configuration for RimuHosting.`) + ew.writeln(`Code: 'rimuhosting'`) + ew.writeln(`Since: 'v0.3.5'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "RIMUHOSTING_API_KEY": User API key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "RIMUHOSTING_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "RIMUHOSTING_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "RIMUHOSTING_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "RIMUHOSTING_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/rimuhosting`) + + case "route53": + // generated from: providers/dns/route53/route53.toml + ew.writeln(`Configuration for Amazon Route 53.`) + ew.writeln(`Code: 'route53'`) + ew.writeln(`Since: 'v0.3.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "AWS_ACCESS_KEY_ID": Managed by the AWS client ('AWS_ACCESS_KEY_ID_FILE' is not supported)`) + ew.writeln(` - "AWS_HOSTED_ZONE_ID": Override the hosted zone ID`) + ew.writeln(` - "AWS_PROFILE": Managed by the AWS client ('AWS_PROFILE_FILE' is not supported)`) + ew.writeln(` - "AWS_REGION": Managed by the AWS client ('AWS_REGION_FILE' is not supported)`) + ew.writeln(` - "AWS_SDK_LOAD_CONFIG": Retrieve the region from the CLI config file ('AWS_SDK_LOAD_CONFIG_FILE' is not supported)`) + ew.writeln(` - "AWS_SECRET_ACCESS_KEY": Managed by the AWS client ('AWS_SECRET_ACCESS_KEY_FILE' is not supported)`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "AWS_MAX_RETRIES": The number of maximum returns the service will use to make an individual API request`) + ew.writeln(` - "AWS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "AWS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "AWS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/route53`) + + case "sakuracloud": + // generated from: providers/dns/sakuracloud/sakuracloud.toml + ew.writeln(`Configuration for Sakura Cloud.`) + ew.writeln(`Code: 'sakuracloud'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "SAKURACLOUD_ACCESS_TOKEN": Access token`) + ew.writeln(` - "SAKURACLOUD_ACCESS_TOKEN_SECRET": Access token secret`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "SAKURACLOUD_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "SAKURACLOUD_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "SAKURACLOUD_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "SAKURACLOUD_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/sakuracloud`) + + case "scaleway": + // generated from: providers/dns/scaleway/scaleway.toml + ew.writeln(`Configuration for Scaleway.`) + ew.writeln(`Code: 'scaleway'`) + ew.writeln(`Since: 'v3.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "SCALEWAY_API_TOKEN": API token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "SCALEWAY_API_VERSION": API version`) + ew.writeln(` - "SCALEWAY_BASE_URL": API endpoint URL`) + ew.writeln(` - "SCALEWAY_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "SCALEWAY_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "SCALEWAY_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "SCALEWAY_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/scaleway`) + + case "selectel": + // generated from: providers/dns/selectel/selectel.toml + ew.writeln(`Configuration for Selectel.`) + ew.writeln(`Code: 'selectel'`) + ew.writeln(`Since: 'v1.2.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "SELECTEL_API_TOKEN": API token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "SELECTEL_BASE_URL": API endpoint URL`) + ew.writeln(` - "SELECTEL_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "SELECTEL_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "SELECTEL_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "SELECTEL_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/selectel`) + + case "servercow": + // generated from: providers/dns/servercow/servercow.toml + ew.writeln(`Configuration for Servercow.`) + ew.writeln(`Code: 'servercow'`) + ew.writeln(`Since: 'v3.4.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "SERVERCOW_PASSWORD": API password`) + ew.writeln(` - "SERVERCOW_USERNAME": API username`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "SERVERCOW_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "SERVERCOW_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "SERVERCOW_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "SERVERCOW_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/servercow`) + + case "stackpath": + // generated from: providers/dns/stackpath/stackpath.toml + ew.writeln(`Configuration for Stackpath.`) + ew.writeln(`Code: 'stackpath'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "STACKPATH_CLIENT_ID": Client ID`) + ew.writeln(` - "STACKPATH_CLIENT_SECRET": Client secret`) + ew.writeln(` - "STACKPATH_STACK_ID": Stack ID`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "STACKPATH_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "STACKPATH_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "STACKPATH_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/stackpath`) + + case "transip": + // generated from: providers/dns/transip/transip.toml + ew.writeln(`Configuration for TransIP.`) + ew.writeln(`Code: 'transip'`) + ew.writeln(`Since: 'v2.0.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "TRANSIP_ACCOUNT_NAME": Account name`) + ew.writeln(` - "TRANSIP_PRIVATE_KEY_PATH": Private key path`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "TRANSIP_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "TRANSIP_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "TRANSIP_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/transip`) + + case "vegadns": + // generated from: providers/dns/vegadns/vegadns.toml + ew.writeln(`Configuration for VegaDNS.`) + ew.writeln(`Code: 'vegadns'`) + ew.writeln(`Since: 'v1.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "SECRET_VEGADNS_KEY": API key`) + ew.writeln(` - "SECRET_VEGADNS_SECRET": API secret`) + ew.writeln(` - "VEGADNS_URL": API endpoint URL`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "VEGADNS_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "VEGADNS_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "VEGADNS_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/vegadns`) + + case "versio": + // generated from: providers/dns/versio/versio.toml + ew.writeln(`Configuration for Versio.[nl|eu|uk].`) + ew.writeln(`Code: 'versio'`) + ew.writeln(`Since: 'v2.7.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "VERSIO_PASSWORD": Basic authentication password`) + ew.writeln(` - "VERSIO_USERNAME": Basic authentication username`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "VERSIO_ENDPOINT": The endpoint URL of the API Server`) + ew.writeln(` - "VERSIO_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "VERSIO_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "VERSIO_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "VERSIO_SEQUENCE_INTERVAL": Interval between iteration, default 60s`) + ew.writeln(` - "VERSIO_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/versio`) + + case "vscale": + // generated from: providers/dns/vscale/vscale.toml + ew.writeln(`Configuration for Vscale.`) + ew.writeln(`Code: 'vscale'`) + ew.writeln(`Since: 'v2.0.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "VSCALE_API_TOKEN": API token`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "VSCALE_BASE_URL": API endpoint URL`) + ew.writeln(` - "VSCALE_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "VSCALE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "VSCALE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "VSCALE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/vscale`) + + case "vultr": + // generated from: providers/dns/vultr/vultr.toml + ew.writeln(`Configuration for Vultr.`) + ew.writeln(`Code: 'vultr'`) + ew.writeln(`Since: 'v0.3.1'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "VULTR_API_KEY": API key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "VULTR_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "VULTR_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "VULTR_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "VULTR_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/vultr`) + + case "yandex": + // generated from: providers/dns/yandex/yandex.toml + ew.writeln(`Configuration for Yandex.`) + ew.writeln(`Code: 'yandex'`) + ew.writeln(`Since: 'v3.7.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "YANDEX_PDD_TOKEN": Basic authentication username`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "YANDEX_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "YANDEX_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "YANDEX_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "YANDEX_SEQUENCE_INTERVAL": Interval between iteration, default 60s`) + ew.writeln(` - "YANDEX_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/yandex`) + + case "zoneee": + // generated from: providers/dns/zoneee/zoneee.toml + ew.writeln(`Configuration for Zone.ee.`) + ew.writeln(`Code: 'zoneee'`) + ew.writeln(`Since: 'v2.1.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "ZONEEE_API_KEY": API key`) + ew.writeln(` - "ZONEEE_API_USER": API user`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "ZONEEE_ENDPOINT": API endpoint URL`) + ew.writeln(` - "ZONEEE_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "ZONEEE_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "ZONEEE_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "ZONEEE_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/zoneee`) + + case "zonomi": + // generated from: providers/dns/zonomi/zonomi.toml + ew.writeln(`Configuration for Zonomi.`) + ew.writeln(`Code: 'zonomi'`) + ew.writeln(`Since: 'v3.5.0'`) + ew.writeln() + + ew.writeln(`Credentials:`) + ew.writeln(` - "ZONOMI_API_KEY": User API key`) + ew.writeln() + + ew.writeln(`Additional Configuration:`) + ew.writeln(` - "ZONOMI_HTTP_TIMEOUT": API request timeout`) + ew.writeln(` - "ZONOMI_POLLING_INTERVAL": Time between DNS propagation check`) + ew.writeln(` - "ZONOMI_PROPAGATION_TIMEOUT": Maximum waiting time for DNS propagation`) + ew.writeln(` - "ZONOMI_TTL": The TTL of the TXT record used for the DNS challenge`) + + ew.writeln() + ew.writeln(`More information: https://go-acme.github.io/lego/dns/zonomi`) + + case "manual": + ew.writeln(`Solving the DNS-01 challenge using CLI prompt.`) + default: + return fmt.Errorf("%q is not yet supported", name) + } + + if ew.err != nil { + return fmt.Errorf("error: %w", ew.err) + } + + return w.Flush() +} diff --git a/common/legocmd/lego.go b/common/legocmd/lego.go new file mode 100644 index 0000000..2eef130 --- /dev/null +++ b/common/legocmd/lego.go @@ -0,0 +1,189 @@ +// Let's Encrypt client to go! +// CLI application for generating Let's Encrypt certificates using the ACME package. +package legocmd + +import ( + "errors" + "fmt" + "os" + "path" + "path/filepath" + "runtime" + "strings" + + "github.com/XrayR-project/XrayR/common/legocmd/cmd" + "github.com/urfave/cli" +) + +var version = "dev" +var defaultPath string + +type LegoCMD struct { + cmdClient *cli.App +} + +func New() (*LegoCMD, error) { + app := cli.NewApp() + app.Name = "lego" + app.HelpName = "lego" + app.Usage = "Let's Encrypt client written in Go" + app.EnableBashCompletion = true + + app.Version = version + cli.VersionPrinter = func(c *cli.Context) { + fmt.Printf("lego version %s %s/%s\n", c.App.Version, runtime.GOOS, runtime.GOARCH) + } + + // Set default path to configPath/cert + var path string = "" + configPath := os.Getenv("XRAY_LOCATION_CONFIG") + if configPath != "" { + path = configPath + } else if cwd, err := os.Getwd(); err==nil{ + path = cwd + } else { + path = "." + } + + defaultPath = filepath.Join(path, "cert") + + app.Flags = cmd.CreateFlags(defaultPath) + + app.Before = cmd.Before + + app.Commands = cmd.CreateCommands() + + lego := &LegoCMD{ + cmdClient: app, + } + + return lego, nil +} + +// DNSCert cert a domain using DNS API +func (l *LegoCMD) DNSCert(domain, email, provider string, DNSEnv map[string]string) (CertPath string, KeyPath string, err error) { + defer func() (string, string, error) { + // Handle any error + if r := recover(); r != nil { + switch x := r.(type) { + case string: + err = errors.New(x) + case error: + err = x + default: + err = errors.New("unknow panic") + } + return "", "", err + } + return CertPath, KeyPath, nil + }() + // Set Env for DNS configuration + for key, value := range DNSEnv { + os.Setenv(key, value) + } + // First check if the certificate exists + CertPath, KeyPath, err = checkCertfile(domain) + if err == nil { + return CertPath, KeyPath, err + } + + argstring := fmt.Sprintf("lego -a -d %s -m %s --dns %s run", domain, email, provider) + err = l.cmdClient.Run(strings.Split(argstring, " ")) + if err != nil { + return "", "", err + } + CertPath, KeyPath, err = checkCertfile(domain) + if err != nil { + return "", "", err + } + return CertPath, KeyPath, nil +} + +// HTTPCert cert a domain using http methods +func (l *LegoCMD) HTTPCert(domain, email string) (CertPath string, KeyPath string, err error) { + defer func() (string, string, error) { + // Handle any error + if r := recover(); r != nil { + switch x := r.(type) { + case string: + err = errors.New(x) + case error: + err = x + default: + err = errors.New("unknow panic") + } + return "", "", err + } + return CertPath, KeyPath, nil + }() + // First check if the certificate exists + CertPath, KeyPath, err = checkCertfile(domain) + if err == nil { + return CertPath, KeyPath, err + } + argstring := fmt.Sprintf("lego -a -d %s -m %s --http run", domain, email) + err = l.cmdClient.Run(strings.Split(argstring, " ")) + + if err != nil { + return "", "", err + } + CertPath, KeyPath, err = checkCertfile(domain) + if err != nil { + return "", "", err + } + return CertPath, KeyPath, nil +} + +//RenewCert renew a domain cert +func (l *LegoCMD) RenewCert(domain, email, certMode, provider string, DNSEnv map[string]string) (CertPath string, KeyPath string, err error) { + var argstring string + defer func() (string, string, error) { + // Handle any error + if r := recover(); r != nil { + switch x := r.(type) { + case string: + err = errors.New(x) + case error: + err = x + default: + err = errors.New("unknow panic") + } + return "", "", err + } + return CertPath, KeyPath, nil + }() + if certMode == "http" { + argstring = fmt.Sprintf("lego -a -d %s -m %s --http renew --days 30", domain, email) + } else if certMode == "dns" { + // Set Env for DNS configuration + for key, value := range DNSEnv { + os.Setenv(key, value) + } + argstring = fmt.Sprintf("lego -a -d %s -m %s --dns %s renew --days 30", domain, email, provider) + } else { + return "", "", fmt.Errorf("Unsupport cert mode: %s", certMode) + } + err = l.cmdClient.Run(strings.Split(argstring, " ")) + + if err != nil { + return "", "", err + } + CertPath, KeyPath, err = checkCertfile(domain) + if err != nil { + return "", "", err + } + return CertPath, KeyPath, nil +} +func checkCertfile(domain string) (string, string, error) { + keyPath := path.Join(defaultPath, "certificates", fmt.Sprintf("%s.key", domain)) + certPath := path.Join(defaultPath, "certificates", fmt.Sprintf("%s.crt", domain)) + if _, err := os.Stat(keyPath); os.IsNotExist(err) { + return "", "", fmt.Errorf("Cert key failed: %s", domain) + } + if _, err := os.Stat(certPath); os.IsNotExist(err) { + return "", "", fmt.Errorf("Cert cert failed: %s", domain) + } + absKeyPath, _ := filepath.Abs(keyPath) + absCertPath, _ := filepath.Abs(certPath) + return absCertPath, absKeyPath, nil +} diff --git a/common/legocmd/lego_test.go b/common/legocmd/lego_test.go new file mode 100644 index 0000000..75a551f --- /dev/null +++ b/common/legocmd/lego_test.go @@ -0,0 +1,82 @@ +package legocmd_test + +import ( + "testing" + + "github.com/XrayR-project/XrayR/common/legocmd" +) + +func TestLegoClient(t *testing.T) { + _, err := legocmd.New() + if err != nil { + t.Error(err) + } +} + +func TestLegoDNSCert(t *testing.T) { + lego, err := legocmd.New() + if err != nil { + t.Error(err) + } + var ( + domain string = "node1.test.com" + email string = "test@gmail.com" + provider string = "alidns" + DNSEnv map[string]string + ) + DNSEnv = make(map[string]string) + DNSEnv["ALICLOUD_ACCESS_KEY"] = "aaa" + DNSEnv["ALICLOUD_SECRET_KEY"] = "bbb" + certPath, keyPath, err := lego.DNSCert(domain, email, provider, DNSEnv) + if err != nil { + t.Error(err) + } + t.Log(certPath) + t.Log(keyPath) +} + +func TestLegoHTTPCert(t *testing.T) { + lego, err := legocmd.New() + if err != nil { + t.Error(err) + } + var ( + domain string = "node1.test.com" + email string = "test@gmail.com" + ) + certPath, keyPath, err := lego.HTTPCert(domain, email) + if err != nil { + t.Error(err) + } + t.Log(certPath) + t.Log(keyPath) +} + +func TestLegoRenewCert(t *testing.T) { + lego, err := legocmd.New() + if err != nil { + t.Error(err) + } + var ( + domain string = "node1.test.com" + email string = "test@gmail.com" + provider string = "alidns" + DNSEnv map[string]string + ) + DNSEnv = make(map[string]string) + DNSEnv["ALICLOUD_ACCESS_KEY"] = "aaa" + DNSEnv["ALICLOUD_SECRET_KEY"] = "bbb" + certPath, keyPath, err := lego.RenewCert(domain, email, "dns", provider, DNSEnv) + if err != nil { + t.Error(err) + } + t.Log(certPath) + t.Log(keyPath) + + certPath, keyPath, err = lego.RenewCert(domain, email, "http", provider, DNSEnv) + if err != nil { + t.Error(err) + } + t.Log(certPath) + t.Log(keyPath) +} diff --git a/common/legocmd/log/log.go b/common/legocmd/log/log.go new file mode 100644 index 0000000..b1335b0 --- /dev/null +++ b/common/legocmd/log/log.go @@ -0,0 +1,60 @@ +package log + +import ( + "log" + "os" +) + +// Logger is an optional custom logger. +var Logger StdLogger = log.New(os.Stdout, "", log.LstdFlags) + +// StdLogger interface for Standard Logger. +type StdLogger interface { + Panic(args ...interface{}) + Fatalln(args ...interface{}) + Panicf(format string, args ...interface{}) + Print(args ...interface{}) + Println(args ...interface{}) + Printf(format string, args ...interface{}) +} + +// Panic writes a log entry. +// It uses Logger if not nil, otherwise it uses the default log.Logger. +func Panic(args ...interface{}) { + Logger.Panic(args...) +} + +// Panicf writes a log entry. +// It uses Logger if not nil, otherwise it uses the default log.Logger. +func Panicf(format string, args ...interface{}) { + Logger.Panicf(format, args...) +} + +// Print writes a log entry. +// It uses Logger if not nil, otherwise it uses the default log.Logger. +func Print(args ...interface{}) { + Logger.Print(args...) +} + +// Println writes a log entry. +// It uses Logger if not nil, otherwise it uses the default log.Logger. +func Println(args ...interface{}) { + Logger.Println(args...) +} + +// Printf writes a log entry. +// It uses Logger if not nil, otherwise it uses the default log.Logger. +func Printf(format string, args ...interface{}) { + Logger.Printf(format, args...) +} + +// Warnf writes a log entry. +func Warnf(format string, args ...interface{}) { + Printf("[WARN] "+format, args...) +} + +// Infof writes a log entry. +func Infof(format string, args ...interface{}) { + Printf("[INFO] "+format, args...) +} + diff --git a/common/limiter/errors.go b/common/limiter/errors.go new file mode 100644 index 0000000..6f1d1fa --- /dev/null +++ b/common/limiter/errors.go @@ -0,0 +1,9 @@ +package limiter + +import "github.com/xtls/xray-core/common/errors" + +type errPathObjHolder struct{} + +func newError(values ...interface{}) *errors.Error { + return errors.New(values...).WithPathObj(errPathObjHolder{}) +} diff --git a/common/limiter/limiter.go b/common/limiter/limiter.go new file mode 100644 index 0000000..3d96c25 --- /dev/null +++ b/common/limiter/limiter.go @@ -0,0 +1,180 @@ +// Package limiter is to control the links that go into the dispather +package limiter + +import ( + "fmt" + "sync" + "time" + + "github.com/XrayR-project/XrayR/api" + "github.com/juju/ratelimit" +) + +type UserInfo struct { + UID int + SpeedLimit uint64 + DeviceLimit int +} + +type InboundInfo struct { + Tag string + NodeSpeedLimit uint64 + UserInfo *sync.Map // Key: Email value: UserInfo + BucketHub *sync.Map // key: Email, value: *ratelimit.Bucket + UserOnlineIP *sync.Map // Key: Email Value: *sync.Map: Key: IP, Value: UID +} + +type Limiter struct { + InboundInfo *sync.Map // Key: Tag, Value: *InboundInfo +} + +func New() *Limiter { + return &Limiter{ + InboundInfo: new(sync.Map), + } +} + +func (l *Limiter) AddInboundLimiter(tag string, nodeSpeedLimit uint64, userList *[]api.UserInfo) error { + inboundInfo := &InboundInfo{ + Tag: tag, + NodeSpeedLimit: nodeSpeedLimit, + BucketHub: new(sync.Map), + UserOnlineIP: new(sync.Map), + } + userMap := new(sync.Map) + for _, u := range *userList { + userMap.Store(fmt.Sprintf("%s|%s|%d", tag, u.Email, u.UID), UserInfo{ + UID: u.UID, + SpeedLimit: u.SpeedLimit, + DeviceLimit: u.DeviceLimit, + }) + } + inboundInfo.UserInfo = userMap + l.InboundInfo.Store(tag, inboundInfo) // Replace the old inbound info + return nil +} + +func (l *Limiter) UpdateInboundLimiter(tag string, updatedUserList *[]api.UserInfo) error { + + if value, ok := l.InboundInfo.Load(tag); ok { + inboundInfo := value.(*InboundInfo) + // Update User info + for _, u := range *updatedUserList { + inboundInfo.UserInfo.Store(fmt.Sprintf("%s|%s|%d", tag, u.Email, u.UID), UserInfo{ + UID: u.UID, + SpeedLimit: u.SpeedLimit, + DeviceLimit: u.DeviceLimit, + }) + inboundInfo.BucketHub.Delete(fmt.Sprintf("%s|%s|%d", tag, u.Email, u.UID)) // Delete old limiter bucket + } + } else { + return fmt.Errorf("no such inbound in limiter: %s", tag) + } + return nil +} + +func (l *Limiter) DeleteInboundLimiter(tag string) error { + l.InboundInfo.Delete(tag) + return nil +} + +func (l *Limiter) GetOnlineDevice(tag string) (*[]api.OnlineUser, error) { + onlineUser := make([]api.OnlineUser, 0) + if value, ok := l.InboundInfo.Load(tag); ok { + inboundInfo := value.(*InboundInfo) + // Clear Speed Limiter bucket for users who are not online + inboundInfo.BucketHub.Range(func(key, value interface{}) bool { + email := key.(string) + if _, exists := inboundInfo.UserOnlineIP.Load(email); !exists { + inboundInfo.BucketHub.Delete(email) + } + return true + }) + inboundInfo.UserOnlineIP.Range(func(key, value interface{}) bool { + ipMap := value.(*sync.Map) + ipMap.Range(func(key, value interface{}) bool { + ip := key.(string) + uid := value.(int) + onlineUser = append(onlineUser, api.OnlineUser{UID: uid, IP: ip}) + return true + }) + email := key.(string) + inboundInfo.UserOnlineIP.Delete(email) // Reset online device + return true + }) + } else { + return nil, fmt.Errorf("no such inbound in limiter: %s", tag) + } + return &onlineUser, nil +} + +func (l *Limiter) GetUserBucket(tag string, email string, ip string) (limiter *ratelimit.Bucket, SpeedLimit bool, Reject bool) { + if value, ok := l.InboundInfo.Load(tag); ok { + inboundInfo := value.(*InboundInfo) + nodeLimit := inboundInfo.NodeSpeedLimit + var userLimit uint64 = 0 + var deviceLimit int = 0 + var uid int = 0 + if v, ok := inboundInfo.UserInfo.Load(email); ok { + u := v.(UserInfo) + uid = u.UID + userLimit = u.SpeedLimit + deviceLimit = u.DeviceLimit + } + // Report online device + ipMap := new(sync.Map) + ipMap.Store(ip, uid) + // If any device is online + if v, ok := inboundInfo.UserOnlineIP.LoadOrStore(email, ipMap); ok { + ipMap := v.(*sync.Map) + // If this ip is a new device + if _, ok := ipMap.LoadOrStore(ip, uid); !ok { + counter := 0 + ipMap.Range(func(key, value interface{}) bool { + counter++ + return true + }) + if counter > deviceLimit && deviceLimit > 0 { + ipMap.Delete(ip) + return nil, false, true + } + } + } + limit := determineRate(nodeLimit, userLimit) // If need the Speed limit + if limit > 0 { + limiter := ratelimit.NewBucketWithQuantum(time.Duration(int64(time.Second)), int64(limit), int64(limit)) // Byte/s + if v, ok := inboundInfo.BucketHub.LoadOrStore(email, limiter); ok { + bucket := v.(*ratelimit.Bucket) + return bucket, true, false + } else { + return limiter, true, false + } + } else { + return nil, false, false + } + } else { + newError("Get Inbound Limiter information failed").AtDebug().WriteToLog() + return nil, false, false + } +} + +// determineRate returns the minimum non-zero rate +func determineRate(nodeLimit, userLimit uint64) (limit uint64) { + if nodeLimit == 0 || userLimit == 0 { + if nodeLimit > userLimit { + return nodeLimit + } else if nodeLimit < userLimit { + return userLimit + } else { + return 0 + } + } else { + if nodeLimit > userLimit { + return userLimit + } else if nodeLimit < userLimit { + return nodeLimit + } else { + return nodeLimit + } + } +} diff --git a/common/limiter/rate.go b/common/limiter/rate.go new file mode 100644 index 0000000..a9284a7 --- /dev/null +++ b/common/limiter/rate.go @@ -0,0 +1,31 @@ +package limiter + +import ( + "io" + + "github.com/juju/ratelimit" + "github.com/xtls/xray-core/common" + "github.com/xtls/xray-core/common/buf" +) + +type Writer struct { + writer buf.Writer + limiter *ratelimit.Bucket + w io.Writer +} + +func (l *Limiter) RateWriter(writer buf.Writer, limiter *ratelimit.Bucket) buf.Writer { + return &Writer{ + writer: writer, + limiter: limiter, + } +} + +func (w *Writer) Close() error { + return common.Close(w.writer) +} + +func (w *Writer) WriteMultiBuffer(mb buf.MultiBuffer) error { + w.limiter.Wait(int64(mb.Len())) + return w.writer.WriteMultiBuffer(mb) +} diff --git a/common/rule/errors.go b/common/rule/errors.go new file mode 100644 index 0000000..ab39cce --- /dev/null +++ b/common/rule/errors.go @@ -0,0 +1,9 @@ +package rule + +import "github.com/xtls/xray-core/common/errors" + +type errPathObjHolder struct{} + +func newError(values ...interface{}) *errors.Error { + return errors.New(values...).WithPathObj(errPathObjHolder{}) +} diff --git a/common/rule/rule.go b/common/rule/rule.go new file mode 100644 index 0000000..731447b --- /dev/null +++ b/common/rule/rule.go @@ -0,0 +1,82 @@ +// Package rule is to control the audit rule behaviors +package rule + +import ( + "fmt" + "reflect" + "strconv" + "strings" + "sync" + + "github.com/XrayR-project/XrayR/api" + mapset "github.com/deckarep/golang-set" +) + +type RuleManager struct { + InboundRule *sync.Map // Key: Tag, Value: []api.DetectRule + InboundDetectResult *sync.Map // key: Tag, Value: mapset.NewSet []api.DetectResult +} + +func New() *RuleManager { + return &RuleManager{ + InboundRule: new(sync.Map), + InboundDetectResult: new(sync.Map), + } +} + +func (r *RuleManager) UpdateRule(tag string, newRuleList []api.DetectRule) error { + if value, ok := r.InboundRule.LoadOrStore(tag, newRuleList); ok { + oldRuleList := value.([]api.DetectRule) + if !reflect.DeepEqual(oldRuleList, newRuleList) { + r.InboundRule.Store(tag, newRuleList) + } + } + return nil +} + +func (r *RuleManager) GetDetectResult(tag string) (*[]api.DetectResult, error) { + detectResult := make([]api.DetectResult, 0) + if value, ok := r.InboundDetectResult.LoadAndDelete(tag); ok { + resultSet := value.(mapset.Set) + it := resultSet.Iterator() + for result := range it.C { + detectResult = append(detectResult, result.(api.DetectResult)) + } + } + return &detectResult, nil +} + +func (r *RuleManager) Detect(tag string, destination string, email string) (reject bool) { + reject = false + var hitRuleID int = -1 + // If we have some rule for this inbound + if value, ok := r.InboundRule.Load(tag); ok { + ruleList := value.([]api.DetectRule) + for _, r := range ruleList { + if r.Pattern.Match([]byte(destination)) { + hitRuleID = r.ID + reject = true + break + } + } + // If we hit some rule + if reject && hitRuleID != -1 { + l := strings.Split(email, "|") + uid, err := strconv.Atoi(l[len(l)-1]) + if err != nil { + newError(fmt.Sprintf("Record illegal behavior failed! Cannot find user's uid: %s", email)).AtDebug().WriteToLog() + return reject + } + newSet := mapset.NewSetWith(api.DetectResult{UID: uid, RuleID: hitRuleID}) + // If there are any hit history + if v, ok := r.InboundDetectResult.LoadOrStore(tag, newSet); ok { + resultSet := v.(mapset.Set) + // If this is a new record + if resultSet.Add(api.DetectResult{UID: uid, RuleID: hitRuleID}) { + r.InboundDetectResult.Store(tag, resultSet) + } + } + } + } + return reject +} diff --git a/common/serverstatus/serverstatus.go b/common/serverstatus/serverstatus.go new file mode 100644 index 0000000..f6a2fb8 --- /dev/null +++ b/common/serverstatus/serverstatus.go @@ -0,0 +1,41 @@ +// Package serverstatus generate the server system status +package serverstatus + +import ( + "fmt" + "time" + + "github.com/shirou/gopsutil/cpu" + "github.com/shirou/gopsutil/disk" + "github.com/shirou/gopsutil/mem" +) + +// GetSystemInfo get the system info of a given periodic +func GetSystemInfo() (Cpu float64, Mem float64, Disk float64, Uptime int, err error) { + + upTime := time.Now() + cpuPercent, err := cpu.Percent(0, false) + // Check if cpuPercent is empty + if len(cpuPercent) > 0 { + Cpu = cpuPercent[0] + } else { + Cpu = 0 + } + + if err != nil { + return 0, 0, 0, 0, fmt.Errorf("get cpu usage failed: %s", err) + } + + memUsage, err := mem.VirtualMemory() + if err != nil { + return 0, 0, 0, 0, fmt.Errorf("get mem usage failed: %s", err) + } + + diskUsage, err := disk.Usage("/") + if err != nil { + return 0, 0, 0, 0, fmt.Errorf("et disk usage failed: %s", err) + } + + Uptime = int(time.Since(upTime).Seconds()) + return Cpu, memUsage.UsedPercent, diskUsage.UsedPercent, Uptime, nil +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..16251af --- /dev/null +++ b/go.mod @@ -0,0 +1,169 @@ +module github.com/XrayR-project/XrayR + +go 1.17 + +require ( + github.com/bitly/go-simplejson v0.5.0 + github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 // indirect + github.com/deckarep/golang-set v1.8.0 + github.com/fsnotify/fsnotify v1.5.3 + github.com/go-acme/lego/v4 v4.6.0 + github.com/go-ole/go-ole v1.2.6 // indirect + github.com/go-resty/resty/v2 v2.7.0 + github.com/golang/protobuf v1.5.2 // indirect + github.com/imdario/mergo v0.3.12 + github.com/juju/ratelimit v1.0.1 + github.com/r3labs/diff/v2 v2.15.1 + github.com/shirou/gopsutil v3.21.11+incompatible + github.com/spf13/viper v1.11.0 + github.com/stretchr/testify v1.7.1 + github.com/tklauser/go-sysconf v0.3.10 // indirect + github.com/urfave/cli v1.22.7 + github.com/xtls/xray-core v1.5.4 + golang.org/x/net v0.0.0-20220412020605-290c469a71a5 + google.golang.org/appengine v1.6.7 // indirect + google.golang.org/protobuf v1.28.0 +) + +require ( + cloud.google.com/go/compute v1.5.0 // indirect + github.com/Azure/azure-sdk-for-go v62.0.0+incompatible // indirect + github.com/Azure/go-autorest v14.2.0+incompatible // indirect + github.com/Azure/go-autorest/autorest v0.11.24 // indirect + github.com/Azure/go-autorest/autorest/adal v0.9.18 // indirect + github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 // indirect + github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 // indirect + github.com/Azure/go-autorest/autorest/date v0.3.0 // indirect + github.com/Azure/go-autorest/autorest/to v0.4.0 // indirect + github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect + github.com/Azure/go-autorest/logger v0.2.1 // indirect + github.com/Azure/go-autorest/tracing v0.6.0 // indirect + github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87 // indirect + github.com/akamai/AkamaiOPEN-edgegrid-golang v1.1.1 // indirect + github.com/aliyun/alibaba-cloud-sdk-go v1.61.1505 // indirect + github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129 // indirect + github.com/aws/aws-sdk-go v1.43.12 // indirect + github.com/boombuler/barcode v1.0.1 // indirect + github.com/cenkalti/backoff/v4 v4.1.2 // indirect + github.com/cheekybits/genny v1.0.0 // indirect + github.com/cloudflare/cloudflare-go v0.34.0 // indirect + github.com/cpu/goacmedns v0.1.1 // indirect + github.com/cpuguy83/go-md2man/v2 v2.0.1 // indirect + github.com/davecgh/go-spew v1.1.1 // indirect + github.com/deepmap/oapi-codegen v1.9.1 // indirect + github.com/dgryski/go-metro v0.0.0-20211217172704-adc40b04c140 // indirect + github.com/dimchansky/utfbom v1.1.1 // indirect + github.com/dnsimple/dnsimple-go v0.71.1 // indirect + github.com/exoscale/egoscale v1.19.0 // indirect + github.com/fatih/structs v1.1.0 // indirect + github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 // indirect + github.com/go-errors/errors v1.4.2 // indirect + github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 // indirect + github.com/gofrs/uuid v4.2.0+incompatible // indirect + github.com/golang-jwt/jwt/v4 v4.3.0 // indirect + github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da // indirect + github.com/google/go-querystring v1.1.0 // indirect + github.com/google/uuid v1.3.0 // indirect + github.com/googleapis/gax-go/v2 v2.3.0 // indirect + github.com/gophercloud/gophercloud v0.24.0 // indirect + github.com/gophercloud/utils v0.0.0-20220209210848-d0ab9f2a8909 // indirect + github.com/gorilla/websocket v1.5.0 // indirect + github.com/hashicorp/go-cleanhttp v0.5.2 // indirect + github.com/hashicorp/go-retryablehttp v0.7.0 // indirect + github.com/hashicorp/hcl v1.0.0 // indirect + github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df // indirect + github.com/infobloxopen/infoblox-go-client v1.1.1 // indirect + github.com/jarcoal/httpmock v1.1.0 // indirect + github.com/jmespath/go-jmespath v0.4.0 // indirect + github.com/json-iterator/go v1.1.12 // indirect + github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 // indirect + github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b // indirect + github.com/labbsr0x/bindman-dns-webhook v1.0.2 // indirect + github.com/labbsr0x/goh v1.0.1 // indirect + github.com/linode/linodego v1.3.0 // indirect + github.com/liquidweb/go-lwApi v0.0.5 // indirect + github.com/liquidweb/liquidweb-cli v0.6.10 // indirect + github.com/liquidweb/liquidweb-go v1.6.3 // indirect + github.com/lucas-clemente/quic-go v0.25.0 // indirect + github.com/magiconair/properties v1.8.6 // indirect + github.com/marten-seemann/qtls-go1-16 v0.1.4 // indirect + github.com/marten-seemann/qtls-go1-17 v0.1.0 // indirect + github.com/marten-seemann/qtls-go1-18 v0.1.0-beta.1 // indirect + github.com/mattn/go-isatty v0.0.14 // indirect + github.com/miekg/dns v1.1.47 // indirect + github.com/mitchellh/go-homedir v1.1.0 // indirect + github.com/mitchellh/mapstructure v1.4.3 // indirect + github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect + github.com/modern-go/reflect2 v1.0.2 // indirect + github.com/namedotcom/go v0.0.0-20180403034216-08470befbe04 // indirect + github.com/nrdcg/auroradns v1.0.1 // indirect + github.com/nrdcg/desec v0.6.0 // indirect + github.com/nrdcg/dnspod-go v0.4.0 // indirect + github.com/nrdcg/freemyip v0.2.0 // indirect + github.com/nrdcg/goinwx v0.8.1 // indirect + github.com/nrdcg/namesilo v0.2.1 // indirect + github.com/nrdcg/porkbun v0.1.1 // indirect + github.com/nxadm/tail v1.4.8 // indirect + github.com/onsi/ginkgo v1.16.5 // indirect + github.com/oracle/oci-go-sdk v24.3.0+incompatible // indirect + github.com/ovh/go-ovh v1.1.0 // indirect + github.com/patrickmn/go-cache v2.1.0+incompatible // indirect + github.com/pelletier/go-toml v1.9.4 // indirect + github.com/pelletier/go-toml/v2 v2.0.0-beta.8 // indirect + github.com/pires/go-proxyproto v0.6.2 // indirect + github.com/pkg/errors v0.9.1 // indirect + github.com/pmezard/go-difflib v1.0.0 // indirect + github.com/pquerna/otp v1.3.0 // indirect + github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2 // indirect + github.com/refraction-networking/utls v1.0.0 // indirect + github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect + github.com/rogpeppe/go-internal v1.8.1 // indirect + github.com/russross/blackfriday/v2 v2.1.0 // indirect + github.com/sacloud/libsacloud v1.36.2 // indirect + github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 // indirect + github.com/seiflotfy/cuckoofilter v0.0.0-20220312154859-af7fbb8e765b // indirect + github.com/sirupsen/logrus v1.8.1 // indirect + github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9 // indirect + github.com/softlayer/softlayer-go v1.0.4 // indirect + github.com/softlayer/xmlrpc v0.0.0-20200409220501-5f089df7cb7e // indirect + github.com/spf13/afero v1.8.2 // indirect + github.com/spf13/cast v1.4.1 // indirect + github.com/spf13/jwalterweatherman v1.1.0 // indirect + github.com/spf13/pflag v1.0.5 // indirect + github.com/stretchr/objx v0.3.0 // indirect + github.com/subosito/gotenv v1.2.0 // indirect + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.360 // indirect + github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.360 // indirect + github.com/tklauser/numcpus v0.4.0 // indirect + github.com/transip/gotransip/v6 v6.14.0 // indirect + github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e // indirect + github.com/vinyldns/go-vinyldns v0.9.16 // indirect + github.com/vmihailenco/msgpack v4.0.4+incompatible // indirect + github.com/vultr/govultr/v2 v2.14.1 // indirect + github.com/xtls/go v0.0.0-20210920065950-d4af136d3672 // indirect + github.com/yusufpapurcu/wmi v1.2.2 // indirect + go.opencensus.io v0.23.0 // indirect + go.starlark.net v0.0.0-20220302181546-5411bad688d1 // indirect + go.uber.org/ratelimit v0.2.0 // indirect + golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 // indirect + golang.org/x/mod v0.5.1 // indirect + golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 // indirect + golang.org/x/sys v0.0.0-20220412211240-33da011f77ad // indirect + golang.org/x/text v0.3.7 // indirect + golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 // indirect + golang.org/x/tools v0.1.9 // indirect + golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f // indirect + google.golang.org/api v0.74.0 // indirect + google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac // indirect + google.golang.org/grpc v1.45.0 // indirect + gopkg.in/ini.v1 v1.66.4 // indirect + gopkg.in/ns1/ns1-go.v2 v2.6.3 // indirect + gopkg.in/square/go-jose.v2 v2.6.0 // indirect + gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 // indirect + gopkg.in/yaml.v2 v2.4.0 // indirect + gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b // indirect +) + +replace github.com/linode/linodego => github.com/linode/linodego v0.31.1 + +replace github.com/exoscale/egoscale => github.com/exoscale/egoscale v0.67.0 diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..78a6463 --- /dev/null +++ b/go.sum @@ -0,0 +1,1486 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +cloud.google.com/go v0.31.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.37.0/go.mod h1:TS1dMSSfndXH133OKGwekG838Om/cQT0BUHV3HcBgoo= +cloud.google.com/go v0.38.0/go.mod h1:990N+gfupTy94rShfmMCWGDn0LpTmnzTp2qbd1dvSRU= +cloud.google.com/go v0.44.1/go.mod h1:iSa0KzasP4Uvy3f1mN/7PiObzGgflwredwwASm/v6AU= +cloud.google.com/go v0.44.2/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.44.3/go.mod h1:60680Gw3Yr4ikxnPRS/oxxkBccT6SA1yMk63TGekxKY= +cloud.google.com/go v0.45.1/go.mod h1:RpBamKRgapWJb87xiFSdk4g1CME7QZg3uwTez+TSTjc= +cloud.google.com/go v0.46.3/go.mod h1:a6bKKbmY7er1mI7TEI4lsAkts/mkhTSZK8w33B4RAg0= +cloud.google.com/go v0.50.0/go.mod h1:r9sluTvynVuxRIOHXQEHMFffphuXHOMZMycpNR5e6To= +cloud.google.com/go v0.52.0/go.mod h1:pXajvRH/6o3+F9jDHZWQ5PbGhn+o8w9qiu/CffaVdO4= +cloud.google.com/go v0.53.0/go.mod h1:fp/UouUEsRkN6ryDKNW/Upv/JBKnv6WDthjR6+vze6M= +cloud.google.com/go v0.54.0/go.mod h1:1rq2OEkV3YMf6n/9ZvGWI3GWw0VoqH/1x2nd8Is/bPc= +cloud.google.com/go v0.56.0/go.mod h1:jr7tqZxxKOVYizybht9+26Z/gUq7tiRzu+ACVAMbKVk= +cloud.google.com/go v0.57.0/go.mod h1:oXiQ6Rzq3RAkkY7N6t3TcE6jE+CIBBbA36lwQ1JyzZs= +cloud.google.com/go v0.62.0/go.mod h1:jmCYTdRCQuc1PHIIJ/maLInMho30T/Y0M4hTdTShOYc= +cloud.google.com/go v0.65.0/go.mod h1:O5N8zS7uWy9vkA9vayVHs65eM1ubvY4h553ofrNHObY= +cloud.google.com/go v0.72.0/go.mod h1:M+5Vjvlc2wnp6tjzE102Dw08nGShTscUx2nZMufOKPI= +cloud.google.com/go v0.74.0/go.mod h1:VV1xSbzvo+9QJOxLDaJfTjx5e+MePCpCWwvftOeQmWk= +cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPTY= +cloud.google.com/go v0.78.0/go.mod h1:QjdrLG0uq+YwhjoVOLsS1t7TW8fs36kLs4XO5R5ECHg= +cloud.google.com/go v0.79.0/go.mod h1:3bzgcEeQlzbuEAYu4mrWhKqWjmpprinYgKJLgKHnbb8= +cloud.google.com/go v0.81.0/go.mod h1:mk/AM35KwGk/Nm2YSeZbxXdrNK3KZOYHmLkOqC2V6E0= +cloud.google.com/go v0.83.0/go.mod h1:Z7MJUsANfY0pYPdw0lbnivPx4/vhy/e2FEkSkF7vAVY= +cloud.google.com/go v0.84.0/go.mod h1:RazrYuxIK6Kb7YrzzhPoLmCVzl7Sup4NrbKPg8KHSUM= +cloud.google.com/go v0.87.0/go.mod h1:TpDYlFy7vuLzZMMZ+B6iRiELaY7z/gJPaqbMx6mlWcY= +cloud.google.com/go v0.90.0/go.mod h1:kRX0mNRHe0e2rC6oNakvwQqzyDmg57xJ+SZU1eT2aDQ= +cloud.google.com/go v0.93.3/go.mod h1:8utlLll2EF5XMAV15woO4lSbWQlk8rer9aLOfLh7+YI= +cloud.google.com/go v0.94.1/go.mod h1:qAlAugsXlC+JWO+Bke5vCtc9ONxjQT3drlTTnAplMW4= +cloud.google.com/go v0.97.0/go.mod h1:GF7l59pYBVlXQIBLx3a761cZ41F9bBH3JUlihCt2Udc= +cloud.google.com/go v0.99.0/go.mod h1:w0Xx2nLzqWJPuozYQX+hFfCSI8WioryfRDzkoI/Y2ZA= +cloud.google.com/go v0.100.2 h1:t9Iw5QH5v4XtlEQaCtUY7x6sCABps8sW0acw7e2WQ6Y= +cloud.google.com/go v0.100.2/go.mod h1:4Xra9TjzAeYHrl5+oeLlzbM2k3mjVhZh4UqTZ//w99A= +cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= +cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= +cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= +cloud.google.com/go/bigquery v1.5.0/go.mod h1:snEHRnqQbz117VIFhE8bmtwIDY80NLUZUMb4Nv6dBIg= +cloud.google.com/go/bigquery v1.7.0/go.mod h1://okPTzCYNXSlb24MZs83e2Do+h+VXtc4gLoIoXIAPc= +cloud.google.com/go/bigquery v1.8.0/go.mod h1:J5hqkt3O0uAFnINi6JXValWIb1v0goeZM77hZzJN/fQ= +cloud.google.com/go/compute v0.1.0/go.mod h1:GAesmwr110a34z04OlxYkATPBEfVhkymfTBXtfbBFow= +cloud.google.com/go/compute v1.3.0/go.mod h1:cCZiE1NHEtai4wiufUhW8I8S1JKkAnhnQJWM7YD99wM= +cloud.google.com/go/compute v1.5.0 h1:b1zWmYuuHz7gO9kDcM/EpHGr06UgsYNRpNJzI2kFiLM= +cloud.google.com/go/compute v1.5.0/go.mod h1:9SMHyhJlzhlkJqrPAc839t2BZFTSk6Jdj6mkzQJeu0M= +cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= +cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= +cloud.google.com/go/firestore v1.1.0/go.mod h1:ulACoGHTpvq5r8rxGJ4ddJZBZqakUQqClKRT5SZwBmk= +cloud.google.com/go/firestore v1.6.1/go.mod h1:asNXNOzBdyVQmEU+ggO8UPodTkEVFW5Qx+rwHnAz+EY= +cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= +cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= +cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= +cloud.google.com/go/pubsub v1.3.1/go.mod h1:i+ucay31+CNRpDW4Lu78I4xXG+O1r/MAHgjpRVR+TSU= +cloud.google.com/go/storage v1.0.0/go.mod h1:IhtSnM/ZTZV8YYJWCY8RULGVqBDmpoyjwiyrjsg+URw= +cloud.google.com/go/storage v1.5.0/go.mod h1:tpKbwo567HUNpVclU5sGELwQWBDZ8gh0ZeosJ0Rtdos= +cloud.google.com/go/storage v1.6.0/go.mod h1:N7U0C8pVQ/+NIKOBQyamJIeKQKkZ+mxpohlUTyfDhBk= +cloud.google.com/go/storage v1.8.0/go.mod h1:Wv1Oy7z6Yz3DshWRJFhqM/UCfaWIRTdp0RXyy7KQOVs= +cloud.google.com/go/storage v1.10.0/go.mod h1:FLPqc6j+Ki4BU591ie1oL6qBQGu2Bl/tZ9ullr3+Kg0= +cloud.google.com/go/storage v1.14.0/go.mod h1:GrKmX003DSIwi9o29oFT7YDnHYwZoctc3fOKtUw0Xmo= +dmitri.shuralyov.com/app/changes v0.0.0-20180602232624-0a106ad413e3/go.mod h1:Yl+fi1br7+Rr3LqpNJf1/uxUdtRUV+Tnj0o93V2B9MU= +dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU= +dmitri.shuralyov.com/html/belt v0.0.0-20180602232347-f7d459c86be0/go.mod h1:JLBrvjyP0v+ecvNYvCpyZgu5/xkfAUhi6wJj28eUfSU= +dmitri.shuralyov.com/service/change v0.0.0-20181023043359-a85b471d5412/go.mod h1:a1inKt/atXimZ4Mv927x+r7UpyzRUf4emIoiiSC2TN4= +dmitri.shuralyov.com/state v0.0.0-20180228185332-28bcc343414c/go.mod h1:0PRwlb0D6DFvNNtx+9ybjezNCa8XF0xaYcETyp6rHWU= +git.apache.org/thrift.git v0.0.0-20180902110319-2566ecd5d999/go.mod h1:fPE2ZNJGynbRyZ4dJvy6G277gSllfV2HJqblrnkyeyg= +github.com/Azure/azure-sdk-for-go v32.4.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/azure-sdk-for-go v62.0.0+incompatible h1:8N2k27SYtc12qj5nTsuFMFJPZn5CGmgMWqTy4y9I7Jw= +github.com/Azure/azure-sdk-for-go v62.0.0+incompatible/go.mod h1:9XXNKU+eRnpl9moKnB4QOLf1HestfXbmab5FXxiDBjc= +github.com/Azure/go-autorest v14.2.0+incompatible h1:V5VMDjClD3GiElqLWO7mz2MxNAK/vTfRHdAubSIPRgs= +github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24= +github.com/Azure/go-autorest/autorest v0.11.17/go.mod h1:eipySxLmqSyC5s5k1CLupqet0PSENBEDP93LQ9a8QYw= +github.com/Azure/go-autorest/autorest v0.11.19/go.mod h1:dSiJPy22c3u0OtOKDNttNgqpNFY/GeWa7GH/Pz56QRA= +github.com/Azure/go-autorest/autorest v0.11.24 h1:1fIGgHKqVm54KIPT+q8Zmd1QlVsmHqeUGso5qm2BqqE= +github.com/Azure/go-autorest/autorest v0.11.24/go.mod h1:G6kyRlFnTuSbEYkQGawPfsCswgme4iYf6rfSKUDzbCc= +github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A= +github.com/Azure/go-autorest/autorest/adal v0.9.11/go.mod h1:nBKAnTomx8gDtl+3ZCJv2v0KACFHWTB2drffI1B68Pk= +github.com/Azure/go-autorest/autorest/adal v0.9.13/go.mod h1:W/MM4U6nLxnIskrw4UwWzlHfGjwUS50aOsc/I3yuU8M= +github.com/Azure/go-autorest/autorest/adal v0.9.18 h1:kLnPsRjzZZUF3K5REu/Kc+qMQrvuza2bwSnNdhmzLfQ= +github.com/Azure/go-autorest/autorest/adal v0.9.18/go.mod h1:XVVeme+LZwABT8K5Lc3hA4nAe8LDBVle26gTrguhhPQ= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.8/go.mod h1:kxyKZTSfKh8OVFWPAgOgQ/frrJgeYQJPyR5fLFmXko4= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.11 h1:P6bYXFoao05z5uhOQzbC3Qd8JqF3jUoocoTeIxkp2cA= +github.com/Azure/go-autorest/autorest/azure/auth v0.5.11/go.mod h1:84w/uV8E37feW2NCJ08uT9VBfjfUHpgLVnG2InYD6cg= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.2/go.mod h1:7qkJkT+j6b+hIpzMOwPChJhTqS8VbsqqgULzMNRugoM= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.5 h1:0W/yGmFdTIT77fvdlGZ0LMISoLHFJ7Tx4U0yeB+uFs4= +github.com/Azure/go-autorest/autorest/azure/cli v0.4.5/go.mod h1:ADQAXrkgm7acgWVUNamOgh8YNrv4p27l3Wc55oVfpzg= +github.com/Azure/go-autorest/autorest/date v0.3.0 h1:7gUk1U5M/CQbp9WoqinNzJar+8KY+LPI6wiWrP/myHw= +github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74= +github.com/Azure/go-autorest/autorest/mocks v0.4.1 h1:K0laFcLE6VLTOwNgSxaGbUcLPuGXlNkbVvq4cW4nIHk= +github.com/Azure/go-autorest/autorest/mocks v0.4.1/go.mod h1:LTp+uSrOhSkaKrUy935gNZuuIPPVsHlr9DSOxSayd+k= +github.com/Azure/go-autorest/autorest/to v0.4.0 h1:oXVqrxakqqV1UZdSazDOPOLvOIz+XA683u8EctwboHk= +github.com/Azure/go-autorest/autorest/to v0.4.0/go.mod h1:fE8iZBn7LQR7zH/9XU2NcPR4o9jEImooCeWJcYV/zLE= +github.com/Azure/go-autorest/autorest/validation v0.3.1 h1:AgyqjAd94fwNAoTjl/WQXg4VvFeRFpO+UhNyRXqF1ac= +github.com/Azure/go-autorest/autorest/validation v0.3.1/go.mod h1:yhLgjC0Wda5DYXl6JAsWyUe4KVNffhoDhG0zVzUMo3E= +github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/logger v0.2.1 h1:IG7i4p/mDa2Ce4TRyAO8IHnVhAVF3RFU+ZtXWSmf4Tg= +github.com/Azure/go-autorest/logger v0.2.1/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8= +github.com/Azure/go-autorest/tracing v0.6.0 h1:TYi4+3m5t6K48TGI9AUdb+IzbnSxvnvUMfuitfgcfuo= +github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/BurntSushi/xgb v0.0.0-20160522181843-27f122750802/go.mod h1:IVnqGOEym/WlBOVXweHU+Q+/VP0lqqI8lqeDx9IjBqo= +github.com/DataDog/datadog-go v3.2.0+incompatible/go.mod h1:LButxg5PwREeZtORoXG3tL4fMGNddJ+vMq1mwgfaqoQ= +github.com/OneOfOne/xxhash v1.2.2/go.mod h1:HSdplMjZKSmBqAxg5vPj2TmRDmfkzw+cTzAElWljhcU= +github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87 h1:xPMsUicZ3iosVPSIP7bW5EcGUzjiiMl1OYTe14y/R24= +github.com/OpenDNS/vegadns2client v0.0.0-20180418235048-a3fa4a771d87/go.mod h1:iGLljf5n9GjT6kc0HBvyI1nOKnGQbNB66VzSNbK5iks= +github.com/akamai/AkamaiOPEN-edgegrid-golang v1.1.1 h1:bLzehmpyCwQiqCE1Qe9Ny6fbFqs7hPlmo9vKv2orUxs= +github.com/akamai/AkamaiOPEN-edgegrid-golang v1.1.1/go.mod h1:kX6YddBkXqqywAe8c9LyvgTCyFuZCTMF4cRPQhc3Fy8= +github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/template v0.0.0-20190718012654-fb15b899a751/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= +github.com/alecthomas/units v0.0.0-20151022065526-2efee857e7cf/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/alecthomas/units v0.0.0-20190717042225-c3de453c63f4/go.mod h1:ybxpYRFXyAe+OPACYpWeL0wqObRcbAqCMya13uyzqw0= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.1183/go.mod h1:pUKYbK5JQ+1Dfxk80P0qxGqe5dkxDoabbZS7zOcouyA= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.1505 h1:htt0EFz2Yi5OINUIERsOFSXclzdsnTTjrPSuujxPhvw= +github.com/aliyun/alibaba-cloud-sdk-go v1.61.1505/go.mod h1:RcDobYh8k5VP6TNybz9m++gL3ijVI5wueVr0EM10VsU= +github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129 h1:MzBOUgng9orim59UnfUTLRjMpd09C5uEVQ6RPGeCaVI= +github.com/andres-erbsen/clock v0.0.0-20160526145045-9e14626cd129/go.mod h1:rFgpPQZYZ8vdbc+48xibu8ALc3yeyd64IhHS+PU6Yyg= +github.com/anmitsu/go-shlex v0.0.0-20161002113705-648efa622239/go.mod h1:2FmKhYUyUczH0OGQWaF5ceTx0UBShxjsH6f8oGKYe2c= +github.com/antihax/optional v1.0.0/go.mod h1:uupD/76wgC+ih3iEmQUL+0Ugr19nfwCT1kdvxnR2qWY= +github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= +github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= +github.com/armon/go-metrics v0.3.10/go.mod h1:4O98XIr/9W0sxpJ8UaYkvjk10Iff7SnFrb4QAOwNTFc= +github.com/armon/go-radix v0.0.0-20180808171621-7fddfc383310/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/armon/go-radix v1.0.0/go.mod h1:ufUuZ+zHj4x4TnLV4JWEpy2hxWSpsRywHrMgIH9cCH8= +github.com/aws/aws-sdk-go v1.39.0/go.mod h1:hcU610XS61/+aQV88ixoOzUoG7v3b31pl2zKMmprdro= +github.com/aws/aws-sdk-go v1.43.12 h1:wOdx6+reSDpUBFEuJDA6edCrojzy8rOtMzhS2rD9+7M= +github.com/aws/aws-sdk-go v1.43.12/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= +github.com/beorn7/perks v0.0.0-20180321164747-3a771d992973/go.mod h1:Dwedo/Wpr24TaqPxmxbtue+5NUziq4I4S80YR8gNf3Q= +github.com/beorn7/perks v1.0.0/go.mod h1:KWe93zE9D1o94FZ5RNwFwVgaQK1VOXiVxmqh+CedLV8= +github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6rlkpw= +github.com/bgentry/speakeasy v0.1.0/go.mod h1:+zsyZBPWlz7T6j88CTgSN5bM796AkVf0kBD4zp0CCIs= +github.com/bitly/go-simplejson v0.5.0 h1:6IH+V8/tVMab511d5bn4M7EwGXZf9Hj6i2xSwkNEM+Y= +github.com/bitly/go-simplejson v0.5.0/go.mod h1:cXHtHw4XUPsvGaxgjIAn8PhEWG9NfngEKAMDJEczWVA= +github.com/bketelsen/crypt v0.0.3-0.20200106085610-5cbc8cc4026c/go.mod h1:MKsuJmJgSg28kpZDP6UIiPt0e0Oz0kqKNGyRaWEPv84= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869 h1:DDGfHa7BWjL4YnC6+E63dPcxHo2sUxDIu8g3QgEJdRY= +github.com/bmizerany/assert v0.0.0-20160611221934-b7ed37b82869/go.mod h1:Ekp36dRnpXw/yCqJaO+ZrUyxD+3VXMFFr56k5XYrpB4= +github.com/boombuler/barcode v1.0.1-0.20190219062509-6c824513bacc/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/boombuler/barcode v1.0.1 h1:NDBbPmhS+EqABEs5Kg3n/5ZNjy73Pz7SIV+KCeqyXcs= +github.com/boombuler/barcode v1.0.1/go.mod h1:paBWMcWSl3LHKBqUq+rly7CNSldXjb2rDl3JlRe0mD8= +github.com/bradfitz/go-smtpd v0.0.0-20170404230938-deb6d6237625/go.mod h1:HYsPBTaaSFSlLx/70C2HPIMNZpVV8+vt/A+FMnYP11g= +github.com/buger/jsonparser v0.0.0-20181115193947-bf1c66bbce23/go.mod h1:bbYlZJ7hK1yFx9hf58LP0zeX7UjIGs20ufpu3evjr+s= +github.com/c-bata/go-prompt v0.2.5/go.mod h1:vFnjEGDIIA/Lib7giyE4E9c50Lvl8j0S+7FVlAwDAVw= +github.com/cenkalti/backoff/v4 v4.1.1/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/cenkalti/backoff/v4 v4.1.2 h1:6Yo7N8UP2K6LWZnW94DLVSSrbobcWdVzAYOisuDPIFo= +github.com/cenkalti/backoff/v4 v4.1.2/go.mod h1:scbssz8iZGpm3xbr14ovlUdkxfGXNInqkPWOWmG2CLw= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/cespare/xxhash v1.1.0/go.mod h1:XrSqR1VqqWfGrhpAt58auRo0WTKS1nRRg3ghfAqPWnc= +github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cheekybits/genny v1.0.0 h1:uGGa4nei+j20rOSeDeP5Of12XVm7TGUd4dJA9RDitfE= +github.com/cheekybits/genny v1.0.0/go.mod h1:+tQajlRqAUrPI7DOSpB0XAqZYtQakVtB7wXkRAgjxjQ= +github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= +github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/cloudflare-go v0.20.0/go.mod h1:sPWL/lIC6biLEdyGZwBQ1rGQKF1FhM7N60fuNiFdYTI= +github.com/cloudflare/cloudflare-go v0.34.0 h1:FsZUCUABkSSyO329gxQRd9DT4/KPGuL3uRYLkjTDlPM= +github.com/cloudflare/cloudflare-go v0.34.0/go.mod h1:JeaZN2TH2OKmiDDd9+34/kJrazqPliSdj+D0y8DpkIw= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= +github.com/cncf/udpa/go v0.0.0-20210930031921-04548b0d99d4/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= +github.com/cncf/xds/go v0.0.0-20210312221358-fbca930ec8ed/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20210922020428-25de7278fc84/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cncf/xds/go v0.0.0-20211011173535-cb28da3451f1/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/coreos/bbolt v1.3.2/go.mod h1:iRUV2dpdMOn7Bo10OQBFzIJO9kkE559Wcmn+qkEiiKk= +github.com/coreos/etcd v3.3.13+incompatible/go.mod h1:uF7uidLiAD3TWHmW31ZFd/JWoc32PjwdhPthX9715RE= +github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20181012123002-c6f51f82210d/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= +github.com/coreos/pkg v0.0.0-20180928190104-399ea9e2e55f/go.mod h1:E3G3o1h8I7cfcXa63jLwjI0eiQQMgzzUDFVpN/nH/eA= +github.com/cpu/goacmedns v0.1.1 h1:DM3H2NiN2oam7QljgGY5ygy4yDXhK5Z4JUnqaugs2C4= +github.com/cpu/goacmedns v0.1.1/go.mod h1:MuaouqEhPAHxsbqjgnck5zeghuwBP1dLnPoobeGqugQ= +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.1 h1:r/myEWzV9lfsM1tFLgDyu0atFtJ1fXn261LKYj/3DxU= +github.com/cpuguy83/go-md2man/v2 v2.0.1/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= +github.com/cyberdelia/templates v0.0.0-20141128023046-ca7fffd4298c/go.mod h1:GyV+0YP4qX0UQ7r2MoYZ+AvYDp12OF5yg4q8rGnyNh4= +github.com/dave/dst v0.26.2/go.mod h1:UMDJuIRPfyUCC78eFuB+SV/WI8oDeyFDvM/JR6NI3IU= +github.com/dave/gopackages v0.0.0-20170318123100-46e7023ec56e/go.mod h1:i00+b/gKdIDIxuLDFob7ustLAVqhsZRk2qVZrArELGQ= +github.com/dave/jennifer v1.2.0/go.mod h1:fIb+770HOpJ2fmN9EPPKOqm1vMGhB+TwXKMZhrIygKg= +github.com/dave/kerr v0.0.0-20170318121727-bc25dd6abe8e/go.mod h1:qZqlPyPvfsDJt+3wHJ1EvSXDuVjFTK0j2p/ca+gtsb8= +github.com/dave/rebecca v0.9.1/go.mod h1:N6XYdMD/OKw3lkF3ywh8Z6wPGuwNFDNtWYEMFWEmXBA= +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/deckarep/golang-set v1.8.0 h1:sk9/l/KqpunDwP7pSjUg0keiOOLEnOBHzykLrsPppp4= +github.com/deckarep/golang-set v1.8.0/go.mod h1:5nI87KwE7wgsBU1F4GKAw2Qod7p5kyS383rP6+o6qqo= +github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= +github.com/deepmap/oapi-codegen v1.6.1/go.mod h1:ryDa9AgbELGeB+YEXE1dR53yAjHwFvE9iAUlWl9Al3M= +github.com/deepmap/oapi-codegen v1.9.1 h1:yHmEnA7jSTUMQgV+uN02WpZtwHnz2CBW3mZRIxr1vtI= +github.com/deepmap/oapi-codegen v1.9.1/go.mod h1:PLqNAhdedP8ttRpBBkzLKU3bp+Fpy+tTgeAMlztR2cw= +github.com/dgrijalva/jwt-go v3.2.0+incompatible/go.mod h1:E3ru+11k8xSBh+hMPgOLZmtrrCbhqsmaPHjLKYnJCaQ= +github.com/dgryski/go-metro v0.0.0-20200812162917-85c65e2d0165/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= +github.com/dgryski/go-metro v0.0.0-20211217172704-adc40b04c140 h1:y7y0Oa6UawqTFPCDw9JG6pdKt4F9pAhHv0B7FMGaGD0= +github.com/dgryski/go-metro v0.0.0-20211217172704-adc40b04c140/go.mod h1:c9O8+fpSOX1DM8cPNSkX/qsBWdkD4yd2dpciOWQjpBw= +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/dimchansky/utfbom v1.1.1 h1:vV6w1AhK4VMnhBno/TPVCoK9U/LP0PkLCS9tbxHdi/U= +github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/j0mACtrfE= +github.com/dnaeon/go-vcr v1.0.1/go.mod h1:aBB1+wY4s93YsC3HHjMBMrwTj2R9FHDzUr9KyGc8n1E= +github.com/dnaeon/go-vcr v1.2.0/go.mod h1:R4UdLID7HZT3taECzJs4YgbbH6PIGXB6W/sc5OLb6RQ= +github.com/dnsimple/dnsimple-go v0.70.1/go.mod h1:F9WHww9cC76hrnwGFfAfrqdW99j3MOYasQcIwTS/aUk= +github.com/dnsimple/dnsimple-go v0.71.1 h1:1hGoBA3CIjpjZj5DM3081xfxr4e2jYmYnkO2VuBF8Qc= +github.com/dnsimple/dnsimple-go v0.71.1/go.mod h1:F9WHww9cC76hrnwGFfAfrqdW99j3MOYasQcIwTS/aUk= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/envoyproxy/go-control-plane v0.9.0/go.mod h1:YTl/9mNaCwkRvm6d1a2C3ymFceY/DCBVvsKhRF0iEA4= +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/go-control-plane v0.9.7/go.mod h1:cwu0lG7PUMfa9snN8LXBig5ynNVH9qI8YYLbd1fK2po= +github.com/envoyproxy/go-control-plane v0.9.9-0.20201210154907-fd9021fe5dad/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= +github.com/envoyproxy/go-control-plane v0.9.9-0.20210512163311-63b5d3c536b0/go.mod h1:hliV/p42l8fGbc6Y9bQ70uLwIvmJyVE5k4iMKlh8wCQ= +github.com/envoyproxy/go-control-plane v0.9.10-0.20210907150352-cf90f659a021/go.mod h1:AFq3mo9L8Lqqiid3OhADV3RfLJnjiw63cSpi+fDTRC0= +github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/exoscale/egoscale v0.67.0 h1:qgWh7T5IZGrNWtg6ib4dr+76WThvB+odTtGG+DGbXF8= +github.com/exoscale/egoscale v0.67.0/go.mod h1:wi0myUxPsV8SdEtdJHQJxFLL/wEw9fiw9Gs1PWRkvkM= +github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4= +github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL+zU= +github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= +github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= +github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= +github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= +github.com/flynn/go-shlex v0.0.0-20150515145356-3f9db97f8568/go.mod h1:xEzjJPgXI435gkrCt3MPfRiAkVrwSbHsst4LCFVfpJc= +github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k= +github.com/francoispqt/gojay v1.2.13/go.mod h1:ehT5mTG4ua4581f1++1WLG0vPdaA9HaiDsoyrBGkyDY= +github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= +github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= +github.com/fsnotify/fsnotify v1.5.1/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/fsnotify/fsnotify v1.5.3 h1:vNFpj2z7YIbwh2bw7x35sqYpp2wfuq+pivKbWG09B8c= +github.com/fsnotify/fsnotify v1.5.3/go.mod h1:T3375wBYaZdLLcVNkcVbzGHY7f1l/uK5T5Ai1i3InKU= +github.com/getkin/kin-openapi v0.53.0/go.mod h1:7Yn5whZr5kJi6t+kShccXS8ae1APpYTW6yheSwk8Yi4= +github.com/getkin/kin-openapi v0.87.0/go.mod h1:660oXbgy5JFMKreazJaQTw7o+X00qeSyhcnluiMv+Xg= +github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= +github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32 h1:Mn26/9ZMNWSw9C9ERFA1PUxfmGpolnw2v0bKOREu5ew= +github.com/ghodss/yaml v1.0.1-0.20190212211648-25d852aebe32/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= +github.com/gin-contrib/sse v0.1.0/go.mod h1:RHrZQHXnP2xjPF+u1gW/2HnVO7nvIa9PG3Gm+fLHvGI= +github.com/gin-gonic/gin v1.7.4/go.mod h1:jD2toBW3GZUr5UMcdrwQA10I7RuaFOl/SGeDjXkfUtY= +github.com/gliderlabs/ssh v0.1.1/go.mod h1:U7qILu1NlMHj9FlMhZLlkCdDnU1DBEAqr0aevW3Awn0= +github.com/go-acme/lego/v4 v4.6.0 h1:w1rQtE/YHY5SupCTRpRJQbaZ6bkySJJ0z+kl8p6pVJU= +github.com/go-acme/lego/v4 v4.6.0/go.mod h1:v19/zU0bumGNzvsbx07zQ6c9IxAvy55XIKhXCZio3NQ= +github.com/go-chi/chi/v5 v5.0.0/go.mod h1:BBug9lr0cqtdAhsu6R4AAdvufI0/XBzAQSsUqJpoZOs= +github.com/go-cmd/cmd v1.0.5/go.mod h1:y8q8qlK5wQibcw63djSl/ntiHUHXHGdCkPk0j4QeW4s= +github.com/go-errors/errors v1.0.1/go.mod h1:f4zRHt4oKfwPJE5k8C9vpYG+aDHdBFUsgrm6/TyX73Q= +github.com/go-errors/errors v1.4.2 h1:J6MZopCL4uSllY1OfXM374weqZFFItUbrImctkmUxIA= +github.com/go-errors/errors v1.4.2/go.mod h1:sIVyrIiJhuEF+Pj9Ebtd6P/rEYROXFi3BopGUQ5a5Og= +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-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= +github.com/go-kit/kit v0.9.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-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= +github.com/go-openapi/jsonpointer v0.19.5/go.mod h1:Pl9vOtqEWErmShwVjC8pYs9cog34VGT37dQOVbmoatg= +github.com/go-openapi/swag v0.19.5/go.mod h1:POnQmlKehdgb5mhVOsnJFsivZCEZ/vjK9gh66Z9tfKk= +github.com/go-playground/assert/v2 v2.0.1/go.mod h1:VDjEfimB/XKnb+ZQfWdccd7VUvScMdVu0Titje2rxJ4= +github.com/go-playground/locales v0.13.0/go.mod h1:taPMhCMXrRLJO55olJkUXHZBHCxTMfnGwq/HNwmWNS8= +github.com/go-playground/locales v0.14.0/go.mod h1:sawfccIbzZTqEDETgFXqTho0QybSa7l++s0DH+LDiLs= +github.com/go-playground/universal-translator v0.17.0/go.mod h1:UkSxE5sNxxRwHyU+Scu5vgOQjsIJAF8j9muTVoKLVtA= +github.com/go-playground/universal-translator v0.18.0/go.mod h1:UvRDBj+xPUEGrFYl+lu/H90nyDXpg0fqeB/AQUGNTVA= +github.com/go-playground/validator/v10 v10.4.1/go.mod h1:nlOn6nFhuKACm19sB/8EGNn9GlaMV7XkbRSipzJ0Ii4= +github.com/go-playground/validator/v10 v10.9.0/go.mod h1:74x4gJWsvQexRdW8Pn3dXSGrTK4nAUsbPlLADvpJkos= +github.com/go-resty/resty/v2 v2.1.1-0.20191201195748-d7b97669fe48/go.mod h1:dZGr0i9PLlaaTD4H/hoZIDjQ+r6xq8mgbRzHZf7f2J8= +github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPrFY= +github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0 h1:p104kn46Q8WdvHunIJ9dAyjPVtrBPhSr3KT2yUst43I= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= +github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b h1:/vQ+oYKu+JoyaMPDsv5FzwuL2wwWBgBbtj/YLCi4LuA= +github.com/gobs/pretty v0.0.0-20180724170744-09732c25a95b/go.mod h1:Xo4aNUOrJnVruqWQJBtW6+bTBDTniY8yZum5rF3b5jw= +github.com/goccy/go-json v0.7.8/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= +github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/uuid v3.2.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= +github.com/gofrs/uuid v4.2.0+incompatible h1:yyYWMnhkhrKwwr8gAOcOCYxOOscHgDS9yZgBrnJfGa0= +github.com/gofrs/uuid v4.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.1/go.mod h1:hp+jE20tsWTFYpLwKvXlhS1hjn+gTNwPg2I6zVXpSg4= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/goji/httpauth v0.0.0-20160601135302-2da839ab0f4d/go.mod h1:nnjvkQ9ptGaCkuDUx6wNykzzlUixGxvkme+H/lnzb+A= +github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= +github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= +github.com/golang-jwt/jwt/v4 v4.0.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.2.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +github.com/golang-jwt/jwt/v4 v4.3.0 h1:kHL1vqdqWNfATmA0FNMdmZNMyZI1U6O31X4rlIPoBog= +github.com/golang-jwt/jwt/v4 v4.3.0/go.mod h1:/xlHOz8bRuivTWchD4jCa+NbatV+wEUSzwAxVc6locg= +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/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da h1:oI5xCqsCo564l8iNU+DwB5epxmsaqB+rhGL0m5jtYqE= +github.com/golang/groupcache v0.0.0-20210331224755-41bb18bfe9da/go.mod h1:cIg4eruTrX1D+g88fzRXU5OdNfaM+9IcxsU14FzY7Hc= +github.com/golang/lint v0.0.0-20180702182130-06c8688daad7/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= +github.com/golang/mock v1.4.0/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.1/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.3/go.mod h1:UOMv5ysSaYNkG+OFQykRIcU/QvvxJf3p21QfJ2Bt3cw= +github.com/golang/mock v1.4.4/go.mod h1:l3mdAwkq5BuhzHwde/uurv3sEJeZMXNpwsxVWU71h+4= +github.com/golang/mock v1.5.0/go.mod h1:CWnOUgYIOo4TcNZ0wHX3YZCqsaM1I1Jvs6v3mP3KVu8= +github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc= +github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs= +github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= +github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.4/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw= +github.com/golang/protobuf v1.3.5/go.mod h1:6O5/vntMXwX2lRkT1hjjk0nAC1IDOTvTlVgjlRvqsdk= +github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= +github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= +github.com/golang/protobuf v1.4.0-rc.2/go.mod h1:LlEzMj4AhA7rCAGe4KMBDvJI+AwstrUpVNzEA03Pprs= +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.1/go.mod h1:U8fpvMrcmy5pZrNK1lt4xCsGvpyWQ/VVv6QDs8UjoX8= +github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.4.3/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.1/go.mod h1:DopwsBzvsk0Fs44TXzsVbJyPhcCPeIwnvohx4u74HPM= +github.com/golang/protobuf v1.5.2 h1:ROPKBNFfQgOUMifHyP+KYbvpjbdoFNs+aK7DXlji0Tw= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= +github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/golangci/lint-1 v0.0.0-20181222135242-d2cdd8c08219/go.mod h1:/X8TswGSh1pIozq4ZwCfxS0WA5JGXguxk94ar/4c87Y= +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.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= +github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.4.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.1/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.2/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.3/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.4/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.7 h1:81/ik6ipDQS2aGcBfIN5dHDB36BwrStyeAQquSYCV4o= +github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-github v17.0.0+incompatible/go.mod h1:zLgOLi98H3fifZn+44m+umXrS52loVEgC2AApnigrVQ= +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/go-querystring v1.1.0 h1:AnCroh3fv4ZBgVIf1Iwtovgjaw/GiKJo8M8yD/fhyJ8= +github.com/google/go-querystring v1.1.0/go.mod h1:Kcdr2DB4koayq7X8pmAG4sNG59So17icRSOU623lUBU= +github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= +github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs= +github.com/google/martian/v3 v3.0.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.1.0/go.mod h1:y5Zk1BBys9G+gd6Jrk0W3cC1+ELVxBWuIGO+w/tUAp0= +github.com/google/martian/v3 v3.2.1/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/pprof v0.0.0-20181127221834-b4f47329b966/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc= +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= +github.com/google/pprof v0.0.0-20191218002539-d4f498aebedc/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200212024743-f11f1df84d12/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200229191704-1ebb73c60ed3/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200430221834-fc25d7d30c6d/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hfqzAqh7sHMqb3I9Rq5C59dIz2SbBwJ4eM= +github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210122040257-d980be63207e/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210226084205-cbba55b83ad5/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210601050228-01bbb1931b22/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210609004039-a478d1d731e9/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20210720184732-4bb14d4b1be1/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.1.2/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= +github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/googleapis/gax-go v2.0.0+incompatible h1:j0GKcs05QVmm7yesiZq2+9cxHkNK9YM6zKx4D2qucQU= +github.com/googleapis/gax-go v2.0.0+incompatible/go.mod h1:SFVmujtThgffbyetf+mdk2eWhX2bMyUtNHzFKcPA9HY= +github.com/googleapis/gax-go/v2 v2.0.3/go.mod h1:LLvjysVCY1JZeum8Z6l8qUty8fiNwE08qbEPm1M08qg= +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/googleapis/gax-go/v2 v2.1.0/go.mod h1:Q3nei7sK6ybPYH7twZdmQpAd1MKb7pfu6SK+H1/DsU0= +github.com/googleapis/gax-go/v2 v2.1.1/go.mod h1:hddJymUZASv3XPyGkUpKj8pPO47Rmb0eJc8R6ouapiM= +github.com/googleapis/gax-go/v2 v2.2.0/go.mod h1:as02EH8zWkzwUoLbBaFeQ+arQaj/OthfcblKl4IGNaM= +github.com/googleapis/gax-go/v2 v2.3.0 h1:nRJtk3y8Fm770D42QV6T90ZnvFZyk7agSo3Q+Z9p3WI= +github.com/googleapis/gax-go/v2 v2.3.0/go.mod h1:b8LNqSzNabLiUpXKkY7HAR5jr6bIT99EXz9pXxye9YM= +github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gophercloud/gophercloud v0.15.1-0.20210202035223-633d73521055/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4= +github.com/gophercloud/gophercloud v0.16.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4= +github.com/gophercloud/gophercloud v0.20.0/go.mod h1:wRtmUelyIIv3CSSDI47aUwbs075O6i+LY+pXsKCBsb4= +github.com/gophercloud/gophercloud v0.24.0 h1:jDsIMGJ1KZpAjYfQgGI2coNQj5Q83oPzuiGJRFWgMzw= +github.com/gophercloud/gophercloud v0.24.0/go.mod h1:Q8fZtyi5zZxPS/j9aj3sSxtvj41AdQMDwyo1myduD5c= +github.com/gophercloud/utils v0.0.0-20210216074907-f6de111f2eae/go.mod h1:wx8HMD8oQD0Ryhz6+6ykq75PJ79iPyEqYHfwZ4l7OsA= +github.com/gophercloud/utils v0.0.0-20220209210848-d0ab9f2a8909 h1:bz4gaDfHjQGO+fCxaDIXV27KKuwQsojs7fXF4rVOTMM= +github.com/gophercloud/utils v0.0.0-20220209210848-d0ab9f2a8909/go.mod h1:qOGlfG6OIJ193/c3Xt/XjOfHataNZdQcVgiu93LxBUM= +github.com/gopherjs/gopherjs v0.0.0-20181017120253-0766667cb4d1/go.mod h1:wJfORRmW1u3UXTncJ5qlYoELFm8eSnnEO6hX4iZ3EWY= +github.com/gorilla/mux v1.7.3/go.mod h1:1lud6UwP+6orDFRuTfBEV8e9/aOM/c4fVVCaMa2zaAs= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gorilla/websocket v1.4.2/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= +github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/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.5.0/go.mod h1:RSKVYQBd5MCa4OVpNdGskqpgL2+G+NZTnrVHpWWfpdw= +github.com/grpc-ecosystem/grpc-gateway v1.9.0/go.mod h1:vNeuVxBJEsws4ogUvrchl83t/GYV9WGTSLVdBhOQFDY= +github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= +github.com/h12w/go-socks5 v0.0.0-20200522160539-76189e178364/go.mod h1:eDJQioIyy4Yn3MVivT7rv/39gAJTrA7lgmYr8EW950c= +github.com/h2non/parth v0.0.0-20190131123155-b4df798d6542 h1:2VTzZjLZBgl62/EtslCrtky5vbi9dd7HrQPQIx6wqiw= +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/api v1.12.0/go.mod h1:6pVBMo0ebnYdt2S3H87XhekM/HHrUoTD2XXb/VrZVy0= +github.com/hashicorp/consul/sdk v0.1.1/go.mod h1:VKf9jXwCTEY1QZP2MOLRhb5i/I/ssyNV1vwHyQBF0x8= +github.com/hashicorp/consul/sdk v0.8.0/go.mod h1:GBvyrGALthsZObzUGsfgHZQDXjg4lOjagTIwIR1vPms= +github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= +github.com/hashicorp/go-cleanhttp v0.5.0/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80= +github.com/hashicorp/go-cleanhttp v0.5.2 h1:035FKYIWjmULyFRBKPs8TBQoi0x6d9G4xc9neXJWAZQ= +github.com/hashicorp/go-cleanhttp v0.5.2/go.mod h1:kO/YDlP8L1346E6Sodw+PrpBSV4/SoxCXGY6BqNFT48= +github.com/hashicorp/go-hclog v0.9.2/go.mod h1:5CU+agLiy3J7N7QjHK5d05KxGsuXiQLrjA0H7acj2lQ= +github.com/hashicorp/go-hclog v0.12.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXcJdM= +github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= +github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= +github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-multierror v1.0.0/go.mod h1:dHtQlpGsu+cZNNAkkCN/P3hoUDHhCYQXV3UM06sGGrk= +github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= +github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= +github.com/hashicorp/go-retryablehttp v0.7.0 h1:eu1EI/mbirUgP5C8hVsTNaGZreBDlYiwC1FZWkvQPQ4= +github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= +github.com/hashicorp/go-rootcerts v1.0.0/go.mod h1:K6zTfqpRlCUIjkwsN4Z+hiSfzSTQa6eBIzfwKfwNnHU= +github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= +github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= +github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= +github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.1/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= +github.com/hashicorp/go.net v0.0.1/go.mod h1:hjKkEWcCURg++eb33jQU7oqQcI9XDCnUzHA0oac0k90= +github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= +github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= +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/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/YAJqrc= +github.com/hashicorp/memberlist v0.1.3/go.mod h1:ajVTdAv/9Im8oMAAj5G31PhhMCZJV2pPBoIllUwCN7I= +github.com/hashicorp/memberlist v0.3.0/go.mod h1:MS2lj3INKhZjWNqd3N0m3J+Jxf3DAOnAH9VT3Sh9MUE= +github.com/hashicorp/serf v0.8.2/go.mod h1:6hOLApaqBFA1NXqRQAsxw9QxuDEvNxSQRwA/JwenrHc= +github.com/hashicorp/serf v0.9.6/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hashicorp/serf v0.9.7/go.mod h1:TXZNMjZQijwlDvp+r0b63xZ45H7JmCmgg4gpTwn9UV4= +github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= +github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df h1:MZf03xP9WdakyXhOWuAD5uPK3wHh96wCsqe3hCMKh8E= +github.com/iij/doapi v0.0.0-20190504054126-0bbf12d6d7df/go.mod h1:QMZY7/J/KSQEhKWFeDesPjMj+wCHReeknARU3wqlyN4= +github.com/imdario/mergo v0.3.12 h1:b6R2BslTbIEToALKP7LxUvijTsNI9TAe80pLWN2g/HU= +github.com/imdario/mergo v0.3.12/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/inconshreveable/mousetrap v1.0.0/go.mod h1:PxqpIevigyE2G7u3NXJIT2ANytuPF1OarO4DADm73n8= +github.com/infobloxopen/infoblox-go-client v1.1.1 h1:728A6LbLjptj/7kZjHyIxQnm768PWHfGFm0HH8FnbtU= +github.com/infobloxopen/infoblox-go-client v1.1.1/go.mod h1:BXiw7S2b9qJoM8MS40vfgCNB2NLHGusk1DtO16BD9zI= +github.com/jarcoal/httpmock v1.0.5/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jarcoal/httpmock v1.0.6/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jarcoal/httpmock v1.1.0 h1:F47ChZj1Y2zFsCXxNkBPwNNKnAyOATcdQibk0qEdVCE= +github.com/jarcoal/httpmock v1.1.0/go.mod h1:ATjnClrvW/3tijVmpL/va5Z3aAyGvqU3gCT8nX0Txik= +github.com/jellevandenhooff/dkim v0.0.0-20150330215556-f50fe3d243e1/go.mod h1:E0B/fFc00Y+Rasa88328GlI/XbtyysCtTHZS8h7IrBU= +github.com/jmespath/go-jmespath v0.0.0-20180206201540-c2b33e8439af/go.mod h1:Nht3zPeWKUH0NzdCt2Blrr5ys8VGpn0CEB0cQHVjt7k= +github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= +github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= +github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= +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/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= +github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= +github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= +github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= +github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= +github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/XSXhF0NWZEnDohbsk= +github.com/jtolds/gls v4.20.0+incompatible/go.mod h1:QJZ7F/aHp+rZTRtaJ1ow/lLfFfVYBRgL+9YlvaHOwJU= +github.com/juju/ratelimit v1.0.1 h1:+7AIFJVQ0EQgq/K9+0Krm7m530Du7tIz0METWzN0RgY= +github.com/juju/ratelimit v1.0.1/go.mod h1:qapgC/Gy+xNh9UxzV13HGGl/6UXNN+ct+vwSgWNm/qk= +github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= +github.com/k0kubun/go-ansi v0.0.0-20180517002512-3bf9e2903213 h1:qGQQKEcAR99REcMpsXCp3lJ03zYT1PkRd3kQGPn9GVg= +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.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8= +github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= +github.com/kolo/xmlrpc v0.0.0-20200310150728-e0350524596b/go.mod h1:o03bZfuBwAXHetKXuInt4S7omeXUu62/A845kiycsSQ= +github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b h1:iNjcivnc6lhbvJA3LD622NPrUponluJrBWPIwGG/3Bg= +github.com/kolo/xmlrpc v0.0.0-20201022064351-38db28db192b/go.mod h1:pcaDhQK0/NJZEvtCO0qQPPropqV0sJOJ6YW7X+9kRwM= +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/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/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= +github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= +github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/pty v1.1.3/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= +github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/labbsr0x/bindman-dns-webhook v1.0.2 h1:I7ITbmQPAVwrDdhd6dHKi+MYJTJqPCK0jE6YNBAevnk= +github.com/labbsr0x/bindman-dns-webhook v1.0.2/go.mod h1:p6b+VCXIR8NYKpDr8/dg1HKfQoRHCdcsROXKvmoehKA= +github.com/labbsr0x/goh v1.0.1 h1:97aBJkDjpyBZGPbQuOK5/gHcSFbcr5aRsq3RSRJFpPk= +github.com/labbsr0x/goh v1.0.1/go.mod h1:8K2UhVoaWXcCU7Lxoa2omWnC8gyW8px7/lmO61c027w= +github.com/labstack/echo/v4 v4.2.1/go.mod h1:AA49e0DZ8kk5jTOOCKNuPR6oTnBS0dYiM4FW1e6jwpg= +github.com/labstack/echo/v4 v4.6.3/go.mod h1:Hk5OiHj0kDqmFq7aHe7eDqI7CUhuCrfpupQtLGGLm7A= +github.com/labstack/gommon v0.3.0/go.mod h1:MULnywXg0yavhxWKc+lOruYdAhDwPK9wf0OL7NoOu+k= +github.com/labstack/gommon v0.3.1/go.mod h1:uW6kP17uPlLJsD3ijUYn3/M5bAxtlZhMI6m3MFxTMTM= +github.com/leodido/go-urn v1.2.0/go.mod h1:+8+nEpDfqqsY+g338gtMEUOtuK+4dEMhiQEgxpxOKII= +github.com/leodido/go-urn v1.2.1/go.mod h1:zt4jvISO2HfUBqxjfIshjdMTYS56ZS/qv49ictyFfxY= +github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= +github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= +github.com/lestrrat-go/codegen v1.0.2/go.mod h1:JhJw6OQAuPEfVKUCLItpaVLumDGWQznd1VaXrBk9TdM= +github.com/lestrrat-go/httpcc v1.0.0/go.mod h1:tGS/u00Vh5N6FHNkExqGGNId8e0Big+++0Gf8MBnAvE= +github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= +github.com/lestrrat-go/jwx v1.2.7/go.mod h1:bw24IXWbavc0R2RsOtpXL7RtMyP589yZ1+L7kd09ZGA= +github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= +github.com/linode/linodego v0.31.1 h1:dBtjKo7J9UhNFhTOclEXb12RRyQDaRBxISdONVuU+DA= +github.com/linode/linodego v0.31.1/go.mod h1:BR0gVkCJffEdIGJSl6bHR80Ty+Uvg/2jkjmrWaFectM= +github.com/liquidweb/go-lwApi v0.0.0-20190605172801-52a4864d2738/go.mod h1:0sYF9rMXb0vlG+4SzdiGMXHheCZxjguMq+Zb4S2BfBs= +github.com/liquidweb/go-lwApi v0.0.5 h1:CT4cdXzJXmo0bon298kS7NeSk+Gt8/UHpWBBol1NGCA= +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-cli v0.6.10 h1:97sBhsvXZEC8e9npmyigGhWnLEoK1+LaxqXhvq1bsnM= +github.com/liquidweb/liquidweb-cli v0.6.10/go.mod h1:BwZ8l6DiFabXyhLFE77jYfmlFuMa6dXeBg3jzBOW7z4= +github.com/liquidweb/liquidweb-go v1.6.3 h1:NVHvcnX3eb3BltiIoA+gLYn15nOpkYkdizOEYGSKrk4= +github.com/liquidweb/liquidweb-go v1.6.3/go.mod h1:SuXXp+thr28LnjEw18AYtWwIbWMHSUiajPQs8T9c/Rc= +github.com/lucas-clemente/quic-go v0.25.0 h1:K+X9Gvd7JXsOHtU0N2icZ2Nw3rx82uBej3mP4CLgibc= +github.com/lucas-clemente/quic-go v0.25.0/go.mod h1:YtzP8bxRVCBlO77yRanE264+fY/T2U9ZlW1AaHOsMOg= +github.com/lunixbochs/vtclean v1.0.0/go.mod h1:pHhQNgMf3btfWnGBVipUOjRYhoOsdGqdm/+2c2E2WMI= +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/magiconair/properties v1.8.6 h1:5ibWZ6iY0NctNGWo87LalDlEZ6R41TqbbDamhfG/Qzo= +github.com/magiconair/properties v1.8.6/go.mod h1:y3VJvCyxH9uVvJTWEGAELF3aiYNyPKd5NZ3oSwXrF60= +github.com/mailru/easyjson v0.0.0-20190312143242-1de009706dbe/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190614124828-94de47d64c63/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/mailru/easyjson v0.0.0-20190626092158-b2ccc519800e/go.mod h1:C1wdFJiN94OJF2b5HbByQZoLdCWB1Yqtg26g4irojpc= +github.com/marten-seemann/qpack v0.2.1/go.mod h1:F7Gl5L1jIgN1D11ucXefiuJS9UMVP2opoCp2jDKb7wc= +github.com/marten-seemann/qtls-go1-15 v0.1.4/go.mod h1:GyFwywLKkRt+6mfU99csTEY1joMZz5vmB1WNZH3P81I= +github.com/marten-seemann/qtls-go1-16 v0.1.4 h1:xbHbOGGhrenVtII6Co8akhLEdrawwB2iHl5yhJRpnco= +github.com/marten-seemann/qtls-go1-16 v0.1.4/go.mod h1:gNpI2Ol+lRS3WwSOtIUUtRwZEQMXjYK+dQSBFbethAk= +github.com/marten-seemann/qtls-go1-17 v0.1.0 h1:P9ggrs5xtwiqXv/FHNwntmuLMNq3KaSIG93AtAZ48xk= +github.com/marten-seemann/qtls-go1-17 v0.1.0/go.mod h1:fz4HIxByo+LlWcreM4CZOYNuz3taBQ8rN2X6FqvaWo8= +github.com/marten-seemann/qtls-go1-18 v0.1.0-beta.1 h1:EnzzN9fPUkUck/1CuY1FlzBaIYMoiBsdwTNmNGkwUUM= +github.com/marten-seemann/qtls-go1-18 v0.1.0-beta.1/go.mod h1:PUhIQk19LoFt2174H4+an8TYvWOGjb/hHwphBeaDHwI= +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.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.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +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-colorable v0.1.9/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= +github.com/mattn/go-colorable v0.1.11/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-colorable v0.1.12 h1:jF+Du6AlPIjs2BiUiQlKOX0rt3SujHxPnksPKZbaA40= +github.com/mattn/go-colorable v0.1.12/go.mod h1:u5H1YNBxpqRaxsYJYSkiCWKzEfiAb1Gb520KVy5xxl4= +github.com/mattn/go-isatty v0.0.3/go.mod h1:M+lRXTBqGeGNdLjl/ufCoiOlB5xdOkqRJdNxMWT7Zi4= +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= +github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= +github.com/mattn/go-isatty v0.0.12/go.mod h1:cbi8OIDigv2wuxKPP5vlRcQ1OAZbq2CE4Kysco4FUpU= +github.com/mattn/go-isatty v0.0.14 h1:yVuAays6BHfxijgZPzw+3Zlu5yQgKGP2/hcQbHb7S9Y= +github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27kJ6hsGG94= +github.com/mattn/go-runewidth v0.0.2/go.mod h1:LwmH8dsx7+W8Uxz3IHJYH5QSwggIsqBzpuz5H//U1FU= +github.com/mattn/go-runewidth v0.0.6/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= +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/microcosm-cc/bluemonday v1.0.1/go.mod h1:hsXNsILzKxV+sX77C5b8FSuKF00vh2OMYv+xgHpAMF4= +github.com/miekg/dns v1.0.14/go.mod h1:W1PPwlIAgtquWBMBEV9nkV9Cazfe8ScdGz/Lj7v3Nrg= +github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= +github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/dns v1.1.43/go.mod h1:+evo5L0630/F6ca/Z9+GAqzhjGyn8/c+TBaOyfEl0V4= +github.com/miekg/dns v1.1.47 h1:J9bWiXbqMbnZPcY8Qi2E3EWIBsIm6MZzzJB9VRg5gL8= +github.com/miekg/dns v1.1.47/go.mod h1:e3IlAVfNqAllflbibAZEWOXOQ+Ynzk/dDozDxY7XnME= +github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= +github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/mitchellh/go-homedir v1.0.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y= +github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0= +github.com/mitchellh/go-testing-interface v1.0.0/go.mod h1:kRemZodwjscx+RGhAo8eIhFbs2+BFgRtFPeD/KE+zxI= +github.com/mitchellh/go-vnc v0.0.0-20150629162542-723ed9867aed/go.mod h1:3rdaFaCv4AyBgu5ALFM0+tSuHrBh6v692nyQe3ikrq0= +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 v1.1.2/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/mitchellh/mapstructure v1.3.3/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.1/go.mod h1:bFUtVrKA4DC2yAKiSyO/QUcy7e+RRV2QTWOzhPopBRo= +github.com/mitchellh/mapstructure v1.4.3 h1:OVowDSCllw/YjdLkam3/sm7wEtOy59d8ndGgCcyj8cs= +github.com/mitchellh/mapstructure v1.4.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 h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg= +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/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M= +github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/modocache/gover v0.0.0-20171022184752-b58185e213c5/go.mod h1:caMODM3PzxT8aQXRPkAt8xlV/e7d7w8GM5g0fa5F0D8= +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 h1:o6uBwrhM5C8Ll3MAAxrQxRHEu7FkapwTuI2WmL1rw4g= +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= +github.com/neelance/astrewrite v0.0.0-20160511093645-99348263ae86/go.mod h1:kHJEU3ofeGjhHklVoIGuVj85JJwZ6kWPaJwCIxgnFmo= +github.com/neelance/sourcemap v0.0.0-20151028013722-8c68805598ab/go.mod h1:Qr6/a/Q4r9LP1IltGz7tA7iOK1WonHEYhu1HRBA7ZiM= +github.com/nrdcg/auroradns v1.0.1 h1:m/kBq83Xvy3cU261MOknd8BdnOk12q4lAWM+kOdsC2Y= +github.com/nrdcg/auroradns v1.0.1/go.mod h1:y4pc0i9QXYlFCWrhWrUSIETnZgrf4KuwjDIWmmXo3JI= +github.com/nrdcg/desec v0.6.0 h1:kZ9JtsYEW3LNfuPIM+2tXoxoQlF9koWfQTWTQsA7Sr8= +github.com/nrdcg/desec v0.6.0/go.mod h1:wybWg5cRrNmtXLYpUCPCLvz4jfFNEGZQEnoUiX9WqcY= +github.com/nrdcg/dnspod-go v0.4.0 h1:c/jn1mLZNKF3/osJ6mz3QPxTudvPArXTjpkmYj0uK6U= +github.com/nrdcg/dnspod-go v0.4.0/go.mod h1:vZSoFSFeQVm2gWLMkyX61LZ8HI3BaqtHZWgPTGKr6KQ= +github.com/nrdcg/freemyip v0.2.0 h1:/GscavT4GVqAY13HExl5UyoB4wlchv6Cg5NYDGsUoJ8= +github.com/nrdcg/freemyip v0.2.0/go.mod h1:HjF0Yz0lSb37HD2ihIyGz9esyGcxbCrrGFLPpKevbx4= +github.com/nrdcg/goinwx v0.8.1 h1:20EQ/JaGFnSKwiDH2JzjIpicffl3cPk6imJBDqVBVtU= +github.com/nrdcg/goinwx v0.8.1/go.mod h1:tILVc10gieBp/5PMvbcYeXM6pVQ+c9jxDZnpaR1UW7c= +github.com/nrdcg/namesilo v0.2.1 h1:kLjCjsufdW/IlC+iSfAqj0iQGgKjlbUUeDJio5Y6eMg= +github.com/nrdcg/namesilo v0.2.1/go.mod h1:lwMvfQTyYq+BbjJd30ylEG4GPSS6PII0Tia4rRpRiyw= +github.com/nrdcg/porkbun v0.1.1 h1:gxVzQYfFUGXhnBax/aVugoE3OIBAdHgrJgyMPyY5Sjo= +github.com/nrdcg/porkbun v0.1.1/go.mod h1:JWl/WKnguWos4mjfp4YizvvToigk9qpQwrodOk+CPoA= +github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= +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.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= +github.com/onsi/ginkgo v1.14.0/go.mod h1:iSB4RoI2tjJc9BBv4NKIKWKya62Rps+oPG/Lv9klQyY= +github.com/onsi/ginkgo v1.16.2/go.mod h1:CObGmKUOKaSC0RjmoAK7tKyn4Azo5P2IWuoMnvwxz1E= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= +github.com/onsi/ginkgo v1.16.5 h1:8xi0RTUf59SOSfEtZMvwTvXYMzG4gV23XVHOZiXNtnE= +github.com/onsi/ginkgo v1.16.5/go.mod h1:+E8gABHa3K6zRBolWtd+ROzc/U5bkGt0FwiG042wbpU= +github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= +github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= +github.com/onsi/gomega v1.13.0/go.mod h1:lRk9szgn8TxENtWd0Tp4c3wjlRfMTMH27I+3Je41yGY= +github.com/onsi/gomega v1.14.0 h1:ep6kpPVwmr/nTbklSx2nrLNSIO62DoYAhnPNIMhK8gI= +github.com/onsi/gomega v1.14.0/go.mod h1:cIuvLEne0aoVhAgh/O6ac0Op8WWw9H6eYCriF+tEHG0= +github.com/openzipkin/zipkin-go v0.1.1/go.mod h1:NtoC/o8u3JlF1lSlyPNswIbeQH9bJTmOf0Erfk+hxe8= +github.com/oracle/oci-go-sdk v24.3.0+incompatible h1:x4mcfb4agelf1O4/1/auGlZ1lr97jXRSSN5MxTgG/zU= +github.com/oracle/oci-go-sdk v24.3.0+incompatible/go.mod h1:VQb79nF8Z2cwLkLS35ukwStZIg5F66tcBccjip/j888= +github.com/orijtech/structslop v0.0.6/go.mod h1:3zH7DQgjl7qvvnMni63/U82f+EjQ3MofOx9BRxanAiA= +github.com/ovh/go-ovh v1.1.0 h1:bHXZmw8nTgZin4Nv7JuaLs0KG5x54EQR7migYTd1zrk= +github.com/ovh/go-ovh v1.1.0/go.mod h1:AxitLZ5HBRPyUd+Zl60Ajaag+rNTdVXWIkzfrVuTXWA= +github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= +github.com/patrickmn/go-cache v2.1.0+incompatible h1:HRMgzkcYKYpi3C8ajMPV8OFXaaRUnok+kx1WdO15EQc= +github.com/patrickmn/go-cache v2.1.0+incompatible/go.mod h1:3Qf8kWWT7OJRJbdiICTKqZju1ZixQ/KpMGzzAfe6+WQ= +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/pelletier/go-toml v1.9.4 h1:tjENF6MfZAg8e4ZmZTeWaWiT2vXtsoO6+iuOjFhECwM= +github.com/pelletier/go-toml v1.9.4/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pelletier/go-toml/v2 v2.0.0-beta.8 h1:dy81yyLYJDwMTifq24Oi/IslOslRrDSb3jwDggjz3Z0= +github.com/pelletier/go-toml/v2 v2.0.0-beta.8/go.mod h1:r9LEWfGN8R5k0VXJ+0BkIe7MYkRdwZOjgMj2KwnJFUo= +github.com/phayes/freeport v0.0.0-20180830031419-95f893ade6f2/go.mod h1:iIss55rKnNBTvrwdmkUpLnDpZoAHvWaiq5+iMmen4AE= +github.com/pires/go-proxyproto v0.6.2 h1:KAZ7UteSOt6urjme6ZldyFm4wDe/z0ZUP0Yv0Dos0d8= +github.com/pires/go-proxyproto v0.6.2/go.mod h1:Odh9VFOZJCf9G8cLW5o435Xf1J95Jw9Gw5rnCjcwzAY= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +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/sftp v1.13.1/go.mod h1:3HaPG6Dq1ILlpPZRO0HVMrsydcdLt6HRDccSgb87qRg= +github.com/pkg/term v1.1.0/go.mod h1:E25nymQcrSllhX42Ok8MRm1+hyBdHY0dCeiKZ9jpNGw= +github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= +github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= +github.com/posener/complete v1.1.1/go.mod h1:em0nMJCgc9GFtwrmVmEMR/ZL6WyhyjMBndrE9hABlRI= +github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= +github.com/pquerna/otp v1.3.0 h1:oJV/SkzR33anKXwQU3Of42rL4wbrffP4uvUf1SvS5Xs= +github.com/pquerna/otp v1.3.0/go.mod h1:dkJfzwRKNiegxyNb54X/3fLwhCynbMspSyWKnvi1AEg= +github.com/prometheus/client_golang v0.8.0/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.1/go.mod h1:7SWBe2y4D6OKWSNQJUaRYU/AaXPKyh/dDVn+NZz0KFw= +github.com/prometheus/client_golang v0.9.3/go.mod h1:/TN21ttK/J9q6uSwhBd54HahCDft0ttaMvbicHlPoso= +github.com/prometheus/client_golang v1.0.0/go.mod h1:db9x61etRT2tGnBNRi70OPL5FsnadC4Ky3P0J6CfImo= +github.com/prometheus/client_golang v1.1.0/go.mod h1:I1FGZT9+L76gKKOs5djB6ezCbFQP1xR9D75/vuwEF3g= +github.com/prometheus/client_golang v1.4.0/go.mod h1:e9GMxYsXl05ICDXkRhurwBS4Q3OK1iX/F2sw+iXX5zU= +github.com/prometheus/client_model v0.0.0-20180712105110-5c3871d89910/go.mod h1:MbSGuTsp3dbXC40dX6PRTWyKYBIrTGTE9sqQNg2J8bo= +github.com/prometheus/client_model v0.0.0-20190129233127-fd36f4220a90/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/client_model v0.2.0/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/prometheus/common v0.0.0-20180801064454-c7de2306084e/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.0.0-20181113130724-41aa239b4cce/go.mod h1:daVV7qP5qjZbuso7PdcryaAu0sAZbrN9i7WWcTMWvro= +github.com/prometheus/common v0.4.0/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.4.1/go.mod h1:TNfzLD0ON7rHzMJeJkieUDPYmFC7Snx/y86RQel1bk4= +github.com/prometheus/common v0.6.0/go.mod h1:eBmuwkDJBwy6iBfxCBob6t6dR6ENT/y+J+Zk0j9GMYc= +github.com/prometheus/common v0.9.1/go.mod h1:yhUN8i9wzaXS3w1O07YhxHEBxD+W35wd8bs7vj7HSQ4= +github.com/prometheus/procfs v0.0.0-20180725123919-05ee40e3a273/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20181005140218-185b4288413d/go.mod h1:c3At6R/oaqEKCNdg8wHV1ftS6bRYblBhIjjI8uT2IGk= +github.com/prometheus/procfs v0.0.0-20190507164030-5867b95ac084/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.2/go.mod h1:TjEm7ze935MbeOT/UhFTIMYKhuLP4wbCsTZCD3I8kEA= +github.com/prometheus/procfs v0.0.3/go.mod h1:4A/X28fw3Fc593LaREMrKMqOKvUAntwMDaekg4FpcdQ= +github.com/prometheus/procfs v0.0.8/go.mod h1:7Qr8sr6344vo1JqZ6HhLceV9o3AJ1Ff+GxbHq6oeK9A= +github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/r3labs/diff/v2 v2.15.1 h1:EOrVqPUzi+njlumoqJwiS/TgGgmZo83619FNDB9xQUg= +github.com/r3labs/diff/v2 v2.15.1/go.mod h1:I8noH9Fc2fjSaMxqF3G2lhDdC0b+JXCfyx85tWFM9kc= +github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2 h1:dq90+d51/hQRaHEqRAsQ1rE/pC1GUS4sc2rCbbFsAIY= +github.com/rainycape/memcache v0.0.0-20150622160815-1031fa0ce2f2/go.mod h1:7tZKcyumwBO6qip7RNQ5r77yrssm9bfCowcLEBcU5IA= +github.com/refraction-networking/utls v1.0.0 h1:6XQHSjDmeBCF9sPq8p2zMVGq7Ud3rTD2q88Fw8Tz1tA= +github.com/refraction-networking/utls v1.0.0/go.mod h1:tz9gX959MEFfFN5whTIocCLUG57WiILqtdVxI8c6Wj0= +github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 h1:f/FNXud6gA3MNr8meMVVGxhp+QBTqY91tM8HjEuMjGg= +github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3/go.mod h1:HgjTstvQsPGkxUsCd2KWxErBblirPizecHcpD3ffK+s= +github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= +github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= +github.com/rogpeppe/go-internal v1.3.0/go.mod h1:M8bDsm7K2OlrFYOpmOWEs/qY81heoFRclV5y23lUDJ4= +github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= +github.com/rogpeppe/go-internal v1.8.0/go.mod h1:WmiCO8CzOY8rg0OYDC4/i/2WRWAB6poM+XZ2dLUbcbE= +github.com/rogpeppe/go-internal v1.8.1 h1:geMPLpDpQOgVyCg5z5GoRwLHepNdb71NXb67XFkP+Eg= +github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/russross/blackfriday v1.5.2 h1:HyvC0ARfnZBqnXwABFeSZHpKvJHJJfPz81GNueLj0oo= +github.com/russross/blackfriday v1.5.2/go.mod h1:JO/DiYxRf+HjHt06OyowR9PTA263kcR/rfWxYHBV53g= +github.com/russross/blackfriday/v2 v2.0.1/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/russross/blackfriday/v2 v2.1.0 h1:JIOH55/0cWyOuilr9/qlrm0BSXldqnqwMsf35Ld67mk= +github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= +github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/sacloud/libsacloud v1.36.2 h1:aosI7clbQ9IU0Hj+3rpk3SKJop5nLPpLThnWCivPqjI= +github.com/sacloud/libsacloud v1.36.2/go.mod h1:P7YAOVmnIn3DKHqCZcUKYUXmSwGBm3yS7IBEjKVSrjg= +github.com/sagikazarmark/crypt v0.5.0/go.mod h1:l+nzl7KWh51rpzp2h7t4MZWyiEWdhNpOAnclKvg+mdA= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.7.0.20210127161313-bd30bebeac4f/go.mod h1:CJJ5VAbozOl0yEw7nHB9+7BXTJbIn6h7W+f6Gau5IP8= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9 h1:0roa6gXKgyta64uqh52AQG3wzZXH21unn+ltzQSXML0= +github.com/scaleway/scaleway-sdk-go v1.0.0-beta.9/go.mod h1:fCa7OJZ/9DRTnOKmxvT6pn+LPWUptQAmHF/SBJUGEcg= +github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/seiflotfy/cuckoofilter v0.0.0-20220312154859-af7fbb8e765b h1:wHoB6ZYEnIVizebcj419LbN4Tagk7RDFiudRFKyzzmo= +github.com/seiflotfy/cuckoofilter v0.0.0-20220312154859-af7fbb8e765b/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= +github.com/sergi/go-diff v1.0.0/go.mod h1:0CfEIISq7TuYL3j771MWULgwwjU+GofnZX9QAmXWZgo= +github.com/shirou/gopsutil v3.21.11+incompatible h1:+1+c1VGhc88SSonWP6foOcLhvnKlUeu/erjjvaPEYiI= +github.com/shirou/gopsutil v3.21.11+incompatible/go.mod h1:5b4v6he4MtMOwMlS0TUMTu2PcXUg8+E1lC7eC3UO/RA= +github.com/shurcooL/component v0.0.0-20170202220835-f88ec8f54cc4/go.mod h1:XhFIlyj5a1fBNx5aJTbKoIq0mNaPvOagO+HjB3EtxrY= +github.com/shurcooL/events v0.0.0-20181021180414-410e4ca65f48/go.mod h1:5u70Mqkb5O5cxEA8nxTsgrgLehJeAw6Oc4Ab1c/P1HM= +github.com/shurcooL/github_flavored_markdown v0.0.0-20181002035957-2122de532470/go.mod h1:2dOwnU2uBioM+SGy2aZoq1f/Sd1l9OkAeAUvjSyvgU0= +github.com/shurcooL/go v0.0.0-20180423040247-9e1955d9fb6e/go.mod h1:TDJrrUr11Vxrven61rcy3hJMUqaf/CLWYhHNPmT14Lk= +github.com/shurcooL/go-goon v0.0.0-20170922171312-37c2f522c041/go.mod h1:N5mDOmsrJOB+vfqUK+7DmDyjhSLIIBnXo9lvZJj3MWQ= +github.com/shurcooL/gofontwoff v0.0.0-20180329035133-29b52fc0a18d/go.mod h1:05UtEgK5zq39gLST6uB0cf3NEHjETfB4Fgr3Gx5R9Vw= +github.com/shurcooL/gopherjslib v0.0.0-20160914041154-feb6d3990c2c/go.mod h1:8d3azKNyqcHP1GaQE/c6dDgjkgSx2BZ4IoEi4F1reUI= +github.com/shurcooL/highlight_diff v0.0.0-20170515013008-09bb4053de1b/go.mod h1:ZpfEhSmds4ytuByIcDnOLkTHGUI6KNqRNPDLHDk+mUU= +github.com/shurcooL/highlight_go v0.0.0-20181028180052-98c3abbbae20/go.mod h1:UDKB5a1T23gOMUJrI+uSuH0VRDStOiUVSjBTRDVBVag= +github.com/shurcooL/home v0.0.0-20181020052607-80b7ffcb30f9/go.mod h1:+rgNQw2P9ARFAs37qieuu7ohDNQ3gds9msbT2yn85sg= +github.com/shurcooL/htmlg v0.0.0-20170918183704-d01228ac9e50/go.mod h1:zPn1wHpTIePGnXSHpsVPWEktKXHr6+SS6x/IKRb7cpw= +github.com/shurcooL/httperror v0.0.0-20170206035902-86b7830d14cc/go.mod h1:aYMfkZ6DWSJPJ6c4Wwz3QtW22G7mf/PEgaB9k/ik5+Y= +github.com/shurcooL/httpfs v0.0.0-20171119174359-809beceb2371/go.mod h1:ZY1cvUeJuFPAdZ/B6v7RHavJWZn2YPVFQ1OSXhCGOkg= +github.com/shurcooL/httpgzip v0.0.0-20180522190206-b1c53ac65af9/go.mod h1:919LwcH0M7/W4fcZ0/jy0qGght1GIhqyS/EgWGH2j5Q= +github.com/shurcooL/issues v0.0.0-20181008053335-6292fdc1e191/go.mod h1:e2qWDig5bLteJ4fwvDAc2NHzqFEthkqn7aOZAOpj+PQ= +github.com/shurcooL/issuesapp v0.0.0-20180602232740-048589ce2241/go.mod h1:NPpHK2TI7iSaM0buivtFUc9offApnI0Alt/K8hcHy0I= +github.com/shurcooL/notifications v0.0.0-20181007000457-627ab5aea122/go.mod h1:b5uSkrEVM1jQUspwbixRBhaIjIzL2xazXp6kntxYle0= +github.com/shurcooL/octicon v0.0.0-20181028054416-fa4f57f9efb2/go.mod h1:eWdoE5JD4R5UVWDucdOPg1g2fqQRq78IQa9zlOV1vpQ= +github.com/shurcooL/reactions v0.0.0-20181006231557-f2e0b4ca5b82/go.mod h1:TCR1lToEk4d2s07G3XGfz2QrgHXg4RJBvjrOozvoWfk= +github.com/shurcooL/sanitized_anchor_name v0.0.0-20170918181015-86672fcb3f95/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/shurcooL/users v0.0.0-20180125191416-49c67e49c537/go.mod h1:QJTqeLYEDaXHZDBsXlPCDqdhQuJkuw4NOtaxYe3xii4= +github.com/shurcooL/webdavfs v0.0.0-20170829043945-18c3829fa133/go.mod h1:hKmq5kWdCj2z2KEozexVbfEZIWiTjhE0+UjmZgPqehw= +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.8.1 h1:dJKuHgqk1NNQlqoA6BTlM1Wf9DOH3NBjQyu0h9+AZZE= +github.com/sirupsen/logrus v1.8.1/go.mod h1:yWOB1SBYBC5VeMP7gHvWumXLIWorT60ONWic61uBYv0= +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/assertions v1.0.1 h1:voD4ITNjPL5jjBfgR/r8fPIIBrliWrWHeiJApdr3r4w= +github.com/smartystreets/assertions v1.0.1/go.mod h1:kHHU4qYBaI3q23Pp3VPrmWhuIUrLW/7eUrw0BU5VaoM= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9 h1:hp2CYQUINdZMHdvTdXtPOY2ainKl4IoMcpAXEf2xj3Q= +github.com/smartystreets/go-aws-auth v0.0.0-20180515143844-0c1422d1fdb9/go.mod h1:SnhjPscd9TpLiy1LpzGSKh3bXCfxxXuqd9xmQJy3slM= +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/smartystreets/gunit v1.0.4 h1:tpTjnuH7MLlqhoD21vRoMZbMIi5GmBsAJDFyF67GhZA= +github.com/smartystreets/gunit v1.0.4/go.mod h1:EH5qMBab2UclzXUcpR8b93eHsIlp9u+pDQIRp5DZNzQ= +github.com/softlayer/softlayer-go v1.0.3/go.mod h1:6HepcfAXROz0Rf63krk5hPZyHT6qyx2MNvYyHof7ik4= +github.com/softlayer/softlayer-go v1.0.4 h1:ET/yxkWbEw04pOcHu+nvhuVQg+U0qVaJA8YsUC+Ldwk= +github.com/softlayer/softlayer-go v1.0.4/go.mod h1:6HepcfAXROz0Rf63krk5hPZyHT6qyx2MNvYyHof7ik4= +github.com/softlayer/xmlrpc v0.0.0-20200409220501-5f089df7cb7e h1:3OgWYFw7jxCZPcvAg+4R8A50GZ+CCkARF10lxu2qDsQ= +github.com/softlayer/xmlrpc v0.0.0-20200409220501-5f089df7cb7e/go.mod h1:fKZCUVdirrxrBpwd9wb+lSoVixvpwAu8eHzbQB2tums= +github.com/soheilhy/cmux v0.1.4/go.mod h1:IM3LyeVVIOuxMH7sFAkER9+bJ4dT7Ms6E4xg4kGIyLM= +github.com/sourcegraph/annotate v0.0.0-20160123013949-f4cad6c6324d/go.mod h1:UdhH50NIW0fCiwBSr0co2m7BnFLdv4fQTgdqdJTHFeE= +github.com/sourcegraph/syntaxhighlight v0.0.0-20170531221838-bd320f5d308e/go.mod h1:HuIsMU8RRBOtsCgI77wP899iHVBQpCmg4ErYMZB+2IA= +github.com/spaolacci/murmur3 v0.0.0-20180118202830-f09979ecbc72/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA= +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/afero v1.8.2 h1:xehSyVa0YnHWsJ49JFljMpg1HX19V6NDZ1fkm1Xznbo= +github.com/spf13/afero v1.8.2/go.mod h1:CtAatgMJh6bJEIs48Ay/FOnkljP3WeGUG0MC1RfAqwo= +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/cast v1.4.1 h1:s0hze+J0196ZfEMTs80N7UlFt0BDuQ7Q+JDnHiMWKdA= +github.com/spf13/cast v1.4.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/spf13/cobra v1.1.1/go.mod h1:WnodtKOvamDL/PwE2M4iKs8aMDBZ5Q5klgD3qfVJQMI= +github.com/spf13/jwalterweatherman v1.0.0/go.mod h1:cQK4TGJAtQXfYWX+Ddv3mKDzgVb68N+wFjFa4jdeBTo= +github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= +github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= +github.com/spf13/pflag v1.0.3/go.mod h1:DYY7MBk1bdzusC3SYhjObp+wFpr4gzcvqqNjLnInEg4= +github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= +github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= +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/spf13/viper v1.11.0 h1:7OX/1FS6n7jHD1zGrZTM7WtY13ZELRyosK4k93oPr44= +github.com/spf13/viper v1.11.0/go.mod h1:djo0X/bA5+tYVoCn+C7cAYJGcVn/qYLFTG8gdUsX7Zk= +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 h1:NGXK3lHquSN08v5vWalVI/L8XU9hdzE/G6xsrze47As= +github.com/stretchr/objx v0.3.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= +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/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/stretchr/testify v1.7.1 h1:5TQK59W5E3v0r2duFAb7P95B6hEeOyEnHRa8MjYSMTY= +github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= +github.com/subosito/gotenv v1.2.0 h1:Slr1R9HxAlEKefgq5jn9U+DnETlIUa6HfgEzj0g5d7s= +github.com/subosito/gotenv v1.2.0/go.mod h1:N0PQaV/YGNqwC0u51sEeR/aUtSLEXKX9iv69rRypqCw= +github.com/tarm/serial v0.0.0-20180830185346-98f6abe2eb07/go.mod h1:kDXzergiv9cbyO7IOYJZWg1U88JhDg3PB6klq9Hg2pA= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.287/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.360 h1:5emqU7a/7SXVbeaohycbD/cH9St3tMtZWfQY06ZsRXk= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/common v1.0.360/go.mod h1:7sCQWVkxcsR38nffDW057DRGk8mUjK1Ing/EFOK8s8Y= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.287/go.mod h1:CuOaLxOQr477GhMWAQPYQFUJrsZbW+ZqkAgP2uHDZXg= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.360 h1:2xfs4rh0IquB/Q8Wy8deUdL3KD5TiB/qnrA70JxObVk= +github.com/tencentcloud/tencentcloud-sdk-go/tencentcloud/dnspod v1.0.360/go.mod h1:D6rx3dvCRMW4/CcJxLK8ZIAzhX5l2sN19Zjtp+8bbAk= +github.com/tklauser/go-sysconf v0.3.10 h1:IJ1AZGZRWbY8T5Vfk04D9WOA5WSejdflXxP03OUqALw= +github.com/tklauser/go-sysconf v0.3.10/go.mod h1:C8XykCvCb+Gn0oNCWPIlcb0RuglQTYaQ2hGm7jmxEFk= +github.com/tklauser/numcpus v0.4.0 h1:E53Dm1HjH1/R2/aoCtXtPgzmElmn51aOkhCFSuZq//o= +github.com/tklauser/numcpus v0.4.0/go.mod h1:1+UI3pD8NW14VMwdgJNJ1ESk2UnwhAnz5hMwiKKqXCQ= +github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U= +github.com/transip/gotransip/v6 v6.6.1/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g= +github.com/transip/gotransip/v6 v6.14.0 h1:TOZYH+9W64ZqH2S/7MoPXGcJ3EyBSjBoMUsLMsA59JA= +github.com/transip/gotransip/v6 v6.14.0/go.mod h1:pQZ36hWWRahCUXkFWlx9Hs711gLd8J4qdgLdRzmtY+g= +github.com/tv42/httpunix v0.0.0-20150427012821-b75d8614f926/go.mod h1:9ESjWnEqriFuLhtthL60Sar/7RFoluCcXsuvEwTV5KM= +github.com/uber-go/atomic v1.3.2/go.mod h1:/Ct5t2lcmbJ4OSe/waGBoaVvVqtO0bmtfVNex1PFV8g= +github.com/ugorji/go v1.1.7/go.mod h1:kZn38zHttfInRq0xu/PH0az30d+z6vm202qpg1oXVMw= +github.com/ugorji/go v1.2.6/go.mod h1:anCg0y61KIhDlPZmnH+so+RQbysYVyDko0IMgJv0Nn0= +github.com/ugorji/go/codec v1.1.7/go.mod h1:Ax+UKWsSmolVDwsd+7N3ZtXu+yMGCf907BLYF3GoBXY= +github.com/ugorji/go/codec v1.2.6/go.mod h1:V6TCNZ4PHqoHGFZuSG1W8nrCzzdgA2DozYxWFFpvxTw= +github.com/urfave/cli v1.22.5/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli v1.22.7 h1:aXiFAgRugfJ27UFDsGJ9DB2FvTC73hlVXFSqq5bo9eU= +github.com/urfave/cli v1.22.7/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtXRu0= +github.com/urfave/cli/v2 v2.3.0/go.mod h1:LJmUH05zAU44vOAcrfzZQKsZbVcdbOG8rtL3/XcUArI= +github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e h1:5QefA066A1tF8gHIiADmOVOV5LS43gt3ONnlEl3xkwI= +github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e/go.mod h1:5t19P9LBIrNamL6AcMQOncg/r10y3Pc01AbHeMhwlpU= +github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc= +github.com/valyala/fasttemplate v1.0.1/go.mod h1:UQGH1tvbgY+Nz5t2n7tXsz52dQxojPUpymEIMZ47gx8= +github.com/valyala/fasttemplate v1.2.1/go.mod h1:KHLXt3tVN2HBp8eijSv/kGJopbvo7S+qRAEEKiv+SiQ= +github.com/viant/assertly v0.4.8/go.mod h1:aGifi++jvCrUaklKEKT0BU95igDNaqkvz+49uaYMPRU= +github.com/viant/toolbox v0.24.0/go.mod h1:OxMCG57V0PXuIP2HNQrtJf2CjqdmbrOx5EkMILuUhzM= +github.com/vinyldns/go-vinyldns v0.9.16 h1:GZJStDkcCk1F1AcRc64LuuMh+ENL8pHA0CVd4ulRMcQ= +github.com/vinyldns/go-vinyldns v0.9.16/go.mod h1:5qIJOdmzAnatKjurI+Tl4uTus7GJKJxb+zitufjHs3Q= +github.com/vmihailenco/msgpack v4.0.4+incompatible h1:dSLoQfGFAo3F6OoNhwUmLwVgaUXK79GlxNBwueZn0xI= +github.com/vmihailenco/msgpack v4.0.4+incompatible/go.mod h1:fy3FlTQTDXWkZ7Bh6AcGMlsjHatGryHQYUTf1ShIgkk= +github.com/vultr/govultr/v2 v2.7.1/go.mod h1:BvOhVe6/ZpjwcoL6/unkdQshmbS9VGbowI4QT+3DGVU= +github.com/vultr/govultr/v2 v2.14.1 h1:Z4nd9mXNQ5wd63aw0MZOalFeTkJ8L6Sed3PTqagp4TA= +github.com/vultr/govultr/v2 v2.14.1/go.mod h1:JjUljQdSZx+MELCAJvZ/JH32bJotmflnsyS0NOjb8Jg= +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/xiang90/probing v0.0.0-20190116061207-43a291ad63a2/go.mod h1:UETIi67q53MR2AWcXfiuqkDkRtnGDLqkBTpCHuJHxtU= +github.com/xtls/go v0.0.0-20210920065950-d4af136d3672 h1:4mkzGhKqt3JO1BWYjtD3iRFyAx4ow67hmSqOcGjuxqQ= +github.com/xtls/go v0.0.0-20210920065950-d4af136d3672/go.mod h1:YGGVbz9cOxyKFUmhW7LGaLZaMA0cPlHJinvAmVxEMSU= +github.com/xtls/xray-core v1.5.4 h1:H39w1koIERL/C3C1k8/T7XQShZTp1esBbBx13aoGLwk= +github.com/xtls/xray-core v1.5.4/go.mod h1:HHh/sA3XieWSHNTRtoKEB8kCJJSiD4S9TkfS7VNO/ZQ= +github.com/yuin/goldmark v1.1.25/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.1.32/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yusufpapurcu/wmi v1.2.2 h1:KBNDSne4vP5mbSWnJbO+51IMOXJB67QiYCSBrubbPRg= +github.com/yusufpapurcu/wmi v1.2.2/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.etcd.io/bbolt v1.3.2/go.mod h1:IbVyRI1SCnLcuJnV2u8VeU0CEYM7e686BmAb1XKL+uU= +go.etcd.io/etcd/api/v3 v3.5.2/go.mod h1:5GB2vv4A4AOn3yk7MftYGHkUfGtDHnEraIjym4dYz5A= +go.etcd.io/etcd/client/pkg/v3 v3.5.2/go.mod h1:IJHfcCEKxYu1Os13ZdwCwIUTUVGYTSAM3YSwc9/Ac1g= +go.etcd.io/etcd/client/v2 v2.305.2/go.mod h1:2D7ZejHVMIfog1221iLSYlQRzrtECw3kz4I4VAQm3qI= +go.opencensus.io v0.18.0/go.mod h1:vKdFvxhtzZ9onBp9VKHK8z/sRpBMnKAsufL7wlDrCOA= +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/go.mod h1:yxeiOL68Rb0Xd1ddK5vPZ/oVn4vY4Ynel7k9FzqtOIw= +go.opencensus.io v0.22.5/go.mod h1:5pWMHQbX5EPX2/62yrJeAkowc+lfs/XD7Uxpq3pI6kk= +go.opencensus.io v0.23.0 h1:gqCw0LfLxScz8irSi8exQc7fyQ0fKQU/qnC/X8+V/1M= +go.opencensus.io v0.23.0/go.mod h1:XItmlyltB5F7CS4xOC1DcqMoFqwtC6OG2xF7mCv7P7E= +go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= +go.starlark.net v0.0.0-20220302181546-5411bad688d1 h1:i0Sz4b+qJi5xwOaFZqZ+RNHkIpaKLDofei/Glt+PMNc= +go.starlark.net v0.0.0-20220302181546-5411bad688d1/go.mod h1:t3mmBBPzAVvK0L0n1drDmrQsJ8FoIx4INCqVMTr/Zo0= +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.7.0 h1:ADUqmZGgLDDfbSL9ZmPxKTybcoEYHgpYfELNoN+7hsw= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/ratelimit v0.0.0-20180316092928-c15da0234277/go.mod h1:2X8KaoNd1J0lZV+PxJk/5+DGbO/tpwLR1m++a7FnB/Y= +go.uber.org/ratelimit v0.2.0 h1:UQE2Bgi7p2B85uP5dC2bbRtig0C+OeNRnNEafLjsLPA= +go.uber.org/ratelimit v0.2.0/go.mod h1:YYBV4e4naJvhpitQrWJu1vCpgB7CboMe0qhltKt6mUg= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.17.0/go.mod h1:MXVU+bhUf/A7Xi2HNOnopQOrmycQ5Ih87HtOu4q5SSo= +go4.org v0.0.0-20180809161055-417644f6feb5/go.mod h1:MkTOUMDaeVYJUOUsaDXIhWPZYa1yOyC1qaOBpL57BhE= +golang.org/x/arch v0.0.0-20180920145803-b19384d3c130/go.mod h1:cYlCBUl1MsqxdiKgmc4uh7TxZfWSFLOGSRR090WDxt8= +golang.org/x/build v0.0.0-20190111050920-041ab4dc3f9d/go.mod h1:OWs+y06UdEOHN4y+MfF/py+xQ/tYqIWW03b70/CG9Rw= +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-20181030102418-4d3f4d9ffa16/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-20190313024323-a1f597ede03a/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +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-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200221231518-2aa609cf4a9d/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201002170205-7f63de1d35b0/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201016220609-9e8e0b390897/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201217014255-9d1352758620/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20201221181555-eec23a3978ad/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210220033148-5ea612d1eb83/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210421170649-83a5a9bb288b/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-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210711020723-a769d52b0f97/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210817164053-32db794688a5/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211108221036-ceb1ce70b4fa/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.0.0-20211202192323-5770296d904e/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20211215153901-e495a2d5b3d3/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220312131142-6068a2e6cfdc/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4 h1:kUhD7nTDoI3fVd9G4ORWrbV5NY0liEs/Jg2pv5f+bBA= +golang.org/x/crypto v0.0.0-20220411220226-7b82a4e95df4/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= +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= +golang.org/x/exp v0.0.0-20190829153037-c13cbed26979/go.mod h1:86+5VVa7VpoJ4kLfm080zCjGlMRFzhUhsZKEZO7MGek= +golang.org/x/exp v0.0.0-20191030013958-a1ab85dbe136/go.mod h1:JXzH8nQsPlswgeRAPE3MuO9GYsAcnJvJ4vnMwN/5qkY= +golang.org/x/exp v0.0.0-20191129062945-2f5052295587/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20191227195350-da58074b4299/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200119233911-0405dc783f0a/go.mod h1:2RIsYlXP63K8oxa1u096TMicItID8zy7Y6sNkU49FU4= +golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EHIKF9dgMWnmCNThgcyBT1FY9mM= +golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= +golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= +golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/lint v0.0.0-20180702182130-06c8688daad7/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190227174305-5b3e6a55c961/go.mod h1:wehouNa3lNwaWXcvxsM5YxQ5yQlVC4a0KAMCusXpPoU= +golang.org/x/lint v0.0.0-20190301231843-5614ed5bae6f/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= +golang.org/x/lint v0.0.0-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190409202823-959b441ac422/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190909230951-414d861bb4ac/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +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/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20201208152925-83fdc39ff7b5/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= +golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/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= +golang.org/x/mod v0.0.0-20190513183733-4bf6d317e70e/go.mod h1:mXi4GBBbnImb6dmsKGUJ2LatrhH/nqhxcFungHvyanc= +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.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.5.1 h1:OJxoQ/rynoF0dcCdI7cLPktw/hR2cueqYfjm43oqK38= +golang.org/x/mod v0.5.1/go.mod h1:5OXOZSfqPIIbmVBIIKWRFfZjPR0E5r58TLhUjH0a2Ro= +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-20181023162649-9b4f9f5ad519/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181029044818-c44066c5c816/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20181106065722-10aee1819953/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= +golang.org/x/net v0.0.0-20181220203305-927f97764cc3/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= +golang.org/x/net v0.0.0-20190108225652-1e06a53dbb7e/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-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190313220215-9f648a60d977/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= +golang.org/x/net v0.0.0-20190503192946-f4e77d36d62c/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190603091049-60506f45cf65/go.mod h1:HSz+uSET+XFnRR8LxR5pz3Of3rY3CfYBVs4xY44aLks= +golang.org/x/net v0.0.0-20190613194153-d28f0bde5980/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190628185345-da137c7871d7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190724013045-ca1201d0de80/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20191209160850-c0dbc17a3553/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200114155413-6afb5195e5aa/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20200202094626-16171245cfb2/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +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-20200324143707-d3edc9973b7e/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200501053045-e0ff5e5a1de5/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200506145744-7e3656a0809f/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200513185701-a91f0712d120/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200520182314-0ba52f642ac2/go.mod h1:qpuaurCH72eLCgpAm/N6yyVIVM9cpaDIP3A8BGJEC5A= +golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200707034311-ab3426394381/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20200822124328-c89045814202/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA= +golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20201031054903-ff519b6c9102/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-20201209123823-ac852fbbde11/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20201224014010-6772e930b67b/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210119194325-5f4716e94777/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= +golang.org/x/net v0.0.0-20210316092652-d523dce5a7f4/go.mod h1:RBQZq4jEuRlivfhVLdyRGr576XBO4/greRjx4P4O3yc= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= +golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= +golang.org/x/net v0.0.0-20210503060351-7fd8e65b6420/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210510120150-4163338589ed/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210726213435-c6fcb2dbf985/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20210913180222-943fd674d43e/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211029224645-99673261e6eb/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220325170049-de3da57026de/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5 h1:bRb386wvrE+oBNdF1d/Xh9mQrfQ4ecYhW5qJ5GvTGT4= +golang.org/x/net v0.0.0-20220412020605-290c469a71a5/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181017192945-9dcd33a902f4/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +golang.org/x/oauth2 v0.0.0-20181203162652-d668ce993890/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/oauth2 v0.0.0-20200902213428-5d25da1a8d43/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201109201403-9fd604954f58/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20201208152858-08078c50e5b5/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210218202405-ba52d332ba99/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210220000619-9bb904979d93/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210313182246-cd4f82c27b84/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210628180205-a41e5a781914/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210805134026-6f1e6394065a/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20210819190943-2bc19b11175f/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211005180243-6b3c2da341f1/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20211104180415-d3ed0bb246c8/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= +golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5 h1:OSnWWcOd/CtWQC2cYSBgbTSJv3ciqd8r54ySIW2y3RE= +golang.org/x/oauth2 v0.0.0-20220411215720-9780585627b5/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= +golang.org/x/perf v0.0.0-20180704124530-6e6d33e29852/go.mod h1:JLpeXjPJfIyPr5TlbXLkXWLhP8nz10XfvxElABhCtcw= +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-20200625203802-6e8e738ad208/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-20201207232520-09787c993a3a/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c h1:5KslGYwFpkhGh+Q16bwMP3cOontH8FOep7tGV86Y7SQ= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +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= +golang.org/x/sys v0.0.0-20180903190138-2b024373dcd9/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181026203630-95b1ffbd15a5/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20181029174526-d69651ed3497/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +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-20190215142949-d0b11bdaac8a/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-20190312061237-fead79001313/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190316082340-a2f829d7f35f/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-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-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-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/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= +golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191026070338-33540a1f6037/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191204072324-ce4227a45e2e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20191228213918-04cbcbbfeed8/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200113162924-86b910548bc1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200116001909-b77594299b42/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200122134326-e047566fdf82/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200124204421-9fbb57f87de9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200202164722-d101bd2416d5/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200212091648-12a6c2dcc1e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200223170610-d5e6a3e2c0ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200302150141-5c8b2ff67527/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200331124033-c3d80250170d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200501052902-10377860bb8e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200511232937-7e40ca221e25/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200515095857-1151b9dac4a9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200519105757-fe76b779f299/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200523222454-059865788121/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200803210538-64077c9b5642/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200826173525-f9321e4c35a6/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200905004654-be1d3432aa8f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200909081042-eff7692f9009/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200918174421-af09f7315aff/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201110211018-35f3e6cf4a65/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201201145000-ef89a241ccb3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210104204734-6f8348627aad/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210119212857-b64e53b001e4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210220050731-9a76102bfb43/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210225134936-a50acf3fe073/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210305230114-8fe3ee5dd75b/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210315160823-c6e025ad8005/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210320140829-1e4c9ba3b0c4/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210403161142-5e06dd20ab57/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423185535-09eb48e85fd7/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210514084401-e8d321eab015/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210603125802-9665404d3644/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210823070655-63515b42dcdf/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210908233432-aa78b53d3365/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211007075335-d3039528d8ac/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211019181941-9d821ace8654/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211103235746-7861aae1554b/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211124211545-fe61309f8881/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211210111614-af8b64212486/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220128215802-99c3d69c2c27/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220209214540-3681064d5158/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220227234510-4e6760a101f9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220328115105-d36c6a25d886/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad h1:ntjMns5wyP/fN65tdBD4g8J5w8n015+iIIs9rtjXkY0= +golang.org/x/sys v0.0.0-20220412211240-33da011f77ad/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +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/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= +golang.org/x/text v0.3.2/go.mod h1:bEr9sfX3Q8Zfm5fL9x+3itogRgK3+ptLWKqgva+5dAk= +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.5/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.7 h1:olpwvP2KacW1ZWvsR7uQhoyTYvKAupfQrRGBFM352Gk= +golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/time v0.0.0-20180412165947-fbb02b2291d2/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +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= +golang.org/x/time v0.0.0-20201208040808-7e3f01d25324/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210220033141-f8bda1e9f3ba/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20210611083556-38a9dc6acbc6/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.0.0-20220224211638-0e9765cccd65 h1:M73Iuj3xbbb9Uk1DYhzydthsj6oOd6l9bpuFcNoUvTs= +golang.org/x/time v0.0.0-20220224211638-0e9765cccd65/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +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-20181030000716-a0a13e073c7b/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= +golang.org/x/tools v0.0.0-20190312151545-0bb0c0a6e846/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190312170243-e65039ee4138/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190328211700-ab21143f2384/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= +golang.org/x/tools v0.0.0-20190425150028-36563e24a262/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190506145303-2d16b83fe98c/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190606124116-d0a3d012864b/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190621195816-6e04913cbbac/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190628153133-6cdbf07be9d0/go.mod h1:/rFqwRUd4F7ZHNgwSSTFct+R/Kf4OFW1sUzUTQQTgfc= +golang.org/x/tools v0.0.0-20190816200558-6889da9d5479/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/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-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= +golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191125144606-a911d9008d1f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191130070609-6e064ea0cf2d/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191216173652-a0e659d51361/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20191227053925-7b8e75db28f4/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200117161641-43d50277825c/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200122220014-bf1340f18c4a/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200130002326-2f3ba24bd6e7/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200204074204-1cc6d1ef6c74/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200207183749-b753a1ba74fa/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200212150539-ea181f53ac56/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200224181240-023911ca70b2/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.0.0-20200227222343-706bc42d1f0d/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-20200312045724-11d5b4c81c7d/go.mod h1:o4KQGtdN14AW+yjsvvwRTJJuXz8XRtIHtEnmAXLyFUw= +golang.org/x/tools v0.0.0-20200331025713-a30bf2db82d4/go.mod h1:Sl4aGygMT6LrqrWclx+PTx3U+LnKx/seiNR+3G19Ar8= +golang.org/x/tools v0.0.0-20200410194907-79a7a3126eef/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200501065659-ab2804fb9c9d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200509030707-2212a7e161a5/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200512131952-2bc93b1c0c88/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200515010526-7d3b6ebf133d/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200618134242-20370b0cb4b2/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20200729194436-6467de6f59a7/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200804011535-6c149bb5ef0d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200825202427-b303f430e36d/go.mod h1:njjCfa9FT2d7l9Bc6FUM5FLjQPp3cFF28FI3qnDFljA= +golang.org/x/tools v0.0.0-20200904185747-39188db58858/go.mod h1:Cj7w3i3Rnn0Xh82ur9kSqwfTHTeVxaDqrfMjpcNT6bE= +golang.org/x/tools v0.0.0-20200917221617-d56e4e40bc9d/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20200918232735-d647fc253266/go.mod h1:z6u4i615ZeAfBE4XtMziQW1fSVJXACjjbWkB/mvPzlU= +golang.org/x/tools v0.0.0-20201110124207-079ba7bd75cd/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201201161351-ac6f37ff4c2a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201208233053-a543418bbed2/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.0.0-20210114065538-d78b04bdf963/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= +golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.3/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.4/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.6-0.20210726203631-07bc1bf47fb2/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.1.9 h1:j9KsMiaP1c3B0OTQGth0/k+miLGTgLsAFUCrF2vLcF8= +golang.org/x/tools v0.1.9/go.mod h1:nABZi5QlRsZVlzPpHl034qft6wpY4eDcsTt5AaioBiU= +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/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f h1:GGU+dLjvlC3qDwqYgL6UgRmHXhOOgns0bZu2Ty5mm6U= +golang.org/x/xerrors v0.0.0-20220411194840-2f41105eb62f/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +google.golang.org/api v0.0.0-20180910000450-7ca32eb868bf/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.0.0-20181030000543-1d582fd0359e/go.mod h1:4mhQ8q/RsB7i+udVvVy5NUi08OU8ZlA0gRVgrF7VFY0= +google.golang.org/api v0.1.0/go.mod h1:UGEZY7KEX120AnNLIHFMKIo4obdJhkp2tPbaPlQx13Y= +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= +google.golang.org/api v0.8.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.9.0/go.mod h1:o4eAsZoiT+ibD93RtjEohWalFOjRDx6CVaqeizhEnKg= +google.golang.org/api v0.13.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.14.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.15.0/go.mod h1:iLdEw5Ide6rF15KTC1Kkl0iskquN2gFfn9o9XIsbkAI= +google.golang.org/api v0.17.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.18.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.19.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.20.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.22.0/go.mod h1:BwFmGc8tA3vsd7r/7kR8DY7iEEGSU04BFxCo5jP/sfE= +google.golang.org/api v0.24.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.28.0/go.mod h1:lIXQywCXRcnZPGlsd8NbLnOjtAoL6em04bJ9+z0MncE= +google.golang.org/api v0.29.0/go.mod h1:Lcubydp8VUV7KeIHD9z2Bys/sm/vGKnG1UHuDBSrHWM= +google.golang.org/api v0.30.0/go.mod h1:QGmEvQ87FHZNiUVJkT14jQNYJ4ZJjdRF23ZXz5138Fc= +google.golang.org/api v0.35.0/go.mod h1:/XrVsuzM0rZmrsbjJutiuftIzeuTQcEeaYcSk/mQ1dg= +google.golang.org/api v0.36.0/go.mod h1:+z5ficQTmoYpPn8LCUNVpK5I7hwkpjbcgqA7I34qYtE= +google.golang.org/api v0.40.0/go.mod h1:fYKFpnQN0DsDSKRVRcQSDQNtqWPfM9i+zNPxepjRCQ8= +google.golang.org/api v0.41.0/go.mod h1:RkxM5lITDfTzmyKFPt+wGrCJbVfniCr2ool8kTBzRTU= +google.golang.org/api v0.43.0/go.mod h1:nQsDGjRXMo4lvh5hP0TKqF244gqhGcr/YSIykhUk/94= +google.golang.org/api v0.47.0/go.mod h1:Wbvgpq1HddcWVtzsVLyfLp8lDg6AA241LmgIL59tHXo= +google.golang.org/api v0.48.0/go.mod h1:71Pr1vy+TAZRPkPs/xlCf5SsU8WjuAWv1Pfjbtukyy4= +google.golang.org/api v0.50.0/go.mod h1:4bNT5pAuq5ji4SRZm+5QIkjny9JAyVD/3gaSihNefaw= +google.golang.org/api v0.51.0/go.mod h1:t4HdrdoNgyN5cbEfm7Lum0lcLDLiise1F8qDKX00sOU= +google.golang.org/api v0.54.0/go.mod h1:7C4bFFOvVDGXjfDTAsgGwDgAxRDeQ4X8NvUedIt6z3k= +google.golang.org/api v0.55.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.56.0/go.mod h1:38yMfeP1kfjsl8isn0tliTjIb1rJXcQi4UXlbqivdVE= +google.golang.org/api v0.57.0/go.mod h1:dVPlbZyBo2/OjBpmvNdpn2GRm6rPy75jyU7bmhdrMgI= +google.golang.org/api v0.59.0/go.mod h1:sT2boj7M9YJxZzgeZqXogmhfmRWDtPzT31xkieUbuZU= +google.golang.org/api v0.61.0/go.mod h1:xQRti5UdCmoCEqFxcz93fTl338AVqDgyaDRuOZ3hg9I= +google.golang.org/api v0.63.0/go.mod h1:gs4ij2ffTRXwuzzgJl/56BdwJaA194ijkfn++9tDuPo= +google.golang.org/api v0.67.0/go.mod h1:ShHKP8E60yPsKNw/w8w+VYaj9H6buA5UqDp8dhbQZ6g= +google.golang.org/api v0.70.0/go.mod h1:Bs4ZM2HGifEvXwd50TtW70ovgJffJYw2oRCOFU/SkfA= +google.golang.org/api v0.71.0/go.mod h1:4PyU6e6JogV1f9eA4voyrTY2batOLdgZ5qZ5HOCc4j8= +google.golang.org/api v0.74.0 h1:ExR2D+5TYIrMphWgs5JCgwRhEDlPDXXrLwHHMgPHTXE= +google.golang.org/api v0.74.0/go.mod h1:ZpfMZOVRMywNyvJFeqL9HRWBgAuRfSjJFpe9QtRRyDs= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.2.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.3.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +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/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= +google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20180831171423-11092d34479b/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181029155118-b69ba1387ce2/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20181202183823-bd91e49a0898/go.mod h1:7Ep/1NZk928CDR8SjdVbjWNpdIf6nzjE3BTgJDr2Atg= +google.golang.org/genproto v0.0.0-20190306203927-b5d61aea6440/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +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= +google.golang.org/genproto v0.0.0-20190425155659-357c62f0e4bb/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190502173448-54afdca5d873/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= +google.golang.org/genproto v0.0.0-20190801165951-fa694d86fc64/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20190911173649-1774047e7e51/go.mod h1:IbNlFCBrqXvoKpeg0TB2l7cyZUmoaFKYIwrEpbDKLA8= +google.golang.org/genproto v0.0.0-20191108220845-16a3f7862a1a/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191115194625-c23dd37a84c9/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191216164720-4f79533eabd1/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20191230161307-f3c370f40bfb/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200115191322-ca5a22157cba/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200122232147-0452cf42e150/go.mod h1:n3cpQtvxv34hfy77yVDNjmbRyujviMdxYliBSkLhpCc= +google.golang.org/genproto v0.0.0-20200204135345-fa8e72b47b90/go.mod h1:GmwEX6Z4W5gMy59cAlVYjN9JhxgbQH6Gn+gFDQe2lzA= +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-20200228133532-8c2c7df3a383/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200305110556-506484158171/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200312145019-da6875a35672/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200331122359-1ee6d9798940/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200430143042-b979b6f78d84/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200511104702-f5ebc3bea380/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200513103714-09dca8ec2884/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto v0.0.0-20200515170657-fc4c6c6a6587/go.mod h1:YsZOwe1myG/8QRHRsmBRE1LrgQY60beZKjly0O1fX9U= +google.golang.org/genproto v0.0.0-20200526211855-cb27e3aa2013/go.mod h1:NbSheEEYHJ7i3ixzK3sjbqSGDJWnxyFXZblF3eUsNvo= +google.golang.org/genproto v0.0.0-20200618031413-b414f8b61790/go.mod h1:jDfRM7FcilCzHH/e9qn6dsT145K34l5v+OpcnNgKAAA= +google.golang.org/genproto v0.0.0-20200729003335-053ba62fc06f/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200804131852-c06518451d9c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200825200019-8632dd797987/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20200904004341-0bd0a958aa1d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201109203340-2640f1f9cdfb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201201144952-b05cb90ed32e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201210142538-e3217bee35cc/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20201214200347-8c77b98c765d/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210108203827-ffc7fda8c3d7/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210222152913-aa3ee6e6a81c/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210226172003-ab064af71705/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210303154014-9728d6b83eeb/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210310155132-4ce2db91004e/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210319143718-93e7006c17a6/go.mod h1:FWY/as6DDZQgahTzZj3fqbO1CbirC29ZNUFHwi0/+no= +google.golang.org/genproto v0.0.0-20210402141018-6c239bbf2bb1/go.mod h1:9lPAdzaEmUacj36I+k7YKbEc5CXzPIeORRgDAUOu28A= +google.golang.org/genproto v0.0.0-20210513213006-bf773b8c8384/go.mod h1:P3QM42oQyzQSnHPnZ/vqoCdDmzH28fzWByN9asMeM8A= +google.golang.org/genproto v0.0.0-20210602131652-f16073e35f0c/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210604141403-392c879c8b08/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210608205507-b6d2f5bf0d7d/go.mod h1:UODoCrxHCcBojKKwX1terBiRUaqAsFqJiF615XL43r0= +google.golang.org/genproto v0.0.0-20210624195500-8bfb893ecb84/go.mod h1:SzzZ/N+nwJDaO1kznhnlzqS8ocJICar6hYhVyhi++24= +google.golang.org/genproto v0.0.0-20210713002101-d411969a0d9a/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210716133855-ce7ef5c701ea/go.mod h1:AxrInvYm1dci+enl5hChSFPOmmUF1+uAa/UsgNRWd7k= +google.golang.org/genproto v0.0.0-20210728212813-7823e685a01f/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210805201207-89edb61ffb67/go.mod h1:ob2IJxKrgPT52GcgX759i1sleT07tiKowYBGbczaW48= +google.golang.org/genproto v0.0.0-20210813162853-db860fec028c/go.mod h1:cFeNkxwySK631ADgubI+/XFU/xp8FD5KIVV4rj8UC5w= +google.golang.org/genproto v0.0.0-20210821163610-241b8fcbd6c8/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210828152312-66f60bf46e71/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210831024726-fe130286e0e2/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210903162649-d08c68adba83/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210909211513-a8c4777a87af/go.mod h1:eFjDcFEctNawg4eG61bRv87N7iHBWyVhJu7u1kqDUXY= +google.golang.org/genproto v0.0.0-20210924002016-3dee208752a0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211008145708-270636b82663/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211028162531-8db9c33dc351/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211118181313-81c1377c94b1/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211206160659-862468c7d6e0/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211208223120-3a66f561d7aa/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20211221195035-429b39de9b1c/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220126215142-9970aeb2e350/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220207164111-0872dc986b00/go.mod h1:5CzLGKJ67TSI2B9POpiiyGha0AjJvZIUgRMt1dSmuhc= +google.golang.org/genproto v0.0.0-20220218161850-94dd64e39d7c/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220222213610-43724f9ea8cf/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220304144024-325a89244dc8/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220310185008-1973136f34c6/go.mod h1:kGP+zUP2Ddo0ayMi4YuN7C3WZyJvGLZRh8Z5wnAqvEI= +google.golang.org/genproto v0.0.0-20220324131243-acbaeb5b85eb/go.mod h1:hAL49I2IFola2sVEjAn7MEwsja0xp51I0tlGAf9hz4E= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac h1:qSNTkEN+L2mvWcLgJOR+8bdHX9rN/IdU3A1Ghpfb1Rg= +google.golang.org/genproto v0.0.0-20220407144326-9054f6ed7bac/go.mod h1:8w6bsBMX6yCPbAVTeqQHvzxW0EIFigd5lZyahWgyfDo= +google.golang.org/grpc v1.14.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= +google.golang.org/grpc v1.16.0/go.mod h1:0JHn/cJsOMiMfNA9+DeHDlAU7KAAB5GDlYFpa9MZMio= +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.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.0/go.mod h1:rpkK4SK4GF4Ach/+MFLZUBavHOvF2JJB5uozKKal+60= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.30.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.0/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.31.1/go.mod h1:N36X2cJ7JwdamYAgDz+s+rVMFjt3numwzf/HckM8pak= +google.golang.org/grpc v1.33.1/go.mod h1:fr5YgcSWrqhRRxogOsw7RzIpsmvOZ6IcH4kBYTpR3n0= +google.golang.org/grpc v1.33.2/go.mod h1:JMHMWHQWaTccqQQlmk3MJZS+GWXOdAesneDmEnv2fbc= +google.golang.org/grpc v1.34.0/go.mod h1:WotjhfgOW/POjDeRt8vscBtXq+2VjORFy659qA51WJ8= +google.golang.org/grpc v1.35.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.0/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.36.1/go.mod h1:qjiiYl8FncCW8feJPdyg3v6XW24KsRHe+dy9BAGRRjU= +google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.37.1/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.39.0/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.39.1/go.mod h1:PImNr+rS9TWYb2O4/emRugxiyHZ5JyHW5F+RPnDzfrE= +google.golang.org/grpc v1.40.0/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.40.1/go.mod h1:ogyxbiOoUXAkP+4+xa6PZSE9DZgIHtSpzjDTB9KAK34= +google.golang.org/grpc v1.44.0/go.mod h1:k+4IHHFw41K8+bbowsex27ge2rCb65oeWqe4jJ590SU= +google.golang.org/grpc v1.45.0 h1:NEpgUqV3Z+ZjkqMsxMg11IaDrXY4RY6CQukSGK0uI1M= +google.golang.org/grpc v1.45.0/go.mod h1:lN7owxKUQEqMfSyQikvvk5tf/6zMPsrK+ONuO11+0rQ= +google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +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= +google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miEFZTKqfCUM6K7xSMQL9OKL/b6hQv+e19PK+JZNE= +google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= +google.golang.org/protobuf v1.22.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.23.1-0.20200526195155-81db48ad09cc/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.24.0/go.mod h1:r/3tXBNzIEhYS9I1OUVjXDlt8tc493IdKGjtUeSXeh4= +google.golang.org/protobuf v1.25.0/go.mod h1:9JNX74DMeImyA3h4bdi1ymwjUzf21/xIlbajtzgsN7c= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.27.1/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= +google.golang.org/protobuf v1.28.0 h1:w43yiav+6bVFTBQFZX0r7ipe9JQ1QsbMgHwbBziscLw= +google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= +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/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= +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 h1:SzLqcIlb/fDfg7UvukMpNcWsu7sI5tWwL+KCATZqks0= +gopkg.in/h2non/gock.v1 v1.0.15/go.mod h1:sX4zAkdYX1TRGJ2JY156cFspQn4yRWn6p9EMdODlynE= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= +gopkg.in/ini.v1 v1.42.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.51.1/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.57.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.62.0/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.2/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ini.v1 v1.66.4 h1:SsAcf+mM7mRZo2nJNGt8mZCjG8ZRaNGMURJw7BsIST4= +gopkg.in/ini.v1 v1.66.4/go.mod h1:pNLf8WUiyNEtQjuu5G5vTm06TEv9tsIgeAvK8hOrP4k= +gopkg.in/ns1/ns1-go.v2 v2.6.2/go.mod h1:GMnKY+ZuoJ+lVLL+78uSTjwTz2jMazq6AfGKQOYhsPk= +gopkg.in/ns1/ns1-go.v2 v2.6.3 h1:VqMsosssl8WQrN5aWSK+jx4UjHiKPjAkyOJycdiZMZo= +gopkg.in/ns1/ns1-go.v2 v2.6.3/go.mod h1:GMnKY+ZuoJ+lVLL+78uSTjwTz2jMazq6AfGKQOYhsPk= +gopkg.in/resty.v1 v1.12.0/go.mod h1:mDo4pnntr5jdWRML875a/NmxYqAlA73dVijT2AXvQQo= +gopkg.in/square/go-jose.v2 v2.6.0 h1:NGk74WTnPKBNUhNzQX7PYcTLUjoq7mzKk2OKbvwk2iI= +gopkg.in/square/go-jose.v2 v2.6.0/go.mod h1:M9dMgbHiYLoDGQrXy7OpJDJWiKiU//h+vD76mk0e1AI= +gopkg.in/src-d/go-billy.v4 v4.3.0/go.mod h1:tm33zBoOwxjYHZIE+OV8bxTWFMJLrconzFMd38aARFk= +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= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.3/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.5/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-20200605160147-a5ece683394c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b h1:h8qDotaEPuJATrMmW04NCwg7v22aHH28wwpauUhK9Oo= +gopkg.in/yaml.v3 v3.0.0-20210107192922-496545a6307b/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +grpc.go4.org v0.0.0-20170609214715-11d0a25b4919/go.mod h1:77eQGdRu53HpSqPFJFmuJdjuHRquDANNeA4x7B8WQ9o= +h12.io/socks v1.0.3/go.mod h1:AIhxy1jOId/XCz9BO+EIgNL2rQiPTBNnOfnVnQ+3Eck= +honnef.co/go/tools v0.0.0-20180728063816-88497007e858/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190106161140-3f1c8253044a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190418001031-e561f6794a2a/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +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.4/go.mod h1:X/FiERA/W4tHapMX5mGpAtMSVEeEUOyHaw9vFzvIQ3k= +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= +rsc.io/sampler v1.3.0/go.mod h1:T1hPZKmBbMNahiBKFy5HrXp6adAjACjK9JXDnKaTXpA= +software.sslmate.com/src/go-pkcs12 v0.0.0-20210415151418-c5206de65a78/go.mod h1:B7Wf0Ya4DHF9Yw+qfZuJijQYkWicqDa+79Ytmmq3Kjg= +sourcegraph.com/sourcegraph/go-diff v0.5.0/go.mod h1:kuch7UrkMzY0X+p9CRK03kfuPQ2zzQcaEFbx8wA8rck= +sourcegraph.com/sqs/pbtypes v0.0.0-20180604144634-d3ebe8f20ae4/go.mod h1:ketZ/q3QxT9HOBeFhu6RdvsftgpsbFHBF5Cas6cDKZ0= diff --git a/main/config.yml.example b/main/config.yml.example new file mode 100644 index 0000000..2a58e84 --- /dev/null +++ b/main/config.yml.example @@ -0,0 +1,80 @@ +Log: + Level: warning # Log level: none, error, warning, info, debug + AccessPath: # /etc/XrayR/access.Log + ErrorPath: # /etc/XrayR/error.log +DnsConfigPath: # /etc/XrayR/dns.json # Path to dns config, check https://xtls.github.io/config/dns.html for help +RouteConfigPath: # /etc/XrayR/route.json # Path to route config, check https://xtls.github.io/config/routing.html for help +InboundConfigPath: # /etc/XrayR/custom_inbound.json # Path to custom inbound config, check https://xtls.github.io/config/inbound.html for help +OutboundConfigPath: # /etc/XrayR/custom_outbound.json # Path to custom outbound config, check https://xtls.github.io/config/outbound.html for help +ConnetionConfig: + Handshake: 4 # Handshake time limit, Second + ConnIdle: 30 # Connection idle time limit, Second + UplinkOnly: 2 # Time limit when the connection downstream is closed, Second + DownlinkOnly: 4 # Time limit when the connection is closed after the uplink is closed, Second + BufferSize: 64 # The internal cache size of each connection, kB +Nodes: + - + PanelType: "SSpanel" # Panel type: SSpanel, V2board, PMpanel, , Proxypanel + ApiConfig: + ApiHost: "http://127.0.0.1:667" + ApiKey: "123" + NodeID: 41 + NodeType: V2ray # Node type: V2ray, Shadowsocks, Trojan, Shadowsocks-Plugin + Timeout: 30 # Timeout for the api request + EnableVless: false # Enable Vless for V2ray Type + EnableXTLS: false # Enable XTLS for V2ray and Trojan + SpeedLimit: 0 # Mbps, Local settings will replace remote settings, 0 means disable + DeviceLimit: 0 # Local settings will replace remote settings, 0 means disable + RuleListPath: # /etc/XrayR/rulelist Path to local rulelist file + ControllerConfig: + ListenIP: 0.0.0.0 # IP address you want to listen + SendIP: 0.0.0.0 # IP address you want to send pacakage + UpdatePeriodic: 60 # Time to update the nodeinfo, how many sec. + EnableDNS: false # Use custom DNS config, Please ensure that you set the dns.json well + DNSType: AsIs # AsIs, UseIP, UseIPv4, UseIPv6, DNS strategy + EnableProxyProtocol: false # Only works for WebSocket and TCP + EnableFallback: false # Only support for Trojan and Vless + FallBackConfigs: # Support multiple fallbacks + - + SNI: # TLS SNI(Server Name Indication), Empty for any + Alpn: # Alpn, Empty for any + Path: # HTTP PATH, Empty for any + Dest: 80 # Required, Destination of fallback, check https://xtls.github.io/config/features/fallback.html for details. + ProxyProtocolVer: 0 # Send PROXY protocol version, 0 for dsable + CertConfig: + CertMode: dns # Option about how to get certificate: none, file, http, dns. Choose "none" will forcedly disable the tls config. + CertDomain: "node1.test.com" # Domain to cert + CertFile: /etc/XrayR/cert/node1.test.com.cert # Provided if the CertMode is file + KeyFile: /etc/XrayR/cert/node1.test.com.key + Provider: alidns # DNS cert provider, Get the full support list here: https://go-acme.github.io/lego/dns/ + Email: test@me.com + DNSEnv: # DNS ENV option used by DNS provider + ALICLOUD_ACCESS_KEY: aaa + ALICLOUD_SECRET_KEY: bbb + # - + # PanelType: "V2board" # Panel type: SSpanel, V2board + # ApiConfig: + # ApiHost: "http://127.0.0.1:668" + # ApiKey: "123" + # NodeID: 4 + # NodeType: Shadowsocks # Node type: V2ray, Shadowsocks, Trojan + # Timeout: 30 # Timeout for the api request + # EnableVless: false # Enable Vless for V2ray Type + # EnableXTLS: false # Enable XTLS for V2ray and Trojan + # SpeedLimit: 0 # Mbps, Local settings will replace remote settings + # DeviceLimit: 0 # Local settings will replace remote settings + # ControllerConfig: + # ListenIP: 0.0.0.0 # IP address you want to listen + # UpdatePeriodic: 10 # Time to update the nodeinfo, how many sec. + # EnableDNS: false # Use custom DNS config, Please ensure that you set the dns.json well + # CertConfig: + # CertMode: dns # Option about how to get certificate: none, file, http, dns + # CertDomain: "node1.test.com" # Domain to cert + # CertFile: /etc/XrayR/cert/node1.test.com.cert # Provided if the CertMode is file + # KeyFile: /etc/XrayR/cert/node1.test.com.pem + # Provider: alidns # DNS cert provider, Get the full support list here: https://go-acme.github.io/lego/dns/ + # Email: test@me.com + # DNSEnv: # DNS ENV option used by DNS provider + # ALICLOUD_ACCESS_KEY: aaa + # ALICLOUD_SECRET_KEY: bbb + diff --git a/main/custom_inbound.json b/main/custom_inbound.json new file mode 100644 index 0000000..e7c8b54 --- /dev/null +++ b/main/custom_inbound.json @@ -0,0 +1,19 @@ +[ + { + "listen": "0.0.0.0", + "port": 1234, + "protocol": "socks", + "settings": { + "auth": "noauth", + "accounts": [ + { + "user": "my-username", + "pass": "my-password" + } + ], + "udp": false, + "ip": "127.0.0.1", + "userLevel": 0 + } + } +] \ No newline at end of file diff --git a/main/custom_outbound.json b/main/custom_outbound.json new file mode 100644 index 0000000..76b33f6 --- /dev/null +++ b/main/custom_outbound.json @@ -0,0 +1,17 @@ +[ + { + "tag": "IPv4_out", + "protocol": "freedom" + }, + { + "tag": "IPv6_out", + "protocol": "freedom", + "settings": { + "domainStrategy": "UseIPv6" + } + }, + { + "protocol": "blackhole", + "tag": "block" + } +] \ No newline at end of file diff --git a/main/distro/all/all.go b/main/distro/all/all.go new file mode 100644 index 0000000..c289ed3 --- /dev/null +++ b/main/distro/all/all.go @@ -0,0 +1,70 @@ +package all + +import ( + // The following are necessary as they register handlers in their init functions. + + // Required features. Can't remove unless there is replacements. + // _ "github.com/xtls/xray-core/app/dispatcher" + _ "github.com/xtls/xray-core/app/proxyman/inbound" + _ "github.com/xtls/xray-core/app/proxyman/outbound" + + // Default commander and all its services. This is an optional feature. + _ "github.com/xtls/xray-core/app/commander" + _ "github.com/xtls/xray-core/app/log/command" + _ "github.com/xtls/xray-core/app/proxyman/command" + _ "github.com/xtls/xray-core/app/stats/command" + + // Other optional features. + _ "github.com/xtls/xray-core/app/dns" + _ "github.com/xtls/xray-core/app/log" + _ "github.com/xtls/xray-core/app/policy" + _ "github.com/xtls/xray-core/app/reverse" + _ "github.com/xtls/xray-core/app/router" + _ "github.com/xtls/xray-core/app/stats" + + // Inbound and outbound proxies. + _ "github.com/xtls/xray-core/proxy/blackhole" + _ "github.com/xtls/xray-core/proxy/dns" + _ "github.com/xtls/xray-core/proxy/dokodemo" + _ "github.com/xtls/xray-core/proxy/freedom" + _ "github.com/xtls/xray-core/proxy/http" + _ "github.com/xtls/xray-core/proxy/mtproto" + _ "github.com/xtls/xray-core/proxy/shadowsocks" + _ "github.com/xtls/xray-core/proxy/socks" + _ "github.com/xtls/xray-core/proxy/trojan" + _ "github.com/xtls/xray-core/proxy/vless/inbound" + _ "github.com/xtls/xray-core/proxy/vless/outbound" + _ "github.com/xtls/xray-core/proxy/vmess/inbound" + _ "github.com/xtls/xray-core/proxy/vmess/outbound" + + // Transports + _ "github.com/xtls/xray-core/transport/internet/domainsocket" + _ "github.com/xtls/xray-core/transport/internet/http" + _ "github.com/xtls/xray-core/transport/internet/kcp" + _ "github.com/xtls/xray-core/transport/internet/quic" + _ "github.com/xtls/xray-core/transport/internet/tcp" + _ "github.com/xtls/xray-core/transport/internet/tls" + _ "github.com/xtls/xray-core/transport/internet/udp" + _ "github.com/xtls/xray-core/transport/internet/websocket" + _ "github.com/xtls/xray-core/transport/internet/xtls" + + // Transport headers + _ "github.com/xtls/xray-core/transport/internet/headers/http" + _ "github.com/xtls/xray-core/transport/internet/headers/noop" + _ "github.com/xtls/xray-core/transport/internet/headers/srtp" + _ "github.com/xtls/xray-core/transport/internet/headers/tls" + _ "github.com/xtls/xray-core/transport/internet/headers/utp" + _ "github.com/xtls/xray-core/transport/internet/headers/wechat" + _ "github.com/xtls/xray-core/transport/internet/headers/wireguard" + + // JSON & TOML & YAML + _ "github.com/xtls/xray-core/main/json" + _ "github.com/xtls/xray-core/main/toml" + _ "github.com/xtls/xray-core/main/yaml" + + // Load config from file or http(s) + _ "github.com/xtls/xray-core/main/confloader/external" + + // Commands + _ "github.com/xtls/xray-core/main/commands/all" +) diff --git a/main/dns.json b/main/dns.json new file mode 100644 index 0000000..27f1b61 --- /dev/null +++ b/main/dns.json @@ -0,0 +1,8 @@ +{ + "servers": [ + "1.1.1.1", + "8.8.8.8", + "localhost" + ], + "tag": "dns_inbound" +} \ No newline at end of file diff --git a/main/geoip.dat b/main/geoip.dat new file mode 100644 index 0000000000000000000000000000000000000000..e49c70876ce9a644fc3e0049918a0e14d16d6a53 GIT binary patch literal 5213751 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

aoMTGvVYVKMOFMM&{n8%GEoXF8aIVS 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

kVNE9VjX%`h*@{E=}m)iTj%{ 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

To3G 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

n$m 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�X?EXVEzZ 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

7!`7aK1j$avce& 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

HRF%f;jk+@Ha=wy>hzmrAo6cL>&qSHj(X(IP2 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 z

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