From 12cf54cef2a013555702781e994c93cbb59538d7 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 15 Dec 2024 09:13:48 +0330 Subject: [PATCH 01/38] refactor: refactor all codes, add grpc and use interface --- .env.example | 12 +- .github/workflows/release.yml | 165 ++ .github/workflows/run-tests.yml | 34 + .gitignore | 1 - Dockerfile | 14 +- Makefile | 52 + backend/backend.go | 23 + backend/config.go | 9 + backend/core.go | 7 + backend/handler.go | 13 + .../types => backend/xray/api}/account.go | 16 +- {xray_api => backend/xray/api}/base.go | 14 +- .../types => backend/xray/api}/message.go | 4 +- {xray_api => backend/xray/api}/proxyman.go | 29 +- {xray_api => backend/xray/api}/stats.go | 86 +- {xray => backend/xray}/config.go | 35 +- backend/xray/config.json | 104 ++ backend/xray/core.go | 180 ++ backend/xray/log.go | 56 + backend/xray/user.go | 197 +++ backend/xray/xray.go | 225 +++ backend/xray/xray_test.go | 88 + common/service.pb.go | 1278 ++++++++++++++ common/service.proto | 125 ++ common/service_grpc.pb.go | 585 +++++++ config/config.go | 24 +- controller/controller.go | 155 ++ controller/rest/base.go | 85 + service/log_api.go => controller/rest/log.go | 26 +- {service => controller/rest}/middleware.go | 29 +- controller/rest/rest_test.go | 333 ++++ controller/rest/service.go | 148 ++ controller/rest/stats.go | 70 + controller/rest/user.go | 68 + controller/rpc/base.go | 47 + controller/rpc/log.go | 29 + controller/rpc/middleware.go | 252 +++ controller/rpc/rpc_test.go | 289 ++++ controller/rpc/service.go | 89 + controller/rpc/stats.go | 31 + controller/rpc/user.go | 19 + go.mod | 33 +- go.sum | 249 ++- logger/logger.go | 150 +- main.go | 97 +- node_test.go | 134 -- service/base_api.go | 209 --- service/main.go | 12 - service/models.go | 251 --- service/stats_api.go | 114 -- service/user_api.go | 128 -- tools/certificate.go | 24 +- tools/current_time.go | 41 - tools/sys.go | 25 +- tools/tls.go | 35 + xray/core.go | 216 --- xray/user.go | 157 -- xray_api/proto/app/commander/config.pb.go | 232 --- xray_api/proto/app/dispatcher/config.pb.go | 204 --- xray_api/proto/app/dns/config.pb.go | 781 --------- xray_api/proto/app/dns/fakedns/fakedns.pb.go | 224 --- xray_api/proto/app/log/command/config.pb.go | 253 --- .../proto/app/log/command/config_grpc.pb.go | 109 -- xray_api/proto/app/log/config.pb.go | 268 --- xray_api/proto/app/metrics/config.pb.go | 149 -- .../proto/app/observatory/burst/config.pb.go | 276 --- .../app/observatory/command/command.pb.go | 278 --- .../observatory/command/command_grpc.pb.go | 109 -- xray_api/proto/app/observatory/config.pb.go | 654 ------- xray_api/proto/app/policy/config.pb.go | 724 -------- .../proto/app/proxyman/command/command.pb.go | 1060 ------------ .../app/proxyman/command/command_grpc.pb.go | 294 ---- xray_api/proto/app/proxyman/config.pb.go | 1111 ------------ xray_api/proto/app/reverse/config.pb.go | 433 ----- .../proto/app/router/command/command.pb.go | 1274 -------------- .../app/router/command/command_grpc.pb.go | 322 ---- xray_api/proto/app/router/config.pb.go | 1508 ----------------- .../proto/app/stats/command/command.pb.go | 715 -------- .../app/stats/command/command_grpc.pb.go | 183 -- xray_api/proto/app/stats/config.pb.go | 219 --- xray_api/proto/common/log/log.pb.go | 143 -- xray_api/proto/common/net/address.pb.go | 191 --- xray_api/proto/common/net/destination.pb.go | 180 -- xray_api/proto/common/net/network.pb.go | 214 --- xray_api/proto/common/net/port.pb.go | 224 --- xray_api/proto/common/protocol/headers.pb.go | 219 --- .../proto/common/protocol/server_spec.pb.go | 181 -- xray_api/proto/common/protocol/user.pb.go | 177 -- .../proto/common/serial/typed_message.pb.go | 161 -- xray_api/proto/compile.go | 215 --- xray_api/proto/core/config.pb.go | 435 ----- xray_api/proto/proxy/blackhole/config.pb.go | 260 --- xray_api/proto/proxy/dns/config.pb.go | 175 -- xray_api/proto/proxy/dokodemo/config.pb.go | 232 --- xray_api/proto/proxy/freedom/config.pb.go | 483 ------ xray_api/proto/proxy/http/config.pb.go | 417 ----- xray_api/proto/proxy/loopback/config.pb.go | 149 -- xray_api/proto/proxy/shadowsocks/config.pb.go | 395 ----- .../proto/proxy/shadowsocks_2022/config.pb.go | 691 -------- xray_api/proto/proxy/socks/config.pb.go | 483 ------ xray_api/proto/proxy/trojan/config.pb.go | 407 ----- xray_api/proto/proxy/vless/account.pb.go | 169 -- .../proto/proxy/vless/encoding/addons.pb.go | 159 -- .../proto/proxy/vless/inbound/config.pb.go | 290 ---- .../proto/proxy/vless/outbound/config.pb.go | 157 -- xray_api/proto/proxy/vmess/account.pb.go | 179 -- .../proto/proxy/vmess/inbound/config.pb.go | 307 ---- .../proto/proxy/vmess/outbound/config.pb.go | 158 -- xray_api/proto/proxy/wireguard/config.pb.go | 402 ----- xray_api/proto/transport/global/config.pb.go | 162 -- .../proto/transport/internet/config.pb.go | 876 ---------- .../internet/domainsocket/config.pb.go | 180 -- .../transport/internet/grpc/config.pb.go | 221 --- .../internet/grpc/encoding/stream.pb.go | 229 --- .../internet/grpc/encoding/stream_grpc.pb.go | 210 --- .../internet/headers/dns/config.pb.go | 153 -- .../internet/headers/http/config.pb.go | 649 ------- .../internet/headers/noop/config.pb.go | 195 --- .../internet/headers/srtp/config.pb.go | 203 --- .../internet/headers/tls/config.pb.go | 143 -- .../internet/headers/utp/config.pb.go | 153 -- .../internet/headers/wechat/config.pb.go | 144 -- .../internet/headers/wireguard/config.pb.go | 145 -- .../transport/internet/http/config.pb.go | 209 --- .../internet/httpupgrade/config.pb.go | 201 --- .../proto/transport/internet/kcp/config.pb.go | 768 --------- .../transport/internet/quic/config.pb.go | 184 -- .../transport/internet/reality/config.pb.go | 310 ---- .../transport/internet/splithttp/config.pb.go | 202 --- .../proto/transport/internet/tcp/config.pb.go | 171 -- .../proto/transport/internet/tls/config.pb.go | 521 ------ .../proto/transport/internet/udp/config.pb.go | 140 -- .../transport/internet/websocket/config.pb.go | 200 --- 133 files changed, 5278 insertions(+), 27445 deletions(-) create mode 100644 .github/workflows/release.yml create mode 100644 .github/workflows/run-tests.yml create mode 100644 Makefile create mode 100644 backend/backend.go create mode 100644 backend/config.go create mode 100644 backend/core.go create mode 100644 backend/handler.go rename {xray_api/types => backend/xray/api}/account.go (82%) rename {xray_api => backend/xray/api}/base.go (74%) rename {xray_api/types => backend/xray/api}/message.go (83%) rename {xray_api => backend/xray/api}/proxyman.go (58%) rename {xray_api => backend/xray/api}/stats.go (64%) rename {xray => backend/xray}/config.go (82%) create mode 100644 backend/xray/config.json create mode 100644 backend/xray/core.go create mode 100644 backend/xray/log.go create mode 100644 backend/xray/user.go create mode 100644 backend/xray/xray.go create mode 100644 backend/xray/xray_test.go create mode 100644 common/service.pb.go create mode 100644 common/service.proto create mode 100644 common/service_grpc.pb.go create mode 100644 controller/controller.go create mode 100644 controller/rest/base.go rename service/log_api.go => controller/rest/log.go (75%) rename {service => controller/rest}/middleware.go (66%) create mode 100644 controller/rest/rest_test.go create mode 100644 controller/rest/service.go create mode 100644 controller/rest/stats.go create mode 100644 controller/rest/user.go create mode 100644 controller/rpc/base.go create mode 100644 controller/rpc/log.go create mode 100644 controller/rpc/middleware.go create mode 100644 controller/rpc/rpc_test.go create mode 100644 controller/rpc/service.go create mode 100644 controller/rpc/stats.go create mode 100644 controller/rpc/user.go delete mode 100644 node_test.go delete mode 100644 service/base_api.go delete mode 100644 service/main.go delete mode 100644 service/models.go delete mode 100644 service/stats_api.go delete mode 100644 service/user_api.go delete mode 100644 tools/current_time.go create mode 100644 tools/tls.go delete mode 100644 xray/core.go delete mode 100644 xray/user.go delete mode 100644 xray_api/proto/app/commander/config.pb.go delete mode 100644 xray_api/proto/app/dispatcher/config.pb.go delete mode 100644 xray_api/proto/app/dns/config.pb.go delete mode 100644 xray_api/proto/app/dns/fakedns/fakedns.pb.go delete mode 100644 xray_api/proto/app/log/command/config.pb.go delete mode 100644 xray_api/proto/app/log/command/config_grpc.pb.go delete mode 100644 xray_api/proto/app/log/config.pb.go delete mode 100644 xray_api/proto/app/metrics/config.pb.go delete mode 100644 xray_api/proto/app/observatory/burst/config.pb.go delete mode 100644 xray_api/proto/app/observatory/command/command.pb.go delete mode 100644 xray_api/proto/app/observatory/command/command_grpc.pb.go delete mode 100644 xray_api/proto/app/observatory/config.pb.go delete mode 100644 xray_api/proto/app/policy/config.pb.go delete mode 100644 xray_api/proto/app/proxyman/command/command.pb.go delete mode 100644 xray_api/proto/app/proxyman/command/command_grpc.pb.go delete mode 100644 xray_api/proto/app/proxyman/config.pb.go delete mode 100644 xray_api/proto/app/reverse/config.pb.go delete mode 100644 xray_api/proto/app/router/command/command.pb.go delete mode 100644 xray_api/proto/app/router/command/command_grpc.pb.go delete mode 100644 xray_api/proto/app/router/config.pb.go delete mode 100644 xray_api/proto/app/stats/command/command.pb.go delete mode 100644 xray_api/proto/app/stats/command/command_grpc.pb.go delete mode 100644 xray_api/proto/app/stats/config.pb.go delete mode 100644 xray_api/proto/common/log/log.pb.go delete mode 100644 xray_api/proto/common/net/address.pb.go delete mode 100644 xray_api/proto/common/net/destination.pb.go delete mode 100644 xray_api/proto/common/net/network.pb.go delete mode 100644 xray_api/proto/common/net/port.pb.go delete mode 100644 xray_api/proto/common/protocol/headers.pb.go delete mode 100644 xray_api/proto/common/protocol/server_spec.pb.go delete mode 100644 xray_api/proto/common/protocol/user.pb.go delete mode 100644 xray_api/proto/common/serial/typed_message.pb.go delete mode 100644 xray_api/proto/compile.go delete mode 100644 xray_api/proto/core/config.pb.go delete mode 100644 xray_api/proto/proxy/blackhole/config.pb.go delete mode 100644 xray_api/proto/proxy/dns/config.pb.go delete mode 100644 xray_api/proto/proxy/dokodemo/config.pb.go delete mode 100644 xray_api/proto/proxy/freedom/config.pb.go delete mode 100644 xray_api/proto/proxy/http/config.pb.go delete mode 100644 xray_api/proto/proxy/loopback/config.pb.go delete mode 100644 xray_api/proto/proxy/shadowsocks/config.pb.go delete mode 100644 xray_api/proto/proxy/shadowsocks_2022/config.pb.go delete mode 100644 xray_api/proto/proxy/socks/config.pb.go delete mode 100644 xray_api/proto/proxy/trojan/config.pb.go delete mode 100644 xray_api/proto/proxy/vless/account.pb.go delete mode 100644 xray_api/proto/proxy/vless/encoding/addons.pb.go delete mode 100644 xray_api/proto/proxy/vless/inbound/config.pb.go delete mode 100644 xray_api/proto/proxy/vless/outbound/config.pb.go delete mode 100644 xray_api/proto/proxy/vmess/account.pb.go delete mode 100644 xray_api/proto/proxy/vmess/inbound/config.pb.go delete mode 100644 xray_api/proto/proxy/vmess/outbound/config.pb.go delete mode 100644 xray_api/proto/proxy/wireguard/config.pb.go delete mode 100644 xray_api/proto/transport/global/config.pb.go delete mode 100644 xray_api/proto/transport/internet/config.pb.go delete mode 100644 xray_api/proto/transport/internet/domainsocket/config.pb.go delete mode 100644 xray_api/proto/transport/internet/grpc/config.pb.go delete mode 100644 xray_api/proto/transport/internet/grpc/encoding/stream.pb.go delete mode 100644 xray_api/proto/transport/internet/grpc/encoding/stream_grpc.pb.go delete mode 100644 xray_api/proto/transport/internet/headers/dns/config.pb.go delete mode 100644 xray_api/proto/transport/internet/headers/http/config.pb.go delete mode 100644 xray_api/proto/transport/internet/headers/noop/config.pb.go delete mode 100644 xray_api/proto/transport/internet/headers/srtp/config.pb.go delete mode 100644 xray_api/proto/transport/internet/headers/tls/config.pb.go delete mode 100644 xray_api/proto/transport/internet/headers/utp/config.pb.go delete mode 100644 xray_api/proto/transport/internet/headers/wechat/config.pb.go delete mode 100644 xray_api/proto/transport/internet/headers/wireguard/config.pb.go delete mode 100644 xray_api/proto/transport/internet/http/config.pb.go delete mode 100644 xray_api/proto/transport/internet/httpupgrade/config.pb.go delete mode 100644 xray_api/proto/transport/internet/kcp/config.pb.go delete mode 100644 xray_api/proto/transport/internet/quic/config.pb.go delete mode 100644 xray_api/proto/transport/internet/reality/config.pb.go delete mode 100644 xray_api/proto/transport/internet/splithttp/config.pb.go delete mode 100644 xray_api/proto/transport/internet/tcp/config.pb.go delete mode 100644 xray_api/proto/transport/internet/tls/config.pb.go delete mode 100644 xray_api/proto/transport/internet/udp/config.pb.go delete mode 100644 xray_api/proto/transport/internet/websocket/config.pb.go diff --git a/.env.example b/.env.example index 3089f79..21e91d2 100644 --- a/.env.example +++ b/.env.example @@ -2,20 +2,20 @@ SERVICE_PORT = 62050 XRAY_API_PORT = 62051 NODE_HOST = "0.0.0.0" +# use absolute path + # XRAY_EXECUTABLE_PATH = /usr/local/bin/xray # XRAY_ASSETS_PATH = /usr/local/share/xray - SSL_CERT_FILE = /var/lib/marzban-node/ssl_cert.pem SSL_KEY_FILE = /var/lib/marzban-node/ssl_key.pem SSL_CLIENT_CERT_FILE = /var/lib/marzban-node/ssl_client_cert.pem +SSL_CLIENT_KEY_FILE = /var/lib/marzban-node/ssl_client_key.pem -### can be rest or rpyc -# go version only support rest protocol -# SERVICE_PROTOCOL = rpyc +### can be rest or grpc +# SERVICE_PROTOCOL = grpc # MAX_LOG_PER_REQUEST = 1000 ### for developers # DEBUG = false -# works only when debug is true -# GENERATED_CONFIG_PATH = /var/lib/marzban-node/generated_config-debug.json \ No newline at end of file +# GENERATED_CONFIG_PATH = /var/lib/marzban-node/generated diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml new file mode 100644 index 0000000..72c3ff9 --- /dev/null +++ b/.github/workflows/release.yml @@ -0,0 +1,165 @@ +name: Create Release + +on: + push: + tags: + - "v*.*.*" + +jobs: + create_release: + permissions: + contents: write + + runs-on: ubuntu-latest + outputs: + upload_url: ${{steps.create_release_before.outputs.upload_url}} + steps: + - name: Create Release + id: create_release_before + uses: actions/create-release@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + tag_name: ${{ github.ref_name }} + release_name: ${{ github.ref_name }} + draft: false + prerelease: false + + build: + needs: create_release + permissions: + contents: write + strategy: + matrix: + # Include amd64 on all platforms. + goos: [ windows, freebsd, openbsd, linux, darwin ] + goarch: [ amd64, 386 ] + gotoolchain: [ "" ] + patch-assetname: [ "" ] + + exclude: + # Exclude i386 on darwin + - goarch: 386 + goos: darwin + include: + # BEGIN 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 + # Windows ARM + - goos: windows + goarch: arm64 + - goos: windows + goarch: arm + goarm: 7 + # BEGIN Other architectures + # BEGIN riscv64 & ARM64 & LOONG64 + - goos: linux + goarch: arm64 + - goos: linux + goarch: riscv64 + - goos: linux + goarch: loong64 + # END riscv64 & ARM64 & LOONG64 + # 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 + # BEGIN OPENBSD ARM + - goos: openbsd + goarch: arm64 + - goos: openbsd + goarch: arm + goarm: 7 + # END OPENBSD ARM + 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@v4 + + - name: Show workflow information + run: | + _GOARM="${GOARM:-""}" + if [ -n "$_GOARM" ]; then + _NAME="${GOOS}-${GOARCH}-${_GOARM}" + else + _NAME="${GOOS}-${GOARCH}" + fi + echo "ASSET_NAME=$_NAME" >> $GITHUB_ENV + echo "BINARY_NAME=marzban_node-${_NAME}" >> $GITHUB_ENV + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: ${{ matrix.gotoolchain || '1.23.4' }} + check-latest: true + + - name: Get project dependencies + run: go mod download + + - name: Build binary + run: | + mkdir -p dist + make + find . -type f -name "marzban_node*" -exec mv {} "./marzban_node-${{ env.ASSET_NAME }}" \; + # Create zip file + zip "./marzban_node-${{ env.ASSET_NAME }}.zip" "./marzban_node-${{ env.ASSET_NAME }}" + + - name: Upload binaries to Artifacts + uses: actions/upload-artifact@v4 + with: + name: marzban_node-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.goarm || '' }} + path: marzban_node-${{ env.ASSET_NAME }}* + + - name: Upload Release Asset + id: upload-release-asset + uses: actions/upload-release-asset@v1 + env: + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} + with: + upload_url: ${{ needs.create_release.outputs.upload_url }} + asset_path: ./marzban_node-${{ env.ASSET_NAME }}.zip + asset_name: marzban_node-${{ env.ASSET_NAME }}.zip + asset_content_type: application/zip diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml new file mode 100644 index 0000000..60e0341 --- /dev/null +++ b/.github/workflows/run-tests.yml @@ -0,0 +1,34 @@ +name: Test Modules + +on: + push: + branches: + - '*' + pull_request: + branches: + - '*' + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout codebase + uses: actions/checkout@v4 + + - name: Set up Go + uses: actions/setup-go@v5 + with: + go-version: ${{ matrix.gotoolchain || '1.23.4' }} + check-latest: true + + - name: Get project dependencies + run: go mod download + + - name: Create certificate + run: | + make generate_server_cert + make generate_client_cert + + - name: Run tests + run: make test diff --git a/.gitignore b/.gitignore index 00b4e93..fb8bb44 100644 --- a/.gitignore +++ b/.gitignore @@ -7,7 +7,6 @@ *.dll *.so *.dylib -*xray.json # Test binary, built with `go test -c` *.test diff --git a/Dockerfile b/Dockerfile index 0bdaddd..72c9ebf 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.23 as builder +FROM golang:1.23.2 as builder WORKDIR /app COPY go.mod . @@ -6,17 +6,19 @@ COPY go.sum . RUN go mod download COPY . . -RUN go build -o main . +COPY . . +ARG TARGETOS +ARG TARGETARCH +RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o main -ldflags="-w -s" . -FROM ubuntu:latest +FROM alpine:latest RUN mkdir /app WORKDIR /app COPY --from=builder /app/main . -RUN apt-get update \ - && apt-get install -y curl unzip \ - && rm -rf /var/lib/apt/lists/* \ +RUN apk update \ + && apk add --no-cache curl bash \ && bash -c "$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)" ENTRYPOINT ["./main", "serve"] diff --git a/Makefile b/Makefile new file mode 100644 index 0000000..333e052 --- /dev/null +++ b/Makefile @@ -0,0 +1,52 @@ +NAME = marzban_node-$(GOOS)-$(GOARCH) + +LDFLAGS = -s -w -buildid= +PARAMS = -trimpath -ldflags "$(LDFLAGS)" -v +MAIN = ./main.go +PREFIX ?= $(shell go env GOPATH) + +ifeq ($(GOOS),windows) +OUTPUT = $(NAME).exe +ADDITION = go build -o w$(NAME).exe -trimpath -ldflags "-H windowsgui $(LDFLAGS)" -v $(MAIN) +else +OUTPUT = $(NAME) +endif + +ifeq ($(shell echo "$(GOARCH)" | grep -Eq "(mips|mipsle)" && echo true),true) +ADDITION = GOMIPS=softfloat go build -o $(NAME)_softfloat -trimpath -ldflags "$(LDFLAGS)" -v $(MAIN) +endif + +.PHONY: clean build + +build: + go build -o $(OUTPUT) $(PARAMS) $(MAIN) + $(ADDITION) + +clean: + go clean -v -i $(PWD) + rm -f $(NAME)-* w$(NAME)-*.exe + +generate_grpc_code: + protoc \ + --go_out=. \ + --go_opt=paths=source_relative \ + --go-grpc_out=. \ + --go-grpc_opt=paths=source_relative \ + common/service.proto + +generate_server_cert: + openssl req -x509 -newkey rsa:4096 -keyout /var/lib/marzban-node/ssl_key.pem \ + -out /var/lib/marzban-node/ssl_cert.pem -days 36500 -nodes -subj "/CN=Gozargah" + +generate_client_cert: + openssl req -x509 -newkey rsa:4096 -keyout /var/lib/marzban-node/ssl_client_key.pem \ + -out /var/lib/marzban-node/ssl_client_cert.pem -days 36500 -nodes -subj "/CN=Gozargah" + +test-integration: + TEST_INTEGRATION=true go test ./... -v + +test: + TEST_INTEGRATION=false go test ./... -v + +serve: + go run main.go serve \ No newline at end of file diff --git a/backend/backend.go b/backend/backend.go new file mode 100644 index 0000000..b2d3f6d --- /dev/null +++ b/backend/backend.go @@ -0,0 +1,23 @@ +package backend + +import ( + "context" + "github.com/m03ed/marzban-node-go/common" +) + +type Backend interface { + Started() bool + GetVersion() string + GetLogs() chan string + Restart() error + Shutdown() + GenerateConfigFile() error + AddUser(context.Context, *common.User) error + UpdateUser(context.Context, *common.User) error + RemoveUser(context.Context, string) + GetSysStats(context.Context) (*common.BackendStatsResponse, error) + GetUsersStats(context.Context, bool) (*common.StatResponse, error) + GetStatOnline(context.Context, string) (*common.OnlineStatResponse, error) + GetOutboundsStats(context.Context, bool) (*common.StatResponse, error) + GetInboundsStats(context.Context, bool) (*common.StatResponse, error) +} diff --git a/backend/config.go b/backend/config.go new file mode 100644 index 0000000..91068a5 --- /dev/null +++ b/backend/config.go @@ -0,0 +1,9 @@ +package backend + +type Config interface { + ToJSON() (string, error) + ApplyAPI(int) error + RemoveLogFiles() (string, string) +} + +type ConfigKey struct{} diff --git a/backend/core.go b/backend/core.go new file mode 100644 index 0000000..e4355f1 --- /dev/null +++ b/backend/core.go @@ -0,0 +1,7 @@ +package backend + +type Core interface { + GetVersion() string + Started() bool + GetLogs() chan string +} diff --git a/backend/handler.go b/backend/handler.go new file mode 100644 index 0000000..d4e45b9 --- /dev/null +++ b/backend/handler.go @@ -0,0 +1,13 @@ +package backend + +import ( + "context" + "github.com/m03ed/marzban-node-go/common" +) + +type Handler interface { + GetSysStats(context.Context) (*common.BackendStatsResponse, error) + GetUsersStats(context.Context, bool) (*common.StatResponse, error) + GetOutboundsStats(context.Context, bool) (*common.StatResponse, error) + GetInboundsStats(context.Context, bool) (*common.StatResponse, error) +} diff --git a/xray_api/types/account.go b/backend/xray/api/account.go similarity index 82% rename from xray_api/types/account.go rename to backend/xray/api/account.go index 86dad6f..2d48db1 100644 --- a/xray_api/types/account.go +++ b/backend/xray/api/account.go @@ -1,13 +1,13 @@ -package types +package api import ( "github.com/google/uuid" - "marzban-node/xray_api/proto/common/serial" - "marzban-node/xray_api/proto/proxy/shadowsocks" - "marzban-node/xray_api/proto/proxy/shadowsocks_2022" - "marzban-node/xray_api/proto/proxy/trojan" - "marzban-node/xray_api/proto/proxy/vless" - "marzban-node/xray_api/proto/proxy/vmess" + "github.com/xtls/xray-core/common/serial" + "github.com/xtls/xray-core/proxy/shadowsocks" + "github.com/xtls/xray-core/proxy/shadowsocks_2022" + "github.com/xtls/xray-core/proxy/trojan" + "github.com/xtls/xray-core/proxy/vless" + "github.com/xtls/xray-core/proxy/vmess" ) type Account interface { @@ -84,7 +84,7 @@ type Shadowsocks2022Account struct { } func (sa *Shadowsocks2022Account) Message() (*serial.TypedMessage, error) { - return ToTypedMessage(&shadowsocks_2022.User{Key: sa.Key, Email: sa.Email}) + return ToTypedMessage(&shadowsocks_2022.Account{Key: sa.Key}) } type ProxySettings struct { diff --git a/xray_api/base.go b/backend/xray/api/base.go similarity index 74% rename from xray_api/base.go rename to backend/xray/api/base.go index 792b502..7615fc1 100644 --- a/xray_api/base.go +++ b/backend/xray/api/base.go @@ -1,21 +1,21 @@ -package xray_api +package api import ( "fmt" + "github.com/xtls/xray-core/app/proxyman/command" + statsService "github.com/xtls/xray-core/app/stats/command" "google.golang.org/grpc" "google.golang.org/grpc/credentials/insecure" - "marzban-node/xray_api/proto/app/proxyman/command" - statsService "marzban-node/xray_api/proto/app/stats/command" ) -type XrayAPI struct { +type XrayHandler struct { HandlerServiceClient *command.HandlerServiceClient StatsServiceClient *statsService.StatsServiceClient GrpcClient *grpc.ClientConn } -func NewXrayAPI(apiPort int) (*XrayAPI, error) { - x := &XrayAPI{} +func NewXrayAPI(apiPort int) (*XrayHandler, error) { + x := &XrayHandler{} var err error x.GrpcClient, err = grpc.NewClient(fmt.Sprintf("127.0.0.1:%v", apiPort), grpc.WithTransportCredentials(insecure.NewCredentials())) @@ -32,7 +32,7 @@ func NewXrayAPI(apiPort int) (*XrayAPI, error) { return x, nil } -func (x *XrayAPI) Close() { +func (x *XrayHandler) Close() { if x.GrpcClient != nil { x.GrpcClient.Close() } diff --git a/xray_api/types/message.go b/backend/xray/api/message.go similarity index 83% rename from xray_api/types/message.go rename to backend/xray/api/message.go index aafd5ab..57ad15c 100644 --- a/xray_api/types/message.go +++ b/backend/xray/api/message.go @@ -1,9 +1,9 @@ -package types +package api import ( "google.golang.org/protobuf/proto" - "marzban-node/xray_api/proto/common/serial" + "github.com/xtls/xray-core/common/serial" ) func ToTypedMessage(account proto.Message) (*serial.TypedMessage, error) { diff --git a/xray_api/proxyman.go b/backend/xray/api/proxyman.go similarity index 58% rename from xray_api/proxyman.go rename to backend/xray/api/proxyman.go index 3203023..4e75cc6 100644 --- a/xray_api/proxyman.go +++ b/backend/xray/api/proxyman.go @@ -1,14 +1,13 @@ -package xray_api +package api import ( "context" - "marzban-node/xray_api/proto/app/proxyman/command" - "marzban-node/xray_api/proto/common/protocol" - "marzban-node/xray_api/proto/common/serial" - "marzban-node/xray_api/types" + "github.com/xtls/xray-core/app/proxyman/command" + "github.com/xtls/xray-core/common/protocol" + "github.com/xtls/xray-core/common/serial" ) -func (x *XrayAPI) AlertInbound(ctx context.Context, tag string, operation *serial.TypedMessage) error { +func (x *XrayHandler) AlertInbound(ctx context.Context, tag string, operation *serial.TypedMessage) error { client := *x.HandlerServiceClient _, err := client.AlterInbound(ctx, &command.AlterInboundRequest{Tag: tag, Operation: operation}) if err != nil { @@ -17,7 +16,7 @@ func (x *XrayAPI) AlertInbound(ctx context.Context, tag string, operation *seria return nil } -func (x *XrayAPI) AlertOutbound(ctx context.Context, tag string, operation *serial.TypedMessage) error { +func (x *XrayHandler) AlertOutbound(ctx context.Context, tag string, operation *serial.TypedMessage) error { client := *x.HandlerServiceClient _, err := client.AlterOutbound(ctx, &command.AlterOutboundRequest{Tag: tag, Operation: operation}) if err != nil { @@ -26,13 +25,13 @@ func (x *XrayAPI) AlertOutbound(ctx context.Context, tag string, operation *seri return nil } -func (x *XrayAPI) AddInboundUser(ctx context.Context, tag string, user types.Account) error { +func (x *XrayHandler) AddInboundUser(ctx context.Context, tag string, user Account) error { // Create the AddUserOperation message account, err := user.Message() if err != nil { return err } - operation, err := types.ToTypedMessage(&command.AddUserOperation{ + operation, err := ToTypedMessage(&command.AddUserOperation{ User: &protocol.User{ Level: user.GetLevel(), Email: user.GetEmail(), @@ -47,8 +46,8 @@ func (x *XrayAPI) AddInboundUser(ctx context.Context, tag string, user types.Acc return x.AlertInbound(ctx, tag, operation) } -func (x *XrayAPI) RemoveInboundUser(ctx context.Context, tag, email string) error { - operation, err := types.ToTypedMessage(&command.RemoveUserOperation{ +func (x *XrayHandler) RemoveInboundUser(ctx context.Context, tag, email string) error { + operation, err := ToTypedMessage(&command.RemoveUserOperation{ Email: email, }) if err != nil { @@ -59,13 +58,13 @@ func (x *XrayAPI) RemoveInboundUser(ctx context.Context, tag, email string) erro return x.AlertInbound(ctx, tag, operation) } -func (x *XrayAPI) AddOutboundUser(ctx context.Context, tag string, user types.Account) error { +func (x *XrayHandler) AddOutboundUser(ctx context.Context, tag string, user Account) error { // Create the AddUserOperation message account, err := user.Message() if err != nil { return err } - operation, err := types.ToTypedMessage(&command.AddUserOperation{ + operation, err := ToTypedMessage(&command.AddUserOperation{ User: &protocol.User{ Level: user.GetLevel(), Email: user.GetEmail(), @@ -80,8 +79,8 @@ func (x *XrayAPI) AddOutboundUser(ctx context.Context, tag string, user types.Ac return x.AlertOutbound(ctx, tag, operation) } -func (x *XrayAPI) RemoveOutboundUser(ctx context.Context, tag, email string) error { - operation, err := types.ToTypedMessage(&command.RemoveUserOperation{ +func (x *XrayHandler) RemoveOutboundUser(ctx context.Context, tag, email string) error { + operation, err := ToTypedMessage(&command.RemoveUserOperation{ Email: email, }) if err != nil { diff --git a/xray_api/stats.go b/backend/xray/api/stats.go similarity index 64% rename from xray_api/stats.go rename to backend/xray/api/stats.go index 8bb50fa..e095423 100644 --- a/xray_api/stats.go +++ b/backend/xray/api/stats.go @@ -1,12 +1,15 @@ -package xray_api +package api import ( "context" "fmt" + "strings" + + "github.com/xtls/xray-core/app/stats/command" "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "marzban-node/xray_api/proto/app/stats/command" - "strings" + + "github.com/m03ed/marzban-node-go/common" ) type LinkType string @@ -16,58 +19,32 @@ const ( Uplink LinkType = "uplink" ) -type SysStatsResponse struct { - NumGoroutine uint32 `json:"NumGoroutine,omitempty"` - NumGC uint32 `json:"NumGC,omitempty"` - Alloc uint64 `json:"Alloc,omitempty"` - TotalAlloc uint64 `json:"TotalAlloc,omitempty"` - Sys uint64 `json:"Sys,omitempty"` - Mallocs uint64 `json:"Mallocs,omitempty"` - Frees uint64 `json:"Frees,omitempty"` - LiveObjects uint64 `json:"LiveObjects,omitempty"` - PauseTotalNs uint64 `json:"PauseTotalNs,omitempty"` - Uptime uint32 `json:"Uptime,omitempty"` -} - func (l LinkType) String() string { return string(l) } -type StatResponse struct { - Name string `json:"name"` - Type string `json:"type"` - Link string `json:"link"` - Value int64 `json:"value"` -} - type UserStatsResponse struct { Email string `json:"email"` Uplink int64 `json:"uplink"` Downlink int64 `json:"downlink"` } -type InboundStatsResponse struct { - Tag string `json:"tag"` - Uplink int64 `json:"uplink"` - Downlink int64 `json:"downlink"` -} - -type OutboundStatsResponse struct { +type StatsResponse struct { Tag string `json:"tag"` Uplink int64 `json:"uplink"` Downlink int64 `json:"downlink"` } -func (x *XrayAPI) GetSysStats(ctx context.Context) (*SysStatsResponse, error) { +func (x *XrayHandler) GetSysStats(ctx context.Context) (*common.BackendStatsResponse, error) { client := *x.StatsServiceClient resp, err := client.GetSysStats(ctx, &command.SysStatsRequest{}) if err != nil { return nil, status.Errorf(codes.Unknown, "failed to get sys stats: %v", err) } - return &SysStatsResponse{ + return &common.BackendStatsResponse{ NumGoroutine: resp.NumGoroutine, - NumGC: resp.NumGC, + NumGc: resp.NumGC, Alloc: resp.Alloc, TotalAlloc: resp.TotalAlloc, Sys: resp.Sys, @@ -79,7 +56,7 @@ func (x *XrayAPI) GetSysStats(ctx context.Context) (*SysStatsResponse, error) { }, nil } -func (x *XrayAPI) QueryStats(ctx context.Context, pattern string, reset bool) (*command.QueryStatsResponse, error) { +func (x *XrayHandler) QueryStats(ctx context.Context, pattern string, reset bool) (*command.QueryStatsResponse, error) { client := *x.StatsServiceClient resp, err := client.QueryStats(ctx, &command.QueryStatsRequest{Pattern: pattern, Reset_: reset}) if err != nil { @@ -89,13 +66,23 @@ func (x *XrayAPI) QueryStats(ctx context.Context, pattern string, reset bool) (* return resp, nil } -func (x *XrayAPI) GetUsersStats(ctx context.Context, reset bool) ([]StatResponse, error) { +func (x *XrayHandler) GetStatOnline(ctx context.Context, email string) (*common.OnlineStatResponse, error) { + client := *x.StatsServiceClient + resp, err := client.GetStatsOnline(ctx, &command.GetStatsRequest{Name: email}) + if err != nil { + return nil, err + } + + return &common.OnlineStatResponse{Email: email, Value: resp.GetStat().Value}, nil +} + +func (x *XrayHandler) GetUsersStats(ctx context.Context, reset bool) (*common.StatResponse, error) { resp, err := x.QueryStats(ctx, fmt.Sprintf("user>>>"), reset) if err != nil { return nil, err } - var stats []StatResponse + stats := &common.StatResponse{} for _, stat := range resp.GetStat() { data := stat.GetName() value := stat.GetValue() @@ -106,8 +93,7 @@ func (x *XrayAPI) GetUsersStats(ctx context.Context, reset bool) ([]StatResponse link := parts[2] statType := parts[3] - // Create a new StatResponse object and add it to the slice - stats = append(stats, StatResponse{ + stats.Stats = append(stats.Stats, &common.Stat{ Name: name, Type: statType, Link: link, @@ -118,13 +104,13 @@ func (x *XrayAPI) GetUsersStats(ctx context.Context, reset bool) ([]StatResponse return stats, nil } -func (x *XrayAPI) GetInboundsStats(ctx context.Context, reset bool) ([]StatResponse, error) { +func (x *XrayHandler) GetInboundsStats(ctx context.Context, reset bool) (*common.StatResponse, error) { resp, err := x.QueryStats(ctx, fmt.Sprintf("inbound>>>"), reset) if err != nil { return nil, err } - var stats []StatResponse + stats := &common.StatResponse{} for _, stat := range resp.GetStat() { data := stat.GetName() value := stat.GetValue() @@ -135,8 +121,7 @@ func (x *XrayAPI) GetInboundsStats(ctx context.Context, reset bool) ([]StatRespo link := parts[2] statType := parts[3] - // Create a new StatResponse object and add it to the slice - stats = append(stats, StatResponse{ + stats.Stats = append(stats.Stats, &common.Stat{ Name: name, Type: statType, Link: link, @@ -147,13 +132,13 @@ func (x *XrayAPI) GetInboundsStats(ctx context.Context, reset bool) ([]StatRespo return stats, nil } -func (x *XrayAPI) GetOutboundsStats(ctx context.Context, reset bool) ([]StatResponse, error) { +func (x *XrayHandler) GetOutboundsStats(ctx context.Context, reset bool) (*common.StatResponse, error) { resp, err := x.QueryStats(ctx, fmt.Sprintf("outbound>>>"), reset) if err != nil { return nil, err } - var stats []StatResponse + stats := &common.StatResponse{} for _, stat := range resp.GetStat() { data := stat.GetName() value := stat.GetValue() @@ -163,8 +148,7 @@ func (x *XrayAPI) GetOutboundsStats(ctx context.Context, reset bool) ([]StatResp statType := parts[2] link := parts[3] - // Create a new StatResponse object and add it to the slice - stats = append(stats, StatResponse{ + stats.Stats = append(stats.Stats, &common.Stat{ Name: name, Type: statType, Link: link, @@ -175,7 +159,7 @@ func (x *XrayAPI) GetOutboundsStats(ctx context.Context, reset bool) ([]StatResp return stats, nil } -func (x *XrayAPI) GetUserStats(ctx context.Context, email string, reset bool) (*UserStatsResponse, error) { +func (x *XrayHandler) GetUserStats(ctx context.Context, email string, reset bool) (*UserStatsResponse, error) { resp, err := x.QueryStats(ctx, fmt.Sprintf("user>>>%s>>>", email), reset) if err != nil { return nil, err @@ -202,13 +186,13 @@ func (x *XrayAPI) GetUserStats(ctx context.Context, email string, reset bool) (* return &stats, nil } -func (x *XrayAPI) GetInboundStats(ctx context.Context, tag string, reset bool) (*InboundStatsResponse, error) { +func (x *XrayHandler) GetInboundStats(ctx context.Context, tag string, reset bool) (*StatsResponse, error) { resp, err := x.QueryStats(ctx, fmt.Sprintf("inbound>>>%s>>>", tag), reset) if err != nil { return nil, err } - var stats InboundStatsResponse + var stats StatsResponse for _, stat := range resp.GetStat() { data := stat.GetName() @@ -229,13 +213,13 @@ func (x *XrayAPI) GetInboundStats(ctx context.Context, tag string, reset bool) ( return &stats, nil } -func (x *XrayAPI) GetOutboundStats(ctx context.Context, tag string, reset bool) (*OutboundStatsResponse, error) { +func (x *XrayHandler) GetOutboundStats(ctx context.Context, tag string, reset bool) (*StatsResponse, error) { resp, err := x.QueryStats(ctx, fmt.Sprintf("outbound>>>%s>>>", tag), reset) if err != nil { return nil, err } - var stats OutboundStatsResponse + var stats StatsResponse for _, stat := range resp.GetStat() { data := stat.GetName() diff --git a/xray/config.go b/backend/xray/config.go similarity index 82% rename from xray/config.go rename to backend/xray/config.go index 69ca0a5..b414912 100644 --- a/xray/config.go +++ b/backend/xray/config.go @@ -2,6 +2,8 @@ package xray import ( "encoding/json" + + "github.com/m03ed/marzban-node-go/backend/xray/api" ) type Protocol string @@ -14,13 +16,19 @@ const ( ) type Config struct { - Log Log `json:"log,omitempty"` - Inbounds []Inbound `json:"Inbounds"` - Outbounds []interface{} `json:"outbounds,omitempty"` - Routing Routing `json:"routing,omitempty"` - API API `json:"api"` - Stats Stats `json:"stats"` - Policy Policy `json:"policy"` + Log Log `json:"log,omitempty"` + Inbounds []*Inbound `json:"Inbounds"` + Outbounds []interface{} `json:"outbounds,omitempty"` + Routing Routing `json:"routing,omitempty"` + API API `json:"api"` + Stats Stats `json:"stats"` + Policy Policy `json:"policy"` + DNS interface{} `json:"dns,omitempty"` + Reverse interface{} `json:"reverse,omitempty"` + FakeDNS interface{} `json:"fakedns,omitempty"` + Metrics interface{} `json:"metrics,omitempty"` + Observatory interface{} `json:"observatory,omitempty"` + BurstObservatory interface{} `json:"burstObservatory,omitempty"` } type Log struct { @@ -40,6 +48,11 @@ type Inbound struct { Sniffing interface{} `json:"sniffing,omitempty"` } +type InboundSettings struct { + Clients []*api.Account `json:"clients,omitempty"` + Fallbacks interface{} `json:"fallbacks,omitempty"` +} + type API struct { Services []string `json:"services"` Tag string `json:"tag"` @@ -63,6 +76,7 @@ type Level struct { DownlinkOnly int `json:"downlinkOnly,omitempty"` StatsUserUplink bool `json:"statsUserUplink"` StatsUserDownlink bool `json:"statsUserDownlink"` + StatsUserOnline bool `json:"statsUserOnline"` BufferSize int `json:"bufferSize,omitempty"` } @@ -150,11 +164,9 @@ func (c *Config) ApplyAPI(apiPort int) error { c.API.Services = []string{"HandlerService", "LoggerService", "StatsService"} c.API.Tag = "API" - c.Stats = Stats{} - c.checkPolicy() - inbound := Inbound{ + inbound := &Inbound{ Listen: "127.0.0.1", Port: apiPort, Protocol: "dokodemo-door", @@ -163,7 +175,7 @@ func (c *Config) ApplyAPI(apiPort int) error { }, Tag: "API_INBOUND", } - c.Inbounds = append([]Inbound{inbound}, c.Inbounds...) + c.Inbounds = append([]*Inbound{inbound}, c.Inbounds...) rule := Rule{ InboundTag: []string{"API_INBOUND"}, @@ -171,6 +183,7 @@ func (c *Config) ApplyAPI(apiPort int) error { OutboundTag: "API", Type: "field", } + c.Routing.Rules = append([]Rule{rule}, c.Routing.Rules...) return nil } diff --git a/backend/xray/config.json b/backend/xray/config.json new file mode 100644 index 0000000..c7f49be --- /dev/null +++ b/backend/xray/config.json @@ -0,0 +1,104 @@ +{ + "log": { + "loglevel": "warning" + }, + "inbounds": [ + { + "tag": "Shadowsocks TCP", + "listen": "0.0.0.0", + "port": 1080, + "protocol": "shadowsocks", + "settings": { + "clients": [], + "network": "tcp,udp" + } + }, + { + "tag": "VLESS TCP REALITY", + "listen": "0.0.0.0", + "port": 7878, + "protocol": "vless", + "settings": { + "clients": [], + "decryption": "none" + }, + "streamSettings": { + "network": "tcp", + "tcpSettings": {}, + "security": "reality", + "realitySettings": { + "show": false, + "dest": 22654, + "xver": 1, + "serverNames": [ + "speedtest.net" + ], + "privateKey": "eLYejRceHJVL6aGGLXRIEB5GDDdWwztq0Nu0Dxp0zlM", + "shortIds": [ + "074e71788d28fd03" + ] + } + }, + "sniffing": { + "enabled": true, + "destOverride": [ + "http", + "tls", + "quic" + ] + } + }, + { + "tag": "VMESS TCP NOTLS", + "listen": "0.0.0.0", + "port": 443, + "protocol": "vmess", + "settings": { + "clients": [] + }, + "streamSettings": { + "network": "tcp" + }, + "sniffing": { + "enabled": true, + "destOverride": [ + "http", + "tls", + "quic" + ] + } + }, + { + "tag": "TROJAN TCP NOTLS", + "listen": "0.0.0.0", + "port": 443, + "protocol": "trojan", + "settings": { + "clients": [] + }, + "streamSettings": { + "network": "tcp", + "tcpSettings": {}, + "security": "none" + }, + "sniffing": { + "enabled": true, + "destOverride": [ + "http", + "tls", + "quic" + ] + } + } + ], + "outbounds": [ + { + "protocol": "freedom", + "tag": "direct" + }, + { + "protocol": "blackhole", + "tag": "BLOCK" + } + ] +} \ No newline at end of file diff --git a/backend/xray/core.go b/backend/xray/core.go new file mode 100644 index 0000000..8edf7a2 --- /dev/null +++ b/backend/xray/core.go @@ -0,0 +1,180 @@ +package xray + +import ( + "bytes" + "context" + "errors" + "log" + "os" + "os/exec" + "regexp" + "sync" + + nodeLogger "github.com/m03ed/marzban-node-go/logger" +) + +type Core struct { + executablePath string + assetsPath string + version string + process *exec.Cmd + restarting bool + logsChan chan string + cancelFunc context.CancelFunc + mu sync.Mutex +} + +func NewXRayCore(executablePath, assetsPath string) (*Core, error) { + core := &Core{ + executablePath: executablePath, + assetsPath: assetsPath, + logsChan: make(chan string), + } + + version, err := core.refreshVersion() + if err != nil { + return nil, err + } + core.setVersion(version) + + return core, nil +} + +func (c *Core) refreshVersion() (string, error) { + cmd := exec.Command(c.executablePath, "version") + var out bytes.Buffer + cmd.Stdout = &out + err := cmd.Run() + if err != nil { + return "", err + } + + r := regexp.MustCompile(`^Xray (\d+\.\d+\.\d+)`) + matches := r.FindStringSubmatch(out.String()) + if len(matches) > 1 { + return matches[1], nil + } + + return "", errors.New("could not parse Xray version") +} + +func (c *Core) setVersion(version string) { + c.mu.Lock() + defer c.mu.Unlock() + c.version = version +} + +func (c *Core) GetVersion() string { + c.mu.Lock() + defer c.mu.Unlock() + return c.version +} + +func (c *Core) Started() bool { + c.mu.Lock() + defer c.mu.Unlock() + if c.process == nil || c.process.Process == nil { + return false + } + if c.process.ProcessState == nil { + return true + } + return false +} + +func (c *Core) Start(config *Config) error { + if c.Started() { + return errors.New("xray is started already") + } + + logLevel := config.Log.LogLevel + if logLevel == "none" || logLevel == "error" { + config.Log.LogLevel = "warning" + } + + accessFile, errorFile := config.RemoveLogFiles() + + cmd := exec.Command(c.executablePath, "run", "-config", "stdin:") + cmd.Env = append(os.Environ(), "XRAY_LOCATION_ASSET="+c.assetsPath) + + xrayJson, err := config.ToJSON() + if err != nil { + return err + } + + stdout, err := cmd.StdoutPipe() + if err != nil { + return err + } + + stderr, err := cmd.StderrPipe() + if err != nil { + return err + } + + if err = nodeLogger.SetLogFile(accessFile, errorFile); err != nil { + return err + } + + cmd.Stdin = bytes.NewBufferString(xrayJson) + err = cmd.Start() + if err != nil { + return err + } + c.process = cmd + + ctxCore := c.makeContext() + // Start capturing process logs + go c.captureProcessLogs(ctxCore, stdout) + go c.captureProcessLogs(ctxCore, stderr) + + return nil +} + +func (c *Core) Stop() { + if !c.Started() { + return + } + + c.mu.Lock() + defer c.mu.Unlock() + _ = c.process.Process.Kill() + c.process = nil + + c.cancelFunc() + + log.Println("xray core stopped") +} + +func (c *Core) Restart(config *Config) error { + c.mu.Lock() + defer c.mu.Unlock() + if c.restarting { + return errors.New("xray is already restarted") + } + + c.restarting = true + defer func() { c.restarting = false }() + + log.Println("restarting Xray core...") + c.Stop() + err := c.Start(config) + if err != nil { + return err + } + return nil +} + +func (c *Core) GetLogs() chan string { + c.mu.Lock() + defer c.mu.Unlock() + return c.logsChan +} + +func (c *Core) makeContext() context.Context { + ctx, cancel := context.WithCancel(context.Background()) + c.mu.Lock() + defer c.mu.Unlock() + c.cancelFunc = cancel + return ctx +} diff --git a/backend/xray/log.go b/backend/xray/log.go new file mode 100644 index 0000000..6f7133a --- /dev/null +++ b/backend/xray/log.go @@ -0,0 +1,56 @@ +package xray + +import ( + "bufio" + "context" + "io" + "regexp" + "strings" + + nodeLogger "github.com/m03ed/marzban-node-go/logger" +) + +var ( + re *regexp.Regexp +) + +func init() { + pattern := `^(\d{4}/\d{2}/\d{2}) (\d{2}:\d{2}:\d{2}) (\[.*?\]) (.*)$` + + // Compile the regex + re = regexp.MustCompile(pattern) +} + +func (c *Core) detectLogType(newLog string) { + message := "" + level := "" + + // Find the matches + matches := re.FindStringSubmatch(newLog) + if len(matches) > 3 { + level = strings.Trim(matches[3], "[]") + message = matches[4] + } else { + message = newLog + } + + if level == "" { + level = "Debug" + } + + nodeLogger.Log(level, message) +} + +func (c *Core) captureProcessLogs(ctx context.Context, pipe io.Reader) { + scanner := bufio.NewScanner(pipe) + for scanner.Scan() { + select { + case <-ctx.Done(): + return // Exit gracefully if stop signal received + default: + output := scanner.Text() + c.detectLogType(output) + c.logsChan <- output + } + } +} diff --git a/backend/xray/user.go b/backend/xray/user.go new file mode 100644 index 0000000..eb61db6 --- /dev/null +++ b/backend/xray/user.go @@ -0,0 +1,197 @@ +package xray + +import ( + "context" + "errors" + "log" + "slices" + "strings" + + "github.com/google/uuid" + "github.com/xtls/xray-core/proxy/shadowsocks" + + "github.com/m03ed/marzban-node-go/backend/xray/api" + "github.com/m03ed/marzban-node-go/common" +) + +func setupUserAccount(user *common.User) (api.ProxySettings, error) { + settings := api.ProxySettings{} + + if user.Proxies.Vmess != nil && user.Proxies.Vmess.Id != "" { + settings.Vmess = &api.VMessAccount{ + BaseAccount: api.BaseAccount{ + Email: user.GetEmail(), + Level: uint32(0), + }, + } + id, err := uuid.Parse(user.Proxies.Vmess.Id) + if err != nil { + return settings, err + } + settings.Vmess.ID = id + } + + if user.Proxies.Vless != nil && user.Proxies.Vless.Id != "" { + settings.Vless = &api.VLESSAccount{ + BaseAccount: api.BaseAccount{ + Email: user.GetEmail(), + Level: uint32(0), + }, + Flow: api.XTLSFlows(user.Proxies.Vless.Flow), + } + id, err := uuid.Parse(user.Proxies.Vmess.Id) + if err != nil { + return settings, err + } + settings.Vless.ID = id + } + + if user.Proxies.Trojan != nil && user.Proxies.Trojan.Password != "" { + settings.Trojan = &api.TrojanAccount{ + BaseAccount: api.BaseAccount{ + Email: user.GetEmail(), + Level: uint32(0), + }, + Password: user.Proxies.Trojan.Password, + } + } + + if user.Proxies.Shadowsocks != nil && user.Proxies.Shadowsocks.Password != "" { + settings.Shadowsocks = &api.ShadowsocksAccount{ + BaseAccount: api.BaseAccount{ + Email: user.GetEmail(), + Level: uint32(0), + }, + Password: user.Proxies.Shadowsocks.Password, + } + if v, ok := shadowsocks.CipherType_value[user.Proxies.Shadowsocks.Method]; ok { + settings.Shadowsocks.Method = shadowsocks.CipherType(v) + } else { + settings.Shadowsocks.Method = shadowsocks.CipherType_NONE + } + + settings.Shadowsocks2022 = &api.Shadowsocks2022Account{ + BaseAccount: api.BaseAccount{ + Email: user.GetEmail(), + Level: uint32(0), + }, + Key: user.Proxies.Shadowsocks.Password, + } + } + + return settings, nil +} + +func IsActiveInbound(inbound *Inbound, user *common.User, settings api.ProxySettings) (api.Account, bool) { + if slices.Contains(user.GetInbounds(), inbound.Tag) { + switch inbound.Protocol { + case Vless: + account := *settings.Vless + if api.XTLSFlows(user.GetProxies().GetVless().GetFlow()) == api.VISION { + network, networkOk := inbound.StreamSettings["network"].(string) + tls, tlsOk := inbound.StreamSettings["security"].(string) + + headerMap, headerMapOk := inbound.StreamSettings["header"].(map[string]interface{}) + headerType, headerTypeOk := "", false + if headerMapOk { + headerType, headerTypeOk = headerMap["Type"].(string) + } + + if networkOk && (network == "tcp" || network == "kcp") { + if !(tlsOk && (tls == "tls" || tls == "reality")) || (headerTypeOk && headerType == "http") { + account.Flow = api.NONE + } + } else if headerTypeOk && headerType == "http" { + account.Flow = api.NONE + } else { + account.Flow = api.NONE + } + } + return &account, true + + case Vmess: + return settings.Vmess, true + + case Trojan: + return settings.Trojan, true + + case Shadowsocks: + method, methodOk := inbound.Settings["method"].(string) + if methodOk && strings.HasPrefix("2022-blake3", method) { + return settings.Shadowsocks2022, true + } + return settings.Shadowsocks, true + } + } + return nil, false +} + +func (x *Xray) AddUser(ctx context.Context, user *common.User) error { + proxySetting, err := setupUserAccount(user) + if err != nil { + return err + } + + handler := x.getHandler() + inbounds := x.getConfig().Inbounds + + var errMessage string + for _, inbound := range inbounds { + account, isActive := IsActiveInbound(inbound, user, proxySetting) + if isActive { + if err = handler.AddInboundUser(ctx, inbound.Tag, account); err != nil { + log.Println(err) + errMessage += "\n" + err.Error() + } + } + } + + if errMessage != "" { + return errors.New("failed to add user:" + errMessage) + } + return nil +} + +func (x *Xray) UpdateUser(ctx context.Context, user *common.User) error { + proxySetting, err := setupUserAccount(user) + if err != nil { + return err + } + + handler := x.getHandler() + inbounds := x.getConfig().Inbounds + + var errMessage string + var activeInbounds []string + + for _, inbound := range inbounds { + account, isActive := IsActiveInbound(inbound, user, proxySetting) + if isActive { + activeInbounds = append(activeInbounds, inbound.Tag) + err = handler.AddInboundUser(ctx, inbound.Tag, account) + if err != nil { + log.Println(err) + errMessage += "\n" + err.Error() + } + } + } + + for _, inbound := range inbounds { + if !slices.Contains(activeInbounds, inbound.Tag) { + _ = handler.RemoveInboundUser(ctx, inbound.Tag, user.Email) + } + } + + if errMessage != "" { + return errors.New("failed to add user:" + errMessage) + } + return nil +} + +func (x *Xray) RemoveUser(ctx context.Context, email string) { + handler := x.getHandler() + + for _, inbound := range x.getConfig().Inbounds { + _ = handler.RemoveInboundUser(ctx, inbound.Tag, email) + } +} diff --git a/backend/xray/xray.go b/backend/xray/xray.go new file mode 100644 index 0000000..78760c6 --- /dev/null +++ b/backend/xray/xray.go @@ -0,0 +1,225 @@ +package xray + +import ( + "bytes" + "context" + "encoding/json" + "errors" + "fmt" + "os" + "path/filepath" + "regexp" + "strings" + "sync" + "time" + + "github.com/m03ed/marzban-node-go/backend" + "github.com/m03ed/marzban-node-go/backend/xray/api" + "github.com/m03ed/marzban-node-go/common" +) + +type Xray struct { + config *Config + core *Core + handler *api.XrayHandler + configPath string + mu sync.Mutex +} + +func (x *Xray) setConfig(config *Config) { + x.mu.Lock() + defer x.mu.Unlock() + x.config = config +} + +func (x *Xray) getConfig() *Config { + x.mu.Lock() + defer x.mu.Unlock() + return x.config +} + +func (x *Xray) setCore(core *Core) { + x.mu.Lock() + defer x.mu.Unlock() + x.core = core +} + +func (x *Xray) getCore() *Core { + x.mu.Lock() + defer x.mu.Unlock() + return x.core +} + +func (x *Xray) GetCore() backend.Core { + x.mu.Lock() + defer x.mu.Unlock() + return x.core +} + +func (x *Xray) GetLogs() chan string { + x.mu.Lock() + defer x.mu.Unlock() + return x.core.GetLogs() +} + +func (x *Xray) GetVersion() string { + x.mu.Lock() + defer x.mu.Unlock() + return x.core.GetVersion() +} + +func (x *Xray) setHandler(handler *api.XrayHandler) { + x.mu.Lock() + defer x.mu.Unlock() + x.handler = handler +} + +func (x *Xray) getHandler() *api.XrayHandler { + x.mu.Lock() + defer x.mu.Unlock() + return x.handler +} + +func (x *Xray) Started() bool { + return x.core.Started() +} + +func (x *Xray) Restart() error { + x.mu.Lock() + defer x.mu.Unlock() + err := x.core.Restart(x.config) + if err != nil { + return err + } + return nil +} + +func (x *Xray) Shutdown() { + x.mu.Lock() + defer x.mu.Unlock() + if x.core != nil { + x.core.Stop() + } + if x.handler != nil { + x.handler.Close() + } +} + +func (x *Xray) GetSysStats(ctx context.Context) (*common.BackendStatsResponse, error) { + return x.handler.GetSysStats(ctx) +} + +func (x *Xray) GetUsersStats(ctx context.Context, reset bool) (*common.StatResponse, error) { + return x.handler.GetUsersStats(ctx, reset) +} + +func (x *Xray) GetStatOnline(ctx context.Context, email string) (*common.OnlineStatResponse, error) { + return x.handler.GetStatOnline(ctx, email) +} + +func (x *Xray) GetOutboundsStats(ctx context.Context, reset bool) (*common.StatResponse, error) { + return x.handler.GetOutboundsStats(ctx, reset) +} + +func (x *Xray) GetInboundsStats(ctx context.Context, reset bool) (*common.StatResponse, error) { + return x.handler.GetInboundsStats(ctx, reset) +} + +func (x *Xray) GenerateConfigFile() error { + x.mu.Lock() + defer x.mu.Unlock() + + var prettyJSON bytes.Buffer + + config, err := x.config.ToJSON() + if err != nil { + return err + } + + if err = json.Indent(&prettyJSON, []byte(config), "", " "); err != nil { + return err + } + + // Ensure the directory exists + err = os.MkdirAll(x.configPath, 0755) + if err != nil { + return fmt.Errorf("failed to create config directory: %v", err) + } + + jsonFile, err := os.Create(filepath.Join(x.configPath, "xray.json")) + if err != nil { + return err + } + defer jsonFile.Close() + + _, err = jsonFile.WriteString(prettyJSON.String()) + return err +} + +func (x *Xray) checkXrayStatus() error { + core := x.getCore() + + logChan := core.GetLogs() + version := core.GetVersion() + + ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) + defer cancel() + +Loop: + for { + select { + case lastLog := <-logChan: + if strings.Contains(lastLog, "Xray "+version+" started") { + break Loop + } else { + regex := regexp.MustCompile(`^(\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[([^]]+)\] (.+)$`) + matches := regex.FindStringSubmatch(lastLog) + if len(matches) > 3 && matches[2] == "Error" { + return errors.New("Failed to start xray: " + matches[3]) + } + } + case <-ctx.Done(): + return errors.New("failed to start xray: context done") + } + } + return nil +} + +func NewXray(ctx context.Context, port int, executablePath, assetsPath, configPath string) (*Xray, error) { + xray := &Xray{configPath: configPath} + config, ok := ctx.Value(backend.ConfigKey{}).(*Config) + if !ok { + return nil, errors.New("xray config has not been initialized") + } + if err := config.ApplyAPI(port); err != nil { + return nil, err + } + xray.setConfig(config) + + core, err := NewXRayCore(executablePath, assetsPath) + if err != nil { + return nil, err + } + if err = core.Start(config); err != nil { + return nil, err + } + xray.setCore(core) + + if err = xray.checkXrayStatus(); err != nil { + return nil, err + } + + handler, err := api.NewXrayAPI(port) + if err != nil { + xray.Shutdown() + return nil, err + } + xray.setHandler(handler) + + if err = xray.GenerateConfigFile(); err != nil { + xray.Shutdown() + return nil, err + } + + return xray, nil +} diff --git a/backend/xray/xray_test.go b/backend/xray/xray_test.go new file mode 100644 index 0000000..b209144 --- /dev/null +++ b/backend/xray/xray_test.go @@ -0,0 +1,88 @@ +package xray + +import ( + "context" + "fmt" + "log" + "testing" + "time" + + "github.com/google/uuid" + + "github.com/m03ed/marzban-node-go/backend" + "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/marzban-node-go/tools" +) + +var ( + jsonFile = "./config.json" + executablePath = "/usr/local/bin/xray" + assetsPath = "/usr/local/share/xray" + configPath = "/var/lib/marzban-node/generated/" +) + +func TestXrayBackend(t *testing.T) { + xrayFile, err := tools.ReadFileAsString(jsonFile) + if err != nil { + t.Fatal(err) + } + + //test creating config + newConfig, err := NewXRayConfig(xrayFile) + if err != nil { + t.Fatal(err) + } + + log.Println("xray config created") + + ctx := context.WithValue(context.Background(), backend.ConfigKey{}, newConfig) + + back, err := NewXray(ctx, tools.FindFreePort(), executablePath, assetsPath, configPath) + if err != nil { + t.Fatal(err) + } + + log.Println("xray started") + + ctx1, cancel := context.WithTimeout(context.Background(), time.Second*10) + defer cancel() + + // test with service StatsServiceClient + stats, err := back.GetOutboundsStats(ctx1, true) + if err != nil { + t.Error(err) + } + + for _, stat := range stats.Stats { + log.Printf(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) + } + + // test HandlerServiceClient + user := &common.User{ + Email: "test_user@example.com", + Inbounds: []string{"VMESS TCP NOTLS", "VLESS TCP REALITY", "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP"}, + Proxies: &common.Proxy{ + Vmess: &common.VmessSetting{ + Id: uuid.New().String(), + }, + Vless: &common.VlessSetting{ + Id: uuid.New().String(), + }, + Trojan: &common.TrojanSetting{ + Password: "try a random string", + }, + Shadowsocks: &common.ShadowsocksSetting{ + Password: "try a random string", + Method: "AES_256_GCM", + }, + }, + } + + if err = back.AddUser(ctx, user); err != nil { + t.Fatal(err) + } + + log.Println("user added") + + back.Shutdown() +} diff --git a/common/service.pb.go b/common/service.pb.go new file mode 100644 index 0000000..358c5f0 --- /dev/null +++ b/common/service.pb.go @@ -0,0 +1,1278 @@ +// Code generated by protoc-gen-go. DO NOT EDIT. +// versions: +// protoc-gen-go v1.35.2 +// protoc v3.6.1 +// source: common/service.proto + +package common + +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 BackendType int32 + +const ( + BackendType_XRAY BackendType = 0 +) + +// Enum value maps for BackendType. +var ( + BackendType_name = map[int32]string{ + 0: "XRAY", + } + BackendType_value = map[string]int32{ + "XRAY": 0, + } +) + +func (x BackendType) Enum() *BackendType { + p := new(BackendType) + *p = x + return p +} + +func (x BackendType) String() string { + return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) +} + +func (BackendType) Descriptor() protoreflect.EnumDescriptor { + return file_common_service_proto_enumTypes[0].Descriptor() +} + +func (BackendType) Type() protoreflect.EnumType { + return &file_common_service_proto_enumTypes[0] +} + +func (x BackendType) Number() protoreflect.EnumNumber { + return protoreflect.EnumNumber(x) +} + +// Deprecated: Use BackendType.Descriptor instead. +func (BackendType) EnumDescriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{0} +} + +type Empty struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields +} + +func (x *Empty) Reset() { + *x = Empty{} + mi := &file_common_service_proto_msgTypes[0] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Empty) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Empty) ProtoMessage() {} + +func (x *Empty) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[0] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Empty.ProtoReflect.Descriptor instead. +func (*Empty) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{0} +} + +// Base info response message +type BaseInfoResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Started bool `protobuf:"varint,1,opt,name=started,proto3" json:"started,omitempty"` + CoreVersion string `protobuf:"bytes,2,opt,name=core_version,json=coreVersion,proto3" json:"core_version,omitempty"` + NodeVersion string `protobuf:"bytes,3,opt,name=node_version,json=nodeVersion,proto3" json:"node_version,omitempty"` + SessionId string `protobuf:"bytes,4,opt,name=session_id,json=sessionId,proto3" json:"session_id,omitempty"` + Extra string `protobuf:"bytes,5,opt,name=extra,proto3" json:"extra,omitempty"` +} + +func (x *BaseInfoResponse) Reset() { + *x = BaseInfoResponse{} + mi := &file_common_service_proto_msgTypes[1] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BaseInfoResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BaseInfoResponse) ProtoMessage() {} + +func (x *BaseInfoResponse) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[1] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BaseInfoResponse.ProtoReflect.Descriptor instead. +func (*BaseInfoResponse) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{1} +} + +func (x *BaseInfoResponse) GetStarted() bool { + if x != nil { + return x.Started + } + return false +} + +func (x *BaseInfoResponse) GetCoreVersion() string { + if x != nil { + return x.CoreVersion + } + return "" +} + +func (x *BaseInfoResponse) GetNodeVersion() string { + if x != nil { + return x.NodeVersion + } + return "" +} + +func (x *BaseInfoResponse) GetSessionId() string { + if x != nil { + return x.SessionId + } + return "" +} + +func (x *BaseInfoResponse) GetExtra() string { + if x != nil { + return x.Extra + } + return "" +} + +type Backend struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Type BackendType `protobuf:"varint,1,opt,name=type,proto3,enum=service.BackendType" json:"type,omitempty"` + Config string `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` +} + +func (x *Backend) Reset() { + *x = Backend{} + mi := &file_common_service_proto_msgTypes[2] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Backend) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Backend) ProtoMessage() {} + +func (x *Backend) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[2] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Backend.ProtoReflect.Descriptor instead. +func (*Backend) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{2} +} + +func (x *Backend) GetType() BackendType { + if x != nil { + return x.Type + } + return BackendType_XRAY +} + +func (x *Backend) GetConfig() string { + if x != nil { + return x.Config + } + return "" +} + +// log +type Log struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Detail string `protobuf:"bytes,1,opt,name=detail,proto3" json:"detail,omitempty"` +} + +func (x *Log) Reset() { + *x = Log{} + mi := &file_common_service_proto_msgTypes[3] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Log) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Log) ProtoMessage() {} + +func (x *Log) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[3] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Log.ProtoReflect.Descriptor instead. +func (*Log) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{3} +} + +func (x *Log) GetDetail() string { + if x != nil { + return x.Detail + } + return "" +} + +// stats +type Stat struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Type string `protobuf:"bytes,2,opt,name=type,proto3" json:"type,omitempty"` + Link string `protobuf:"bytes,3,opt,name=link,proto3" json:"link,omitempty"` + Value int64 `protobuf:"varint,4,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *Stat) Reset() { + *x = Stat{} + mi := &file_common_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Stat) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Stat) ProtoMessage() {} + +func (x *Stat) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Stat.ProtoReflect.Descriptor instead. +func (*Stat) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{4} +} + +func (x *Stat) GetName() string { + if x != nil { + return x.Name + } + return "" +} + +func (x *Stat) GetType() string { + if x != nil { + return x.Type + } + return "" +} + +func (x *Stat) GetLink() string { + if x != nil { + return x.Link + } + return "" +} + +func (x *Stat) GetValue() int64 { + if x != nil { + return x.Value + } + return 0 +} + +type StatResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Stats []*Stat `protobuf:"bytes,1,rep,name=stats,proto3" json:"stats,omitempty"` +} + +func (x *StatResponse) Reset() { + *x = StatResponse{} + mi := &file_common_service_proto_msgTypes[5] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *StatResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*StatResponse) ProtoMessage() {} + +func (x *StatResponse) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[5] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use StatResponse.ProtoReflect.Descriptor instead. +func (*StatResponse) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{5} +} + +func (x *StatResponse) GetStats() []*Stat { + if x != nil { + return x.Stats + } + return nil +} + +type OnlineStatRequest struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` +} + +func (x *OnlineStatRequest) Reset() { + *x = OnlineStatRequest{} + mi := &file_common_service_proto_msgTypes[6] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OnlineStatRequest) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnlineStatRequest) ProtoMessage() {} + +func (x *OnlineStatRequest) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[6] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnlineStatRequest.ProtoReflect.Descriptor instead. +func (*OnlineStatRequest) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{6} +} + +func (x *OnlineStatRequest) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +type OnlineStatResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` +} + +func (x *OnlineStatResponse) Reset() { + *x = OnlineStatResponse{} + mi := &file_common_service_proto_msgTypes[7] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *OnlineStatResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*OnlineStatResponse) ProtoMessage() {} + +func (x *OnlineStatResponse) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[7] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use OnlineStatResponse.ProtoReflect.Descriptor instead. +func (*OnlineStatResponse) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{7} +} + +func (x *OnlineStatResponse) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *OnlineStatResponse) GetValue() int64 { + if x != nil { + return x.Value + } + return 0 +} + +type BackendStatsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + NumGoroutine uint32 `protobuf:"varint,1,opt,name=num_goroutine,json=numGoroutine,proto3" json:"num_goroutine,omitempty"` + NumGc uint32 `protobuf:"varint,2,opt,name=num_gc,json=numGc,proto3" json:"num_gc,omitempty"` + Alloc uint64 `protobuf:"varint,3,opt,name=alloc,proto3" json:"alloc,omitempty"` + TotalAlloc uint64 `protobuf:"varint,4,opt,name=total_alloc,json=totalAlloc,proto3" json:"total_alloc,omitempty"` + Sys uint64 `protobuf:"varint,5,opt,name=sys,proto3" json:"sys,omitempty"` + Mallocs uint64 `protobuf:"varint,6,opt,name=mallocs,proto3" json:"mallocs,omitempty"` + Frees uint64 `protobuf:"varint,7,opt,name=frees,proto3" json:"frees,omitempty"` + LiveObjects uint64 `protobuf:"varint,8,opt,name=live_objects,json=liveObjects,proto3" json:"live_objects,omitempty"` + PauseTotalNs uint64 `protobuf:"varint,9,opt,name=pause_total_ns,json=pauseTotalNs,proto3" json:"pause_total_ns,omitempty"` + Uptime uint32 `protobuf:"varint,10,opt,name=uptime,proto3" json:"uptime,omitempty"` +} + +func (x *BackendStatsResponse) Reset() { + *x = BackendStatsResponse{} + mi := &file_common_service_proto_msgTypes[8] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *BackendStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*BackendStatsResponse) ProtoMessage() {} + +func (x *BackendStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[8] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use BackendStatsResponse.ProtoReflect.Descriptor instead. +func (*BackendStatsResponse) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{8} +} + +func (x *BackendStatsResponse) GetNumGoroutine() uint32 { + if x != nil { + return x.NumGoroutine + } + return 0 +} + +func (x *BackendStatsResponse) GetNumGc() uint32 { + if x != nil { + return x.NumGc + } + return 0 +} + +func (x *BackendStatsResponse) GetAlloc() uint64 { + if x != nil { + return x.Alloc + } + return 0 +} + +func (x *BackendStatsResponse) GetTotalAlloc() uint64 { + if x != nil { + return x.TotalAlloc + } + return 0 +} + +func (x *BackendStatsResponse) GetSys() uint64 { + if x != nil { + return x.Sys + } + return 0 +} + +func (x *BackendStatsResponse) GetMallocs() uint64 { + if x != nil { + return x.Mallocs + } + return 0 +} + +func (x *BackendStatsResponse) GetFrees() uint64 { + if x != nil { + return x.Frees + } + return 0 +} + +func (x *BackendStatsResponse) GetLiveObjects() uint64 { + if x != nil { + return x.LiveObjects + } + return 0 +} + +func (x *BackendStatsResponse) GetPauseTotalNs() uint64 { + if x != nil { + return x.PauseTotalNs + } + return 0 +} + +func (x *BackendStatsResponse) GetUptime() uint32 { + if x != nil { + return x.Uptime + } + return 0 +} + +type SystemStatsResponse struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + MemTotal uint64 `protobuf:"varint,1,opt,name=mem_total,json=memTotal,proto3" json:"mem_total,omitempty"` + MemUsed uint64 `protobuf:"varint,2,opt,name=mem_used,json=memUsed,proto3" json:"mem_used,omitempty"` + CpuCores uint64 `protobuf:"varint,3,opt,name=cpu_cores,json=cpuCores,proto3" json:"cpu_cores,omitempty"` + CpuUsage float64 `protobuf:"fixed64,4,opt,name=cpu_usage,json=cpuUsage,proto3" json:"cpu_usage,omitempty"` + IncomingBandwidthSpeed uint64 `protobuf:"varint,5,opt,name=incoming_bandwidth_speed,json=incomingBandwidthSpeed,proto3" json:"incoming_bandwidth_speed,omitempty"` + OutgoingBandwidthSpeed uint64 `protobuf:"varint,6,opt,name=outgoing_bandwidth_speed,json=outgoingBandwidthSpeed,proto3" json:"outgoing_bandwidth_speed,omitempty"` +} + +func (x *SystemStatsResponse) Reset() { + *x = SystemStatsResponse{} + mi := &file_common_service_proto_msgTypes[9] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *SystemStatsResponse) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*SystemStatsResponse) ProtoMessage() {} + +func (x *SystemStatsResponse) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[9] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use SystemStatsResponse.ProtoReflect.Descriptor instead. +func (*SystemStatsResponse) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{9} +} + +func (x *SystemStatsResponse) GetMemTotal() uint64 { + if x != nil { + return x.MemTotal + } + return 0 +} + +func (x *SystemStatsResponse) GetMemUsed() uint64 { + if x != nil { + return x.MemUsed + } + return 0 +} + +func (x *SystemStatsResponse) GetCpuCores() uint64 { + if x != nil { + return x.CpuCores + } + return 0 +} + +func (x *SystemStatsResponse) GetCpuUsage() float64 { + if x != nil { + return x.CpuUsage + } + return 0 +} + +func (x *SystemStatsResponse) GetIncomingBandwidthSpeed() uint64 { + if x != nil { + return x.IncomingBandwidthSpeed + } + return 0 +} + +func (x *SystemStatsResponse) GetOutgoingBandwidthSpeed() uint64 { + if x != nil { + return x.OutgoingBandwidthSpeed + } + return 0 +} + +// User +type VmessSetting struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` +} + +func (x *VmessSetting) Reset() { + *x = VmessSetting{} + mi := &file_common_service_proto_msgTypes[10] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VmessSetting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VmessSetting) ProtoMessage() {} + +func (x *VmessSetting) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[10] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VmessSetting.ProtoReflect.Descriptor instead. +func (*VmessSetting) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{10} +} + +func (x *VmessSetting) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +type VlessSetting struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` + Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` +} + +func (x *VlessSetting) Reset() { + *x = VlessSetting{} + mi := &file_common_service_proto_msgTypes[11] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *VlessSetting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*VlessSetting) ProtoMessage() {} + +func (x *VlessSetting) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[11] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use VlessSetting.ProtoReflect.Descriptor instead. +func (*VlessSetting) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{11} +} + +func (x *VlessSetting) GetId() string { + if x != nil { + return x.Id + } + return "" +} + +func (x *VlessSetting) GetFlow() string { + if x != nil { + return x.Flow + } + return "" +} + +type TrojanSetting struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` +} + +func (x *TrojanSetting) Reset() { + *x = TrojanSetting{} + mi := &file_common_service_proto_msgTypes[12] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *TrojanSetting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*TrojanSetting) ProtoMessage() {} + +func (x *TrojanSetting) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[12] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use TrojanSetting.ProtoReflect.Descriptor instead. +func (*TrojanSetting) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{12} +} + +func (x *TrojanSetting) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +type ShadowsocksSetting struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` + Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` +} + +func (x *ShadowsocksSetting) Reset() { + *x = ShadowsocksSetting{} + mi := &file_common_service_proto_msgTypes[13] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *ShadowsocksSetting) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*ShadowsocksSetting) ProtoMessage() {} + +func (x *ShadowsocksSetting) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[13] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use ShadowsocksSetting.ProtoReflect.Descriptor instead. +func (*ShadowsocksSetting) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{13} +} + +func (x *ShadowsocksSetting) GetPassword() string { + if x != nil { + return x.Password + } + return "" +} + +func (x *ShadowsocksSetting) GetMethod() string { + if x != nil { + return x.Method + } + return "" +} + +type Proxy struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Vmess *VmessSetting `protobuf:"bytes,1,opt,name=vmess,proto3" json:"vmess,omitempty"` + Vless *VlessSetting `protobuf:"bytes,2,opt,name=vless,proto3" json:"vless,omitempty"` + Trojan *TrojanSetting `protobuf:"bytes,3,opt,name=trojan,proto3" json:"trojan,omitempty"` + Shadowsocks *ShadowsocksSetting `protobuf:"bytes,4,opt,name=shadowsocks,proto3" json:"shadowsocks,omitempty"` +} + +func (x *Proxy) Reset() { + *x = Proxy{} + mi := &file_common_service_proto_msgTypes[14] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Proxy) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Proxy) ProtoMessage() {} + +func (x *Proxy) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[14] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Proxy.ProtoReflect.Descriptor instead. +func (*Proxy) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{14} +} + +func (x *Proxy) GetVmess() *VmessSetting { + if x != nil { + return x.Vmess + } + return nil +} + +func (x *Proxy) GetVless() *VlessSetting { + if x != nil { + return x.Vless + } + return nil +} + +func (x *Proxy) GetTrojan() *TrojanSetting { + if x != nil { + return x.Trojan + } + return nil +} + +func (x *Proxy) GetShadowsocks() *ShadowsocksSetting { + if x != nil { + return x.Shadowsocks + } + return nil +} + +type User struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + Proxies *Proxy `protobuf:"bytes,2,opt,name=proxies,proto3" json:"proxies,omitempty"` + Inbounds []string `protobuf:"bytes,3,rep,name=inbounds,proto3" json:"inbounds,omitempty"` +} + +func (x *User) Reset() { + *x = User{} + mi := &file_common_service_proto_msgTypes[15] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *User) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*User) ProtoMessage() {} + +func (x *User) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[15] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use User.ProtoReflect.Descriptor instead. +func (*User) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{15} +} + +func (x *User) GetEmail() string { + if x != nil { + return x.Email + } + return "" +} + +func (x *User) GetProxies() *Proxy { + if x != nil { + return x.Proxies + } + return nil +} + +func (x *User) GetInbounds() []string { + if x != nil { + return x.Inbounds + } + return nil +} + +var File_common_service_proto protoreflect.FileDescriptor + +var file_common_service_proto_rawDesc = []byte{ + 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x22, + 0x07, 0x0a, 0x05, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0xa7, 0x01, 0x0a, 0x10, 0x42, 0x61, 0x73, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x18, 0x0a, + 0x07, 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, + 0x73, 0x74, 0x61, 0x72, 0x74, 0x65, 0x64, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x72, 0x65, 0x5f, + 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, + 0x6f, 0x72, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x6e, 0x6f, + 0x64, 0x65, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x0b, 0x6e, 0x6f, 0x64, 0x65, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1d, 0x0a, + 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, + 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, + 0x72, 0x61, 0x22, 0x4b, 0x0a, 0x07, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x0a, + 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, + 0x1d, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x58, + 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, + 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, + 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x33, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x29, 0x0a, + 0x11, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, 0x12, 0x4f, 0x6e, 0x6c, 0x69, + 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, + 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, + 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x14, 0x42, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x6f, 0x72, 0x6f, 0x75, + 0x74, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x47, + 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x5f, + 0x67, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x75, 0x6d, 0x47, 0x63, 0x12, + 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, + 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, + 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x05, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x6c, 0x6c, + 0x6f, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, 0x76, 0x65, + 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, + 0x6c, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, + 0x61, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x73, 0x18, 0x09, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, + 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, + 0x0d, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x13, 0x53, 0x79, + 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x19, + 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, + 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x70, + 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, + 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, + 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, + 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x42, + 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x38, 0x0a, + 0x18, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, + 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x16, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, + 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x22, 0x1e, 0x0a, 0x0c, 0x56, 0x6d, 0x65, 0x73, 0x73, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x32, 0x0a, 0x0c, 0x56, 0x6c, 0x65, 0x73, 0x73, + 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x2b, 0x0a, 0x0d, 0x54, + 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x48, 0x0a, 0x12, 0x53, 0x68, 0x61, 0x64, + 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x22, 0xd0, 0x01, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x2b, 0x0a, 0x05, + 0x76, 0x6d, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6d, 0x65, 0x73, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, + 0x6e, 0x67, 0x52, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x6c, 0x65, + 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, + 0x05, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, + 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x06, + 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, + 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, + 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, + 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x62, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, + 0x72, 0x6f, 0x78, 0x79, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, + 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, + 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x2a, 0x17, 0x0a, 0x0b, 0x42, 0x61, 0x63, + 0x6b, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x58, 0x52, 0x41, 0x59, + 0x10, 0x00, 0x32, 0xeb, 0x05, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x1a, 0x19, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x04, 0x53, 0x74, + 0x6f, 0x70, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, + 0x74, 0x79, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x49, + 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, + 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x2b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3e, 0x0a, + 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, + 0x0f, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, + 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x3c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x3b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0d, + 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1a, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2a, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, + 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, + 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, + 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, + 0x00, 0x12, 0x2d, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, + 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, + 0x42, 0x18, 0x5a, 0x16, 0x6d, 0x61, 0x72, 0x7a, 0x62, 0x61, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, + 0x5f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, +} + +var ( + file_common_service_proto_rawDescOnce sync.Once + file_common_service_proto_rawDescData = file_common_service_proto_rawDesc +) + +func file_common_service_proto_rawDescGZIP() []byte { + file_common_service_proto_rawDescOnce.Do(func() { + file_common_service_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_service_proto_rawDescData) + }) + return file_common_service_proto_rawDescData +} + +var file_common_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) +var file_common_service_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_common_service_proto_goTypes = []any{ + (BackendType)(0), // 0: service.BackendType + (*Empty)(nil), // 1: service.Empty + (*BaseInfoResponse)(nil), // 2: service.BaseInfoResponse + (*Backend)(nil), // 3: service.Backend + (*Log)(nil), // 4: service.Log + (*Stat)(nil), // 5: service.Stat + (*StatResponse)(nil), // 6: service.StatResponse + (*OnlineStatRequest)(nil), // 7: service.OnlineStatRequest + (*OnlineStatResponse)(nil), // 8: service.OnlineStatResponse + (*BackendStatsResponse)(nil), // 9: service.BackendStatsResponse + (*SystemStatsResponse)(nil), // 10: service.SystemStatsResponse + (*VmessSetting)(nil), // 11: service.VmessSetting + (*VlessSetting)(nil), // 12: service.VlessSetting + (*TrojanSetting)(nil), // 13: service.TrojanSetting + (*ShadowsocksSetting)(nil), // 14: service.ShadowsocksSetting + (*Proxy)(nil), // 15: service.Proxy + (*User)(nil), // 16: service.User +} +var file_common_service_proto_depIdxs = []int32{ + 0, // 0: service.Backend.type:type_name -> service.BackendType + 5, // 1: service.StatResponse.stats:type_name -> service.Stat + 11, // 2: service.Proxy.vmess:type_name -> service.VmessSetting + 12, // 3: service.Proxy.vless:type_name -> service.VlessSetting + 13, // 4: service.Proxy.trojan:type_name -> service.TrojanSetting + 14, // 5: service.Proxy.shadowsocks:type_name -> service.ShadowsocksSetting + 15, // 6: service.User.proxies:type_name -> service.Proxy + 3, // 7: service.NodeService.Start:input_type -> service.Backend + 1, // 8: service.NodeService.Stop:input_type -> service.Empty + 1, // 9: service.NodeService.GetBaseInfo:input_type -> service.Empty + 1, // 10: service.NodeService.GetLogs:input_type -> service.Empty + 1, // 11: service.NodeService.GetNodeStats:input_type -> service.Empty + 1, // 12: service.NodeService.GetBackendStats:input_type -> service.Empty + 1, // 13: service.NodeService.GetOutboundsStats:input_type -> service.Empty + 1, // 14: service.NodeService.GetInboundsStats:input_type -> service.Empty + 1, // 15: service.NodeService.GetUsersStats:input_type -> service.Empty + 7, // 16: service.NodeService.GetUserOnlineStat:input_type -> service.OnlineStatRequest + 16, // 17: service.NodeService.AddUser:input_type -> service.User + 16, // 18: service.NodeService.UpdateUser:input_type -> service.User + 16, // 19: service.NodeService.RemoveUser:input_type -> service.User + 2, // 20: service.NodeService.Start:output_type -> service.BaseInfoResponse + 1, // 21: service.NodeService.Stop:output_type -> service.Empty + 2, // 22: service.NodeService.GetBaseInfo:output_type -> service.BaseInfoResponse + 4, // 23: service.NodeService.GetLogs:output_type -> service.Log + 10, // 24: service.NodeService.GetNodeStats:output_type -> service.SystemStatsResponse + 9, // 25: service.NodeService.GetBackendStats:output_type -> service.BackendStatsResponse + 6, // 26: service.NodeService.GetOutboundsStats:output_type -> service.StatResponse + 6, // 27: service.NodeService.GetInboundsStats:output_type -> service.StatResponse + 6, // 28: service.NodeService.GetUsersStats:output_type -> service.StatResponse + 8, // 29: service.NodeService.GetUserOnlineStat:output_type -> service.OnlineStatResponse + 1, // 30: service.NodeService.AddUser:output_type -> service.Empty + 1, // 31: service.NodeService.UpdateUser:output_type -> service.Empty + 1, // 32: service.NodeService.RemoveUser:output_type -> service.Empty + 20, // [20:33] is the sub-list for method output_type + 7, // [7:20] is the sub-list for method input_type + 7, // [7:7] is the sub-list for extension type_name + 7, // [7:7] is the sub-list for extension extendee + 0, // [0:7] is the sub-list for field type_name +} + +func init() { file_common_service_proto_init() } +func file_common_service_proto_init() { + if File_common_service_proto != nil { + return + } + type x struct{} + out := protoimpl.TypeBuilder{ + File: protoimpl.DescBuilder{ + GoPackagePath: reflect.TypeOf(x{}).PkgPath(), + RawDescriptor: file_common_service_proto_rawDesc, + NumEnums: 1, + NumMessages: 16, + NumExtensions: 0, + NumServices: 1, + }, + GoTypes: file_common_service_proto_goTypes, + DependencyIndexes: file_common_service_proto_depIdxs, + EnumInfos: file_common_service_proto_enumTypes, + MessageInfos: file_common_service_proto_msgTypes, + }.Build() + File_common_service_proto = out.File + file_common_service_proto_rawDesc = nil + file_common_service_proto_goTypes = nil + file_common_service_proto_depIdxs = nil +} diff --git a/common/service.proto b/common/service.proto new file mode 100644 index 0000000..e470e1f --- /dev/null +++ b/common/service.proto @@ -0,0 +1,125 @@ +syntax = "proto3"; + +package service; + +option go_package = "marzban_node_go/common"; + +message Empty {} + +// Base info response message +message BaseInfoResponse { + bool started = 1; + string core_version = 2; + string node_version = 3; + string session_id = 4; + string extra = 5; +} + +enum BackendType { + XRAY = 0; +} + +message Backend { + BackendType type = 1; + string config = 2; +} + +// log +message Log { + string detail = 1; +} + +// stats +message Stat { + string name = 1; + string type = 2; + string link = 3; + int64 value = 4; +} + +message StatResponse { + repeated Stat stats = 1; +} + +message OnlineStatRequest { + string email = 1; +} + +message OnlineStatResponse { + string email = 1; + int64 value = 2; +} + +message BackendStatsResponse { + uint32 num_goroutine = 1; + uint32 num_gc = 2; + uint64 alloc = 3; + uint64 total_alloc = 4; + uint64 sys = 5; + uint64 mallocs = 6; + uint64 frees = 7; + uint64 live_objects = 8; + uint64 pause_total_ns = 9; + uint32 uptime = 10; +} + +message SystemStatsResponse { + uint64 mem_total = 1; + uint64 mem_used = 2; + uint64 cpu_cores = 3; + double cpu_usage = 4; + uint64 incoming_bandwidth_speed = 5; + uint64 outgoing_bandwidth_speed = 6; +} + +// User +message VmessSetting { + string id = 1; +} + +message VlessSetting { + string id = 1; + string flow = 2; +} + +message TrojanSetting { + string password = 1; +} + +message ShadowsocksSetting { + string password = 1; + string method = 2; +} + +message Proxy { + VmessSetting vmess = 1; + VlessSetting vless = 2; + TrojanSetting trojan = 3; + ShadowsocksSetting shadowsocks = 4; +} + +message User { + string email = 1; + Proxy proxies = 2; + repeated string inbounds = 3; +} + +// Service for node management and connection +service NodeService { + rpc Start (Backend) returns (BaseInfoResponse) {} + rpc Stop (Empty) returns (Empty) {} + rpc GetBaseInfo (Empty) returns (BaseInfoResponse) {} + + rpc GetLogs (Empty) returns (stream Log) {} + + rpc GetNodeStats (Empty) returns (SystemStatsResponse) {} + rpc GetBackendStats (Empty) returns (BackendStatsResponse) {} + rpc GetOutboundsStats (Empty) returns (StatResponse) {} + rpc GetInboundsStats (Empty) returns (StatResponse) {} + rpc GetUsersStats (Empty) returns (StatResponse) {} + rpc GetUserOnlineStat (OnlineStatRequest) returns (OnlineStatResponse) {} + + rpc AddUser (User) returns (Empty) {} + rpc UpdateUser (User) returns (Empty) {} + rpc RemoveUser (User) returns (Empty) {} +} diff --git a/common/service_grpc.pb.go b/common/service_grpc.pb.go new file mode 100644 index 0000000..0da7a01 --- /dev/null +++ b/common/service_grpc.pb.go @@ -0,0 +1,585 @@ +// Code generated by protoc-gen-go-grpc. DO NOT EDIT. +// versions: +// - protoc-gen-go-grpc v1.5.1 +// - protoc v3.6.1 +// source: common/service.proto + +package common + +import ( + context "context" + grpc "google.golang.org/grpc" + codes "google.golang.org/grpc/codes" + status "google.golang.org/grpc/status" +) + +// This is a compile-time assertion to ensure that this generated file +// is compatible with the grpc package it is being compiled against. +// Requires gRPC-Go v1.64.0 or later. +const _ = grpc.SupportPackageIsVersion9 + +const ( + NodeService_Start_FullMethodName = "/service.NodeService/Start" + NodeService_Stop_FullMethodName = "/service.NodeService/Stop" + NodeService_GetBaseInfo_FullMethodName = "/service.NodeService/GetBaseInfo" + NodeService_GetLogs_FullMethodName = "/service.NodeService/GetLogs" + NodeService_GetNodeStats_FullMethodName = "/service.NodeService/GetNodeStats" + NodeService_GetBackendStats_FullMethodName = "/service.NodeService/GetBackendStats" + NodeService_GetOutboundsStats_FullMethodName = "/service.NodeService/GetOutboundsStats" + NodeService_GetInboundsStats_FullMethodName = "/service.NodeService/GetInboundsStats" + NodeService_GetUsersStats_FullMethodName = "/service.NodeService/GetUsersStats" + NodeService_GetUserOnlineStat_FullMethodName = "/service.NodeService/GetUserOnlineStat" + NodeService_AddUser_FullMethodName = "/service.NodeService/AddUser" + NodeService_UpdateUser_FullMethodName = "/service.NodeService/UpdateUser" + NodeService_RemoveUser_FullMethodName = "/service.NodeService/RemoveUser" +) + +// NodeServiceClient is the client API for NodeService service. +// +// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. +// +// Service for node management and connection +type NodeServiceClient interface { + Start(ctx context.Context, in *Backend, opts ...grpc.CallOption) (*BaseInfoResponse, error) + Stop(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) + GetBaseInfo(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*BaseInfoResponse, error) + GetLogs(ctx context.Context, in *Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[Log], error) + GetNodeStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SystemStatsResponse, error) + GetBackendStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*BackendStatsResponse, error) + GetOutboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) + GetInboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) + GetUsersStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) + GetUserOnlineStat(ctx context.Context, in *OnlineStatRequest, opts ...grpc.CallOption) (*OnlineStatResponse, error) + AddUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) + UpdateUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) + RemoveUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) +} + +type nodeServiceClient struct { + cc grpc.ClientConnInterface +} + +func NewNodeServiceClient(cc grpc.ClientConnInterface) NodeServiceClient { + return &nodeServiceClient{cc} +} + +func (c *nodeServiceClient) Start(ctx context.Context, in *Backend, opts ...grpc.CallOption) (*BaseInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(BaseInfoResponse) + err := c.cc.Invoke(ctx, NodeService_Start_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) Stop(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, NodeService_Stop_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) GetBaseInfo(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*BaseInfoResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(BaseInfoResponse) + err := c.cc.Invoke(ctx, NodeService_GetBaseInfo_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) GetLogs(ctx context.Context, in *Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[Log], error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + stream, err := c.cc.NewStream(ctx, &NodeService_ServiceDesc.Streams[0], NodeService_GetLogs_FullMethodName, cOpts...) + if err != nil { + return nil, err + } + x := &grpc.GenericClientStream[Empty, Log]{ClientStream: stream} + if err := x.ClientStream.SendMsg(in); err != nil { + return nil, err + } + if err := x.ClientStream.CloseSend(); err != nil { + return nil, err + } + return x, nil +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type NodeService_GetLogsClient = grpc.ServerStreamingClient[Log] + +func (c *nodeServiceClient) GetNodeStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SystemStatsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(SystemStatsResponse) + err := c.cc.Invoke(ctx, NodeService_GetNodeStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) GetBackendStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*BackendStatsResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(BackendStatsResponse) + err := c.cc.Invoke(ctx, NodeService_GetBackendStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) GetOutboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatResponse) + err := c.cc.Invoke(ctx, NodeService_GetOutboundsStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) GetInboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatResponse) + err := c.cc.Invoke(ctx, NodeService_GetInboundsStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) GetUsersStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatResponse) + err := c.cc.Invoke(ctx, NodeService_GetUsersStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) GetUserOnlineStat(ctx context.Context, in *OnlineStatRequest, opts ...grpc.CallOption) (*OnlineStatResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(OnlineStatResponse) + err := c.cc.Invoke(ctx, NodeService_GetUserOnlineStat_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) AddUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, NodeService_AddUser_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) UpdateUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, NodeService_UpdateUser_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +func (c *nodeServiceClient) RemoveUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, NodeService_RemoveUser_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + +// NodeServiceServer is the server API for NodeService service. +// All implementations must embed UnimplementedNodeServiceServer +// for forward compatibility. +// +// Service for node management and connection +type NodeServiceServer interface { + Start(context.Context, *Backend) (*BaseInfoResponse, error) + Stop(context.Context, *Empty) (*Empty, error) + GetBaseInfo(context.Context, *Empty) (*BaseInfoResponse, error) + GetLogs(*Empty, grpc.ServerStreamingServer[Log]) error + GetNodeStats(context.Context, *Empty) (*SystemStatsResponse, error) + GetBackendStats(context.Context, *Empty) (*BackendStatsResponse, error) + GetOutboundsStats(context.Context, *Empty) (*StatResponse, error) + GetInboundsStats(context.Context, *Empty) (*StatResponse, error) + GetUsersStats(context.Context, *Empty) (*StatResponse, error) + GetUserOnlineStat(context.Context, *OnlineStatRequest) (*OnlineStatResponse, error) + AddUser(context.Context, *User) (*Empty, error) + UpdateUser(context.Context, *User) (*Empty, error) + RemoveUser(context.Context, *User) (*Empty, error) + mustEmbedUnimplementedNodeServiceServer() +} + +// UnimplementedNodeServiceServer must be embedded to have +// forward compatible implementations. +// +// NOTE: this should be embedded by value instead of pointer to avoid a nil +// pointer dereference when methods are called. +type UnimplementedNodeServiceServer struct{} + +func (UnimplementedNodeServiceServer) Start(context.Context, *Backend) (*BaseInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method Start not implemented") +} +func (UnimplementedNodeServiceServer) Stop(context.Context, *Empty) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method Stop not implemented") +} +func (UnimplementedNodeServiceServer) GetBaseInfo(context.Context, *Empty) (*BaseInfoResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBaseInfo not implemented") +} +func (UnimplementedNodeServiceServer) GetLogs(*Empty, grpc.ServerStreamingServer[Log]) error { + return status.Errorf(codes.Unimplemented, "method GetLogs not implemented") +} +func (UnimplementedNodeServiceServer) GetNodeStats(context.Context, *Empty) (*SystemStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetNodeStats not implemented") +} +func (UnimplementedNodeServiceServer) GetBackendStats(context.Context, *Empty) (*BackendStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetBackendStats not implemented") +} +func (UnimplementedNodeServiceServer) GetOutboundsStats(context.Context, *Empty) (*StatResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetOutboundsStats not implemented") +} +func (UnimplementedNodeServiceServer) GetInboundsStats(context.Context, *Empty) (*StatResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetInboundsStats not implemented") +} +func (UnimplementedNodeServiceServer) GetUsersStats(context.Context, *Empty) (*StatResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUsersStats not implemented") +} +func (UnimplementedNodeServiceServer) GetUserOnlineStat(context.Context, *OnlineStatRequest) (*OnlineStatResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUserOnlineStat not implemented") +} +func (UnimplementedNodeServiceServer) AddUser(context.Context, *User) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method AddUser not implemented") +} +func (UnimplementedNodeServiceServer) UpdateUser(context.Context, *User) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method UpdateUser not implemented") +} +func (UnimplementedNodeServiceServer) RemoveUser(context.Context, *User) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method RemoveUser not implemented") +} +func (UnimplementedNodeServiceServer) mustEmbedUnimplementedNodeServiceServer() {} +func (UnimplementedNodeServiceServer) testEmbeddedByValue() {} + +// UnsafeNodeServiceServer may be embedded to opt out of forward compatibility for this service. +// Use of this interface is not recommended, as added methods to NodeServiceServer will +// result in compilation errors. +type UnsafeNodeServiceServer interface { + mustEmbedUnimplementedNodeServiceServer() +} + +func RegisterNodeServiceServer(s grpc.ServiceRegistrar, srv NodeServiceServer) { + // If the following call pancis, it indicates UnimplementedNodeServiceServer was + // embedded by pointer and is nil. This will cause panics if an + // unimplemented method is ever invoked, so we test this at initialization + // time to prevent it from happening at runtime later due to I/O. + if t, ok := srv.(interface{ testEmbeddedByValue() }); ok { + t.testEmbeddedByValue() + } + s.RegisterService(&NodeService_ServiceDesc, srv) +} + +func _NodeService_Start_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Backend) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).Start(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_Start_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).Start(ctx, req.(*Backend)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_Stop_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).Stop(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_Stop_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).Stop(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_GetBaseInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).GetBaseInfo(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_GetBaseInfo_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).GetBaseInfo(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_GetLogs_Handler(srv interface{}, stream grpc.ServerStream) error { + m := new(Empty) + if err := stream.RecvMsg(m); err != nil { + return err + } + return srv.(NodeServiceServer).GetLogs(m, &grpc.GenericServerStream[Empty, Log]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type NodeService_GetLogsServer = grpc.ServerStreamingServer[Log] + +func _NodeService_GetNodeStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).GetNodeStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_GetNodeStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).GetNodeStats(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_GetBackendStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).GetBackendStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_GetBackendStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).GetBackendStats(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_GetOutboundsStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).GetOutboundsStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_GetOutboundsStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).GetOutboundsStats(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_GetInboundsStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).GetInboundsStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_GetInboundsStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).GetInboundsStats(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_GetUsersStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).GetUsersStats(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_GetUsersStats_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).GetUsersStats(ctx, req.(*Empty)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_GetUserOnlineStat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(OnlineStatRequest) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).GetUserOnlineStat(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_GetUserOnlineStat_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).GetUserOnlineStat(ctx, req.(*OnlineStatRequest)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_AddUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(User) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).AddUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_AddUser_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).AddUser(ctx, req.(*User)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_UpdateUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(User) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).UpdateUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_UpdateUser_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).UpdateUser(ctx, req.(*User)) + } + return interceptor(ctx, in, info, handler) +} + +func _NodeService_RemoveUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(User) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).RemoveUser(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_RemoveUser_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).RemoveUser(ctx, req.(*User)) + } + return interceptor(ctx, in, info, handler) +} + +// NodeService_ServiceDesc is the grpc.ServiceDesc for NodeService service. +// It's only intended for direct use with grpc.RegisterService, +// and not to be introspected or modified (even as a copy) +var NodeService_ServiceDesc = grpc.ServiceDesc{ + ServiceName: "service.NodeService", + HandlerType: (*NodeServiceServer)(nil), + Methods: []grpc.MethodDesc{ + { + MethodName: "Start", + Handler: _NodeService_Start_Handler, + }, + { + MethodName: "Stop", + Handler: _NodeService_Stop_Handler, + }, + { + MethodName: "GetBaseInfo", + Handler: _NodeService_GetBaseInfo_Handler, + }, + { + MethodName: "GetNodeStats", + Handler: _NodeService_GetNodeStats_Handler, + }, + { + MethodName: "GetBackendStats", + Handler: _NodeService_GetBackendStats_Handler, + }, + { + MethodName: "GetOutboundsStats", + Handler: _NodeService_GetOutboundsStats_Handler, + }, + { + MethodName: "GetInboundsStats", + Handler: _NodeService_GetInboundsStats_Handler, + }, + { + MethodName: "GetUsersStats", + Handler: _NodeService_GetUsersStats_Handler, + }, + { + MethodName: "GetUserOnlineStat", + Handler: _NodeService_GetUserOnlineStat_Handler, + }, + { + MethodName: "AddUser", + Handler: _NodeService_AddUser_Handler, + }, + { + MethodName: "UpdateUser", + Handler: _NodeService_UpdateUser_Handler, + }, + { + MethodName: "RemoveUser", + Handler: _NodeService_RemoveUser_Handler, + }, + }, + Streams: []grpc.StreamDesc{ + { + StreamName: "GetLogs", + Handler: _NodeService_GetLogs_Handler, + ServerStreams: true, + }, + }, + Metadata: "common/service.proto", +} diff --git a/config/config.go b/config/config.go index 6e0a1cf..2872362 100644 --- a/config/config.go +++ b/config/config.go @@ -12,7 +12,7 @@ import ( func init() { err := godotenv.Load() if err != nil { - log.Fatalf("Failed to load env file , Error: %v", err) + log.Printf("Failed to load env file, node will use default values, Error: %v", err) } ServicePort = GetEnvAsInt("SERVICE_PORT", 62050) @@ -20,8 +20,9 @@ func init() { XrayAssetsPath = GetEnv("XRAY_ASSETS_PATH", "/usr/local/share/xray") SslCertFile = GetEnv("SSL_CERT_FILE", "/var/lib/marzban-node/ssl_cert.pem") SslKeyFile = GetEnv("SSL_KEY_FILE", "/var/lib/marzban-node/ssl_key.pem") - SslClientCertFile = GetEnv("SSL_CLIENT_CERT_FILE", "/var/lib/marzban-node/ssl_client_cert_file.pem") - GeneratedConfigPath = GetEnv("GENERATED_CONFIG_PATH", "/var/lib/marzban-node/generated_config-debug.json") + SslClientCertFile = GetEnv("SSL_CLIENT_CERT_FILE", "/var/lib/marzban-node/ssl_client_cert.pem") + GeneratedConfigPath = GetEnv("GENERATED_CONFIG_PATH", "/var/lib/marzban-node/generated/") + ServiceProtocol = GetEnv("SERVICE_PROTOCOL", "rest") MaxLogPerRequest = GetEnvAsInt("MAX_LOG_PER_REQUEST", 1000) Debug = GetEnvAsBool("DEBUG", false) nodeHostStr := GetEnv("NODE_HOST", "0.0.0.0") @@ -40,6 +41,22 @@ func init() { } } +// Warning: only use in tests +func SetEnv(port, maxLogPerRequest int, host, xrayExecutablePath, xrayAssetsPath, sslCertFile, sslKeyFile, sslClientCertFile, + serviceProtocol, generatedConfigPath string, debug bool) { + ServicePort = port + NodeHost = host + XrayExecutablePath = xrayExecutablePath + XrayAssetsPath = xrayAssetsPath + SslCertFile = sslCertFile + SslKeyFile = sslKeyFile + SslClientCertFile = sslClientCertFile + ServiceProtocol = serviceProtocol + MaxLogPerRequest = maxLogPerRequest + GeneratedConfigPath = generatedConfigPath + Debug = debug +} + func GetEnv(key, fallback string) string { value, exists := os.LookupEnv(key) if !exists { @@ -72,6 +89,7 @@ var ( SslCertFile string SslKeyFile string SslClientCertFile string + ServiceProtocol string MaxLogPerRequest int Debug bool GeneratedConfigPath string diff --git a/controller/controller.go b/controller/controller.go new file mode 100644 index 0000000..baf0170 --- /dev/null +++ b/controller/controller.go @@ -0,0 +1,155 @@ +package controller + +import ( + "context" + "errors" + "log" + "sync" + "time" + + "github.com/google/uuid" + + "github.com/m03ed/marzban-node-go/backend" + "github.com/m03ed/marzban-node-go/backend/xray" + "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/marzban-node-go/config" + "github.com/m03ed/marzban-node-go/tools" +) + +const NodeVersion = "0.1.2" + +type Service interface { + StopService() +} + +type Controller struct { + backend backend.Backend + sessionID uuid.UUID + apiPort int + stats *common.SystemStatsResponse + cancelFunc context.CancelFunc + mu sync.Mutex +} + +func NewController() *Controller { + c := &Controller{ + sessionID: uuid.Nil, + apiPort: tools.FindFreePort(), + } + c.startJobs() + return c +} + +func (c *Controller) GetSessionID() uuid.UUID { + c.mu.Lock() + defer c.mu.Unlock() + return c.sessionID +} + +func (c *Controller) Connect() { + c.mu.Lock() + defer c.mu.Unlock() + c.sessionID = uuid.New() +} + +func (c *Controller) Disconnect() { + c.mu.Lock() + defer c.mu.Unlock() + + apiPort := tools.FindFreePort() + c.apiPort = apiPort + + c.sessionID = uuid.Nil + + if c.backend != nil { + c.backend.Shutdown() + } + c.backend = nil +} + +func (c *Controller) StartBackend(ctx context.Context, backendType common.BackendType) error { + c.mu.Lock() + defer c.mu.Unlock() + + switch backendType { + case common.BackendType_XRAY: + newBackend, err := xray.NewXray(ctx, c.apiPort, config.XrayExecutablePath, config.XrayAssetsPath, config.GeneratedConfigPath) + if err != nil { + return err + } + c.backend = newBackend + default: + return errors.New("invalid backend type") + } + + return nil +} + +func (c *Controller) GetBackend() backend.Backend { + c.mu.Lock() + defer c.mu.Unlock() + return c.backend +} + +func (c *Controller) recordSystemStats(ctx context.Context) { + for { + select { + case <-ctx.Done(): + break + default: + stats, err := tools.GetSystemStats() + if err != nil { + log.Printf("Failed to get system stats: %v", err) + } else { + c.mu.Lock() + c.stats = stats + c.mu.Unlock() + } + time.Sleep(100 * time.Millisecond) + } + } +} + +func (c *Controller) GetStats() *common.SystemStatsResponse { + c.mu.Lock() + defer c.mu.Unlock() + return c.stats +} + +func (c *Controller) BaseInfoResponse(includeID bool, extra string) *common.BaseInfoResponse { + c.mu.Lock() + defer c.mu.Unlock() + + response := &common.BaseInfoResponse{ + Started: false, + CoreVersion: "", + NodeVersion: NodeVersion, + Extra: extra, + } + + if c.backend != nil { + response.Started = c.backend.Started() + response.CoreVersion = c.backend.GetVersion() + } + if includeID { + response.SessionId = c.sessionID.String() + } + + return response +} + +func (c *Controller) startJobs() { + ctx, cancel := context.WithCancel(context.Background()) + c.mu.Lock() + defer c.mu.Unlock() + c.cancelFunc = cancel + go c.recordSystemStats(ctx) +} + +func (c *Controller) StopJobs() { + c.Disconnect() + + c.mu.Lock() + defer c.mu.Unlock() + c.cancelFunc() +} diff --git a/controller/rest/base.go b/controller/rest/base.go new file mode 100644 index 0000000..45f0db8 --- /dev/null +++ b/controller/rest/base.go @@ -0,0 +1,85 @@ +package rest + +import ( + "context" + "encoding/json" + "errors" + "log" + "net" + "net/http" + + "github.com/m03ed/marzban-node-go/backend" + "github.com/m03ed/marzban-node-go/backend/xray" + "github.com/m03ed/marzban-node-go/common" +) + +func (s *Service) Base(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(s.controller.BaseInfoResponse(false, "")) +} + +func (s *Service) Ping(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(map[string]interface{}{}) +} + +func (s *Service) Start(w http.ResponseWriter, r *http.Request) { + ctx, backendType, err := s.detectBackend(r) + if err != nil { + http.Error(w, err.Error(), http.StatusServiceUnavailable) + return + } + + ip, _, err := net.SplitHostPort(r.RemoteAddr) + if err != nil { + http.Error(w, "unknown ip", http.StatusServiceUnavailable) + return + } + + if s.controller.GetBackend() != nil { + log.Println("New connection from ", ip, " core control access was taken away from previous client.") + s.disconnect() + } + + s.connect(ip) + + log.Println(ip, " connected, Session ID = ", s.controller.GetSessionID()) + + if err = s.controller.StartBackend(ctx, backendType); err != nil { + http.Error(w, err.Error(), http.StatusServiceUnavailable) + return + } + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(s.controller.BaseInfoResponse(true, "")) +} + +func (s *Service) Stop(w http.ResponseWriter, _ *http.Request) { + log.Println(s.GetIP(), " disconnected, Session ID = ", s.controller.GetSessionID()) + s.disconnect() + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(map[string]interface{}{}) +} + +func (s *Service) detectBackend(r *http.Request) (context.Context, common.BackendType, error) { + var body common.Backend + var ctx context.Context + + // Decode into a map + if err := json.NewDecoder(r.Body).Decode(&body); err != nil { + return nil, 0, errors.New("invalid JSON") + } + + if body.Type == common.BackendType_XRAY { + config, err := xray.NewXRayConfig(body.Config) + if err != nil { + return nil, 0, errors.New("invalid Config") + } + ctx = context.WithValue(r.Context(), backend.ConfigKey{}, config) + } else { + return ctx, body.Type, errors.New("invalid backend type") + } + + return ctx, body.Type, nil +} diff --git a/service/log_api.go b/controller/rest/log.go similarity index 75% rename from service/log_api.go rename to controller/rest/log.go index abdcc92..2e751c8 100644 --- a/service/log_api.go +++ b/controller/rest/log.go @@ -1,36 +1,28 @@ -package service +package rest import ( "encoding/json" - "marzban-node/config" "net/http" "time" + + "github.com/m03ed/marzban-node-go/config" ) type logResponse struct { - Logs []string `json:"logs,omitempty"` - Error string `json:"error,omitempty"` + Logs []string `json:"logs,omitempty"` } func sendLogs(w http.ResponseWriter, logs []string, status int) { - err := "" - if status != http.StatusOK { - err = http.StatusText(status) - } w.Header().Set("Content-Type", "application/json") + w.WriteHeader(status) _ = json.NewEncoder(w).Encode(logResponse{ - Logs: logs, - Error: err, + Logs: logs, }) } -func (s *Service) Logs(w http.ResponseWriter, r *http.Request) { - core := s.GetCore() - if !core.Started() { - sendLogs(w, []string{}, http.StatusTooEarly) - } - logs := make([]string, 0, 100) - logChan := core.GetLogs() +func (s *Service) GetLogs(w http.ResponseWriter, r *http.Request) { + logs := make([]string, 0, config.MaxLogPerRequest) + logChan := s.controller.GetBackend().GetLogs() timeout := time.After(60 * time.Second) counter := 0 diff --git a/service/middleware.go b/controller/rest/middleware.go similarity index 66% rename from service/middleware.go rename to controller/rest/middleware.go index 2cf8f3e..035f275 100644 --- a/service/middleware.go +++ b/controller/rest/middleware.go @@ -1,23 +1,21 @@ -package service +package rest import ( "fmt" + "log" "net" "net/http" "strings" "github.com/go-chi/chi/v5/middleware" - "github.com/google/uuid" - - log "marzban-node/logger" ) -func (s *Service) checkSessionID(next http.Handler) http.Handler { +func (s *Service) checkSessionIDMiddleware(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { // check ip clientIP := s.GetIP() - clientID := s.GetSessionID() + clientID := s.controller.GetSessionID() if clientIP == "" || clientID == uuid.Nil { http.Error(w, "please connect first", http.StatusTooEarly) return @@ -56,12 +54,27 @@ func (s *Service) checkSessionID(next http.Handler) http.Handler { }) } +func (s *Service) checkBackendMiddleware(next http.Handler) http.Handler { + return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { + back := s.controller.GetBackend() + if back == nil { + http.Error(w, "backend not initialized", http.StatusInternalServerError) + return + } + if !back.Started() { + http.Error(w, "core is not started yet", http.StatusServiceUnavailable) + return + } + + next.ServeHTTP(w, r) + }) +} + func LogRequest(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ww := middleware.NewWrapResponseWriter(w, r.ProtoMajor) next.ServeHTTP(ww, r) - logMessage := fmt.Sprintf("%s, %s, %s, %d", r.RemoteAddr, r.Method, r.URL.Path, ww.Status()) - log.Api(logMessage) + log.Println(fmt.Sprintf("[API] %s, %s, %s, %d", r.RemoteAddr, r.Method, r.URL.Path, ww.Status())) }) } diff --git a/controller/rest/rest_test.go b/controller/rest/rest_test.go new file mode 100644 index 0000000..8333af0 --- /dev/null +++ b/controller/rest/rest_test.go @@ -0,0 +1,333 @@ +package rest + +import ( + "bytes" + "context" + "crypto/tls" + "encoding/json" + "fmt" + nodeLogger "github.com/m03ed/marzban-node-go/logger" + "io" + "log" + "net/http" + "os" + "testing" + "time" + + "github.com/google/uuid" + + "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/marzban-node-go/config" + "github.com/m03ed/marzban-node-go/tools" +) + +var ( + servicePort = 8002 + nodeHost = "127.0.0.1" + xrayExecutablePath = "/usr/local/bin/xray" + xrayAssetsPath = "/usr/local/share/xray" + sslCertFile = "/var/lib/marzban-node/ssl_cert.pem" + sslKeyFile = "/var/lib/marzban-node/ssl_key.pem" + sslClientCertFile = "/var/lib/marzban-node/ssl_client_cert.pem" + sslClientKeyFile = "/var/lib/marzban-node/ssl_client_key.pem" + generatedConfigPath = "/var/lib/marzban-node/generated/" + addr = fmt.Sprintf("%s:%d", nodeHost, servicePort) + configPath = "../../backend/xray/config.json" +) + +// httpClient creates a custom HTTP client with TLS configuration +func createHTTPClient(tlsConfig *tls.Config) *http.Client { + return &http.Client{ + Transport: &http.Transport{ + TLSClientConfig: tlsConfig, + }, + Timeout: 10 * time.Second, + } +} + +func TestRESTConnection(t *testing.T) { + config.SetEnv(servicePort, 1000, nodeHost, xrayExecutablePath, xrayAssetsPath, + sslCertFile, sslKeyFile, sslClientCertFile, "rest", generatedConfigPath, true) + + nodeLogger.SetOutputMode(true) + + certFileExists := tools.FileExists(sslCertFile) + keyFileExists := tools.FileExists(sslKeyFile) + if !certFileExists || !keyFileExists { + if err := tools.RewriteSslFile(sslCertFile, sslKeyFile); err != nil { + t.Fatal(err) + } + } + + clientFileExists := tools.FileExists(sslClientCertFile) + if !clientFileExists { + t.Fatal("SSL_CLIENT_CERT_FILE is required.") + } + + tlsConfig, err := tools.LoadTLSCredentials(sslCertFile, sslKeyFile, sslClientCertFile, false) + if err != nil { + t.Fatal(err) + } + + shutdownFunc, s, err := StartHttpListener(tlsConfig, addr) + if err != nil { + t.Fatalf("Failed to start HTTP listener: %v", err) + } + defer s.StopService() + + creds, err := tools.LoadTLSCredentials(sslClientCertFile, sslClientKeyFile, sslCertFile, true) + if err != nil { + t.Fatal(err) + } + + client := createHTTPClient(creds) + + configFile, err := os.ReadFile(configPath) + if err != nil { + t.Fatal(err) + } + + backendStartReq := &common.Backend{ + Type: common.BackendType_XRAY, + Config: string(configFile), + } + + jsonBody, _ := json.Marshal(backendStartReq) + + url := fmt.Sprintf("https://%s", addr) + + resp, err := client.Post(url+"/start", "application/json", bytes.NewBuffer(jsonBody)) + if err != nil { + t.Fatalf("Failed to start backend: %v", err) + } + defer resp.Body.Close() + + var baseInfoResp common.BaseInfoResponse + body, _ := io.ReadAll(resp.Body) + err = json.Unmarshal(body, &baseInfoResp) + if err != nil { + t.Fatalf("Failed to parse start response: %v", err) + } + + sessionID := baseInfoResp.SessionId + if sessionID == "" { + t.Fatal("No session ID received") + } + + createAuthenticatedRequest := func(method, endpoint string, body io.Reader) (*http.Request, error) { + req, err := http.NewRequest(method, url+endpoint, body) + if err != nil { + return nil, err + } + req.Header.Set("Authorization", "Bearer "+sessionID) + if body != nil { + req.Header.Set("Content-Type", "application/json") // Set content type if body exists + } + return req, nil + } + + pingReq, _ := createAuthenticatedRequest("GET", "/ping", nil) + pingResp, err := client.Do(pingReq) + if err != nil { + t.Fatalf("Ping request failed: %v", err) + } + defer pingResp.Body.Close() + + // Try To Get Outbounds Stats + outboundsStatsReq, _ := createAuthenticatedRequest("GET", "/stats/outbounds", nil) + outboundsStatsResp, err := client.Do(outboundsStatsReq) + if err != nil { + t.Fatalf("Outbounds stats request failed: %v", err) + } + defer outboundsStatsResp.Body.Close() + + var outboundsStats common.StatResponse + outboundsStatsBody, _ := io.ReadAll(outboundsStatsResp.Body) + err = json.Unmarshal(outboundsStatsBody, &outboundsStats) + if err != nil { + t.Fatalf("Failed to parse outbounds stats: %v", err) + } + + for _, stat := range outboundsStats.Stats { + log.Printf("Outbound Stat - Name: %s, Traffic: %d, Type: %s, Link: %s", + stat.Name, stat.Value, stat.Type, stat.Link) + } + + // Try To Get Inbounds Stats + inboundsStatsReq, _ := createAuthenticatedRequest("GET", "/stats/inbounds", nil) + inboundsStatsResp, err := client.Do(inboundsStatsReq) + if err != nil { + t.Fatalf("Inbounds stats request failed: %v", err) + } + defer inboundsStatsResp.Body.Close() + + var inboundsStats common.StatResponse + inboundsStatsBody, _ := io.ReadAll(inboundsStatsResp.Body) + err = json.Unmarshal(inboundsStatsBody, &inboundsStats) + if err != nil { + t.Fatalf("Failed to parse inbounds stats: %v", err) + } + + for _, stat := range inboundsStats.Stats { + log.Printf("Inbound Stat - Name: %s, Traffic: %d, Type: %s, Link: %s", + stat.Name, stat.Value, stat.Type, stat.Link) + } + + // Try To Get Users Stats + usersStatsReq, _ := createAuthenticatedRequest("GET", "/stats/users", nil) + usersStatsResp, err := client.Do(usersStatsReq) + if err != nil { + t.Fatalf("Users stats request failed: %v", err) + } + defer usersStatsResp.Body.Close() + + var usersStats common.StatResponse + usersStatsBody, _ := io.ReadAll(usersStatsResp.Body) + err = json.Unmarshal(usersStatsBody, &usersStats) + if err != nil { + t.Fatalf("Failed to parse Users stats: %v", err) + } + + for _, stat := range inboundsStats.Stats { + log.Printf("User Stat - Name: %s, Traffic: %d, Type: %s, Link: %s", + stat.Name, stat.Value, stat.Type, stat.Link) + } + + // Try To Get Backend Stats + backendStatsReq, _ := createAuthenticatedRequest("GET", "/stats/system", nil) + backendStatsResp, err := client.Do(backendStatsReq) + if err != nil { + t.Fatalf("Backend stats request failed: %v", err) + } + defer backendStatsResp.Body.Close() + + var backendStats common.BackendStatsResponse + backendStatsBody, _ := io.ReadAll(backendStatsResp.Body) + err = json.Unmarshal(backendStatsBody, &backendStats) + if err != nil { + t.Fatalf("Failed to parse backend stats: %v", err) + } + + for _, stat := range inboundsStats.Stats { + log.Printf("Users Stat - Name: %s, Traffic: %d, Type: %s, Link: %s", + stat.Name, stat.Value, stat.Type, stat.Link) + } + + user := &common.User{ + Email: "test_user1@example.com", + Inbounds: []string{"VMESS TCP NOTLS", "VLESS TCP REALITY", "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP"}, + Proxies: &common.Proxy{ + Vmess: &common.VmessSetting{ + Id: uuid.New().String(), + }, + Vless: &common.VlessSetting{ + Id: uuid.New().String(), + }, + Trojan: &common.TrojanSetting{ + Password: "try a random string", + }, + Shadowsocks: &common.ShadowsocksSetting{ + Password: "try a random string", + Method: "AES_256_GCM", + }, + }, + } + + jsonBody, _ = json.Marshal(user) + + // Try To Add User + addUserReq, _ := createAuthenticatedRequest("POST", "/user/add", bytes.NewBuffer(jsonBody)) + addUserResp, err := client.Do(addUserReq) + if err != nil { + t.Fatalf("Add user request failed: %v", err) + } + defer addUserResp.Body.Close() + + user = &common.User{ + Email: "test_user2@example.com", + Inbounds: []string{"VMESS TCP NOTLS", "VLESS TCP REALITY", "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP"}, + Proxies: &common.Proxy{ + Vmess: &common.VmessSetting{ + Id: uuid.New().String(), + }, + Vless: &common.VlessSetting{ + Id: uuid.New().String(), + }, + Trojan: &common.TrojanSetting{ + Password: "try a random string", + }, + Shadowsocks: &common.ShadowsocksSetting{ + Password: "try a random string", + Method: "AES_128_GCM", + }, + }, + } + + jsonBody, _ = json.Marshal(user) + + // Try To Update User + updateUserReq, _ := createAuthenticatedRequest("PUT", "/user/update", bytes.NewBuffer(jsonBody)) + updateUserResp, err := client.Do(updateUserReq) + if err != nil { + t.Fatalf("Update user request failed: %v", err) + } + defer updateUserResp.Body.Close() + + // Try To remove User + removeUserReq, _ := createAuthenticatedRequest("POST", "/user/remove", bytes.NewBuffer(jsonBody)) + removeUserResp, err := client.Do(removeUserReq) + if err != nil { + t.Fatalf("Remove user request failed: %v", err) + } + defer removeUserResp.Body.Close() + + logsReq, _ := createAuthenticatedRequest("GET", "/logs", nil) + logsResp, err := client.Do(logsReq) + if err != nil { + t.Fatalf("Logs request failed: %v", err) + } + defer logsResp.Body.Close() + + logsBody, _ := io.ReadAll(logsResp.Body) + var logs logResponse + err = json.Unmarshal(logsBody, &logs) + if err != nil { + t.Fatalf("Failed to parse logs: %v", err) + } + + for _, newLog := range logs.Logs { + fmt.Println("Log detail:", newLog) + } + + time.Sleep(2 * time.Second) + + // Try To Get Node Stats + nodeStatsReq, _ := createAuthenticatedRequest("GET", "/stats/node", nil) + nodeStatsResp, err := client.Do(nodeStatsReq) + if err != nil { + t.Fatalf("Node stats request failed: %v", err) + } + defer nodeStatsResp.Body.Close() + + var systemStats common.SystemStatsResponse + nodeStatsBody, _ := io.ReadAll(nodeStatsResp.Body) + err = json.Unmarshal(nodeStatsBody, &systemStats) + if err != nil { + t.Fatalf("Failed to parse node stats: %v", err) + } + fmt.Printf("System Stats: \nMem Total: %d \nMem Used: %d \nCpu Number: %d \nCpu Usage: %f \nIncoming: %d \nOutgoing: %d \n", + systemStats.MemTotal, systemStats.MemUsed, systemStats.CpuCores, systemStats.CpuUsage, systemStats.IncomingBandwidthSpeed, systemStats.OutgoingBandwidthSpeed) + + stopReq, _ := createAuthenticatedRequest("PUT", "/stop", nil) + stopResp, err := client.Do(stopReq) + if err != nil { + t.Fatalf("Stop request failed: %v", err) + } + defer stopResp.Body.Close() + + ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + defer cancel() + if err = shutdownFunc(ctx); err != nil { + t.Fatalf("Failed to shutdown server: %v", err) + } +} diff --git a/controller/rest/service.go b/controller/rest/service.go new file mode 100644 index 0000000..5ba4ee8 --- /dev/null +++ b/controller/rest/service.go @@ -0,0 +1,148 @@ +package rest + +import ( + "context" + "crypto/tls" + "errors" + "log" + "net/http" + "sync" + + "github.com/go-chi/chi/v5" + "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/marzban-node-go/controller" +) + +func NewService() *Service { + s := &Service{ + controller: controller.NewController(), + clientIP: "", + } + s.setRouter() + return s +} + +func (s *Service) setRouter() { + router := chi.NewRouter() + + // Api Handlers + router.Use(LogRequest) + + router.Post("/start", s.Start) + + router.Group(func(protected chi.Router) { + // check session and need to return data as context + protected.Use(s.checkSessionIDMiddleware) + protected.Get("/", s.Base) + + protected.Get("/ping", s.Ping) + protected.Put("/stop", s.Stop) + protected.Get("/logs", s.GetLogs) + + protected.Get("/stats/node", s.GetNodeStats) + + protected.Group(func(private chi.Router) { + private.Use(s.checkBackendMiddleware) + + // stats api + private.Route("/stats", func(statsGroup chi.Router) { + statsGroup.Get("/inbounds", s.GetInboundsStats) + statsGroup.Get("/outbounds", s.GetOutboundsStats) + statsGroup.Get("/user/{email}", s.GetUserOnlineStat) + statsGroup.Get("/users", s.GetUsersStats) + statsGroup.Get("/system", s.GetBackendStats) + }) + + // users api + private.Route("/user", func(userGroup chi.Router) { + userGroup.Post("/add", s.AddUser) + userGroup.Put("/update", s.UpdateUser) + userGroup.Post("/remove", s.RemoveUser) + }) + }) + }) + + s.mu.Lock() + defer s.mu.Unlock() + s.Router = router +} + +type Service struct { + Router chi.Router + clientIP string + controller *controller.Controller + mu sync.Mutex +} + +func (s *Service) connect(ip string) { + s.mu.Lock() + defer s.mu.Unlock() + s.clientIP = ip + s.controller.Connect() +} + +func (s *Service) disconnect() { + s.controller.Disconnect() + + s.mu.Lock() + defer s.mu.Unlock() + + s.clientIP = "" +} + +func (s *Service) StopService() { + s.mu.Lock() + defer s.mu.Unlock() + s.controller.StopJobs() +} + +func (s *Service) GetIP() string { + s.mu.Lock() + defer s.mu.Unlock() + return s.clientIP +} + +func (s *Service) response(includeID bool, extra string) *common.BaseInfoResponse { + response := &common.BaseInfoResponse{ + Started: false, + CoreVersion: "", + NodeVersion: controller.NodeVersion, + Extra: extra, + } + + s.mu.Lock() + defer s.mu.Unlock() + + back := s.controller.GetBackend() + if back != nil { + response.Started = back.Started() + response.CoreVersion = back.GetVersion() + } + + if includeID { + response.SessionId = s.controller.GetSessionID().String() + } + + return response +} + +func StartHttpListener(tlsConfig *tls.Config, addr string) (func(ctx context.Context) error, controller.Service, error) { + s := NewService() + + httpServer := &http.Server{ + Addr: addr, + TLSConfig: tlsConfig, + Handler: s.Router, + } + + go func() { + log.Println("HTTP Server listening on", addr) + log.Println("Press Ctrl+C to stop") + if err := httpServer.ListenAndServeTLS("", ""); err != nil && !errors.Is(err, http.ErrServerClosed) { + log.Printf("HTTP server error: %v", err) + } + }() + + // Return a shutdown function for HTTP server + return httpServer.Shutdown, controller.Service(s), nil +} diff --git a/controller/rest/stats.go b/controller/rest/stats.go new file mode 100644 index 0000000..14311ac --- /dev/null +++ b/controller/rest/stats.go @@ -0,0 +1,70 @@ +package rest + +import ( + "encoding/json" + "github.com/go-chi/chi/v5" + "net/http" +) + +func (s *Service) GetOutboundsStats(w http.ResponseWriter, r *http.Request) { + response, err := s.controller.GetBackend().GetOutboundsStats(r.Context(), true) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(response) +} + +func (s *Service) GetInboundsStats(w http.ResponseWriter, r *http.Request) { + response, err := s.controller.GetBackend().GetInboundsStats(r.Context(), true) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(response) +} + +func (s *Service) GetUsersStats(w http.ResponseWriter, r *http.Request) { + response, err := s.controller.GetBackend().GetUsersStats(r.Context(), true) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(response) +} + +func (s *Service) GetUserOnlineStat(w http.ResponseWriter, r *http.Request) { + email := chi.URLParam(r, "email") + if email == "" { + http.Error(w, "missing email", http.StatusBadRequest) + return + } + + response, err := s.controller.GetBackend().GetStatOnline(r.Context(), email) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(response) +} + +func (s *Service) GetBackendStats(w http.ResponseWriter, r *http.Request) { + response, err := s.controller.GetBackend().GetSysStats(r.Context()) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(response) +} + +func (s *Service) GetNodeStats(w http.ResponseWriter, _ *http.Request) { + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(s.controller.GetStats()) +} diff --git a/controller/rest/user.go b/controller/rest/user.go new file mode 100644 index 0000000..a04ff8e --- /dev/null +++ b/controller/rest/user.go @@ -0,0 +1,68 @@ +package rest + +import ( + "encoding/json" + "net/http" + + "github.com/m03ed/marzban-node-go/common" +) + +func (s *Service) AddUser(w http.ResponseWriter, r *http.Request) { + user := &common.User{} + if err := json.NewDecoder(r.Body).Decode(&user); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + if user == nil { + http.Error(w, "no user received", http.StatusBadRequest) + return + } + + if err := s.controller.GetBackend().AddUser(r.Context(), user); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(map[string]interface{}{}) +} + +func (s *Service) UpdateUser(w http.ResponseWriter, r *http.Request) { + user := &common.User{} + if err := json.NewDecoder(r.Body).Decode(&user); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + if user == nil { + http.Error(w, "no user received", http.StatusBadRequest) + return + } + + if err := s.controller.GetBackend().UpdateUser(r.Context(), user); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(map[string]interface{}{}) +} + +func (s *Service) RemoveUser(w http.ResponseWriter, r *http.Request) { + user := &common.User{} + if err := json.NewDecoder(r.Body).Decode(&user); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) + return + } + + if user == nil { + http.Error(w, "no user received", http.StatusBadRequest) + return + } + + s.controller.GetBackend().RemoveUser(r.Context(), user.Email) + + w.Header().Set("Content-Type", "application/json") + _ = json.NewEncoder(w).Encode(map[string]interface{}{}) +} diff --git a/controller/rpc/base.go b/controller/rpc/base.go new file mode 100644 index 0000000..bed0417 --- /dev/null +++ b/controller/rpc/base.go @@ -0,0 +1,47 @@ +package rpc + +import ( + "context" + "errors" + + "github.com/m03ed/marzban-node-go/backend" + "github.com/m03ed/marzban-node-go/backend/xray" + "github.com/m03ed/marzban-node-go/common" +) + +func (s *Service) Start(ctx context.Context, detail *common.Backend) (*common.BaseInfoResponse, error) { + ctx, err := s.detectBackend(ctx, detail) + if err != nil { + return nil, err + } + + if err = s.controller.StartBackend(ctx, detail.GetType()); err != nil { + return nil, err + } + + s.connect() + + return s.controller.BaseInfoResponse(true, ""), nil +} + +func (s *Service) Stop(_ context.Context, _ *common.Empty) (*common.Empty, error) { + s.disconnect() + return nil, nil +} + +func (s *Service) detectBackend(ctx context.Context, detail *common.Backend) (context.Context, error) { + if detail.GetType() == common.BackendType_XRAY { + config, err := xray.NewXRayConfig(detail.GetConfig()) + if err != nil { + return nil, err + } + ctx = context.WithValue(ctx, backend.ConfigKey{}, config) + } else { + return nil, errors.New("unknown backend type") + } + return ctx, nil +} + +func (s *Service) GetBaseInfo(_ context.Context, _ *common.Empty) (*common.BaseInfoResponse, error) { + return s.controller.BaseInfoResponse(false, ""), nil +} diff --git a/controller/rpc/log.go b/controller/rpc/log.go new file mode 100644 index 0000000..8cb5923 --- /dev/null +++ b/controller/rpc/log.go @@ -0,0 +1,29 @@ +package rpc + +import ( + "errors" + "fmt" + + "github.com/m03ed/marzban-node-go/common" +) + +func (s *Service) GetLogs(_ *common.Empty, stream common.NodeService_GetLogsServer) error { + logChan := s.controller.GetBackend().GetLogs() + + for { + select { + case log, ok := <-logChan: + if !ok { + return errors.New("log channel closed") + } + + if err := stream.Send(&common.Log{Detail: log}); err != nil { + return fmt.Errorf("failed to send log: %w", err) + } + + case <-stream.Context().Done(): + // Client has disconnected or cancelled the request + return stream.Context().Err() + } + } +} diff --git a/controller/rpc/middleware.go b/controller/rpc/middleware.go new file mode 100644 index 0000000..a21fb64 --- /dev/null +++ b/controller/rpc/middleware.go @@ -0,0 +1,252 @@ +package rpc + +import ( + "context" + "fmt" + "log" + "strings" + + grpcmiddleware "github.com/grpc-ecosystem/go-grpc-middleware" + "google.golang.org/grpc/peer" + + "github.com/google/uuid" + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" +) + +func validateSessionID(ctx context.Context, s *Service) error { + // Extract metadata + md, ok := metadata.FromIncomingContext(ctx) + if !ok { + return status.Errorf(codes.Unauthenticated, "missing metadata") + } + + // Check session ID + sessionID := s.controller.GetSessionID() + if sessionID == uuid.Nil { + return status.Errorf(codes.Unauthenticated, "please connect first") + } + + // Extract Authorization header + authHeader, ok := md["authorization"] + if !ok || len(authHeader) == 0 { + return status.Errorf(codes.Unauthenticated, "missing authorization header") + } + + // Validate token format (Bearer ) + tokenParts := strings.Split(authHeader[0], " ") + if len(tokenParts) != 2 || tokenParts[0] != "Bearer" { + return status.Errorf(codes.InvalidArgument, "invalid authorization header format") + } + + // Parse token + tokenString := tokenParts[1] + token, err := uuid.Parse(tokenString) + if err != nil { + return status.Errorf(codes.InvalidArgument, "invalid session ID: %v", err) + } + + // Check if session ID matches + if token != sessionID { + return status.Errorf(codes.PermissionDenied, "session ID mismatch") + } + + return nil +} + +func CheckSessionIDMiddleware(s *Service) grpc.UnaryServerInterceptor { + return func( + ctx context.Context, + req interface{}, + info *grpc.UnaryServerInfo, + handler grpc.UnaryHandler, + ) (interface{}, error) { + if err := validateSessionID(ctx, s); err != nil { + return nil, err + } + + return handler(ctx, req) + } +} + +func CheckSessionIDStreamMiddleware(s *Service) grpc.StreamServerInterceptor { + return func( + srv interface{}, + ss grpc.ServerStream, + info *grpc.StreamServerInfo, + handler grpc.StreamHandler, + ) error { + // Use common session validation logic + if err := validateSessionID(ss.Context(), s); err != nil { + log.Println("invalid session ID stream:", err) + return err + } + + return handler(srv, ss) + } +} + +func checkBackendStatus(s *Service) error { + back := s.controller.GetBackend() + if back == nil { + return status.Errorf(codes.Internal, "backend not initialized") + } + if !back.Started() { + return status.Errorf(codes.Unavailable, "core is not started yet") + } + return nil +} + +func CheckBackendMiddleware(s *Service) grpc.UnaryServerInterceptor { + return func( + ctx context.Context, + req interface{}, + info *grpc.UnaryServerInfo, + handler grpc.UnaryHandler, + ) (interface{}, error) { + if err := checkBackendStatus(s); err != nil { + return nil, err + } + + return handler(ctx, req) + } +} + +func CheckBackendStreamMiddleware(s *Service) grpc.StreamServerInterceptor { + return func( + srv interface{}, + ss grpc.ServerStream, + info *grpc.StreamServerInfo, + handler grpc.StreamHandler, + ) error { + if err := checkBackendStatus(s); err != nil { + return err + } + + return handler(srv, ss) + } +} + +func logRequest(ctx context.Context, method string, err error) { + // Extract client IP + clientIP := "unknown" + if p, ok := peer.FromContext(ctx); ok { + clientIP = p.Addr.String() + } + + logEntry := fmt.Sprintf("IP: %s, Method: %s,", clientIP, strings.TrimPrefix(method, "/service.NodeService/")) + + // Log based on the response status + if err != nil { + st, _ := status.FromError(err) + log.Println(logEntry, "Code:", st.Code()) + } else { + log.Println(logEntry, "Status: Success") + } +} + +func LoggingInterceptor( + ctx context.Context, + req interface{}, + info *grpc.UnaryServerInfo, + handler grpc.UnaryHandler, +) (interface{}, error) { + // Handle the request + resp, err := handler(ctx, req) + + // Log the request + logRequest(ctx, info.FullMethod, err) + + return resp, err +} + +func LoggingStreamInterceptor() grpc.StreamServerInterceptor { + return func( + srv interface{}, + ss grpc.ServerStream, + info *grpc.StreamServerInfo, + handler grpc.StreamHandler, + ) error { + // Handle the request + err := handler(srv, ss) + + // Log the request + logRequest(ss.Context(), info.FullMethod, err) + + return err + } +} + +var backendMethods = map[string]bool{ + "/service.NodeService/GetOutboundsStats": true, + "/service.NodeService/GetInboundsStats": true, + "/service.NodeService/GetUsersStats": true, + "/service.NodeService/GetBackendStats": true, + "/service.NodeService/AddUser": true, + "/service.NodeService/UpdateUser": true, + "/service.NodeService/RemoveUser": true, +} + +var sessionIDMethods = map[string]bool{ + "/service.NodeService/Stop": true, + "/service.NodeService/GetBaseInfo": true, + "/service.NodeService/GetLogs": true, + "/service.NodeService/GetNodeStats": true, + "/service.NodeService/GetOutboundsStats": true, + "/service.NodeService/GetInboundsStats": true, + "/service.NodeService/GetUsersStats": true, + "/service.NodeService/GetBackendStats": true, + "/service.NodeService/AddUser": true, + "/service.NodeService/UpdateUser": true, + "/service.NodeService/RemoveUser": true, +} + +func ConditionalMiddleware(s *Service) grpc.UnaryServerInterceptor { + return func( + ctx context.Context, + req interface{}, + info *grpc.UnaryServerInfo, + handler grpc.UnaryHandler, + ) (interface{}, error) { + var interceptors []grpc.UnaryServerInterceptor + + interceptors = append(interceptors, LoggingInterceptor) + + if sessionIDMethods[info.FullMethod] { + interceptors = append(interceptors, CheckSessionIDMiddleware(s)) + } + + if backendMethods[info.FullMethod] { + interceptors = append(interceptors, CheckBackendMiddleware(s)) + } + + chained := grpcmiddleware.ChainUnaryServer(interceptors...) + return chained(ctx, req, info, handler) + } +} + +func ConditionalStreamMiddleware(s *Service) grpc.StreamServerInterceptor { + return func( + srv interface{}, + ss grpc.ServerStream, + info *grpc.StreamServerInfo, + handler grpc.StreamHandler, + ) error { + var interceptors []grpc.StreamServerInterceptor + + interceptors = append(interceptors, LoggingStreamInterceptor()) + + if sessionIDMethods[info.FullMethod] { + interceptors = append(interceptors, CheckSessionIDStreamMiddleware(s)) + } + + if backendMethods[info.FullMethod] { + interceptors = append(interceptors, CheckBackendStreamMiddleware(s)) + } + + chained := grpcmiddleware.ChainStreamServer(interceptors...) + return chained(srv, ss, info, handler) + } +} diff --git a/controller/rpc/rpc_test.go b/controller/rpc/rpc_test.go new file mode 100644 index 0000000..1f1838c --- /dev/null +++ b/controller/rpc/rpc_test.go @@ -0,0 +1,289 @@ +package rpc + +import ( + "context" + "fmt" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" + "io" + "log" + "os" + "testing" + "time" + + "github.com/google/uuid" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + "google.golang.org/grpc/metadata" + + "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/marzban-node-go/config" + nodeLogger "github.com/m03ed/marzban-node-go/logger" + "github.com/m03ed/marzban-node-go/tools" +) + +var ( + servicePort = 8001 + nodeHost = "127.0.0.1" + xrayExecutablePath = "/usr/local/bin/xray" + xrayAssetsPath = "/usr/local/share/xray" + sslCertFile = "/var/lib/marzban-node/ssl_cert.pem" + sslKeyFile = "/var/lib/marzban-node/ssl_key.pem" + sslClientCertFile = "/var/lib/marzban-node/ssl_client_cert.pem" + sslClientKeyFile = "/var/lib/marzban-node/ssl_client_key.pem" + generatedConfigPath = "/var/lib/marzban-node/generated/" + addr = fmt.Sprintf("%s:%d", nodeHost, servicePort) + configPath = "../../backend/xray/config.json" +) + +func TestGRPCConnection(t *testing.T) { + config.SetEnv(servicePort, 0, nodeHost, xrayExecutablePath, xrayAssetsPath, sslCertFile, + sslKeyFile, sslClientCertFile, "grpc", generatedConfigPath, true) + + nodeLogger.SetOutputMode(true) + + certFileExists := tools.FileExists(sslCertFile) + keyFileExists := tools.FileExists(sslKeyFile) + + if !certFileExists || !keyFileExists { + if err := tools.RewriteSslFile(sslCertFile, sslKeyFile); err != nil { + t.Fatal(err) + } + } + clientCertFileExists := tools.FileExists(sslClientCertFile) + if !clientCertFileExists { + t.Fatal("SSL_CLIENT_CERT_FILE is required.") + } + + clientKeyFileExists := tools.FileExists(sslClientCertFile) + if !clientKeyFileExists { + t.Fatal("SSL_CLIENT_KEY_FILE is required.") + } + + tlsConfig, err := tools.LoadTLSCredentials(sslCertFile, sslKeyFile, sslClientCertFile, false) + if err != nil { + t.Fatal(err) + } + + shutdownFunc, s, err := StartGRPCListener(tlsConfig, addr) + defer s.StopService() + if err != nil { + t.Fatal(err) + } + + creds, err := tools.LoadTLSCredentials(sslClientCertFile, sslClientKeyFile, sslCertFile, true) + if err != nil { + t.Fatal(err) + } + + conn, err := grpc.NewClient(addr, grpc.WithTransportCredentials(credentials.NewTLS(creds))) + if err != nil { + t.Fatalf("Failed to connect to gRPC server: %v", err) + } + defer conn.Close() + + client := common.NewNodeServiceClient(conn) + + configFile, err := os.ReadFile(configPath) + if err != nil { + t.Fatal(err) + } + + baseCtx := context.Background() + + ctx, cancel := context.WithTimeout(baseCtx, 5*time.Second) + defer cancel() + + _, err = client.GetBaseInfo(ctx, &common.Empty{}) + if err != nil { + log.Println("info error: ", err) + } else { + t.Fatal("expected session ID error") + } + + ctx, cancel = context.WithTimeout(baseCtx, 5*time.Second) + defer cancel() + + info, err := client.Start(ctx, + &common.Backend{ + Type: common.BackendType_XRAY, + Config: string(configFile), + }) + if err != nil { + t.Fatal(err) + } + + sessionID := info.SessionId + log.Println("Session ID:", sessionID) + + // Add SessionId to the metadata + md := metadata.Pairs("authorization", "Bearer "+sessionID) + ctxWithSession := metadata.NewOutgoingContext(context.Background(), md) + + // test all methods + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + // test GetBackendStats + backStats, err := client.GetBackendStats(ctx, &common.Empty{}) + if err != nil { + t.Fatalf("Failed to get backend stats: %v", err) + } + log.Println(backStats) + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + // test GetOutboundsStats + outboundStats, err := client.GetOutboundsStats(ctx, &common.Empty{}) + if err != nil { + t.Fatalf("Failed to get outbounds stats: %v", err) + } + + for _, stat := range outboundStats.Stats { + log.Println(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) + } + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + // test GetInboundsStats + inboundStats, err := client.GetInboundsStats(ctx, &common.Empty{}) + if err != nil { + t.Fatalf("Failed to get inbounds stats: %v", err) + } + + for _, stat := range inboundStats.Stats { + log.Println(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) + } + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + // test GetUsersStats + usersStats, err := client.GetUsersStats(ctx, &common.Empty{}) + if err != nil { + t.Fatalf("Failed to get users stats: %v", err) + } + + for _, stat := range usersStats.Stats { + log.Println(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) + } + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + user := &common.User{ + Email: "test_user1@example.com", + Inbounds: []string{"VMESS TCP NOTLS", "VLESS TCP REALITY", "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP"}, + Proxies: &common.Proxy{ + Vmess: &common.VmessSetting{ + Id: uuid.New().String(), + }, + Vless: &common.VlessSetting{ + Id: uuid.New().String(), + }, + Trojan: &common.TrojanSetting{ + Password: "try a random string", + }, + Shadowsocks: &common.ShadowsocksSetting{ + Password: "try a random string", + Method: "AES_256_GCM", + }, + }, + } + + // test AddUser + if _, err = client.AddUser(ctx, user); err != nil { + t.Fatalf("Failed to add user: %v", err) + } + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + user = &common.User{ + Email: "test_user2@example.com", + Inbounds: []string{"VMESS TCP NOTLS", "VLESS TCP REALITY", "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP"}, + Proxies: &common.Proxy{ + Vmess: &common.VmessSetting{ + Id: uuid.New().String(), + }, + Vless: &common.VlessSetting{ + Id: uuid.New().String(), + }, + Trojan: &common.TrojanSetting{ + Password: "try a random string", + }, + Shadowsocks: &common.ShadowsocksSetting{ + Password: "try a random string", + Method: "AES_128_GCM", + }, + }, + } + + // test UpdateUser + if _, err = client.UpdateUser(ctx, user); err != nil { + t.Fatalf("Failed to update user: %v", err) + } + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + // test RemoveUser + if _, err = client.RemoveUser(ctx, user); err != nil { + t.Fatalf("Failed to remove user: %v", err) + } + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + // test GetLogs Stream + logs, _ := client.GetLogs(ctx, &common.Empty{}) +loop: + for { + newLog, err := logs.Recv() + if err == io.EOF { + break loop + } + + if errStatus, ok := status.FromError(err); ok { + switch errStatus.Code() { + case codes.DeadlineExceeded: + log.Printf("Operation timed out: %v", err) + break loop + case codes.Canceled: + log.Printf("Operation was canceled: %v", err) + break loop + default: + if err != nil { + t.Fatalf("Failed to receive log: %v (gRPC code: %v)", err, errStatus.Code()) + } + } + } + + if newLog != nil { + fmt.Println("Log detail:", newLog.Detail) + } + } + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + // test GetNodeStats + nodeStats, err := client.GetNodeStats(ctx, &common.Empty{}) + if err != nil { + t.Fatalf("Failed to get node stats: %v", err) + } + log.Println(nodeStats) + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + if _, err = client.Stop(ctx, nil); err != nil { + t.Fatalf("Failed to stop s: %v", err) + } + + if err = shutdownFunc(ctx); err != nil { + t.Fatalf("Failed to shutdown server: %v", err) + } +} diff --git a/controller/rpc/service.go b/controller/rpc/service.go new file mode 100644 index 0000000..89c692b --- /dev/null +++ b/controller/rpc/service.go @@ -0,0 +1,89 @@ +package rpc + +import ( + "context" + "crypto/tls" + "fmt" + "log" + "net" + "sync" + + "google.golang.org/grpc" + "google.golang.org/grpc/credentials" + + "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/marzban-node-go/controller" +) + +type Service struct { + common.UnimplementedNodeServiceServer + controller *controller.Controller + mu sync.Mutex +} + +func NewService() *Service { + s := &Service{controller: controller.NewController()} + return s +} + +func (s *Service) StopService() { + s.mu.Lock() + defer s.mu.Unlock() + s.controller.StopJobs() +} + +func (s *Service) connect() { + s.controller.Connect() +} + +func (s *Service) disconnect() { + s.controller.Disconnect() +} + +func StartGRPCListener(tlsConfig *tls.Config, addr string) (func(ctx context.Context) error, controller.Service, error) { + s := NewService() + + creds := credentials.NewTLS(tlsConfig) + + // Create the gRPC server with conditional middleware + grpcServer := grpc.NewServer( + grpc.Creds(creds), + grpc.UnaryInterceptor(ConditionalMiddleware(s)), + grpc.StreamInterceptor(ConditionalStreamMiddleware(s)), + ) + + // Register the service + common.RegisterNodeServiceServer(grpcServer, s) + + listener, err := net.Listen("tcp", addr) + if err != nil { + return nil, nil, fmt.Errorf("failed to listen on %s: %w", addr, err) + } + + go func() { + log.Println("gRPC Server listening on", addr) + log.Println("Press Ctrl+C to stop") + if err = grpcServer.Serve(listener); err != nil { + log.Printf("gRPC server error: %v", err) + } + }() + + // Create a shutdown function for gRPC server + return func(ctx context.Context) error { + // Graceful stop for gRPC server + stopped := make(chan struct{}) + go func() { + grpcServer.GracefulStop() + close(stopped) + }() + + // Wait for server to stop or context to timeout + select { + case <-stopped: + return nil + case <-ctx.Done(): + grpcServer.Stop() // Force stop if graceful stop times out + return ctx.Err() + } + }, controller.Service(s), nil +} diff --git a/controller/rpc/stats.go b/controller/rpc/stats.go new file mode 100644 index 0000000..3606194 --- /dev/null +++ b/controller/rpc/stats.go @@ -0,0 +1,31 @@ +package rpc + +import ( + "context" + + "github.com/m03ed/marzban-node-go/common" +) + +func (s *Service) GetOutboundsStats(ctx context.Context, _ *common.Empty) (*common.StatResponse, error) { + return s.controller.GetBackend().GetOutboundsStats(ctx, true) +} + +func (s *Service) GetInboundsStats(ctx context.Context, _ *common.Empty) (*common.StatResponse, error) { + return s.controller.GetBackend().GetInboundsStats(ctx, true) +} + +func (s *Service) GetUsersStats(ctx context.Context, _ *common.Empty) (*common.StatResponse, error) { + return s.controller.GetBackend().GetUsersStats(ctx, true) +} + +func (s *Service) GetUserOnlineStat(ctx context.Context, request *common.OnlineStatRequest) (*common.OnlineStatResponse, error) { + return s.controller.GetBackend().GetStatOnline(ctx, request.GetEmail()) +} + +func (s *Service) GetBackendStats(ctx context.Context, _ *common.Empty) (*common.BackendStatsResponse, error) { + return s.controller.GetBackend().GetSysStats(ctx) +} + +func (s *Service) GetNodeStats(_ context.Context, _ *common.Empty) (*common.SystemStatsResponse, error) { + return s.controller.GetStats(), nil +} diff --git a/controller/rpc/user.go b/controller/rpc/user.go new file mode 100644 index 0000000..5779ea7 --- /dev/null +++ b/controller/rpc/user.go @@ -0,0 +1,19 @@ +package rpc + +import ( + "context" + "github.com/m03ed/marzban-node-go/common" +) + +func (s *Service) AddUser(ctx context.Context, user *common.User) (*common.Empty, error) { + return nil, s.controller.GetBackend().AddUser(ctx, user) +} + +func (s *Service) UpdateUser(ctx context.Context, user *common.User) (*common.Empty, error) { + return nil, s.controller.GetBackend().UpdateUser(ctx, user) +} + +func (s *Service) RemoveUser(ctx context.Context, user *common.User) (*common.Empty, error) { + s.controller.GetBackend().RemoveUser(ctx, user.Email) + return nil, nil +} diff --git a/go.mod b/go.mod index 2e40a1b..4a3a226 100644 --- a/go.mod +++ b/go.mod @@ -1,24 +1,41 @@ -module marzban-node +module github.com/m03ed/marzban-node-go go 1.23.0 require ( github.com/go-chi/chi/v5 v5.1.0 github.com/google/uuid v1.6.0 + github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/joho/godotenv v1.5.1 github.com/shirou/gopsutil v3.21.11+incompatible - google.golang.org/grpc v1.65.0 - google.golang.org/protobuf v1.34.2 + github.com/xtls/xray-core v1.8.25-0.20241130041635-98a72b6fb49b + google.golang.org/grpc v1.68.1 + google.golang.org/protobuf v1.35.2 ) require ( + github.com/andybalholm/brotli v1.1.0 // indirect + github.com/cloudflare/circl v1.4.0 // indirect + github.com/dgryski/go-metro v0.0.0-20211217172704-adc40b04c140 // indirect github.com/go-ole/go-ole v1.3.0 // indirect - github.com/stretchr/testify v1.9.0 // indirect + github.com/klauspost/compress v1.17.8 // indirect + github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/pires/go-proxyproto v0.8.0 // indirect + github.com/quic-go/quic-go v0.46.0 // indirect + github.com/refraction-networking/utls v1.6.7 // indirect + github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect + github.com/sagernet/sing v0.5.1 // indirect + github.com/sagernet/sing-shadowsocks v0.2.7 // indirect + github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771 // indirect github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.8.0 // indirect + github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e // indirect + github.com/xtls/reality v0.0.0-20240712055506-48f0b2d5ed6d // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect - golang.org/x/net v0.28.0 // indirect - golang.org/x/sys v0.24.0 // indirect - golang.org/x/text v0.17.0 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 // indirect + golang.org/x/crypto v0.31.0 // indirect + golang.org/x/net v0.31.0 // indirect + golang.org/x/sys v0.28.0 // indirect + golang.org/x/text v0.21.0 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + lukechampine.com/blake3 v1.3.0 // indirect ) diff --git a/go.sum b/go.sum index 0dffaa4..535eadf 100644 --- a/go.sum +++ b/go.sum @@ -1,64 +1,243 @@ +cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= +github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= +github.com/OmarTariq612/goech v0.0.0-20240405204721-8e2e1dafd3a0 h1:Wo41lDOevRJSGpevP+8Pk5bANX7fJacO2w04aqLiC5I= +github.com/OmarTariq612/goech v0.0.0-20240405204721-8e2e1dafd3a0/go.mod h1:FVGavL/QEBQDcBpr3fAojoK17xX5k9bicBphrOpP7uM= +github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M= +github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY= +github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= +github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= +github.com/cloudflare/circl v1.4.0 h1:BV7h5MgrktNzytKmWjpOtdYrf0lkkbF8YMlBGPhJQrY= +github.com/cloudflare/circl v1.4.0/go.mod h1:PDRU+oXvdD7KCtgKxW95M5Z8BpSCJXQORiZFnBQS5QU= +github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= +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/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/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/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= +github.com/ghodss/yaml v1.0.1-0.20220118164431-d8423dcdf344 h1:Arcl6UOIS/kgO2nW3A65HN+7CMjSDP/gofXL4CZt1V4= +github.com/ghodss/yaml v1.0.1-0.20220118164431-d8423dcdf344/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= -github.com/go-ole/go-ole v1.2.6 h1:/Fpf6oFPoeFik9ty7siob0G6Ke8QvQEuVcuChpwXzpY= +github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= +github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= +github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= +github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= +github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= +github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= +github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= +github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= +github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= +github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q= +github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A= +github.com/golang/mock v1.7.0-rc.1 h1:YojYx61/OLFsiv6Rw1Z96LpldJIy31o+UHmwAUMJ6/U= +github.com/golang/mock v1.7.0-rc.1/go.mod h1:s42URUywIqd+OcERslBJvOjepvNymP31m3q8d/GkuRs= +github.com/golang/protobuf v1.2.0/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.5.4 h1:i7eJL8qZTpSEXOPTxNKhASYpMn+8e5Q6AdndVa1dWek= github.com/golang/protobuf v1.5.4/go.mod h1:lnTiLA8Wa4RWRcIUkrtSVa5nRhsEGBg48fD6rSs7xps= +github.com/google/btree v1.1.2 h1:xf4v41cLI2Z6FxbKm+8Bu+m8ifhj15JuZ9sa0jZCMUU= +github.com/google/btree v1.1.2/go.mod h1:qOPhT0dTNdNzV6Z/lhRX0YXUafgPLFUh+gZMl761Gm4= +github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5aqRK0M= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/pprof v0.0.0-20240528025155-186aa0362fba h1:ql1qNgCyOB7iAEk8JTNM+zJrgIbnyCKX/wdlyPufP5g= +github.com/google/pprof v0.0.0-20240528025155-186aa0362fba/go.mod h1:K1liHPHnj73Fdn/EKuT8nrFqBihUSKXoLYU0BuatOYo= github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0= github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/gorilla/websocket v1.5.3 h1:saDtZ6Pbx/0u+bgYQ3q96pZgCzfhKXGPqt7kZ72aNNg= +github.com/gorilla/websocket v1.5.3/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 h1:UH//fgunKIs4JdUbpDl1VZCDaL56wXCB/5+wF6uHfaI= +github.com/grpc-ecosystem/go-grpc-middleware v1.4.0/go.mod h1:g5qyo/la0ALbONm6Vbp88Yd8NsDy6rZz+RcrMPxvld8= github.com/joho/godotenv v1.5.1 h1:7eLL/+HRGLY0ldzfGMeQkb7vMd0as4CfYvUVzLqw0N0= github.com/joho/godotenv v1.5.1/go.mod h1:f4LDr5Voq0i2e/R5DDNOoa2zzDfwtkZa6DnEwAbqwq4= +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/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= +github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= +github.com/klauspost/cpuid/v2 v2.2.7 h1:ZWSB3igEs+d0qvnxR/ZBzXVmxkgt8DdzP6m9pfuVLDM= +github.com/klauspost/cpuid/v2 v2.2.7/go.mod h1:Lcz8mBdAVJIBVzewtcLocK12l3Y+JytZYpaMropDUws= +github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= +github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= +github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= +github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= +github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= +github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= +github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= +github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pires/go-proxyproto v0.8.0 h1:5unRmEAPbHXHuLjDg01CxJWf91cw3lKHc/0xzKpXEe0= +github.com/pires/go-proxyproto v0.8.0/go.mod h1:iknsfgnH8EkjrMeMyvfKByp9TiBZCKZM0jx2xmKqnVY= +github.com/pkg/errors v0.8.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= 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/prometheus/client_model v0.0.0-20190812154241-14fe0d1b01d4/go.mod h1:xMI15A0UPsDsEKsMN9yxemIoYk6Tm2C1GtYGdfGttqA= +github.com/quic-go/qpack v0.4.0 h1:Cr9BXA1sQS2SmDUWjSofMPNKmvF6IiIfDRmgU0w1ZCo= +github.com/quic-go/qpack v0.4.0/go.mod h1:UZVnYIfi5GRk+zI9UMaCPsmZ2xKJP7XBUvVyT1Knj9A= +github.com/quic-go/quic-go v0.46.0 h1:uuwLClEEyk1DNvchH8uCByQVjo3yKL9opKulExNDs7Y= +github.com/quic-go/quic-go v0.46.0/go.mod h1:1dLehS7TIR64+vxGR70GDcatWTOtMX2PUtnKsjbTurI= +github.com/refraction-networking/utls v1.6.7 h1:zVJ7sP1dJx/WtVuITug3qYUq034cDq9B2MR1K67ULZM= +github.com/refraction-networking/utls v1.6.7/go.mod h1:BC3O4vQzye5hqpmDTWUqi4P5DDhzJfkV1tdqtawQIH0= +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/sagernet/sing v0.5.1 h1:mhL/MZVq0TjuvHcpYcFtmSD1BFOxZ/+8ofbNZcg1k1Y= +github.com/sagernet/sing v0.5.1/go.mod h1:ARkL0gM13/Iv5VCZmci/NuoOlePoIsW0m7BWfln/Hak= +github.com/sagernet/sing-shadowsocks v0.2.7 h1:zaopR1tbHEw5Nk6FAkM05wCslV6ahVegEZaKMv9ipx8= +github.com/sagernet/sing-shadowsocks v0.2.7/go.mod h1:0rIKJZBR65Qi0zwdKezt4s57y/Tl1ofkaq6NlkzVuyE= +github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771 h1:emzAzMZ1L9iaKCTxdy3Em8Wv4ChIAGnfiz18Cda70g4= +github.com/seiflotfy/cuckoofilter v0.0.0-20240715131351-a2f2c23f1771/go.mod h1:bR6DqgcAl1zTcOX8/pE2Qkj9XO00eCNqmKb7lXP8EAg= 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/stretchr/testify v1.9.0 h1:HtqpIVDClZ4nwg75+f6Lvsy/wHu+3BoSGCbBAcpTsTg= -github.com/stretchr/testify v1.9.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= +github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6MwdIuYE2rE= +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/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.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.10.0 h1:Xv5erBjTwe/5IxqUQTdXv5kgmIvbHo3QQyRwhJsOfJA= +github.com/stretchr/testify v1.10.0/go.mod h1:r2ic/lqez/lEtzL7wO/rwa5dbSLXVDPFyf8C91i36aY= github.com/tklauser/go-sysconf v0.3.14 h1:g5vzr9iPFFz24v2KZXs/pvpvh8/V9Fw6vQK5ZZb78yU= github.com/tklauser/go-sysconf v0.3.14/go.mod h1:1ym4lWMLUOhuBOPGtRcJm7tEGX4SCYNEEEtghGG/8uY= github.com/tklauser/numcpus v0.8.0 h1:Mx4Wwe/FjZLeQsK/6kt2EOepwwSl7SmJrK5bV/dXYgY= github.com/tklauser/numcpus v0.8.0/go.mod h1:ZJZlAY+dmR4eut8epnzf0u/VwodKmryxR8txiloSqBE= +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/vishvananda/netlink v1.3.0 h1:X7l42GfcV4S6E4vHTsw48qbrV+9PVojNfIhZcwQdrZk= +github.com/vishvananda/netlink v1.3.0/go.mod h1:i6NetklAujEcC6fK0JPjT8qSwWyO0HLn4UKG+hGqeJs= +github.com/vishvananda/netns v0.0.4 h1:Oeaw1EM2JMxD51g9uhtC0D7erkIjgmj8+JZc26m1YX8= +github.com/vishvananda/netns v0.0.4/go.mod h1:SpkAiCQRtJ6TvvxPnOSyH3BMl6unz3xZlaprSwhNNJM= +github.com/xtls/reality v0.0.0-20240712055506-48f0b2d5ed6d h1:+B97uD9uHLgAAulhigmys4BVwZZypzK7gPN3WtpgRJg= +github.com/xtls/reality v0.0.0-20240712055506-48f0b2d5ed6d/go.mod h1:dm4y/1QwzjGaK17ofi0Vs6NpKAHegZky8qk6J2JJZAE= +github.com/xtls/xray-core v1.8.25-0.20241130041635-98a72b6fb49b h1:h8DhM+nmPMo4yKqNnxQ7TZ3e8YiESKm9h0gE45UiNmA= +github.com/xtls/xray-core v1.8.25-0.20241130041635-98a72b6fb49b/go.mod h1:BCeSy6P4xz8vSk46ziVkg0iby82W2Mmqvz2ub5kfYrc= +github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= +github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= -golang.org/x/net v0.22.0 h1:9sGLhx7iRIHEiX0oAJ3MRZMUCElJgy7Br1nO+AMN3Tc= -golang.org/x/net v0.22.0/go.mod h1:JKghWKKOSdJwpW2GEx0Ja7fmaKnMsbu+MWVZTokSYmg= -golang.org/x/net v0.25.0 h1:d/OCCoBEUq33pjydKrGQhw7IlUPI2Oylr+8qLx49kac= -golang.org/x/net v0.25.0/go.mod h1:JkAGAh7GEvH74S6FOH42FLoXpXbE/aqXSrIQjXgsiwM= -golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= -golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= +go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= +go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= +go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= +go.uber.org/mock v0.4.0/go.mod h1:a6FSlNadKUHUa9IP5Vyt1zh4fC7uAwxMutEAscFbkZc= +go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= +go.uber.org/zap v1.18.1/go.mod h1:xg/QME4nWcxGxrpdeYfq7UvYrLh66cuVKdrbD1XF/NI= +go4.org/netipx v0.0.0-20231129151722-fdeea329fbba h1:0b9z3AuHCjxk0x/opv64kcgZLBseWJUpBw5I82+2U4M= +go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/WfdlivPbZJsZdgWZlrGope/Y= +golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= +golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= +golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= +golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= +golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= +golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= +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-20190313153728-d0100b6bd8b3/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= +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.18.0 h1:5+9lSbEzPSdWkH32vYPBwEpX8KwDbM52Ud9xBUvNlb0= +golang.org/x/mod v0.18.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +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-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-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= +golang.org/x/net v0.0.0-20190620200207-3b0461eec859/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-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= +golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= +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-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-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= +golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-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-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= -golang.org/x/sys v0.20.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.23.0 h1:YfKFowiIMvtgl1UERQoTPPToxltDeZfbj4H7dVUCwmM= -golang.org/x/sys v0.23.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/sys v0.24.0 h1:Twjiwq9dn6R1fQcyiK+wQyHWfaz/BJB+YIpzU/Cv3Xg= -golang.org/x/sys v0.24.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.15.0 h1:h1V/4gjBv8v9cjcR6+AR5+/cIYK5N/WAgiv4xlsEtAk= -golang.org/x/text v0.15.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= -golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= -golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237 h1:NnYq6UN9ReLM9/Y01KWNOWyI5xQ9kbIms5GGJVwS/Yc= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240318140521-94a12d6c2237/go.mod h1:WtryC6hu0hhx87FDGxWCDptyssuo68sk10vYjF+T9fY= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157 h1:Zy9XzmMEflZ/MAaA7vNcoebnRAld7FsPW1EeBB7V0m8= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240528184218-531527333157/go.mod h1:EfXuqaE1J41VCDicxHzUDm+8rk+7ZdXzHV0IhO/I6s0= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142 h1:e7S5W7MGGLaSu8j3YjdezkZ+m1/Nm0uRVRMEMGk26Xs= -google.golang.org/genproto/googleapis/rpc v0.0.0-20240814211410-ddb44dafa142/go.mod h1:UqMtugtsSgubUsoxbuAoiCXvqvErP7Gf0so0mK9tHxU= -google.golang.org/grpc v1.64.0 h1:KH3VH9y/MgNQg1dE7b3XfVK0GsPSIzJwdF617gUSbvY= -google.golang.org/grpc v1.64.0/go.mod h1:oxjF8E3FBnjp+/gVFYdWacaLDx9na1aqy9oovLpxQYg= -google.golang.org/grpc v1.65.0 h1:bs/cUb4lp1G5iImFFd3u5ixQzweKizoZJAwBNLR42lc= -google.golang.org/grpc v1.65.0/go.mod h1:WgYC2ypjlB0EiQi6wdKixMqukr6lBc0Vo+oOgjrM5ZQ= -google.golang.org/protobuf v1.34.2 h1:6xV6lTsCfpGD21XK49h7MhtcApnLqkfYgPcdHftf6hg= -google.golang.org/protobuf v1.34.2/go.mod h1:qYOHts0dSfpeUzUFpOMr/WGzszTmLH+DiWniOlNbLDw= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= +golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= +golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= +golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= +golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/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-20190524140312-2c0ae7006135/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20191108193012-7d206e10da11/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-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE= +golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= +golang.org/x/tools v0.22.0 h1:gqSGLZqv+AI9lIQzniJ0nZDRG5GBPsSi+DRNHWNz6yA= +golang.org/x/tools v0.22.0/go.mod h1:aCwcsjqvq7Yqt6TNyX7QMU2enbQ/Gt0bo6krSeEri+c= +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.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 h1:B82qJJgjvYKsXS9jeunTOisW56dUokqW/FOteYJJ/yg= +golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2/go.mod h1:deeaetjYA+DHMHg+sMSMI58GrEteJUUzzw7en6TJQcI= +golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 h1:/jFs0duh4rdb8uIfPMv78iAJGcPKDeqAFnaLBropIC4= +golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173/go.mod h1:tkCQ4FQXmpAgYVh++1cq16/dH4QJtmvpRv19DWGAHSA= +google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= +google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= +google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= +google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= +google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= +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.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= +google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= +google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= +google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= +google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= +google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +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/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.2.8/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/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gvisor.dev/gvisor v0.0.0-20231202080848-1f7806d17489 h1:ze1vwAdliUAr68RQ5NtufWaXaOg8WUO2OACzEV+TNdE= +gvisor.dev/gvisor v0.0.0-20231202080848-1f7806d17489/go.mod h1:10sU+Uh5KKNv1+2x2A0Gvzt8FjD3ASIhorV3YsauXhk= +honnef.co/go/tools v0.0.0-20190102054323-c2f93a96b099/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +honnef.co/go/tools v0.0.0-20190523083050-ea95bdfd59fc/go.mod h1:rf3lG4BRIbNafJWhAfAdb/ePZxsR/4RtNHQocxwk9r4= +lukechampine.com/blake3 v1.3.0 h1:sJ3XhFINmHSrYCgl958hscfIa3bw8x4DqMP3u1YvoYE= +lukechampine.com/blake3 v1.3.0/go.mod h1:0OFRp7fBtAylGVCO40o87sbupkyIGgbpv1+M1k1LM6k= diff --git a/logger/logger.go b/logger/logger.go index c843b5b..d032f12 100644 --- a/logger/logger.go +++ b/logger/logger.go @@ -3,25 +3,24 @@ package logger import ( "fmt" "log" - "marzban-node/config" "os" "path/filepath" - "regexp" + "sync" ) var ( - re *regexp.Regexp + outputLogs = false accessLogFile *os.File errorLogFile *os.File accessLogger *log.Logger errorLogger *log.Logger + mutex sync.Mutex ) -func init() { - pattern := `^(\d{4}/\d{2}/\d{2}) (\d{2}:\d{2}:\d{2}) (\[.*?\]) (.*)$` - - // Compile the regex - re = regexp.MustCompile(pattern) +func SetOutputMode(mode bool) { + mutex.Lock() + defer mutex.Unlock() + outputLogs = mode } func openLogFile(path string) (*os.File, error) { @@ -43,122 +42,53 @@ func openLogFile(path string) (*os.File, error) { return f, nil } -func SetLogFile(accessPath, errorPath string) { - // Close any previously opened files - if accessLogFile != nil { - _ = accessLogFile.Close() - accessLogFile = nil - } - if errorLogFile != nil { - _ = errorLogFile.Close() - errorLogFile = nil - } +func SetLogFile(accessPath, errorPath string) error { + mutex.Lock() + defer mutex.Unlock() var err error - accessLogFile, err = openLogFile(accessPath) - switch { - case err != nil: - Error("Error opening access log file: ", err) - Warning("Access log will not be recorded on file") - accessLogger = nil - case accessLogger != nil: - // Create the access logger - accessLogger = log.New(accessLogFile, "", 0) - default: - accessLogger = nil + if accessLogFile, err = openLogFile(accessPath); err != nil { + return fmt.Errorf("failed to open access log: %w", err) + } + if accessLogFile != nil { + accessLogger = log.New(accessLogFile, "", log.LstdFlags) } - errorLogFile, err = openLogFile(errorPath) - switch { - case err != nil: - Error("Error opening error log file: ", err) - Warning("Error log will not be recorded on file") - errorLogger = nil - case errorLogFile != nil: - // Create the error logger - errorLogger = log.New(errorLogFile, "", 0) - default: - errorLogger = nil + if errorLogFile, err = openLogFile(errorPath); err != nil { + return fmt.Errorf("failed to open error log: %w", err) + } + if errorLogFile != nil { + errorLogger = log.New(errorLogFile, "", log.LstdFlags) } + + return nil } const ( - colorReset = "\033[0m" - colorRed = "\033[31m" - colorGreen = "\033[32m" - colorYellow = "\033[33m" - colorBlue = "\033[34m" - colorMagenta = "\033[35m" - colorCyan = "\033[36m" + LogDebug = "Debug" + LogInfo = "Info" + LogWarning = "Warning" + LogError = "Error" + LogCritical = "Critical" ) -func Info(message ...any) { - formattedLog := fmt.Sprintf("%s[Info] %s %s", colorGreen, colorReset, message) - log.Println(formattedLog) -} - -func Api(message ...any) { - formattedLog := fmt.Sprintf("%s[Api] %s %s", colorCyan, colorReset, message) - log.Println(formattedLog) -} - -func Error(message ...any) { - formattedLog := fmt.Sprintf("%s[Error]%s %s", colorRed, colorReset, message) - log.Println(formattedLog) -} - -func Debug(message ...any) { - formattedLog := fmt.Sprintf("%s[Debug] %s %s", colorBlue, colorReset, message) - log.Println(formattedLog) -} - -func Warning(message ...any) { - formattedLog := fmt.Sprintf("%s[Warning] %s %s", colorYellow, colorReset, message) - log.Println(formattedLog) -} - -func Critical(message ...any) { - formattedLog := fmt.Sprintf("%s[Critical] %s %s", colorMagenta, colorReset, message) - log.Println(formattedLog) -} - -func DetectLogType(newLog string) { - level := "" - message := "" - - // Find the matches - matches := re.FindStringSubmatch(newLog) - if len(matches) > 3 { - level = matches[3] - message = matches[4] - } else { - message = newLog - } - - if config.Debug { - switch level { - case "Debug": - Debug(message) - case "Info": - Info(message) - case "Warning": - Warning(message) - case "Error": - Error(message) - default: - Debug(message) - } +func logMessage(logger *log.Logger, level, message string) { + if logger == nil { + return } + logger.Printf("[%s] %s\n", level, message) +} +func Log(level, message string) { + formattedMessage := fmt.Sprintf("[%s] %s", level, message) switch level { - case "Error": - if errorLogger != nil { - errorLogger.Println(newLog) - } + case LogError, LogCritical: + logMessage(errorLogger, level, message) default: - if accessLogger != nil { - accessLogger.Println(newLog) - } + logMessage(accessLogger, level, message) + } + if outputLogs { + log.Println(formattedMessage) } } diff --git a/main.go b/main.go index 7e0e90f..c992911 100644 --- a/main.go +++ b/main.go @@ -2,99 +2,70 @@ package main import ( "context" - "crypto/tls" - "crypto/x509" - "errors" "fmt" - "marzban-node/tools" - "net/http" + "log" "os" "os/signal" "syscall" "time" - "github.com/go-chi/chi/v5" - "marzban-node/config" - log "marzban-node/logger" - "marzban-node/service" + "github.com/m03ed/marzban-node-go/config" + "github.com/m03ed/marzban-node-go/controller" + "github.com/m03ed/marzban-node-go/controller/rest" + "github.com/m03ed/marzban-node-go/controller/rpc" + nodeLogger "github.com/m03ed/marzban-node-go/logger" + "github.com/m03ed/marzban-node-go/tools" ) -func createServer(addr string, r chi.Router) (server *http.Server) { - - serverCert, err := tls.LoadX509KeyPair(config.SslCertFile, config.SslKeyFile) - if err != nil { - log.Error("Failed to load server certificate and key: ", err) - } - - clientCertPool := x509.NewCertPool() - clientCert, err := os.ReadFile(config.SslClientCertFile) - if err != nil { - log.Error("Failed to read client certificate: ", err) - } - clientCertPool.AppendCertsFromPEM(clientCert) - - tlsConfig := &tls.Config{ - Certificates: []tls.Certificate{serverCert}, - ClientCAs: clientCertPool, - ClientAuth: tls.RequireAndVerifyClientCert, - } - - server = &http.Server{ - Addr: addr, - TLSConfig: tlsConfig, - Handler: r, - } - return server -} - func main() { + nodeLogger.SetOutputMode(config.Debug) + certFileExists := tools.FileExists(config.SslCertFile) keyFileExists := tools.FileExists(config.SslKeyFile) if !certFileExists || !keyFileExists { - tools.RewriteSslFile() + if err := tools.RewriteSslFile(config.SslCertFile, config.SslKeyFile); err != nil { + log.Fatal(err) + } } sslClientCertFile := tools.FileExists(config.SslClientCertFile) if !sslClientCertFile { - panic("SSL_CLIENT_CERT_FILE is required for rest service.") + log.Fatal("SSL_CLIENT_CERT_FILE is required.") } addr := fmt.Sprintf("%s:%d", config.NodeHost, config.ServicePort) - s, err := service.NewService() + + tlsConfig, err := tools.LoadTLSCredentials(config.SslCertFile, config.SslKeyFile, + config.SslClientCertFile, false) if err != nil { - panic(err) + log.Fatal(err) + } + + var shutdownFunc func(ctx context.Context) error + var service controller.Service + + if config.ServiceProtocol == "grpc" { + shutdownFunc, service, err = rpc.StartGRPCListener(tlsConfig, addr) + } else { + shutdownFunc, service, err = rest.StartHttpListener(tlsConfig, addr) } - server := createServer(addr, s.Router) + defer service.StopService() - // Create a channel to listen for interrupt signals stopChan := make(chan os.Signal, 1) signal.Notify(stopChan, os.Interrupt, syscall.SIGTERM) - // Start server with TLS - go func() { - log.Info("Server is listening on", addr) - log.Info("Press Ctrl+C to stop") - if err = server.ListenAndServeTLS("", ""); err != nil && !errors.Is(http.ErrServerClosed, err) { - log.Error("Failed to start server: %v", err) - } - }() - - // Wait for interrupt signal + // Wait for interrupt <-stopChan - log.Info("Shutting down server...") - - log.Info("Performing cleanup job...") - s.StopJobs() + log.Println("Shutting down server...") - // Create a context with timeout for the shutdown - ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) + // Graceful shutdown + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - // Shutdown the server gracefully - if err = server.Shutdown(ctx); err != nil { - log.Error("Server forced to shutdown: ", err) + if err = shutdownFunc(ctx); err != nil { + log.Printf("Server shutdown error: %v", err) } - log.Info("Server gracefully stopped") + log.Println("Server gracefully stopped") } diff --git a/node_test.go b/node_test.go deleted file mode 100644 index 1d6b325..0000000 --- a/node_test.go +++ /dev/null @@ -1,134 +0,0 @@ -package main - -import ( - "context" - "fmt" - "github.com/google/uuid" - log "marzban-node/logger" - "marzban-node/service" - "marzban-node/tools" - "marzban-node/xray" - "regexp" - "strings" - "testing" - "time" -) - -func TestService(t *testing.T) { - xrayFile, err := tools.ReadFileAsString("xray.json") - if err != nil { - t.Error(err) - } - - //test creating config - newConfig, err := xray.NewXRayConfig(xrayFile) - if err != nil { - t.Error(err) - } - - s := new(service.Service) - err = s.Init() - if err != nil { - t.Error(err) - } - - err = newConfig.ApplyAPI(s.GetAPIPort()) - if err != nil { - t.Error(err) - } - - core := s.GetCore() - - log.Info("core created.") - log.Info("Version: ", core.GetVersion()) - - err = core.Start(newConfig) - if err != nil { - t.Error(err) - } - - logChan := core.GetLogs() - version := core.GetVersion() - - ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) - defer cancel() - -Loop: - for { - select { - case lastLog := <-logChan: - if strings.Contains(lastLog, "Xray "+version+" started") { - break Loop - } else { - regex := regexp.MustCompile(`^(\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[([^\]]+)\] (.+)$`) - matches := regex.FindStringSubmatch(lastLog) - if len(matches) > 3 && matches[2] == "Error" { - t.Error(matches) - } - } - case <-ctx.Done(): - t.Error("context done") - return - } - } - - if !core.Started() { - t.Error("core is not running") - } - - api := s.GetXrayAPI() - log.Info("api created.") - - ctx1, cancel := context.WithTimeout(context.Background(), time.Second*10) - defer cancel() - - // test with service StatsServiceClient - stats, err := api.GetOutboundsStats(ctx1, true) - if err != nil { - t.Error(err) - } - - for _, stat := range stats { - log.Info(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) - } - - time.Sleep(10 * time.Second) - // test HandlerServiceClient - user := &xray.User{ - Email: "Mosed.1", - Inbounds: &xray.Inbounds{ - Vmess: []string{"VMESS_TCP_INBOUND", "VMESS_no_tls"}, - Vless: []string{"VLESS_Reality"}, - Trojan: []string{}, - Shadowsocks: []string{}, - }, - Proxies: &xray.Proxy{ - Vmess: &xray.VmessSetting{ - ID: uuid.New(), - }, - Vless: &xray.VlessSetting{ - ID: uuid.New(), - }, - }, - } - - ctx2, cancel := context.WithTimeout(context.Background(), time.Second*10) - defer cancel() - proxySetting := xray.SetupUserAccount(user) - - for _, inbound := range newConfig.Inbounds { - account, isActive := xray.IsActiveInbound(inbound, user, proxySetting) - if isActive { - err = api.AddInboundUser(ctx2, inbound.Tag, account) - if err != nil { - t.Error(err) - } else { - log.Info("Added user to inbound ", inbound.Tag) - } - } - } - - time.Sleep(time.Second * 10) - - core.Stop() -} diff --git a/service/base_api.go b/service/base_api.go deleted file mode 100644 index 9c6080a..0000000 --- a/service/base_api.go +++ /dev/null @@ -1,209 +0,0 @@ -package service - -import ( - "context" - "encoding/json" - "errors" - "net" - "net/http" - "regexp" - "strings" - "time" - - "github.com/google/uuid" - - log "marzban-node/logger" -) - -const NodeVersion = "go-0.1.2" - -func (s *Service) Base(w http.ResponseWriter, _ *http.Request) { - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(s.response()) -} - -func (s *Service) Connect(w http.ResponseWriter, r *http.Request) { - sessionID := uuid.New() - s.SetSessionID(sessionID) - - ip, _, err := net.SplitHostPort(r.RemoteAddr) - if err != nil { - return - } - - s.SetIP(ip) - - if s.IsConnected() { - log.Info("New connection from ", ip, " core control access was taken away from previous client.") - s.core.Stop() - } - - s.SetConnected(true) - - log.Info(ip, " connected, Session ID = ", sessionID) - - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(s.response("session_id", sessionID)) -} - -func (s *Service) Disconnect(w http.ResponseWriter, _ *http.Request) { - if s.IsConnected() { - log.Info(s.clientIP, " disconnected, Session ID = ", s.GetSessionID()) - } - - s.SetSessionID(uuid.Nil) - s.SetIP("") - s.SetConnected(false) - - core := s.GetCore() - - if core.Started() { - core.Stop() - } - - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(s.response()) -} - -func (s *Service) Ping(w http.ResponseWriter, _ *http.Request) { - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(map[string]interface{}{}) -} - -func (s *Service) Start(w http.ResponseWriter, r *http.Request) { - var body startBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - newConfig := body.Config - if newConfig == nil { - http.Error(w, "no config received", http.StatusNotAcceptable) - return - } - - if err := newConfig.ApplyAPI(s.GetAPIPort()); err != nil { - log.Error("Failed to apply API: ", err) - http.Error(w, err.Error(), http.StatusServiceUnavailable) - return - } - - if err := s.GetCore().Start(newConfig); err != nil { - log.Error("Failed to start core: ", err) - http.Error(w, err.Error(), http.StatusServiceUnavailable) - return - } - - if err := s.ResetXrayAPI(); err != nil { - log.Error("Failed to reset xray API: ", err) - http.Error(w, err.Error(), http.StatusServiceUnavailable) - return - } - - if err := s.checkXrayStatus(); err != nil { - log.Error(err) - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - - s.SetConfig(newConfig) - - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(s.response()) -} - -func (s *Service) Stop(w http.ResponseWriter, _ *http.Request) { - s.GetCore().Stop() - - s.SetConfig(nil) - - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(s.response()) -} - -func (s *Service) Restart(w http.ResponseWriter, r *http.Request) { - var body startBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - newConfig := body.Config - if newConfig == nil { - http.Error(w, "no config received", http.StatusNotAcceptable) - return - } - - if err := newConfig.ApplyAPI(s.GetAPIPort()); err != nil { - log.Error("Failed to apply API: ", err) - http.Error(w, err.Error(), http.StatusServiceUnavailable) - return - } - - if err := s.GetCore().Restart(newConfig); err != nil { - log.Error(err) - http.Error(w, err.Error(), http.StatusServiceUnavailable) - return - } - - if err := s.ResetXrayAPI(); err != nil { - log.Error("Failed to reset xray API: ", err) - http.Error(w, err.Error(), http.StatusServiceUnavailable) - return - } - - if err := s.checkXrayStatus(); err != nil { - log.Error(err) - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - - s.SetConfig(newConfig) - - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(s.response()) -} - -func (s *Service) checkXrayStatus() error { - core := s.GetCore() - - logChan := core.GetLogs() - version := core.GetVersion() - - ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) - defer cancel() - -Loop: - for { - select { - case lastLog := <-logChan: - if strings.Contains(lastLog, "Xray "+version+" started") { - break Loop - } else { - regex := regexp.MustCompile(`^(\d{4}/\d{2}/\d{2} \d{2}:\d{2}:\d{2}) \[([^]]+)\] (.+)$`) - matches := regex.FindStringSubmatch(lastLog) - if len(matches) > 3 && matches[2] == "Error" { - return errors.New("Failed to start xray: " + matches[3]) - } - } - case <-ctx.Done(): - return errors.New("Failed to start xray: context done.") - } - } - return nil -} - -func (s *Service) response(extra ...interface{}) map[string]interface{} { - core := s.GetCore() - res := map[string]interface{}{ - "connected": s.IsConnected(), - "started": core.Started(), - "core_version": core.GetVersion(), - "node_version": NodeVersion, - } - for i := 0; i < len(extra); i += 2 { - res[extra[i].(string)] = extra[i+1] - } - return res -} diff --git a/service/main.go b/service/main.go deleted file mode 100644 index ddcc155..0000000 --- a/service/main.go +++ /dev/null @@ -1,12 +0,0 @@ -package service - -func NewService() (*Service, error) { - - s := new(Service) - err := s.Init() - if err != nil { - return nil, err - } - - return s, nil -} diff --git a/service/models.go b/service/models.go deleted file mode 100644 index b3c2ac5..0000000 --- a/service/models.go +++ /dev/null @@ -1,251 +0,0 @@ -package service - -import ( - "context" - "sync" - "time" - - "github.com/go-chi/chi/v5" - "github.com/google/uuid" - log "marzban-node/logger" - "marzban-node/tools" - "marzban-node/xray" - "marzban-node/xray_api" -) - -type Service struct { - Router chi.Router - connected bool - clientIP string - sessionID uuid.UUID - core *xray.Core - config *xray.Config - apiPort int - xrayAPI *xray_api.XrayAPI - stats tools.SystemStats - cancelFunc context.CancelFunc - mu sync.Mutex -} - -type userBody struct { - User *xray.User `json:"user"` -} - -type startBody struct { - Config *xray.Config `json:"config"` -} - -func (s *Service) Init() error { - s.SetSessionID(uuid.Nil) - s.SetIP("") - s.SetConnected(false) - - s.SetRouter() - s.ResetAPIPort() - - if err := s.ResetCore(); err != nil { - return err - } - - if err := s.ResetXrayAPI(); err != nil { - return err - } - - s.startJobs() - - return nil -} - -func (s *Service) SetRouter() { - router := chi.NewRouter() - - // Api Handlers - router.Use(LogRequest) - - router.Get("/", s.Base) - router.Get("/connect", s.Connect) - - router.Group(func(protected chi.Router) { - // check session and need to return data as context - protected.Use(s.checkSessionID) - - protected.Get("/ping", s.Ping) - protected.Post("/start", s.Start) - protected.Post("/restart", s.Restart) - protected.Get("/stop", s.Stop) - protected.Get("/disconnect", s.Disconnect) - - protected.Get("/logs", s.Logs) - - // users api - protected.Group(func(userGroup chi.Router) { - userGroup.Mount("/user", userGroup) - - userGroup.Post("/add", s.AddUser) - userGroup.Post("/update", s.UpdateUser) - userGroup.Post("/remove", s.RemoveUser) - }) - - // stats api - protected.Group(func(statsGroup chi.Router) { - statsGroup.Mount("/stats", statsGroup) - - statsGroup.Get("/users", s.GetUsersStats) - statsGroup.Get("/inbounds", s.GetInboundsStats) - statsGroup.Get("/outbounds", s.GetOutboundsStats) - statsGroup.Get("/system", s.GetSystemStats) - statsGroup.Get("/node", s.GetNodeStats) - }) - }) - - s.mu.Lock() - defer s.mu.Unlock() - s.Router = router -} - -func (s *Service) GetRouter() chi.Router { - s.mu.Lock() - defer s.mu.Unlock() - return s.Router -} - -func (s *Service) SetConnected(connected bool) { - s.mu.Lock() - defer s.mu.Unlock() - s.connected = connected -} - -func (s *Service) IsConnected() bool { - s.mu.Lock() - defer s.mu.Unlock() - return s.connected -} - -func (s *Service) SetIP(ip string) { - s.mu.Lock() - defer s.mu.Unlock() - s.clientIP = ip -} - -func (s *Service) GetIP() string { - s.mu.Lock() - defer s.mu.Unlock() - return s.clientIP -} - -func (s *Service) SetSessionID(id uuid.UUID) { - s.mu.Lock() - defer s.mu.Unlock() - s.sessionID = id -} - -func (s *Service) GetSessionID() uuid.UUID { - s.mu.Lock() - defer s.mu.Unlock() - return s.sessionID -} - -func (s *Service) ResetCore() error { - s.mu.Lock() - defer s.mu.Unlock() - - core, err := xray.NewXRayCore() - if err != nil { - return err - } - s.core = core - return nil -} - -func (s *Service) GetCore() *xray.Core { - s.mu.Lock() - defer s.mu.Unlock() - return s.core -} - -func (s *Service) SetConfig(config *xray.Config) { - s.mu.Lock() - defer s.mu.Unlock() - s.config = config -} - -func (s *Service) GetConfig() *xray.Config { - s.mu.Lock() - defer s.mu.Unlock() - return s.config -} - -func (s *Service) ResetAPIPort() int { - s.mu.Lock() - defer s.mu.Unlock() - - apiPort := tools.FindFreePort() - s.apiPort = apiPort - return apiPort -} - -func (s *Service) GetAPIPort() int { - s.mu.Lock() - defer s.mu.Unlock() - return s.apiPort -} - -func (s *Service) ResetXrayAPI() error { - s.mu.Lock() - defer s.mu.Unlock() - - api, err := xray_api.NewXrayAPI(s.apiPort) - if err != nil { - log.Error("Failed to create new xray client: ", err) - return nil - } - s.xrayAPI = api - return nil -} - -func (s *Service) GetXrayAPI() *xray_api.XrayAPI { - s.mu.Lock() - defer s.mu.Unlock() - return s.xrayAPI -} - -func (s *Service) recordSystemStats(ctx context.Context) { - for { - select { - case <-ctx.Done(): - break - default: - stats, err := tools.GetSystemStats() - if err != nil { - log.Error("Failed to get system stats: ", err) - } else { - s.mu.Lock() - s.stats = stats - s.mu.Unlock() - } - time.Sleep(100 * time.Millisecond) - } - } -} - -func (s *Service) GetStats() tools.SystemStats { - s.mu.Lock() - defer s.mu.Unlock() - return s.stats -} - -func (s *Service) startJobs() { - ctx, cancel := context.WithCancel(context.Background()) - s.mu.Lock() - defer s.mu.Unlock() - s.cancelFunc = cancel - go s.recordSystemStats(ctx) -} - -func (s *Service) StopJobs() { - s.GetCore().Stop() - - s.mu.Lock() - defer s.mu.Unlock() - s.cancelFunc() -} diff --git a/service/stats_api.go b/service/stats_api.go deleted file mode 100644 index ff6343d..0000000 --- a/service/stats_api.go +++ /dev/null @@ -1,114 +0,0 @@ -package service - -import ( - "context" - "encoding/json" - log "marzban-node/logger" - "net/http" - "time" -) - -func (s *Service) GetOutboundsStats(w http.ResponseWriter, _ *http.Request) { - if !s.GetCore().Started() { - http.Error(w, "core is not started yet", http.StatusServiceUnavailable) - return - } - - api := s.GetXrayAPI() - if api.StatsServiceClient == nil { - http.Error(w, "stat service is not available", http.StatusServiceUnavailable) - return - } - - ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) - defer cancel() - - response, err := api.GetOutboundsStats(ctx, true) - if err != nil { - log.Error(err) - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(response) -} - -func (s *Service) GetInboundsStats(w http.ResponseWriter, _ *http.Request) { - if !s.core.Started() { - http.Error(w, "core is not started yet", http.StatusServiceUnavailable) - return - } - - api := s.GetXrayAPI() - if api.StatsServiceClient == nil { - http.Error(w, "stat service is not available", http.StatusServiceUnavailable) - return - } - - ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) - defer cancel() - - response, err := api.GetInboundsStats(ctx, true) - if err != nil { - log.Error(err) - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(response) -} - -func (s *Service) GetUsersStats(w http.ResponseWriter, _ *http.Request) { - if !s.core.Started() { - http.Error(w, "core is not started yet", http.StatusServiceUnavailable) - return - } - - api := s.GetXrayAPI() - if api.StatsServiceClient == nil { - http.Error(w, "stat service is not available", http.StatusServiceUnavailable) - return - } - - ctx, cancel := context.WithTimeout(context.Background(), time.Second*10) - defer cancel() - - response, err := api.GetUsersStats(ctx, true) - if err != nil { - log.Error(err) - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(response) -} - -func (s *Service) GetSystemStats(w http.ResponseWriter, _ *http.Request) { - if !s.core.Started() { - http.Error(w, "core is not started yet", http.StatusServiceUnavailable) - return - } - - api := s.GetXrayAPI() - if api.StatsServiceClient == nil { - http.Error(w, "stat service is not available", http.StatusServiceUnavailable) - return - } - - ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) - defer cancel() - - response, err := api.GetSysStats(ctx) - if err != nil { - log.Error(err) - http.Error(w, err.Error(), http.StatusInternalServerError) - return - } - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(response) -} - -func (s *Service) GetNodeStats(w http.ResponseWriter, _ *http.Request) { - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(s.GetStats()) -} diff --git a/service/user_api.go b/service/user_api.go deleted file mode 100644 index b45838f..0000000 --- a/service/user_api.go +++ /dev/null @@ -1,128 +0,0 @@ -package service - -import ( - "context" - "encoding/json" - log "marzban-node/logger" - "marzban-node/xray" - "net/http" - "slices" - "time" -) - -func (s *Service) AddUser(w http.ResponseWriter, r *http.Request) { - api := s.GetXrayAPI() - if api.HandlerServiceClient == nil { - http.Error(w, "handler service is not available", http.StatusServiceUnavailable) - return - } - - var body userBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - user := body.User - if user == nil { - http.Error(w, "no user received", http.StatusNotAcceptable) - return - } - - ctx, cancel := context.WithTimeout(context.Background(), time.Second*15) - defer cancel() - - errorMessage := "Failed to add user:" - - proxySetting := xray.SetupUserAccount(user) - for _, inbound := range s.GetConfig().Inbounds { - account, isActive := xray.IsActiveInbound(inbound, user, proxySetting) - if isActive { - if err := api.AddInboundUser(ctx, inbound.Tag, account); err != nil { - http.Error(w, errorMessage+err.Error(), http.StatusInternalServerError) - log.Error(errorMessage, err) - } - } - } - - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(map[string]interface{}{}) -} - -func (s *Service) UpdateUser(w http.ResponseWriter, r *http.Request) { - api := s.GetXrayAPI() - if api.HandlerServiceClient == nil { - http.Error(w, "handler service is not available", http.StatusServiceUnavailable) - return - } - - var body userBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - user := body.User - if user == nil { - http.Error(w, "no user received", http.StatusNotAcceptable) - return - } - - var activeInbounds []string - - ctx, cancel := context.WithTimeout(context.Background(), time.Second*15) - defer cancel() - - errorMessage := "Failed to add user:" - - proxySetting := xray.SetupUserAccount(user) - for _, inbound := range s.GetConfig().Inbounds { - account, isActive := xray.IsActiveInbound(inbound, user, proxySetting) - if isActive { - activeInbounds = append(activeInbounds, inbound.Tag) - if err := api.AddInboundUser(ctx, inbound.Tag, account); err != nil { - http.Error(w, errorMessage+err.Error(), http.StatusInternalServerError) - log.Error(errorMessage, err) - } - } - } - - for _, inbound := range s.GetConfig().Inbounds { - if !slices.Contains(activeInbounds, inbound.Tag) { - _ = api.RemoveInboundUser(ctx, inbound.Tag, user.Email) - } - } - - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(map[string]interface{}{}) -} - -func (s *Service) RemoveUser(w http.ResponseWriter, r *http.Request) { - api := s.GetXrayAPI() - if api.HandlerServiceClient == nil { - http.Error(w, "handler service is not available", http.StatusServiceUnavailable) - return - } - - var body userBody - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) - return - } - - user := body.User - if user == nil { - http.Error(w, "no user received", http.StatusNotAcceptable) - return - } - - ctx, cancel := context.WithTimeout(context.Background(), time.Second*15) - defer cancel() - - for _, inbound := range s.GetConfig().Inbounds { - _ = api.RemoveInboundUser(ctx, inbound.Tag, user.Email) - } - - w.Header().Set("Content-Type", "application/json") - json.NewEncoder(w).Encode(map[string]interface{}{}) -} diff --git a/tools/certificate.go b/tools/certificate.go index b2b10ac..3267820 100644 --- a/tools/certificate.go +++ b/tools/certificate.go @@ -6,8 +6,7 @@ import ( "crypto/x509" "crypto/x509/pkix" "encoding/pem" - "marzban-node/config" - log "marzban-node/logger" + "log" "math/big" "os" "time" @@ -47,35 +46,32 @@ func generateCertificate() (string, string, error) { return string(certOut), string(keyOut), nil } -func RewriteSslFile() { +func RewriteSslFile(certPath, keyPath string) error { cert, key, err := generateCertificate() if err != nil { - panic(err) + log.Fatal(err) } // Write certificate to file - certFile, err := os.Create(config.SslCertFile) + certFile, err := os.Create(certPath) if err != nil { - log.Error("Problem in creating SslCert File: ", err) - return + return err } defer certFile.Close() if _, err = certFile.WriteString(cert); err != nil { - log.Error("Problem in writing SslCert File: ", err) - return + return err } // Write key to file - keyFile, err := os.Create(config.SslKeyFile) + keyFile, err := os.Create(keyPath) if err != nil { - log.Error("Problem in creating SslKey File: ", err) - return + return err } defer keyFile.Close() if _, err = keyFile.WriteString(key); err != nil { - log.Error("Problem in writing SslKey File: ", err) - return + return err } + return nil } diff --git a/tools/current_time.go b/tools/current_time.go deleted file mode 100644 index a6313e4..0000000 --- a/tools/current_time.go +++ /dev/null @@ -1,41 +0,0 @@ -package tools - -import ( - "encoding/json" - "net/http" - "time" -) - -func UtcTime() (*time.Time, error) { - url := "https://worldtimeapi.org/api/timezone/utc" - resp, err := http.Get(url) - if err != nil { - return nil, err - } - defer resp.Body.Close() - - var body response - if err = json.NewDecoder(resp.Body).Decode(&resp); err != nil { - return nil, err - } - - return body.UtcDatetime, nil -} - -type response struct { - Abbreviation string `json:"abbreviation"` - ClientIp string `json:"client_ip"` - Datetime time.Time `json:"datetime"` - DayOfWeek int `json:"day_of_week"` - DayOfYear int `json:"day_of_year"` - Dst bool `json:"dst"` - DstFrom interface{} `json:"dst_from"` - DstOffset int `json:"dst_offset"` - DstUntil interface{} `json:"dst_until"` - RawOffset int `json:"raw_offset"` - Timezone string `json:"timezone"` - UnixTime int `json:"unixtime"` - UtcDatetime *time.Time `json:"utc_datetime"` - UtcOffset string `json:"utc_offset"` - WeekNumber int `json:"week_number"` -} diff --git a/tools/sys.go b/tools/sys.go index f489ac1..c8f4af8 100644 --- a/tools/sys.go +++ b/tools/sys.go @@ -2,25 +2,18 @@ package tools import ( "bufio" - "github.com/shirou/gopsutil/cpu" - "github.com/shirou/gopsutil/mem" + "github.com/m03ed/marzban-node-go/common" "os" "strconv" "strings" "time" -) -type SystemStats struct { - MemTotal uint64 `json:"mem_total"` - MemUsed uint64 `json:"mem_used"` - CpuCores int `json:"cpu_cores"` - CpuUsage float64 `json:"cpu_usage"` - IncomingBandwidthSpeed int `json:"incoming_bandwidth_speed"` - OutgoingBandwidthSpeed int `json:"outgoing_bandwidth_speed"` -} + "github.com/shirou/gopsutil/cpu" + "github.com/shirou/gopsutil/mem" +) -func GetSystemStats() (SystemStats, error) { - stats := SystemStats{} +func GetSystemStats() (*common.SystemStatsResponse, error) { + stats := &common.SystemStatsResponse{} vm, err := mem.VirtualMemory() if err != nil { @@ -33,7 +26,7 @@ func GetSystemStats() (SystemStats, error) { if err != nil { return stats, err } - stats.CpuCores = cores + stats.CpuCores = uint64(cores) percentages, err := cpu.Percent(time.Second, false) if err != nil { @@ -47,8 +40,8 @@ func GetSystemStats() (SystemStats, error) { if err != nil { return stats, err } - stats.IncomingBandwidthSpeed = incomingSpeed - stats.OutgoingBandwidthSpeed = outgoingSpeed + stats.IncomingBandwidthSpeed = uint64(incomingSpeed) + stats.OutgoingBandwidthSpeed = uint64(outgoingSpeed) return stats, nil } diff --git a/tools/tls.go b/tools/tls.go new file mode 100644 index 0000000..c8873ce --- /dev/null +++ b/tools/tls.go @@ -0,0 +1,35 @@ +package tools + +import ( + "crypto/tls" + "crypto/x509" + "fmt" + "os" +) + +func LoadTLSCredentials(cert, key, poolCert string, isClient bool) (*tls.Config, error) { + pem, err := os.ReadFile(poolCert) + if err != nil { + return nil, err + } + + certPool := x509.NewCertPool() + if !certPool.AppendCertsFromPEM(pem) { + return nil, fmt.Errorf("failed to add CA's certificate") + } + + serverCert, err := tls.LoadX509KeyPair(cert, key) + if err != nil { + return nil, err + } + + config := &tls.Config{ + Certificates: []tls.Certificate{serverCert}, + ClientAuth: tls.RequireAndVerifyClientCert, + ClientCAs: certPool, + } + if isClient { + config.InsecureSkipVerify = true + } + return config, nil +} diff --git a/xray/core.go b/xray/core.go deleted file mode 100644 index 82ff40e..0000000 --- a/xray/core.go +++ /dev/null @@ -1,216 +0,0 @@ -package xray - -import ( - "bufio" - "bytes" - "context" - "encoding/json" - "errors" - "io" - cnf "marzban-node/config" - log "marzban-node/logger" - "os" - "os/exec" - "regexp" - "sync" -) - -type Core struct { - executablePath string - assetsPath string - version string - process *exec.Cmd - restarting bool - logsChan chan string - cancelFunc context.CancelFunc - mu sync.Mutex -} - -func NewXRayCore() (*Core, error) { - core := &Core{ - executablePath: cnf.XrayExecutablePath, - assetsPath: cnf.XrayAssetsPath, - logsChan: make(chan string), - } - - version, err := core.refreshVersion() - if err != nil { - return nil, err - } - core.setVersion(version) - - return core, nil -} - -func (x *Core) refreshVersion() (string, error) { - cmd := exec.Command(x.executablePath, "version") - var out bytes.Buffer - cmd.Stdout = &out - err := cmd.Run() - if err != nil { - return "", err - } - - r := regexp.MustCompile(`^Xray (\d+\.\d+\.\d+)`) - matches := r.FindStringSubmatch(out.String()) - if len(matches) > 1 { - return matches[1], nil - } - - return "", errors.New("could not parse Xray version") -} - -func (x *Core) setVersion(version string) { - x.mu.Lock() - defer x.mu.Unlock() - x.version = version -} - -func (x *Core) GetVersion() string { - x.mu.Lock() - defer x.mu.Unlock() - return x.version -} - -func (x *Core) Started() bool { - x.mu.Lock() - defer x.mu.Unlock() - if x.process == nil || x.process.Process == nil { - return false - } - if x.process.ProcessState == nil { - return true - } - return false -} - -func (x *Core) Start(config *Config) error { - if x.Started() { - return errors.New("Xray is started already") - } - - logLevel := config.Log.LogLevel - if logLevel == "none" || logLevel == "error" { - config.Log.LogLevel = "warning" - } - - accessFile, errorFile := config.RemoveLogFiles() - - cmd := exec.Command(x.executablePath, "run", "-config", "stdin:") - cmd.Env = append(os.Environ(), "XRAY_LOCATION_ASSET="+x.assetsPath) - - xrayJson, err := config.ToJSON() - if err != nil { - return err - } - - stdout, err := cmd.StdoutPipe() - if err != nil { - return err - } - - stderr, err := cmd.StderrPipe() - if err != nil { - return err - } - - cmd.Stdin = bytes.NewBufferString(xrayJson) - - err = cmd.Start() - if err != nil { - return err - } - - log.SetLogFile(accessFile, errorFile) - - ctx := x.makeContext() - - x.process = cmd - - // Start capturing process logs - go x.captureProcessLogs(ctx, stdout) - go x.captureProcessLogs(ctx, stderr) - - if cnf.Debug { - var prettyJSON bytes.Buffer - var jsonFile *os.File - err = json.Indent(&prettyJSON, []byte(xrayJson), "", " ") - if err != nil { - log.Error("Problem in formatting JSON: ", err) - } else { - jsonFile, err = os.Create(cnf.GeneratedConfigPath) - if err != nil { - log.Error("Can't create generated config json file", err) - } else { - _, err = jsonFile.WriteString(prettyJSON.String()) - if err != nil { - log.Error("Problem in writing generated config json File: ", err) - } - } - } - } - - return nil -} - -func (x *Core) Stop() { - if !x.Started() { - return - } - - _ = x.process.Process.Kill() - x.mu.Lock() - defer x.mu.Unlock() - x.process = nil - - x.cancelFunc() - - log.Warning("Xray core stopped") -} - -func (x *Core) Restart(config *Config) error { - x.mu.Lock() - defer x.mu.Unlock() - if x.restarting { - return errors.New("Xray is already restarted") - } - - x.restarting = true - defer func() { x.restarting = false }() - - log.Warning("restarting Xray core...") - x.Stop() - err := x.Start(config) - if err != nil { - return err - } - return nil -} - -func (x *Core) captureProcessLogs(ctx context.Context, pipe io.Reader) { - scanner := bufio.NewScanner(pipe) - for scanner.Scan() { - select { - case <-ctx.Done(): - return // Exit gracefully if stop signal received - default: - output := scanner.Text() - log.DetectLogType(output) - x.logsChan <- output - } - } -} - -func (x *Core) GetLogs() chan string { - x.mu.Lock() - defer x.mu.Unlock() - return x.logsChan -} - -func (x *Core) makeContext() context.Context { - ctx, cancel := context.WithCancel(context.Background()) - x.mu.Lock() - defer x.mu.Unlock() - x.cancelFunc = cancel - return ctx -} diff --git a/xray/user.go b/xray/user.go deleted file mode 100644 index 8228257..0000000 --- a/xray/user.go +++ /dev/null @@ -1,157 +0,0 @@ -package xray - -import ( - "github.com/google/uuid" - "marzban-node/xray_api/proto/proxy/shadowsocks" - "marzban-node/xray_api/types" - "slices" - "strings" -) - -func SetupUserAccount(user *User) types.ProxySettings { - settings := types.ProxySettings{} - - if user.Proxies.Vmess != nil && user.Proxies.Vmess.ID != uuid.Nil { - settings.Vmess = &types.VMessAccount{ - BaseAccount: types.BaseAccount{ - Email: user.Email, - Level: uint32(0), - }, - ID: user.Proxies.Vmess.ID, - } - } - - if user.Proxies.Vless != nil && user.Proxies.Vless.ID != uuid.Nil { - settings.Vless = &types.VLESSAccount{ - BaseAccount: types.BaseAccount{ - Email: user.Email, - Level: uint32(0), - }, - ID: user.Proxies.Vless.ID, - Flow: user.Proxies.Vless.Flow, - } - } - - if user.Proxies.Trojan != nil && user.Proxies.Trojan.Password != "" { - settings.Trojan = &types.TrojanAccount{ - BaseAccount: types.BaseAccount{ - Email: user.Email, - Level: uint32(0), - }, - Password: user.Proxies.Trojan.Password, - } - } - - if user.Proxies.Shadowsocks != nil && user.Proxies.Shadowsocks.Password != "" { - settings.Shadowsocks = &types.ShadowsocksAccount{ - BaseAccount: types.BaseAccount{ - Email: user.Email, - Level: uint32(0), - }, - Password: user.Proxies.Trojan.Password, - } - if val, ok := shadowsocks.CipherType_value[strings.ToUpper(user.Proxies.Shadowsocks.Method)]; ok { - settings.Shadowsocks.Method = shadowsocks.CipherType(val) - } else { - settings.Shadowsocks.Method = shadowsocks.CipherType_NONE - } - - settings.Shadowsocks2022 = &types.Shadowsocks2022Account{ - BaseAccount: types.BaseAccount{ - Email: user.Email, - Level: uint32(0), - }, - Key: user.Proxies.Shadowsocks.Password, - } - } - - return settings -} - -func IsActiveInbound(inbound Inbound, user *User, settings types.ProxySettings) (types.Account, bool) { - switch inbound.Protocol { - case Vmess: - if slices.Contains(user.Inbounds.Vmess, inbound.Tag) { - return settings.Vmess, true - } - case Vless: - if slices.Contains(user.Inbounds.Vless, inbound.Tag) { - account := *settings.Vless - - if user.Proxies.Vless.Flow == types.VISION { - - network, networkOk := inbound.StreamSettings["network"].(string) - tls, tlsOk := inbound.StreamSettings["security"].(string) - - headerMap, headerMapOk := inbound.StreamSettings["header"].(map[string]interface{}) - headerType, headerTypeOk := "", false - if headerMapOk { - headerType, headerTypeOk = headerMap["Type"].(string) - } - - if networkOk && (network == "tcp" || network == "kcp") { - if !(tlsOk && (tls == "tls" || tls == "reality")) || (headerTypeOk && headerType == "http") { - account.Flow = types.NONE - } - } else if headerTypeOk && headerType == "http" { - account.Flow = types.NONE - } else { - account.Flow = types.NONE - } - } - return &account, true - } - case Trojan: - if slices.Contains(user.Inbounds.Trojan, inbound.Tag) { - return settings.Trojan, true - } - case Shadowsocks: - if slices.Contains(user.Inbounds.Shadowsocks, inbound.Tag) { - method, methodOk := inbound.Settings["method"].(string) - if methodOk && strings.HasPrefix("2022-blake3", method) { - return settings.Shadowsocks2022, true - } - return settings.Shadowsocks, true - } - } - return nil, false -} - -type VmessSetting struct { - ID uuid.UUID `json:"id"` -} - -type VlessSetting struct { - ID uuid.UUID `json:"id"` - Flow types.XTLSFlows `json:"flow"` -} - -type TrojanSetting struct { - Password string `json:"password"` -} - -type ShadowsocksSetting struct { - Password string `json:"password"` - Method string `json:"method"` -} - -type Proxy struct { - Vmess *VmessSetting `json:"vmess,omitempty"` - Vless *VlessSetting `json:"vless,omitempty"` - Trojan *TrojanSetting `json:"trojan,omitempty"` - Shadowsocks *ShadowsocksSetting `json:"shadowsocks,omitempty"` -} - -type Inbounds struct { - Vmess []string `json:"vmess,omitempty"` - Vless []string `json:"vless,omitempty"` - Trojan []string `json:"trojan,omitempty"` - Shadowsocks []string `json:"shadowsocks,omitempty"` -} - -// User struct used to get detail of a user from main panel -type User struct { - Email string `json:"email"` - Proxies *Proxy `json:"proxies,omitempty"` - Inbounds *Inbounds `json:"inbounds,omitempty"` -} diff --git a/xray_api/proto/app/commander/config.pb.go b/xray_api/proto/app/commander/config.pb.go deleted file mode 100644 index 6c733ca..0000000 --- a/xray_api/proto/app/commander/config.pb.go +++ /dev/null @@ -1,232 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/commander/config.proto - -package commander - -import ( - serial "marzban-node/xray_api/proto/common/serial" - 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) -) - -// Config is the settings for Commander. -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Tag of the outbound handler that handles grpc connections. - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - // Network address of commander grpc service. - Listen string `protobuf:"bytes,3,opt,name=listen,proto3" json:"listen,omitempty"` - // Services that supported by this server. All services must implement Service - // interface. - Service []*serial.TypedMessage `protobuf:"bytes,2,rep,name=service,proto3" json:"service,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_commander_config_proto_msgTypes[0] - 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_app_commander_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_app_commander_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *Config) GetListen() string { - if x != nil { - return x.Listen - } - return "" -} - -func (x *Config) GetService() []*serial.TypedMessage { - if x != nil { - return x.Service - } - return nil -} - -// ReflectionConfig is the placeholder config for ReflectionService. -type ReflectionConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ReflectionConfig) Reset() { - *x = ReflectionConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_commander_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReflectionConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReflectionConfig) ProtoMessage() {} - -func (x *ReflectionConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_commander_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 ReflectionConfig.ProtoReflect.Descriptor instead. -func (*ReflectionConfig) Descriptor() ([]byte, []int) { - return file_app_commander_config_proto_rawDescGZIP(), []int{1} -} - -var File_app_commander_config_proto protoreflect.FileDescriptor - -var file_app_commander_config_proto_rawDesc = []byte{ - 0x0a, 0x1a, 0x61, 0x70, 0x70, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, - 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x6e, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, - 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, - 0x16, 0x0a, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x12, 0x3a, 0x0a, 0x07, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, - 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x22, 0x12, 0x0a, 0x10, 0x52, 0x65, 0x66, 0x6c, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x58, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, - 0x72, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, - 0x70, 0x70, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, 0x72, 0xaa, 0x02, 0x12, 0x58, - 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x65, - 0x72, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_commander_config_proto_rawDescOnce sync.Once - file_app_commander_config_proto_rawDescData = file_app_commander_config_proto_rawDesc -) - -func file_app_commander_config_proto_rawDescGZIP() []byte { - file_app_commander_config_proto_rawDescOnce.Do(func() { - file_app_commander_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_commander_config_proto_rawDescData) - }) - return file_app_commander_config_proto_rawDescData -} - -var file_app_commander_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_app_commander_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.app.commander.Config - (*ReflectionConfig)(nil), // 1: xray.app.commander.ReflectionConfig - (*serial.TypedMessage)(nil), // 2: xray.common.serial.TypedMessage -} -var file_app_commander_config_proto_depIdxs = []int32{ - 2, // 0: xray.app.commander.Config.service:type_name -> xray.common.serial.TypedMessage - 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_app_commander_config_proto_init() } -func file_app_commander_config_proto_init() { - if File_app_commander_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_commander_config_proto_msgTypes[0].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 - } - } - file_app_commander_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReflectionConfig); 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_app_commander_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_commander_config_proto_goTypes, - DependencyIndexes: file_app_commander_config_proto_depIdxs, - MessageInfos: file_app_commander_config_proto_msgTypes, - }.Build() - File_app_commander_config_proto = out.File - file_app_commander_config_proto_rawDesc = nil - file_app_commander_config_proto_goTypes = nil - file_app_commander_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/dispatcher/config.pb.go b/xray_api/proto/app/dispatcher/config.pb.go deleted file mode 100644 index 13af96e..0000000 --- a/xray_api/proto/app/dispatcher/config.pb.go +++ /dev/null @@ -1,204 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/dispatcher/config.proto - -package dispatcher - -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_app_dispatcher_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_app_dispatcher_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_app_dispatcher_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_app_dispatcher_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_app_dispatcher_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_app_dispatcher_config_proto_rawDescGZIP(), []int{1} -} - -func (x *Config) GetSettings() *SessionConfig { - if x != nil { - return x.Settings - } - return nil -} - -var File_app_dispatcher_config_proto protoreflect.FileDescriptor - -var file_app_dispatcher_config_proto_rawDesc = []byte{ - 0x0a, 0x1b, 0x61, 0x70, 0x70, 0x2f, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 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, 0x48, 0x0a, 0x06, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x3e, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 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, 0x5b, 0x0a, 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x50, 0x01, - 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, - 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, - 0x64, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0xaa, 0x02, 0x13, 0x58, 0x72, 0x61, - 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x44, 0x69, 0x73, 0x70, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_dispatcher_config_proto_rawDescOnce sync.Once - file_app_dispatcher_config_proto_rawDescData = file_app_dispatcher_config_proto_rawDesc -) - -func file_app_dispatcher_config_proto_rawDescGZIP() []byte { - file_app_dispatcher_config_proto_rawDescOnce.Do(func() { - file_app_dispatcher_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_dispatcher_config_proto_rawDescData) - }) - return file_app_dispatcher_config_proto_rawDescData -} - -var file_app_dispatcher_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_app_dispatcher_config_proto_goTypes = []interface{}{ - (*SessionConfig)(nil), // 0: xray.app.dispatcher.SessionConfig - (*Config)(nil), // 1: xray.app.dispatcher.Config -} -var file_app_dispatcher_config_proto_depIdxs = []int32{ - 0, // 0: xray.app.dispatcher.Config.settings:type_name -> xray.app.dispatcher.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_app_dispatcher_config_proto_init() } -func file_app_dispatcher_config_proto_init() { - if File_app_dispatcher_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_dispatcher_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_app_dispatcher_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_app_dispatcher_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_dispatcher_config_proto_goTypes, - DependencyIndexes: file_app_dispatcher_config_proto_depIdxs, - MessageInfos: file_app_dispatcher_config_proto_msgTypes, - }.Build() - File_app_dispatcher_config_proto = out.File - file_app_dispatcher_config_proto_rawDesc = nil - file_app_dispatcher_config_proto_goTypes = nil - file_app_dispatcher_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/dns/config.pb.go b/xray_api/proto/app/dns/config.pb.go deleted file mode 100644 index 89cfb13..0000000 --- a/xray_api/proto/app/dns/config.pb.go +++ /dev/null @@ -1,781 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/dns/config.proto - -package dns - -import ( - router "marzban-node/xray_api/proto/app/router" - net "marzban-node/xray_api/proto/common/net" - 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 DomainMatchingType int32 - -const ( - DomainMatchingType_Full DomainMatchingType = 0 - DomainMatchingType_Subdomain DomainMatchingType = 1 - DomainMatchingType_Keyword DomainMatchingType = 2 - DomainMatchingType_Regex DomainMatchingType = 3 -) - -// Enum value maps for DomainMatchingType. -var ( - DomainMatchingType_name = map[int32]string{ - 0: "Full", - 1: "Subdomain", - 2: "Keyword", - 3: "Regex", - } - DomainMatchingType_value = map[string]int32{ - "Full": 0, - "Subdomain": 1, - "Keyword": 2, - "Regex": 3, - } -) - -func (x DomainMatchingType) Enum() *DomainMatchingType { - p := new(DomainMatchingType) - *p = x - return p -} - -func (x DomainMatchingType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DomainMatchingType) Descriptor() protoreflect.EnumDescriptor { - return file_app_dns_config_proto_enumTypes[0].Descriptor() -} - -func (DomainMatchingType) Type() protoreflect.EnumType { - return &file_app_dns_config_proto_enumTypes[0] -} - -func (x DomainMatchingType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DomainMatchingType.Descriptor instead. -func (DomainMatchingType) EnumDescriptor() ([]byte, []int) { - return file_app_dns_config_proto_rawDescGZIP(), []int{0} -} - -type QueryStrategy int32 - -const ( - QueryStrategy_USE_IP QueryStrategy = 0 - QueryStrategy_USE_IP4 QueryStrategy = 1 - QueryStrategy_USE_IP6 QueryStrategy = 2 -) - -// Enum value maps for QueryStrategy. -var ( - QueryStrategy_name = map[int32]string{ - 0: "USE_IP", - 1: "USE_IP4", - 2: "USE_IP6", - } - QueryStrategy_value = map[string]int32{ - "USE_IP": 0, - "USE_IP4": 1, - "USE_IP6": 2, - } -) - -func (x QueryStrategy) Enum() *QueryStrategy { - p := new(QueryStrategy) - *p = x - return p -} - -func (x QueryStrategy) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (QueryStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_app_dns_config_proto_enumTypes[1].Descriptor() -} - -func (QueryStrategy) Type() protoreflect.EnumType { - return &file_app_dns_config_proto_enumTypes[1] -} - -func (x QueryStrategy) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use QueryStrategy.Descriptor instead. -func (QueryStrategy) EnumDescriptor() ([]byte, []int) { - return file_app_dns_config_proto_rawDescGZIP(), []int{1} -} - -type NameServer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Address *net.Endpoint `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - ClientIp []byte `protobuf:"bytes,5,opt,name=client_ip,json=clientIp,proto3" json:"client_ip,omitempty"` - SkipFallback bool `protobuf:"varint,6,opt,name=skipFallback,proto3" json:"skipFallback,omitempty"` - PrioritizedDomain []*NameServer_PriorityDomain `protobuf:"bytes,2,rep,name=prioritized_domain,json=prioritizedDomain,proto3" json:"prioritized_domain,omitempty"` - Geoip []*router.GeoIP `protobuf:"bytes,3,rep,name=geoip,proto3" json:"geoip,omitempty"` - OriginalRules []*NameServer_OriginalRule `protobuf:"bytes,4,rep,name=original_rules,json=originalRules,proto3" json:"original_rules,omitempty"` - QueryStrategy QueryStrategy `protobuf:"varint,7,opt,name=query_strategy,json=queryStrategy,proto3,enum=xray.app.dns.QueryStrategy" json:"query_strategy,omitempty"` -} - -func (x *NameServer) Reset() { - *x = NameServer{} - if protoimpl.UnsafeEnabled { - mi := &file_app_dns_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NameServer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NameServer) ProtoMessage() {} - -func (x *NameServer) ProtoReflect() protoreflect.Message { - mi := &file_app_dns_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 NameServer.ProtoReflect.Descriptor instead. -func (*NameServer) Descriptor() ([]byte, []int) { - return file_app_dns_config_proto_rawDescGZIP(), []int{0} -} - -func (x *NameServer) GetAddress() *net.Endpoint { - if x != nil { - return x.Address - } - return nil -} - -func (x *NameServer) GetClientIp() []byte { - if x != nil { - return x.ClientIp - } - return nil -} - -func (x *NameServer) GetSkipFallback() bool { - if x != nil { - return x.SkipFallback - } - return false -} - -func (x *NameServer) GetPrioritizedDomain() []*NameServer_PriorityDomain { - if x != nil { - return x.PrioritizedDomain - } - return nil -} - -func (x *NameServer) GetGeoip() []*router.GeoIP { - if x != nil { - return x.Geoip - } - return nil -} - -func (x *NameServer) GetOriginalRules() []*NameServer_OriginalRule { - if x != nil { - return x.OriginalRules - } - return nil -} - -func (x *NameServer) GetQueryStrategy() QueryStrategy { - if x != nil { - return x.QueryStrategy - } - return QueryStrategy_USE_IP -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Nameservers used by this DNS. Only traditional UDP servers are support at - // the moment. A special value 'localhost' as a domain address can be set to - // use DNS on local system. - // - // Deprecated: Marked as deprecated in app/dns/config.proto. - NameServers []*net.Endpoint `protobuf:"bytes,1,rep,name=NameServers,proto3" json:"NameServers,omitempty"` - // NameServer list used by this DNS client. - NameServer []*NameServer `protobuf:"bytes,5,rep,name=name_server,json=nameServer,proto3" json:"name_server,omitempty"` - // Static hosts. Domain to IP. - // Deprecated. Use static_hosts. - // - // Deprecated: Marked as deprecated in app/dns/config.proto. - Hosts map[string]*net.IPOrDomain `protobuf:"bytes,2,rep,name=Hosts,proto3" json:"Hosts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - // Client IP for EDNS client subnet. Must be 4 bytes (IPv4) or 16 bytes - // (IPv6). - ClientIp []byte `protobuf:"bytes,3,opt,name=client_ip,json=clientIp,proto3" json:"client_ip,omitempty"` - StaticHosts []*Config_HostMapping `protobuf:"bytes,4,rep,name=static_hosts,json=staticHosts,proto3" json:"static_hosts,omitempty"` - // Tag is the inbound tag of DNS client. - Tag string `protobuf:"bytes,6,opt,name=tag,proto3" json:"tag,omitempty"` - // DisableCache disables DNS cache - DisableCache bool `protobuf:"varint,8,opt,name=disableCache,proto3" json:"disableCache,omitempty"` - QueryStrategy QueryStrategy `protobuf:"varint,9,opt,name=query_strategy,json=queryStrategy,proto3,enum=xray.app.dns.QueryStrategy" json:"query_strategy,omitempty"` - DisableFallback bool `protobuf:"varint,10,opt,name=disableFallback,proto3" json:"disableFallback,omitempty"` - DisableFallbackIfMatch bool `protobuf:"varint,11,opt,name=disableFallbackIfMatch,proto3" json:"disableFallbackIfMatch,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_dns_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_app_dns_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_app_dns_config_proto_rawDescGZIP(), []int{1} -} - -// Deprecated: Marked as deprecated in app/dns/config.proto. -func (x *Config) GetNameServers() []*net.Endpoint { - if x != nil { - return x.NameServers - } - return nil -} - -func (x *Config) GetNameServer() []*NameServer { - if x != nil { - return x.NameServer - } - return nil -} - -// Deprecated: Marked as deprecated in app/dns/config.proto. -func (x *Config) GetHosts() map[string]*net.IPOrDomain { - if x != nil { - return x.Hosts - } - return nil -} - -func (x *Config) GetClientIp() []byte { - if x != nil { - return x.ClientIp - } - return nil -} - -func (x *Config) GetStaticHosts() []*Config_HostMapping { - if x != nil { - return x.StaticHosts - } - return nil -} - -func (x *Config) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *Config) GetDisableCache() bool { - if x != nil { - return x.DisableCache - } - return false -} - -func (x *Config) GetQueryStrategy() QueryStrategy { - if x != nil { - return x.QueryStrategy - } - return QueryStrategy_USE_IP -} - -func (x *Config) GetDisableFallback() bool { - if x != nil { - return x.DisableFallback - } - return false -} - -func (x *Config) GetDisableFallbackIfMatch() bool { - if x != nil { - return x.DisableFallbackIfMatch - } - return false -} - -type NameServer_PriorityDomain struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type DomainMatchingType `protobuf:"varint,1,opt,name=type,proto3,enum=xray.app.dns.DomainMatchingType" json:"type,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` -} - -func (x *NameServer_PriorityDomain) Reset() { - *x = NameServer_PriorityDomain{} - if protoimpl.UnsafeEnabled { - mi := &file_app_dns_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NameServer_PriorityDomain) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NameServer_PriorityDomain) ProtoMessage() {} - -func (x *NameServer_PriorityDomain) ProtoReflect() protoreflect.Message { - mi := &file_app_dns_config_proto_msgTypes[2] - 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 NameServer_PriorityDomain.ProtoReflect.Descriptor instead. -func (*NameServer_PriorityDomain) Descriptor() ([]byte, []int) { - return file_app_dns_config_proto_rawDescGZIP(), []int{0, 0} -} - -func (x *NameServer_PriorityDomain) GetType() DomainMatchingType { - if x != nil { - return x.Type - } - return DomainMatchingType_Full -} - -func (x *NameServer_PriorityDomain) GetDomain() string { - if x != nil { - return x.Domain - } - return "" -} - -type NameServer_OriginalRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Rule string `protobuf:"bytes,1,opt,name=rule,proto3" json:"rule,omitempty"` - Size uint32 `protobuf:"varint,2,opt,name=size,proto3" json:"size,omitempty"` -} - -func (x *NameServer_OriginalRule) Reset() { - *x = NameServer_OriginalRule{} - if protoimpl.UnsafeEnabled { - mi := &file_app_dns_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NameServer_OriginalRule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NameServer_OriginalRule) ProtoMessage() {} - -func (x *NameServer_OriginalRule) ProtoReflect() protoreflect.Message { - mi := &file_app_dns_config_proto_msgTypes[3] - 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 NameServer_OriginalRule.ProtoReflect.Descriptor instead. -func (*NameServer_OriginalRule) Descriptor() ([]byte, []int) { - return file_app_dns_config_proto_rawDescGZIP(), []int{0, 1} -} - -func (x *NameServer_OriginalRule) GetRule() string { - if x != nil { - return x.Rule - } - return "" -} - -func (x *NameServer_OriginalRule) GetSize() uint32 { - if x != nil { - return x.Size - } - return 0 -} - -type Config_HostMapping struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type DomainMatchingType `protobuf:"varint,1,opt,name=type,proto3,enum=xray.app.dns.DomainMatchingType" json:"type,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` - Ip [][]byte `protobuf:"bytes,3,rep,name=ip,proto3" json:"ip,omitempty"` - // ProxiedDomain indicates the mapped domain has the same IP address on this - // domain. Xray will use this domain for IP queries. - ProxiedDomain string `protobuf:"bytes,4,opt,name=proxied_domain,json=proxiedDomain,proto3" json:"proxied_domain,omitempty"` -} - -func (x *Config_HostMapping) Reset() { - *x = Config_HostMapping{} - if protoimpl.UnsafeEnabled { - mi := &file_app_dns_config_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Config_HostMapping) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Config_HostMapping) ProtoMessage() {} - -func (x *Config_HostMapping) ProtoReflect() protoreflect.Message { - mi := &file_app_dns_config_proto_msgTypes[5] - 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_HostMapping.ProtoReflect.Descriptor instead. -func (*Config_HostMapping) Descriptor() ([]byte, []int) { - return file_app_dns_config_proto_rawDescGZIP(), []int{1, 1} -} - -func (x *Config_HostMapping) GetType() DomainMatchingType { - if x != nil { - return x.Type - } - return DomainMatchingType_Full -} - -func (x *Config_HostMapping) GetDomain() string { - if x != nil { - return x.Domain - } - return "" -} - -func (x *Config_HostMapping) GetIp() [][]byte { - if x != nil { - return x.Ip - } - return nil -} - -func (x *Config_HostMapping) GetProxiedDomain() string { - if x != nil { - return x.ProxiedDomain - } - return "" -} - -var File_app_dns_config_proto protoreflect.FileDescriptor - -var file_app_dns_config_proto_rawDesc = []byte{ - 0x0a, 0x14, 0x61, 0x70, 0x70, 0x2f, 0x64, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x64, 0x6e, 0x73, 0x1a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, - 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1c, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x64, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x17, 0x61, 0x70, - 0x70, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb2, 0x04, 0x0a, 0x0a, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x12, 0x33, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x63, 0x6c, - 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x6b, 0x69, 0x70, 0x46, 0x61, - 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x6b, - 0x69, 0x70, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x56, 0x0a, 0x12, 0x70, 0x72, - 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x2e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, - 0x11, 0x70, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x69, 0x7a, 0x65, 0x64, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x12, 0x2c, 0x0a, 0x05, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x52, 0x05, 0x67, 0x65, 0x6f, 0x69, 0x70, - 0x12, 0x4c, 0x0a, 0x0e, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x72, 0x75, 0x6c, - 0x65, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x2e, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x52, - 0x0d, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x75, 0x6c, 0x65, 0x73, 0x12, 0x42, - 0x0a, 0x0e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x1a, 0x5e, 0x0a, 0x0e, 0x50, 0x72, 0x69, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, - 0x73, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x1a, 0x36, 0x0a, 0x0c, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x52, 0x75, - 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0xef, 0x05, 0x0a, 0x06, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x4e, 0x61, 0x6d, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x0b, 0x6e, 0x61, 0x6d, 0x65, 0x5f, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x4e, 0x61, 0x6d, 0x65, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x52, 0x0a, 0x6e, 0x61, 0x6d, 0x65, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x12, 0x39, 0x0a, 0x05, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, - 0x32, 0x1f, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, - 0x79, 0x42, 0x02, 0x18, 0x01, 0x52, 0x05, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x1b, 0x0a, 0x09, - 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x69, 0x70, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0c, 0x52, - 0x08, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x49, 0x70, 0x12, 0x43, 0x0a, 0x0c, 0x73, 0x74, 0x61, - 0x74, 0x69, 0x63, 0x5f, 0x68, 0x6f, 0x73, 0x74, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x52, 0x0b, 0x73, 0x74, 0x61, 0x74, 0x69, 0x63, 0x48, 0x6f, 0x73, 0x74, 0x73, 0x12, 0x10, - 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, - 0x12, 0x22, 0x0a, 0x0c, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x61, 0x63, 0x68, 0x65, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x43, - 0x61, 0x63, 0x68, 0x65, 0x12, 0x42, 0x0a, 0x0e, 0x71, 0x75, 0x65, 0x72, 0x79, 0x5f, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x09, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1b, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x51, 0x75, 0x65, 0x72, - 0x79, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0d, 0x71, 0x75, 0x65, 0x72, 0x79, - 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x64, 0x69, 0x73, 0x61, - 0x62, 0x6c, 0x65, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0f, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, - 0x63, 0x6b, 0x12, 0x36, 0x0a, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x49, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x0b, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x16, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x46, 0x61, 0x6c, 0x6c, 0x62, - 0x61, 0x63, 0x6b, 0x49, 0x66, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x1a, 0x55, 0x0a, 0x0a, 0x48, 0x6f, - 0x73, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x31, 0x0a, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4f, 0x72, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x1a, 0x92, 0x01, 0x0a, 0x0b, 0x48, 0x6f, 0x73, 0x74, 0x4d, 0x61, 0x70, 0x70, 0x69, 0x6e, - 0x67, 0x12, 0x34, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x79, 0x70, - 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, - 0x0e, 0x0a, 0x02, 0x69, 0x70, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x70, 0x12, - 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x64, 0x5f, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x64, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4a, 0x04, 0x08, 0x07, 0x10, 0x08, 0x2a, 0x45, 0x0a, 0x12, - 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x69, 0x6e, 0x67, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x75, 0x6c, 0x6c, 0x10, 0x00, 0x12, 0x0d, 0x0a, 0x09, - 0x53, 0x75, 0x62, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x4b, - 0x65, 0x79, 0x77, 0x6f, 0x72, 0x64, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65, - 0x78, 0x10, 0x03, 0x2a, 0x35, 0x0a, 0x0d, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x79, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, 0x10, 0x00, - 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, 0x34, 0x10, 0x01, 0x12, 0x0b, 0x0a, - 0x07, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, 0x36, 0x10, 0x02, 0x42, 0x46, 0x0a, 0x10, 0x63, 0x6f, - 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x50, 0x01, - 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, - 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, - 0x64, 0x6e, 0x73, 0xaa, 0x02, 0x0c, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x44, - 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_dns_config_proto_rawDescOnce sync.Once - file_app_dns_config_proto_rawDescData = file_app_dns_config_proto_rawDesc -) - -func file_app_dns_config_proto_rawDescGZIP() []byte { - file_app_dns_config_proto_rawDescOnce.Do(func() { - file_app_dns_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_dns_config_proto_rawDescData) - }) - return file_app_dns_config_proto_rawDescData -} - -var file_app_dns_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_app_dns_config_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_app_dns_config_proto_goTypes = []interface{}{ - (DomainMatchingType)(0), // 0: xray.app.dns.DomainMatchingType - (QueryStrategy)(0), // 1: xray.app.dns.QueryStrategy - (*NameServer)(nil), // 2: xray.app.dns.NameServer - (*Config)(nil), // 3: xray.app.dns.Config - (*NameServer_PriorityDomain)(nil), // 4: xray.app.dns.NameServer.PriorityDomain - (*NameServer_OriginalRule)(nil), // 5: xray.app.dns.NameServer.OriginalRule - nil, // 6: xray.app.dns.Config.HostsEntry - (*Config_HostMapping)(nil), // 7: xray.app.dns.Config.HostMapping - (*net.Endpoint)(nil), // 8: xray.common.net.Endpoint - (*router.GeoIP)(nil), // 9: xray.app.router.GeoIP - (*net.IPOrDomain)(nil), // 10: xray.common.net.IPOrDomain -} -var file_app_dns_config_proto_depIdxs = []int32{ - 8, // 0: xray.app.dns.NameServer.address:type_name -> xray.common.net.Endpoint - 4, // 1: xray.app.dns.NameServer.prioritized_domain:type_name -> xray.app.dns.NameServer.PriorityDomain - 9, // 2: xray.app.dns.NameServer.geoip:type_name -> xray.app.router.GeoIP - 5, // 3: xray.app.dns.NameServer.original_rules:type_name -> xray.app.dns.NameServer.OriginalRule - 1, // 4: xray.app.dns.NameServer.query_strategy:type_name -> xray.app.dns.QueryStrategy - 8, // 5: xray.app.dns.Config.NameServers:type_name -> xray.common.net.Endpoint - 2, // 6: xray.app.dns.Config.name_server:type_name -> xray.app.dns.NameServer - 6, // 7: xray.app.dns.Config.Hosts:type_name -> xray.app.dns.Config.HostsEntry - 7, // 8: xray.app.dns.Config.static_hosts:type_name -> xray.app.dns.Config.HostMapping - 1, // 9: xray.app.dns.Config.query_strategy:type_name -> xray.app.dns.QueryStrategy - 0, // 10: xray.app.dns.NameServer.PriorityDomain.type:type_name -> xray.app.dns.DomainMatchingType - 10, // 11: xray.app.dns.Config.HostsEntry.value:type_name -> xray.common.net.IPOrDomain - 0, // 12: xray.app.dns.Config.HostMapping.type:type_name -> xray.app.dns.DomainMatchingType - 13, // [13:13] is the sub-list for method output_type - 13, // [13:13] is the sub-list for method input_type - 13, // [13:13] is the sub-list for extension type_name - 13, // [13:13] is the sub-list for extension extendee - 0, // [0:13] is the sub-list for field type_name -} - -func init() { file_app_dns_config_proto_init() } -func file_app_dns_config_proto_init() { - if File_app_dns_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_dns_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NameServer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_dns_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 - } - } - file_app_dns_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NameServer_PriorityDomain); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_dns_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NameServer_OriginalRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_dns_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Config_HostMapping); 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_app_dns_config_proto_rawDesc, - NumEnums: 2, - NumMessages: 6, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_dns_config_proto_goTypes, - DependencyIndexes: file_app_dns_config_proto_depIdxs, - EnumInfos: file_app_dns_config_proto_enumTypes, - MessageInfos: file_app_dns_config_proto_msgTypes, - }.Build() - File_app_dns_config_proto = out.File - file_app_dns_config_proto_rawDesc = nil - file_app_dns_config_proto_goTypes = nil - file_app_dns_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/dns/fakedns/fakedns.pb.go b/xray_api/proto/app/dns/fakedns/fakedns.pb.go deleted file mode 100644 index 7e3615f..0000000 --- a/xray_api/proto/app/dns/fakedns/fakedns.pb.go +++ /dev/null @@ -1,224 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/dns/fakedns/fakedns.proto - -package fakedns - -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 FakeDnsPool struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - IpPool string `protobuf:"bytes,1,opt,name=ip_pool,json=ipPool,proto3" json:"ip_pool,omitempty"` //CIDR of IP pool used as fake DNS IP - LruSize int64 `protobuf:"varint,2,opt,name=lruSize,proto3" json:"lruSize,omitempty"` //Size of Pool for remembering relationship between domain name and IP address -} - -func (x *FakeDnsPool) Reset() { - *x = FakeDnsPool{} - if protoimpl.UnsafeEnabled { - mi := &file_app_dns_fakedns_fakedns_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FakeDnsPool) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FakeDnsPool) ProtoMessage() {} - -func (x *FakeDnsPool) ProtoReflect() protoreflect.Message { - mi := &file_app_dns_fakedns_fakedns_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 FakeDnsPool.ProtoReflect.Descriptor instead. -func (*FakeDnsPool) Descriptor() ([]byte, []int) { - return file_app_dns_fakedns_fakedns_proto_rawDescGZIP(), []int{0} -} - -func (x *FakeDnsPool) GetIpPool() string { - if x != nil { - return x.IpPool - } - return "" -} - -func (x *FakeDnsPool) GetLruSize() int64 { - if x != nil { - return x.LruSize - } - return 0 -} - -type FakeDnsPoolMulti struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Pools []*FakeDnsPool `protobuf:"bytes,1,rep,name=pools,proto3" json:"pools,omitempty"` -} - -func (x *FakeDnsPoolMulti) Reset() { - *x = FakeDnsPoolMulti{} - if protoimpl.UnsafeEnabled { - mi := &file_app_dns_fakedns_fakedns_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *FakeDnsPoolMulti) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*FakeDnsPoolMulti) ProtoMessage() {} - -func (x *FakeDnsPoolMulti) ProtoReflect() protoreflect.Message { - mi := &file_app_dns_fakedns_fakedns_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 FakeDnsPoolMulti.ProtoReflect.Descriptor instead. -func (*FakeDnsPoolMulti) Descriptor() ([]byte, []int) { - return file_app_dns_fakedns_fakedns_proto_rawDescGZIP(), []int{1} -} - -func (x *FakeDnsPoolMulti) GetPools() []*FakeDnsPool { - if x != nil { - return x.Pools - } - return nil -} - -var File_app_dns_fakedns_fakedns_proto protoreflect.FileDescriptor - -var file_app_dns_fakedns_fakedns_proto_rawDesc = []byte{ - 0x0a, 0x1d, 0x61, 0x70, 0x70, 0x2f, 0x64, 0x6e, 0x73, 0x2f, 0x66, 0x61, 0x6b, 0x65, 0x64, 0x6e, - 0x73, 0x2f, 0x66, 0x61, 0x6b, 0x65, 0x64, 0x6e, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x14, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x66, 0x61, - 0x6b, 0x65, 0x64, 0x6e, 0x73, 0x22, 0x40, 0x0a, 0x0b, 0x46, 0x61, 0x6b, 0x65, 0x44, 0x6e, 0x73, - 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x17, 0x0a, 0x07, 0x69, 0x70, 0x5f, 0x70, 0x6f, 0x6f, 0x6c, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x69, 0x70, 0x50, 0x6f, 0x6f, 0x6c, 0x12, 0x18, 0x0a, - 0x07, 0x6c, 0x72, 0x75, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, - 0x6c, 0x72, 0x75, 0x53, 0x69, 0x7a, 0x65, 0x22, 0x4b, 0x0a, 0x10, 0x46, 0x61, 0x6b, 0x65, 0x44, - 0x6e, 0x73, 0x50, 0x6f, 0x6f, 0x6c, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x12, 0x37, 0x0a, 0x05, 0x70, - 0x6f, 0x6f, 0x6c, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x64, 0x6e, - 0x73, 0x2e, 0x46, 0x61, 0x6b, 0x65, 0x44, 0x6e, 0x73, 0x50, 0x6f, 0x6f, 0x6c, 0x52, 0x05, 0x70, - 0x6f, 0x6f, 0x6c, 0x73, 0x42, 0x5e, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x64, 0x6e, 0x73, 0x2e, 0x66, 0x61, 0x6b, 0x65, 0x64, 0x6e, 0x73, - 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, - 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, - 0x70, 0x2f, 0x64, 0x6e, 0x73, 0x2f, 0x66, 0x61, 0x6b, 0x65, 0x64, 0x6e, 0x73, 0xaa, 0x02, 0x14, - 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x44, 0x6e, 0x73, 0x2e, 0x46, 0x61, 0x6b, - 0x65, 0x64, 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_dns_fakedns_fakedns_proto_rawDescOnce sync.Once - file_app_dns_fakedns_fakedns_proto_rawDescData = file_app_dns_fakedns_fakedns_proto_rawDesc -) - -func file_app_dns_fakedns_fakedns_proto_rawDescGZIP() []byte { - file_app_dns_fakedns_fakedns_proto_rawDescOnce.Do(func() { - file_app_dns_fakedns_fakedns_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_dns_fakedns_fakedns_proto_rawDescData) - }) - return file_app_dns_fakedns_fakedns_proto_rawDescData -} - -var file_app_dns_fakedns_fakedns_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_app_dns_fakedns_fakedns_proto_goTypes = []interface{}{ - (*FakeDnsPool)(nil), // 0: xray.app.dns.fakedns.FakeDnsPool - (*FakeDnsPoolMulti)(nil), // 1: xray.app.dns.fakedns.FakeDnsPoolMulti -} -var file_app_dns_fakedns_fakedns_proto_depIdxs = []int32{ - 0, // 0: xray.app.dns.fakedns.FakeDnsPoolMulti.pools:type_name -> xray.app.dns.fakedns.FakeDnsPool - 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_app_dns_fakedns_fakedns_proto_init() } -func file_app_dns_fakedns_fakedns_proto_init() { - if File_app_dns_fakedns_fakedns_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_dns_fakedns_fakedns_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FakeDnsPool); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_dns_fakedns_fakedns_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*FakeDnsPoolMulti); 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_app_dns_fakedns_fakedns_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_dns_fakedns_fakedns_proto_goTypes, - DependencyIndexes: file_app_dns_fakedns_fakedns_proto_depIdxs, - MessageInfos: file_app_dns_fakedns_fakedns_proto_msgTypes, - }.Build() - File_app_dns_fakedns_fakedns_proto = out.File - file_app_dns_fakedns_fakedns_proto_rawDesc = nil - file_app_dns_fakedns_fakedns_proto_goTypes = nil - file_app_dns_fakedns_fakedns_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/log/command/config.pb.go b/xray_api/proto/app/log/command/config.pb.go deleted file mode 100644 index c39f466..0000000 --- a/xray_api/proto/app/log/command/config.pb.go +++ /dev/null @@ -1,253 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/log/command/config.proto - -package command - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_log_command_config_proto_msgTypes[0] - 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_app_log_command_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_app_log_command_config_proto_rawDescGZIP(), []int{0} -} - -type RestartLoggerRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *RestartLoggerRequest) Reset() { - *x = RestartLoggerRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_log_command_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RestartLoggerRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RestartLoggerRequest) ProtoMessage() {} - -func (x *RestartLoggerRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_log_command_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 RestartLoggerRequest.ProtoReflect.Descriptor instead. -func (*RestartLoggerRequest) Descriptor() ([]byte, []int) { - return file_app_log_command_config_proto_rawDescGZIP(), []int{1} -} - -type RestartLoggerResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *RestartLoggerResponse) Reset() { - *x = RestartLoggerResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_log_command_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RestartLoggerResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RestartLoggerResponse) ProtoMessage() {} - -func (x *RestartLoggerResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_log_command_config_proto_msgTypes[2] - 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 RestartLoggerResponse.ProtoReflect.Descriptor instead. -func (*RestartLoggerResponse) Descriptor() ([]byte, []int) { - return file_app_log_command_config_proto_rawDescGZIP(), []int{2} -} - -var File_app_log_command_config_proto protoreflect.FileDescriptor - -var file_app_log_command_config_proto_rawDesc = []byte{ - 0x0a, 0x1c, 0x61, 0x70, 0x70, 0x2f, 0x6c, 0x6f, 0x67, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x08, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x16, - 0x0a, 0x14, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, - 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x32, - 0x7b, 0x0a, 0x0d, 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x12, 0x6a, 0x0a, 0x0d, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f, 0x67, 0x67, 0x65, - 0x72, 0x12, 0x2a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6c, 0x6f, 0x67, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, - 0x4c, 0x6f, 0x67, 0x67, 0x65, 0x72, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x73, 0x74, 0x61, 0x72, 0x74, 0x4c, 0x6f, 0x67, 0x67, - 0x65, 0x72, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x5e, 0x0a, 0x18, - 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6c, 0x6f, 0x67, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, - 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x6c, 0x6f, 0x67, 0x2f, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0xaa, 0x02, 0x14, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, - 0x2e, 0x4c, 0x6f, 0x67, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_log_command_config_proto_rawDescOnce sync.Once - file_app_log_command_config_proto_rawDescData = file_app_log_command_config_proto_rawDesc -) - -func file_app_log_command_config_proto_rawDescGZIP() []byte { - file_app_log_command_config_proto_rawDescOnce.Do(func() { - file_app_log_command_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_log_command_config_proto_rawDescData) - }) - return file_app_log_command_config_proto_rawDescData -} - -var file_app_log_command_config_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_app_log_command_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.app.log.command.Config - (*RestartLoggerRequest)(nil), // 1: xray.app.log.command.RestartLoggerRequest - (*RestartLoggerResponse)(nil), // 2: xray.app.log.command.RestartLoggerResponse -} -var file_app_log_command_config_proto_depIdxs = []int32{ - 1, // 0: xray.app.log.command.LoggerService.RestartLogger:input_type -> xray.app.log.command.RestartLoggerRequest - 2, // 1: xray.app.log.command.LoggerService.RestartLogger:output_type -> xray.app.log.command.RestartLoggerResponse - 1, // [1:2] is the sub-list for method output_type - 0, // [0:1] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_app_log_command_config_proto_init() } -func file_app_log_command_config_proto_init() { - if File_app_log_command_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_log_command_config_proto_msgTypes[0].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 - } - } - file_app_log_command_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestartLoggerRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_log_command_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RestartLoggerResponse); 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_app_log_command_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 3, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_app_log_command_config_proto_goTypes, - DependencyIndexes: file_app_log_command_config_proto_depIdxs, - MessageInfos: file_app_log_command_config_proto_msgTypes, - }.Build() - File_app_log_command_config_proto = out.File - file_app_log_command_config_proto_rawDesc = nil - file_app_log_command_config_proto_goTypes = nil - file_app_log_command_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/log/command/config_grpc.pb.go b/xray_api/proto/app/log/command/config_grpc.pb.go deleted file mode 100644 index 3ad1528..0000000 --- a/xray_api/proto/app/log/command/config_grpc.pb.go +++ /dev/null @@ -1,109 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v5.27.0 -// source: app/log/command/config.proto - -package command - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - LoggerService_RestartLogger_FullMethodName = "/xray.app.log.command.LoggerService/RestartLogger" -) - -// LoggerServiceClient is the client API for LoggerService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type LoggerServiceClient interface { - RestartLogger(ctx context.Context, in *RestartLoggerRequest, opts ...grpc.CallOption) (*RestartLoggerResponse, error) -} - -type loggerServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewLoggerServiceClient(cc grpc.ClientConnInterface) LoggerServiceClient { - return &loggerServiceClient{cc} -} - -func (c *loggerServiceClient) RestartLogger(ctx context.Context, in *RestartLoggerRequest, opts ...grpc.CallOption) (*RestartLoggerResponse, error) { - out := new(RestartLoggerResponse) - err := c.cc.Invoke(ctx, LoggerService_RestartLogger_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// LoggerServiceServer is the server API for LoggerService service. -// All implementations must embed UnimplementedLoggerServiceServer -// for forward compatibility -type LoggerServiceServer interface { - RestartLogger(context.Context, *RestartLoggerRequest) (*RestartLoggerResponse, error) - mustEmbedUnimplementedLoggerServiceServer() -} - -// UnimplementedLoggerServiceServer must be embedded to have forward compatible implementations. -type UnimplementedLoggerServiceServer struct { -} - -func (UnimplementedLoggerServiceServer) RestartLogger(context.Context, *RestartLoggerRequest) (*RestartLoggerResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RestartLogger not implemented") -} -func (UnimplementedLoggerServiceServer) mustEmbedUnimplementedLoggerServiceServer() {} - -// UnsafeLoggerServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to LoggerServiceServer will -// result in compilation errors. -type UnsafeLoggerServiceServer interface { - mustEmbedUnimplementedLoggerServiceServer() -} - -func RegisterLoggerServiceServer(s grpc.ServiceRegistrar, srv LoggerServiceServer) { - s.RegisterService(&LoggerService_ServiceDesc, srv) -} - -func _LoggerService_RestartLogger_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RestartLoggerRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(LoggerServiceServer).RestartLogger(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: LoggerService_RestartLogger_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(LoggerServiceServer).RestartLogger(ctx, req.(*RestartLoggerRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// LoggerService_ServiceDesc is the grpc.ServiceDesc for LoggerService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var LoggerService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "xray.app.log.command.LoggerService", - HandlerType: (*LoggerServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "RestartLogger", - Handler: _LoggerService_RestartLogger_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "app/log/command/config.proto", -} diff --git a/xray_api/proto/app/log/config.pb.go b/xray_api/proto/app/log/config.pb.go deleted file mode 100644 index 7c7e743..0000000 --- a/xray_api/proto/app/log/config.pb.go +++ /dev/null @@ -1,268 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/log/config.proto - -package log - -import ( - log "marzban-node/xray_api/proto/common/log" - 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 LogType int32 - -const ( - LogType_None LogType = 0 - LogType_Console LogType = 1 - LogType_File LogType = 2 - LogType_Event LogType = 3 -) - -// Enum value maps for LogType. -var ( - LogType_name = map[int32]string{ - 0: "None", - 1: "Console", - 2: "File", - 3: "Event", - } - LogType_value = map[string]int32{ - "None": 0, - "Console": 1, - "File": 2, - "Event": 3, - } -) - -func (x LogType) Enum() *LogType { - p := new(LogType) - *p = x - return p -} - -func (x LogType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (LogType) Descriptor() protoreflect.EnumDescriptor { - return file_app_log_config_proto_enumTypes[0].Descriptor() -} - -func (LogType) Type() protoreflect.EnumType { - return &file_app_log_config_proto_enumTypes[0] -} - -func (x LogType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use LogType.Descriptor instead. -func (LogType) EnumDescriptor() ([]byte, []int) { - return file_app_log_config_proto_rawDescGZIP(), []int{0} -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - ErrorLogType LogType `protobuf:"varint,1,opt,name=error_log_type,json=errorLogType,proto3,enum=xray.app.log.LogType" json:"error_log_type,omitempty"` - ErrorLogLevel log.Severity `protobuf:"varint,2,opt,name=error_log_level,json=errorLogLevel,proto3,enum=xray.common.log.Severity" json:"error_log_level,omitempty"` - ErrorLogPath string `protobuf:"bytes,3,opt,name=error_log_path,json=errorLogPath,proto3" json:"error_log_path,omitempty"` - AccessLogType LogType `protobuf:"varint,4,opt,name=access_log_type,json=accessLogType,proto3,enum=xray.app.log.LogType" json:"access_log_type,omitempty"` - AccessLogPath string `protobuf:"bytes,5,opt,name=access_log_path,json=accessLogPath,proto3" json:"access_log_path,omitempty"` - EnableDnsLog bool `protobuf:"varint,6,opt,name=enable_dns_log,json=enableDnsLog,proto3" json:"enable_dns_log,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_log_config_proto_msgTypes[0] - 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_app_log_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_app_log_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetErrorLogType() LogType { - if x != nil { - return x.ErrorLogType - } - return LogType_None -} - -func (x *Config) GetErrorLogLevel() log.Severity { - if x != nil { - return x.ErrorLogLevel - } - return log.Severity(0) -} - -func (x *Config) GetErrorLogPath() string { - if x != nil { - return x.ErrorLogPath - } - return "" -} - -func (x *Config) GetAccessLogType() LogType { - if x != nil { - return x.AccessLogType - } - return LogType_None -} - -func (x *Config) GetAccessLogPath() string { - if x != nil { - return x.AccessLogPath - } - return "" -} - -func (x *Config) GetEnableDnsLog() bool { - if x != nil { - return x.EnableDnsLog - } - return false -} - -var File_app_log_config_proto protoreflect.FileDescriptor - -var file_app_log_config_proto_rawDesc = []byte{ - 0x0a, 0x14, 0x61, 0x70, 0x70, 0x2f, 0x6c, 0x6f, 0x67, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0c, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x6c, 0x6f, 0x67, 0x1a, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6c, 0x6f, 0x67, - 0x2f, 0x6c, 0x6f, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xbb, 0x02, 0x0a, 0x06, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3b, 0x0a, 0x0e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6c, - 0x6f, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x4c, 0x6f, 0x67, - 0x54, 0x79, 0x70, 0x65, 0x52, 0x0c, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4c, 0x6f, 0x67, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x41, 0x0a, 0x0f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6c, 0x6f, 0x67, 0x2e, 0x53, 0x65, - 0x76, 0x65, 0x72, 0x69, 0x74, 0x79, 0x52, 0x0d, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x4c, 0x6f, 0x67, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x6c, - 0x6f, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x65, - 0x72, 0x72, 0x6f, 0x72, 0x4c, 0x6f, 0x67, 0x50, 0x61, 0x74, 0x68, 0x12, 0x3d, 0x0a, 0x0f, 0x61, - 0x63, 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x0e, 0x32, 0x15, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x6c, 0x6f, 0x67, 0x2e, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x52, 0x0d, 0x61, 0x63, 0x63, - 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0f, 0x61, 0x63, - 0x63, 0x65, 0x73, 0x73, 0x5f, 0x6c, 0x6f, 0x67, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0d, 0x61, 0x63, 0x63, 0x65, 0x73, 0x73, 0x4c, 0x6f, 0x67, 0x50, 0x61, - 0x74, 0x68, 0x12, 0x24, 0x0a, 0x0e, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x64, 0x6e, 0x73, - 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x44, 0x6e, 0x73, 0x4c, 0x6f, 0x67, 0x2a, 0x35, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x6f, 0x6e, 0x65, 0x10, 0x00, 0x12, 0x0b, 0x0a, - 0x07, 0x43, 0x6f, 0x6e, 0x73, 0x6f, 0x6c, 0x65, 0x10, 0x01, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x69, - 0x6c, 0x65, 0x10, 0x02, 0x12, 0x09, 0x0a, 0x05, 0x45, 0x76, 0x65, 0x6e, 0x74, 0x10, 0x03, 0x42, - 0x46, 0x0a, 0x10, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x6c, 0x6f, 0x67, 0x50, 0x01, 0x5a, 0x21, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, - 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x6c, 0x6f, 0x67, 0xaa, 0x02, 0x0c, 0x58, 0x72, 0x61, 0x79, 0x2e, - 0x41, 0x70, 0x70, 0x2e, 0x4c, 0x6f, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_log_config_proto_rawDescOnce sync.Once - file_app_log_config_proto_rawDescData = file_app_log_config_proto_rawDesc -) - -func file_app_log_config_proto_rawDescGZIP() []byte { - file_app_log_config_proto_rawDescOnce.Do(func() { - file_app_log_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_log_config_proto_rawDescData) - }) - return file_app_log_config_proto_rawDescData -} - -var file_app_log_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_app_log_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_app_log_config_proto_goTypes = []interface{}{ - (LogType)(0), // 0: xray.app.log.LogType - (*Config)(nil), // 1: xray.app.log.Config - (log.Severity)(0), // 2: xray.common.log.Severity -} -var file_app_log_config_proto_depIdxs = []int32{ - 0, // 0: xray.app.log.Config.error_log_type:type_name -> xray.app.log.LogType - 2, // 1: xray.app.log.Config.error_log_level:type_name -> xray.common.log.Severity - 0, // 2: xray.app.log.Config.access_log_type:type_name -> xray.app.log.LogType - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_app_log_config_proto_init() } -func file_app_log_config_proto_init() { - if File_app_log_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_log_config_proto_msgTypes[0].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_app_log_config_proto_rawDesc, - NumEnums: 1, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_log_config_proto_goTypes, - DependencyIndexes: file_app_log_config_proto_depIdxs, - EnumInfos: file_app_log_config_proto_enumTypes, - MessageInfos: file_app_log_config_proto_msgTypes, - }.Build() - File_app_log_config_proto = out.File - file_app_log_config_proto_rawDesc = nil - file_app_log_config_proto_goTypes = nil - file_app_log_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/metrics/config.pb.go b/xray_api/proto/app/metrics/config.pb.go deleted file mode 100644 index fd0e6b0..0000000 --- a/xray_api/proto/app/metrics/config.pb.go +++ /dev/null @@ -1,149 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/metrics/config.proto - -package metrics - -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) -) - -// Config is the settings for metrics. -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Tag of the outbound handler that handles metrics http connections. - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_metrics_config_proto_msgTypes[0] - 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_app_metrics_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_app_metrics_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -var File_app_metrics_config_proto protoreflect.FileDescriptor - -var file_app_metrics_config_proto_rawDesc = []byte{ - 0x0a, 0x18, 0x61, 0x70, 0x70, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x22, 0x1a, 0x0a, 0x06, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x42, 0x52, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, - 0x50, 0x01, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, - 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, - 0x70, 0x2f, 0x6d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0xaa, 0x02, 0x10, 0x58, 0x72, 0x61, 0x79, - 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x4d, 0x65, 0x74, 0x72, 0x69, 0x63, 0x73, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_metrics_config_proto_rawDescOnce sync.Once - file_app_metrics_config_proto_rawDescData = file_app_metrics_config_proto_rawDesc -) - -func file_app_metrics_config_proto_rawDescGZIP() []byte { - file_app_metrics_config_proto_rawDescOnce.Do(func() { - file_app_metrics_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_metrics_config_proto_rawDescData) - }) - return file_app_metrics_config_proto_rawDescData -} - -var file_app_metrics_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_app_metrics_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.app.metrics.Config -} -var file_app_metrics_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_app_metrics_config_proto_init() } -func file_app_metrics_config_proto_init() { - if File_app_metrics_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_metrics_config_proto_msgTypes[0].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_app_metrics_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_metrics_config_proto_goTypes, - DependencyIndexes: file_app_metrics_config_proto_depIdxs, - MessageInfos: file_app_metrics_config_proto_msgTypes, - }.Build() - File_app_metrics_config_proto = out.File - file_app_metrics_config_proto_rawDesc = nil - file_app_metrics_config_proto_goTypes = nil - file_app_metrics_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/observatory/burst/config.pb.go b/xray_api/proto/app/observatory/burst/config.pb.go deleted file mode 100644 index bdbcd8c..0000000 --- a/xray_api/proto/app/observatory/burst/config.pb.go +++ /dev/null @@ -1,276 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/observatory/burst/config.proto - -package burst - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // @Document The selectors for outbound under observation - SubjectSelector []string `protobuf:"bytes,2,rep,name=subject_selector,json=subjectSelector,proto3" json:"subject_selector,omitempty"` - PingConfig *HealthPingConfig `protobuf:"bytes,3,opt,name=ping_config,json=pingConfig,proto3" json:"ping_config,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_burst_config_proto_msgTypes[0] - 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_app_observatory_burst_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_app_observatory_burst_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetSubjectSelector() []string { - if x != nil { - return x.SubjectSelector - } - return nil -} - -func (x *Config) GetPingConfig() *HealthPingConfig { - if x != nil { - return x.PingConfig - } - return nil -} - -type HealthPingConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // destination url, need 204 for success return - // default https://connectivitycheck.gstatic.com/generate_204 - Destination string `protobuf:"bytes,1,opt,name=destination,proto3" json:"destination,omitempty"` - // connectivity check url - Connectivity string `protobuf:"bytes,2,opt,name=connectivity,proto3" json:"connectivity,omitempty"` - // health check interval, int64 values of time.Duration - Interval int64 `protobuf:"varint,3,opt,name=interval,proto3" json:"interval,omitempty"` - // sampling count is the amount of recent ping results which are kept for calculation - SamplingCount int32 `protobuf:"varint,4,opt,name=samplingCount,proto3" json:"samplingCount,omitempty"` - // ping timeout, int64 values of time.Duration - Timeout int64 `protobuf:"varint,5,opt,name=timeout,proto3" json:"timeout,omitempty"` -} - -func (x *HealthPingConfig) Reset() { - *x = HealthPingConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_burst_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HealthPingConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HealthPingConfig) ProtoMessage() {} - -func (x *HealthPingConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_observatory_burst_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 HealthPingConfig.ProtoReflect.Descriptor instead. -func (*HealthPingConfig) Descriptor() ([]byte, []int) { - return file_app_observatory_burst_config_proto_rawDescGZIP(), []int{1} -} - -func (x *HealthPingConfig) GetDestination() string { - if x != nil { - return x.Destination - } - return "" -} - -func (x *HealthPingConfig) GetConnectivity() string { - if x != nil { - return x.Connectivity - } - return "" -} - -func (x *HealthPingConfig) GetInterval() int64 { - if x != nil { - return x.Interval - } - return 0 -} - -func (x *HealthPingConfig) GetSamplingCount() int32 { - if x != nil { - return x.SamplingCount - } - return 0 -} - -func (x *HealthPingConfig) GetTimeout() int64 { - if x != nil { - return x.Timeout - } - return 0 -} - -var File_app_observatory_burst_config_proto protoreflect.FileDescriptor - -var file_app_observatory_burst_config_proto_rawDesc = []byte{ - 0x0a, 0x22, 0x61, 0x70, 0x70, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, - 0x79, 0x2f, 0x62, 0x75, 0x72, 0x73, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2e, - 0x62, 0x75, 0x72, 0x73, 0x74, 0x22, 0x87, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, - 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x52, 0x0a, 0x0b, 0x70, - 0x69, 0x6e, 0x67, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x31, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x62, 0x75, 0x72, - 0x73, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x52, 0x0a, 0x70, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0xb4, 0x01, 0x0a, 0x10, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x12, 0x20, 0x0a, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x74, 0x69, - 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x22, 0x0a, 0x0c, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x63, 0x6f, - 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x76, 0x69, 0x74, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x08, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x24, 0x0a, 0x0d, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x69, - 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x73, - 0x61, 0x6d, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x18, 0x0a, 0x07, - 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x42, 0x70, 0x0a, 0x1e, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x62, 0x75, 0x72, 0x73, 0x74, 0x50, 0x01, 0x5a, 0x2f, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, - 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, - 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x62, 0x75, 0x72, 0x73, 0x74, 0xaa, 0x02, 0x1a, 0x58, 0x72, - 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x42, 0x75, 0x72, 0x73, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_observatory_burst_config_proto_rawDescOnce sync.Once - file_app_observatory_burst_config_proto_rawDescData = file_app_observatory_burst_config_proto_rawDesc -) - -func file_app_observatory_burst_config_proto_rawDescGZIP() []byte { - file_app_observatory_burst_config_proto_rawDescOnce.Do(func() { - file_app_observatory_burst_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_observatory_burst_config_proto_rawDescData) - }) - return file_app_observatory_burst_config_proto_rawDescData -} - -var file_app_observatory_burst_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_app_observatory_burst_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.core.app.observatory.burst.Config - (*HealthPingConfig)(nil), // 1: xray.core.app.observatory.burst.HealthPingConfig -} -var file_app_observatory_burst_config_proto_depIdxs = []int32{ - 1, // 0: xray.core.app.observatory.burst.Config.ping_config:type_name -> xray.core.app.observatory.burst.HealthPingConfig - 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_app_observatory_burst_config_proto_init() } -func file_app_observatory_burst_config_proto_init() { - if File_app_observatory_burst_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_observatory_burst_config_proto_msgTypes[0].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 - } - } - file_app_observatory_burst_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthPingConfig); 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_app_observatory_burst_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_observatory_burst_config_proto_goTypes, - DependencyIndexes: file_app_observatory_burst_config_proto_depIdxs, - MessageInfos: file_app_observatory_burst_config_proto_msgTypes, - }.Build() - File_app_observatory_burst_config_proto = out.File - file_app_observatory_burst_config_proto_rawDesc = nil - file_app_observatory_burst_config_proto_goTypes = nil - file_app_observatory_burst_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/observatory/command/command.pb.go b/xray_api/proto/app/observatory/command/command.pb.go deleted file mode 100644 index 581abfa..0000000 --- a/xray_api/proto/app/observatory/command/command.pb.go +++ /dev/null @@ -1,278 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/observatory/command/command.proto - -package command - -import ( - observatory "marzban-node/xray_api/proto/app/observatory" - 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 GetOutboundStatusRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *GetOutboundStatusRequest) Reset() { - *x = GetOutboundStatusRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_command_command_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetOutboundStatusRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetOutboundStatusRequest) ProtoMessage() {} - -func (x *GetOutboundStatusRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_observatory_command_command_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 GetOutboundStatusRequest.ProtoReflect.Descriptor instead. -func (*GetOutboundStatusRequest) Descriptor() ([]byte, []int) { - return file_app_observatory_command_command_proto_rawDescGZIP(), []int{0} -} - -type GetOutboundStatusResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Status *observatory.ObservationResult `protobuf:"bytes,1,opt,name=status,proto3" json:"status,omitempty"` -} - -func (x *GetOutboundStatusResponse) Reset() { - *x = GetOutboundStatusResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_command_command_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetOutboundStatusResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetOutboundStatusResponse) ProtoMessage() {} - -func (x *GetOutboundStatusResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_observatory_command_command_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 GetOutboundStatusResponse.ProtoReflect.Descriptor instead. -func (*GetOutboundStatusResponse) Descriptor() ([]byte, []int) { - return file_app_observatory_command_command_proto_rawDescGZIP(), []int{1} -} - -func (x *GetOutboundStatusResponse) GetStatus() *observatory.ObservationResult { - if x != nil { - return x.Status - } - return nil -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_command_command_proto_msgTypes[2] - 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_app_observatory_command_command_proto_msgTypes[2] - 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_app_observatory_command_command_proto_rawDescGZIP(), []int{2} -} - -var File_app_observatory_command_command_proto protoreflect.FileDescriptor - -var file_app_observatory_command_command_proto_rawDesc = []byte{ - 0x0a, 0x25, 0x61, 0x70, 0x70, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, - 0x79, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, - 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, - 0x72, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x1a, 0x1c, 0x61, 0x70, 0x70, 0x2f, - 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1a, 0x0a, 0x18, 0x47, 0x65, 0x74, 0x4f, - 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x22, 0x61, 0x0a, 0x19, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x44, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, - 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x22, 0x08, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x32, 0xa7, 0x01, 0x0a, 0x12, 0x4f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, - 0x79, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x90, 0x01, 0x0a, 0x11, 0x47, 0x65, 0x74, - 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x3b, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x74, - 0x61, 0x74, 0x75, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x3c, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6f, 0x62, 0x73, 0x65, - 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, - 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x80, 0x01, 0x0a, 0x25, - 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, - 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, - 0x72, 0x79, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0xaa, 0x02, 0x21, 0x58, 0x72, 0x61, - 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x4f, 0x62, 0x73, 0x65, 0x72, - 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_observatory_command_command_proto_rawDescOnce sync.Once - file_app_observatory_command_command_proto_rawDescData = file_app_observatory_command_command_proto_rawDesc -) - -func file_app_observatory_command_command_proto_rawDescGZIP() []byte { - file_app_observatory_command_command_proto_rawDescOnce.Do(func() { - file_app_observatory_command_command_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_observatory_command_command_proto_rawDescData) - }) - return file_app_observatory_command_command_proto_rawDescData -} - -var file_app_observatory_command_command_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_app_observatory_command_command_proto_goTypes = []interface{}{ - (*GetOutboundStatusRequest)(nil), // 0: xray.core.app.observatory.command.GetOutboundStatusRequest - (*GetOutboundStatusResponse)(nil), // 1: xray.core.app.observatory.command.GetOutboundStatusResponse - (*Config)(nil), // 2: xray.core.app.observatory.command.Config - (*observatory.ObservationResult)(nil), // 3: xray.core.app.observatory.ObservationResult -} -var file_app_observatory_command_command_proto_depIdxs = []int32{ - 3, // 0: xray.core.app.observatory.command.GetOutboundStatusResponse.status:type_name -> xray.core.app.observatory.ObservationResult - 0, // 1: xray.core.app.observatory.command.ObservatoryService.GetOutboundStatus:input_type -> xray.core.app.observatory.command.GetOutboundStatusRequest - 1, // 2: xray.core.app.observatory.command.ObservatoryService.GetOutboundStatus:output_type -> xray.core.app.observatory.command.GetOutboundStatusResponse - 2, // [2:3] is the sub-list for method output_type - 1, // [1:2] 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_app_observatory_command_command_proto_init() } -func file_app_observatory_command_command_proto_init() { - if File_app_observatory_command_command_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_observatory_command_command_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOutboundStatusRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_observatory_command_command_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetOutboundStatusResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_observatory_command_command_proto_msgTypes[2].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_app_observatory_command_command_proto_rawDesc, - NumEnums: 0, - NumMessages: 3, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_app_observatory_command_command_proto_goTypes, - DependencyIndexes: file_app_observatory_command_command_proto_depIdxs, - MessageInfos: file_app_observatory_command_command_proto_msgTypes, - }.Build() - File_app_observatory_command_command_proto = out.File - file_app_observatory_command_command_proto_rawDesc = nil - file_app_observatory_command_command_proto_goTypes = nil - file_app_observatory_command_command_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/observatory/command/command_grpc.pb.go b/xray_api/proto/app/observatory/command/command_grpc.pb.go deleted file mode 100644 index 035cee0..0000000 --- a/xray_api/proto/app/observatory/command/command_grpc.pb.go +++ /dev/null @@ -1,109 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v5.27.0 -// source: app/observatory/command/command.proto - -package command - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - ObservatoryService_GetOutboundStatus_FullMethodName = "/xray.core.app.observatory.command.ObservatoryService/GetOutboundStatus" -) - -// ObservatoryServiceClient is the client API for ObservatoryService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type ObservatoryServiceClient interface { - GetOutboundStatus(ctx context.Context, in *GetOutboundStatusRequest, opts ...grpc.CallOption) (*GetOutboundStatusResponse, error) -} - -type observatoryServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewObservatoryServiceClient(cc grpc.ClientConnInterface) ObservatoryServiceClient { - return &observatoryServiceClient{cc} -} - -func (c *observatoryServiceClient) GetOutboundStatus(ctx context.Context, in *GetOutboundStatusRequest, opts ...grpc.CallOption) (*GetOutboundStatusResponse, error) { - out := new(GetOutboundStatusResponse) - err := c.cc.Invoke(ctx, ObservatoryService_GetOutboundStatus_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// ObservatoryServiceServer is the server API for ObservatoryService service. -// All implementations must embed UnimplementedObservatoryServiceServer -// for forward compatibility -type ObservatoryServiceServer interface { - GetOutboundStatus(context.Context, *GetOutboundStatusRequest) (*GetOutboundStatusResponse, error) - mustEmbedUnimplementedObservatoryServiceServer() -} - -// UnimplementedObservatoryServiceServer must be embedded to have forward compatible implementations. -type UnimplementedObservatoryServiceServer struct { -} - -func (UnimplementedObservatoryServiceServer) GetOutboundStatus(context.Context, *GetOutboundStatusRequest) (*GetOutboundStatusResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetOutboundStatus not implemented") -} -func (UnimplementedObservatoryServiceServer) mustEmbedUnimplementedObservatoryServiceServer() {} - -// UnsafeObservatoryServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to ObservatoryServiceServer will -// result in compilation errors. -type UnsafeObservatoryServiceServer interface { - mustEmbedUnimplementedObservatoryServiceServer() -} - -func RegisterObservatoryServiceServer(s grpc.ServiceRegistrar, srv ObservatoryServiceServer) { - s.RegisterService(&ObservatoryService_ServiceDesc, srv) -} - -func _ObservatoryService_GetOutboundStatus_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetOutboundStatusRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(ObservatoryServiceServer).GetOutboundStatus(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: ObservatoryService_GetOutboundStatus_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(ObservatoryServiceServer).GetOutboundStatus(ctx, req.(*GetOutboundStatusRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// ObservatoryService_ServiceDesc is the grpc.ServiceDesc for ObservatoryService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var ObservatoryService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "xray.core.app.observatory.command.ObservatoryService", - HandlerType: (*ObservatoryServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetOutboundStatus", - Handler: _ObservatoryService_GetOutboundStatus_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "app/observatory/command/command.proto", -} diff --git a/xray_api/proto/app/observatory/config.pb.go b/xray_api/proto/app/observatory/config.pb.go deleted file mode 100644 index c1ff512..0000000 --- a/xray_api/proto/app/observatory/config.pb.go +++ /dev/null @@ -1,654 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/observatory/config.proto - -package observatory - -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 ObservationResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Status []*OutboundStatus `protobuf:"bytes,1,rep,name=status,proto3" json:"status,omitempty"` -} - -func (x *ObservationResult) Reset() { - *x = ObservationResult{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ObservationResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ObservationResult) ProtoMessage() {} - -func (x *ObservationResult) ProtoReflect() protoreflect.Message { - mi := &file_app_observatory_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 ObservationResult.ProtoReflect.Descriptor instead. -func (*ObservationResult) Descriptor() ([]byte, []int) { - return file_app_observatory_config_proto_rawDescGZIP(), []int{0} -} - -func (x *ObservationResult) GetStatus() []*OutboundStatus { - if x != nil { - return x.Status - } - return nil -} - -type HealthPingMeasurementResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - All int64 `protobuf:"varint,1,opt,name=all,proto3" json:"all,omitempty"` - Fail int64 `protobuf:"varint,2,opt,name=fail,proto3" json:"fail,omitempty"` - Deviation int64 `protobuf:"varint,3,opt,name=deviation,proto3" json:"deviation,omitempty"` - Average int64 `protobuf:"varint,4,opt,name=average,proto3" json:"average,omitempty"` - Max int64 `protobuf:"varint,5,opt,name=max,proto3" json:"max,omitempty"` - Min int64 `protobuf:"varint,6,opt,name=min,proto3" json:"min,omitempty"` -} - -func (x *HealthPingMeasurementResult) Reset() { - *x = HealthPingMeasurementResult{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HealthPingMeasurementResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HealthPingMeasurementResult) ProtoMessage() {} - -func (x *HealthPingMeasurementResult) ProtoReflect() protoreflect.Message { - mi := &file_app_observatory_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 HealthPingMeasurementResult.ProtoReflect.Descriptor instead. -func (*HealthPingMeasurementResult) Descriptor() ([]byte, []int) { - return file_app_observatory_config_proto_rawDescGZIP(), []int{1} -} - -func (x *HealthPingMeasurementResult) GetAll() int64 { - if x != nil { - return x.All - } - return 0 -} - -func (x *HealthPingMeasurementResult) GetFail() int64 { - if x != nil { - return x.Fail - } - return 0 -} - -func (x *HealthPingMeasurementResult) GetDeviation() int64 { - if x != nil { - return x.Deviation - } - return 0 -} - -func (x *HealthPingMeasurementResult) GetAverage() int64 { - if x != nil { - return x.Average - } - return 0 -} - -func (x *HealthPingMeasurementResult) GetMax() int64 { - if x != nil { - return x.Max - } - return 0 -} - -func (x *HealthPingMeasurementResult) GetMin() int64 { - if x != nil { - return x.Min - } - return 0 -} - -type OutboundStatus struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // @Document Whether this outbound is usable - // @Restriction ReadOnlyForUser - Alive bool `protobuf:"varint,1,opt,name=alive,proto3" json:"alive,omitempty"` - // @Document The time for probe request to finish. - // @Type time.ms - // @Restriction ReadOnlyForUser - Delay int64 `protobuf:"varint,2,opt,name=delay,proto3" json:"delay,omitempty"` - // @Document The last error caused this outbound failed to relay probe request - // @Restriction NotMachineReadable - LastErrorReason string `protobuf:"bytes,3,opt,name=last_error_reason,json=lastErrorReason,proto3" json:"last_error_reason,omitempty"` - // @Document The outbound tag for this Server - // @Type id.outboundTag - OutboundTag string `protobuf:"bytes,4,opt,name=outbound_tag,json=outboundTag,proto3" json:"outbound_tag,omitempty"` - // @Document The time this outbound is known to be alive - // @Type id.outboundTag - LastSeenTime int64 `protobuf:"varint,5,opt,name=last_seen_time,json=lastSeenTime,proto3" json:"last_seen_time,omitempty"` - // @Document The time this outbound is tried - // @Type id.outboundTag - LastTryTime int64 `protobuf:"varint,6,opt,name=last_try_time,json=lastTryTime,proto3" json:"last_try_time,omitempty"` - HealthPing *HealthPingMeasurementResult `protobuf:"bytes,7,opt,name=health_ping,json=healthPing,proto3" json:"health_ping,omitempty"` -} - -func (x *OutboundStatus) Reset() { - *x = OutboundStatus{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OutboundStatus) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OutboundStatus) ProtoMessage() {} - -func (x *OutboundStatus) ProtoReflect() protoreflect.Message { - mi := &file_app_observatory_config_proto_msgTypes[2] - 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 OutboundStatus.ProtoReflect.Descriptor instead. -func (*OutboundStatus) Descriptor() ([]byte, []int) { - return file_app_observatory_config_proto_rawDescGZIP(), []int{2} -} - -func (x *OutboundStatus) GetAlive() bool { - if x != nil { - return x.Alive - } - return false -} - -func (x *OutboundStatus) GetDelay() int64 { - if x != nil { - return x.Delay - } - return 0 -} - -func (x *OutboundStatus) GetLastErrorReason() string { - if x != nil { - return x.LastErrorReason - } - return "" -} - -func (x *OutboundStatus) GetOutboundTag() string { - if x != nil { - return x.OutboundTag - } - return "" -} - -func (x *OutboundStatus) GetLastSeenTime() int64 { - if x != nil { - return x.LastSeenTime - } - return 0 -} - -func (x *OutboundStatus) GetLastTryTime() int64 { - if x != nil { - return x.LastTryTime - } - return 0 -} - -func (x *OutboundStatus) GetHealthPing() *HealthPingMeasurementResult { - if x != nil { - return x.HealthPing - } - return nil -} - -type ProbeResult struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // @Document Whether this outbound is usable - // @Restriction ReadOnlyForUser - Alive bool `protobuf:"varint,1,opt,name=alive,proto3" json:"alive,omitempty"` - // @Document The time for probe request to finish. - // @Type time.ms - // @Restriction ReadOnlyForUser - Delay int64 `protobuf:"varint,2,opt,name=delay,proto3" json:"delay,omitempty"` - // @Document The error caused this outbound failed to relay probe request - // @Restriction NotMachineReadable - LastErrorReason string `protobuf:"bytes,3,opt,name=last_error_reason,json=lastErrorReason,proto3" json:"last_error_reason,omitempty"` -} - -func (x *ProbeResult) Reset() { - *x = ProbeResult{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProbeResult) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProbeResult) ProtoMessage() {} - -func (x *ProbeResult) ProtoReflect() protoreflect.Message { - mi := &file_app_observatory_config_proto_msgTypes[3] - 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 ProbeResult.ProtoReflect.Descriptor instead. -func (*ProbeResult) Descriptor() ([]byte, []int) { - return file_app_observatory_config_proto_rawDescGZIP(), []int{3} -} - -func (x *ProbeResult) GetAlive() bool { - if x != nil { - return x.Alive - } - return false -} - -func (x *ProbeResult) GetDelay() int64 { - if x != nil { - return x.Delay - } - return 0 -} - -func (x *ProbeResult) GetLastErrorReason() string { - if x != nil { - return x.LastErrorReason - } - return "" -} - -type Intensity struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // @Document The time interval for a probe request in ms. - // @Type time.ms - ProbeInterval uint32 `protobuf:"varint,1,opt,name=probe_interval,json=probeInterval,proto3" json:"probe_interval,omitempty"` -} - -func (x *Intensity) Reset() { - *x = Intensity{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_config_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Intensity) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Intensity) ProtoMessage() {} - -func (x *Intensity) ProtoReflect() protoreflect.Message { - mi := &file_app_observatory_config_proto_msgTypes[4] - 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 Intensity.ProtoReflect.Descriptor instead. -func (*Intensity) Descriptor() ([]byte, []int) { - return file_app_observatory_config_proto_rawDescGZIP(), []int{4} -} - -func (x *Intensity) GetProbeInterval() uint32 { - if x != nil { - return x.ProbeInterval - } - return 0 -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // @Document The selectors for outbound under observation - SubjectSelector []string `protobuf:"bytes,2,rep,name=subject_selector,json=subjectSelector,proto3" json:"subject_selector,omitempty"` - ProbeUrl string `protobuf:"bytes,3,opt,name=probe_url,json=probeUrl,proto3" json:"probe_url,omitempty"` - ProbeInterval int64 `protobuf:"varint,4,opt,name=probe_interval,json=probeInterval,proto3" json:"probe_interval,omitempty"` - EnableConcurrency bool `protobuf:"varint,5,opt,name=enable_concurrency,json=enableConcurrency,proto3" json:"enable_concurrency,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_observatory_config_proto_msgTypes[5] - 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_app_observatory_config_proto_msgTypes[5] - 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_app_observatory_config_proto_rawDescGZIP(), []int{5} -} - -func (x *Config) GetSubjectSelector() []string { - if x != nil { - return x.SubjectSelector - } - return nil -} - -func (x *Config) GetProbeUrl() string { - if x != nil { - return x.ProbeUrl - } - return "" -} - -func (x *Config) GetProbeInterval() int64 { - if x != nil { - return x.ProbeInterval - } - return 0 -} - -func (x *Config) GetEnableConcurrency() bool { - if x != nil { - return x.EnableConcurrency - } - return false -} - -var File_app_observatory_config_proto protoreflect.FileDescriptor - -var file_app_observatory_config_proto_rawDesc = []byte{ - 0x0a, 0x1c, 0x61, 0x70, 0x70, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, - 0x79, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6f, 0x62, - 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x56, 0x0a, 0x11, 0x4f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x12, 0x41, - 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x29, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6f, - 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, - 0x73, 0x22, 0x9f, 0x01, 0x0a, 0x1b, 0x48, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x50, 0x69, 0x6e, 0x67, - 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, - 0x74, 0x12, 0x10, 0x0a, 0x03, 0x61, 0x6c, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x61, 0x6c, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x04, 0x66, 0x61, 0x69, 0x6c, 0x12, 0x1c, 0x0a, 0x09, 0x64, 0x65, 0x76, 0x69, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x03, 0x52, 0x09, 0x64, 0x65, 0x76, 0x69, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x61, 0x76, 0x65, 0x72, 0x61, 0x67, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x6d, 0x61, 0x78, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, 0x6d, 0x61, - 0x78, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x69, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x03, - 0x6d, 0x69, 0x6e, 0x22, 0xae, 0x02, 0x0a, 0x0e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, - 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x65, 0x6c, - 0x61, 0x79, 0x12, 0x2a, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, - 0x5f, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, - 0x61, 0x73, 0x74, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x12, 0x21, - 0x0a, 0x0c, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x04, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, - 0x67, 0x12, 0x24, 0x0a, 0x0e, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x73, 0x65, 0x65, 0x6e, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0c, 0x6c, 0x61, 0x73, 0x74, 0x53, - 0x65, 0x65, 0x6e, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x22, 0x0a, 0x0d, 0x6c, 0x61, 0x73, 0x74, 0x5f, - 0x74, 0x72, 0x79, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0b, - 0x6c, 0x61, 0x73, 0x74, 0x54, 0x72, 0x79, 0x54, 0x69, 0x6d, 0x65, 0x12, 0x57, 0x0a, 0x0b, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x70, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x36, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x2e, 0x48, 0x65, 0x61, - 0x6c, 0x74, 0x68, 0x50, 0x69, 0x6e, 0x67, 0x4d, 0x65, 0x61, 0x73, 0x75, 0x72, 0x65, 0x6d, 0x65, - 0x6e, 0x74, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x52, 0x0a, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, - 0x50, 0x69, 0x6e, 0x67, 0x22, 0x65, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x62, 0x65, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x05, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x64, 0x65, 0x6c, - 0x61, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x12, - 0x2a, 0x0a, 0x11, 0x6c, 0x61, 0x73, 0x74, 0x5f, 0x65, 0x72, 0x72, 0x6f, 0x72, 0x5f, 0x72, 0x65, - 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x6c, 0x61, 0x73, 0x74, - 0x45, 0x72, 0x72, 0x6f, 0x72, 0x52, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0x32, 0x0a, 0x09, 0x49, - 0x6e, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x74, 0x79, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x62, - 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x22, - 0xa6, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x29, 0x0a, 0x10, 0x73, 0x75, - 0x62, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x18, 0x02, - 0x20, 0x03, 0x28, 0x09, 0x52, 0x0f, 0x73, 0x75, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x53, 0x65, 0x6c, - 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1b, 0x0a, 0x09, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x75, - 0x72, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x55, - 0x72, 0x6c, 0x12, 0x25, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x62, 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x62, - 0x65, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x2d, 0x0a, 0x12, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x5f, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x43, 0x6f, 0x6e, - 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x42, 0x5e, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, - 0x74, 0x6f, 0x72, 0x79, 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, - 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x6f, 0x62, 0x73, 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, - 0x79, 0xaa, 0x02, 0x14, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x4f, 0x62, 0x73, - 0x65, 0x72, 0x76, 0x61, 0x74, 0x6f, 0x72, 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_observatory_config_proto_rawDescOnce sync.Once - file_app_observatory_config_proto_rawDescData = file_app_observatory_config_proto_rawDesc -) - -func file_app_observatory_config_proto_rawDescGZIP() []byte { - file_app_observatory_config_proto_rawDescOnce.Do(func() { - file_app_observatory_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_observatory_config_proto_rawDescData) - }) - return file_app_observatory_config_proto_rawDescData -} - -var file_app_observatory_config_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_app_observatory_config_proto_goTypes = []interface{}{ - (*ObservationResult)(nil), // 0: xray.core.app.observatory.ObservationResult - (*HealthPingMeasurementResult)(nil), // 1: xray.core.app.observatory.HealthPingMeasurementResult - (*OutboundStatus)(nil), // 2: xray.core.app.observatory.OutboundStatus - (*ProbeResult)(nil), // 3: xray.core.app.observatory.ProbeResult - (*Intensity)(nil), // 4: xray.core.app.observatory.Intensity - (*Config)(nil), // 5: xray.core.app.observatory.Config -} -var file_app_observatory_config_proto_depIdxs = []int32{ - 2, // 0: xray.core.app.observatory.ObservationResult.status:type_name -> xray.core.app.observatory.OutboundStatus - 1, // 1: xray.core.app.observatory.OutboundStatus.health_ping:type_name -> xray.core.app.observatory.HealthPingMeasurementResult - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_app_observatory_config_proto_init() } -func file_app_observatory_config_proto_init() { - if File_app_observatory_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_observatory_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ObservationResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_observatory_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HealthPingMeasurementResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_observatory_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundStatus); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_observatory_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProbeResult); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_observatory_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Intensity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_observatory_config_proto_msgTypes[5].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_app_observatory_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 6, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_observatory_config_proto_goTypes, - DependencyIndexes: file_app_observatory_config_proto_depIdxs, - MessageInfos: file_app_observatory_config_proto_msgTypes, - }.Build() - File_app_observatory_config_proto = out.File - file_app_observatory_config_proto_rawDesc = nil - file_app_observatory_config_proto_goTypes = nil - file_app_observatory_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/policy/config.pb.go b/xray_api/proto/app/policy/config.pb.go deleted file mode 100644 index adcb363..0000000 --- a/xray_api/proto/app/policy/config.pb.go +++ /dev/null @@ -1,724 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/policy/config.proto - -package policy - -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 Second struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *Second) Reset() { - *x = Second{} - if protoimpl.UnsafeEnabled { - mi := &file_app_policy_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Second) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Second) ProtoMessage() {} - -func (x *Second) ProtoReflect() protoreflect.Message { - mi := &file_app_policy_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 Second.ProtoReflect.Descriptor instead. -func (*Second) Descriptor() ([]byte, []int) { - return file_app_policy_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Second) GetValue() uint32 { - if x != nil { - return x.Value - } - return 0 -} - -type Policy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Timeout *Policy_Timeout `protobuf:"bytes,1,opt,name=timeout,proto3" json:"timeout,omitempty"` - Stats *Policy_Stats `protobuf:"bytes,2,opt,name=stats,proto3" json:"stats,omitempty"` - Buffer *Policy_Buffer `protobuf:"bytes,3,opt,name=buffer,proto3" json:"buffer,omitempty"` -} - -func (x *Policy) Reset() { - *x = Policy{} - if protoimpl.UnsafeEnabled { - mi := &file_app_policy_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Policy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Policy) ProtoMessage() {} - -func (x *Policy) ProtoReflect() protoreflect.Message { - mi := &file_app_policy_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 Policy.ProtoReflect.Descriptor instead. -func (*Policy) Descriptor() ([]byte, []int) { - return file_app_policy_config_proto_rawDescGZIP(), []int{1} -} - -func (x *Policy) GetTimeout() *Policy_Timeout { - if x != nil { - return x.Timeout - } - return nil -} - -func (x *Policy) GetStats() *Policy_Stats { - if x != nil { - return x.Stats - } - return nil -} - -func (x *Policy) GetBuffer() *Policy_Buffer { - if x != nil { - return x.Buffer - } - return nil -} - -type SystemPolicy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Stats *SystemPolicy_Stats `protobuf:"bytes,1,opt,name=stats,proto3" json:"stats,omitempty"` -} - -func (x *SystemPolicy) Reset() { - *x = SystemPolicy{} - if protoimpl.UnsafeEnabled { - mi := &file_app_policy_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SystemPolicy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SystemPolicy) ProtoMessage() {} - -func (x *SystemPolicy) ProtoReflect() protoreflect.Message { - mi := &file_app_policy_config_proto_msgTypes[2] - 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 SystemPolicy.ProtoReflect.Descriptor instead. -func (*SystemPolicy) Descriptor() ([]byte, []int) { - return file_app_policy_config_proto_rawDescGZIP(), []int{2} -} - -func (x *SystemPolicy) GetStats() *SystemPolicy_Stats { - if x != nil { - return x.Stats - } - return nil -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Level map[uint32]*Policy `protobuf:"bytes,1,rep,name=level,proto3" json:"level,omitempty" protobuf_key:"varint,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - System *SystemPolicy `protobuf:"bytes,2,opt,name=system,proto3" json:"system,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_policy_config_proto_msgTypes[3] - 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_app_policy_config_proto_msgTypes[3] - 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_app_policy_config_proto_rawDescGZIP(), []int{3} -} - -func (x *Config) GetLevel() map[uint32]*Policy { - if x != nil { - return x.Level - } - return nil -} - -func (x *Config) GetSystem() *SystemPolicy { - if x != nil { - return x.System - } - return nil -} - -// Timeout is a message for timeout settings in various stages, in seconds. -type Policy_Timeout struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Handshake *Second `protobuf:"bytes,1,opt,name=handshake,proto3" json:"handshake,omitempty"` - ConnectionIdle *Second `protobuf:"bytes,2,opt,name=connection_idle,json=connectionIdle,proto3" json:"connection_idle,omitempty"` - UplinkOnly *Second `protobuf:"bytes,3,opt,name=uplink_only,json=uplinkOnly,proto3" json:"uplink_only,omitempty"` - DownlinkOnly *Second `protobuf:"bytes,4,opt,name=downlink_only,json=downlinkOnly,proto3" json:"downlink_only,omitempty"` -} - -func (x *Policy_Timeout) Reset() { - *x = Policy_Timeout{} - if protoimpl.UnsafeEnabled { - mi := &file_app_policy_config_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Policy_Timeout) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Policy_Timeout) ProtoMessage() {} - -func (x *Policy_Timeout) ProtoReflect() protoreflect.Message { - mi := &file_app_policy_config_proto_msgTypes[4] - 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 Policy_Timeout.ProtoReflect.Descriptor instead. -func (*Policy_Timeout) Descriptor() ([]byte, []int) { - return file_app_policy_config_proto_rawDescGZIP(), []int{1, 0} -} - -func (x *Policy_Timeout) GetHandshake() *Second { - if x != nil { - return x.Handshake - } - return nil -} - -func (x *Policy_Timeout) GetConnectionIdle() *Second { - if x != nil { - return x.ConnectionIdle - } - return nil -} - -func (x *Policy_Timeout) GetUplinkOnly() *Second { - if x != nil { - return x.UplinkOnly - } - return nil -} - -func (x *Policy_Timeout) GetDownlinkOnly() *Second { - if x != nil { - return x.DownlinkOnly - } - return nil -} - -type Policy_Stats struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - UserUplink bool `protobuf:"varint,1,opt,name=user_uplink,json=userUplink,proto3" json:"user_uplink,omitempty"` - UserDownlink bool `protobuf:"varint,2,opt,name=user_downlink,json=userDownlink,proto3" json:"user_downlink,omitempty"` -} - -func (x *Policy_Stats) Reset() { - *x = Policy_Stats{} - if protoimpl.UnsafeEnabled { - mi := &file_app_policy_config_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Policy_Stats) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Policy_Stats) ProtoMessage() {} - -func (x *Policy_Stats) ProtoReflect() protoreflect.Message { - mi := &file_app_policy_config_proto_msgTypes[5] - 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 Policy_Stats.ProtoReflect.Descriptor instead. -func (*Policy_Stats) Descriptor() ([]byte, []int) { - return file_app_policy_config_proto_rawDescGZIP(), []int{1, 1} -} - -func (x *Policy_Stats) GetUserUplink() bool { - if x != nil { - return x.UserUplink - } - return false -} - -func (x *Policy_Stats) GetUserDownlink() bool { - if x != nil { - return x.UserDownlink - } - return false -} - -type Policy_Buffer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Buffer size per connection, in bytes. -1 for unlimited buffer. - Connection int32 `protobuf:"varint,1,opt,name=connection,proto3" json:"connection,omitempty"` -} - -func (x *Policy_Buffer) Reset() { - *x = Policy_Buffer{} - if protoimpl.UnsafeEnabled { - mi := &file_app_policy_config_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Policy_Buffer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Policy_Buffer) ProtoMessage() {} - -func (x *Policy_Buffer) ProtoReflect() protoreflect.Message { - mi := &file_app_policy_config_proto_msgTypes[6] - 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 Policy_Buffer.ProtoReflect.Descriptor instead. -func (*Policy_Buffer) Descriptor() ([]byte, []int) { - return file_app_policy_config_proto_rawDescGZIP(), []int{1, 2} -} - -func (x *Policy_Buffer) GetConnection() int32 { - if x != nil { - return x.Connection - } - return 0 -} - -type SystemPolicy_Stats struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InboundUplink bool `protobuf:"varint,1,opt,name=inbound_uplink,json=inboundUplink,proto3" json:"inbound_uplink,omitempty"` - InboundDownlink bool `protobuf:"varint,2,opt,name=inbound_downlink,json=inboundDownlink,proto3" json:"inbound_downlink,omitempty"` - OutboundUplink bool `protobuf:"varint,3,opt,name=outbound_uplink,json=outboundUplink,proto3" json:"outbound_uplink,omitempty"` - OutboundDownlink bool `protobuf:"varint,4,opt,name=outbound_downlink,json=outboundDownlink,proto3" json:"outbound_downlink,omitempty"` -} - -func (x *SystemPolicy_Stats) Reset() { - *x = SystemPolicy_Stats{} - if protoimpl.UnsafeEnabled { - mi := &file_app_policy_config_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SystemPolicy_Stats) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SystemPolicy_Stats) ProtoMessage() {} - -func (x *SystemPolicy_Stats) ProtoReflect() protoreflect.Message { - mi := &file_app_policy_config_proto_msgTypes[7] - 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 SystemPolicy_Stats.ProtoReflect.Descriptor instead. -func (*SystemPolicy_Stats) Descriptor() ([]byte, []int) { - return file_app_policy_config_proto_rawDescGZIP(), []int{2, 0} -} - -func (x *SystemPolicy_Stats) GetInboundUplink() bool { - if x != nil { - return x.InboundUplink - } - return false -} - -func (x *SystemPolicy_Stats) GetInboundDownlink() bool { - if x != nil { - return x.InboundDownlink - } - return false -} - -func (x *SystemPolicy_Stats) GetOutboundUplink() bool { - if x != nil { - return x.OutboundUplink - } - return false -} - -func (x *SystemPolicy_Stats) GetOutboundDownlink() bool { - if x != nil { - return x.OutboundDownlink - } - return false -} - -var File_app_policy_config_proto protoreflect.FileDescriptor - -var file_app_policy_config_proto_rawDesc = []byte{ - 0x0a, 0x17, 0x61, 0x70, 0x70, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x22, 0x1e, 0x0a, 0x06, 0x53, 0x65, - 0x63, 0x6f, 0x6e, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xa6, 0x04, 0x0a, 0x06, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x12, 0x39, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, - 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x12, 0x33, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x12, 0x36, 0x0a, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x42, - 0x75, 0x66, 0x66, 0x65, 0x72, 0x52, 0x06, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x1a, 0xfa, 0x01, - 0x0a, 0x07, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x35, 0x0a, 0x09, 0x68, 0x61, 0x6e, - 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, - 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x09, 0x68, 0x61, 0x6e, 0x64, 0x73, 0x68, 0x61, 0x6b, 0x65, - 0x12, 0x40, 0x0a, 0x0f, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x69, - 0x64, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, - 0x6e, 0x64, 0x52, 0x0e, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x49, 0x64, - 0x6c, 0x65, 0x12, 0x38, 0x0a, 0x0b, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6f, 0x6e, 0x6c, - 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, - 0x52, 0x0a, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x3c, 0x0a, 0x0d, - 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x65, 0x63, 0x6f, 0x6e, 0x64, 0x52, 0x0c, 0x64, 0x6f, - 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x4f, 0x6e, 0x6c, 0x79, 0x1a, 0x4d, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x75, 0x70, 0x6c, 0x69, - 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x55, 0x70, - 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x23, 0x0a, 0x0d, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x64, 0x6f, 0x77, - 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x75, 0x73, 0x65, - 0x72, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x1a, 0x28, 0x0a, 0x06, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x12, 0x1e, 0x0a, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, - 0x69, 0x6f, 0x6e, 0x22, 0xfb, 0x01, 0x0a, 0x0c, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, - 0x6c, 0x69, 0x63, 0x79, 0x12, 0x39, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x23, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, 0x6f, 0x6c, 0x69, - 0x63, 0x79, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x1a, - 0xaf, 0x01, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x69, 0x6e, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0d, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, - 0x12, 0x29, 0x0a, 0x10, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0f, 0x69, 0x6e, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x27, 0x0a, 0x0f, 0x6f, - 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x55, 0x70, - 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x2b, 0x0a, 0x11, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x5f, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, - 0x6b, 0x22, 0xcc, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x38, 0x0a, 0x05, - 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x35, 0x0a, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x06, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x1a, 0x51, 0x0a, - 0x0a, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x2d, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x2e, 0x50, - 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, - 0x42, 0x4f, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0x50, 0x01, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, - 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x70, 0x6f, 0x6c, 0x69, 0x63, 0x79, 0xaa, - 0x02, 0x0f, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x50, 0x6f, 0x6c, 0x69, 0x63, - 0x79, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_policy_config_proto_rawDescOnce sync.Once - file_app_policy_config_proto_rawDescData = file_app_policy_config_proto_rawDesc -) - -func file_app_policy_config_proto_rawDescGZIP() []byte { - file_app_policy_config_proto_rawDescOnce.Do(func() { - file_app_policy_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_policy_config_proto_rawDescData) - }) - return file_app_policy_config_proto_rawDescData -} - -var file_app_policy_config_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_app_policy_config_proto_goTypes = []interface{}{ - (*Second)(nil), // 0: xray.app.policy.Second - (*Policy)(nil), // 1: xray.app.policy.Policy - (*SystemPolicy)(nil), // 2: xray.app.policy.SystemPolicy - (*Config)(nil), // 3: xray.app.policy.Config - (*Policy_Timeout)(nil), // 4: xray.app.policy.Policy.Timeout - (*Policy_Stats)(nil), // 5: xray.app.policy.Policy.Stats - (*Policy_Buffer)(nil), // 6: xray.app.policy.Policy.Buffer - (*SystemPolicy_Stats)(nil), // 7: xray.app.policy.SystemPolicy.Stats - nil, // 8: xray.app.policy.Config.LevelEntry -} -var file_app_policy_config_proto_depIdxs = []int32{ - 4, // 0: xray.app.policy.Policy.timeout:type_name -> xray.app.policy.Policy.Timeout - 5, // 1: xray.app.policy.Policy.stats:type_name -> xray.app.policy.Policy.Stats - 6, // 2: xray.app.policy.Policy.buffer:type_name -> xray.app.policy.Policy.Buffer - 7, // 3: xray.app.policy.SystemPolicy.stats:type_name -> xray.app.policy.SystemPolicy.Stats - 8, // 4: xray.app.policy.Config.level:type_name -> xray.app.policy.Config.LevelEntry - 2, // 5: xray.app.policy.Config.system:type_name -> xray.app.policy.SystemPolicy - 0, // 6: xray.app.policy.Policy.Timeout.handshake:type_name -> xray.app.policy.Second - 0, // 7: xray.app.policy.Policy.Timeout.connection_idle:type_name -> xray.app.policy.Second - 0, // 8: xray.app.policy.Policy.Timeout.uplink_only:type_name -> xray.app.policy.Second - 0, // 9: xray.app.policy.Policy.Timeout.downlink_only:type_name -> xray.app.policy.Second - 1, // 10: xray.app.policy.Config.LevelEntry.value:type_name -> xray.app.policy.Policy - 11, // [11:11] is the sub-list for method output_type - 11, // [11:11] is the sub-list for method input_type - 11, // [11:11] is the sub-list for extension type_name - 11, // [11:11] is the sub-list for extension extendee - 0, // [0:11] is the sub-list for field type_name -} - -func init() { file_app_policy_config_proto_init() } -func file_app_policy_config_proto_init() { - if File_app_policy_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_policy_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Second); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_policy_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Policy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_policy_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemPolicy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_policy_config_proto_msgTypes[3].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 - } - } - file_app_policy_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Policy_Timeout); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_policy_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Policy_Stats); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_policy_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Policy_Buffer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_policy_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SystemPolicy_Stats); 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_app_policy_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 9, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_policy_config_proto_goTypes, - DependencyIndexes: file_app_policy_config_proto_depIdxs, - MessageInfos: file_app_policy_config_proto_msgTypes, - }.Build() - File_app_policy_config_proto = out.File - file_app_policy_config_proto_rawDesc = nil - file_app_policy_config_proto_goTypes = nil - file_app_policy_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/proxyman/command/command.pb.go b/xray_api/proto/app/proxyman/command/command.pb.go deleted file mode 100644 index 4de8af6..0000000 --- a/xray_api/proto/app/proxyman/command/command.pb.go +++ /dev/null @@ -1,1060 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/proxyman/command/command.proto - -package command - -import ( - protocol "marzban-node/xray_api/proto/common/protocol" - serial "marzban-node/xray_api/proto/common/serial" - core "marzban-node/xray_api/proto/core" - 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 AddUserOperation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - User *protocol.User `protobuf:"bytes,1,opt,name=user,proto3" json:"user,omitempty"` -} - -func (x *AddUserOperation) Reset() { - *x = AddUserOperation{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddUserOperation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddUserOperation) ProtoMessage() {} - -func (x *AddUserOperation) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_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 AddUserOperation.ProtoReflect.Descriptor instead. -func (*AddUserOperation) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{0} -} - -func (x *AddUserOperation) GetUser() *protocol.User { - if x != nil { - return x.User - } - return nil -} - -type RemoveUserOperation struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` -} - -func (x *RemoveUserOperation) Reset() { - *x = RemoveUserOperation{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveUserOperation) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveUserOperation) ProtoMessage() {} - -func (x *RemoveUserOperation) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_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 RemoveUserOperation.ProtoReflect.Descriptor instead. -func (*RemoveUserOperation) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{1} -} - -func (x *RemoveUserOperation) GetEmail() string { - if x != nil { - return x.Email - } - return "" -} - -type AddInboundRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Inbound *core.InboundHandlerConfig `protobuf:"bytes,1,opt,name=inbound,proto3" json:"inbound,omitempty"` -} - -func (x *AddInboundRequest) Reset() { - *x = AddInboundRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddInboundRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddInboundRequest) ProtoMessage() {} - -func (x *AddInboundRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[2] - 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 AddInboundRequest.ProtoReflect.Descriptor instead. -func (*AddInboundRequest) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{2} -} - -func (x *AddInboundRequest) GetInbound() *core.InboundHandlerConfig { - if x != nil { - return x.Inbound - } - return nil -} - -type AddInboundResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *AddInboundResponse) Reset() { - *x = AddInboundResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddInboundResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddInboundResponse) ProtoMessage() {} - -func (x *AddInboundResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[3] - 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 AddInboundResponse.ProtoReflect.Descriptor instead. -func (*AddInboundResponse) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{3} -} - -type RemoveInboundRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` -} - -func (x *RemoveInboundRequest) Reset() { - *x = RemoveInboundRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveInboundRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveInboundRequest) ProtoMessage() {} - -func (x *RemoveInboundRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[4] - 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 RemoveInboundRequest.ProtoReflect.Descriptor instead. -func (*RemoveInboundRequest) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{4} -} - -func (x *RemoveInboundRequest) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -type RemoveInboundResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *RemoveInboundResponse) Reset() { - *x = RemoveInboundResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveInboundResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveInboundResponse) ProtoMessage() {} - -func (x *RemoveInboundResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[5] - 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 RemoveInboundResponse.ProtoReflect.Descriptor instead. -func (*RemoveInboundResponse) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{5} -} - -type AlterInboundRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - Operation *serial.TypedMessage `protobuf:"bytes,2,opt,name=operation,proto3" json:"operation,omitempty"` -} - -func (x *AlterInboundRequest) Reset() { - *x = AlterInboundRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AlterInboundRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AlterInboundRequest) ProtoMessage() {} - -func (x *AlterInboundRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[6] - 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 AlterInboundRequest.ProtoReflect.Descriptor instead. -func (*AlterInboundRequest) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{6} -} - -func (x *AlterInboundRequest) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *AlterInboundRequest) GetOperation() *serial.TypedMessage { - if x != nil { - return x.Operation - } - return nil -} - -type AlterInboundResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *AlterInboundResponse) Reset() { - *x = AlterInboundResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AlterInboundResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AlterInboundResponse) ProtoMessage() {} - -func (x *AlterInboundResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[7] - 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 AlterInboundResponse.ProtoReflect.Descriptor instead. -func (*AlterInboundResponse) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{7} -} - -type AddOutboundRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Outbound *core.OutboundHandlerConfig `protobuf:"bytes,1,opt,name=outbound,proto3" json:"outbound,omitempty"` -} - -func (x *AddOutboundRequest) Reset() { - *x = AddOutboundRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddOutboundRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddOutboundRequest) ProtoMessage() {} - -func (x *AddOutboundRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[8] - 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 AddOutboundRequest.ProtoReflect.Descriptor instead. -func (*AddOutboundRequest) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{8} -} - -func (x *AddOutboundRequest) GetOutbound() *core.OutboundHandlerConfig { - if x != nil { - return x.Outbound - } - return nil -} - -type AddOutboundResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *AddOutboundResponse) Reset() { - *x = AddOutboundResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddOutboundResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddOutboundResponse) ProtoMessage() {} - -func (x *AddOutboundResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[9] - 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 AddOutboundResponse.ProtoReflect.Descriptor instead. -func (*AddOutboundResponse) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{9} -} - -type RemoveOutboundRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` -} - -func (x *RemoveOutboundRequest) Reset() { - *x = RemoveOutboundRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveOutboundRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveOutboundRequest) ProtoMessage() {} - -func (x *RemoveOutboundRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[10] - 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 RemoveOutboundRequest.ProtoReflect.Descriptor instead. -func (*RemoveOutboundRequest) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{10} -} - -func (x *RemoveOutboundRequest) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -type RemoveOutboundResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *RemoveOutboundResponse) Reset() { - *x = RemoveOutboundResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveOutboundResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveOutboundResponse) ProtoMessage() {} - -func (x *RemoveOutboundResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[11] - 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 RemoveOutboundResponse.ProtoReflect.Descriptor instead. -func (*RemoveOutboundResponse) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{11} -} - -type AlterOutboundRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - Operation *serial.TypedMessage `protobuf:"bytes,2,opt,name=operation,proto3" json:"operation,omitempty"` -} - -func (x *AlterOutboundRequest) Reset() { - *x = AlterOutboundRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AlterOutboundRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AlterOutboundRequest) ProtoMessage() {} - -func (x *AlterOutboundRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[12] - 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 AlterOutboundRequest.ProtoReflect.Descriptor instead. -func (*AlterOutboundRequest) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{12} -} - -func (x *AlterOutboundRequest) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *AlterOutboundRequest) GetOperation() *serial.TypedMessage { - if x != nil { - return x.Operation - } - return nil -} - -type AlterOutboundResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *AlterOutboundResponse) Reset() { - *x = AlterOutboundResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AlterOutboundResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AlterOutboundResponse) ProtoMessage() {} - -func (x *AlterOutboundResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_command_command_proto_msgTypes[13] - 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 AlterOutboundResponse.ProtoReflect.Descriptor instead. -func (*AlterOutboundResponse) Descriptor() ([]byte, []int) { - return file_app_proxyman_command_command_proto_rawDescGZIP(), []int{13} -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_command_command_proto_msgTypes[14] - 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_app_proxyman_command_command_proto_msgTypes[14] - 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_app_proxyman_command_command_proto_rawDescGZIP(), []int{14} -} - -var File_app_proxyman_command_command_proto protoreflect.FileDescriptor - -var file_app_proxyman_command_command_proto_rawDesc = []byte{ - 0x0a, 0x22, 0x61, 0x70, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2f, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x1a, - 0x1a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, - 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x11, - 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x42, 0x0a, 0x10, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x22, 0x2b, 0x0a, 0x13, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, - 0x73, 0x65, 0x72, 0x4f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, - 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, - 0x69, 0x6c, 0x22, 0x4e, 0x0a, 0x11, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x39, 0x0a, 0x07, 0x69, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, - 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x69, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x22, 0x14, 0x0a, 0x12, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x28, 0x0a, 0x14, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, - 0x61, 0x67, 0x22, 0x17, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x67, 0x0a, 0x13, 0x41, - 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x03, 0x74, 0x61, 0x67, 0x12, 0x3e, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, - 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x16, 0x0a, 0x14, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x52, 0x0a, 0x12, - 0x41, 0x64, 0x64, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x3c, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, - 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x22, 0x15, 0x0a, 0x13, 0x41, 0x64, 0x64, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x29, 0x0a, 0x15, 0x52, 0x65, 0x6d, 0x6f, 0x76, - 0x65, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, - 0x61, 0x67, 0x22, 0x18, 0x0a, 0x16, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x75, 0x74, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x68, 0x0a, 0x14, - 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x3e, 0x0a, 0x09, 0x6f, 0x70, 0x65, 0x72, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, - 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x6f, 0x70, 0x65, - 0x72, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x22, 0x17, 0x0a, 0x15, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, - 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x08, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0xc5, 0x05, 0x0a, 0x0e, 0x48, 0x61, - 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x6b, 0x0a, 0x0a, - 0x41, 0x64, 0x64, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x2c, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x64, 0x64, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x74, 0x0a, 0x0d, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x2f, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x49, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x71, 0x0a, 0x0c, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, - 0x2e, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x6d, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x6c, 0x74, 0x65, - 0x72, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x2f, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x6d, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x6c, 0x74, 0x65, - 0x72, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x6e, 0x0a, 0x0b, 0x41, 0x64, 0x64, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x12, 0x2d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x64, - 0x64, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x2e, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x64, 0x64, - 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x77, 0x0a, 0x0e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x75, 0x74, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x30, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x31, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x74, 0x0a, 0x0d, 0x41, - 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x2f, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, 0x75, - 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x30, 0x2e, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, - 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x6c, 0x74, 0x65, 0x72, 0x4f, - 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x42, 0x6d, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, - 0x6e, 0x64, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, - 0x61, 0x70, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2f, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0xaa, 0x02, 0x19, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_proxyman_command_command_proto_rawDescOnce sync.Once - file_app_proxyman_command_command_proto_rawDescData = file_app_proxyman_command_command_proto_rawDesc -) - -func file_app_proxyman_command_command_proto_rawDescGZIP() []byte { - file_app_proxyman_command_command_proto_rawDescOnce.Do(func() { - file_app_proxyman_command_command_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_proxyman_command_command_proto_rawDescData) - }) - return file_app_proxyman_command_command_proto_rawDescData -} - -var file_app_proxyman_command_command_proto_msgTypes = make([]protoimpl.MessageInfo, 15) -var file_app_proxyman_command_command_proto_goTypes = []interface{}{ - (*AddUserOperation)(nil), // 0: xray.app.proxyman.command.AddUserOperation - (*RemoveUserOperation)(nil), // 1: xray.app.proxyman.command.RemoveUserOperation - (*AddInboundRequest)(nil), // 2: xray.app.proxyman.command.AddInboundRequest - (*AddInboundResponse)(nil), // 3: xray.app.proxyman.command.AddInboundResponse - (*RemoveInboundRequest)(nil), // 4: xray.app.proxyman.command.RemoveInboundRequest - (*RemoveInboundResponse)(nil), // 5: xray.app.proxyman.command.RemoveInboundResponse - (*AlterInboundRequest)(nil), // 6: xray.app.proxyman.command.AlterInboundRequest - (*AlterInboundResponse)(nil), // 7: xray.app.proxyman.command.AlterInboundResponse - (*AddOutboundRequest)(nil), // 8: xray.app.proxyman.command.AddOutboundRequest - (*AddOutboundResponse)(nil), // 9: xray.app.proxyman.command.AddOutboundResponse - (*RemoveOutboundRequest)(nil), // 10: xray.app.proxyman.command.RemoveOutboundRequest - (*RemoveOutboundResponse)(nil), // 11: xray.app.proxyman.command.RemoveOutboundResponse - (*AlterOutboundRequest)(nil), // 12: xray.app.proxyman.command.AlterOutboundRequest - (*AlterOutboundResponse)(nil), // 13: xray.app.proxyman.command.AlterOutboundResponse - (*Config)(nil), // 14: xray.app.proxyman.command.Config - (*protocol.User)(nil), // 15: xray.common.protocol.User - (*core.InboundHandlerConfig)(nil), // 16: xray.core.InboundHandlerConfig - (*serial.TypedMessage)(nil), // 17: xray.common.serial.TypedMessage - (*core.OutboundHandlerConfig)(nil), // 18: xray.core.OutboundHandlerConfig -} -var file_app_proxyman_command_command_proto_depIdxs = []int32{ - 15, // 0: xray.app.proxyman.command.AddUserOperation.user:type_name -> xray.common.protocol.User - 16, // 1: xray.app.proxyman.command.AddInboundRequest.inbound:type_name -> xray.core.InboundHandlerConfig - 17, // 2: xray.app.proxyman.command.AlterInboundRequest.operation:type_name -> xray.common.serial.TypedMessage - 18, // 3: xray.app.proxyman.command.AddOutboundRequest.outbound:type_name -> xray.core.OutboundHandlerConfig - 17, // 4: xray.app.proxyman.command.AlterOutboundRequest.operation:type_name -> xray.common.serial.TypedMessage - 2, // 5: xray.app.proxyman.command.HandlerService.AddInbound:input_type -> xray.app.proxyman.command.AddInboundRequest - 4, // 6: xray.app.proxyman.command.HandlerService.RemoveInbound:input_type -> xray.app.proxyman.command.RemoveInboundRequest - 6, // 7: xray.app.proxyman.command.HandlerService.AlterInbound:input_type -> xray.app.proxyman.command.AlterInboundRequest - 8, // 8: xray.app.proxyman.command.HandlerService.AddOutbound:input_type -> xray.app.proxyman.command.AddOutboundRequest - 10, // 9: xray.app.proxyman.command.HandlerService.RemoveOutbound:input_type -> xray.app.proxyman.command.RemoveOutboundRequest - 12, // 10: xray.app.proxyman.command.HandlerService.AlterOutbound:input_type -> xray.app.proxyman.command.AlterOutboundRequest - 3, // 11: xray.app.proxyman.command.HandlerService.AddInbound:output_type -> xray.app.proxyman.command.AddInboundResponse - 5, // 12: xray.app.proxyman.command.HandlerService.RemoveInbound:output_type -> xray.app.proxyman.command.RemoveInboundResponse - 7, // 13: xray.app.proxyman.command.HandlerService.AlterInbound:output_type -> xray.app.proxyman.command.AlterInboundResponse - 9, // 14: xray.app.proxyman.command.HandlerService.AddOutbound:output_type -> xray.app.proxyman.command.AddOutboundResponse - 11, // 15: xray.app.proxyman.command.HandlerService.RemoveOutbound:output_type -> xray.app.proxyman.command.RemoveOutboundResponse - 13, // 16: xray.app.proxyman.command.HandlerService.AlterOutbound:output_type -> xray.app.proxyman.command.AlterOutboundResponse - 11, // [11:17] is the sub-list for method output_type - 5, // [5:11] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name -} - -func init() { file_app_proxyman_command_command_proto_init() } -func file_app_proxyman_command_command_proto_init() { - if File_app_proxyman_command_command_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_proxyman_command_command_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddUserOperation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveUserOperation); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddInboundRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddInboundResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveInboundRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveInboundResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AlterInboundRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AlterInboundResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddOutboundRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddOutboundResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveOutboundRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveOutboundResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AlterOutboundRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AlterOutboundResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_command_command_proto_msgTypes[14].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_app_proxyman_command_command_proto_rawDesc, - NumEnums: 0, - NumMessages: 15, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_app_proxyman_command_command_proto_goTypes, - DependencyIndexes: file_app_proxyman_command_command_proto_depIdxs, - MessageInfos: file_app_proxyman_command_command_proto_msgTypes, - }.Build() - File_app_proxyman_command_command_proto = out.File - file_app_proxyman_command_command_proto_rawDesc = nil - file_app_proxyman_command_command_proto_goTypes = nil - file_app_proxyman_command_command_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/proxyman/command/command_grpc.pb.go b/xray_api/proto/app/proxyman/command/command_grpc.pb.go deleted file mode 100644 index 8478780..0000000 --- a/xray_api/proto/app/proxyman/command/command_grpc.pb.go +++ /dev/null @@ -1,294 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v5.27.0 -// source: app/proxyman/command/command.proto - -package command - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - HandlerService_AddInbound_FullMethodName = "/xray.app.proxyman.command.HandlerService/AddInbound" - HandlerService_RemoveInbound_FullMethodName = "/xray.app.proxyman.command.HandlerService/RemoveInbound" - HandlerService_AlterInbound_FullMethodName = "/xray.app.proxyman.command.HandlerService/AlterInbound" - HandlerService_AddOutbound_FullMethodName = "/xray.app.proxyman.command.HandlerService/AddOutbound" - HandlerService_RemoveOutbound_FullMethodName = "/xray.app.proxyman.command.HandlerService/RemoveOutbound" - HandlerService_AlterOutbound_FullMethodName = "/xray.app.proxyman.command.HandlerService/AlterOutbound" -) - -// HandlerServiceClient is the client API for HandlerService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type HandlerServiceClient interface { - AddInbound(ctx context.Context, in *AddInboundRequest, opts ...grpc.CallOption) (*AddInboundResponse, error) - RemoveInbound(ctx context.Context, in *RemoveInboundRequest, opts ...grpc.CallOption) (*RemoveInboundResponse, error) - AlterInbound(ctx context.Context, in *AlterInboundRequest, opts ...grpc.CallOption) (*AlterInboundResponse, error) - AddOutbound(ctx context.Context, in *AddOutboundRequest, opts ...grpc.CallOption) (*AddOutboundResponse, error) - RemoveOutbound(ctx context.Context, in *RemoveOutboundRequest, opts ...grpc.CallOption) (*RemoveOutboundResponse, error) - AlterOutbound(ctx context.Context, in *AlterOutboundRequest, opts ...grpc.CallOption) (*AlterOutboundResponse, error) -} - -type handlerServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewHandlerServiceClient(cc grpc.ClientConnInterface) HandlerServiceClient { - return &handlerServiceClient{cc} -} - -func (c *handlerServiceClient) AddInbound(ctx context.Context, in *AddInboundRequest, opts ...grpc.CallOption) (*AddInboundResponse, error) { - out := new(AddInboundResponse) - err := c.cc.Invoke(ctx, HandlerService_AddInbound_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *handlerServiceClient) RemoveInbound(ctx context.Context, in *RemoveInboundRequest, opts ...grpc.CallOption) (*RemoveInboundResponse, error) { - out := new(RemoveInboundResponse) - err := c.cc.Invoke(ctx, HandlerService_RemoveInbound_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *handlerServiceClient) AlterInbound(ctx context.Context, in *AlterInboundRequest, opts ...grpc.CallOption) (*AlterInboundResponse, error) { - out := new(AlterInboundResponse) - err := c.cc.Invoke(ctx, HandlerService_AlterInbound_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *handlerServiceClient) AddOutbound(ctx context.Context, in *AddOutboundRequest, opts ...grpc.CallOption) (*AddOutboundResponse, error) { - out := new(AddOutboundResponse) - err := c.cc.Invoke(ctx, HandlerService_AddOutbound_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *handlerServiceClient) RemoveOutbound(ctx context.Context, in *RemoveOutboundRequest, opts ...grpc.CallOption) (*RemoveOutboundResponse, error) { - out := new(RemoveOutboundResponse) - err := c.cc.Invoke(ctx, HandlerService_RemoveOutbound_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *handlerServiceClient) AlterOutbound(ctx context.Context, in *AlterOutboundRequest, opts ...grpc.CallOption) (*AlterOutboundResponse, error) { - out := new(AlterOutboundResponse) - err := c.cc.Invoke(ctx, HandlerService_AlterOutbound_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// HandlerServiceServer is the server API for HandlerService service. -// All implementations must embed UnimplementedHandlerServiceServer -// for forward compatibility -type HandlerServiceServer interface { - AddInbound(context.Context, *AddInboundRequest) (*AddInboundResponse, error) - RemoveInbound(context.Context, *RemoveInboundRequest) (*RemoveInboundResponse, error) - AlterInbound(context.Context, *AlterInboundRequest) (*AlterInboundResponse, error) - AddOutbound(context.Context, *AddOutboundRequest) (*AddOutboundResponse, error) - RemoveOutbound(context.Context, *RemoveOutboundRequest) (*RemoveOutboundResponse, error) - AlterOutbound(context.Context, *AlterOutboundRequest) (*AlterOutboundResponse, error) - mustEmbedUnimplementedHandlerServiceServer() -} - -// UnimplementedHandlerServiceServer must be embedded to have forward compatible implementations. -type UnimplementedHandlerServiceServer struct { -} - -func (UnimplementedHandlerServiceServer) AddInbound(context.Context, *AddInboundRequest) (*AddInboundResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddInbound not implemented") -} -func (UnimplementedHandlerServiceServer) RemoveInbound(context.Context, *RemoveInboundRequest) (*RemoveInboundResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveInbound not implemented") -} -func (UnimplementedHandlerServiceServer) AlterInbound(context.Context, *AlterInboundRequest) (*AlterInboundResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AlterInbound not implemented") -} -func (UnimplementedHandlerServiceServer) AddOutbound(context.Context, *AddOutboundRequest) (*AddOutboundResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddOutbound not implemented") -} -func (UnimplementedHandlerServiceServer) RemoveOutbound(context.Context, *RemoveOutboundRequest) (*RemoveOutboundResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveOutbound not implemented") -} -func (UnimplementedHandlerServiceServer) AlterOutbound(context.Context, *AlterOutboundRequest) (*AlterOutboundResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AlterOutbound not implemented") -} -func (UnimplementedHandlerServiceServer) mustEmbedUnimplementedHandlerServiceServer() {} - -// UnsafeHandlerServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to HandlerServiceServer will -// result in compilation errors. -type UnsafeHandlerServiceServer interface { - mustEmbedUnimplementedHandlerServiceServer() -} - -func RegisterHandlerServiceServer(s grpc.ServiceRegistrar, srv HandlerServiceServer) { - s.RegisterService(&HandlerService_ServiceDesc, srv) -} - -func _HandlerService_AddInbound_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AddInboundRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HandlerServiceServer).AddInbound(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HandlerService_AddInbound_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HandlerServiceServer).AddInbound(ctx, req.(*AddInboundRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HandlerService_RemoveInbound_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RemoveInboundRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HandlerServiceServer).RemoveInbound(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HandlerService_RemoveInbound_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HandlerServiceServer).RemoveInbound(ctx, req.(*RemoveInboundRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HandlerService_AlterInbound_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AlterInboundRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HandlerServiceServer).AlterInbound(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HandlerService_AlterInbound_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HandlerServiceServer).AlterInbound(ctx, req.(*AlterInboundRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HandlerService_AddOutbound_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AddOutboundRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HandlerServiceServer).AddOutbound(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HandlerService_AddOutbound_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HandlerServiceServer).AddOutbound(ctx, req.(*AddOutboundRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HandlerService_RemoveOutbound_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RemoveOutboundRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HandlerServiceServer).RemoveOutbound(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HandlerService_RemoveOutbound_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HandlerServiceServer).RemoveOutbound(ctx, req.(*RemoveOutboundRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _HandlerService_AlterOutbound_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AlterOutboundRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(HandlerServiceServer).AlterOutbound(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: HandlerService_AlterOutbound_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(HandlerServiceServer).AlterOutbound(ctx, req.(*AlterOutboundRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// HandlerService_ServiceDesc is the grpc.ServiceDesc for HandlerService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var HandlerService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "xray.app.proxyman.command.HandlerService", - HandlerType: (*HandlerServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "AddInbound", - Handler: _HandlerService_AddInbound_Handler, - }, - { - MethodName: "RemoveInbound", - Handler: _HandlerService_RemoveInbound_Handler, - }, - { - MethodName: "AlterInbound", - Handler: _HandlerService_AlterInbound_Handler, - }, - { - MethodName: "AddOutbound", - Handler: _HandlerService_AddOutbound_Handler, - }, - { - MethodName: "RemoveOutbound", - Handler: _HandlerService_RemoveOutbound_Handler, - }, - { - MethodName: "AlterOutbound", - Handler: _HandlerService_AlterOutbound_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "app/proxyman/command/command.proto", -} diff --git a/xray_api/proto/app/proxyman/config.pb.go b/xray_api/proto/app/proxyman/config.pb.go deleted file mode 100644 index 2046e57..0000000 --- a/xray_api/proto/app/proxyman/config.pb.go +++ /dev/null @@ -1,1111 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/proxyman/config.proto - -package proxyman - -import ( - net "marzban-node/xray_api/proto/common/net" - serial "marzban-node/xray_api/proto/common/serial" - internet "marzban-node/xray_api/proto/transport/internet" - 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 KnownProtocols int32 - -const ( - KnownProtocols_HTTP KnownProtocols = 0 - KnownProtocols_TLS KnownProtocols = 1 -) - -// Enum value maps for KnownProtocols. -var ( - KnownProtocols_name = map[int32]string{ - 0: "HTTP", - 1: "TLS", - } - KnownProtocols_value = map[string]int32{ - "HTTP": 0, - "TLS": 1, - } -) - -func (x KnownProtocols) Enum() *KnownProtocols { - p := new(KnownProtocols) - *p = x - return p -} - -func (x KnownProtocols) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (KnownProtocols) Descriptor() protoreflect.EnumDescriptor { - return file_app_proxyman_config_proto_enumTypes[0].Descriptor() -} - -func (KnownProtocols) Type() protoreflect.EnumType { - return &file_app_proxyman_config_proto_enumTypes[0] -} - -func (x KnownProtocols) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use KnownProtocols.Descriptor instead. -func (KnownProtocols) EnumDescriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{0} -} - -type AllocationStrategy_Type int32 - -const ( - // Always allocate all connection handlers. - AllocationStrategy_Always AllocationStrategy_Type = 0 - // Randomly allocate specific range of handlers. - AllocationStrategy_Random AllocationStrategy_Type = 1 - // External. Not supported yet. - AllocationStrategy_External AllocationStrategy_Type = 2 -) - -// Enum value maps for AllocationStrategy_Type. -var ( - AllocationStrategy_Type_name = map[int32]string{ - 0: "Always", - 1: "Random", - 2: "External", - } - AllocationStrategy_Type_value = map[string]int32{ - "Always": 0, - "Random": 1, - "External": 2, - } -) - -func (x AllocationStrategy_Type) Enum() *AllocationStrategy_Type { - p := new(AllocationStrategy_Type) - *p = x - return p -} - -func (x AllocationStrategy_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AllocationStrategy_Type) Descriptor() protoreflect.EnumDescriptor { - return file_app_proxyman_config_proto_enumTypes[1].Descriptor() -} - -func (AllocationStrategy_Type) Type() protoreflect.EnumType { - return &file_app_proxyman_config_proto_enumTypes[1] -} - -func (x AllocationStrategy_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use AllocationStrategy_Type.Descriptor instead. -func (AllocationStrategy_Type) EnumDescriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{1, 0} -} - -type InboundConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *InboundConfig) Reset() { - *x = InboundConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *InboundConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InboundConfig) ProtoMessage() {} - -func (x *InboundConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_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 InboundConfig.ProtoReflect.Descriptor instead. -func (*InboundConfig) Descriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{0} -} - -type AllocationStrategy struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type AllocationStrategy_Type `protobuf:"varint,1,opt,name=type,proto3,enum=xray.app.proxyman.AllocationStrategy_Type" json:"type,omitempty"` - // Number of handlers (ports) running in parallel. - // Default value is 3 if unset. - Concurrency *AllocationStrategy_AllocationStrategyConcurrency `protobuf:"bytes,2,opt,name=concurrency,proto3" json:"concurrency,omitempty"` - // Number of minutes before a handler is regenerated. - // Default value is 5 if unset. - Refresh *AllocationStrategy_AllocationStrategyRefresh `protobuf:"bytes,3,opt,name=refresh,proto3" json:"refresh,omitempty"` -} - -func (x *AllocationStrategy) Reset() { - *x = AllocationStrategy{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AllocationStrategy) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AllocationStrategy) ProtoMessage() {} - -func (x *AllocationStrategy) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_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 AllocationStrategy.ProtoReflect.Descriptor instead. -func (*AllocationStrategy) Descriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{1} -} - -func (x *AllocationStrategy) GetType() AllocationStrategy_Type { - if x != nil { - return x.Type - } - return AllocationStrategy_Always -} - -func (x *AllocationStrategy) GetConcurrency() *AllocationStrategy_AllocationStrategyConcurrency { - if x != nil { - return x.Concurrency - } - return nil -} - -func (x *AllocationStrategy) GetRefresh() *AllocationStrategy_AllocationStrategyRefresh { - if x != nil { - return x.Refresh - } - return nil -} - -type SniffingConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Whether or not to enable content sniffing on an inbound connection. - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - // Override target destination if sniff'ed protocol is in the given list. - // Supported values are "http", "tls", "fakedns". - DestinationOverride []string `protobuf:"bytes,2,rep,name=destination_override,json=destinationOverride,proto3" json:"destination_override,omitempty"` - DomainsExcluded []string `protobuf:"bytes,3,rep,name=domains_excluded,json=domainsExcluded,proto3" json:"domains_excluded,omitempty"` - // Whether should only try to sniff metadata without waiting for client input. - // Can be used to support SMTP like protocol where server send the first - // message. - MetadataOnly bool `protobuf:"varint,4,opt,name=metadata_only,json=metadataOnly,proto3" json:"metadata_only,omitempty"` - RouteOnly bool `protobuf:"varint,5,opt,name=route_only,json=routeOnly,proto3" json:"route_only,omitempty"` -} - -func (x *SniffingConfig) Reset() { - *x = SniffingConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SniffingConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SniffingConfig) ProtoMessage() {} - -func (x *SniffingConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_config_proto_msgTypes[2] - 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 SniffingConfig.ProtoReflect.Descriptor instead. -func (*SniffingConfig) Descriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{2} -} - -func (x *SniffingConfig) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *SniffingConfig) GetDestinationOverride() []string { - if x != nil { - return x.DestinationOverride - } - return nil -} - -func (x *SniffingConfig) GetDomainsExcluded() []string { - if x != nil { - return x.DomainsExcluded - } - return nil -} - -func (x *SniffingConfig) GetMetadataOnly() bool { - if x != nil { - return x.MetadataOnly - } - return false -} - -func (x *SniffingConfig) GetRouteOnly() bool { - if x != nil { - return x.RouteOnly - } - return false -} - -type ReceiverConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // PortList specifies the ports which the Receiver should listen on. - PortList *net.PortList `protobuf:"bytes,1,opt,name=port_list,json=portList,proto3" json:"port_list,omitempty"` - // Listen specifies the IP address that the Receiver should listen on. - Listen *net.IPOrDomain `protobuf:"bytes,2,opt,name=listen,proto3" json:"listen,omitempty"` - AllocationStrategy *AllocationStrategy `protobuf:"bytes,3,opt,name=allocation_strategy,json=allocationStrategy,proto3" json:"allocation_strategy,omitempty"` - StreamSettings *internet.StreamConfig `protobuf:"bytes,4,opt,name=stream_settings,json=streamSettings,proto3" json:"stream_settings,omitempty"` - ReceiveOriginalDestination bool `protobuf:"varint,5,opt,name=receive_original_destination,json=receiveOriginalDestination,proto3" json:"receive_original_destination,omitempty"` - // Override domains for the given protocol. - // Deprecated. Use sniffing_settings. - // - // Deprecated: Marked as deprecated in app/proxyman/config.proto. - DomainOverride []KnownProtocols `protobuf:"varint,7,rep,packed,name=domain_override,json=domainOverride,proto3,enum=xray.app.proxyman.KnownProtocols" json:"domain_override,omitempty"` - SniffingSettings *SniffingConfig `protobuf:"bytes,8,opt,name=sniffing_settings,json=sniffingSettings,proto3" json:"sniffing_settings,omitempty"` -} - -func (x *ReceiverConfig) Reset() { - *x = ReceiverConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReceiverConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReceiverConfig) ProtoMessage() {} - -func (x *ReceiverConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_config_proto_msgTypes[3] - 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 ReceiverConfig.ProtoReflect.Descriptor instead. -func (*ReceiverConfig) Descriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{3} -} - -func (x *ReceiverConfig) GetPortList() *net.PortList { - if x != nil { - return x.PortList - } - return nil -} - -func (x *ReceiverConfig) GetListen() *net.IPOrDomain { - if x != nil { - return x.Listen - } - return nil -} - -func (x *ReceiverConfig) GetAllocationStrategy() *AllocationStrategy { - if x != nil { - return x.AllocationStrategy - } - return nil -} - -func (x *ReceiverConfig) GetStreamSettings() *internet.StreamConfig { - if x != nil { - return x.StreamSettings - } - return nil -} - -func (x *ReceiverConfig) GetReceiveOriginalDestination() bool { - if x != nil { - return x.ReceiveOriginalDestination - } - return false -} - -// Deprecated: Marked as deprecated in app/proxyman/config.proto. -func (x *ReceiverConfig) GetDomainOverride() []KnownProtocols { - if x != nil { - return x.DomainOverride - } - return nil -} - -func (x *ReceiverConfig) GetSniffingSettings() *SniffingConfig { - if x != nil { - return x.SniffingSettings - } - return nil -} - -type InboundHandlerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - ReceiverSettings *serial.TypedMessage `protobuf:"bytes,2,opt,name=receiver_settings,json=receiverSettings,proto3" json:"receiver_settings,omitempty"` - ProxySettings *serial.TypedMessage `protobuf:"bytes,3,opt,name=proxy_settings,json=proxySettings,proto3" json:"proxy_settings,omitempty"` -} - -func (x *InboundHandlerConfig) Reset() { - *x = InboundHandlerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_config_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *InboundHandlerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InboundHandlerConfig) ProtoMessage() {} - -func (x *InboundHandlerConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_config_proto_msgTypes[4] - 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 InboundHandlerConfig.ProtoReflect.Descriptor instead. -func (*InboundHandlerConfig) Descriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{4} -} - -func (x *InboundHandlerConfig) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *InboundHandlerConfig) GetReceiverSettings() *serial.TypedMessage { - if x != nil { - return x.ReceiverSettings - } - return nil -} - -func (x *InboundHandlerConfig) GetProxySettings() *serial.TypedMessage { - if x != nil { - return x.ProxySettings - } - return nil -} - -type OutboundConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *OutboundConfig) Reset() { - *x = OutboundConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_config_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OutboundConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OutboundConfig) ProtoMessage() {} - -func (x *OutboundConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_config_proto_msgTypes[5] - 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 OutboundConfig.ProtoReflect.Descriptor instead. -func (*OutboundConfig) Descriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{5} -} - -type SenderConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Send traffic through the given IP. Only IP is allowed. - Via *net.IPOrDomain `protobuf:"bytes,1,opt,name=via,proto3" json:"via,omitempty"` - StreamSettings *internet.StreamConfig `protobuf:"bytes,2,opt,name=stream_settings,json=streamSettings,proto3" json:"stream_settings,omitempty"` - ProxySettings *internet.ProxyConfig `protobuf:"bytes,3,opt,name=proxy_settings,json=proxySettings,proto3" json:"proxy_settings,omitempty"` - MultiplexSettings *MultiplexingConfig `protobuf:"bytes,4,opt,name=multiplex_settings,json=multiplexSettings,proto3" json:"multiplex_settings,omitempty"` - ViaCidr string `protobuf:"bytes,5,opt,name=via_cidr,json=viaCidr,proto3" json:"via_cidr,omitempty"` -} - -func (x *SenderConfig) Reset() { - *x = SenderConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_config_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SenderConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SenderConfig) ProtoMessage() {} - -func (x *SenderConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_config_proto_msgTypes[6] - 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 SenderConfig.ProtoReflect.Descriptor instead. -func (*SenderConfig) Descriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{6} -} - -func (x *SenderConfig) GetVia() *net.IPOrDomain { - if x != nil { - return x.Via - } - return nil -} - -func (x *SenderConfig) GetStreamSettings() *internet.StreamConfig { - if x != nil { - return x.StreamSettings - } - return nil -} - -func (x *SenderConfig) GetProxySettings() *internet.ProxyConfig { - if x != nil { - return x.ProxySettings - } - return nil -} - -func (x *SenderConfig) GetMultiplexSettings() *MultiplexingConfig { - if x != nil { - return x.MultiplexSettings - } - return nil -} - -func (x *SenderConfig) GetViaCidr() string { - if x != nil { - return x.ViaCidr - } - return "" -} - -type MultiplexingConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Whether or not Mux is enabled. - Enabled bool `protobuf:"varint,1,opt,name=enabled,proto3" json:"enabled,omitempty"` - // Max number of concurrent connections that one Mux connection can handle. - Concurrency int32 `protobuf:"varint,2,opt,name=concurrency,proto3" json:"concurrency,omitempty"` - // Transport XUDP in another Mux. - XudpConcurrency int32 `protobuf:"varint,3,opt,name=xudpConcurrency,proto3" json:"xudpConcurrency,omitempty"` - // "reject" (default), "allow" or "skip". - XudpProxyUDP443 string `protobuf:"bytes,4,opt,name=xudpProxyUDP443,proto3" json:"xudpProxyUDP443,omitempty"` -} - -func (x *MultiplexingConfig) Reset() { - *x = MultiplexingConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_config_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiplexingConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiplexingConfig) ProtoMessage() {} - -func (x *MultiplexingConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_config_proto_msgTypes[7] - 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 MultiplexingConfig.ProtoReflect.Descriptor instead. -func (*MultiplexingConfig) Descriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{7} -} - -func (x *MultiplexingConfig) GetEnabled() bool { - if x != nil { - return x.Enabled - } - return false -} - -func (x *MultiplexingConfig) GetConcurrency() int32 { - if x != nil { - return x.Concurrency - } - return 0 -} - -func (x *MultiplexingConfig) GetXudpConcurrency() int32 { - if x != nil { - return x.XudpConcurrency - } - return 0 -} - -func (x *MultiplexingConfig) GetXudpProxyUDP443() string { - if x != nil { - return x.XudpProxyUDP443 - } - return "" -} - -type AllocationStrategy_AllocationStrategyConcurrency struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *AllocationStrategy_AllocationStrategyConcurrency) Reset() { - *x = AllocationStrategy_AllocationStrategyConcurrency{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_config_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AllocationStrategy_AllocationStrategyConcurrency) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AllocationStrategy_AllocationStrategyConcurrency) ProtoMessage() {} - -func (x *AllocationStrategy_AllocationStrategyConcurrency) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_config_proto_msgTypes[8] - 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 AllocationStrategy_AllocationStrategyConcurrency.ProtoReflect.Descriptor instead. -func (*AllocationStrategy_AllocationStrategyConcurrency) Descriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{1, 0} -} - -func (x *AllocationStrategy_AllocationStrategyConcurrency) GetValue() uint32 { - if x != nil { - return x.Value - } - return 0 -} - -type AllocationStrategy_AllocationStrategyRefresh struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *AllocationStrategy_AllocationStrategyRefresh) Reset() { - *x = AllocationStrategy_AllocationStrategyRefresh{} - if protoimpl.UnsafeEnabled { - mi := &file_app_proxyman_config_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AllocationStrategy_AllocationStrategyRefresh) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AllocationStrategy_AllocationStrategyRefresh) ProtoMessage() {} - -func (x *AllocationStrategy_AllocationStrategyRefresh) ProtoReflect() protoreflect.Message { - mi := &file_app_proxyman_config_proto_msgTypes[9] - 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 AllocationStrategy_AllocationStrategyRefresh.ProtoReflect.Descriptor instead. -func (*AllocationStrategy_AllocationStrategyRefresh) Descriptor() ([]byte, []int) { - return file_app_proxyman_config_proto_rawDescGZIP(), []int{1, 1} -} - -func (x *AllocationStrategy_AllocationStrategyRefresh) GetValue() uint32 { - if x != nil { - return x.Value - } - return 0 -} - -var File_app_proxyman_config_proto protoreflect.FileDescriptor - -var file_app_proxyman_config_proto_rawDesc = []byte{ - 0x0a, 0x19, 0x61, 0x70, 0x70, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x1a, 0x18, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, - 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, - 0x1f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x0f, 0x0a, 0x0d, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x22, 0xae, 0x03, 0x0a, 0x12, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, - 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x3e, 0x0a, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x41, 0x6c, - 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x65, 0x0a, 0x0b, 0x63, - 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x43, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, - 0x72, 0x65, 0x6e, 0x63, 0x79, 0x52, 0x0b, 0x63, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x63, 0x79, 0x12, 0x59, 0x0a, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x3f, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x65, 0x66, - 0x72, 0x65, 0x73, 0x68, 0x52, 0x07, 0x72, 0x65, 0x66, 0x72, 0x65, 0x73, 0x68, 0x1a, 0x35, 0x0a, - 0x1d, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x14, - 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x1a, 0x31, 0x0a, 0x19, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x65, 0x66, 0x72, 0x65, 0x73, - 0x68, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x2c, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0a, 0x0a, 0x06, 0x41, 0x6c, 0x77, 0x61, 0x79, 0x73, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x52, - 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x45, 0x78, 0x74, 0x65, 0x72, - 0x6e, 0x61, 0x6c, 0x10, 0x02, 0x22, 0xcc, 0x01, 0x0a, 0x0e, 0x53, 0x6e, 0x69, 0x66, 0x66, 0x69, - 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, - 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x64, 0x12, 0x31, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, - 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, - 0x52, 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x29, 0x0a, 0x10, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, - 0x5f, 0x65, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x45, 0x78, 0x63, 0x6c, 0x75, 0x64, 0x65, 0x64, - 0x12, 0x23, 0x0a, 0x0d, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, 0x61, 0x5f, 0x6f, 0x6e, 0x6c, - 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x6d, 0x65, 0x74, 0x61, 0x64, 0x61, 0x74, - 0x61, 0x4f, 0x6e, 0x6c, 0x79, 0x12, 0x1d, 0x0a, 0x0a, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x5f, 0x6f, - 0x6e, 0x6c, 0x79, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x4f, 0x6e, 0x6c, 0x79, 0x22, 0x8d, 0x04, 0x0a, 0x0e, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x19, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x50, 0x6f, 0x72, - 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, - 0x33, 0x0a, 0x06, 0x6c, 0x69, 0x73, 0x74, 0x65, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, - 0x74, 0x2e, 0x49, 0x50, 0x4f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x06, 0x6c, 0x69, - 0x73, 0x74, 0x65, 0x6e, 0x12, 0x56, 0x0a, 0x13, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x12, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x61, - 0x74, 0x69, 0x6f, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x4e, 0x0a, 0x0f, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x73, 0x74, - 0x72, 0x65, 0x61, 0x6d, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x40, 0x0a, 0x1c, - 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, - 0x5f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x1a, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x4f, 0x72, 0x69, 0x67, 0x69, - 0x6e, 0x61, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4e, - 0x0a, 0x0f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x18, 0x07, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x21, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x4b, 0x6e, 0x6f, 0x77, - 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0e, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x4e, - 0x0a, 0x11, 0x73, 0x6e, 0x69, 0x66, 0x66, 0x69, 0x6e, 0x67, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x53, 0x6e, - 0x69, 0x66, 0x66, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x73, 0x6e, - 0x69, 0x66, 0x66, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x4a, 0x04, - 0x08, 0x06, 0x10, 0x07, 0x22, 0xc0, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, - 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, - 0x4d, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x72, 0x65, - 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x47, - 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, - 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, - 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0x10, 0x0a, 0x0e, 0x4f, 0x75, 0x74, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0xcb, 0x02, 0x0a, 0x0c, 0x53, 0x65, - 0x6e, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2d, 0x0a, 0x03, 0x76, 0x69, - 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4f, 0x72, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x03, 0x76, 0x69, 0x61, 0x12, 0x4e, 0x0a, 0x0f, 0x73, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x53, 0x74, 0x72, - 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0e, 0x73, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x4b, 0x0a, 0x0e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x53, 0x65, - 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x54, 0x0a, 0x12, 0x6d, 0x75, 0x6c, 0x74, 0x69, 0x70, - 0x6c, 0x65, 0x78, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x2e, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x70, 0x6c, 0x65, 0x78, - 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x6d, 0x75, 0x6c, 0x74, 0x69, - 0x70, 0x6c, 0x65, 0x78, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x19, 0x0a, 0x08, - 0x76, 0x69, 0x61, 0x5f, 0x63, 0x69, 0x64, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x76, 0x69, 0x61, 0x43, 0x69, 0x64, 0x72, 0x22, 0xa4, 0x01, 0x0a, 0x12, 0x4d, 0x75, 0x6c, 0x74, - 0x69, 0x70, 0x6c, 0x65, 0x78, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, - 0x0a, 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x6f, 0x6e, 0x63, - 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x63, - 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x78, 0x75, - 0x64, 0x70, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x63, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x0f, 0x78, 0x75, 0x64, 0x70, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, - 0x65, 0x6e, 0x63, 0x79, 0x12, 0x28, 0x0a, 0x0f, 0x78, 0x75, 0x64, 0x70, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x55, 0x44, 0x50, 0x34, 0x34, 0x33, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x78, - 0x75, 0x64, 0x70, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x55, 0x44, 0x50, 0x34, 0x34, 0x33, 0x2a, 0x23, - 0x0a, 0x0e, 0x4b, 0x6e, 0x6f, 0x77, 0x6e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x73, - 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x4c, - 0x53, 0x10, 0x01, 0x42, 0x55, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x50, 0x01, 0x5a, 0x26, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, - 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0xaa, 0x02, 0x11, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, - 0x70, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x6d, 0x61, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_app_proxyman_config_proto_rawDescOnce sync.Once - file_app_proxyman_config_proto_rawDescData = file_app_proxyman_config_proto_rawDesc -) - -func file_app_proxyman_config_proto_rawDescGZIP() []byte { - file_app_proxyman_config_proto_rawDescOnce.Do(func() { - file_app_proxyman_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_proxyman_config_proto_rawDescData) - }) - return file_app_proxyman_config_proto_rawDescData -} - -var file_app_proxyman_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_app_proxyman_config_proto_msgTypes = make([]protoimpl.MessageInfo, 10) -var file_app_proxyman_config_proto_goTypes = []interface{}{ - (KnownProtocols)(0), // 0: xray.app.proxyman.KnownProtocols - (AllocationStrategy_Type)(0), // 1: xray.app.proxyman.AllocationStrategy.Type - (*InboundConfig)(nil), // 2: xray.app.proxyman.InboundConfig - (*AllocationStrategy)(nil), // 3: xray.app.proxyman.AllocationStrategy - (*SniffingConfig)(nil), // 4: xray.app.proxyman.SniffingConfig - (*ReceiverConfig)(nil), // 5: xray.app.proxyman.ReceiverConfig - (*InboundHandlerConfig)(nil), // 6: xray.app.proxyman.InboundHandlerConfig - (*OutboundConfig)(nil), // 7: xray.app.proxyman.OutboundConfig - (*SenderConfig)(nil), // 8: xray.app.proxyman.SenderConfig - (*MultiplexingConfig)(nil), // 9: xray.app.proxyman.MultiplexingConfig - (*AllocationStrategy_AllocationStrategyConcurrency)(nil), // 10: xray.app.proxyman.AllocationStrategy.AllocationStrategyConcurrency - (*AllocationStrategy_AllocationStrategyRefresh)(nil), // 11: xray.app.proxyman.AllocationStrategy.AllocationStrategyRefresh - (*net.PortList)(nil), // 12: xray.common.net.PortList - (*net.IPOrDomain)(nil), // 13: xray.common.net.IPOrDomain - (*internet.StreamConfig)(nil), // 14: xray.transport.internet.StreamConfig - (*serial.TypedMessage)(nil), // 15: xray.common.serial.TypedMessage - (*internet.ProxyConfig)(nil), // 16: xray.transport.internet.ProxyConfig -} -var file_app_proxyman_config_proto_depIdxs = []int32{ - 1, // 0: xray.app.proxyman.AllocationStrategy.type:type_name -> xray.app.proxyman.AllocationStrategy.Type - 10, // 1: xray.app.proxyman.AllocationStrategy.concurrency:type_name -> xray.app.proxyman.AllocationStrategy.AllocationStrategyConcurrency - 11, // 2: xray.app.proxyman.AllocationStrategy.refresh:type_name -> xray.app.proxyman.AllocationStrategy.AllocationStrategyRefresh - 12, // 3: xray.app.proxyman.ReceiverConfig.port_list:type_name -> xray.common.net.PortList - 13, // 4: xray.app.proxyman.ReceiverConfig.listen:type_name -> xray.common.net.IPOrDomain - 3, // 5: xray.app.proxyman.ReceiverConfig.allocation_strategy:type_name -> xray.app.proxyman.AllocationStrategy - 14, // 6: xray.app.proxyman.ReceiverConfig.stream_settings:type_name -> xray.transport.internet.StreamConfig - 0, // 7: xray.app.proxyman.ReceiverConfig.domain_override:type_name -> xray.app.proxyman.KnownProtocols - 4, // 8: xray.app.proxyman.ReceiverConfig.sniffing_settings:type_name -> xray.app.proxyman.SniffingConfig - 15, // 9: xray.app.proxyman.InboundHandlerConfig.receiver_settings:type_name -> xray.common.serial.TypedMessage - 15, // 10: xray.app.proxyman.InboundHandlerConfig.proxy_settings:type_name -> xray.common.serial.TypedMessage - 13, // 11: xray.app.proxyman.SenderConfig.via:type_name -> xray.common.net.IPOrDomain - 14, // 12: xray.app.proxyman.SenderConfig.stream_settings:type_name -> xray.transport.internet.StreamConfig - 16, // 13: xray.app.proxyman.SenderConfig.proxy_settings:type_name -> xray.transport.internet.ProxyConfig - 9, // 14: xray.app.proxyman.SenderConfig.multiplex_settings:type_name -> xray.app.proxyman.MultiplexingConfig - 15, // [15:15] is the sub-list for method output_type - 15, // [15:15] is the sub-list for method input_type - 15, // [15:15] is the sub-list for extension type_name - 15, // [15:15] is the sub-list for extension extendee - 0, // [0:15] is the sub-list for field type_name -} - -func init() { file_app_proxyman_config_proto_init() } -func file_app_proxyman_config_proto_init() { - if File_app_proxyman_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_proxyman_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AllocationStrategy); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SniffingConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReceiverConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundHandlerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SenderConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiplexingConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AllocationStrategy_AllocationStrategyConcurrency); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_proxyman_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AllocationStrategy_AllocationStrategyRefresh); 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_app_proxyman_config_proto_rawDesc, - NumEnums: 2, - NumMessages: 10, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_proxyman_config_proto_goTypes, - DependencyIndexes: file_app_proxyman_config_proto_depIdxs, - EnumInfos: file_app_proxyman_config_proto_enumTypes, - MessageInfos: file_app_proxyman_config_proto_msgTypes, - }.Build() - File_app_proxyman_config_proto = out.File - file_app_proxyman_config_proto_rawDesc = nil - file_app_proxyman_config_proto_goTypes = nil - file_app_proxyman_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/reverse/config.pb.go b/xray_api/proto/app/reverse/config.pb.go deleted file mode 100644 index c7572e2..0000000 --- a/xray_api/proto/app/reverse/config.pb.go +++ /dev/null @@ -1,433 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/reverse/config.proto - -package reverse - -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 Control_State int32 - -const ( - Control_ACTIVE Control_State = 0 - Control_DRAIN Control_State = 1 -) - -// Enum value maps for Control_State. -var ( - Control_State_name = map[int32]string{ - 0: "ACTIVE", - 1: "DRAIN", - } - Control_State_value = map[string]int32{ - "ACTIVE": 0, - "DRAIN": 1, - } -) - -func (x Control_State) Enum() *Control_State { - p := new(Control_State) - *p = x - return p -} - -func (x Control_State) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Control_State) Descriptor() protoreflect.EnumDescriptor { - return file_app_reverse_config_proto_enumTypes[0].Descriptor() -} - -func (Control_State) Type() protoreflect.EnumType { - return &file_app_reverse_config_proto_enumTypes[0] -} - -func (x Control_State) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Control_State.Descriptor instead. -func (Control_State) EnumDescriptor() ([]byte, []int) { - return file_app_reverse_config_proto_rawDescGZIP(), []int{0, 0} -} - -type Control struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - State Control_State `protobuf:"varint,1,opt,name=state,proto3,enum=xray.app.reverse.Control_State" json:"state,omitempty"` - Random []byte `protobuf:"bytes,99,opt,name=random,proto3" json:"random,omitempty"` -} - -func (x *Control) Reset() { - *x = Control{} - if protoimpl.UnsafeEnabled { - mi := &file_app_reverse_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Control) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Control) ProtoMessage() {} - -func (x *Control) ProtoReflect() protoreflect.Message { - mi := &file_app_reverse_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 Control.ProtoReflect.Descriptor instead. -func (*Control) Descriptor() ([]byte, []int) { - return file_app_reverse_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Control) GetState() Control_State { - if x != nil { - return x.State - } - return Control_ACTIVE -} - -func (x *Control) GetRandom() []byte { - if x != nil { - return x.Random - } - return nil -} - -type BridgeConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` -} - -func (x *BridgeConfig) Reset() { - *x = BridgeConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_reverse_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BridgeConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BridgeConfig) ProtoMessage() {} - -func (x *BridgeConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_reverse_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 BridgeConfig.ProtoReflect.Descriptor instead. -func (*BridgeConfig) Descriptor() ([]byte, []int) { - return file_app_reverse_config_proto_rawDescGZIP(), []int{1} -} - -func (x *BridgeConfig) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *BridgeConfig) GetDomain() string { - if x != nil { - return x.Domain - } - return "" -} - -type PortalConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - Domain string `protobuf:"bytes,2,opt,name=domain,proto3" json:"domain,omitempty"` -} - -func (x *PortalConfig) Reset() { - *x = PortalConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_reverse_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PortalConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PortalConfig) ProtoMessage() {} - -func (x *PortalConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_reverse_config_proto_msgTypes[2] - 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 PortalConfig.ProtoReflect.Descriptor instead. -func (*PortalConfig) Descriptor() ([]byte, []int) { - return file_app_reverse_config_proto_rawDescGZIP(), []int{2} -} - -func (x *PortalConfig) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *PortalConfig) GetDomain() string { - if x != nil { - return x.Domain - } - return "" -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BridgeConfig []*BridgeConfig `protobuf:"bytes,1,rep,name=bridge_config,json=bridgeConfig,proto3" json:"bridge_config,omitempty"` - PortalConfig []*PortalConfig `protobuf:"bytes,2,rep,name=portal_config,json=portalConfig,proto3" json:"portal_config,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_reverse_config_proto_msgTypes[3] - 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_app_reverse_config_proto_msgTypes[3] - 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_app_reverse_config_proto_rawDescGZIP(), []int{3} -} - -func (x *Config) GetBridgeConfig() []*BridgeConfig { - if x != nil { - return x.BridgeConfig - } - return nil -} - -func (x *Config) GetPortalConfig() []*PortalConfig { - if x != nil { - return x.PortalConfig - } - return nil -} - -var File_app_reverse_config_proto protoreflect.FileDescriptor - -var file_app_reverse_config_proto_rawDesc = []byte{ - 0x0a, 0x18, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x22, 0x78, 0x0a, 0x07, - 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, 0x6c, 0x12, 0x35, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1f, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x74, 0x72, 0x6f, - 0x6c, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x65, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x65, 0x12, 0x16, - 0x0a, 0x06, 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x18, 0x63, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x06, - 0x72, 0x61, 0x6e, 0x64, 0x6f, 0x6d, 0x22, 0x1e, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x74, 0x65, 0x12, - 0x0a, 0x0a, 0x06, 0x41, 0x43, 0x54, 0x49, 0x56, 0x45, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x44, - 0x52, 0x41, 0x49, 0x4e, 0x10, 0x01, 0x22, 0x38, 0x0a, 0x0c, 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x22, 0x38, 0x0a, 0x0c, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, - 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x92, 0x01, 0x0a, 0x06, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x43, 0x0a, 0x0d, 0x62, 0x72, 0x69, 0x64, 0x67, 0x65, 0x5f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x2e, - 0x42, 0x72, 0x69, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x0c, 0x62, 0x72, - 0x69, 0x64, 0x67, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x43, 0x0a, 0x0d, 0x70, 0x6f, - 0x72, 0x74, 0x61, 0x6c, 0x5f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x65, 0x76, - 0x65, 0x72, 0x73, 0x65, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x0c, 0x70, 0x6f, 0x72, 0x74, 0x61, 0x6c, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, - 0x56, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x50, 0x01, 0x5a, 0x25, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, - 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x65, 0x76, 0x65, 0x72, - 0x73, 0x65, 0xaa, 0x02, 0x12, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x52, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_reverse_config_proto_rawDescOnce sync.Once - file_app_reverse_config_proto_rawDescData = file_app_reverse_config_proto_rawDesc -) - -func file_app_reverse_config_proto_rawDescGZIP() []byte { - file_app_reverse_config_proto_rawDescOnce.Do(func() { - file_app_reverse_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_reverse_config_proto_rawDescData) - }) - return file_app_reverse_config_proto_rawDescData -} - -var file_app_reverse_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_app_reverse_config_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_app_reverse_config_proto_goTypes = []interface{}{ - (Control_State)(0), // 0: xray.app.reverse.Control.State - (*Control)(nil), // 1: xray.app.reverse.Control - (*BridgeConfig)(nil), // 2: xray.app.reverse.BridgeConfig - (*PortalConfig)(nil), // 3: xray.app.reverse.PortalConfig - (*Config)(nil), // 4: xray.app.reverse.Config -} -var file_app_reverse_config_proto_depIdxs = []int32{ - 0, // 0: xray.app.reverse.Control.state:type_name -> xray.app.reverse.Control.State - 2, // 1: xray.app.reverse.Config.bridge_config:type_name -> xray.app.reverse.BridgeConfig - 3, // 2: xray.app.reverse.Config.portal_config:type_name -> xray.app.reverse.PortalConfig - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_app_reverse_config_proto_init() } -func file_app_reverse_config_proto_init() { - if File_app_reverse_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_reverse_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Control); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_reverse_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BridgeConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_reverse_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortalConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_reverse_config_proto_msgTypes[3].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_app_reverse_config_proto_rawDesc, - NumEnums: 1, - NumMessages: 4, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_reverse_config_proto_goTypes, - DependencyIndexes: file_app_reverse_config_proto_depIdxs, - EnumInfos: file_app_reverse_config_proto_enumTypes, - MessageInfos: file_app_reverse_config_proto_msgTypes, - }.Build() - File_app_reverse_config_proto = out.File - file_app_reverse_config_proto_rawDesc = nil - file_app_reverse_config_proto_goTypes = nil - file_app_reverse_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/router/command/command.pb.go b/xray_api/proto/app/router/command/command.pb.go deleted file mode 100644 index d8459a0..0000000 --- a/xray_api/proto/app/router/command/command.pb.go +++ /dev/null @@ -1,1274 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/router/command/command.proto - -package command - -import ( - net "marzban-node/xray_api/proto/common/net" - serial "marzban-node/xray_api/proto/common/serial" - 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) -) - -// RoutingContext is the context with information relative to routing process. -// It conforms to the structure of xray.features.routing.Context and -// xray.features.routing.Route. -type RoutingContext struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InboundTag string `protobuf:"bytes,1,opt,name=InboundTag,proto3" json:"InboundTag,omitempty"` - Network net.Network `protobuf:"varint,2,opt,name=Network,proto3,enum=xray.common.net.Network" json:"Network,omitempty"` - SourceIPs [][]byte `protobuf:"bytes,3,rep,name=SourceIPs,proto3" json:"SourceIPs,omitempty"` - TargetIPs [][]byte `protobuf:"bytes,4,rep,name=TargetIPs,proto3" json:"TargetIPs,omitempty"` - SourcePort uint32 `protobuf:"varint,5,opt,name=SourcePort,proto3" json:"SourcePort,omitempty"` - TargetPort uint32 `protobuf:"varint,6,opt,name=TargetPort,proto3" json:"TargetPort,omitempty"` - TargetDomain string `protobuf:"bytes,7,opt,name=TargetDomain,proto3" json:"TargetDomain,omitempty"` - Protocol string `protobuf:"bytes,8,opt,name=Protocol,proto3" json:"Protocol,omitempty"` - User string `protobuf:"bytes,9,opt,name=User,proto3" json:"User,omitempty"` - Attributes map[string]string `protobuf:"bytes,10,rep,name=Attributes,proto3" json:"Attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - OutboundGroupTags []string `protobuf:"bytes,11,rep,name=OutboundGroupTags,proto3" json:"OutboundGroupTags,omitempty"` - OutboundTag string `protobuf:"bytes,12,opt,name=OutboundTag,proto3" json:"OutboundTag,omitempty"` -} - -func (x *RoutingContext) Reset() { - *x = RoutingContext{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RoutingContext) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RoutingContext) ProtoMessage() {} - -func (x *RoutingContext) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_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 RoutingContext.ProtoReflect.Descriptor instead. -func (*RoutingContext) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{0} -} - -func (x *RoutingContext) GetInboundTag() string { - if x != nil { - return x.InboundTag - } - return "" -} - -func (x *RoutingContext) GetNetwork() net.Network { - if x != nil { - return x.Network - } - return net.Network(0) -} - -func (x *RoutingContext) GetSourceIPs() [][]byte { - if x != nil { - return x.SourceIPs - } - return nil -} - -func (x *RoutingContext) GetTargetIPs() [][]byte { - if x != nil { - return x.TargetIPs - } - return nil -} - -func (x *RoutingContext) GetSourcePort() uint32 { - if x != nil { - return x.SourcePort - } - return 0 -} - -func (x *RoutingContext) GetTargetPort() uint32 { - if x != nil { - return x.TargetPort - } - return 0 -} - -func (x *RoutingContext) GetTargetDomain() string { - if x != nil { - return x.TargetDomain - } - return "" -} - -func (x *RoutingContext) GetProtocol() string { - if x != nil { - return x.Protocol - } - return "" -} - -func (x *RoutingContext) GetUser() string { - if x != nil { - return x.User - } - return "" -} - -func (x *RoutingContext) GetAttributes() map[string]string { - if x != nil { - return x.Attributes - } - return nil -} - -func (x *RoutingContext) GetOutboundGroupTags() []string { - if x != nil { - return x.OutboundGroupTags - } - return nil -} - -func (x *RoutingContext) GetOutboundTag() string { - if x != nil { - return x.OutboundTag - } - return "" -} - -// SubscribeRoutingStatsRequest subscribes to routing statistics channel if -// opened by xray-core. -// * FieldSelectors selects a subset of fields in routing statistics to return. -// Valid selectors: -// - inbound: Selects connection's inbound tag. -// - network: Selects connection's network. -// - ip: Equivalent as "ip_source" and "ip_target", selects both source and -// target IP. -// - port: Equivalent as "port_source" and "port_target", selects both source -// and target port. -// - domain: Selects target domain. -// - protocol: Select connection's protocol. -// - user: Select connection's inbound user email. -// - attributes: Select connection's additional attributes. -// - outbound: Equivalent as "outbound" and "outbound_group", select both -// outbound tag and outbound group tags. -// -// * If FieldSelectors is left empty, all fields will be returned. -type SubscribeRoutingStatsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - FieldSelectors []string `protobuf:"bytes,1,rep,name=FieldSelectors,proto3" json:"FieldSelectors,omitempty"` -} - -func (x *SubscribeRoutingStatsRequest) Reset() { - *x = SubscribeRoutingStatsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SubscribeRoutingStatsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SubscribeRoutingStatsRequest) ProtoMessage() {} - -func (x *SubscribeRoutingStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_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 SubscribeRoutingStatsRequest.ProtoReflect.Descriptor instead. -func (*SubscribeRoutingStatsRequest) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{1} -} - -func (x *SubscribeRoutingStatsRequest) GetFieldSelectors() []string { - if x != nil { - return x.FieldSelectors - } - return nil -} - -// TestRouteRequest manually tests a routing result according to the routing -// context message. -// * RoutingContext is the routing message without outbound information. -// * FieldSelectors selects the fields to return in the routing result. All -// fields are returned if left empty. -// * PublishResult broadcasts the routing result to routing statistics channel -// if set true. -type TestRouteRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RoutingContext *RoutingContext `protobuf:"bytes,1,opt,name=RoutingContext,proto3" json:"RoutingContext,omitempty"` - FieldSelectors []string `protobuf:"bytes,2,rep,name=FieldSelectors,proto3" json:"FieldSelectors,omitempty"` - PublishResult bool `protobuf:"varint,3,opt,name=PublishResult,proto3" json:"PublishResult,omitempty"` -} - -func (x *TestRouteRequest) Reset() { - *x = TestRouteRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TestRouteRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TestRouteRequest) ProtoMessage() {} - -func (x *TestRouteRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[2] - 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 TestRouteRequest.ProtoReflect.Descriptor instead. -func (*TestRouteRequest) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{2} -} - -func (x *TestRouteRequest) GetRoutingContext() *RoutingContext { - if x != nil { - return x.RoutingContext - } - return nil -} - -func (x *TestRouteRequest) GetFieldSelectors() []string { - if x != nil { - return x.FieldSelectors - } - return nil -} - -func (x *TestRouteRequest) GetPublishResult() bool { - if x != nil { - return x.PublishResult - } - return false -} - -type PrincipleTargetInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag []string `protobuf:"bytes,1,rep,name=tag,proto3" json:"tag,omitempty"` -} - -func (x *PrincipleTargetInfo) Reset() { - *x = PrincipleTargetInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PrincipleTargetInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PrincipleTargetInfo) ProtoMessage() {} - -func (x *PrincipleTargetInfo) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[3] - 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 PrincipleTargetInfo.ProtoReflect.Descriptor instead. -func (*PrincipleTargetInfo) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{3} -} - -func (x *PrincipleTargetInfo) GetTag() []string { - if x != nil { - return x.Tag - } - return nil -} - -type OverrideInfo struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` -} - -func (x *OverrideInfo) Reset() { - *x = OverrideInfo{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OverrideInfo) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OverrideInfo) ProtoMessage() {} - -func (x *OverrideInfo) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[4] - 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 OverrideInfo.ProtoReflect.Descriptor instead. -func (*OverrideInfo) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{4} -} - -func (x *OverrideInfo) GetTarget() string { - if x != nil { - return x.Target - } - return "" -} - -type BalancerMsg struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Override *OverrideInfo `protobuf:"bytes,5,opt,name=override,proto3" json:"override,omitempty"` - PrincipleTarget *PrincipleTargetInfo `protobuf:"bytes,6,opt,name=principle_target,json=principleTarget,proto3" json:"principle_target,omitempty"` -} - -func (x *BalancerMsg) Reset() { - *x = BalancerMsg{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BalancerMsg) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BalancerMsg) ProtoMessage() {} - -func (x *BalancerMsg) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[5] - 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 BalancerMsg.ProtoReflect.Descriptor instead. -func (*BalancerMsg) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{5} -} - -func (x *BalancerMsg) GetOverride() *OverrideInfo { - if x != nil { - return x.Override - } - return nil -} - -func (x *BalancerMsg) GetPrincipleTarget() *PrincipleTargetInfo { - if x != nil { - return x.PrincipleTarget - } - return nil -} - -type GetBalancerInfoRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` -} - -func (x *GetBalancerInfoRequest) Reset() { - *x = GetBalancerInfoRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetBalancerInfoRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBalancerInfoRequest) ProtoMessage() {} - -func (x *GetBalancerInfoRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[6] - 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 GetBalancerInfoRequest.ProtoReflect.Descriptor instead. -func (*GetBalancerInfoRequest) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{6} -} - -func (x *GetBalancerInfoRequest) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -type GetBalancerInfoResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Balancer *BalancerMsg `protobuf:"bytes,1,opt,name=balancer,proto3" json:"balancer,omitempty"` -} - -func (x *GetBalancerInfoResponse) Reset() { - *x = GetBalancerInfoResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetBalancerInfoResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetBalancerInfoResponse) ProtoMessage() {} - -func (x *GetBalancerInfoResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[7] - 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 GetBalancerInfoResponse.ProtoReflect.Descriptor instead. -func (*GetBalancerInfoResponse) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{7} -} - -func (x *GetBalancerInfoResponse) GetBalancer() *BalancerMsg { - if x != nil { - return x.Balancer - } - return nil -} - -type OverrideBalancerTargetRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - BalancerTag string `protobuf:"bytes,1,opt,name=balancerTag,proto3" json:"balancerTag,omitempty"` - Target string `protobuf:"bytes,2,opt,name=target,proto3" json:"target,omitempty"` -} - -func (x *OverrideBalancerTargetRequest) Reset() { - *x = OverrideBalancerTargetRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OverrideBalancerTargetRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OverrideBalancerTargetRequest) ProtoMessage() {} - -func (x *OverrideBalancerTargetRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[8] - 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 OverrideBalancerTargetRequest.ProtoReflect.Descriptor instead. -func (*OverrideBalancerTargetRequest) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{8} -} - -func (x *OverrideBalancerTargetRequest) GetBalancerTag() string { - if x != nil { - return x.BalancerTag - } - return "" -} - -func (x *OverrideBalancerTargetRequest) GetTarget() string { - if x != nil { - return x.Target - } - return "" -} - -type OverrideBalancerTargetResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *OverrideBalancerTargetResponse) Reset() { - *x = OverrideBalancerTargetResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OverrideBalancerTargetResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OverrideBalancerTargetResponse) ProtoMessage() {} - -func (x *OverrideBalancerTargetResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[9] - 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 OverrideBalancerTargetResponse.ProtoReflect.Descriptor instead. -func (*OverrideBalancerTargetResponse) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{9} -} - -type AddRuleRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Config *serial.TypedMessage `protobuf:"bytes,1,opt,name=config,proto3" json:"config,omitempty"` - ShouldAppend bool `protobuf:"varint,2,opt,name=shouldAppend,proto3" json:"shouldAppend,omitempty"` -} - -func (x *AddRuleRequest) Reset() { - *x = AddRuleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[10] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddRuleRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddRuleRequest) ProtoMessage() {} - -func (x *AddRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[10] - 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 AddRuleRequest.ProtoReflect.Descriptor instead. -func (*AddRuleRequest) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{10} -} - -func (x *AddRuleRequest) GetConfig() *serial.TypedMessage { - if x != nil { - return x.Config - } - return nil -} - -func (x *AddRuleRequest) GetShouldAppend() bool { - if x != nil { - return x.ShouldAppend - } - return false -} - -type AddRuleResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *AddRuleResponse) Reset() { - *x = AddRuleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *AddRuleResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*AddRuleResponse) ProtoMessage() {} - -func (x *AddRuleResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[11] - 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 AddRuleResponse.ProtoReflect.Descriptor instead. -func (*AddRuleResponse) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{11} -} - -type RemoveRuleRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - RuleTag string `protobuf:"bytes,1,opt,name=ruleTag,proto3" json:"ruleTag,omitempty"` -} - -func (x *RemoveRuleRequest) Reset() { - *x = RemoveRuleRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[12] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveRuleRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveRuleRequest) ProtoMessage() {} - -func (x *RemoveRuleRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[12] - 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 RemoveRuleRequest.ProtoReflect.Descriptor instead. -func (*RemoveRuleRequest) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{12} -} - -func (x *RemoveRuleRequest) GetRuleTag() string { - if x != nil { - return x.RuleTag - } - return "" -} - -type RemoveRuleResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *RemoveRuleResponse) Reset() { - *x = RemoveRuleResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[13] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RemoveRuleResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RemoveRuleResponse) ProtoMessage() {} - -func (x *RemoveRuleResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_router_command_command_proto_msgTypes[13] - 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 RemoveRuleResponse.ProtoReflect.Descriptor instead. -func (*RemoveRuleResponse) Descriptor() ([]byte, []int) { - return file_app_router_command_command_proto_rawDescGZIP(), []int{13} -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_command_command_proto_msgTypes[14] - 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_app_router_command_command_proto_msgTypes[14] - 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_app_router_command_command_proto_rawDescGZIP(), []int{14} -} - -var File_app_router_command_command_proto protoreflect.FileDescriptor - -var file_app_router_command_command_proto_rawDesc = []byte{ - 0x0a, 0x20, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2f, 0x63, 0x6f, 0x6d, - 0x6d, 0x61, 0x6e, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x17, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x1a, 0x18, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, - 0x72, 0x69, 0x61, 0x6c, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x9c, 0x04, 0x0a, 0x0e, 0x52, 0x6f, 0x75, - 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x49, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0a, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x12, 0x32, 0x0a, 0x07, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, - 0x1c, 0x0a, 0x09, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x50, 0x73, 0x18, 0x03, 0x20, 0x03, - 0x28, 0x0c, 0x52, 0x09, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x49, 0x50, 0x73, 0x12, 0x1c, 0x0a, - 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x50, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0c, - 0x52, 0x09, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x50, 0x73, 0x12, 0x1e, 0x0a, 0x0a, 0x53, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x53, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0a, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x22, 0x0a, 0x0c, 0x54, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, - 0x1a, 0x0a, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x08, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x08, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x12, 0x0a, 0x04, 0x55, - 0x73, 0x65, 0x72, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x57, 0x0a, 0x0a, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, - 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x6f, - 0x75, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x2e, 0x41, 0x74, 0x74, - 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x2c, 0x0a, 0x11, 0x4f, 0x75, 0x74, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x72, 0x6f, 0x75, 0x70, 0x54, 0x61, 0x67, 0x73, 0x18, 0x0b, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x11, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x47, 0x72, 0x6f, - 0x75, 0x70, 0x54, 0x61, 0x67, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x54, 0x61, 0x67, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x4f, 0x75, 0x74, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x1a, 0x3d, 0x0a, 0x0f, 0x41, 0x74, 0x74, 0x72, - 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x22, 0x46, 0x0a, 0x1c, 0x53, 0x75, 0x62, 0x73, 0x63, - 0x72, 0x69, 0x62, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, - 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x22, - 0xb1, 0x01, 0x0a, 0x10, 0x54, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x12, 0x4f, 0x0a, 0x0e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x43, - 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x52, 0x0e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, - 0x6e, 0x74, 0x65, 0x78, 0x74, 0x12, 0x26, 0x0a, 0x0e, 0x46, 0x69, 0x65, 0x6c, 0x64, 0x53, 0x65, - 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0e, 0x46, - 0x69, 0x65, 0x6c, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x73, 0x12, 0x24, 0x0a, - 0x0d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, 0x75, 0x6c, 0x74, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x50, 0x75, 0x62, 0x6c, 0x69, 0x73, 0x68, 0x52, 0x65, 0x73, - 0x75, 0x6c, 0x74, 0x22, 0x27, 0x0a, 0x13, 0x50, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x6c, 0x65, - 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, - 0x67, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x26, 0x0a, 0x0c, - 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x16, 0x0a, 0x06, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x22, 0xa9, 0x01, 0x0a, 0x0b, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x72, 0x4d, 0x73, 0x67, 0x12, 0x41, 0x0a, 0x08, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x08, 0x6f, - 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x57, 0x0a, 0x10, 0x70, 0x72, 0x69, 0x6e, 0x63, - 0x69, 0x70, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x50, 0x72, 0x69, 0x6e, - 0x63, 0x69, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x0f, 0x70, 0x72, 0x69, 0x6e, 0x63, 0x69, 0x70, 0x6c, 0x65, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, - 0x22, 0x2a, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, - 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, - 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x22, 0x5b, 0x0a, 0x17, - 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x40, 0x0a, 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, - 0x63, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x4d, 0x73, 0x67, 0x52, - 0x08, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x22, 0x59, 0x0a, 0x1d, 0x4f, 0x76, 0x65, - 0x72, 0x72, 0x69, 0x64, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x54, 0x61, 0x72, - 0x67, 0x65, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x20, 0x0a, 0x0b, 0x62, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x0b, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x54, 0x61, 0x67, 0x12, 0x16, 0x0a, 0x06, - 0x74, 0x61, 0x72, 0x67, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x74, 0x61, - 0x72, 0x67, 0x65, 0x74, 0x22, 0x20, 0x0a, 0x1e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x6e, 0x0a, 0x0e, 0x41, 0x64, 0x64, 0x52, 0x75, 0x6c, - 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x38, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, - 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x22, 0x0a, 0x0c, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, 0x41, 0x70, 0x70, 0x65, - 0x6e, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0c, 0x73, 0x68, 0x6f, 0x75, 0x6c, 0x64, - 0x41, 0x70, 0x70, 0x65, 0x6e, 0x64, 0x22, 0x11, 0x0a, 0x0f, 0x41, 0x64, 0x64, 0x52, 0x75, 0x6c, - 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x2d, 0x0a, 0x11, 0x52, 0x65, 0x6d, - 0x6f, 0x76, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x07, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x67, 0x22, 0x14, 0x0a, 0x12, 0x52, 0x65, 0x6d, 0x6f, - 0x76, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x08, - 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0xbf, 0x05, 0x0a, 0x0e, 0x52, 0x6f, 0x75, - 0x74, 0x69, 0x6e, 0x67, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x7b, 0x0a, 0x15, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x35, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x53, - 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x27, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x67, 0x43, 0x6f, 0x6e, - 0x74, 0x65, 0x78, 0x74, 0x22, 0x00, 0x30, 0x01, 0x12, 0x61, 0x0a, 0x09, 0x54, 0x65, 0x73, 0x74, - 0x52, 0x6f, 0x75, 0x74, 0x65, 0x12, 0x29, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, - 0x54, 0x65, 0x73, 0x74, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x1a, 0x27, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, - 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x69, - 0x6e, 0x67, 0x43, 0x6f, 0x6e, 0x74, 0x65, 0x78, 0x74, 0x22, 0x00, 0x12, 0x76, 0x0a, 0x0f, 0x47, - 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x2f, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, 0x61, - 0x6e, 0x63, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, - 0x30, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x61, 0x6c, - 0x61, 0x6e, 0x63, 0x65, 0x72, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x8b, 0x01, 0x0a, 0x16, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x12, 0x36, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, - 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x37, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, - 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x2e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x65, - 0x72, 0x54, 0x61, 0x72, 0x67, 0x65, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x5e, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x27, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x41, 0x64, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, - 0x41, 0x64, 0x64, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x67, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x75, 0x6c, 0x65, 0x12, - 0x2a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, - 0x52, 0x75, 0x6c, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2b, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x52, 0x75, 0x6c, 0x65, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x67, 0x0a, 0x1b, 0x63, 0x6f, - 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x50, 0x01, 0x5a, 0x2c, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, - 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0xaa, 0x02, 0x17, 0x58, 0x72, 0x61, 0x79, - 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_router_command_command_proto_rawDescOnce sync.Once - file_app_router_command_command_proto_rawDescData = file_app_router_command_command_proto_rawDesc -) - -func file_app_router_command_command_proto_rawDescGZIP() []byte { - file_app_router_command_command_proto_rawDescOnce.Do(func() { - file_app_router_command_command_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_router_command_command_proto_rawDescData) - }) - return file_app_router_command_command_proto_rawDescData -} - -var file_app_router_command_command_proto_msgTypes = make([]protoimpl.MessageInfo, 16) -var file_app_router_command_command_proto_goTypes = []interface{}{ - (*RoutingContext)(nil), // 0: xray.app.router.command.RoutingContext - (*SubscribeRoutingStatsRequest)(nil), // 1: xray.app.router.command.SubscribeRoutingStatsRequest - (*TestRouteRequest)(nil), // 2: xray.app.router.command.TestRouteRequest - (*PrincipleTargetInfo)(nil), // 3: xray.app.router.command.PrincipleTargetInfo - (*OverrideInfo)(nil), // 4: xray.app.router.command.OverrideInfo - (*BalancerMsg)(nil), // 5: xray.app.router.command.BalancerMsg - (*GetBalancerInfoRequest)(nil), // 6: xray.app.router.command.GetBalancerInfoRequest - (*GetBalancerInfoResponse)(nil), // 7: xray.app.router.command.GetBalancerInfoResponse - (*OverrideBalancerTargetRequest)(nil), // 8: xray.app.router.command.OverrideBalancerTargetRequest - (*OverrideBalancerTargetResponse)(nil), // 9: xray.app.router.command.OverrideBalancerTargetResponse - (*AddRuleRequest)(nil), // 10: xray.app.router.command.AddRuleRequest - (*AddRuleResponse)(nil), // 11: xray.app.router.command.AddRuleResponse - (*RemoveRuleRequest)(nil), // 12: xray.app.router.command.RemoveRuleRequest - (*RemoveRuleResponse)(nil), // 13: xray.app.router.command.RemoveRuleResponse - (*Config)(nil), // 14: xray.app.router.command.Config - nil, // 15: xray.app.router.command.RoutingContext.AttributesEntry - (net.Network)(0), // 16: xray.common.net.Network - (*serial.TypedMessage)(nil), // 17: xray.common.serial.TypedMessage -} -var file_app_router_command_command_proto_depIdxs = []int32{ - 16, // 0: xray.app.router.command.RoutingContext.Network:type_name -> xray.common.net.Network - 15, // 1: xray.app.router.command.RoutingContext.Attributes:type_name -> xray.app.router.command.RoutingContext.AttributesEntry - 0, // 2: xray.app.router.command.TestRouteRequest.RoutingContext:type_name -> xray.app.router.command.RoutingContext - 4, // 3: xray.app.router.command.BalancerMsg.override:type_name -> xray.app.router.command.OverrideInfo - 3, // 4: xray.app.router.command.BalancerMsg.principle_target:type_name -> xray.app.router.command.PrincipleTargetInfo - 5, // 5: xray.app.router.command.GetBalancerInfoResponse.balancer:type_name -> xray.app.router.command.BalancerMsg - 17, // 6: xray.app.router.command.AddRuleRequest.config:type_name -> xray.common.serial.TypedMessage - 1, // 7: xray.app.router.command.RoutingService.SubscribeRoutingStats:input_type -> xray.app.router.command.SubscribeRoutingStatsRequest - 2, // 8: xray.app.router.command.RoutingService.TestRoute:input_type -> xray.app.router.command.TestRouteRequest - 6, // 9: xray.app.router.command.RoutingService.GetBalancerInfo:input_type -> xray.app.router.command.GetBalancerInfoRequest - 8, // 10: xray.app.router.command.RoutingService.OverrideBalancerTarget:input_type -> xray.app.router.command.OverrideBalancerTargetRequest - 10, // 11: xray.app.router.command.RoutingService.AddRule:input_type -> xray.app.router.command.AddRuleRequest - 12, // 12: xray.app.router.command.RoutingService.RemoveRule:input_type -> xray.app.router.command.RemoveRuleRequest - 0, // 13: xray.app.router.command.RoutingService.SubscribeRoutingStats:output_type -> xray.app.router.command.RoutingContext - 0, // 14: xray.app.router.command.RoutingService.TestRoute:output_type -> xray.app.router.command.RoutingContext - 7, // 15: xray.app.router.command.RoutingService.GetBalancerInfo:output_type -> xray.app.router.command.GetBalancerInfoResponse - 9, // 16: xray.app.router.command.RoutingService.OverrideBalancerTarget:output_type -> xray.app.router.command.OverrideBalancerTargetResponse - 11, // 17: xray.app.router.command.RoutingService.AddRule:output_type -> xray.app.router.command.AddRuleResponse - 13, // 18: xray.app.router.command.RoutingService.RemoveRule:output_type -> xray.app.router.command.RemoveRuleResponse - 13, // [13:19] is the sub-list for method output_type - 7, // [7:13] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name -} - -func init() { file_app_router_command_command_proto_init() } -func file_app_router_command_command_proto_init() { - if File_app_router_command_command_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_router_command_command_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoutingContext); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SubscribeRoutingStatsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TestRouteRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PrincipleTargetInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OverrideInfo); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BalancerMsg); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBalancerInfoRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetBalancerInfoResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OverrideBalancerTargetRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OverrideBalancerTargetResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[10].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddRuleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*AddRuleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[12].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveRuleRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[13].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RemoveRuleResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_command_command_proto_msgTypes[14].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_app_router_command_command_proto_rawDesc, - NumEnums: 0, - NumMessages: 16, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_app_router_command_command_proto_goTypes, - DependencyIndexes: file_app_router_command_command_proto_depIdxs, - MessageInfos: file_app_router_command_command_proto_msgTypes, - }.Build() - File_app_router_command_command_proto = out.File - file_app_router_command_command_proto_rawDesc = nil - file_app_router_command_command_proto_goTypes = nil - file_app_router_command_command_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/router/command/command_grpc.pb.go b/xray_api/proto/app/router/command/command_grpc.pb.go deleted file mode 100644 index 157fd57..0000000 --- a/xray_api/proto/app/router/command/command_grpc.pb.go +++ /dev/null @@ -1,322 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v5.27.0 -// source: app/router/command/command.proto - -package command - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - RoutingService_SubscribeRoutingStats_FullMethodName = "/xray.app.router.command.RoutingService/SubscribeRoutingStats" - RoutingService_TestRoute_FullMethodName = "/xray.app.router.command.RoutingService/TestRoute" - RoutingService_GetBalancerInfo_FullMethodName = "/xray.app.router.command.RoutingService/GetBalancerInfo" - RoutingService_OverrideBalancerTarget_FullMethodName = "/xray.app.router.command.RoutingService/OverrideBalancerTarget" - RoutingService_AddRule_FullMethodName = "/xray.app.router.command.RoutingService/AddRule" - RoutingService_RemoveRule_FullMethodName = "/xray.app.router.command.RoutingService/RemoveRule" -) - -// RoutingServiceClient is the client API for RoutingService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type RoutingServiceClient interface { - SubscribeRoutingStats(ctx context.Context, in *SubscribeRoutingStatsRequest, opts ...grpc.CallOption) (RoutingService_SubscribeRoutingStatsClient, error) - TestRoute(ctx context.Context, in *TestRouteRequest, opts ...grpc.CallOption) (*RoutingContext, error) - GetBalancerInfo(ctx context.Context, in *GetBalancerInfoRequest, opts ...grpc.CallOption) (*GetBalancerInfoResponse, error) - OverrideBalancerTarget(ctx context.Context, in *OverrideBalancerTargetRequest, opts ...grpc.CallOption) (*OverrideBalancerTargetResponse, error) - AddRule(ctx context.Context, in *AddRuleRequest, opts ...grpc.CallOption) (*AddRuleResponse, error) - RemoveRule(ctx context.Context, in *RemoveRuleRequest, opts ...grpc.CallOption) (*RemoveRuleResponse, error) -} - -type routingServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewRoutingServiceClient(cc grpc.ClientConnInterface) RoutingServiceClient { - return &routingServiceClient{cc} -} - -func (c *routingServiceClient) SubscribeRoutingStats(ctx context.Context, in *SubscribeRoutingStatsRequest, opts ...grpc.CallOption) (RoutingService_SubscribeRoutingStatsClient, error) { - stream, err := c.cc.NewStream(ctx, &RoutingService_ServiceDesc.Streams[0], RoutingService_SubscribeRoutingStats_FullMethodName, opts...) - if err != nil { - return nil, err - } - x := &routingServiceSubscribeRoutingStatsClient{stream} - if err := x.ClientStream.SendMsg(in); err != nil { - return nil, err - } - if err := x.ClientStream.CloseSend(); err != nil { - return nil, err - } - return x, nil -} - -type RoutingService_SubscribeRoutingStatsClient interface { - Recv() (*RoutingContext, error) - grpc.ClientStream -} - -type routingServiceSubscribeRoutingStatsClient struct { - grpc.ClientStream -} - -func (x *routingServiceSubscribeRoutingStatsClient) Recv() (*RoutingContext, error) { - m := new(RoutingContext) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *routingServiceClient) TestRoute(ctx context.Context, in *TestRouteRequest, opts ...grpc.CallOption) (*RoutingContext, error) { - out := new(RoutingContext) - err := c.cc.Invoke(ctx, RoutingService_TestRoute_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *routingServiceClient) GetBalancerInfo(ctx context.Context, in *GetBalancerInfoRequest, opts ...grpc.CallOption) (*GetBalancerInfoResponse, error) { - out := new(GetBalancerInfoResponse) - err := c.cc.Invoke(ctx, RoutingService_GetBalancerInfo_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *routingServiceClient) OverrideBalancerTarget(ctx context.Context, in *OverrideBalancerTargetRequest, opts ...grpc.CallOption) (*OverrideBalancerTargetResponse, error) { - out := new(OverrideBalancerTargetResponse) - err := c.cc.Invoke(ctx, RoutingService_OverrideBalancerTarget_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *routingServiceClient) AddRule(ctx context.Context, in *AddRuleRequest, opts ...grpc.CallOption) (*AddRuleResponse, error) { - out := new(AddRuleResponse) - err := c.cc.Invoke(ctx, RoutingService_AddRule_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *routingServiceClient) RemoveRule(ctx context.Context, in *RemoveRuleRequest, opts ...grpc.CallOption) (*RemoveRuleResponse, error) { - out := new(RemoveRuleResponse) - err := c.cc.Invoke(ctx, RoutingService_RemoveRule_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// RoutingServiceServer is the server API for RoutingService service. -// All implementations must embed UnimplementedRoutingServiceServer -// for forward compatibility -type RoutingServiceServer interface { - SubscribeRoutingStats(*SubscribeRoutingStatsRequest, RoutingService_SubscribeRoutingStatsServer) error - TestRoute(context.Context, *TestRouteRequest) (*RoutingContext, error) - GetBalancerInfo(context.Context, *GetBalancerInfoRequest) (*GetBalancerInfoResponse, error) - OverrideBalancerTarget(context.Context, *OverrideBalancerTargetRequest) (*OverrideBalancerTargetResponse, error) - AddRule(context.Context, *AddRuleRequest) (*AddRuleResponse, error) - RemoveRule(context.Context, *RemoveRuleRequest) (*RemoveRuleResponse, error) - mustEmbedUnimplementedRoutingServiceServer() -} - -// UnimplementedRoutingServiceServer must be embedded to have forward compatible implementations. -type UnimplementedRoutingServiceServer struct { -} - -func (UnimplementedRoutingServiceServer) SubscribeRoutingStats(*SubscribeRoutingStatsRequest, RoutingService_SubscribeRoutingStatsServer) error { - return status.Errorf(codes.Unimplemented, "method SubscribeRoutingStats not implemented") -} -func (UnimplementedRoutingServiceServer) TestRoute(context.Context, *TestRouteRequest) (*RoutingContext, error) { - return nil, status.Errorf(codes.Unimplemented, "method TestRoute not implemented") -} -func (UnimplementedRoutingServiceServer) GetBalancerInfo(context.Context, *GetBalancerInfoRequest) (*GetBalancerInfoResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetBalancerInfo not implemented") -} -func (UnimplementedRoutingServiceServer) OverrideBalancerTarget(context.Context, *OverrideBalancerTargetRequest) (*OverrideBalancerTargetResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method OverrideBalancerTarget not implemented") -} -func (UnimplementedRoutingServiceServer) AddRule(context.Context, *AddRuleRequest) (*AddRuleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddRule not implemented") -} -func (UnimplementedRoutingServiceServer) RemoveRule(context.Context, *RemoveRuleRequest) (*RemoveRuleResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveRule not implemented") -} -func (UnimplementedRoutingServiceServer) mustEmbedUnimplementedRoutingServiceServer() {} - -// UnsafeRoutingServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to RoutingServiceServer will -// result in compilation errors. -type UnsafeRoutingServiceServer interface { - mustEmbedUnimplementedRoutingServiceServer() -} - -func RegisterRoutingServiceServer(s grpc.ServiceRegistrar, srv RoutingServiceServer) { - s.RegisterService(&RoutingService_ServiceDesc, srv) -} - -func _RoutingService_SubscribeRoutingStats_Handler(srv interface{}, stream grpc.ServerStream) error { - m := new(SubscribeRoutingStatsRequest) - if err := stream.RecvMsg(m); err != nil { - return err - } - return srv.(RoutingServiceServer).SubscribeRoutingStats(m, &routingServiceSubscribeRoutingStatsServer{stream}) -} - -type RoutingService_SubscribeRoutingStatsServer interface { - Send(*RoutingContext) error - grpc.ServerStream -} - -type routingServiceSubscribeRoutingStatsServer struct { - grpc.ServerStream -} - -func (x *routingServiceSubscribeRoutingStatsServer) Send(m *RoutingContext) error { - return x.ServerStream.SendMsg(m) -} - -func _RoutingService_TestRoute_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(TestRouteRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RoutingServiceServer).TestRoute(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: RoutingService_TestRoute_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RoutingServiceServer).TestRoute(ctx, req.(*TestRouteRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RoutingService_GetBalancerInfo_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetBalancerInfoRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RoutingServiceServer).GetBalancerInfo(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: RoutingService_GetBalancerInfo_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RoutingServiceServer).GetBalancerInfo(ctx, req.(*GetBalancerInfoRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RoutingService_OverrideBalancerTarget_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(OverrideBalancerTargetRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RoutingServiceServer).OverrideBalancerTarget(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: RoutingService_OverrideBalancerTarget_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RoutingServiceServer).OverrideBalancerTarget(ctx, req.(*OverrideBalancerTargetRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RoutingService_AddRule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(AddRuleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RoutingServiceServer).AddRule(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: RoutingService_AddRule_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RoutingServiceServer).AddRule(ctx, req.(*AddRuleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _RoutingService_RemoveRule_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(RemoveRuleRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(RoutingServiceServer).RemoveRule(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: RoutingService_RemoveRule_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(RoutingServiceServer).RemoveRule(ctx, req.(*RemoveRuleRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// RoutingService_ServiceDesc is the grpc.ServiceDesc for RoutingService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var RoutingService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "xray.app.router.command.RoutingService", - HandlerType: (*RoutingServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "TestRoute", - Handler: _RoutingService_TestRoute_Handler, - }, - { - MethodName: "GetBalancerInfo", - Handler: _RoutingService_GetBalancerInfo_Handler, - }, - { - MethodName: "OverrideBalancerTarget", - Handler: _RoutingService_OverrideBalancerTarget_Handler, - }, - { - MethodName: "AddRule", - Handler: _RoutingService_AddRule_Handler, - }, - { - MethodName: "RemoveRule", - Handler: _RoutingService_RemoveRule_Handler, - }, - }, - Streams: []grpc.StreamDesc{ - { - StreamName: "SubscribeRoutingStats", - Handler: _RoutingService_SubscribeRoutingStats_Handler, - ServerStreams: true, - }, - }, - Metadata: "app/router/command/command.proto", -} diff --git a/xray_api/proto/app/router/config.pb.go b/xray_api/proto/app/router/config.pb.go deleted file mode 100644 index 4635545..0000000 --- a/xray_api/proto/app/router/config.pb.go +++ /dev/null @@ -1,1508 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/router/config.proto - -package router - -import ( - net "marzban-node/xray_api/proto/common/net" - serial "marzban-node/xray_api/proto/common/serial" - 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 of domain value. -type Domain_Type int32 - -const ( - // The value is used as is. - Domain_Plain Domain_Type = 0 - // The value is used as a regular expression. - Domain_Regex Domain_Type = 1 - // The value is a root domain. - Domain_Domain Domain_Type = 2 - // The value is a domain. - Domain_Full Domain_Type = 3 -) - -// Enum value maps for Domain_Type. -var ( - Domain_Type_name = map[int32]string{ - 0: "Plain", - 1: "Regex", - 2: "Domain", - 3: "Full", - } - Domain_Type_value = map[string]int32{ - "Plain": 0, - "Regex": 1, - "Domain": 2, - "Full": 3, - } -) - -func (x Domain_Type) Enum() *Domain_Type { - p := new(Domain_Type) - *p = x - return p -} - -func (x Domain_Type) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Domain_Type) Descriptor() protoreflect.EnumDescriptor { - return file_app_router_config_proto_enumTypes[0].Descriptor() -} - -func (Domain_Type) Type() protoreflect.EnumType { - return &file_app_router_config_proto_enumTypes[0] -} - -func (x Domain_Type) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Domain_Type.Descriptor instead. -func (Domain_Type) EnumDescriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{0, 0} -} - -type Config_DomainStrategy int32 - -const ( - // Use domain as is. - Config_AsIs Config_DomainStrategy = 0 - // Always resolve IP for domains. - Config_UseIp Config_DomainStrategy = 1 - // Resolve to IP if the domain doesn't match any rules. - Config_IpIfNonMatch Config_DomainStrategy = 2 - // Resolve to IP if any rule requires IP matching. - Config_IpOnDemand Config_DomainStrategy = 3 -) - -// Enum value maps for Config_DomainStrategy. -var ( - Config_DomainStrategy_name = map[int32]string{ - 0: "AsIs", - 1: "UseIp", - 2: "IpIfNonMatch", - 3: "IpOnDemand", - } - Config_DomainStrategy_value = map[string]int32{ - "AsIs": 0, - "UseIp": 1, - "IpIfNonMatch": 2, - "IpOnDemand": 3, - } -) - -func (x Config_DomainStrategy) Enum() *Config_DomainStrategy { - p := new(Config_DomainStrategy) - *p = x - return p -} - -func (x Config_DomainStrategy) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Config_DomainStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_app_router_config_proto_enumTypes[1].Descriptor() -} - -func (Config_DomainStrategy) Type() protoreflect.EnumType { - return &file_app_router_config_proto_enumTypes[1] -} - -func (x Config_DomainStrategy) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Config_DomainStrategy.Descriptor instead. -func (Config_DomainStrategy) EnumDescriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{10, 0} -} - -// Domain for routing decision. -type Domain struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Domain matching type. - Type Domain_Type `protobuf:"varint,1,opt,name=type,proto3,enum=xray.app.router.Domain_Type" json:"type,omitempty"` - // Domain value. - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` - // Attributes of this domain. May be used for filtering. - Attribute []*Domain_Attribute `protobuf:"bytes,3,rep,name=attribute,proto3" json:"attribute,omitempty"` -} - -func (x *Domain) Reset() { - *x = Domain{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Domain) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Domain) ProtoMessage() {} - -func (x *Domain) ProtoReflect() protoreflect.Message { - mi := &file_app_router_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 Domain.ProtoReflect.Descriptor instead. -func (*Domain) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Domain) GetType() Domain_Type { - if x != nil { - return x.Type - } - return Domain_Plain -} - -func (x *Domain) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -func (x *Domain) GetAttribute() []*Domain_Attribute { - if x != nil { - return x.Attribute - } - return nil -} - -// IP for routing decision, in CIDR form. -type CIDR struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // IP address, should be either 4 or 16 bytes. - Ip []byte `protobuf:"bytes,1,opt,name=ip,proto3" json:"ip,omitempty"` - // Number of leading ones in the network mask. - Prefix uint32 `protobuf:"varint,2,opt,name=prefix,proto3" json:"prefix,omitempty"` -} - -func (x *CIDR) Reset() { - *x = CIDR{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *CIDR) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*CIDR) ProtoMessage() {} - -func (x *CIDR) ProtoReflect() protoreflect.Message { - mi := &file_app_router_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 CIDR.ProtoReflect.Descriptor instead. -func (*CIDR) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{1} -} - -func (x *CIDR) GetIp() []byte { - if x != nil { - return x.Ip - } - return nil -} - -func (x *CIDR) GetPrefix() uint32 { - if x != nil { - return x.Prefix - } - return 0 -} - -type GeoIP struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CountryCode string `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` - Cidr []*CIDR `protobuf:"bytes,2,rep,name=cidr,proto3" json:"cidr,omitempty"` - ReverseMatch bool `protobuf:"varint,3,opt,name=reverse_match,json=reverseMatch,proto3" json:"reverse_match,omitempty"` -} - -func (x *GeoIP) Reset() { - *x = GeoIP{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GeoIP) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GeoIP) ProtoMessage() {} - -func (x *GeoIP) ProtoReflect() protoreflect.Message { - mi := &file_app_router_config_proto_msgTypes[2] - 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 GeoIP.ProtoReflect.Descriptor instead. -func (*GeoIP) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{2} -} - -func (x *GeoIP) GetCountryCode() string { - if x != nil { - return x.CountryCode - } - return "" -} - -func (x *GeoIP) GetCidr() []*CIDR { - if x != nil { - return x.Cidr - } - return nil -} - -func (x *GeoIP) GetReverseMatch() bool { - if x != nil { - return x.ReverseMatch - } - return false -} - -type GeoIPList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Entry []*GeoIP `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"` -} - -func (x *GeoIPList) Reset() { - *x = GeoIPList{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GeoIPList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GeoIPList) ProtoMessage() {} - -func (x *GeoIPList) ProtoReflect() protoreflect.Message { - mi := &file_app_router_config_proto_msgTypes[3] - 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 GeoIPList.ProtoReflect.Descriptor instead. -func (*GeoIPList) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{3} -} - -func (x *GeoIPList) GetEntry() []*GeoIP { - if x != nil { - return x.Entry - } - return nil -} - -type GeoSite struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - CountryCode string `protobuf:"bytes,1,opt,name=country_code,json=countryCode,proto3" json:"country_code,omitempty"` - Domain []*Domain `protobuf:"bytes,2,rep,name=domain,proto3" json:"domain,omitempty"` -} - -func (x *GeoSite) Reset() { - *x = GeoSite{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GeoSite) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GeoSite) ProtoMessage() {} - -func (x *GeoSite) ProtoReflect() protoreflect.Message { - mi := &file_app_router_config_proto_msgTypes[4] - 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 GeoSite.ProtoReflect.Descriptor instead. -func (*GeoSite) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{4} -} - -func (x *GeoSite) GetCountryCode() string { - if x != nil { - return x.CountryCode - } - return "" -} - -func (x *GeoSite) GetDomain() []*Domain { - if x != nil { - return x.Domain - } - return nil -} - -type GeoSiteList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Entry []*GeoSite `protobuf:"bytes,1,rep,name=entry,proto3" json:"entry,omitempty"` -} - -func (x *GeoSiteList) Reset() { - *x = GeoSiteList{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GeoSiteList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GeoSiteList) ProtoMessage() {} - -func (x *GeoSiteList) ProtoReflect() protoreflect.Message { - mi := &file_app_router_config_proto_msgTypes[5] - 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 GeoSiteList.ProtoReflect.Descriptor instead. -func (*GeoSiteList) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{5} -} - -func (x *GeoSiteList) GetEntry() []*GeoSite { - if x != nil { - return x.Entry - } - return nil -} - -type RoutingRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to TargetTag: - // - // *RoutingRule_Tag - // *RoutingRule_BalancingTag - TargetTag isRoutingRule_TargetTag `protobuf_oneof:"target_tag"` - RuleTag string `protobuf:"bytes,18,opt,name=rule_tag,json=ruleTag,proto3" json:"rule_tag,omitempty"` - // List of domains for target domain matching. - Domain []*Domain `protobuf:"bytes,2,rep,name=domain,proto3" json:"domain,omitempty"` - // List of CIDRs for target IP address matching. - // Deprecated. Use geoip below. - // - // Deprecated: Marked as deprecated in app/router/config.proto. - Cidr []*CIDR `protobuf:"bytes,3,rep,name=cidr,proto3" json:"cidr,omitempty"` - // List of GeoIPs for target IP address matching. If this entry exists, the - // cidr above will have no effect. GeoIP fields with the same country code are - // supposed to contain exactly same content. They will be merged during - // runtime. For customized GeoIPs, please leave country code empty. - Geoip []*GeoIP `protobuf:"bytes,10,rep,name=geoip,proto3" json:"geoip,omitempty"` - // A range of port [from, to]. If the destination port is in this range, this - // rule takes effect. Deprecated. Use port_list. - // - // Deprecated: Marked as deprecated in app/router/config.proto. - PortRange *net.PortRange `protobuf:"bytes,4,opt,name=port_range,json=portRange,proto3" json:"port_range,omitempty"` - // List of ports. - PortList *net.PortList `protobuf:"bytes,14,opt,name=port_list,json=portList,proto3" json:"port_list,omitempty"` - // List of networks. Deprecated. Use networks. - // - // Deprecated: Marked as deprecated in app/router/config.proto. - NetworkList *net.NetworkList `protobuf:"bytes,5,opt,name=network_list,json=networkList,proto3" json:"network_list,omitempty"` - // List of networks for matching. - Networks []net.Network `protobuf:"varint,13,rep,packed,name=networks,proto3,enum=xray.common.net.Network" json:"networks,omitempty"` - // List of CIDRs for source IP address matching. - // - // Deprecated: Marked as deprecated in app/router/config.proto. - SourceCidr []*CIDR `protobuf:"bytes,6,rep,name=source_cidr,json=sourceCidr,proto3" json:"source_cidr,omitempty"` - // List of GeoIPs for source IP address matching. If this entry exists, the - // source_cidr above will have no effect. - SourceGeoip []*GeoIP `protobuf:"bytes,11,rep,name=source_geoip,json=sourceGeoip,proto3" json:"source_geoip,omitempty"` - // List of ports for source port matching. - SourcePortList *net.PortList `protobuf:"bytes,16,opt,name=source_port_list,json=sourcePortList,proto3" json:"source_port_list,omitempty"` - UserEmail []string `protobuf:"bytes,7,rep,name=user_email,json=userEmail,proto3" json:"user_email,omitempty"` - InboundTag []string `protobuf:"bytes,8,rep,name=inbound_tag,json=inboundTag,proto3" json:"inbound_tag,omitempty"` - Protocol []string `protobuf:"bytes,9,rep,name=protocol,proto3" json:"protocol,omitempty"` - Attributes map[string]string `protobuf:"bytes,15,rep,name=attributes,proto3" json:"attributes,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - DomainMatcher string `protobuf:"bytes,17,opt,name=domain_matcher,json=domainMatcher,proto3" json:"domain_matcher,omitempty"` -} - -func (x *RoutingRule) Reset() { - *x = RoutingRule{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RoutingRule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RoutingRule) ProtoMessage() {} - -func (x *RoutingRule) ProtoReflect() protoreflect.Message { - mi := &file_app_router_config_proto_msgTypes[6] - 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 RoutingRule.ProtoReflect.Descriptor instead. -func (*RoutingRule) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{6} -} - -func (m *RoutingRule) GetTargetTag() isRoutingRule_TargetTag { - if m != nil { - return m.TargetTag - } - return nil -} - -func (x *RoutingRule) GetTag() string { - if x, ok := x.GetTargetTag().(*RoutingRule_Tag); ok { - return x.Tag - } - return "" -} - -func (x *RoutingRule) GetBalancingTag() string { - if x, ok := x.GetTargetTag().(*RoutingRule_BalancingTag); ok { - return x.BalancingTag - } - return "" -} - -func (x *RoutingRule) GetRuleTag() string { - if x != nil { - return x.RuleTag - } - return "" -} - -func (x *RoutingRule) GetDomain() []*Domain { - if x != nil { - return x.Domain - } - return nil -} - -// Deprecated: Marked as deprecated in app/router/config.proto. -func (x *RoutingRule) GetCidr() []*CIDR { - if x != nil { - return x.Cidr - } - return nil -} - -func (x *RoutingRule) GetGeoip() []*GeoIP { - if x != nil { - return x.Geoip - } - return nil -} - -// Deprecated: Marked as deprecated in app/router/config.proto. -func (x *RoutingRule) GetPortRange() *net.PortRange { - if x != nil { - return x.PortRange - } - return nil -} - -func (x *RoutingRule) GetPortList() *net.PortList { - if x != nil { - return x.PortList - } - return nil -} - -// Deprecated: Marked as deprecated in app/router/config.proto. -func (x *RoutingRule) GetNetworkList() *net.NetworkList { - if x != nil { - return x.NetworkList - } - return nil -} - -func (x *RoutingRule) GetNetworks() []net.Network { - if x != nil { - return x.Networks - } - return nil -} - -// Deprecated: Marked as deprecated in app/router/config.proto. -func (x *RoutingRule) GetSourceCidr() []*CIDR { - if x != nil { - return x.SourceCidr - } - return nil -} - -func (x *RoutingRule) GetSourceGeoip() []*GeoIP { - if x != nil { - return x.SourceGeoip - } - return nil -} - -func (x *RoutingRule) GetSourcePortList() *net.PortList { - if x != nil { - return x.SourcePortList - } - return nil -} - -func (x *RoutingRule) GetUserEmail() []string { - if x != nil { - return x.UserEmail - } - return nil -} - -func (x *RoutingRule) GetInboundTag() []string { - if x != nil { - return x.InboundTag - } - return nil -} - -func (x *RoutingRule) GetProtocol() []string { - if x != nil { - return x.Protocol - } - return nil -} - -func (x *RoutingRule) GetAttributes() map[string]string { - if x != nil { - return x.Attributes - } - return nil -} - -func (x *RoutingRule) GetDomainMatcher() string { - if x != nil { - return x.DomainMatcher - } - return "" -} - -type isRoutingRule_TargetTag interface { - isRoutingRule_TargetTag() -} - -type RoutingRule_Tag struct { - // Tag of outbound that this rule is pointing to. - Tag string `protobuf:"bytes,1,opt,name=tag,proto3,oneof"` -} - -type RoutingRule_BalancingTag struct { - // Tag of routing balancer. - BalancingTag string `protobuf:"bytes,12,opt,name=balancing_tag,json=balancingTag,proto3,oneof"` -} - -func (*RoutingRule_Tag) isRoutingRule_TargetTag() {} - -func (*RoutingRule_BalancingTag) isRoutingRule_TargetTag() {} - -type BalancingRule struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - OutboundSelector []string `protobuf:"bytes,2,rep,name=outbound_selector,json=outboundSelector,proto3" json:"outbound_selector,omitempty"` - Strategy string `protobuf:"bytes,3,opt,name=strategy,proto3" json:"strategy,omitempty"` - StrategySettings *serial.TypedMessage `protobuf:"bytes,4,opt,name=strategy_settings,json=strategySettings,proto3" json:"strategy_settings,omitempty"` - FallbackTag string `protobuf:"bytes,5,opt,name=fallback_tag,json=fallbackTag,proto3" json:"fallback_tag,omitempty"` -} - -func (x *BalancingRule) Reset() { - *x = BalancingRule{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *BalancingRule) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*BalancingRule) ProtoMessage() {} - -func (x *BalancingRule) ProtoReflect() protoreflect.Message { - mi := &file_app_router_config_proto_msgTypes[7] - 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 BalancingRule.ProtoReflect.Descriptor instead. -func (*BalancingRule) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{7} -} - -func (x *BalancingRule) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *BalancingRule) GetOutboundSelector() []string { - if x != nil { - return x.OutboundSelector - } - return nil -} - -func (x *BalancingRule) GetStrategy() string { - if x != nil { - return x.Strategy - } - return "" -} - -func (x *BalancingRule) GetStrategySettings() *serial.TypedMessage { - if x != nil { - return x.StrategySettings - } - return nil -} - -func (x *BalancingRule) GetFallbackTag() string { - if x != nil { - return x.FallbackTag - } - return "" -} - -type StrategyWeight struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Regexp bool `protobuf:"varint,1,opt,name=regexp,proto3" json:"regexp,omitempty"` - Match string `protobuf:"bytes,2,opt,name=match,proto3" json:"match,omitempty"` - Value float32 `protobuf:"fixed32,3,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *StrategyWeight) Reset() { - *x = StrategyWeight{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[8] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StrategyWeight) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StrategyWeight) ProtoMessage() {} - -func (x *StrategyWeight) ProtoReflect() protoreflect.Message { - mi := &file_app_router_config_proto_msgTypes[8] - 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 StrategyWeight.ProtoReflect.Descriptor instead. -func (*StrategyWeight) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{8} -} - -func (x *StrategyWeight) GetRegexp() bool { - if x != nil { - return x.Regexp - } - return false -} - -func (x *StrategyWeight) GetMatch() string { - if x != nil { - return x.Match - } - return "" -} - -func (x *StrategyWeight) GetValue() float32 { - if x != nil { - return x.Value - } - return 0 -} - -type StrategyLeastLoadConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // weight settings - Costs []*StrategyWeight `protobuf:"bytes,2,rep,name=costs,proto3" json:"costs,omitempty"` - // RTT baselines for selecting, int64 values of time.Duration - Baselines []int64 `protobuf:"varint,3,rep,packed,name=baselines,proto3" json:"baselines,omitempty"` - // expected nodes count to select - Expected int32 `protobuf:"varint,4,opt,name=expected,proto3" json:"expected,omitempty"` - // max acceptable rtt, filter away high delay nodes. default 0 - MaxRTT int64 `protobuf:"varint,5,opt,name=maxRTT,proto3" json:"maxRTT,omitempty"` - // acceptable failure rate - Tolerance float32 `protobuf:"fixed32,6,opt,name=tolerance,proto3" json:"tolerance,omitempty"` -} - -func (x *StrategyLeastLoadConfig) Reset() { - *x = StrategyLeastLoadConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[9] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StrategyLeastLoadConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StrategyLeastLoadConfig) ProtoMessage() {} - -func (x *StrategyLeastLoadConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_router_config_proto_msgTypes[9] - 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 StrategyLeastLoadConfig.ProtoReflect.Descriptor instead. -func (*StrategyLeastLoadConfig) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{9} -} - -func (x *StrategyLeastLoadConfig) GetCosts() []*StrategyWeight { - if x != nil { - return x.Costs - } - return nil -} - -func (x *StrategyLeastLoadConfig) GetBaselines() []int64 { - if x != nil { - return x.Baselines - } - return nil -} - -func (x *StrategyLeastLoadConfig) GetExpected() int32 { - if x != nil { - return x.Expected - } - return 0 -} - -func (x *StrategyLeastLoadConfig) GetMaxRTT() int64 { - if x != nil { - return x.MaxRTT - } - return 0 -} - -func (x *StrategyLeastLoadConfig) GetTolerance() float32 { - if x != nil { - return x.Tolerance - } - return 0 -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DomainStrategy Config_DomainStrategy `protobuf:"varint,1,opt,name=domain_strategy,json=domainStrategy,proto3,enum=xray.app.router.Config_DomainStrategy" json:"domain_strategy,omitempty"` - Rule []*RoutingRule `protobuf:"bytes,2,rep,name=rule,proto3" json:"rule,omitempty"` - BalancingRule []*BalancingRule `protobuf:"bytes,3,rep,name=balancing_rule,json=balancingRule,proto3" json:"balancing_rule,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[10] - 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_app_router_config_proto_msgTypes[10] - 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_app_router_config_proto_rawDescGZIP(), []int{10} -} - -func (x *Config) GetDomainStrategy() Config_DomainStrategy { - if x != nil { - return x.DomainStrategy - } - return Config_AsIs -} - -func (x *Config) GetRule() []*RoutingRule { - if x != nil { - return x.Rule - } - return nil -} - -func (x *Config) GetBalancingRule() []*BalancingRule { - if x != nil { - return x.BalancingRule - } - return nil -} - -type Domain_Attribute struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - // Types that are assignable to TypedValue: - // - // *Domain_Attribute_BoolValue - // *Domain_Attribute_IntValue - TypedValue isDomain_Attribute_TypedValue `protobuf_oneof:"typed_value"` -} - -func (x *Domain_Attribute) Reset() { - *x = Domain_Attribute{} - if protoimpl.UnsafeEnabled { - mi := &file_app_router_config_proto_msgTypes[11] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Domain_Attribute) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Domain_Attribute) ProtoMessage() {} - -func (x *Domain_Attribute) ProtoReflect() protoreflect.Message { - mi := &file_app_router_config_proto_msgTypes[11] - 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 Domain_Attribute.ProtoReflect.Descriptor instead. -func (*Domain_Attribute) Descriptor() ([]byte, []int) { - return file_app_router_config_proto_rawDescGZIP(), []int{0, 0} -} - -func (x *Domain_Attribute) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (m *Domain_Attribute) GetTypedValue() isDomain_Attribute_TypedValue { - if m != nil { - return m.TypedValue - } - return nil -} - -func (x *Domain_Attribute) GetBoolValue() bool { - if x, ok := x.GetTypedValue().(*Domain_Attribute_BoolValue); ok { - return x.BoolValue - } - return false -} - -func (x *Domain_Attribute) GetIntValue() int64 { - if x, ok := x.GetTypedValue().(*Domain_Attribute_IntValue); ok { - return x.IntValue - } - return 0 -} - -type isDomain_Attribute_TypedValue interface { - isDomain_Attribute_TypedValue() -} - -type Domain_Attribute_BoolValue struct { - BoolValue bool `protobuf:"varint,2,opt,name=bool_value,json=boolValue,proto3,oneof"` -} - -type Domain_Attribute_IntValue struct { - IntValue int64 `protobuf:"varint,3,opt,name=int_value,json=intValue,proto3,oneof"` -} - -func (*Domain_Attribute_BoolValue) isDomain_Attribute_TypedValue() {} - -func (*Domain_Attribute_IntValue) isDomain_Attribute_TypedValue() {} - -var File_app_router_config_proto protoreflect.FileDescriptor - -var file_app_router_config_proto_rawDesc = []byte{ - 0x0a, 0x17, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x15, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, - 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb3, - 0x02, 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x30, 0x0a, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x1c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x12, 0x3f, 0x0a, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x2e, 0x41, 0x74, - 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x52, 0x09, 0x61, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, - 0x74, 0x65, 0x1a, 0x6c, 0x0a, 0x09, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x1f, 0x0a, 0x0a, 0x62, 0x6f, 0x6f, 0x6c, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x08, 0x48, 0x00, 0x52, 0x09, 0x62, 0x6f, 0x6f, 0x6c, 0x56, 0x61, 0x6c, - 0x75, 0x65, 0x12, 0x1d, 0x0a, 0x09, 0x69, 0x6e, 0x74, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x03, 0x48, 0x00, 0x52, 0x08, 0x69, 0x6e, 0x74, 0x56, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x22, 0x32, 0x0a, 0x04, 0x54, 0x79, 0x70, 0x65, 0x12, 0x09, 0x0a, 0x05, 0x50, 0x6c, 0x61, 0x69, - 0x6e, 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x52, 0x65, 0x67, 0x65, 0x78, 0x10, 0x01, 0x12, 0x0a, - 0x0a, 0x06, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x46, 0x75, - 0x6c, 0x6c, 0x10, 0x03, 0x22, 0x2e, 0x0a, 0x04, 0x43, 0x49, 0x44, 0x52, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x02, 0x69, 0x70, 0x12, 0x16, 0x0a, 0x06, - 0x70, 0x72, 0x65, 0x66, 0x69, 0x78, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x70, 0x72, - 0x65, 0x66, 0x69, 0x78, 0x22, 0x7a, 0x0a, 0x05, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x12, 0x21, 0x0a, - 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, - 0x12, 0x29, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x2e, 0x43, 0x49, 0x44, 0x52, 0x52, 0x04, 0x63, 0x69, 0x64, 0x72, 0x12, 0x23, 0x0a, 0x0d, 0x72, - 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x5f, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x08, 0x52, 0x0c, 0x72, 0x65, 0x76, 0x65, 0x72, 0x73, 0x65, 0x4d, 0x61, 0x74, 0x63, 0x68, - 0x22, 0x39, 0x0a, 0x09, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2c, 0x0a, - 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x47, - 0x65, 0x6f, 0x49, 0x50, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0x5d, 0x0a, 0x07, 0x47, - 0x65, 0x6f, 0x53, 0x69, 0x74, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x72, - 0x79, 0x5f, 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x63, 0x6f, - 0x75, 0x6e, 0x74, 0x72, 0x79, 0x43, 0x6f, 0x64, 0x65, 0x12, 0x2f, 0x0a, 0x06, 0x64, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x22, 0x3d, 0x0a, 0x0b, 0x47, 0x65, - 0x6f, 0x53, 0x69, 0x74, 0x65, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x2e, 0x0a, 0x05, 0x65, 0x6e, 0x74, - 0x72, 0x79, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x18, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x6f, 0x53, 0x69, - 0x74, 0x65, 0x52, 0x05, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x22, 0xbd, 0x07, 0x0a, 0x0b, 0x52, 0x6f, - 0x75, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x12, 0x0a, 0x03, 0x74, 0x61, 0x67, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x25, 0x0a, - 0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x0c, - 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x0c, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, - 0x67, 0x54, 0x61, 0x67, 0x12, 0x19, 0x0a, 0x08, 0x72, 0x75, 0x6c, 0x65, 0x5f, 0x74, 0x61, 0x67, - 0x18, 0x12, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x72, 0x75, 0x6c, 0x65, 0x54, 0x61, 0x67, 0x12, - 0x2f, 0x0a, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x17, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, - 0x72, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x06, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x12, 0x2d, 0x0a, 0x04, 0x63, 0x69, 0x64, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x2e, 0x43, 0x49, 0x44, 0x52, 0x42, 0x02, 0x18, 0x01, 0x52, 0x04, 0x63, 0x69, 0x64, 0x72, 0x12, - 0x2c, 0x0a, 0x05, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x16, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x2e, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x52, 0x05, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x12, 0x3d, 0x0a, - 0x0a, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x6e, 0x65, 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x02, 0x18, - 0x01, 0x52, 0x09, 0x70, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x36, 0x0a, 0x09, - 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x19, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, - 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x08, 0x70, 0x6f, 0x72, 0x74, - 0x4c, 0x69, 0x73, 0x74, 0x12, 0x43, 0x0a, 0x0c, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, - 0x6c, 0x69, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x34, 0x0a, 0x08, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, - 0x3a, 0x0a, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x63, 0x69, 0x64, 0x72, 0x18, 0x06, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x49, 0x44, 0x52, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x0a, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, 0x43, 0x69, 0x64, 0x72, 0x12, 0x39, 0x0a, 0x0c, 0x73, - 0x6f, 0x75, 0x72, 0x63, 0x65, 0x5f, 0x67, 0x65, 0x6f, 0x69, 0x70, 0x18, 0x0b, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x16, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, - 0x74, 0x65, 0x72, 0x2e, 0x47, 0x65, 0x6f, 0x49, 0x50, 0x52, 0x0b, 0x73, 0x6f, 0x75, 0x72, 0x63, - 0x65, 0x47, 0x65, 0x6f, 0x69, 0x70, 0x12, 0x43, 0x0a, 0x10, 0x73, 0x6f, 0x75, 0x72, 0x63, 0x65, - 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x10, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, - 0x65, 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x52, 0x0e, 0x73, 0x6f, 0x75, - 0x72, 0x63, 0x65, 0x50, 0x6f, 0x72, 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, - 0x73, 0x65, 0x72, 0x5f, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x07, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x09, 0x75, 0x73, 0x65, 0x72, 0x45, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x1f, 0x0a, 0x0b, 0x69, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x08, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x0a, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x4c, 0x0a, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f, - 0x75, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x2e, 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, - 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x0a, 0x61, 0x74, 0x74, 0x72, 0x69, - 0x62, 0x75, 0x74, 0x65, 0x73, 0x12, 0x25, 0x0a, 0x0e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, - 0x6d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x18, 0x11, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x65, 0x72, 0x1a, 0x3d, 0x0a, 0x0f, - 0x41, 0x74, 0x74, 0x72, 0x69, 0x62, 0x75, 0x74, 0x65, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x0c, 0x0a, 0x0a, 0x74, - 0x61, 0x72, 0x67, 0x65, 0x74, 0x5f, 0x74, 0x61, 0x67, 0x22, 0xdc, 0x01, 0x0a, 0x0d, 0x42, 0x61, - 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x74, - 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x2b, 0x0a, - 0x11, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x73, 0x65, 0x6c, 0x65, 0x63, 0x74, - 0x6f, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x10, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x53, 0x65, 0x6c, 0x65, 0x63, 0x74, 0x6f, 0x72, 0x12, 0x1a, 0x0a, 0x08, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x73, 0x74, - 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x4d, 0x0a, 0x11, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, - 0x67, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x10, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x53, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, - 0x6b, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x54, 0x61, 0x67, 0x22, 0x54, 0x0a, 0x0e, 0x53, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, - 0x67, 0x65, 0x78, 0x70, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x72, 0x65, 0x67, 0x65, - 0x78, 0x70, 0x12, 0x14, 0x0a, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x6d, 0x61, 0x74, 0x63, 0x68, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x02, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xc0, - 0x01, 0x0a, 0x17, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x4c, 0x65, 0x61, 0x73, 0x74, - 0x4c, 0x6f, 0x61, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, 0x0a, 0x05, 0x63, 0x6f, - 0x73, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x53, 0x74, 0x72, 0x61, - 0x74, 0x65, 0x67, 0x79, 0x57, 0x65, 0x69, 0x67, 0x68, 0x74, 0x52, 0x05, 0x63, 0x6f, 0x73, 0x74, - 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x03, 0x52, 0x09, 0x62, 0x61, 0x73, 0x65, 0x6c, 0x69, 0x6e, 0x65, 0x73, 0x12, - 0x1a, 0x0a, 0x08, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x08, 0x65, 0x78, 0x70, 0x65, 0x63, 0x74, 0x65, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x61, 0x78, 0x52, 0x54, 0x54, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x6d, 0x61, 0x78, - 0x52, 0x54, 0x54, 0x12, 0x1c, 0x0a, 0x09, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, 0x65, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x02, 0x52, 0x09, 0x74, 0x6f, 0x6c, 0x65, 0x72, 0x61, 0x6e, 0x63, - 0x65, 0x22, 0x9b, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4f, 0x0a, 0x0f, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x26, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0e, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x30, 0x0a, - 0x04, 0x72, 0x75, 0x6c, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x52, 0x6f, - 0x75, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x04, 0x72, 0x75, 0x6c, 0x65, 0x12, - 0x45, 0x0a, 0x0e, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, 0x6e, 0x67, 0x5f, 0x72, 0x75, 0x6c, - 0x65, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1e, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x2e, 0x42, 0x61, 0x6c, 0x61, 0x6e, 0x63, - 0x69, 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x52, 0x0d, 0x62, 0x61, 0x6c, 0x61, 0x6e, 0x63, 0x69, - 0x6e, 0x67, 0x52, 0x75, 0x6c, 0x65, 0x22, 0x47, 0x0a, 0x0e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x08, 0x0a, 0x04, 0x41, 0x73, 0x49, 0x73, - 0x10, 0x00, 0x12, 0x09, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x49, 0x70, 0x10, 0x01, 0x12, 0x10, 0x0a, - 0x0c, 0x49, 0x70, 0x49, 0x66, 0x4e, 0x6f, 0x6e, 0x4d, 0x61, 0x74, 0x63, 0x68, 0x10, 0x02, 0x12, - 0x0e, 0x0a, 0x0a, 0x49, 0x70, 0x4f, 0x6e, 0x44, 0x65, 0x6d, 0x61, 0x6e, 0x64, 0x10, 0x03, 0x42, - 0x4f, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, - 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0x50, 0x01, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, - 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x72, 0x6f, 0x75, 0x74, 0x65, 0x72, 0xaa, 0x02, - 0x0f, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, 0x70, 0x2e, 0x52, 0x6f, 0x75, 0x74, 0x65, 0x72, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_router_config_proto_rawDescOnce sync.Once - file_app_router_config_proto_rawDescData = file_app_router_config_proto_rawDesc -) - -func file_app_router_config_proto_rawDescGZIP() []byte { - file_app_router_config_proto_rawDescOnce.Do(func() { - file_app_router_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_router_config_proto_rawDescData) - }) - return file_app_router_config_proto_rawDescData -} - -var file_app_router_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_app_router_config_proto_msgTypes = make([]protoimpl.MessageInfo, 13) -var file_app_router_config_proto_goTypes = []interface{}{ - (Domain_Type)(0), // 0: xray.app.router.Domain.Type - (Config_DomainStrategy)(0), // 1: xray.app.router.Config.DomainStrategy - (*Domain)(nil), // 2: xray.app.router.Domain - (*CIDR)(nil), // 3: xray.app.router.CIDR - (*GeoIP)(nil), // 4: xray.app.router.GeoIP - (*GeoIPList)(nil), // 5: xray.app.router.GeoIPList - (*GeoSite)(nil), // 6: xray.app.router.GeoSite - (*GeoSiteList)(nil), // 7: xray.app.router.GeoSiteList - (*RoutingRule)(nil), // 8: xray.app.router.RoutingRule - (*BalancingRule)(nil), // 9: xray.app.router.BalancingRule - (*StrategyWeight)(nil), // 10: xray.app.router.StrategyWeight - (*StrategyLeastLoadConfig)(nil), // 11: xray.app.router.StrategyLeastLoadConfig - (*Config)(nil), // 12: xray.app.router.Config - (*Domain_Attribute)(nil), // 13: xray.app.router.Domain.Attribute - nil, // 14: xray.app.router.RoutingRule.AttributesEntry - (*net.PortRange)(nil), // 15: xray.common.net.PortRange - (*net.PortList)(nil), // 16: xray.common.net.PortList - (*net.NetworkList)(nil), // 17: xray.common.net.NetworkList - (net.Network)(0), // 18: xray.common.net.Network - (*serial.TypedMessage)(nil), // 19: xray.common.serial.TypedMessage -} -var file_app_router_config_proto_depIdxs = []int32{ - 0, // 0: xray.app.router.Domain.type:type_name -> xray.app.router.Domain.Type - 13, // 1: xray.app.router.Domain.attribute:type_name -> xray.app.router.Domain.Attribute - 3, // 2: xray.app.router.GeoIP.cidr:type_name -> xray.app.router.CIDR - 4, // 3: xray.app.router.GeoIPList.entry:type_name -> xray.app.router.GeoIP - 2, // 4: xray.app.router.GeoSite.domain:type_name -> xray.app.router.Domain - 6, // 5: xray.app.router.GeoSiteList.entry:type_name -> xray.app.router.GeoSite - 2, // 6: xray.app.router.RoutingRule.domain:type_name -> xray.app.router.Domain - 3, // 7: xray.app.router.RoutingRule.cidr:type_name -> xray.app.router.CIDR - 4, // 8: xray.app.router.RoutingRule.geoip:type_name -> xray.app.router.GeoIP - 15, // 9: xray.app.router.RoutingRule.port_range:type_name -> xray.common.net.PortRange - 16, // 10: xray.app.router.RoutingRule.port_list:type_name -> xray.common.net.PortList - 17, // 11: xray.app.router.RoutingRule.network_list:type_name -> xray.common.net.NetworkList - 18, // 12: xray.app.router.RoutingRule.networks:type_name -> xray.common.net.Network - 3, // 13: xray.app.router.RoutingRule.source_cidr:type_name -> xray.app.router.CIDR - 4, // 14: xray.app.router.RoutingRule.source_geoip:type_name -> xray.app.router.GeoIP - 16, // 15: xray.app.router.RoutingRule.source_port_list:type_name -> xray.common.net.PortList - 14, // 16: xray.app.router.RoutingRule.attributes:type_name -> xray.app.router.RoutingRule.AttributesEntry - 19, // 17: xray.app.router.BalancingRule.strategy_settings:type_name -> xray.common.serial.TypedMessage - 10, // 18: xray.app.router.StrategyLeastLoadConfig.costs:type_name -> xray.app.router.StrategyWeight - 1, // 19: xray.app.router.Config.domain_strategy:type_name -> xray.app.router.Config.DomainStrategy - 8, // 20: xray.app.router.Config.rule:type_name -> xray.app.router.RoutingRule - 9, // 21: xray.app.router.Config.balancing_rule:type_name -> xray.app.router.BalancingRule - 22, // [22:22] is the sub-list for method output_type - 22, // [22:22] is the sub-list for method input_type - 22, // [22:22] is the sub-list for extension type_name - 22, // [22:22] is the sub-list for extension extendee - 0, // [0:22] is the sub-list for field type_name -} - -func init() { file_app_router_config_proto_init() } -func file_app_router_config_proto_init() { - if File_app_router_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_router_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Domain); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*CIDR); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GeoIP); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GeoIPList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GeoSite); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GeoSiteList); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RoutingRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*BalancingRule); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_config_proto_msgTypes[8].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StrategyWeight); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_config_proto_msgTypes[9].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StrategyLeastLoadConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_router_config_proto_msgTypes[10].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 - } - } - file_app_router_config_proto_msgTypes[11].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Domain_Attribute); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_app_router_config_proto_msgTypes[6].OneofWrappers = []interface{}{ - (*RoutingRule_Tag)(nil), - (*RoutingRule_BalancingTag)(nil), - } - file_app_router_config_proto_msgTypes[11].OneofWrappers = []interface{}{ - (*Domain_Attribute_BoolValue)(nil), - (*Domain_Attribute_IntValue)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_app_router_config_proto_rawDesc, - NumEnums: 2, - NumMessages: 13, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_router_config_proto_goTypes, - DependencyIndexes: file_app_router_config_proto_depIdxs, - EnumInfos: file_app_router_config_proto_enumTypes, - MessageInfos: file_app_router_config_proto_msgTypes, - }.Build() - File_app_router_config_proto = out.File - file_app_router_config_proto_rawDesc = nil - file_app_router_config_proto_goTypes = nil - file_app_router_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/stats/command/command.pb.go b/xray_api/proto/app/stats/command/command.pb.go deleted file mode 100644 index 418e7fb..0000000 --- a/xray_api/proto/app/stats/command/command.pb.go +++ /dev/null @@ -1,715 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/stats/command/command.proto - -package command - -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 GetStatsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Name of the stat counter. - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Whether or not to reset the counter to fetching its value. - Reset_ bool `protobuf:"varint,2,opt,name=reset,proto3" json:"reset,omitempty"` -} - -func (x *GetStatsRequest) Reset() { - *x = GetStatsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_stats_command_command_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetStatsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetStatsRequest) ProtoMessage() {} - -func (x *GetStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_stats_command_command_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 GetStatsRequest.ProtoReflect.Descriptor instead. -func (*GetStatsRequest) Descriptor() ([]byte, []int) { - return file_app_stats_command_command_proto_rawDescGZIP(), []int{0} -} - -func (x *GetStatsRequest) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *GetStatsRequest) GetReset_() bool { - if x != nil { - return x.Reset_ - } - return false -} - -type Stat struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Value int64 `protobuf:"varint,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *Stat) Reset() { - *x = Stat{} - if protoimpl.UnsafeEnabled { - mi := &file_app_stats_command_command_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Stat) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Stat) ProtoMessage() {} - -func (x *Stat) ProtoReflect() protoreflect.Message { - mi := &file_app_stats_command_command_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 Stat.ProtoReflect.Descriptor instead. -func (*Stat) Descriptor() ([]byte, []int) { - return file_app_stats_command_command_proto_rawDescGZIP(), []int{1} -} - -func (x *Stat) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Stat) GetValue() int64 { - if x != nil { - return x.Value - } - return 0 -} - -type GetStatsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Stat *Stat `protobuf:"bytes,1,opt,name=stat,proto3" json:"stat,omitempty"` -} - -func (x *GetStatsResponse) Reset() { - *x = GetStatsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_stats_command_command_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *GetStatsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*GetStatsResponse) ProtoMessage() {} - -func (x *GetStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_stats_command_command_proto_msgTypes[2] - 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 GetStatsResponse.ProtoReflect.Descriptor instead. -func (*GetStatsResponse) Descriptor() ([]byte, []int) { - return file_app_stats_command_command_proto_rawDescGZIP(), []int{2} -} - -func (x *GetStatsResponse) GetStat() *Stat { - if x != nil { - return x.Stat - } - return nil -} - -type QueryStatsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Pattern string `protobuf:"bytes,1,opt,name=pattern,proto3" json:"pattern,omitempty"` - Reset_ bool `protobuf:"varint,2,opt,name=reset,proto3" json:"reset,omitempty"` -} - -func (x *QueryStatsRequest) Reset() { - *x = QueryStatsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_stats_command_command_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryStatsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryStatsRequest) ProtoMessage() {} - -func (x *QueryStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_stats_command_command_proto_msgTypes[3] - 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 QueryStatsRequest.ProtoReflect.Descriptor instead. -func (*QueryStatsRequest) Descriptor() ([]byte, []int) { - return file_app_stats_command_command_proto_rawDescGZIP(), []int{3} -} - -func (x *QueryStatsRequest) GetPattern() string { - if x != nil { - return x.Pattern - } - return "" -} - -func (x *QueryStatsRequest) GetReset_() bool { - if x != nil { - return x.Reset_ - } - return false -} - -type QueryStatsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Stat []*Stat `protobuf:"bytes,1,rep,name=stat,proto3" json:"stat,omitempty"` -} - -func (x *QueryStatsResponse) Reset() { - *x = QueryStatsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_stats_command_command_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *QueryStatsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*QueryStatsResponse) ProtoMessage() {} - -func (x *QueryStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_stats_command_command_proto_msgTypes[4] - 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 QueryStatsResponse.ProtoReflect.Descriptor instead. -func (*QueryStatsResponse) Descriptor() ([]byte, []int) { - return file_app_stats_command_command_proto_rawDescGZIP(), []int{4} -} - -func (x *QueryStatsResponse) GetStat() []*Stat { - if x != nil { - return x.Stat - } - return nil -} - -type SysStatsRequest struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *SysStatsRequest) Reset() { - *x = SysStatsRequest{} - if protoimpl.UnsafeEnabled { - mi := &file_app_stats_command_command_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SysStatsRequest) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SysStatsRequest) ProtoMessage() {} - -func (x *SysStatsRequest) ProtoReflect() protoreflect.Message { - mi := &file_app_stats_command_command_proto_msgTypes[5] - 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 SysStatsRequest.ProtoReflect.Descriptor instead. -func (*SysStatsRequest) Descriptor() ([]byte, []int) { - return file_app_stats_command_command_proto_rawDescGZIP(), []int{5} -} - -type SysStatsResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - NumGoroutine uint32 `protobuf:"varint,1,opt,name=NumGoroutine,proto3" json:"NumGoroutine,omitempty"` - NumGC uint32 `protobuf:"varint,2,opt,name=NumGC,proto3" json:"NumGC,omitempty"` - Alloc uint64 `protobuf:"varint,3,opt,name=Alloc,proto3" json:"Alloc,omitempty"` - TotalAlloc uint64 `protobuf:"varint,4,opt,name=TotalAlloc,proto3" json:"TotalAlloc,omitempty"` - Sys uint64 `protobuf:"varint,5,opt,name=Sys,proto3" json:"Sys,omitempty"` - Mallocs uint64 `protobuf:"varint,6,opt,name=Mallocs,proto3" json:"Mallocs,omitempty"` - Frees uint64 `protobuf:"varint,7,opt,name=Frees,proto3" json:"Frees,omitempty"` - LiveObjects uint64 `protobuf:"varint,8,opt,name=LiveObjects,proto3" json:"LiveObjects,omitempty"` - PauseTotalNs uint64 `protobuf:"varint,9,opt,name=PauseTotalNs,proto3" json:"PauseTotalNs,omitempty"` - Uptime uint32 `protobuf:"varint,10,opt,name=Uptime,proto3" json:"Uptime,omitempty"` -} - -func (x *SysStatsResponse) Reset() { - *x = SysStatsResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_app_stats_command_command_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SysStatsResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SysStatsResponse) ProtoMessage() {} - -func (x *SysStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_app_stats_command_command_proto_msgTypes[6] - 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 SysStatsResponse.ProtoReflect.Descriptor instead. -func (*SysStatsResponse) Descriptor() ([]byte, []int) { - return file_app_stats_command_command_proto_rawDescGZIP(), []int{6} -} - -func (x *SysStatsResponse) GetNumGoroutine() uint32 { - if x != nil { - return x.NumGoroutine - } - return 0 -} - -func (x *SysStatsResponse) GetNumGC() uint32 { - if x != nil { - return x.NumGC - } - return 0 -} - -func (x *SysStatsResponse) GetAlloc() uint64 { - if x != nil { - return x.Alloc - } - return 0 -} - -func (x *SysStatsResponse) GetTotalAlloc() uint64 { - if x != nil { - return x.TotalAlloc - } - return 0 -} - -func (x *SysStatsResponse) GetSys() uint64 { - if x != nil { - return x.Sys - } - return 0 -} - -func (x *SysStatsResponse) GetMallocs() uint64 { - if x != nil { - return x.Mallocs - } - return 0 -} - -func (x *SysStatsResponse) GetFrees() uint64 { - if x != nil { - return x.Frees - } - return 0 -} - -func (x *SysStatsResponse) GetLiveObjects() uint64 { - if x != nil { - return x.LiveObjects - } - return 0 -} - -func (x *SysStatsResponse) GetPauseTotalNs() uint64 { - if x != nil { - return x.PauseTotalNs - } - return 0 -} - -func (x *SysStatsResponse) GetUptime() uint32 { - if x != nil { - return x.Uptime - } - return 0 -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_stats_command_command_proto_msgTypes[7] - 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_app_stats_command_command_proto_msgTypes[7] - 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_app_stats_command_command_proto_rawDescGZIP(), []int{7} -} - -var File_app_stats_command_command_proto protoreflect.FileDescriptor - -var file_app_stats_command_command_proto_rawDesc = []byte{ - 0x0a, 0x1f, 0x61, 0x70, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x16, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x22, 0x3b, 0x0a, 0x0f, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x22, 0x30, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x44, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, - 0x73, 0x74, 0x61, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x04, 0x73, 0x74, 0x61, 0x74, 0x22, 0x43, - 0x0a, 0x11, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x70, 0x61, 0x74, 0x74, 0x65, 0x72, 0x6e, 0x12, 0x14, 0x0a, - 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, - 0x73, 0x65, 0x74, 0x22, 0x46, 0x0a, 0x12, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x04, 0x73, 0x74, 0x61, - 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x04, 0x73, 0x74, 0x61, 0x74, 0x22, 0x11, 0x0a, 0x0f, 0x53, - 0x79, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x22, 0xa2, - 0x02, 0x0a, 0x10, 0x53, 0x79, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x22, 0x0a, 0x0c, 0x4e, 0x75, 0x6d, 0x47, 0x6f, 0x72, 0x6f, 0x75, 0x74, - 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x4e, 0x75, 0x6d, 0x47, 0x6f, - 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x4e, 0x75, 0x6d, 0x47, 0x43, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x4e, 0x75, 0x6d, 0x47, 0x43, 0x12, 0x14, 0x0a, - 0x05, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x41, 0x6c, - 0x6c, 0x6f, 0x63, 0x12, 0x1e, 0x0a, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, - 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6c, - 0x6c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x53, 0x79, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x03, 0x53, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x4d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, - 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x4d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x12, - 0x14, 0x0a, 0x05, 0x46, 0x72, 0x65, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x46, 0x72, 0x65, 0x65, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x4c, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x4c, 0x69, 0x76, 0x65, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x22, 0x0a, 0x0c, 0x50, 0x61, 0x75, 0x73, 0x65, - 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x50, - 0x61, 0x75, 0x73, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x55, - 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x55, 0x70, 0x74, - 0x69, 0x6d, 0x65, 0x22, 0x08, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x32, 0xba, 0x02, - 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, 0x73, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x5f, - 0x0a, 0x08, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x61, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, - 0x65, 0x73, 0x74, 0x1a, 0x28, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x73, - 0x74, 0x61, 0x74, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x47, 0x65, 0x74, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x65, 0x0a, 0x0a, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x29, 0x2e, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x2a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x61, 0x70, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, - 0x64, 0x2e, 0x51, 0x75, 0x65, 0x72, 0x79, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x62, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x27, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, - 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x53, - 0x79, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x28, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x2e, 0x53, 0x79, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x42, 0x64, 0x0a, 0x1a, 0x63, 0x6f, - 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0x50, 0x01, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, - 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, - 0x63, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, 0xaa, 0x02, 0x16, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, - 0x70, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x61, 0x6e, 0x64, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_stats_command_command_proto_rawDescOnce sync.Once - file_app_stats_command_command_proto_rawDescData = file_app_stats_command_command_proto_rawDesc -) - -func file_app_stats_command_command_proto_rawDescGZIP() []byte { - file_app_stats_command_command_proto_rawDescOnce.Do(func() { - file_app_stats_command_command_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_stats_command_command_proto_rawDescData) - }) - return file_app_stats_command_command_proto_rawDescData -} - -var file_app_stats_command_command_proto_msgTypes = make([]protoimpl.MessageInfo, 8) -var file_app_stats_command_command_proto_goTypes = []interface{}{ - (*GetStatsRequest)(nil), // 0: xray.app.stats.command.GetStatsRequest - (*Stat)(nil), // 1: xray.app.stats.command.Stat - (*GetStatsResponse)(nil), // 2: xray.app.stats.command.GetStatsResponse - (*QueryStatsRequest)(nil), // 3: xray.app.stats.command.QueryStatsRequest - (*QueryStatsResponse)(nil), // 4: xray.app.stats.command.QueryStatsResponse - (*SysStatsRequest)(nil), // 5: xray.app.stats.command.SysStatsRequest - (*SysStatsResponse)(nil), // 6: xray.app.stats.command.SysStatsResponse - (*Config)(nil), // 7: xray.app.stats.command.Config -} -var file_app_stats_command_command_proto_depIdxs = []int32{ - 1, // 0: xray.app.stats.command.GetStatsResponse.stat:type_name -> xray.app.stats.command.Stat - 1, // 1: xray.app.stats.command.QueryStatsResponse.stat:type_name -> xray.app.stats.command.Stat - 0, // 2: xray.app.stats.command.StatsService.GetStats:input_type -> xray.app.stats.command.GetStatsRequest - 3, // 3: xray.app.stats.command.StatsService.QueryStats:input_type -> xray.app.stats.command.QueryStatsRequest - 5, // 4: xray.app.stats.command.StatsService.GetSysStats:input_type -> xray.app.stats.command.SysStatsRequest - 2, // 5: xray.app.stats.command.StatsService.GetStats:output_type -> xray.app.stats.command.GetStatsResponse - 4, // 6: xray.app.stats.command.StatsService.QueryStats:output_type -> xray.app.stats.command.QueryStatsResponse - 6, // 7: xray.app.stats.command.StatsService.GetSysStats:output_type -> xray.app.stats.command.SysStatsResponse - 5, // [5:8] is the sub-list for method output_type - 2, // [2:5] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_app_stats_command_command_proto_init() } -func file_app_stats_command_command_proto_init() { - if File_app_stats_command_command_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_stats_command_command_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStatsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_stats_command_command_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Stat); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_stats_command_command_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*GetStatsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_stats_command_command_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryStatsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_stats_command_command_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*QueryStatsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_stats_command_command_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SysStatsRequest); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_stats_command_command_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SysStatsResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_app_stats_command_command_proto_msgTypes[7].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_app_stats_command_command_proto_rawDesc, - NumEnums: 0, - NumMessages: 8, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_app_stats_command_command_proto_goTypes, - DependencyIndexes: file_app_stats_command_command_proto_depIdxs, - MessageInfos: file_app_stats_command_command_proto_msgTypes, - }.Build() - File_app_stats_command_command_proto = out.File - file_app_stats_command_command_proto_rawDesc = nil - file_app_stats_command_command_proto_goTypes = nil - file_app_stats_command_command_proto_depIdxs = nil -} diff --git a/xray_api/proto/app/stats/command/command_grpc.pb.go b/xray_api/proto/app/stats/command/command_grpc.pb.go deleted file mode 100644 index e942029..0000000 --- a/xray_api/proto/app/stats/command/command_grpc.pb.go +++ /dev/null @@ -1,183 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v5.27.0 -// source: app/stats/command/command.proto - -package command - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - StatsService_GetStats_FullMethodName = "/xray.app.stats.command.StatsService/GetStats" - StatsService_QueryStats_FullMethodName = "/xray.app.stats.command.StatsService/QueryStats" - StatsService_GetSysStats_FullMethodName = "/xray.app.stats.command.StatsService/GetSysStats" -) - -// StatsServiceClient is the client API for StatsService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type StatsServiceClient interface { - GetStats(ctx context.Context, in *GetStatsRequest, opts ...grpc.CallOption) (*GetStatsResponse, error) - QueryStats(ctx context.Context, in *QueryStatsRequest, opts ...grpc.CallOption) (*QueryStatsResponse, error) - GetSysStats(ctx context.Context, in *SysStatsRequest, opts ...grpc.CallOption) (*SysStatsResponse, error) -} - -type statsServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewStatsServiceClient(cc grpc.ClientConnInterface) StatsServiceClient { - return &statsServiceClient{cc} -} - -func (c *statsServiceClient) GetStats(ctx context.Context, in *GetStatsRequest, opts ...grpc.CallOption) (*GetStatsResponse, error) { - out := new(GetStatsResponse) - err := c.cc.Invoke(ctx, StatsService_GetStats_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *statsServiceClient) QueryStats(ctx context.Context, in *QueryStatsRequest, opts ...grpc.CallOption) (*QueryStatsResponse, error) { - out := new(QueryStatsResponse) - err := c.cc.Invoke(ctx, StatsService_QueryStats_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -func (c *statsServiceClient) GetSysStats(ctx context.Context, in *SysStatsRequest, opts ...grpc.CallOption) (*SysStatsResponse, error) { - out := new(SysStatsResponse) - err := c.cc.Invoke(ctx, StatsService_GetSysStats_FullMethodName, in, out, opts...) - if err != nil { - return nil, err - } - return out, nil -} - -// StatsServiceServer is the server API for StatsService service. -// All implementations must embed UnimplementedStatsServiceServer -// for forward compatibility -type StatsServiceServer interface { - GetStats(context.Context, *GetStatsRequest) (*GetStatsResponse, error) - QueryStats(context.Context, *QueryStatsRequest) (*QueryStatsResponse, error) - GetSysStats(context.Context, *SysStatsRequest) (*SysStatsResponse, error) - mustEmbedUnimplementedStatsServiceServer() -} - -// UnimplementedStatsServiceServer must be embedded to have forward compatible implementations. -type UnimplementedStatsServiceServer struct { -} - -func (UnimplementedStatsServiceServer) GetStats(context.Context, *GetStatsRequest) (*GetStatsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetStats not implemented") -} -func (UnimplementedStatsServiceServer) QueryStats(context.Context, *QueryStatsRequest) (*QueryStatsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method QueryStats not implemented") -} -func (UnimplementedStatsServiceServer) GetSysStats(context.Context, *SysStatsRequest) (*SysStatsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetSysStats not implemented") -} -func (UnimplementedStatsServiceServer) mustEmbedUnimplementedStatsServiceServer() {} - -// UnsafeStatsServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to StatsServiceServer will -// result in compilation errors. -type UnsafeStatsServiceServer interface { - mustEmbedUnimplementedStatsServiceServer() -} - -func RegisterStatsServiceServer(s grpc.ServiceRegistrar, srv StatsServiceServer) { - s.RegisterService(&StatsService_ServiceDesc, srv) -} - -func _StatsService_GetStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(GetStatsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StatsServiceServer).GetStats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StatsService_GetStats_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StatsServiceServer).GetStats(ctx, req.(*GetStatsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StatsService_QueryStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(QueryStatsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StatsServiceServer).QueryStats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StatsService_QueryStats_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StatsServiceServer).QueryStats(ctx, req.(*QueryStatsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -func _StatsService_GetSysStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(SysStatsRequest) - if err := dec(in); err != nil { - return nil, err - } - if interceptor == nil { - return srv.(StatsServiceServer).GetSysStats(ctx, in) - } - info := &grpc.UnaryServerInfo{ - Server: srv, - FullMethod: StatsService_GetSysStats_FullMethodName, - } - handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(StatsServiceServer).GetSysStats(ctx, req.(*SysStatsRequest)) - } - return interceptor(ctx, in, info, handler) -} - -// StatsService_ServiceDesc is the grpc.ServiceDesc for StatsService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var StatsService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "xray.app.stats.command.StatsService", - HandlerType: (*StatsServiceServer)(nil), - Methods: []grpc.MethodDesc{ - { - MethodName: "GetStats", - Handler: _StatsService_GetStats_Handler, - }, - { - MethodName: "QueryStats", - Handler: _StatsService_QueryStats_Handler, - }, - { - MethodName: "GetSysStats", - Handler: _StatsService_GetSysStats_Handler, - }, - }, - Streams: []grpc.StreamDesc{}, - Metadata: "app/stats/command/command.proto", -} diff --git a/xray_api/proto/app/stats/config.pb.go b/xray_api/proto/app/stats/config.pb.go deleted file mode 100644 index 4f5e04d..0000000 --- a/xray_api/proto/app/stats/config.pb.go +++ /dev/null @@ -1,219 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: app/stats/config.proto - -package stats - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_app_stats_config_proto_msgTypes[0] - 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_app_stats_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_app_stats_config_proto_rawDescGZIP(), []int{0} -} - -type ChannelConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Blocking bool `protobuf:"varint,1,opt,name=Blocking,proto3" json:"Blocking,omitempty"` - SubscriberLimit int32 `protobuf:"varint,2,opt,name=SubscriberLimit,proto3" json:"SubscriberLimit,omitempty"` - BufferSize int32 `protobuf:"varint,3,opt,name=BufferSize,proto3" json:"BufferSize,omitempty"` -} - -func (x *ChannelConfig) Reset() { - *x = ChannelConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_app_stats_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ChannelConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ChannelConfig) ProtoMessage() {} - -func (x *ChannelConfig) ProtoReflect() protoreflect.Message { - mi := &file_app_stats_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 ChannelConfig.ProtoReflect.Descriptor instead. -func (*ChannelConfig) Descriptor() ([]byte, []int) { - return file_app_stats_config_proto_rawDescGZIP(), []int{1} -} - -func (x *ChannelConfig) GetBlocking() bool { - if x != nil { - return x.Blocking - } - return false -} - -func (x *ChannelConfig) GetSubscriberLimit() int32 { - if x != nil { - return x.SubscriberLimit - } - return 0 -} - -func (x *ChannelConfig) GetBufferSize() int32 { - if x != nil { - return x.BufferSize - } - return 0 -} - -var File_app_stats_config_proto protoreflect.FileDescriptor - -var file_app_stats_config_proto_rawDesc = []byte{ - 0x0a, 0x16, 0x61, 0x70, 0x70, 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, - 0x70, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x08, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x22, 0x75, 0x0a, 0x0d, 0x43, 0x68, 0x61, 0x6e, 0x6e, 0x65, 0x6c, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x1a, 0x0a, 0x08, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x42, 0x6c, 0x6f, 0x63, 0x6b, 0x69, 0x6e, 0x67, 0x12, - 0x28, 0x0a, 0x0f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, 0x69, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x6d, - 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0f, 0x53, 0x75, 0x62, 0x73, 0x63, 0x72, - 0x69, 0x62, 0x65, 0x72, 0x4c, 0x69, 0x6d, 0x69, 0x74, 0x12, 0x1e, 0x0a, 0x0a, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0a, 0x42, - 0x75, 0x66, 0x66, 0x65, 0x72, 0x53, 0x69, 0x7a, 0x65, 0x42, 0x4c, 0x0a, 0x12, 0x63, 0x6f, 0x6d, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x61, 0x70, 0x70, 0x2e, 0x73, 0x74, 0x61, 0x74, 0x73, 0x50, - 0x01, 0x5a, 0x23, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, - 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x61, 0x70, 0x70, - 0x2f, 0x73, 0x74, 0x61, 0x74, 0x73, 0xaa, 0x02, 0x0e, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x41, 0x70, - 0x70, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_app_stats_config_proto_rawDescOnce sync.Once - file_app_stats_config_proto_rawDescData = file_app_stats_config_proto_rawDesc -) - -func file_app_stats_config_proto_rawDescGZIP() []byte { - file_app_stats_config_proto_rawDescOnce.Do(func() { - file_app_stats_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_app_stats_config_proto_rawDescData) - }) - return file_app_stats_config_proto_rawDescData -} - -var file_app_stats_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_app_stats_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.app.stats.Config - (*ChannelConfig)(nil), // 1: xray.app.stats.ChannelConfig -} -var file_app_stats_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_app_stats_config_proto_init() } -func file_app_stats_config_proto_init() { - if File_app_stats_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_app_stats_config_proto_msgTypes[0].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 - } - } - file_app_stats_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ChannelConfig); 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_app_stats_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_app_stats_config_proto_goTypes, - DependencyIndexes: file_app_stats_config_proto_depIdxs, - MessageInfos: file_app_stats_config_proto_msgTypes, - }.Build() - File_app_stats_config_proto = out.File - file_app_stats_config_proto_rawDesc = nil - file_app_stats_config_proto_goTypes = nil - file_app_stats_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/common/log/log.pb.go b/xray_api/proto/common/log/log.pb.go deleted file mode 100644 index 2a970b5..0000000 --- a/xray_api/proto/common/log/log.pb.go +++ /dev/null @@ -1,143 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: common/log/log.proto - -package log - -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 Severity int32 - -const ( - Severity_Unknown Severity = 0 - Severity_Error Severity = 1 - Severity_Warning Severity = 2 - Severity_Info Severity = 3 - Severity_Debug Severity = 4 -) - -// Enum value maps for Severity. -var ( - Severity_name = map[int32]string{ - 0: "Unknown", - 1: "Error", - 2: "Warning", - 3: "Info", - 4: "Debug", - } - Severity_value = map[string]int32{ - "Unknown": 0, - "Error": 1, - "Warning": 2, - "Info": 3, - "Debug": 4, - } -) - -func (x Severity) Enum() *Severity { - p := new(Severity) - *p = x - return p -} - -func (x Severity) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Severity) Descriptor() protoreflect.EnumDescriptor { - return file_common_log_log_proto_enumTypes[0].Descriptor() -} - -func (Severity) Type() protoreflect.EnumType { - return &file_common_log_log_proto_enumTypes[0] -} - -func (x Severity) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Severity.Descriptor instead. -func (Severity) EnumDescriptor() ([]byte, []int) { - return file_common_log_log_proto_rawDescGZIP(), []int{0} -} - -var File_common_log_log_proto protoreflect.FileDescriptor - -var file_common_log_log_proto_rawDesc = []byte{ - 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6c, 0x6f, 0x67, 0x2f, 0x6c, 0x6f, 0x67, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x6c, 0x6f, 0x67, 0x2a, 0x44, 0x0a, 0x08, 0x53, 0x65, 0x76, 0x65, 0x72, - 0x69, 0x74, 0x79, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, - 0x12, 0x09, 0x0a, 0x05, 0x45, 0x72, 0x72, 0x6f, 0x72, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, 0x57, - 0x61, 0x72, 0x6e, 0x69, 0x6e, 0x67, 0x10, 0x02, 0x12, 0x08, 0x0a, 0x04, 0x49, 0x6e, 0x66, 0x6f, - 0x10, 0x03, 0x12, 0x09, 0x0a, 0x05, 0x44, 0x65, 0x62, 0x75, 0x67, 0x10, 0x04, 0x42, 0x4f, 0x0a, - 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x6c, 0x6f, 0x67, 0x50, 0x01, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, - 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6c, 0x6f, 0x67, 0xaa, 0x02, 0x0f, 0x58, - 0x72, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4c, 0x6f, 0x67, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_common_log_log_proto_rawDescOnce sync.Once - file_common_log_log_proto_rawDescData = file_common_log_log_proto_rawDesc -) - -func file_common_log_log_proto_rawDescGZIP() []byte { - file_common_log_log_proto_rawDescOnce.Do(func() { - file_common_log_log_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_log_log_proto_rawDescData) - }) - return file_common_log_log_proto_rawDescData -} - -var file_common_log_log_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_common_log_log_proto_goTypes = []interface{}{ - (Severity)(0), // 0: xray.common.log.Severity -} -var file_common_log_log_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_common_log_log_proto_init() } -func file_common_log_log_proto_init() { - if File_common_log_log_proto != nil { - return - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_common_log_log_proto_rawDesc, - NumEnums: 1, - NumMessages: 0, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_common_log_log_proto_goTypes, - DependencyIndexes: file_common_log_log_proto_depIdxs, - EnumInfos: file_common_log_log_proto_enumTypes, - }.Build() - File_common_log_log_proto = out.File - file_common_log_log_proto_rawDesc = nil - file_common_log_log_proto_goTypes = nil - file_common_log_log_proto_depIdxs = nil -} diff --git a/xray_api/proto/common/net/address.pb.go b/xray_api/proto/common/net/address.pb.go deleted file mode 100644 index fd61b16..0000000 --- a/xray_api/proto/common/net/address.pb.go +++ /dev/null @@ -1,191 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: common/net/address.proto - -package net - -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) -) - -// Address of a network host. It may be either an IP address or a domain -// address. -type IPOrDomain struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Types that are assignable to Address: - // - // *IPOrDomain_Ip - // *IPOrDomain_Domain - Address isIPOrDomain_Address `protobuf_oneof:"address"` -} - -func (x *IPOrDomain) Reset() { - *x = IPOrDomain{} - if protoimpl.UnsafeEnabled { - mi := &file_common_net_address_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *IPOrDomain) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*IPOrDomain) ProtoMessage() {} - -func (x *IPOrDomain) ProtoReflect() protoreflect.Message { - mi := &file_common_net_address_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 IPOrDomain.ProtoReflect.Descriptor instead. -func (*IPOrDomain) Descriptor() ([]byte, []int) { - return file_common_net_address_proto_rawDescGZIP(), []int{0} -} - -func (m *IPOrDomain) GetAddress() isIPOrDomain_Address { - if m != nil { - return m.Address - } - return nil -} - -func (x *IPOrDomain) GetIp() []byte { - if x, ok := x.GetAddress().(*IPOrDomain_Ip); ok { - return x.Ip - } - return nil -} - -func (x *IPOrDomain) GetDomain() string { - if x, ok := x.GetAddress().(*IPOrDomain_Domain); ok { - return x.Domain - } - return "" -} - -type isIPOrDomain_Address interface { - isIPOrDomain_Address() -} - -type IPOrDomain_Ip struct { - // IP address. Must by either 4 or 16 bytes. - Ip []byte `protobuf:"bytes,1,opt,name=ip,proto3,oneof"` -} - -type IPOrDomain_Domain struct { - // Domain address. - Domain string `protobuf:"bytes,2,opt,name=domain,proto3,oneof"` -} - -func (*IPOrDomain_Ip) isIPOrDomain_Address() {} - -func (*IPOrDomain_Domain) isIPOrDomain_Address() {} - -var File_common_net_address_proto protoreflect.FileDescriptor - -var file_common_net_address_proto_rawDesc = []byte{ - 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x22, 0x43, 0x0a, 0x0a, 0x49, - 0x50, 0x4f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x12, 0x10, 0x0a, 0x02, 0x69, 0x70, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0c, 0x48, 0x00, 0x52, 0x02, 0x69, 0x70, 0x12, 0x18, 0x0a, 0x06, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x48, 0x00, 0x52, 0x06, 0x64, - 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x09, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x42, 0x4f, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x50, 0x01, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, - 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, - 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0xaa, - 0x02, 0x0f, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, - 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_common_net_address_proto_rawDescOnce sync.Once - file_common_net_address_proto_rawDescData = file_common_net_address_proto_rawDesc -) - -func file_common_net_address_proto_rawDescGZIP() []byte { - file_common_net_address_proto_rawDescOnce.Do(func() { - file_common_net_address_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_net_address_proto_rawDescData) - }) - return file_common_net_address_proto_rawDescData -} - -var file_common_net_address_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_common_net_address_proto_goTypes = []interface{}{ - (*IPOrDomain)(nil), // 0: xray.common.net.IPOrDomain -} -var file_common_net_address_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_common_net_address_proto_init() } -func file_common_net_address_proto_init() { - if File_common_net_address_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_common_net_address_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*IPOrDomain); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - } - file_common_net_address_proto_msgTypes[0].OneofWrappers = []interface{}{ - (*IPOrDomain_Ip)(nil), - (*IPOrDomain_Domain)(nil), - } - type x struct{} - out := protoimpl.TypeBuilder{ - File: protoimpl.DescBuilder{ - GoPackagePath: reflect.TypeOf(x{}).PkgPath(), - RawDescriptor: file_common_net_address_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_common_net_address_proto_goTypes, - DependencyIndexes: file_common_net_address_proto_depIdxs, - MessageInfos: file_common_net_address_proto_msgTypes, - }.Build() - File_common_net_address_proto = out.File - file_common_net_address_proto_rawDesc = nil - file_common_net_address_proto_goTypes = nil - file_common_net_address_proto_depIdxs = nil -} diff --git a/xray_api/proto/common/net/destination.pb.go b/xray_api/proto/common/net/destination.pb.go deleted file mode 100644 index 3e4de52..0000000 --- a/xray_api/proto/common/net/destination.pb.go +++ /dev/null @@ -1,180 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: common/net/destination.proto - -package net - -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) -) - -// Endpoint of a network connection. -type Endpoint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Network Network `protobuf:"varint,1,opt,name=network,proto3,enum=xray.common.net.Network" json:"network,omitempty"` - Address *IPOrDomain `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"` -} - -func (x *Endpoint) Reset() { - *x = Endpoint{} - if protoimpl.UnsafeEnabled { - mi := &file_common_net_destination_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Endpoint) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Endpoint) ProtoMessage() {} - -func (x *Endpoint) ProtoReflect() protoreflect.Message { - mi := &file_common_net_destination_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 Endpoint.ProtoReflect.Descriptor instead. -func (*Endpoint) Descriptor() ([]byte, []int) { - return file_common_net_destination_proto_rawDescGZIP(), []int{0} -} - -func (x *Endpoint) GetNetwork() Network { - if x != nil { - return x.Network - } - return Network_Unknown -} - -func (x *Endpoint) GetAddress() *IPOrDomain { - if x != nil { - return x.Address - } - return nil -} - -func (x *Endpoint) GetPort() uint32 { - if x != nil { - return x.Port - } - return 0 -} - -var File_common_net_destination_proto protoreflect.FileDescriptor - -var file_common_net_destination_proto_rawDesc = []byte{ - 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x64, 0x65, 0x73, - 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x1a, - 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x6e, 0x65, 0x74, 0x77, - 0x6f, 0x72, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x89, 0x01, 0x0a, 0x08, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x12, 0x32, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0e, 0x32, 0x18, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x35, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4f, 0x72, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, - 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x42, - 0x4f, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x50, 0x01, 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, - 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0xaa, 0x02, - 0x0f, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_common_net_destination_proto_rawDescOnce sync.Once - file_common_net_destination_proto_rawDescData = file_common_net_destination_proto_rawDesc -) - -func file_common_net_destination_proto_rawDescGZIP() []byte { - file_common_net_destination_proto_rawDescOnce.Do(func() { - file_common_net_destination_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_net_destination_proto_rawDescData) - }) - return file_common_net_destination_proto_rawDescData -} - -var file_common_net_destination_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_common_net_destination_proto_goTypes = []interface{}{ - (*Endpoint)(nil), // 0: xray.common.net.Endpoint - (Network)(0), // 1: xray.common.net.Network - (*IPOrDomain)(nil), // 2: xray.common.net.IPOrDomain -} -var file_common_net_destination_proto_depIdxs = []int32{ - 1, // 0: xray.common.net.Endpoint.network:type_name -> xray.common.net.Network - 2, // 1: xray.common.net.Endpoint.address:type_name -> xray.common.net.IPOrDomain - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_common_net_destination_proto_init() } -func file_common_net_destination_proto_init() { - if File_common_net_destination_proto != nil { - return - } - file_common_net_network_proto_init() - file_common_net_address_proto_init() - if !protoimpl.UnsafeEnabled { - file_common_net_destination_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Endpoint); 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_common_net_destination_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_common_net_destination_proto_goTypes, - DependencyIndexes: file_common_net_destination_proto_depIdxs, - MessageInfos: file_common_net_destination_proto_msgTypes, - }.Build() - File_common_net_destination_proto = out.File - file_common_net_destination_proto_rawDesc = nil - file_common_net_destination_proto_goTypes = nil - file_common_net_destination_proto_depIdxs = nil -} diff --git a/xray_api/proto/common/net/network.pb.go b/xray_api/proto/common/net/network.pb.go deleted file mode 100644 index f720ca5..0000000 --- a/xray_api/proto/common/net/network.pb.go +++ /dev/null @@ -1,214 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: common/net/network.proto - -package net - -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 Network int32 - -const ( - Network_Unknown Network = 0 - // Deprecated: Marked as deprecated in common/net/network.proto. - Network_RawTCP Network = 1 - Network_TCP Network = 2 - Network_UDP Network = 3 - Network_UNIX Network = 4 -) - -// Enum value maps for Network. -var ( - Network_name = map[int32]string{ - 0: "Unknown", - 1: "RawTCP", - 2: "TCP", - 3: "UDP", - 4: "UNIX", - } - Network_value = map[string]int32{ - "Unknown": 0, - "RawTCP": 1, - "TCP": 2, - "UDP": 3, - "UNIX": 4, - } -) - -func (x Network) Enum() *Network { - p := new(Network) - *p = x - return p -} - -func (x Network) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Network) Descriptor() protoreflect.EnumDescriptor { - return file_common_net_network_proto_enumTypes[0].Descriptor() -} - -func (Network) Type() protoreflect.EnumType { - return &file_common_net_network_proto_enumTypes[0] -} - -func (x Network) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Network.Descriptor instead. -func (Network) EnumDescriptor() ([]byte, []int) { - return file_common_net_network_proto_rawDescGZIP(), []int{0} -} - -// NetworkList is a list of Networks. -type NetworkList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Network []Network `protobuf:"varint,1,rep,packed,name=network,proto3,enum=xray.common.net.Network" json:"network,omitempty"` -} - -func (x *NetworkList) Reset() { - *x = NetworkList{} - if protoimpl.UnsafeEnabled { - mi := &file_common_net_network_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NetworkList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NetworkList) ProtoMessage() {} - -func (x *NetworkList) ProtoReflect() protoreflect.Message { - mi := &file_common_net_network_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 NetworkList.ProtoReflect.Descriptor instead. -func (*NetworkList) Descriptor() ([]byte, []int) { - return file_common_net_network_proto_rawDescGZIP(), []int{0} -} - -func (x *NetworkList) GetNetwork() []Network { - if x != nil { - return x.Network - } - return nil -} - -var File_common_net_network_proto protoreflect.FileDescriptor - -var file_common_net_network_proto_rawDesc = []byte{ - 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x6e, 0x65, 0x74, - 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x22, 0x41, 0x0a, 0x0b, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x32, 0x0a, 0x07, 0x6e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, - 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2a, 0x42, - 0x0a, 0x07, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x6e, 0x6b, - 0x6e, 0x6f, 0x77, 0x6e, 0x10, 0x00, 0x12, 0x0e, 0x0a, 0x06, 0x52, 0x61, 0x77, 0x54, 0x43, 0x50, - 0x10, 0x01, 0x1a, 0x02, 0x08, 0x01, 0x12, 0x07, 0x0a, 0x03, 0x54, 0x43, 0x50, 0x10, 0x02, 0x12, - 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x55, 0x4e, 0x49, 0x58, - 0x10, 0x04, 0x42, 0x4f, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x50, 0x01, 0x5a, 0x24, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, - 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, - 0x74, 0xaa, 0x02, 0x0f, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x4e, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_common_net_network_proto_rawDescOnce sync.Once - file_common_net_network_proto_rawDescData = file_common_net_network_proto_rawDesc -) - -func file_common_net_network_proto_rawDescGZIP() []byte { - file_common_net_network_proto_rawDescOnce.Do(func() { - file_common_net_network_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_net_network_proto_rawDescData) - }) - return file_common_net_network_proto_rawDescData -} - -var file_common_net_network_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_common_net_network_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_common_net_network_proto_goTypes = []interface{}{ - (Network)(0), // 0: xray.common.net.Network - (*NetworkList)(nil), // 1: xray.common.net.NetworkList -} -var file_common_net_network_proto_depIdxs = []int32{ - 0, // 0: xray.common.net.NetworkList.network:type_name -> xray.common.net.Network - 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_common_net_network_proto_init() } -func file_common_net_network_proto_init() { - if File_common_net_network_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_common_net_network_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NetworkList); 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_common_net_network_proto_rawDesc, - NumEnums: 1, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_common_net_network_proto_goTypes, - DependencyIndexes: file_common_net_network_proto_depIdxs, - EnumInfos: file_common_net_network_proto_enumTypes, - MessageInfos: file_common_net_network_proto_msgTypes, - }.Build() - File_common_net_network_proto = out.File - file_common_net_network_proto_rawDesc = nil - file_common_net_network_proto_goTypes = nil - file_common_net_network_proto_depIdxs = nil -} diff --git a/xray_api/proto/common/net/port.pb.go b/xray_api/proto/common/net/port.pb.go deleted file mode 100644 index 36af494..0000000 --- a/xray_api/proto/common/net/port.pb.go +++ /dev/null @@ -1,224 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: common/net/port.proto - -package net - -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) -) - -// PortRange represents a range of ports. -type PortRange struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The port that this range starts from. - From uint32 `protobuf:"varint,1,opt,name=From,proto3" json:"From,omitempty"` - // The port that this range ends with (inclusive). - To uint32 `protobuf:"varint,2,opt,name=To,proto3" json:"To,omitempty"` -} - -func (x *PortRange) Reset() { - *x = PortRange{} - if protoimpl.UnsafeEnabled { - mi := &file_common_net_port_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PortRange) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PortRange) ProtoMessage() {} - -func (x *PortRange) ProtoReflect() protoreflect.Message { - mi := &file_common_net_port_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 PortRange.ProtoReflect.Descriptor instead. -func (*PortRange) Descriptor() ([]byte, []int) { - return file_common_net_port_proto_rawDescGZIP(), []int{0} -} - -func (x *PortRange) GetFrom() uint32 { - if x != nil { - return x.From - } - return 0 -} - -func (x *PortRange) GetTo() uint32 { - if x != nil { - return x.To - } - return 0 -} - -// PortList is a list of ports. -type PortList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Range []*PortRange `protobuf:"bytes,1,rep,name=range,proto3" json:"range,omitempty"` -} - -func (x *PortList) Reset() { - *x = PortList{} - if protoimpl.UnsafeEnabled { - mi := &file_common_net_port_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PortList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PortList) ProtoMessage() {} - -func (x *PortList) ProtoReflect() protoreflect.Message { - mi := &file_common_net_port_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 PortList.ProtoReflect.Descriptor instead. -func (*PortList) Descriptor() ([]byte, []int) { - return file_common_net_port_proto_rawDescGZIP(), []int{1} -} - -func (x *PortList) GetRange() []*PortRange { - if x != nil { - return x.Range - } - return nil -} - -var File_common_net_port_proto protoreflect.FileDescriptor - -var file_common_net_port_proto_rawDesc = []byte{ - 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x70, 0x6f, 0x72, - 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x22, 0x2f, 0x0a, 0x09, 0x50, 0x6f, 0x72, 0x74, - 0x52, 0x61, 0x6e, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x04, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x0e, 0x0a, 0x02, 0x54, 0x6f, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x54, 0x6f, 0x22, 0x3c, 0x0a, 0x08, 0x50, 0x6f, 0x72, - 0x74, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x30, 0x0a, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x18, 0x01, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x50, 0x6f, 0x72, 0x74, 0x52, 0x61, 0x6e, 0x67, 0x65, - 0x52, 0x05, 0x72, 0x61, 0x6e, 0x67, 0x65, 0x42, 0x4f, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x50, 0x01, - 0x5a, 0x24, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, - 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0xaa, 0x02, 0x0f, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x4e, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_common_net_port_proto_rawDescOnce sync.Once - file_common_net_port_proto_rawDescData = file_common_net_port_proto_rawDesc -) - -func file_common_net_port_proto_rawDescGZIP() []byte { - file_common_net_port_proto_rawDescOnce.Do(func() { - file_common_net_port_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_net_port_proto_rawDescData) - }) - return file_common_net_port_proto_rawDescData -} - -var file_common_net_port_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_common_net_port_proto_goTypes = []interface{}{ - (*PortRange)(nil), // 0: xray.common.net.PortRange - (*PortList)(nil), // 1: xray.common.net.PortList -} -var file_common_net_port_proto_depIdxs = []int32{ - 0, // 0: xray.common.net.PortList.range:type_name -> xray.common.net.PortRange - 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_common_net_port_proto_init() } -func file_common_net_port_proto_init() { - if File_common_net_port_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_common_net_port_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortRange); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_common_net_port_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PortList); 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_common_net_port_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_common_net_port_proto_goTypes, - DependencyIndexes: file_common_net_port_proto_depIdxs, - MessageInfos: file_common_net_port_proto_msgTypes, - }.Build() - File_common_net_port_proto = out.File - file_common_net_port_proto_rawDesc = nil - file_common_net_port_proto_goTypes = nil - file_common_net_port_proto_depIdxs = nil -} diff --git a/xray_api/proto/common/protocol/headers.pb.go b/xray_api/proto/common/protocol/headers.pb.go deleted file mode 100644 index bb6e810..0000000 --- a/xray_api/proto/common/protocol/headers.pb.go +++ /dev/null @@ -1,219 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: common/protocol/headers.proto - -package protocol - -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 SecurityType int32 - -const ( - SecurityType_UNKNOWN SecurityType = 0 - SecurityType_AUTO SecurityType = 2 - SecurityType_AES128_GCM SecurityType = 3 - SecurityType_CHACHA20_POLY1305 SecurityType = 4 - SecurityType_NONE SecurityType = 5 // [DEPRECATED 2023-06] - SecurityType_ZERO SecurityType = 6 -) - -// Enum value maps for SecurityType. -var ( - SecurityType_name = map[int32]string{ - 0: "UNKNOWN", - 2: "AUTO", - 3: "AES128_GCM", - 4: "CHACHA20_POLY1305", - 5: "NONE", - 6: "ZERO", - } - SecurityType_value = map[string]int32{ - "UNKNOWN": 0, - "AUTO": 2, - "AES128_GCM": 3, - "CHACHA20_POLY1305": 4, - "NONE": 5, - "ZERO": 6, - } -) - -func (x SecurityType) Enum() *SecurityType { - p := new(SecurityType) - *p = x - return p -} - -func (x SecurityType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SecurityType) Descriptor() protoreflect.EnumDescriptor { - return file_common_protocol_headers_proto_enumTypes[0].Descriptor() -} - -func (SecurityType) Type() protoreflect.EnumType { - return &file_common_protocol_headers_proto_enumTypes[0] -} - -func (x SecurityType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SecurityType.Descriptor instead. -func (SecurityType) EnumDescriptor() ([]byte, []int) { - return file_common_protocol_headers_proto_rawDescGZIP(), []int{0} -} - -type SecurityConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Type SecurityType `protobuf:"varint,1,opt,name=type,proto3,enum=xray.common.protocol.SecurityType" json:"type,omitempty"` -} - -func (x *SecurityConfig) Reset() { - *x = SecurityConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_common_protocol_headers_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SecurityConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SecurityConfig) ProtoMessage() {} - -func (x *SecurityConfig) ProtoReflect() protoreflect.Message { - mi := &file_common_protocol_headers_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 SecurityConfig.ProtoReflect.Descriptor instead. -func (*SecurityConfig) Descriptor() ([]byte, []int) { - return file_common_protocol_headers_proto_rawDescGZIP(), []int{0} -} - -func (x *SecurityConfig) GetType() SecurityType { - if x != nil { - return x.Type - } - return SecurityType_UNKNOWN -} - -var File_common_protocol_headers_proto protoreflect.FileDescriptor - -var file_common_protocol_headers_proto_rawDesc = []byte{ - 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x14, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0x48, 0x0a, 0x0e, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, - 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x36, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x2a, - 0x60, 0x0a, 0x0c, 0x53, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, 0x12, - 0x0b, 0x0a, 0x07, 0x55, 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, - 0x41, 0x55, 0x54, 0x4f, 0x10, 0x02, 0x12, 0x0e, 0x0a, 0x0a, 0x41, 0x45, 0x53, 0x31, 0x32, 0x38, - 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x03, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, - 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x10, 0x04, 0x12, 0x08, 0x0a, - 0x04, 0x4e, 0x4f, 0x4e, 0x45, 0x10, 0x05, 0x12, 0x08, 0x0a, 0x04, 0x5a, 0x45, 0x52, 0x4f, 0x10, - 0x06, 0x42, 0x5e, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, 0x01, 0x5a, - 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, - 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xaa, 0x02, 0x14, 0x58, 0x72, 0x61, - 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_common_protocol_headers_proto_rawDescOnce sync.Once - file_common_protocol_headers_proto_rawDescData = file_common_protocol_headers_proto_rawDesc -) - -func file_common_protocol_headers_proto_rawDescGZIP() []byte { - file_common_protocol_headers_proto_rawDescOnce.Do(func() { - file_common_protocol_headers_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_protocol_headers_proto_rawDescData) - }) - return file_common_protocol_headers_proto_rawDescData -} - -var file_common_protocol_headers_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_common_protocol_headers_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_common_protocol_headers_proto_goTypes = []interface{}{ - (SecurityType)(0), // 0: xray.common.protocol.SecurityType - (*SecurityConfig)(nil), // 1: xray.common.protocol.SecurityConfig -} -var file_common_protocol_headers_proto_depIdxs = []int32{ - 0, // 0: xray.common.protocol.SecurityConfig.type:type_name -> xray.common.protocol.SecurityType - 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_common_protocol_headers_proto_init() } -func file_common_protocol_headers_proto_init() { - if File_common_protocol_headers_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_common_protocol_headers_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SecurityConfig); 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_common_protocol_headers_proto_rawDesc, - NumEnums: 1, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_common_protocol_headers_proto_goTypes, - DependencyIndexes: file_common_protocol_headers_proto_depIdxs, - EnumInfos: file_common_protocol_headers_proto_enumTypes, - MessageInfos: file_common_protocol_headers_proto_msgTypes, - }.Build() - File_common_protocol_headers_proto = out.File - file_common_protocol_headers_proto_rawDesc = nil - file_common_protocol_headers_proto_goTypes = nil - file_common_protocol_headers_proto_depIdxs = nil -} diff --git a/xray_api/proto/common/protocol/server_spec.pb.go b/xray_api/proto/common/protocol/server_spec.pb.go deleted file mode 100644 index 58dedc4..0000000 --- a/xray_api/proto/common/protocol/server_spec.pb.go +++ /dev/null @@ -1,181 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: common/protocol/server_spec.proto - -package protocol - -import ( - net "marzban-node/xray_api/proto/common/net" - 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 ServerEndpoint struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Address *net.IPOrDomain `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` - User []*User `protobuf:"bytes,3,rep,name=user,proto3" json:"user,omitempty"` -} - -func (x *ServerEndpoint) Reset() { - *x = ServerEndpoint{} - if protoimpl.UnsafeEnabled { - mi := &file_common_protocol_server_spec_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ServerEndpoint) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ServerEndpoint) ProtoMessage() {} - -func (x *ServerEndpoint) ProtoReflect() protoreflect.Message { - mi := &file_common_protocol_server_spec_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 ServerEndpoint.ProtoReflect.Descriptor instead. -func (*ServerEndpoint) Descriptor() ([]byte, []int) { - return file_common_protocol_server_spec_proto_rawDescGZIP(), []int{0} -} - -func (x *ServerEndpoint) GetAddress() *net.IPOrDomain { - if x != nil { - return x.Address - } - return nil -} - -func (x *ServerEndpoint) GetPort() uint32 { - if x != nil { - return x.Port - } - return 0 -} - -func (x *ServerEndpoint) GetUser() []*User { - if x != nil { - return x.User - } - return nil -} - -var File_common_protocol_server_spec_proto protoreflect.FileDescriptor - -var file_common_protocol_server_spec_proto_rawDesc = []byte{ - 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x1a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x1a, 0x1a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, - 0x8b, 0x01, 0x0a, 0x0e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, - 0x6e, 0x74, 0x12, 0x35, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x2e, 0x0a, - 0x04, 0x75, 0x73, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x42, 0x5e, 0x0a, - 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, - 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xaa, 0x02, 0x14, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_common_protocol_server_spec_proto_rawDescOnce sync.Once - file_common_protocol_server_spec_proto_rawDescData = file_common_protocol_server_spec_proto_rawDesc -) - -func file_common_protocol_server_spec_proto_rawDescGZIP() []byte { - file_common_protocol_server_spec_proto_rawDescOnce.Do(func() { - file_common_protocol_server_spec_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_protocol_server_spec_proto_rawDescData) - }) - return file_common_protocol_server_spec_proto_rawDescData -} - -var file_common_protocol_server_spec_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_common_protocol_server_spec_proto_goTypes = []interface{}{ - (*ServerEndpoint)(nil), // 0: xray.common.protocol.ServerEndpoint - (*net.IPOrDomain)(nil), // 1: xray.common.net.IPOrDomain - (*User)(nil), // 2: xray.common.protocol.User -} -var file_common_protocol_server_spec_proto_depIdxs = []int32{ - 1, // 0: xray.common.protocol.ServerEndpoint.address:type_name -> xray.common.net.IPOrDomain - 2, // 1: xray.common.protocol.ServerEndpoint.user:type_name -> xray.common.protocol.User - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_common_protocol_server_spec_proto_init() } -func file_common_protocol_server_spec_proto_init() { - if File_common_protocol_server_spec_proto != nil { - return - } - file_common_protocol_user_proto_init() - if !protoimpl.UnsafeEnabled { - file_common_protocol_server_spec_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerEndpoint); 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_common_protocol_server_spec_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_common_protocol_server_spec_proto_goTypes, - DependencyIndexes: file_common_protocol_server_spec_proto_depIdxs, - MessageInfos: file_common_protocol_server_spec_proto_msgTypes, - }.Build() - File_common_protocol_server_spec_proto = out.File - file_common_protocol_server_spec_proto_rawDesc = nil - file_common_protocol_server_spec_proto_goTypes = nil - file_common_protocol_server_spec_proto_depIdxs = nil -} diff --git a/xray_api/proto/common/protocol/user.pb.go b/xray_api/proto/common/protocol/user.pb.go deleted file mode 100644 index a78382a..0000000 --- a/xray_api/proto/common/protocol/user.pb.go +++ /dev/null @@ -1,177 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: common/protocol/user.proto - -package protocol - -import ( - serial "marzban-node/xray_api/proto/common/serial" - 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) -) - -// User is a generic user for all procotols. -type User struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Level uint32 `protobuf:"varint,1,opt,name=level,proto3" json:"level,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - // Protocol specific account information. Must be the account proto in one of - // the proxies. - Account *serial.TypedMessage `protobuf:"bytes,3,opt,name=account,proto3" json:"account,omitempty"` -} - -func (x *User) Reset() { - *x = User{} - if protoimpl.UnsafeEnabled { - mi := &file_common_protocol_user_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *User) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*User) ProtoMessage() {} - -func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_common_protocol_user_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 User.ProtoReflect.Descriptor instead. -func (*User) Descriptor() ([]byte, []int) { - return file_common_protocol_user_proto_rawDescGZIP(), []int{0} -} - -func (x *User) GetLevel() uint32 { - if x != nil { - return x.Level - } - return 0 -} - -func (x *User) GetEmail() string { - if x != nil { - return x.Email - } - return "" -} - -func (x *User) GetAccount() *serial.TypedMessage { - if x != nil { - return x.Account - } - return nil -} - -var File_common_protocol_user_proto protoreflect.FileDescriptor - -var file_common_protocol_user_proto_rawDesc = []byte{ - 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, - 0x6f, 0x6c, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x6e, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, - 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x3a, 0x0a, 0x07, 0x61, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x07, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x42, 0x5e, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x50, 0x01, 0x5a, 0x29, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0xaa, 0x02, - 0x14, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x50, 0x72, 0x6f, - 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_common_protocol_user_proto_rawDescOnce sync.Once - file_common_protocol_user_proto_rawDescData = file_common_protocol_user_proto_rawDesc -) - -func file_common_protocol_user_proto_rawDescGZIP() []byte { - file_common_protocol_user_proto_rawDescOnce.Do(func() { - file_common_protocol_user_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_protocol_user_proto_rawDescData) - }) - return file_common_protocol_user_proto_rawDescData -} - -var file_common_protocol_user_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_common_protocol_user_proto_goTypes = []interface{}{ - (*User)(nil), // 0: xray.common.protocol.User - (*serial.TypedMessage)(nil), // 1: xray.common.serial.TypedMessage -} -var file_common_protocol_user_proto_depIdxs = []int32{ - 1, // 0: xray.common.protocol.User.account:type_name -> xray.common.serial.TypedMessage - 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_common_protocol_user_proto_init() } -func file_common_protocol_user_proto_init() { - if File_common_protocol_user_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_common_protocol_user_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User); 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_common_protocol_user_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_common_protocol_user_proto_goTypes, - DependencyIndexes: file_common_protocol_user_proto_depIdxs, - MessageInfos: file_common_protocol_user_proto_msgTypes, - }.Build() - File_common_protocol_user_proto = out.File - file_common_protocol_user_proto_rawDesc = nil - file_common_protocol_user_proto_goTypes = nil - file_common_protocol_user_proto_depIdxs = nil -} diff --git a/xray_api/proto/common/serial/typed_message.pb.go b/xray_api/proto/common/serial/typed_message.pb.go deleted file mode 100644 index 719a2d0..0000000 --- a/xray_api/proto/common/serial/typed_message.pb.go +++ /dev/null @@ -1,161 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: common/serial/typed_message.proto - -package serial - -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) -) - -// TypedMessage is a serialized proto message along with its type name. -type TypedMessage struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // The name of the message type, retrieved from protobuf API. - Type string `protobuf:"bytes,1,opt,name=type,proto3" json:"type,omitempty"` - // Serialized proto message. - Value []byte `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *TypedMessage) Reset() { - *x = TypedMessage{} - if protoimpl.UnsafeEnabled { - mi := &file_common_serial_typed_message_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TypedMessage) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TypedMessage) ProtoMessage() {} - -func (x *TypedMessage) ProtoReflect() protoreflect.Message { - mi := &file_common_serial_typed_message_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 TypedMessage.ProtoReflect.Descriptor instead. -func (*TypedMessage) Descriptor() ([]byte, []int) { - return file_common_serial_typed_message_proto_rawDescGZIP(), []int{0} -} - -func (x *TypedMessage) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *TypedMessage) GetValue() []byte { - if x != nil { - return x.Value - } - return nil -} - -var File_common_serial_typed_message_proto protoreflect.FileDescriptor - -var file_common_serial_typed_message_proto_rawDesc = []byte{ - 0x0a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2f, - 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x22, 0x38, 0x0a, 0x0c, 0x54, 0x79, 0x70, 0x65, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x42, 0x58, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x50, 0x01, 0x5a, 0x27, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, - 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, - 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0xaa, 0x02, 0x12, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x43, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x53, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} - -var ( - file_common_serial_typed_message_proto_rawDescOnce sync.Once - file_common_serial_typed_message_proto_rawDescData = file_common_serial_typed_message_proto_rawDesc -) - -func file_common_serial_typed_message_proto_rawDescGZIP() []byte { - file_common_serial_typed_message_proto_rawDescOnce.Do(func() { - file_common_serial_typed_message_proto_rawDescData = protoimpl.X.CompressGZIP(file_common_serial_typed_message_proto_rawDescData) - }) - return file_common_serial_typed_message_proto_rawDescData -} - -var file_common_serial_typed_message_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_common_serial_typed_message_proto_goTypes = []interface{}{ - (*TypedMessage)(nil), // 0: xray.common.serial.TypedMessage -} -var file_common_serial_typed_message_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_common_serial_typed_message_proto_init() } -func file_common_serial_typed_message_proto_init() { - if File_common_serial_typed_message_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_common_serial_typed_message_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TypedMessage); 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_common_serial_typed_message_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_common_serial_typed_message_proto_goTypes, - DependencyIndexes: file_common_serial_typed_message_proto_depIdxs, - MessageInfos: file_common_serial_typed_message_proto_msgTypes, - }.Build() - File_common_serial_typed_message_proto = out.File - file_common_serial_typed_message_proto_rawDesc = nil - file_common_serial_typed_message_proto_goTypes = nil - file_common_serial_typed_message_proto_depIdxs = nil -} diff --git a/xray_api/proto/compile.go b/xray_api/proto/compile.go deleted file mode 100644 index a129586..0000000 --- a/xray_api/proto/compile.go +++ /dev/null @@ -1,215 +0,0 @@ -package main - -import ( - "archive/tar" - "compress/gzip" - "encoding/json" - "fmt" - "io" - "net/http" - "os" - "path/filepath" - "regexp" - "strings" -) - -func check(e error) { - if e != nil { - panic(e) - } -} - -// Function to download the latest release tarball -func downloadLatestRelease(url string, dest string) { - resp, err := http.Get(url) - check(err) - defer resp.Body.Close() - - if resp.StatusCode != http.StatusOK { - panic(fmt.Sprintf("Failed to download file: %s", resp.Status)) - } - - out, err := os.Create(dest) - check(err) - defer out.Close() - - _, err = io.Copy(out, resp.Body) - check(err) -} - -// Function to extract tarball while ignoring the top-level directory -func extractTarGz(src, dest string) (string, error) { - file, err := os.Open(src) - check(err) - defer file.Close() - - gzr, err := gzip.NewReader(file) - check(err) - defer gzr.Close() - - tr := tar.NewReader(gzr) - var topLevelDir string - - for { - header, err := tr.Next() - if err == io.EOF { - break - } - check(err) - - // Skip pax_global_header - if header.Name == "pax_global_header" { - continue - } - - // Extract only the top-level directory - if topLevelDir == "" { - topLevelDir = strings.Split(header.Name, string(filepath.Separator))[0] - } - target := filepath.Join(dest, strings.TrimPrefix(header.Name, topLevelDir+string(filepath.Separator))) - - switch header.Typeflag { - case tar.TypeDir: - err = os.MkdirAll(target, 0755) - check(err) - case tar.TypeReg: - err = os.MkdirAll(filepath.Dir(target), 0755) - check(err) - outFile, err := os.Create(target) - check(err) - defer outFile.Close() - _, err = io.Copy(outFile, tr) - check(err) - } - } - return filepath.Join(dest, topLevelDir), nil -} - -// Function to copy .pb.go files to the destination directory and modify imports -func copyAndModifyPbGoFiles(srcDir, destDir, oldPrefix, newPrefix string) { - err := filepath.Walk(srcDir, func(path string, info os.FileInfo, err error) error { - check(err) - if strings.HasSuffix(info.Name(), ".pb.go") { - relPath, err := filepath.Rel(srcDir, path) - check(err) - destPath := filepath.Join(destDir, relPath) - err = os.MkdirAll(filepath.Dir(destPath), 0755) - check(err) - _, err = copyAndModifyFile(path, destPath, oldPrefix, newPrefix) - check(err) - } - return nil - }) - check(err) -} - -// Function to copy a file and modify imports -func copyAndModifyFile(src, dest, oldPrefix, newPrefix string) (int64, error) { - sourceFile, err := os.Open(src) - if err != nil { - return 0, err - } - defer sourceFile.Close() - - destFile, err := os.Create(dest) - if err != nil { - return 0, err - } - defer destFile.Close() - - content, err := io.ReadAll(sourceFile) - if err != nil { - return 0, err - } - - modifiedContent := modifyImports(string(content), oldPrefix, newPrefix) - _, err = destFile.Write([]byte(modifiedContent)) - if err != nil { - return 0, err - } - - return int64(len(modifiedContent)), nil -} - -// Function to modify import paths -func modifyImports(content, oldPrefix, newPrefix string) string { - re := regexp.MustCompile(`(` + regexp.QuoteMeta(oldPrefix) + `)`) - return re.ReplaceAllString(content, newPrefix) -} - -// Function to move contents of srcDir to destDir -func moveContents(srcDir, destDir string) { - err := filepath.Walk(srcDir, func(path string, info os.FileInfo, err error) error { - check(err) - relPath, err := filepath.Rel(srcDir, path) - check(err) - destPath := filepath.Join(destDir, relPath) - if info.IsDir() { - err := os.MkdirAll(destPath, 0755) - check(err) - } else { - err := os.Rename(path, destPath) - check(err) - } - return nil - }) - check(err) -} - -// init function to run the downloader and file modifier -func main() { - // Get latest version tag from GitHub API - resp, err := http.Get("https://api.github.com/repos/XTLS/xray-core/releases/latest") - check(err) - defer resp.Body.Close() - - if resp.StatusCode != http.StatusOK { - panic(fmt.Sprintf("Failed to fetch latest release: %s", resp.Status)) - } - - type GitHubRelease struct { - TagName string `json:"tag_name"` - } - - var release GitHubRelease - err = json.NewDecoder(resp.Body).Decode(&release) - check(err) - - version := release.TagName - fmt.Println("Latest version is", version) - - // Download source tarball - downloadUrl := fmt.Sprintf("https://github.com/XTLS/xray-core/archive/refs/tags/%s.tar.gz", version) - tmpDir, err := os.MkdirTemp("", "xray-core-*") - check(err) - defer os.RemoveAll(tmpDir) - - tarballPath := filepath.Join(tmpDir, "source.tar.gz") - fmt.Println("Downloading source", version, "...") - downloadLatestRelease(downloadUrl, tarballPath) - fmt.Println("Source downloaded. Extracting...") - - // Extract tarball and get the top-level directory - extractDir := filepath.Join(tmpDir, "extracted") - err = os.MkdirAll(extractDir, 0755) - check(err) - topLevelDir, err := extractTarGz(tarballPath, extractDir) - check(err) - fmt.Println("Source extracted.") - - // Move contents to the destination directory - finalExtractDir := filepath.Join(tmpDir, "final") - err = os.MkdirAll(finalExtractDir, 0755) - check(err) - moveContents(topLevelDir, finalExtractDir) - fmt.Println("Top-level directory ignored.") - - // Copy .pb.go files to the destination directory and modify imports - destDir := "." // or any directory you want to copy files to - oldPrefix := "github.com/xtls/xray-core" - newPrefix := "marzban-node/xray_api/proto" - - fmt.Println("Copying .pb.go files and modifying imports...") - copyAndModifyPbGoFiles(finalExtractDir, destDir, oldPrefix, newPrefix) - fmt.Println("Done.") -} diff --git a/xray_api/proto/core/config.pb.go b/xray_api/proto/core/config.pb.go deleted file mode 100644 index b2033b4..0000000 --- a/xray_api/proto/core/config.pb.go +++ /dev/null @@ -1,435 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: core/config.proto - -package core - -import ( - serial "marzban-node/xray_api/proto/common/serial" - global "marzban-node/xray_api/proto/transport/global" - 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) -) - -// Config is the master config of Xray. Xray takes this config as input and -// functions accordingly. -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Inbound handler configurations. Must have at least one item. - Inbound []*InboundHandlerConfig `protobuf:"bytes,1,rep,name=inbound,proto3" json:"inbound,omitempty"` - // Outbound handler configurations. Must have at least one item. The first - // item is used as default for routing. - Outbound []*OutboundHandlerConfig `protobuf:"bytes,2,rep,name=outbound,proto3" json:"outbound,omitempty"` - // App is for configurations of all features in Xray. A feature must - // implement the Feature interface, and its config type must be registered - // through common.RegisterConfig. - App []*serial.TypedMessage `protobuf:"bytes,4,rep,name=app,proto3" json:"app,omitempty"` - // Transport settings. - // Deprecated. Each inbound and outbound should choose their own transport - // config. Date to remove: 2020-01-13 - // - // Deprecated: Marked as deprecated in core/config.proto. - Transport *global.Config `protobuf:"bytes,5,opt,name=transport,proto3" json:"transport,omitempty"` - // Configuration for extensions. The config may not work if corresponding - // extension is not loaded into Xray. Xray will ignore such config during - // initialization. - Extension []*serial.TypedMessage `protobuf:"bytes,6,rep,name=extension,proto3" json:"extension,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_core_config_proto_msgTypes[0] - 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_core_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_core_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetInbound() []*InboundHandlerConfig { - if x != nil { - return x.Inbound - } - return nil -} - -func (x *Config) GetOutbound() []*OutboundHandlerConfig { - if x != nil { - return x.Outbound - } - return nil -} - -func (x *Config) GetApp() []*serial.TypedMessage { - if x != nil { - return x.App - } - return nil -} - -// Deprecated: Marked as deprecated in core/config.proto. -func (x *Config) GetTransport() *global.Config { - if x != nil { - return x.Transport - } - return nil -} - -func (x *Config) GetExtension() []*serial.TypedMessage { - if x != nil { - return x.Extension - } - return nil -} - -// InboundHandlerConfig is the configuration for inbound handler. -type InboundHandlerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Tag of the inbound handler. The tag must be unique among all inbound - // handlers - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - // Settings for how this inbound proxy is handled. - ReceiverSettings *serial.TypedMessage `protobuf:"bytes,2,opt,name=receiver_settings,json=receiverSettings,proto3" json:"receiver_settings,omitempty"` - // Settings for inbound proxy. Must be one of the inbound proxies. - ProxySettings *serial.TypedMessage `protobuf:"bytes,3,opt,name=proxy_settings,json=proxySettings,proto3" json:"proxy_settings,omitempty"` -} - -func (x *InboundHandlerConfig) Reset() { - *x = InboundHandlerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_core_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *InboundHandlerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*InboundHandlerConfig) ProtoMessage() {} - -func (x *InboundHandlerConfig) ProtoReflect() protoreflect.Message { - mi := &file_core_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 InboundHandlerConfig.ProtoReflect.Descriptor instead. -func (*InboundHandlerConfig) Descriptor() ([]byte, []int) { - return file_core_config_proto_rawDescGZIP(), []int{1} -} - -func (x *InboundHandlerConfig) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *InboundHandlerConfig) GetReceiverSettings() *serial.TypedMessage { - if x != nil { - return x.ReceiverSettings - } - return nil -} - -func (x *InboundHandlerConfig) GetProxySettings() *serial.TypedMessage { - if x != nil { - return x.ProxySettings - } - return nil -} - -// OutboundHandlerConfig is the configuration for outbound handler. -type OutboundHandlerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Tag of this outbound handler. - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - // Settings for how to dial connection for this outbound handler. - SenderSettings *serial.TypedMessage `protobuf:"bytes,2,opt,name=sender_settings,json=senderSettings,proto3" json:"sender_settings,omitempty"` - // Settings for this outbound proxy. Must be one of the outbound proxies. - ProxySettings *serial.TypedMessage `protobuf:"bytes,3,opt,name=proxy_settings,json=proxySettings,proto3" json:"proxy_settings,omitempty"` - // If not zero, this outbound will be expired in seconds. Not used for now. - Expire int64 `protobuf:"varint,4,opt,name=expire,proto3" json:"expire,omitempty"` - // Comment of this outbound handler. Not used for now. - Comment string `protobuf:"bytes,5,opt,name=comment,proto3" json:"comment,omitempty"` -} - -func (x *OutboundHandlerConfig) Reset() { - *x = OutboundHandlerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_core_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *OutboundHandlerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*OutboundHandlerConfig) ProtoMessage() {} - -func (x *OutboundHandlerConfig) ProtoReflect() protoreflect.Message { - mi := &file_core_config_proto_msgTypes[2] - 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 OutboundHandlerConfig.ProtoReflect.Descriptor instead. -func (*OutboundHandlerConfig) Descriptor() ([]byte, []int) { - return file_core_config_proto_rawDescGZIP(), []int{2} -} - -func (x *OutboundHandlerConfig) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *OutboundHandlerConfig) GetSenderSettings() *serial.TypedMessage { - if x != nil { - return x.SenderSettings - } - return nil -} - -func (x *OutboundHandlerConfig) GetProxySettings() *serial.TypedMessage { - if x != nil { - return x.ProxySettings - } - return nil -} - -func (x *OutboundHandlerConfig) GetExpire() int64 { - if x != nil { - return x.Expire - } - return 0 -} - -func (x *OutboundHandlerConfig) GetComment() string { - if x != nil { - return x.Comment - } - return "" -} - -var File_core_config_proto protoreflect.FileDescriptor - -var file_core_config_proto_rawDesc = []byte{ - 0x0a, 0x11, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x09, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x1a, 0x21, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2f, 0x74, 0x79, - 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x1a, 0x1d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x67, 0x6c, 0x6f, - 0x62, 0x61, 0x6c, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0xb5, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x39, 0x0a, 0x07, 0x69, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x69, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x3c, 0x0a, 0x08, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x63, 0x6f, 0x72, 0x65, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, - 0x64, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x6f, 0x75, 0x74, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x12, 0x32, 0x0a, 0x03, 0x61, 0x70, 0x70, 0x18, 0x04, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, - 0x61, 0x67, 0x65, 0x52, 0x03, 0x61, 0x70, 0x70, 0x12, 0x38, 0x0a, 0x09, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x42, 0x02, 0x18, 0x01, 0x52, 0x09, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x12, 0x3e, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, 0x18, - 0x06, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, - 0x6f, 0x6e, 0x4a, 0x04, 0x08, 0x03, 0x10, 0x04, 0x22, 0xc0, 0x01, 0x0a, 0x14, 0x49, 0x6e, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x74, 0x61, 0x67, 0x12, 0x4d, 0x0a, 0x11, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x5f, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, - 0x52, 0x10, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, 0xef, 0x01, 0x0a, 0x15, - 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x48, 0x61, 0x6e, 0x64, 0x6c, 0x65, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, 0x12, 0x49, 0x0a, 0x0f, 0x73, 0x65, 0x6e, 0x64, 0x65, - 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, - 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, - 0x67, 0x65, 0x52, 0x0e, 0x73, 0x65, 0x6e, 0x64, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x12, 0x47, 0x0a, 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, - 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0d, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x65, - 0x78, 0x70, 0x69, 0x72, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x06, 0x65, 0x78, 0x70, - 0x69, 0x72, 0x65, 0x12, 0x18, 0x0a, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x63, 0x6f, 0x6d, 0x6d, 0x65, 0x6e, 0x74, 0x42, 0x3d, 0x0a, - 0x0d, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x72, 0x65, 0x50, 0x01, - 0x5a, 0x1e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, - 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x63, 0x6f, 0x72, 0x65, - 0xaa, 0x02, 0x09, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x43, 0x6f, 0x72, 0x65, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_core_config_proto_rawDescOnce sync.Once - file_core_config_proto_rawDescData = file_core_config_proto_rawDesc -) - -func file_core_config_proto_rawDescGZIP() []byte { - file_core_config_proto_rawDescOnce.Do(func() { - file_core_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_core_config_proto_rawDescData) - }) - return file_core_config_proto_rawDescData -} - -var file_core_config_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_core_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.core.Config - (*InboundHandlerConfig)(nil), // 1: xray.core.InboundHandlerConfig - (*OutboundHandlerConfig)(nil), // 2: xray.core.OutboundHandlerConfig - (*serial.TypedMessage)(nil), // 3: xray.common.serial.TypedMessage - (*global.Config)(nil), // 4: xray.transport.Config -} -var file_core_config_proto_depIdxs = []int32{ - 1, // 0: xray.core.Config.inbound:type_name -> xray.core.InboundHandlerConfig - 2, // 1: xray.core.Config.outbound:type_name -> xray.core.OutboundHandlerConfig - 3, // 2: xray.core.Config.app:type_name -> xray.common.serial.TypedMessage - 4, // 3: xray.core.Config.transport:type_name -> xray.transport.Config - 3, // 4: xray.core.Config.extension:type_name -> xray.common.serial.TypedMessage - 3, // 5: xray.core.InboundHandlerConfig.receiver_settings:type_name -> xray.common.serial.TypedMessage - 3, // 6: xray.core.InboundHandlerConfig.proxy_settings:type_name -> xray.common.serial.TypedMessage - 3, // 7: xray.core.OutboundHandlerConfig.sender_settings:type_name -> xray.common.serial.TypedMessage - 3, // 8: xray.core.OutboundHandlerConfig.proxy_settings:type_name -> xray.common.serial.TypedMessage - 9, // [9:9] is the sub-list for method output_type - 9, // [9:9] is the sub-list for method input_type - 9, // [9:9] is the sub-list for extension type_name - 9, // [9:9] is the sub-list for extension extendee - 0, // [0:9] is the sub-list for field type_name -} - -func init() { file_core_config_proto_init() } -func file_core_config_proto_init() { - if File_core_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_core_config_proto_msgTypes[0].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 - } - } - file_core_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*InboundHandlerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_core_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*OutboundHandlerConfig); 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_core_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 3, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_core_config_proto_goTypes, - DependencyIndexes: file_core_config_proto_depIdxs, - MessageInfos: file_core_config_proto_msgTypes, - }.Build() - File_core_config_proto = out.File - file_core_config_proto_rawDesc = nil - file_core_config_proto_goTypes = nil - file_core_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/blackhole/config.pb.go b/xray_api/proto/proxy/blackhole/config.pb.go deleted file mode 100644 index f413433..0000000 --- a/xray_api/proto/proxy/blackhole/config.pb.go +++ /dev/null @@ -1,260 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/blackhole/config.proto - -package blackhole - -import ( - serial "marzban-node/xray_api/proto/common/serial" - 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 NoneResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *NoneResponse) Reset() { - *x = NoneResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_blackhole_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *NoneResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*NoneResponse) ProtoMessage() {} - -func (x *NoneResponse) ProtoReflect() protoreflect.Message { - mi := &file_proxy_blackhole_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 NoneResponse.ProtoReflect.Descriptor instead. -func (*NoneResponse) Descriptor() ([]byte, []int) { - return file_proxy_blackhole_config_proto_rawDescGZIP(), []int{0} -} - -type HTTPResponse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *HTTPResponse) Reset() { - *x = HTTPResponse{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_blackhole_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *HTTPResponse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*HTTPResponse) ProtoMessage() {} - -func (x *HTTPResponse) ProtoReflect() protoreflect.Message { - mi := &file_proxy_blackhole_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 HTTPResponse.ProtoReflect.Descriptor instead. -func (*HTTPResponse) Descriptor() ([]byte, []int) { - return file_proxy_blackhole_config_proto_rawDescGZIP(), []int{1} -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Response *serial.TypedMessage `protobuf:"bytes,1,opt,name=response,proto3" json:"response,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_blackhole_config_proto_msgTypes[2] - 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_proxy_blackhole_config_proto_msgTypes[2] - 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_proxy_blackhole_config_proto_rawDescGZIP(), []int{2} -} - -func (x *Config) GetResponse() *serial.TypedMessage { - if x != nil { - return x.Response - } - return nil -} - -var File_proxy_blackhole_config_proto protoreflect.FileDescriptor - -var file_proxy_blackhole_config_proto_rawDesc = []byte{ - 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x68, 0x6f, 0x6c, - 0x65, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x62, 0x6c, 0x61, 0x63, 0x6b, - 0x68, 0x6f, 0x6c, 0x65, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x0e, 0x0a, 0x0c, 0x4e, 0x6f, 0x6e, 0x65, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x0e, 0x0a, 0x0c, 0x48, 0x54, 0x54, 0x50, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x46, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x3c, 0x0a, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, - 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, - 0x5e, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x62, 0x6c, 0x61, 0x63, 0x6b, 0x68, 0x6f, 0x6c, 0x65, 0x50, 0x01, 0x5a, 0x29, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, - 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x62, - 0x6c, 0x61, 0x63, 0x6b, 0x68, 0x6f, 0x6c, 0x65, 0xaa, 0x02, 0x14, 0x58, 0x72, 0x61, 0x79, 0x2e, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x42, 0x6c, 0x61, 0x63, 0x6b, 0x68, 0x6f, 0x6c, 0x65, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_blackhole_config_proto_rawDescOnce sync.Once - file_proxy_blackhole_config_proto_rawDescData = file_proxy_blackhole_config_proto_rawDesc -) - -func file_proxy_blackhole_config_proto_rawDescGZIP() []byte { - file_proxy_blackhole_config_proto_rawDescOnce.Do(func() { - file_proxy_blackhole_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_blackhole_config_proto_rawDescData) - }) - return file_proxy_blackhole_config_proto_rawDescData -} - -var file_proxy_blackhole_config_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_proxy_blackhole_config_proto_goTypes = []interface{}{ - (*NoneResponse)(nil), // 0: xray.proxy.blackhole.NoneResponse - (*HTTPResponse)(nil), // 1: xray.proxy.blackhole.HTTPResponse - (*Config)(nil), // 2: xray.proxy.blackhole.Config - (*serial.TypedMessage)(nil), // 3: xray.common.serial.TypedMessage -} -var file_proxy_blackhole_config_proto_depIdxs = []int32{ - 3, // 0: xray.proxy.blackhole.Config.response:type_name -> xray.common.serial.TypedMessage - 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_proxy_blackhole_config_proto_init() } -func file_proxy_blackhole_config_proto_init() { - if File_proxy_blackhole_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_blackhole_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*NoneResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_blackhole_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*HTTPResponse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_blackhole_config_proto_msgTypes[2].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_proxy_blackhole_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 3, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_blackhole_config_proto_goTypes, - DependencyIndexes: file_proxy_blackhole_config_proto_depIdxs, - MessageInfos: file_proxy_blackhole_config_proto_msgTypes, - }.Build() - File_proxy_blackhole_config_proto = out.File - file_proxy_blackhole_config_proto_rawDesc = nil - file_proxy_blackhole_config_proto_goTypes = nil - file_proxy_blackhole_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/dns/config.pb.go b/xray_api/proto/proxy/dns/config.pb.go deleted file mode 100644 index 094faa3..0000000 --- a/xray_api/proto/proxy/dns/config.pb.go +++ /dev/null @@ -1,175 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/dns/config.proto - -package dns - -import ( - net "marzban-node/xray_api/proto/common/net" - 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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Server is the DNS server address. If specified, this address overrides the - // original one. - Server *net.Endpoint `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"` - UserLevel uint32 `protobuf:"varint,2,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` - Non_IPQuery string `protobuf:"bytes,3,opt,name=non_IP_query,json=nonIPQuery,proto3" json:"non_IP_query,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_dns_config_proto_msgTypes[0] - 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_proxy_dns_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_proxy_dns_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetServer() *net.Endpoint { - if x != nil { - return x.Server - } - return nil -} - -func (x *Config) GetUserLevel() uint32 { - if x != nil { - return x.UserLevel - } - return 0 -} - -func (x *Config) GetNon_IPQuery() string { - if x != nil { - return x.Non_IPQuery - } - return "" -} - -var File_proxy_dns_config_proto protoreflect.FileDescriptor - -var file_proxy_dns_config_proto_rawDesc = []byte{ - 0x0a, 0x16, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x64, 0x6e, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x64, 0x6e, 0x73, 0x1a, 0x1c, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x7c, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x31, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, - 0x32, 0x19, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, - 0x65, 0x74, 0x2e, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, - 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, - 0x65, 0x6c, 0x12, 0x20, 0x0a, 0x0c, 0x6e, 0x6f, 0x6e, 0x5f, 0x49, 0x50, 0x5f, 0x71, 0x75, 0x65, - 0x72, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6e, 0x6f, 0x6e, 0x49, 0x50, 0x51, - 0x75, 0x65, 0x72, 0x79, 0x42, 0x4c, 0x0a, 0x12, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x64, 0x6e, 0x73, 0x50, 0x01, 0x5a, 0x23, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, - 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x64, 0x6e, - 0x73, 0xaa, 0x02, 0x0e, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x44, - 0x6e, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_dns_config_proto_rawDescOnce sync.Once - file_proxy_dns_config_proto_rawDescData = file_proxy_dns_config_proto_rawDesc -) - -func file_proxy_dns_config_proto_rawDescGZIP() []byte { - file_proxy_dns_config_proto_rawDescOnce.Do(func() { - file_proxy_dns_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_dns_config_proto_rawDescData) - }) - return file_proxy_dns_config_proto_rawDescData -} - -var file_proxy_dns_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_proxy_dns_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.proxy.dns.Config - (*net.Endpoint)(nil), // 1: xray.common.net.Endpoint -} -var file_proxy_dns_config_proto_depIdxs = []int32{ - 1, // 0: xray.proxy.dns.Config.server:type_name -> xray.common.net.Endpoint - 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_proxy_dns_config_proto_init() } -func file_proxy_dns_config_proto_init() { - if File_proxy_dns_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_dns_config_proto_msgTypes[0].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_proxy_dns_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_dns_config_proto_goTypes, - DependencyIndexes: file_proxy_dns_config_proto_depIdxs, - MessageInfos: file_proxy_dns_config_proto_msgTypes, - }.Build() - File_proxy_dns_config_proto = out.File - file_proxy_dns_config_proto_rawDesc = nil - file_proxy_dns_config_proto_goTypes = nil - file_proxy_dns_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/dokodemo/config.pb.go b/xray_api/proto/proxy/dokodemo/config.pb.go deleted file mode 100644 index 9f76181..0000000 --- a/xray_api/proto/proxy/dokodemo/config.pb.go +++ /dev/null @@ -1,232 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/dokodemo/config.proto - -package dokodemo - -import ( - net "marzban-node/xray_api/proto/common/net" - 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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Address *net.IPOrDomain `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` - // List of networks that the Dokodemo accepts. - // Deprecated. Use networks. - // - // Deprecated: Marked as deprecated in proxy/dokodemo/config.proto. - NetworkList *net.NetworkList `protobuf:"bytes,3,opt,name=network_list,json=networkList,proto3" json:"network_list,omitempty"` - // List of networks that the Dokodemo accepts. - Networks []net.Network `protobuf:"varint,7,rep,packed,name=networks,proto3,enum=xray.common.net.Network" json:"networks,omitempty"` - // Deprecated: Marked as deprecated in proxy/dokodemo/config.proto. - Timeout uint32 `protobuf:"varint,4,opt,name=timeout,proto3" json:"timeout,omitempty"` - FollowRedirect bool `protobuf:"varint,5,opt,name=follow_redirect,json=followRedirect,proto3" json:"follow_redirect,omitempty"` - UserLevel uint32 `protobuf:"varint,6,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_dokodemo_config_proto_msgTypes[0] - 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_proxy_dokodemo_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_proxy_dokodemo_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetAddress() *net.IPOrDomain { - if x != nil { - return x.Address - } - return nil -} - -func (x *Config) GetPort() uint32 { - if x != nil { - return x.Port - } - return 0 -} - -// Deprecated: Marked as deprecated in proxy/dokodemo/config.proto. -func (x *Config) GetNetworkList() *net.NetworkList { - if x != nil { - return x.NetworkList - } - return nil -} - -func (x *Config) GetNetworks() []net.Network { - if x != nil { - return x.Networks - } - return nil -} - -// Deprecated: Marked as deprecated in proxy/dokodemo/config.proto. -func (x *Config) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *Config) GetFollowRedirect() bool { - if x != nil { - return x.FollowRedirect - } - return false -} - -func (x *Config) GetUserLevel() uint32 { - if x != nil { - return x.UserLevel - } - return 0 -} - -var File_proxy_dokodemo_config_proto protoreflect.FileDescriptor - -var file_proxy_dokodemo_config_proto_rawDesc = []byte{ - 0x0a, 0x1b, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x64, 0x6f, 0x6b, 0x6f, 0x64, 0x65, 0x6d, 0x6f, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x64, 0x6f, 0x6b, 0x6f, 0x64, 0x65, - 0x6d, 0x6f, 0x1a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xb4, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x35, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, - 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x43, 0x0a, 0x0c, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x5f, 0x6c, 0x69, 0x73, 0x74, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, 0x74, - 0x42, 0x02, 0x18, 0x01, 0x52, 0x0b, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x4c, 0x69, 0x73, - 0x74, 0x12, 0x34, 0x0a, 0x08, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x18, 0x07, 0x20, - 0x03, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x08, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x73, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, - 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x27, 0x0a, 0x0f, 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, - 0x72, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0e, - 0x66, 0x6f, 0x6c, 0x6c, 0x6f, 0x77, 0x52, 0x65, 0x64, 0x69, 0x72, 0x65, 0x63, 0x74, 0x12, 0x1d, - 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0d, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x42, 0x5b, 0x0a, - 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x64, 0x6f, 0x6b, 0x6f, 0x64, 0x65, 0x6d, 0x6f, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, - 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x64, 0x6f, 0x6b, 0x6f, - 0x64, 0x65, 0x6d, 0x6f, 0xaa, 0x02, 0x13, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x44, 0x6f, 0x6b, 0x6f, 0x64, 0x65, 0x6d, 0x6f, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_proxy_dokodemo_config_proto_rawDescOnce sync.Once - file_proxy_dokodemo_config_proto_rawDescData = file_proxy_dokodemo_config_proto_rawDesc -) - -func file_proxy_dokodemo_config_proto_rawDescGZIP() []byte { - file_proxy_dokodemo_config_proto_rawDescOnce.Do(func() { - file_proxy_dokodemo_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_dokodemo_config_proto_rawDescData) - }) - return file_proxy_dokodemo_config_proto_rawDescData -} - -var file_proxy_dokodemo_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_proxy_dokodemo_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.proxy.dokodemo.Config - (*net.IPOrDomain)(nil), // 1: xray.common.net.IPOrDomain - (*net.NetworkList)(nil), // 2: xray.common.net.NetworkList - (net.Network)(0), // 3: xray.common.net.Network -} -var file_proxy_dokodemo_config_proto_depIdxs = []int32{ - 1, // 0: xray.proxy.dokodemo.Config.address:type_name -> xray.common.net.IPOrDomain - 2, // 1: xray.proxy.dokodemo.Config.network_list:type_name -> xray.common.net.NetworkList - 3, // 2: xray.proxy.dokodemo.Config.networks:type_name -> xray.common.net.Network - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_proxy_dokodemo_config_proto_init() } -func file_proxy_dokodemo_config_proto_init() { - if File_proxy_dokodemo_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_dokodemo_config_proto_msgTypes[0].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_proxy_dokodemo_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_dokodemo_config_proto_goTypes, - DependencyIndexes: file_proxy_dokodemo_config_proto_depIdxs, - MessageInfos: file_proxy_dokodemo_config_proto_msgTypes, - }.Build() - File_proxy_dokodemo_config_proto = out.File - file_proxy_dokodemo_config_proto_rawDesc = nil - file_proxy_dokodemo_config_proto_goTypes = nil - file_proxy_dokodemo_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/freedom/config.pb.go b/xray_api/proto/proxy/freedom/config.pb.go deleted file mode 100644 index db1304a..0000000 --- a/xray_api/proto/proxy/freedom/config.pb.go +++ /dev/null @@ -1,483 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/freedom/config.proto - -package freedom - -import ( - protocol "marzban-node/xray_api/proto/common/protocol" - 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 Config_DomainStrategy int32 - -const ( - Config_AS_IS Config_DomainStrategy = 0 - Config_USE_IP Config_DomainStrategy = 1 - Config_USE_IP4 Config_DomainStrategy = 2 - Config_USE_IP6 Config_DomainStrategy = 3 - Config_USE_IP46 Config_DomainStrategy = 4 - Config_USE_IP64 Config_DomainStrategy = 5 - Config_FORCE_IP Config_DomainStrategy = 6 - Config_FORCE_IP4 Config_DomainStrategy = 7 - Config_FORCE_IP6 Config_DomainStrategy = 8 - Config_FORCE_IP46 Config_DomainStrategy = 9 - Config_FORCE_IP64 Config_DomainStrategy = 10 -) - -// Enum value maps for Config_DomainStrategy. -var ( - Config_DomainStrategy_name = map[int32]string{ - 0: "AS_IS", - 1: "USE_IP", - 2: "USE_IP4", - 3: "USE_IP6", - 4: "USE_IP46", - 5: "USE_IP64", - 6: "FORCE_IP", - 7: "FORCE_IP4", - 8: "FORCE_IP6", - 9: "FORCE_IP46", - 10: "FORCE_IP64", - } - Config_DomainStrategy_value = map[string]int32{ - "AS_IS": 0, - "USE_IP": 1, - "USE_IP4": 2, - "USE_IP6": 3, - "USE_IP46": 4, - "USE_IP64": 5, - "FORCE_IP": 6, - "FORCE_IP4": 7, - "FORCE_IP6": 8, - "FORCE_IP46": 9, - "FORCE_IP64": 10, - } -) - -func (x Config_DomainStrategy) Enum() *Config_DomainStrategy { - p := new(Config_DomainStrategy) - *p = x - return p -} - -func (x Config_DomainStrategy) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Config_DomainStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_proxy_freedom_config_proto_enumTypes[0].Descriptor() -} - -func (Config_DomainStrategy) Type() protoreflect.EnumType { - return &file_proxy_freedom_config_proto_enumTypes[0] -} - -func (x Config_DomainStrategy) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Config_DomainStrategy.Descriptor instead. -func (Config_DomainStrategy) EnumDescriptor() ([]byte, []int) { - return file_proxy_freedom_config_proto_rawDescGZIP(), []int{2, 0} -} - -type DestinationOverride struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Server *protocol.ServerEndpoint `protobuf:"bytes,1,opt,name=server,proto3" json:"server,omitempty"` -} - -func (x *DestinationOverride) Reset() { - *x = DestinationOverride{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_freedom_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DestinationOverride) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DestinationOverride) ProtoMessage() {} - -func (x *DestinationOverride) ProtoReflect() protoreflect.Message { - mi := &file_proxy_freedom_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 DestinationOverride.ProtoReflect.Descriptor instead. -func (*DestinationOverride) Descriptor() ([]byte, []int) { - return file_proxy_freedom_config_proto_rawDescGZIP(), []int{0} -} - -func (x *DestinationOverride) GetServer() *protocol.ServerEndpoint { - if x != nil { - return x.Server - } - return nil -} - -type Fragment struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PacketsFrom uint64 `protobuf:"varint,1,opt,name=packets_from,json=packetsFrom,proto3" json:"packets_from,omitempty"` - PacketsTo uint64 `protobuf:"varint,2,opt,name=packets_to,json=packetsTo,proto3" json:"packets_to,omitempty"` - LengthMin uint64 `protobuf:"varint,3,opt,name=length_min,json=lengthMin,proto3" json:"length_min,omitempty"` - LengthMax uint64 `protobuf:"varint,4,opt,name=length_max,json=lengthMax,proto3" json:"length_max,omitempty"` - IntervalMin uint64 `protobuf:"varint,5,opt,name=interval_min,json=intervalMin,proto3" json:"interval_min,omitempty"` - IntervalMax uint64 `protobuf:"varint,6,opt,name=interval_max,json=intervalMax,proto3" json:"interval_max,omitempty"` -} - -func (x *Fragment) Reset() { - *x = Fragment{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_freedom_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Fragment) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Fragment) ProtoMessage() {} - -func (x *Fragment) ProtoReflect() protoreflect.Message { - mi := &file_proxy_freedom_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 Fragment.ProtoReflect.Descriptor instead. -func (*Fragment) Descriptor() ([]byte, []int) { - return file_proxy_freedom_config_proto_rawDescGZIP(), []int{1} -} - -func (x *Fragment) GetPacketsFrom() uint64 { - if x != nil { - return x.PacketsFrom - } - return 0 -} - -func (x *Fragment) GetPacketsTo() uint64 { - if x != nil { - return x.PacketsTo - } - return 0 -} - -func (x *Fragment) GetLengthMin() uint64 { - if x != nil { - return x.LengthMin - } - return 0 -} - -func (x *Fragment) GetLengthMax() uint64 { - if x != nil { - return x.LengthMax - } - return 0 -} - -func (x *Fragment) GetIntervalMin() uint64 { - if x != nil { - return x.IntervalMin - } - return 0 -} - -func (x *Fragment) GetIntervalMax() uint64 { - if x != nil { - return x.IntervalMax - } - return 0 -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - DomainStrategy Config_DomainStrategy `protobuf:"varint,1,opt,name=domain_strategy,json=domainStrategy,proto3,enum=xray.proxy.freedom.Config_DomainStrategy" json:"domain_strategy,omitempty"` - // Deprecated: Marked as deprecated in proxy/freedom/config.proto. - Timeout uint32 `protobuf:"varint,2,opt,name=timeout,proto3" json:"timeout,omitempty"` - DestinationOverride *DestinationOverride `protobuf:"bytes,3,opt,name=destination_override,json=destinationOverride,proto3" json:"destination_override,omitempty"` - UserLevel uint32 `protobuf:"varint,4,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` - Fragment *Fragment `protobuf:"bytes,5,opt,name=fragment,proto3" json:"fragment,omitempty"` - ProxyProtocol uint32 `protobuf:"varint,6,opt,name=proxy_protocol,json=proxyProtocol,proto3" json:"proxy_protocol,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_freedom_config_proto_msgTypes[2] - 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_proxy_freedom_config_proto_msgTypes[2] - 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_proxy_freedom_config_proto_rawDescGZIP(), []int{2} -} - -func (x *Config) GetDomainStrategy() Config_DomainStrategy { - if x != nil { - return x.DomainStrategy - } - return Config_AS_IS -} - -// Deprecated: Marked as deprecated in proxy/freedom/config.proto. -func (x *Config) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *Config) GetDestinationOverride() *DestinationOverride { - if x != nil { - return x.DestinationOverride - } - return nil -} - -func (x *Config) GetUserLevel() uint32 { - if x != nil { - return x.UserLevel - } - return 0 -} - -func (x *Config) GetFragment() *Fragment { - if x != nil { - return x.Fragment - } - return nil -} - -func (x *Config) GetProxyProtocol() uint32 { - if x != nil { - return x.ProxyProtocol - } - return 0 -} - -var File_proxy_freedom_config_proto protoreflect.FileDescriptor - -var file_proxy_freedom_config_proto_rawDesc = []byte{ - 0x0a, 0x1a, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x66, 0x72, 0x65, 0x65, 0x64, 0x6f, 0x6d, 0x2f, - 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x12, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x64, 0x6f, 0x6d, - 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x22, 0x53, 0x0a, 0x13, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x65, - 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0xd0, 0x01, 0x0a, 0x08, 0x46, 0x72, 0x61, - 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x73, - 0x5f, 0x66, 0x72, 0x6f, 0x6d, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x70, 0x61, 0x63, - 0x6b, 0x65, 0x74, 0x73, 0x46, 0x72, 0x6f, 0x6d, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x61, 0x63, 0x6b, - 0x65, 0x74, 0x73, 0x5f, 0x74, 0x6f, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x70, 0x61, - 0x63, 0x6b, 0x65, 0x74, 0x73, 0x54, 0x6f, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x6e, 0x67, 0x74, - 0x68, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6c, 0x65, 0x6e, - 0x67, 0x74, 0x68, 0x4d, 0x69, 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x6c, 0x65, 0x6e, 0x67, 0x74, 0x68, - 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x09, 0x6c, 0x65, 0x6e, 0x67, - 0x74, 0x68, 0x4d, 0x61, 0x78, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, - 0x6c, 0x5f, 0x6d, 0x69, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, 0x69, 0x6e, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x76, 0x61, 0x6c, 0x5f, 0x6d, 0x61, 0x78, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x4d, 0x61, 0x78, 0x22, 0x82, 0x04, 0x0a, 0x06, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x52, 0x0a, 0x0f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, - 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, - 0x29, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x66, 0x72, 0x65, - 0x65, 0x64, 0x6f, 0x6d, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0e, 0x64, 0x6f, 0x6d, 0x61, - 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, - 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x5a, 0x0a, 0x14, 0x64, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x64, 0x6f, 0x6d, 0x2e, 0x44, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, 0x72, 0x69, 0x64, 0x65, 0x52, - 0x13, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x4f, 0x76, 0x65, 0x72, - 0x72, 0x69, 0x64, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, 0x65, - 0x76, 0x65, 0x6c, 0x12, 0x38, 0x0a, 0x08, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x64, 0x6f, 0x6d, 0x2e, 0x46, 0x72, 0x61, 0x67, 0x6d, - 0x65, 0x6e, 0x74, 0x52, 0x08, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x12, 0x25, 0x0a, - 0x0e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0d, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x22, 0xa9, 0x01, 0x0a, 0x0e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, - 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x53, 0x5f, 0x49, 0x53, - 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, 0x10, 0x01, 0x12, 0x0b, - 0x0a, 0x07, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, 0x34, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x55, - 0x53, 0x45, 0x5f, 0x49, 0x50, 0x36, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x53, 0x45, 0x5f, - 0x49, 0x50, 0x34, 0x36, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, - 0x36, 0x34, 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, - 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x34, 0x10, - 0x07, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x36, 0x10, 0x08, - 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x34, 0x36, 0x10, 0x09, - 0x12, 0x0e, 0x0a, 0x0a, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x36, 0x34, 0x10, 0x0a, - 0x42, 0x58, 0x0a, 0x16, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x66, 0x72, 0x65, 0x65, 0x64, 0x6f, 0x6d, 0x50, 0x01, 0x5a, 0x27, 0x67, 0x69, - 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, - 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x66, 0x72, - 0x65, 0x65, 0x64, 0x6f, 0x6d, 0xaa, 0x02, 0x12, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x46, 0x72, 0x65, 0x65, 0x64, 0x6f, 0x6d, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_proxy_freedom_config_proto_rawDescOnce sync.Once - file_proxy_freedom_config_proto_rawDescData = file_proxy_freedom_config_proto_rawDesc -) - -func file_proxy_freedom_config_proto_rawDescGZIP() []byte { - file_proxy_freedom_config_proto_rawDescOnce.Do(func() { - file_proxy_freedom_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_freedom_config_proto_rawDescData) - }) - return file_proxy_freedom_config_proto_rawDescData -} - -var file_proxy_freedom_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_proxy_freedom_config_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_proxy_freedom_config_proto_goTypes = []interface{}{ - (Config_DomainStrategy)(0), // 0: xray.proxy.freedom.Config.DomainStrategy - (*DestinationOverride)(nil), // 1: xray.proxy.freedom.DestinationOverride - (*Fragment)(nil), // 2: xray.proxy.freedom.Fragment - (*Config)(nil), // 3: xray.proxy.freedom.Config - (*protocol.ServerEndpoint)(nil), // 4: xray.common.protocol.ServerEndpoint -} -var file_proxy_freedom_config_proto_depIdxs = []int32{ - 4, // 0: xray.proxy.freedom.DestinationOverride.server:type_name -> xray.common.protocol.ServerEndpoint - 0, // 1: xray.proxy.freedom.Config.domain_strategy:type_name -> xray.proxy.freedom.Config.DomainStrategy - 1, // 2: xray.proxy.freedom.Config.destination_override:type_name -> xray.proxy.freedom.DestinationOverride - 2, // 3: xray.proxy.freedom.Config.fragment:type_name -> xray.proxy.freedom.Fragment - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name -} - -func init() { file_proxy_freedom_config_proto_init() } -func file_proxy_freedom_config_proto_init() { - if File_proxy_freedom_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_freedom_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DestinationOverride); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_freedom_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Fragment); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_freedom_config_proto_msgTypes[2].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_proxy_freedom_config_proto_rawDesc, - NumEnums: 1, - NumMessages: 3, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_freedom_config_proto_goTypes, - DependencyIndexes: file_proxy_freedom_config_proto_depIdxs, - EnumInfos: file_proxy_freedom_config_proto_enumTypes, - MessageInfos: file_proxy_freedom_config_proto_msgTypes, - }.Build() - File_proxy_freedom_config_proto = out.File - file_proxy_freedom_config_proto_rawDesc = nil - file_proxy_freedom_config_proto_goTypes = nil - file_proxy_freedom_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/http/config.pb.go b/xray_api/proto/proxy/http/config.pb.go deleted file mode 100644 index fd0e5eb..0000000 --- a/xray_api/proto/proxy/http/config.pb.go +++ /dev/null @@ -1,417 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/http/config.proto - -package http - -import ( - protocol "marzban-node/xray_api/proto/common/protocol" - 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 Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` -} - -func (x *Account) Reset() { - *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_http_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Account) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Account) ProtoMessage() {} - -func (x *Account) ProtoReflect() protoreflect.Message { - mi := &file_proxy_http_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 Account.ProtoReflect.Descriptor instead. -func (*Account) Descriptor() ([]byte, []int) { - return file_proxy_http_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Account) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *Account) GetPassword() string { - if x != nil { - return x.Password - } - return "" -} - -// Config for HTTP proxy server. -type ServerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Deprecated: Marked as deprecated in proxy/http/config.proto. - Timeout uint32 `protobuf:"varint,1,opt,name=timeout,proto3" json:"timeout,omitempty"` - Accounts map[string]string `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - AllowTransparent bool `protobuf:"varint,3,opt,name=allow_transparent,json=allowTransparent,proto3" json:"allow_transparent,omitempty"` - UserLevel uint32 `protobuf:"varint,4,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` -} - -func (x *ServerConfig) Reset() { - *x = ServerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_http_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ServerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ServerConfig) ProtoMessage() {} - -func (x *ServerConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_http_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 ServerConfig.ProtoReflect.Descriptor instead. -func (*ServerConfig) Descriptor() ([]byte, []int) { - return file_proxy_http_config_proto_rawDescGZIP(), []int{1} -} - -// Deprecated: Marked as deprecated in proxy/http/config.proto. -func (x *ServerConfig) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ServerConfig) GetAccounts() map[string]string { - if x != nil { - return x.Accounts - } - return nil -} - -func (x *ServerConfig) GetAllowTransparent() bool { - if x != nil { - return x.AllowTransparent - } - return false -} - -func (x *ServerConfig) GetUserLevel() uint32 { - if x != nil { - return x.UserLevel - } - return 0 -} - -type Header struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Value string `protobuf:"bytes,2,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *Header) Reset() { - *x = Header{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_http_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Header) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Header) ProtoMessage() {} - -func (x *Header) ProtoReflect() protoreflect.Message { - mi := &file_proxy_http_config_proto_msgTypes[2] - 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 Header.ProtoReflect.Descriptor instead. -func (*Header) Descriptor() ([]byte, []int) { - return file_proxy_http_config_proto_rawDescGZIP(), []int{2} -} - -func (x *Header) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *Header) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -// ClientConfig is the protobuf config for HTTP proxy client. -type ClientConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Sever is a list of HTTP server addresses. - Server []*protocol.ServerEndpoint `protobuf:"bytes,1,rep,name=server,proto3" json:"server,omitempty"` - Header []*Header `protobuf:"bytes,2,rep,name=header,proto3" json:"header,omitempty"` -} - -func (x *ClientConfig) Reset() { - *x = ClientConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_http_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClientConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientConfig) ProtoMessage() {} - -func (x *ClientConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_http_config_proto_msgTypes[3] - 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 ClientConfig.ProtoReflect.Descriptor instead. -func (*ClientConfig) Descriptor() ([]byte, []int) { - return file_proxy_http_config_proto_rawDescGZIP(), []int{3} -} - -func (x *ClientConfig) GetServer() []*protocol.ServerEndpoint { - if x != nil { - return x.Server - } - return nil -} - -func (x *ClientConfig) GetHeader() []*Header { - if x != nil { - return x.Header - } - return nil -} - -var File_proxy_http_config_proto protoreflect.FileDescriptor - -var file_proxy_http_config_proto_rawDesc = []byte{ - 0x0a, 0x17, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x0f, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x41, 0x0a, - 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x22, 0xfe, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, - 0x47, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, - 0x74, 0x74, 0x70, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, - 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, 0x12, 0x2b, 0x0a, 0x11, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x5f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x61, 0x72, 0x65, 0x6e, 0x74, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x10, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x61, 0x72, 0x65, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x4c, - 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3b, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, - 0x01, 0x22, 0x30, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x10, 0x0a, 0x03, 0x6b, - 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, - 0x6c, 0x75, 0x65, 0x22, 0x7d, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x12, 0x2f, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x17, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, - 0x74, 0x74, 0x70, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x42, 0x4f, 0x0a, 0x13, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x50, 0x01, 0x5a, 0x24, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, - 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x68, 0x74, 0x74, - 0x70, 0xaa, 0x02, 0x0f, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x48, - 0x74, 0x74, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_http_config_proto_rawDescOnce sync.Once - file_proxy_http_config_proto_rawDescData = file_proxy_http_config_proto_rawDesc -) - -func file_proxy_http_config_proto_rawDescGZIP() []byte { - file_proxy_http_config_proto_rawDescOnce.Do(func() { - file_proxy_http_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_http_config_proto_rawDescData) - }) - return file_proxy_http_config_proto_rawDescData -} - -var file_proxy_http_config_proto_msgTypes = make([]protoimpl.MessageInfo, 5) -var file_proxy_http_config_proto_goTypes = []interface{}{ - (*Account)(nil), // 0: xray.proxy.http.Account - (*ServerConfig)(nil), // 1: xray.proxy.http.ServerConfig - (*Header)(nil), // 2: xray.proxy.http.Header - (*ClientConfig)(nil), // 3: xray.proxy.http.ClientConfig - nil, // 4: xray.proxy.http.ServerConfig.AccountsEntry - (*protocol.ServerEndpoint)(nil), // 5: xray.common.protocol.ServerEndpoint -} -var file_proxy_http_config_proto_depIdxs = []int32{ - 4, // 0: xray.proxy.http.ServerConfig.accounts:type_name -> xray.proxy.http.ServerConfig.AccountsEntry - 5, // 1: xray.proxy.http.ClientConfig.server:type_name -> xray.common.protocol.ServerEndpoint - 2, // 2: xray.proxy.http.ClientConfig.header:type_name -> xray.proxy.http.Header - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_proxy_http_config_proto_init() } -func file_proxy_http_config_proto_init() { - if File_proxy_http_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_http_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_http_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_http_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Header); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_http_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClientConfig); 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_proxy_http_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 5, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_http_config_proto_goTypes, - DependencyIndexes: file_proxy_http_config_proto_depIdxs, - MessageInfos: file_proxy_http_config_proto_msgTypes, - }.Build() - File_proxy_http_config_proto = out.File - file_proxy_http_config_proto_rawDesc = nil - file_proxy_http_config_proto_goTypes = nil - file_proxy_http_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/loopback/config.pb.go b/xray_api/proto/proxy/loopback/config.pb.go deleted file mode 100644 index f66696e..0000000 --- a/xray_api/proto/proxy/loopback/config.pb.go +++ /dev/null @@ -1,149 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/loopback/config.proto - -package loopback - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - InboundTag string `protobuf:"bytes,1,opt,name=inbound_tag,json=inboundTag,proto3" json:"inbound_tag,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_loopback_config_proto_msgTypes[0] - 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_proxy_loopback_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_proxy_loopback_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetInboundTag() string { - if x != nil { - return x.InboundTag - } - return "" -} - -var File_proxy_loopback_config_proto protoreflect.FileDescriptor - -var file_proxy_loopback_config_proto_rawDesc = []byte{ - 0x0a, 0x1b, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x13, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, - 0x63, 0x6b, 0x22, 0x29, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1f, 0x0a, 0x0b, - 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x5f, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0a, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x54, 0x61, 0x67, 0x42, 0x5b, 0x0a, - 0x17, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x6c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x50, 0x01, 0x5a, 0x28, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, - 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x6c, 0x6f, 0x6f, 0x70, - 0x62, 0x61, 0x63, 0x6b, 0xaa, 0x02, 0x13, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x4c, 0x6f, 0x6f, 0x70, 0x62, 0x61, 0x63, 0x6b, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_proxy_loopback_config_proto_rawDescOnce sync.Once - file_proxy_loopback_config_proto_rawDescData = file_proxy_loopback_config_proto_rawDesc -) - -func file_proxy_loopback_config_proto_rawDescGZIP() []byte { - file_proxy_loopback_config_proto_rawDescOnce.Do(func() { - file_proxy_loopback_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_loopback_config_proto_rawDescData) - }) - return file_proxy_loopback_config_proto_rawDescData -} - -var file_proxy_loopback_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_proxy_loopback_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.proxy.loopback.Config -} -var file_proxy_loopback_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_proxy_loopback_config_proto_init() } -func file_proxy_loopback_config_proto_init() { - if File_proxy_loopback_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_loopback_config_proto_msgTypes[0].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_proxy_loopback_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_loopback_config_proto_goTypes, - DependencyIndexes: file_proxy_loopback_config_proto_depIdxs, - MessageInfos: file_proxy_loopback_config_proto_msgTypes, - }.Build() - File_proxy_loopback_config_proto = out.File - file_proxy_loopback_config_proto_rawDesc = nil - file_proxy_loopback_config_proto_goTypes = nil - file_proxy_loopback_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/shadowsocks/config.pb.go b/xray_api/proto/proxy/shadowsocks/config.pb.go deleted file mode 100644 index a5b32a9..0000000 --- a/xray_api/proto/proxy/shadowsocks/config.pb.go +++ /dev/null @@ -1,395 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/shadowsocks/config.proto - -package shadowsocks - -import ( - net "marzban-node/xray_api/proto/common/net" - protocol "marzban-node/xray_api/proto/common/protocol" - 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 CipherType int32 - -const ( - CipherType_UNKNOWN CipherType = 0 - CipherType_AES_128_GCM CipherType = 5 - CipherType_AES_256_GCM CipherType = 6 - CipherType_CHACHA20_POLY1305 CipherType = 7 - CipherType_XCHACHA20_POLY1305 CipherType = 8 - CipherType_NONE CipherType = 9 -) - -// Enum value maps for CipherType. -var ( - CipherType_name = map[int32]string{ - 0: "UNKNOWN", - 5: "AES_128_GCM", - 6: "AES_256_GCM", - 7: "CHACHA20_POLY1305", - 8: "XCHACHA20_POLY1305", - 9: "NONE", - } - CipherType_value = map[string]int32{ - "UNKNOWN": 0, - "AES_128_GCM": 5, - "AES_256_GCM": 6, - "CHACHA20_POLY1305": 7, - "XCHACHA20_POLY1305": 8, - "NONE": 9, - } -) - -func (x CipherType) Enum() *CipherType { - p := new(CipherType) - *p = x - return p -} - -func (x CipherType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (CipherType) Descriptor() protoreflect.EnumDescriptor { - return file_proxy_shadowsocks_config_proto_enumTypes[0].Descriptor() -} - -func (CipherType) Type() protoreflect.EnumType { - return &file_proxy_shadowsocks_config_proto_enumTypes[0] -} - -func (x CipherType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use CipherType.Descriptor instead. -func (CipherType) EnumDescriptor() ([]byte, []int) { - return file_proxy_shadowsocks_config_proto_rawDescGZIP(), []int{0} -} - -type Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` - CipherType CipherType `protobuf:"varint,2,opt,name=cipher_type,json=cipherType,proto3,enum=xray.proxy.shadowsocks.CipherType" json:"cipher_type,omitempty"` - IvCheck bool `protobuf:"varint,3,opt,name=iv_check,json=ivCheck,proto3" json:"iv_check,omitempty"` -} - -func (x *Account) Reset() { - *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_shadowsocks_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Account) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Account) ProtoMessage() {} - -func (x *Account) ProtoReflect() protoreflect.Message { - mi := &file_proxy_shadowsocks_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 Account.ProtoReflect.Descriptor instead. -func (*Account) Descriptor() ([]byte, []int) { - return file_proxy_shadowsocks_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Account) GetPassword() string { - if x != nil { - return x.Password - } - return "" -} - -func (x *Account) GetCipherType() CipherType { - if x != nil { - return x.CipherType - } - return CipherType_UNKNOWN -} - -func (x *Account) GetIvCheck() bool { - if x != nil { - return x.IvCheck - } - return false -} - -type ServerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Users []*protocol.User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` - Network []net.Network `protobuf:"varint,2,rep,packed,name=network,proto3,enum=xray.common.net.Network" json:"network,omitempty"` -} - -func (x *ServerConfig) Reset() { - *x = ServerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_shadowsocks_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ServerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ServerConfig) ProtoMessage() {} - -func (x *ServerConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_shadowsocks_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 ServerConfig.ProtoReflect.Descriptor instead. -func (*ServerConfig) Descriptor() ([]byte, []int) { - return file_proxy_shadowsocks_config_proto_rawDescGZIP(), []int{1} -} - -func (x *ServerConfig) GetUsers() []*protocol.User { - if x != nil { - return x.Users - } - return nil -} - -func (x *ServerConfig) GetNetwork() []net.Network { - if x != nil { - return x.Network - } - return nil -} - -type ClientConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Server []*protocol.ServerEndpoint `protobuf:"bytes,1,rep,name=server,proto3" json:"server,omitempty"` -} - -func (x *ClientConfig) Reset() { - *x = ClientConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_shadowsocks_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClientConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientConfig) ProtoMessage() {} - -func (x *ClientConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_shadowsocks_config_proto_msgTypes[2] - 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 ClientConfig.ProtoReflect.Descriptor instead. -func (*ClientConfig) Descriptor() ([]byte, []int) { - return file_proxy_shadowsocks_config_proto_rawDescGZIP(), []int{2} -} - -func (x *ClientConfig) GetServer() []*protocol.ServerEndpoint { - if x != nil { - return x.Server - } - return nil -} - -var File_proxy_shadowsocks_config_proto protoreflect.FileDescriptor - -var file_proxy_shadowsocks_config_proto_rawDesc = []byte{ - 0x0a, 0x1e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, - 0x63, 0x6b, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x16, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, - 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x1a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, - 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x1a, 0x1a, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x63, 0x6f, 0x6c, 0x2f, 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x85, 0x01, 0x0a, 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x43, 0x0a, 0x0b, 0x63, 0x69, 0x70, - 0x68, 0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x22, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, - 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x2e, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, - 0x70, 0x65, 0x52, 0x0a, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x19, - 0x0a, 0x08, 0x69, 0x76, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x07, 0x69, 0x76, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x22, 0x74, 0x0a, 0x0c, 0x53, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x65, - 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x22, - 0x4c, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x3c, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x24, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x64, - 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x2a, 0x74, 0x0a, - 0x0a, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x55, - 0x4e, 0x4b, 0x4e, 0x4f, 0x57, 0x4e, 0x10, 0x00, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x45, 0x53, 0x5f, - 0x31, 0x32, 0x38, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x41, 0x45, 0x53, - 0x5f, 0x32, 0x35, 0x36, 0x5f, 0x47, 0x43, 0x4d, 0x10, 0x06, 0x12, 0x15, 0x0a, 0x11, 0x43, 0x48, - 0x41, 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x10, - 0x07, 0x12, 0x16, 0x0a, 0x12, 0x58, 0x43, 0x48, 0x41, 0x43, 0x48, 0x41, 0x32, 0x30, 0x5f, 0x50, - 0x4f, 0x4c, 0x59, 0x31, 0x33, 0x30, 0x35, 0x10, 0x08, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x4f, 0x4e, - 0x45, 0x10, 0x09, 0x42, 0x64, 0x0a, 0x1a, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, - 0x73, 0x50, 0x01, 0x5a, 0x2b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, - 0xaa, 0x02, 0x16, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x53, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} - -var ( - file_proxy_shadowsocks_config_proto_rawDescOnce sync.Once - file_proxy_shadowsocks_config_proto_rawDescData = file_proxy_shadowsocks_config_proto_rawDesc -) - -func file_proxy_shadowsocks_config_proto_rawDescGZIP() []byte { - file_proxy_shadowsocks_config_proto_rawDescOnce.Do(func() { - file_proxy_shadowsocks_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_shadowsocks_config_proto_rawDescData) - }) - return file_proxy_shadowsocks_config_proto_rawDescData -} - -var file_proxy_shadowsocks_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_proxy_shadowsocks_config_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_proxy_shadowsocks_config_proto_goTypes = []interface{}{ - (CipherType)(0), // 0: xray.proxy.shadowsocks.CipherType - (*Account)(nil), // 1: xray.proxy.shadowsocks.Account - (*ServerConfig)(nil), // 2: xray.proxy.shadowsocks.ServerConfig - (*ClientConfig)(nil), // 3: xray.proxy.shadowsocks.ClientConfig - (*protocol.User)(nil), // 4: xray.common.protocol.User - (net.Network)(0), // 5: xray.common.net.Network - (*protocol.ServerEndpoint)(nil), // 6: xray.common.protocol.ServerEndpoint -} -var file_proxy_shadowsocks_config_proto_depIdxs = []int32{ - 0, // 0: xray.proxy.shadowsocks.Account.cipher_type:type_name -> xray.proxy.shadowsocks.CipherType - 4, // 1: xray.proxy.shadowsocks.ServerConfig.users:type_name -> xray.common.protocol.User - 5, // 2: xray.proxy.shadowsocks.ServerConfig.network:type_name -> xray.common.net.Network - 6, // 3: xray.proxy.shadowsocks.ClientConfig.server:type_name -> xray.common.protocol.ServerEndpoint - 4, // [4:4] is the sub-list for method output_type - 4, // [4:4] is the sub-list for method input_type - 4, // [4:4] is the sub-list for extension type_name - 4, // [4:4] is the sub-list for extension extendee - 0, // [0:4] is the sub-list for field type_name -} - -func init() { file_proxy_shadowsocks_config_proto_init() } -func file_proxy_shadowsocks_config_proto_init() { - if File_proxy_shadowsocks_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_shadowsocks_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_shadowsocks_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_shadowsocks_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClientConfig); 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_proxy_shadowsocks_config_proto_rawDesc, - NumEnums: 1, - NumMessages: 3, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_shadowsocks_config_proto_goTypes, - DependencyIndexes: file_proxy_shadowsocks_config_proto_depIdxs, - EnumInfos: file_proxy_shadowsocks_config_proto_enumTypes, - MessageInfos: file_proxy_shadowsocks_config_proto_msgTypes, - }.Build() - File_proxy_shadowsocks_config_proto = out.File - file_proxy_shadowsocks_config_proto_rawDesc = nil - file_proxy_shadowsocks_config_proto_goTypes = nil - file_proxy_shadowsocks_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/shadowsocks_2022/config.pb.go b/xray_api/proto/proxy/shadowsocks_2022/config.pb.go deleted file mode 100644 index a3021d6..0000000 --- a/xray_api/proto/proxy/shadowsocks_2022/config.pb.go +++ /dev/null @@ -1,691 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/shadowsocks_2022/config.proto - -package shadowsocks_2022 - -import ( - net "marzban-node/xray_api/proto/common/net" - 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 ServerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"` - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Email string `protobuf:"bytes,3,opt,name=email,proto3" json:"email,omitempty"` - Level int32 `protobuf:"varint,4,opt,name=level,proto3" json:"level,omitempty"` - Network []net.Network `protobuf:"varint,5,rep,packed,name=network,proto3,enum=xray.common.net.Network" json:"network,omitempty"` -} - -func (x *ServerConfig) Reset() { - *x = ServerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_shadowsocks_2022_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ServerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ServerConfig) ProtoMessage() {} - -func (x *ServerConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_shadowsocks_2022_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 ServerConfig.ProtoReflect.Descriptor instead. -func (*ServerConfig) Descriptor() ([]byte, []int) { - return file_proxy_shadowsocks_2022_config_proto_rawDescGZIP(), []int{0} -} - -func (x *ServerConfig) GetMethod() string { - if x != nil { - return x.Method - } - return "" -} - -func (x *ServerConfig) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *ServerConfig) GetEmail() string { - if x != nil { - return x.Email - } - return "" -} - -func (x *ServerConfig) GetLevel() int32 { - if x != nil { - return x.Level - } - return 0 -} - -func (x *ServerConfig) GetNetwork() []net.Network { - if x != nil { - return x.Network - } - return nil -} - -type MultiUserServerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"` - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Users []*User `protobuf:"bytes,3,rep,name=users,proto3" json:"users,omitempty"` - Network []net.Network `protobuf:"varint,4,rep,packed,name=network,proto3,enum=xray.common.net.Network" json:"network,omitempty"` -} - -func (x *MultiUserServerConfig) Reset() { - *x = MultiUserServerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_shadowsocks_2022_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiUserServerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiUserServerConfig) ProtoMessage() {} - -func (x *MultiUserServerConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_shadowsocks_2022_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 MultiUserServerConfig.ProtoReflect.Descriptor instead. -func (*MultiUserServerConfig) Descriptor() ([]byte, []int) { - return file_proxy_shadowsocks_2022_config_proto_rawDescGZIP(), []int{1} -} - -func (x *MultiUserServerConfig) GetMethod() string { - if x != nil { - return x.Method - } - return "" -} - -func (x *MultiUserServerConfig) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *MultiUserServerConfig) GetUsers() []*User { - if x != nil { - return x.Users - } - return nil -} - -func (x *MultiUserServerConfig) GetNetwork() []net.Network { - if x != nil { - return x.Network - } - return nil -} - -type RelayDestination struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Address *net.IPOrDomain `protobuf:"bytes,2,opt,name=address,proto3" json:"address,omitempty"` - Port uint32 `protobuf:"varint,3,opt,name=port,proto3" json:"port,omitempty"` - Email string `protobuf:"bytes,4,opt,name=email,proto3" json:"email,omitempty"` - Level int32 `protobuf:"varint,5,opt,name=level,proto3" json:"level,omitempty"` -} - -func (x *RelayDestination) Reset() { - *x = RelayDestination{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_shadowsocks_2022_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RelayDestination) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RelayDestination) ProtoMessage() {} - -func (x *RelayDestination) ProtoReflect() protoreflect.Message { - mi := &file_proxy_shadowsocks_2022_config_proto_msgTypes[2] - 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 RelayDestination.ProtoReflect.Descriptor instead. -func (*RelayDestination) Descriptor() ([]byte, []int) { - return file_proxy_shadowsocks_2022_config_proto_rawDescGZIP(), []int{2} -} - -func (x *RelayDestination) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *RelayDestination) GetAddress() *net.IPOrDomain { - if x != nil { - return x.Address - } - return nil -} - -func (x *RelayDestination) GetPort() uint32 { - if x != nil { - return x.Port - } - return 0 -} - -func (x *RelayDestination) GetEmail() string { - if x != nil { - return x.Email - } - return "" -} - -func (x *RelayDestination) GetLevel() int32 { - if x != nil { - return x.Level - } - return 0 -} - -type RelayServerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Method string `protobuf:"bytes,1,opt,name=method,proto3" json:"method,omitempty"` - Key string `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Destinations []*RelayDestination `protobuf:"bytes,3,rep,name=destinations,proto3" json:"destinations,omitempty"` - Network []net.Network `protobuf:"varint,4,rep,packed,name=network,proto3,enum=xray.common.net.Network" json:"network,omitempty"` -} - -func (x *RelayServerConfig) Reset() { - *x = RelayServerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_shadowsocks_2022_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RelayServerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RelayServerConfig) ProtoMessage() {} - -func (x *RelayServerConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_shadowsocks_2022_config_proto_msgTypes[3] - 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 RelayServerConfig.ProtoReflect.Descriptor instead. -func (*RelayServerConfig) Descriptor() ([]byte, []int) { - return file_proxy_shadowsocks_2022_config_proto_rawDescGZIP(), []int{3} -} - -func (x *RelayServerConfig) GetMethod() string { - if x != nil { - return x.Method - } - return "" -} - -func (x *RelayServerConfig) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *RelayServerConfig) GetDestinations() []*RelayDestination { - if x != nil { - return x.Destinations - } - return nil -} - -func (x *RelayServerConfig) GetNetwork() []net.Network { - if x != nil { - return x.Network - } - return nil -} - -type User struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Email string `protobuf:"bytes,2,opt,name=email,proto3" json:"email,omitempty"` - Level int32 `protobuf:"varint,3,opt,name=level,proto3" json:"level,omitempty"` -} - -func (x *User) Reset() { - *x = User{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_shadowsocks_2022_config_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *User) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*User) ProtoMessage() {} - -func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_proxy_shadowsocks_2022_config_proto_msgTypes[4] - 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 User.ProtoReflect.Descriptor instead. -func (*User) Descriptor() ([]byte, []int) { - return file_proxy_shadowsocks_2022_config_proto_rawDescGZIP(), []int{4} -} - -func (x *User) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *User) GetEmail() string { - if x != nil { - return x.Email - } - return "" -} - -func (x *User) GetLevel() int32 { - if x != nil { - return x.Level - } - return 0 -} - -type ClientConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Address *net.IPOrDomain `protobuf:"bytes,1,opt,name=address,proto3" json:"address,omitempty"` - Port uint32 `protobuf:"varint,2,opt,name=port,proto3" json:"port,omitempty"` - Method string `protobuf:"bytes,3,opt,name=method,proto3" json:"method,omitempty"` - Key string `protobuf:"bytes,4,opt,name=key,proto3" json:"key,omitempty"` - UdpOverTcp bool `protobuf:"varint,5,opt,name=udp_over_tcp,json=udpOverTcp,proto3" json:"udp_over_tcp,omitempty"` - UdpOverTcpVersion uint32 `protobuf:"varint,6,opt,name=udp_over_tcp_version,json=udpOverTcpVersion,proto3" json:"udp_over_tcp_version,omitempty"` -} - -func (x *ClientConfig) Reset() { - *x = ClientConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_shadowsocks_2022_config_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClientConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientConfig) ProtoMessage() {} - -func (x *ClientConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_shadowsocks_2022_config_proto_msgTypes[5] - 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 ClientConfig.ProtoReflect.Descriptor instead. -func (*ClientConfig) Descriptor() ([]byte, []int) { - return file_proxy_shadowsocks_2022_config_proto_rawDescGZIP(), []int{5} -} - -func (x *ClientConfig) GetAddress() *net.IPOrDomain { - if x != nil { - return x.Address - } - return nil -} - -func (x *ClientConfig) GetPort() uint32 { - if x != nil { - return x.Port - } - return 0 -} - -func (x *ClientConfig) GetMethod() string { - if x != nil { - return x.Method - } - return "" -} - -func (x *ClientConfig) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *ClientConfig) GetUdpOverTcp() bool { - if x != nil { - return x.UdpOverTcp - } - return false -} - -func (x *ClientConfig) GetUdpOverTcpVersion() uint32 { - if x != nil { - return x.UdpOverTcpVersion - } - return 0 -} - -var File_proxy_shadowsocks_2022_config_proto protoreflect.FileDescriptor - -var file_proxy_shadowsocks_2022_config_proto_rawDesc = []byte{ - 0x0a, 0x23, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, - 0x63, 0x6b, 0x73, 0x5f, 0x32, 0x30, 0x32, 0x32, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x5f, 0x32, 0x30, - 0x32, 0x32, 0x1a, 0x18, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x6e, - 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x18, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x98, 0x01, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x12, 0x32, 0x0a, - 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x05, 0x20, 0x03, 0x28, 0x0e, 0x32, 0x18, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, - 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, - 0x6b, 0x22, 0xae, 0x01, 0x0a, 0x15, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x55, 0x73, 0x65, 0x72, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6d, - 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x37, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x03, - 0x20, 0x03, 0x28, 0x0b, 0x32, 0x21, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x5f, 0x32, 0x30, - 0x32, 0x32, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x32, - 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0e, 0x32, - 0x18, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, - 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, - 0x72, 0x6b, 0x22, 0x9b, 0x01, 0x0a, 0x10, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x44, 0x65, 0x73, 0x74, - 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x35, 0x0a, 0x07, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4f, - 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, - 0x70, 0x6f, 0x72, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, - 0x76, 0x65, 0x6c, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x22, 0xc4, 0x01, 0x0a, 0x11, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, - 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x10, - 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, - 0x12, 0x51, 0x0a, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x73, - 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x5f, - 0x32, 0x30, 0x32, 0x32, 0x2e, 0x52, 0x65, 0x6c, 0x61, 0x79, 0x44, 0x65, 0x73, 0x74, 0x69, 0x6e, - 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x0c, 0x64, 0x65, 0x73, 0x74, 0x69, 0x6e, 0x61, 0x74, 0x69, - 0x6f, 0x6e, 0x73, 0x12, 0x32, 0x0a, 0x07, 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x18, 0x04, - 0x20, 0x03, 0x28, 0x0e, 0x32, 0x18, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x6e, 0x65, 0x74, 0x2e, 0x4e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x52, 0x07, - 0x6e, 0x65, 0x74, 0x77, 0x6f, 0x72, 0x6b, 0x22, 0x44, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, 0xd6, 0x01, - 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x35, - 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x1b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x6e, 0x65, - 0x74, 0x2e, 0x49, 0x50, 0x4f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x07, 0x61, 0x64, - 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x04, 0x70, 0x6f, 0x72, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, - 0x64, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x20, 0x0a, 0x0c, 0x75, 0x64, 0x70, 0x5f, 0x6f, 0x76, 0x65, 0x72, 0x5f, - 0x74, 0x63, 0x70, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x64, 0x70, 0x4f, 0x76, - 0x65, 0x72, 0x54, 0x63, 0x70, 0x12, 0x2f, 0x0a, 0x14, 0x75, 0x64, 0x70, 0x5f, 0x6f, 0x76, 0x65, - 0x72, 0x5f, 0x74, 0x63, 0x70, 0x5f, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x11, 0x75, 0x64, 0x70, 0x4f, 0x76, 0x65, 0x72, 0x54, 0x63, 0x70, 0x56, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x72, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, - 0x6f, 0x63, 0x6b, 0x73, 0x5f, 0x32, 0x30, 0x32, 0x32, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, - 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x73, 0x68, 0x61, - 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x5f, 0x32, 0x30, 0x32, 0x32, 0xaa, 0x02, 0x1a, - 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, - 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x32, 0x30, 0x32, 0x32, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_proxy_shadowsocks_2022_config_proto_rawDescOnce sync.Once - file_proxy_shadowsocks_2022_config_proto_rawDescData = file_proxy_shadowsocks_2022_config_proto_rawDesc -) - -func file_proxy_shadowsocks_2022_config_proto_rawDescGZIP() []byte { - file_proxy_shadowsocks_2022_config_proto_rawDescOnce.Do(func() { - file_proxy_shadowsocks_2022_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_shadowsocks_2022_config_proto_rawDescData) - }) - return file_proxy_shadowsocks_2022_config_proto_rawDescData -} - -var file_proxy_shadowsocks_2022_config_proto_msgTypes = make([]protoimpl.MessageInfo, 6) -var file_proxy_shadowsocks_2022_config_proto_goTypes = []interface{}{ - (*ServerConfig)(nil), // 0: xray.proxy.shadowsocks_2022.ServerConfig - (*MultiUserServerConfig)(nil), // 1: xray.proxy.shadowsocks_2022.MultiUserServerConfig - (*RelayDestination)(nil), // 2: xray.proxy.shadowsocks_2022.RelayDestination - (*RelayServerConfig)(nil), // 3: xray.proxy.shadowsocks_2022.RelayServerConfig - (*User)(nil), // 4: xray.proxy.shadowsocks_2022.User - (*ClientConfig)(nil), // 5: xray.proxy.shadowsocks_2022.ClientConfig - (net.Network)(0), // 6: xray.common.net.Network - (*net.IPOrDomain)(nil), // 7: xray.common.net.IPOrDomain -} -var file_proxy_shadowsocks_2022_config_proto_depIdxs = []int32{ - 6, // 0: xray.proxy.shadowsocks_2022.ServerConfig.network:type_name -> xray.common.net.Network - 4, // 1: xray.proxy.shadowsocks_2022.MultiUserServerConfig.users:type_name -> xray.proxy.shadowsocks_2022.User - 6, // 2: xray.proxy.shadowsocks_2022.MultiUserServerConfig.network:type_name -> xray.common.net.Network - 7, // 3: xray.proxy.shadowsocks_2022.RelayDestination.address:type_name -> xray.common.net.IPOrDomain - 2, // 4: xray.proxy.shadowsocks_2022.RelayServerConfig.destinations:type_name -> xray.proxy.shadowsocks_2022.RelayDestination - 6, // 5: xray.proxy.shadowsocks_2022.RelayServerConfig.network:type_name -> xray.common.net.Network - 7, // 6: xray.proxy.shadowsocks_2022.ClientConfig.address:type_name -> xray.common.net.IPOrDomain - 7, // [7:7] is the sub-list for method output_type - 7, // [7:7] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name -} - -func init() { file_proxy_shadowsocks_2022_config_proto_init() } -func file_proxy_shadowsocks_2022_config_proto_init() { - if File_proxy_shadowsocks_2022_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_shadowsocks_2022_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_shadowsocks_2022_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiUserServerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_shadowsocks_2022_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RelayDestination); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_shadowsocks_2022_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RelayServerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_shadowsocks_2022_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*User); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_shadowsocks_2022_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClientConfig); 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_proxy_shadowsocks_2022_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 6, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_shadowsocks_2022_config_proto_goTypes, - DependencyIndexes: file_proxy_shadowsocks_2022_config_proto_depIdxs, - MessageInfos: file_proxy_shadowsocks_2022_config_proto_msgTypes, - }.Build() - File_proxy_shadowsocks_2022_config_proto = out.File - file_proxy_shadowsocks_2022_config_proto_rawDesc = nil - file_proxy_shadowsocks_2022_config_proto_goTypes = nil - file_proxy_shadowsocks_2022_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/socks/config.pb.go b/xray_api/proto/proxy/socks/config.pb.go deleted file mode 100644 index b8c62a9..0000000 --- a/xray_api/proto/proxy/socks/config.pb.go +++ /dev/null @@ -1,483 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/socks/config.proto - -package socks - -import ( - net "marzban-node/xray_api/proto/common/net" - protocol "marzban-node/xray_api/proto/common/protocol" - 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) -) - -// AuthType is the authentication type of Socks proxy. -type AuthType int32 - -const ( - // NO_AUTH is for anounymous authentication. - AuthType_NO_AUTH AuthType = 0 - // PASSWORD is for username/password authentication. - AuthType_PASSWORD AuthType = 1 -) - -// Enum value maps for AuthType. -var ( - AuthType_name = map[int32]string{ - 0: "NO_AUTH", - 1: "PASSWORD", - } - AuthType_value = map[string]int32{ - "NO_AUTH": 0, - "PASSWORD": 1, - } -) - -func (x AuthType) Enum() *AuthType { - p := new(AuthType) - *p = x - return p -} - -func (x AuthType) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (AuthType) Descriptor() protoreflect.EnumDescriptor { - return file_proxy_socks_config_proto_enumTypes[0].Descriptor() -} - -func (AuthType) Type() protoreflect.EnumType { - return &file_proxy_socks_config_proto_enumTypes[0] -} - -func (x AuthType) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use AuthType.Descriptor instead. -func (AuthType) EnumDescriptor() ([]byte, []int) { - return file_proxy_socks_config_proto_rawDescGZIP(), []int{0} -} - -type Version int32 - -const ( - Version_SOCKS5 Version = 0 - Version_SOCKS4 Version = 1 - Version_SOCKS4A Version = 2 -) - -// Enum value maps for Version. -var ( - Version_name = map[int32]string{ - 0: "SOCKS5", - 1: "SOCKS4", - 2: "SOCKS4A", - } - Version_value = map[string]int32{ - "SOCKS5": 0, - "SOCKS4": 1, - "SOCKS4A": 2, - } -) - -func (x Version) Enum() *Version { - p := new(Version) - *p = x - return p -} - -func (x Version) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Version) Descriptor() protoreflect.EnumDescriptor { - return file_proxy_socks_config_proto_enumTypes[1].Descriptor() -} - -func (Version) Type() protoreflect.EnumType { - return &file_proxy_socks_config_proto_enumTypes[1] -} - -func (x Version) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Version.Descriptor instead. -func (Version) EnumDescriptor() ([]byte, []int) { - return file_proxy_socks_config_proto_rawDescGZIP(), []int{1} -} - -// Account represents a Socks account. -type Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Username string `protobuf:"bytes,1,opt,name=username,proto3" json:"username,omitempty"` - Password string `protobuf:"bytes,2,opt,name=password,proto3" json:"password,omitempty"` -} - -func (x *Account) Reset() { - *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_socks_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Account) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Account) ProtoMessage() {} - -func (x *Account) ProtoReflect() protoreflect.Message { - mi := &file_proxy_socks_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 Account.ProtoReflect.Descriptor instead. -func (*Account) Descriptor() ([]byte, []int) { - return file_proxy_socks_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Account) GetUsername() string { - if x != nil { - return x.Username - } - return "" -} - -func (x *Account) GetPassword() string { - if x != nil { - return x.Password - } - return "" -} - -// ServerConfig is the protobuf config for Socks server. -type ServerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - AuthType AuthType `protobuf:"varint,1,opt,name=auth_type,json=authType,proto3,enum=xray.proxy.socks.AuthType" json:"auth_type,omitempty"` - Accounts map[string]string `protobuf:"bytes,2,rep,name=accounts,proto3" json:"accounts,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - Address *net.IPOrDomain `protobuf:"bytes,3,opt,name=address,proto3" json:"address,omitempty"` - UdpEnabled bool `protobuf:"varint,4,opt,name=udp_enabled,json=udpEnabled,proto3" json:"udp_enabled,omitempty"` - // Deprecated: Marked as deprecated in proxy/socks/config.proto. - Timeout uint32 `protobuf:"varint,5,opt,name=timeout,proto3" json:"timeout,omitempty"` - UserLevel uint32 `protobuf:"varint,6,opt,name=user_level,json=userLevel,proto3" json:"user_level,omitempty"` -} - -func (x *ServerConfig) Reset() { - *x = ServerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_socks_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ServerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ServerConfig) ProtoMessage() {} - -func (x *ServerConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_socks_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 ServerConfig.ProtoReflect.Descriptor instead. -func (*ServerConfig) Descriptor() ([]byte, []int) { - return file_proxy_socks_config_proto_rawDescGZIP(), []int{1} -} - -func (x *ServerConfig) GetAuthType() AuthType { - if x != nil { - return x.AuthType - } - return AuthType_NO_AUTH -} - -func (x *ServerConfig) GetAccounts() map[string]string { - if x != nil { - return x.Accounts - } - return nil -} - -func (x *ServerConfig) GetAddress() *net.IPOrDomain { - if x != nil { - return x.Address - } - return nil -} - -func (x *ServerConfig) GetUdpEnabled() bool { - if x != nil { - return x.UdpEnabled - } - return false -} - -// Deprecated: Marked as deprecated in proxy/socks/config.proto. -func (x *ServerConfig) GetTimeout() uint32 { - if x != nil { - return x.Timeout - } - return 0 -} - -func (x *ServerConfig) GetUserLevel() uint32 { - if x != nil { - return x.UserLevel - } - return 0 -} - -// ClientConfig is the protobuf config for Socks client. -type ClientConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Sever is a list of Socks server addresses. - Server []*protocol.ServerEndpoint `protobuf:"bytes,1,rep,name=server,proto3" json:"server,omitempty"` - Version Version `protobuf:"varint,2,opt,name=version,proto3,enum=xray.proxy.socks.Version" json:"version,omitempty"` -} - -func (x *ClientConfig) Reset() { - *x = ClientConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_socks_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClientConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientConfig) ProtoMessage() {} - -func (x *ClientConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_socks_config_proto_msgTypes[2] - 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 ClientConfig.ProtoReflect.Descriptor instead. -func (*ClientConfig) Descriptor() ([]byte, []int) { - return file_proxy_socks_config_proto_rawDescGZIP(), []int{2} -} - -func (x *ClientConfig) GetServer() []*protocol.ServerEndpoint { - if x != nil { - return x.Server - } - return nil -} - -func (x *ClientConfig) GetVersion() Version { - if x != nil { - return x.Version - } - return Version_SOCKS5 -} - -var File_proxy_socks_config_proto protoreflect.FileDescriptor - -var file_proxy_socks_config_proto_rawDesc = []byte{ - 0x0a, 0x18, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x2f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x1a, 0x18, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x6e, 0x65, 0x74, 0x2f, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, - 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x41, 0x0a, 0x07, 0x41, 0x63, 0x63, - 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x75, 0x73, 0x65, 0x72, 0x6e, 0x61, 0x6d, 0x65, - 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0xe3, 0x02, 0x0a, - 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x37, 0x0a, - 0x09, 0x61, 0x75, 0x74, 0x68, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x1a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, - 0x63, 0x6b, 0x73, 0x2e, 0x41, 0x75, 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x52, 0x08, 0x61, 0x75, - 0x74, 0x68, 0x54, 0x79, 0x70, 0x65, 0x12, 0x48, 0x0a, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, - 0x74, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x2e, 0x53, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x08, 0x61, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x73, - 0x12, 0x35, 0x0a, 0x07, 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x1b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, - 0x6e, 0x65, 0x74, 0x2e, 0x49, 0x50, 0x4f, 0x72, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x52, 0x07, - 0x61, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x75, 0x64, 0x70, 0x5f, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x75, 0x64, - 0x70, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x12, 0x1c, 0x0a, 0x07, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x42, 0x02, 0x18, 0x01, 0x52, 0x07, 0x74, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x6c, - 0x65, 0x76, 0x65, 0x6c, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, - 0x4c, 0x65, 0x76, 0x65, 0x6c, 0x1a, 0x3b, 0x0a, 0x0d, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, - 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, - 0x38, 0x01, 0x22, 0x81, 0x01, 0x0a, 0x0c, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, - 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x12, 0x33, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x0e, 0x32, 0x19, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x2a, 0x25, 0x0a, 0x08, 0x41, 0x75, 0x74, 0x68, 0x54, 0x79, - 0x70, 0x65, 0x12, 0x0b, 0x0a, 0x07, 0x4e, 0x4f, 0x5f, 0x41, 0x55, 0x54, 0x48, 0x10, 0x00, 0x12, - 0x0c, 0x0a, 0x08, 0x50, 0x41, 0x53, 0x53, 0x57, 0x4f, 0x52, 0x44, 0x10, 0x01, 0x2a, 0x2e, 0x0a, - 0x07, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4f, 0x43, 0x4b, - 0x53, 0x35, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, 0x53, 0x4f, 0x43, 0x4b, 0x53, 0x34, 0x10, 0x01, - 0x12, 0x0b, 0x0a, 0x07, 0x53, 0x4f, 0x43, 0x4b, 0x53, 0x34, 0x41, 0x10, 0x02, 0x42, 0x52, 0x0a, - 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x50, 0x01, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, - 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0xaa, 0x02, - 0x10, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x53, 0x6f, 0x63, 0x6b, - 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_socks_config_proto_rawDescOnce sync.Once - file_proxy_socks_config_proto_rawDescData = file_proxy_socks_config_proto_rawDesc -) - -func file_proxy_socks_config_proto_rawDescGZIP() []byte { - file_proxy_socks_config_proto_rawDescOnce.Do(func() { - file_proxy_socks_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_socks_config_proto_rawDescData) - }) - return file_proxy_socks_config_proto_rawDescData -} - -var file_proxy_socks_config_proto_enumTypes = make([]protoimpl.EnumInfo, 2) -var file_proxy_socks_config_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_proxy_socks_config_proto_goTypes = []interface{}{ - (AuthType)(0), // 0: xray.proxy.socks.AuthType - (Version)(0), // 1: xray.proxy.socks.Version - (*Account)(nil), // 2: xray.proxy.socks.Account - (*ServerConfig)(nil), // 3: xray.proxy.socks.ServerConfig - (*ClientConfig)(nil), // 4: xray.proxy.socks.ClientConfig - nil, // 5: xray.proxy.socks.ServerConfig.AccountsEntry - (*net.IPOrDomain)(nil), // 6: xray.common.net.IPOrDomain - (*protocol.ServerEndpoint)(nil), // 7: xray.common.protocol.ServerEndpoint -} -var file_proxy_socks_config_proto_depIdxs = []int32{ - 0, // 0: xray.proxy.socks.ServerConfig.auth_type:type_name -> xray.proxy.socks.AuthType - 5, // 1: xray.proxy.socks.ServerConfig.accounts:type_name -> xray.proxy.socks.ServerConfig.AccountsEntry - 6, // 2: xray.proxy.socks.ServerConfig.address:type_name -> xray.common.net.IPOrDomain - 7, // 3: xray.proxy.socks.ClientConfig.server:type_name -> xray.common.protocol.ServerEndpoint - 1, // 4: xray.proxy.socks.ClientConfig.version:type_name -> xray.proxy.socks.Version - 5, // [5:5] is the sub-list for method output_type - 5, // [5:5] is the sub-list for method input_type - 5, // [5:5] is the sub-list for extension type_name - 5, // [5:5] is the sub-list for extension extendee - 0, // [0:5] is the sub-list for field type_name -} - -func init() { file_proxy_socks_config_proto_init() } -func file_proxy_socks_config_proto_init() { - if File_proxy_socks_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_socks_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_socks_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_socks_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClientConfig); 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_proxy_socks_config_proto_rawDesc, - NumEnums: 2, - NumMessages: 4, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_socks_config_proto_goTypes, - DependencyIndexes: file_proxy_socks_config_proto_depIdxs, - EnumInfos: file_proxy_socks_config_proto_enumTypes, - MessageInfos: file_proxy_socks_config_proto_msgTypes, - }.Build() - File_proxy_socks_config_proto = out.File - file_proxy_socks_config_proto_rawDesc = nil - file_proxy_socks_config_proto_goTypes = nil - file_proxy_socks_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/trojan/config.pb.go b/xray_api/proto/proxy/trojan/config.pb.go deleted file mode 100644 index 1e0c3bb..0000000 --- a/xray_api/proto/proxy/trojan/config.pb.go +++ /dev/null @@ -1,407 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/trojan/config.proto - -package trojan - -import ( - protocol "marzban-node/xray_api/proto/common/protocol" - 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 Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` -} - -func (x *Account) Reset() { - *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_trojan_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Account) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Account) ProtoMessage() {} - -func (x *Account) ProtoReflect() protoreflect.Message { - mi := &file_proxy_trojan_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 Account.ProtoReflect.Descriptor instead. -func (*Account) Descriptor() ([]byte, []int) { - return file_proxy_trojan_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Account) GetPassword() string { - if x != nil { - return x.Password - } - return "" -} - -type Fallback struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Alpn string `protobuf:"bytes,2,opt,name=alpn,proto3" json:"alpn,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` - Dest string `protobuf:"bytes,5,opt,name=dest,proto3" json:"dest,omitempty"` - Xver uint64 `protobuf:"varint,6,opt,name=xver,proto3" json:"xver,omitempty"` -} - -func (x *Fallback) Reset() { - *x = Fallback{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_trojan_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Fallback) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Fallback) ProtoMessage() {} - -func (x *Fallback) ProtoReflect() protoreflect.Message { - mi := &file_proxy_trojan_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 Fallback.ProtoReflect.Descriptor instead. -func (*Fallback) Descriptor() ([]byte, []int) { - return file_proxy_trojan_config_proto_rawDescGZIP(), []int{1} -} - -func (x *Fallback) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Fallback) GetAlpn() string { - if x != nil { - return x.Alpn - } - return "" -} - -func (x *Fallback) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *Fallback) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *Fallback) GetDest() string { - if x != nil { - return x.Dest - } - return "" -} - -func (x *Fallback) GetXver() uint64 { - if x != nil { - return x.Xver - } - return 0 -} - -type ClientConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Server []*protocol.ServerEndpoint `protobuf:"bytes,1,rep,name=server,proto3" json:"server,omitempty"` -} - -func (x *ClientConfig) Reset() { - *x = ClientConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_trojan_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ClientConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ClientConfig) ProtoMessage() {} - -func (x *ClientConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_trojan_config_proto_msgTypes[2] - 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 ClientConfig.ProtoReflect.Descriptor instead. -func (*ClientConfig) Descriptor() ([]byte, []int) { - return file_proxy_trojan_config_proto_rawDescGZIP(), []int{2} -} - -func (x *ClientConfig) GetServer() []*protocol.ServerEndpoint { - if x != nil { - return x.Server - } - return nil -} - -type ServerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Users []*protocol.User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` - Fallbacks []*Fallback `protobuf:"bytes,2,rep,name=fallbacks,proto3" json:"fallbacks,omitempty"` -} - -func (x *ServerConfig) Reset() { - *x = ServerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_trojan_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ServerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ServerConfig) ProtoMessage() {} - -func (x *ServerConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_trojan_config_proto_msgTypes[3] - 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 ServerConfig.ProtoReflect.Descriptor instead. -func (*ServerConfig) Descriptor() ([]byte, []int) { - return file_proxy_trojan_config_proto_rawDescGZIP(), []int{3} -} - -func (x *ServerConfig) GetUsers() []*protocol.User { - if x != nil { - return x.Users - } - return nil -} - -func (x *ServerConfig) GetFallbacks() []*Fallback { - if x != nil { - return x.Fallbacks - } - return nil -} - -var File_proxy_trojan_config_proto protoreflect.FileDescriptor - -var file_proxy_trojan_config_proto_rawDesc = []byte{ - 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x11, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x1a, 0x1a, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x75, 0x73, 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x25, 0x0a, - 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, - 0x77, 0x6f, 0x72, 0x64, 0x22, 0x82, 0x01, 0x0a, 0x08, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, - 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x6c, 0x70, 0x6e, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x6c, 0x70, 0x6e, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x64, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x78, 0x76, 0x65, 0x72, 0x18, 0x06, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x04, 0x78, 0x76, 0x65, 0x72, 0x22, 0x4c, 0x0a, 0x0c, 0x43, 0x6c, 0x69, - 0x65, 0x6e, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3c, 0x0a, 0x06, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, 0x52, - 0x06, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x22, 0x7b, 0x0a, 0x0c, 0x53, 0x65, 0x72, 0x76, 0x65, - 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x30, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x55, 0x73, - 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x12, 0x39, 0x0a, 0x09, 0x66, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, - 0x2e, 0x46, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x09, 0x66, 0x61, 0x6c, 0x6c, 0x62, - 0x61, 0x63, 0x6b, 0x73, 0x42, 0x55, 0x0a, 0x15, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x50, 0x01, 0x5a, - 0x26, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, - 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x2f, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0xaa, 0x02, 0x11, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, - 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_trojan_config_proto_rawDescOnce sync.Once - file_proxy_trojan_config_proto_rawDescData = file_proxy_trojan_config_proto_rawDesc -) - -func file_proxy_trojan_config_proto_rawDescGZIP() []byte { - file_proxy_trojan_config_proto_rawDescOnce.Do(func() { - file_proxy_trojan_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_trojan_config_proto_rawDescData) - }) - return file_proxy_trojan_config_proto_rawDescData -} - -var file_proxy_trojan_config_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_proxy_trojan_config_proto_goTypes = []interface{}{ - (*Account)(nil), // 0: xray.proxy.trojan.Account - (*Fallback)(nil), // 1: xray.proxy.trojan.Fallback - (*ClientConfig)(nil), // 2: xray.proxy.trojan.ClientConfig - (*ServerConfig)(nil), // 3: xray.proxy.trojan.ServerConfig - (*protocol.ServerEndpoint)(nil), // 4: xray.common.protocol.ServerEndpoint - (*protocol.User)(nil), // 5: xray.common.protocol.User -} -var file_proxy_trojan_config_proto_depIdxs = []int32{ - 4, // 0: xray.proxy.trojan.ClientConfig.server:type_name -> xray.common.protocol.ServerEndpoint - 5, // 1: xray.proxy.trojan.ServerConfig.users:type_name -> xray.common.protocol.User - 1, // 2: xray.proxy.trojan.ServerConfig.fallbacks:type_name -> xray.proxy.trojan.Fallback - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_proxy_trojan_config_proto_init() } -func file_proxy_trojan_config_proto_init() { - if File_proxy_trojan_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_trojan_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Account); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_trojan_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Fallback); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_trojan_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ClientConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_trojan_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ServerConfig); 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_proxy_trojan_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 4, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_trojan_config_proto_goTypes, - DependencyIndexes: file_proxy_trojan_config_proto_depIdxs, - MessageInfos: file_proxy_trojan_config_proto_msgTypes, - }.Build() - File_proxy_trojan_config_proto = out.File - file_proxy_trojan_config_proto_rawDesc = nil - file_proxy_trojan_config_proto_goTypes = nil - file_proxy_trojan_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/vless/account.pb.go b/xray_api/proto/proxy/vless/account.pb.go deleted file mode 100644 index 24564a3..0000000 --- a/xray_api/proto/proxy/vless/account.pb.go +++ /dev/null @@ -1,169 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/vless/account.proto - -package vless - -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 Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // ID of the account, in the form of a UUID, e.g., "66ad4540-b58c-4ad2-9926-ea63445a9b57". - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Flow settings. May be "xtls-rprx-vision". - Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` - // Encryption settings. Only applies to client side, and only accepts "none" for now. - Encryption string `protobuf:"bytes,3,opt,name=encryption,proto3" json:"encryption,omitempty"` -} - -func (x *Account) Reset() { - *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_vless_account_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Account) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Account) ProtoMessage() {} - -func (x *Account) ProtoReflect() protoreflect.Message { - mi := &file_proxy_vless_account_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 Account.ProtoReflect.Descriptor instead. -func (*Account) Descriptor() ([]byte, []int) { - return file_proxy_vless_account_proto_rawDescGZIP(), []int{0} -} - -func (x *Account) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Account) GetFlow() string { - if x != nil { - return x.Flow - } - return "" -} - -func (x *Account) GetEncryption() string { - if x != nil { - return x.Encryption - } - return "" -} - -var File_proxy_vless_account_proto protoreflect.FileDescriptor - -var file_proxy_vless_account_proto_rawDesc = []byte{ - 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x22, 0x4d, 0x0a, - 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, - 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x12, 0x1e, 0x0a, 0x0a, - 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0a, 0x65, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x52, 0x0a, 0x14, - 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, - 0x6c, 0x65, 0x73, 0x73, 0x50, 0x01, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, - 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6c, 0x65, 0x73, 0x73, 0xaa, 0x02, 0x10, - 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_vless_account_proto_rawDescOnce sync.Once - file_proxy_vless_account_proto_rawDescData = file_proxy_vless_account_proto_rawDesc -) - -func file_proxy_vless_account_proto_rawDescGZIP() []byte { - file_proxy_vless_account_proto_rawDescOnce.Do(func() { - file_proxy_vless_account_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_vless_account_proto_rawDescData) - }) - return file_proxy_vless_account_proto_rawDescData -} - -var file_proxy_vless_account_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_proxy_vless_account_proto_goTypes = []interface{}{ - (*Account)(nil), // 0: xray.proxy.vless.Account -} -var file_proxy_vless_account_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_proxy_vless_account_proto_init() } -func file_proxy_vless_account_proto_init() { - if File_proxy_vless_account_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_vless_account_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Account); 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_proxy_vless_account_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_vless_account_proto_goTypes, - DependencyIndexes: file_proxy_vless_account_proto_depIdxs, - MessageInfos: file_proxy_vless_account_proto_msgTypes, - }.Build() - File_proxy_vless_account_proto = out.File - file_proxy_vless_account_proto_rawDesc = nil - file_proxy_vless_account_proto_goTypes = nil - file_proxy_vless_account_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/vless/encoding/addons.pb.go b/xray_api/proto/proxy/vless/encoding/addons.pb.go deleted file mode 100644 index c876d54..0000000 --- a/xray_api/proto/proxy/vless/encoding/addons.pb.go +++ /dev/null @@ -1,159 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/vless/encoding/addons.proto - -package encoding - -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 Addons struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Flow string `protobuf:"bytes,1,opt,name=Flow,proto3" json:"Flow,omitempty"` - Seed []byte `protobuf:"bytes,2,opt,name=Seed,proto3" json:"Seed,omitempty"` -} - -func (x *Addons) Reset() { - *x = Addons{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_vless_encoding_addons_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Addons) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Addons) ProtoMessage() {} - -func (x *Addons) ProtoReflect() protoreflect.Message { - mi := &file_proxy_vless_encoding_addons_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 Addons.ProtoReflect.Descriptor instead. -func (*Addons) Descriptor() ([]byte, []int) { - return file_proxy_vless_encoding_addons_proto_rawDescGZIP(), []int{0} -} - -func (x *Addons) GetFlow() string { - if x != nil { - return x.Flow - } - return "" -} - -func (x *Addons) GetSeed() []byte { - if x != nil { - return x.Seed - } - return nil -} - -var File_proxy_vless_encoding_addons_proto protoreflect.FileDescriptor - -var file_proxy_vless_encoding_addons_proto_rawDesc = []byte{ - 0x0a, 0x21, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2f, 0x61, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x30, - 0x0a, 0x06, 0x41, 0x64, 0x64, 0x6f, 0x6e, 0x73, 0x12, 0x12, 0x0a, 0x04, 0x46, 0x6c, 0x6f, 0x77, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x46, 0x6c, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, - 0x53, 0x65, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x53, 0x65, 0x65, 0x64, - 0x42, 0x6d, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, - 0x67, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, - 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, - 0x69, 0x6e, 0x67, 0xaa, 0x02, 0x19, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, - 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x45, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_vless_encoding_addons_proto_rawDescOnce sync.Once - file_proxy_vless_encoding_addons_proto_rawDescData = file_proxy_vless_encoding_addons_proto_rawDesc -) - -func file_proxy_vless_encoding_addons_proto_rawDescGZIP() []byte { - file_proxy_vless_encoding_addons_proto_rawDescOnce.Do(func() { - file_proxy_vless_encoding_addons_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_vless_encoding_addons_proto_rawDescData) - }) - return file_proxy_vless_encoding_addons_proto_rawDescData -} - -var file_proxy_vless_encoding_addons_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_proxy_vless_encoding_addons_proto_goTypes = []interface{}{ - (*Addons)(nil), // 0: xray.proxy.vless.encoding.Addons -} -var file_proxy_vless_encoding_addons_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_proxy_vless_encoding_addons_proto_init() } -func file_proxy_vless_encoding_addons_proto_init() { - if File_proxy_vless_encoding_addons_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_vless_encoding_addons_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Addons); 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_proxy_vless_encoding_addons_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_vless_encoding_addons_proto_goTypes, - DependencyIndexes: file_proxy_vless_encoding_addons_proto_depIdxs, - MessageInfos: file_proxy_vless_encoding_addons_proto_msgTypes, - }.Build() - File_proxy_vless_encoding_addons_proto = out.File - file_proxy_vless_encoding_addons_proto_rawDesc = nil - file_proxy_vless_encoding_addons_proto_goTypes = nil - file_proxy_vless_encoding_addons_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/vless/inbound/config.pb.go b/xray_api/proto/proxy/vless/inbound/config.pb.go deleted file mode 100644 index 20f30b5..0000000 --- a/xray_api/proto/proxy/vless/inbound/config.pb.go +++ /dev/null @@ -1,290 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/vless/inbound/config.proto - -package inbound - -import ( - protocol "marzban-node/xray_api/proto/common/protocol" - 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 Fallback struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - Alpn string `protobuf:"bytes,2,opt,name=alpn,proto3" json:"alpn,omitempty"` - Path string `protobuf:"bytes,3,opt,name=path,proto3" json:"path,omitempty"` - Type string `protobuf:"bytes,4,opt,name=type,proto3" json:"type,omitempty"` - Dest string `protobuf:"bytes,5,opt,name=dest,proto3" json:"dest,omitempty"` - Xver uint64 `protobuf:"varint,6,opt,name=xver,proto3" json:"xver,omitempty"` -} - -func (x *Fallback) Reset() { - *x = Fallback{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_vless_inbound_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Fallback) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Fallback) ProtoMessage() {} - -func (x *Fallback) ProtoReflect() protoreflect.Message { - mi := &file_proxy_vless_inbound_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 Fallback.ProtoReflect.Descriptor instead. -func (*Fallback) Descriptor() ([]byte, []int) { - return file_proxy_vless_inbound_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Fallback) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Fallback) GetAlpn() string { - if x != nil { - return x.Alpn - } - return "" -} - -func (x *Fallback) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *Fallback) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *Fallback) GetDest() string { - if x != nil { - return x.Dest - } - return "" -} - -func (x *Fallback) GetXver() uint64 { - if x != nil { - return x.Xver - } - return 0 -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Clients []*protocol.User `protobuf:"bytes,1,rep,name=clients,proto3" json:"clients,omitempty"` - // Decryption settings. Only applies to server side, and only accepts "none" - // for now. - Decryption string `protobuf:"bytes,2,opt,name=decryption,proto3" json:"decryption,omitempty"` - Fallbacks []*Fallback `protobuf:"bytes,3,rep,name=fallbacks,proto3" json:"fallbacks,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_vless_inbound_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_proxy_vless_inbound_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_proxy_vless_inbound_config_proto_rawDescGZIP(), []int{1} -} - -func (x *Config) GetClients() []*protocol.User { - if x != nil { - return x.Clients - } - return nil -} - -func (x *Config) GetDecryption() string { - if x != nil { - return x.Decryption - } - return "" -} - -func (x *Config) GetFallbacks() []*Fallback { - if x != nil { - return x.Fallbacks - } - return nil -} - -var File_proxy_vless_inbound_config_proto protoreflect.FileDescriptor - -var file_proxy_vless_inbound_config_proto_rawDesc = []byte{ - 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x69, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x18, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, - 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x1a, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x82, 0x01, 0x0a, 0x08, 0x46, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x61, 0x6c, 0x70, - 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x61, 0x6c, 0x70, 0x6e, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, 0x74, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x78, 0x76, 0x65, - 0x72, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x04, 0x78, 0x76, 0x65, 0x72, 0x22, 0xa0, 0x01, - 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x34, 0x0a, 0x07, 0x63, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, - 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x07, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x73, 0x12, 0x1e, - 0x0a, 0x0a, 0x64, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0a, 0x64, 0x65, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x40, - 0x0a, 0x09, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x22, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, - 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x46, 0x61, 0x6c, - 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x52, 0x09, 0x66, 0x61, 0x6c, 0x6c, 0x62, 0x61, 0x63, 0x6b, 0x73, - 0x42, 0x6a, 0x0a, 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x50, 0x01, 0x5a, 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, - 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0xaa, 0x02, 0x18, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x56, - 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_vless_inbound_config_proto_rawDescOnce sync.Once - file_proxy_vless_inbound_config_proto_rawDescData = file_proxy_vless_inbound_config_proto_rawDesc -) - -func file_proxy_vless_inbound_config_proto_rawDescGZIP() []byte { - file_proxy_vless_inbound_config_proto_rawDescOnce.Do(func() { - file_proxy_vless_inbound_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_vless_inbound_config_proto_rawDescData) - }) - return file_proxy_vless_inbound_config_proto_rawDescData -} - -var file_proxy_vless_inbound_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_proxy_vless_inbound_config_proto_goTypes = []interface{}{ - (*Fallback)(nil), // 0: xray.proxy.vless.inbound.Fallback - (*Config)(nil), // 1: xray.proxy.vless.inbound.Config - (*protocol.User)(nil), // 2: xray.common.protocol.User -} -var file_proxy_vless_inbound_config_proto_depIdxs = []int32{ - 2, // 0: xray.proxy.vless.inbound.Config.clients:type_name -> xray.common.protocol.User - 0, // 1: xray.proxy.vless.inbound.Config.fallbacks:type_name -> xray.proxy.vless.inbound.Fallback - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_proxy_vless_inbound_config_proto_init() } -func file_proxy_vless_inbound_config_proto_init() { - if File_proxy_vless_inbound_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_vless_inbound_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Fallback); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_vless_inbound_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_proxy_vless_inbound_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_vless_inbound_config_proto_goTypes, - DependencyIndexes: file_proxy_vless_inbound_config_proto_depIdxs, - MessageInfos: file_proxy_vless_inbound_config_proto_msgTypes, - }.Build() - File_proxy_vless_inbound_config_proto = out.File - file_proxy_vless_inbound_config_proto_rawDesc = nil - file_proxy_vless_inbound_config_proto_goTypes = nil - file_proxy_vless_inbound_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/vless/outbound/config.pb.go b/xray_api/proto/proxy/vless/outbound/config.pb.go deleted file mode 100644 index 9e9b485..0000000 --- a/xray_api/proto/proxy/vless/outbound/config.pb.go +++ /dev/null @@ -1,157 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/vless/outbound/config.proto - -package outbound - -import ( - protocol "marzban-node/xray_api/proto/common/protocol" - 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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Vnext []*protocol.ServerEndpoint `protobuf:"bytes,1,rep,name=vnext,proto3" json:"vnext,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_vless_outbound_config_proto_msgTypes[0] - 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_proxy_vless_outbound_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_proxy_vless_outbound_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetVnext() []*protocol.ServerEndpoint { - if x != nil { - return x.Vnext - } - return nil -} - -var File_proxy_vless_outbound_config_proto protoreflect.FileDescriptor - -var file_proxy_vless_outbound_config_proto_rawDesc = []byte{ - 0x0a, 0x21, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2f, 0x6f, 0x75, - 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x21, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x44, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3a, 0x0a, 0x05, 0x76, - 0x6e, 0x65, 0x78, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, - 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x52, 0x05, 0x76, 0x6e, 0x65, 0x78, 0x74, 0x42, 0x6d, 0x0a, 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x2e, - 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x01, 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, - 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6c, 0x65, 0x73, - 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0xaa, 0x02, 0x19, 0x58, 0x72, 0x61, - 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x2e, 0x4f, 0x75, - 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_vless_outbound_config_proto_rawDescOnce sync.Once - file_proxy_vless_outbound_config_proto_rawDescData = file_proxy_vless_outbound_config_proto_rawDesc -) - -func file_proxy_vless_outbound_config_proto_rawDescGZIP() []byte { - file_proxy_vless_outbound_config_proto_rawDescOnce.Do(func() { - file_proxy_vless_outbound_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_vless_outbound_config_proto_rawDescData) - }) - return file_proxy_vless_outbound_config_proto_rawDescData -} - -var file_proxy_vless_outbound_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_proxy_vless_outbound_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.proxy.vless.outbound.Config - (*protocol.ServerEndpoint)(nil), // 1: xray.common.protocol.ServerEndpoint -} -var file_proxy_vless_outbound_config_proto_depIdxs = []int32{ - 1, // 0: xray.proxy.vless.outbound.Config.vnext:type_name -> xray.common.protocol.ServerEndpoint - 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_proxy_vless_outbound_config_proto_init() } -func file_proxy_vless_outbound_config_proto_init() { - if File_proxy_vless_outbound_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_vless_outbound_config_proto_msgTypes[0].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_proxy_vless_outbound_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_vless_outbound_config_proto_goTypes, - DependencyIndexes: file_proxy_vless_outbound_config_proto_depIdxs, - MessageInfos: file_proxy_vless_outbound_config_proto_msgTypes, - }.Build() - File_proxy_vless_outbound_config_proto = out.File - file_proxy_vless_outbound_config_proto_rawDesc = nil - file_proxy_vless_outbound_config_proto_goTypes = nil - file_proxy_vless_outbound_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/vmess/account.pb.go b/xray_api/proto/proxy/vmess/account.pb.go deleted file mode 100644 index cc561fc..0000000 --- a/xray_api/proto/proxy/vmess/account.pb.go +++ /dev/null @@ -1,179 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/vmess/account.proto - -package vmess - -import ( - protocol "marzban-node/xray_api/proto/common/protocol" - 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 Account struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // ID of the account, in the form of a UUID, e.g., - // "66ad4540-b58c-4ad2-9926-ea63445a9b57". - Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` - // Security settings. Only applies to client side. - SecuritySettings *protocol.SecurityConfig `protobuf:"bytes,3,opt,name=security_settings,json=securitySettings,proto3" json:"security_settings,omitempty"` - // Define tests enabled for this account - TestsEnabled string `protobuf:"bytes,4,opt,name=tests_enabled,json=testsEnabled,proto3" json:"tests_enabled,omitempty"` -} - -func (x *Account) Reset() { - *x = Account{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_vmess_account_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Account) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Account) ProtoMessage() {} - -func (x *Account) ProtoReflect() protoreflect.Message { - mi := &file_proxy_vmess_account_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 Account.ProtoReflect.Descriptor instead. -func (*Account) Descriptor() ([]byte, []int) { - return file_proxy_vmess_account_proto_rawDescGZIP(), []int{0} -} - -func (x *Account) GetId() string { - if x != nil { - return x.Id - } - return "" -} - -func (x *Account) GetSecuritySettings() *protocol.SecurityConfig { - if x != nil { - return x.SecuritySettings - } - return nil -} - -func (x *Account) GetTestsEnabled() string { - if x != nil { - return x.TestsEnabled - } - return "" -} - -var File_proxy_vmess_account_proto protoreflect.FileDescriptor - -var file_proxy_vmess_account_proto_rawDesc = []byte{ - 0x0a, 0x19, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x2f, 0x61, 0x63, - 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x10, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x1a, 0x1d, 0x63, - 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x91, 0x01, 0x0a, - 0x07, 0x41, 0x63, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x51, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x75, - 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x10, 0x73, 0x65, 0x63, 0x75, 0x72, - 0x69, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x74, - 0x65, 0x73, 0x74, 0x73, 0x5f, 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, 0x18, 0x04, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x74, 0x65, 0x73, 0x74, 0x73, 0x45, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x64, - 0x42, 0x52, 0x0a, 0x14, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, - 0x78, 0x79, 0x2e, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x50, 0x01, 0x5a, 0x25, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, - 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6d, 0x65, 0x73, - 0x73, 0xaa, 0x02, 0x10, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x56, - 0x6d, 0x65, 0x73, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_vmess_account_proto_rawDescOnce sync.Once - file_proxy_vmess_account_proto_rawDescData = file_proxy_vmess_account_proto_rawDesc -) - -func file_proxy_vmess_account_proto_rawDescGZIP() []byte { - file_proxy_vmess_account_proto_rawDescOnce.Do(func() { - file_proxy_vmess_account_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_vmess_account_proto_rawDescData) - }) - return file_proxy_vmess_account_proto_rawDescData -} - -var file_proxy_vmess_account_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_proxy_vmess_account_proto_goTypes = []interface{}{ - (*Account)(nil), // 0: xray.proxy.vmess.Account - (*protocol.SecurityConfig)(nil), // 1: xray.common.protocol.SecurityConfig -} -var file_proxy_vmess_account_proto_depIdxs = []int32{ - 1, // 0: xray.proxy.vmess.Account.security_settings:type_name -> xray.common.protocol.SecurityConfig - 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_proxy_vmess_account_proto_init() } -func file_proxy_vmess_account_proto_init() { - if File_proxy_vmess_account_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_vmess_account_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Account); 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_proxy_vmess_account_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_vmess_account_proto_goTypes, - DependencyIndexes: file_proxy_vmess_account_proto_depIdxs, - MessageInfos: file_proxy_vmess_account_proto_msgTypes, - }.Build() - File_proxy_vmess_account_proto = out.File - file_proxy_vmess_account_proto_rawDesc = nil - file_proxy_vmess_account_proto_goTypes = nil - file_proxy_vmess_account_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/vmess/inbound/config.pb.go b/xray_api/proto/proxy/vmess/inbound/config.pb.go deleted file mode 100644 index f813bcf..0000000 --- a/xray_api/proto/proxy/vmess/inbound/config.pb.go +++ /dev/null @@ -1,307 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/vmess/inbound/config.proto - -package inbound - -import ( - protocol "marzban-node/xray_api/proto/common/protocol" - 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 DetourConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - To string `protobuf:"bytes,1,opt,name=to,proto3" json:"to,omitempty"` -} - -func (x *DetourConfig) Reset() { - *x = DetourConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_vmess_inbound_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DetourConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DetourConfig) ProtoMessage() {} - -func (x *DetourConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_vmess_inbound_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 DetourConfig.ProtoReflect.Descriptor instead. -func (*DetourConfig) Descriptor() ([]byte, []int) { - return file_proxy_vmess_inbound_config_proto_rawDescGZIP(), []int{0} -} - -func (x *DetourConfig) GetTo() string { - if x != nil { - return x.To - } - return "" -} - -type DefaultConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Level uint32 `protobuf:"varint,2,opt,name=level,proto3" json:"level,omitempty"` -} - -func (x *DefaultConfig) Reset() { - *x = DefaultConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_vmess_inbound_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DefaultConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DefaultConfig) ProtoMessage() {} - -func (x *DefaultConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_vmess_inbound_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 DefaultConfig.ProtoReflect.Descriptor instead. -func (*DefaultConfig) Descriptor() ([]byte, []int) { - return file_proxy_vmess_inbound_config_proto_rawDescGZIP(), []int{1} -} - -func (x *DefaultConfig) GetLevel() uint32 { - if x != nil { - return x.Level - } - return 0 -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - User []*protocol.User `protobuf:"bytes,1,rep,name=user,proto3" json:"user,omitempty"` - Default *DefaultConfig `protobuf:"bytes,2,opt,name=default,proto3" json:"default,omitempty"` - Detour *DetourConfig `protobuf:"bytes,3,opt,name=detour,proto3" json:"detour,omitempty"` // 4 is for legacy setting -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_vmess_inbound_config_proto_msgTypes[2] - 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_proxy_vmess_inbound_config_proto_msgTypes[2] - 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_proxy_vmess_inbound_config_proto_rawDescGZIP(), []int{2} -} - -func (x *Config) GetUser() []*protocol.User { - if x != nil { - return x.User - } - return nil -} - -func (x *Config) GetDefault() *DefaultConfig { - if x != nil { - return x.Default - } - return nil -} - -func (x *Config) GetDetour() *DetourConfig { - if x != nil { - return x.Detour - } - return nil -} - -var File_proxy_vmess_inbound_config_proto protoreflect.FileDescriptor - -var file_proxy_vmess_inbound_config_proto_rawDesc = []byte{ - 0x0a, 0x20, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x2f, 0x69, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x12, 0x18, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, - 0x6d, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x1a, 0x63, 0x6f, - 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x75, 0x73, - 0x65, 0x72, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1e, 0x0a, 0x0c, 0x44, 0x65, 0x74, 0x6f, - 0x75, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x74, 0x6f, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x74, 0x6f, 0x22, 0x25, 0x0a, 0x0d, 0x44, 0x65, 0x66, 0x61, - 0x75, 0x6c, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x65, 0x76, - 0x65, 0x6c, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6c, 0x65, 0x76, 0x65, 0x6c, 0x22, - 0xbb, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x2e, 0x0a, 0x04, 0x75, 0x73, - 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x04, 0x75, 0x73, 0x65, 0x72, 0x12, 0x41, 0x0a, 0x07, 0x64, 0x65, - 0x66, 0x61, 0x75, 0x6c, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x2e, 0x69, - 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x44, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x52, 0x07, 0x64, 0x65, 0x66, 0x61, 0x75, 0x6c, 0x74, 0x12, 0x3e, 0x0a, - 0x06, 0x64, 0x65, 0x74, 0x6f, 0x75, 0x72, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x26, 0x2e, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x76, 0x6d, 0x65, 0x73, 0x73, - 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2e, 0x44, 0x65, 0x74, 0x6f, 0x75, 0x72, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x06, 0x64, 0x65, 0x74, 0x6f, 0x75, 0x72, 0x42, 0x6a, 0x0a, - 0x1c, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x76, 0x6d, 0x65, 0x73, 0x73, 0x2e, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x01, 0x5a, - 0x2d, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, - 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x2f, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x2f, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0xaa, 0x02, - 0x18, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x56, 0x6d, 0x65, 0x73, - 0x73, 0x2e, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} - -var ( - file_proxy_vmess_inbound_config_proto_rawDescOnce sync.Once - file_proxy_vmess_inbound_config_proto_rawDescData = file_proxy_vmess_inbound_config_proto_rawDesc -) - -func file_proxy_vmess_inbound_config_proto_rawDescGZIP() []byte { - file_proxy_vmess_inbound_config_proto_rawDescOnce.Do(func() { - file_proxy_vmess_inbound_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_vmess_inbound_config_proto_rawDescData) - }) - return file_proxy_vmess_inbound_config_proto_rawDescData -} - -var file_proxy_vmess_inbound_config_proto_msgTypes = make([]protoimpl.MessageInfo, 3) -var file_proxy_vmess_inbound_config_proto_goTypes = []interface{}{ - (*DetourConfig)(nil), // 0: xray.proxy.vmess.inbound.DetourConfig - (*DefaultConfig)(nil), // 1: xray.proxy.vmess.inbound.DefaultConfig - (*Config)(nil), // 2: xray.proxy.vmess.inbound.Config - (*protocol.User)(nil), // 3: xray.common.protocol.User -} -var file_proxy_vmess_inbound_config_proto_depIdxs = []int32{ - 3, // 0: xray.proxy.vmess.inbound.Config.user:type_name -> xray.common.protocol.User - 1, // 1: xray.proxy.vmess.inbound.Config.default:type_name -> xray.proxy.vmess.inbound.DefaultConfig - 0, // 2: xray.proxy.vmess.inbound.Config.detour:type_name -> xray.proxy.vmess.inbound.DetourConfig - 3, // [3:3] is the sub-list for method output_type - 3, // [3:3] is the sub-list for method input_type - 3, // [3:3] is the sub-list for extension type_name - 3, // [3:3] is the sub-list for extension extendee - 0, // [0:3] is the sub-list for field type_name -} - -func init() { file_proxy_vmess_inbound_config_proto_init() } -func file_proxy_vmess_inbound_config_proto_init() { - if File_proxy_vmess_inbound_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_vmess_inbound_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DetourConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_vmess_inbound_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DefaultConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_vmess_inbound_config_proto_msgTypes[2].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_proxy_vmess_inbound_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 3, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_vmess_inbound_config_proto_goTypes, - DependencyIndexes: file_proxy_vmess_inbound_config_proto_depIdxs, - MessageInfos: file_proxy_vmess_inbound_config_proto_msgTypes, - }.Build() - File_proxy_vmess_inbound_config_proto = out.File - file_proxy_vmess_inbound_config_proto_rawDesc = nil - file_proxy_vmess_inbound_config_proto_goTypes = nil - file_proxy_vmess_inbound_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/vmess/outbound/config.pb.go b/xray_api/proto/proxy/vmess/outbound/config.pb.go deleted file mode 100644 index df6cd0e..0000000 --- a/xray_api/proto/proxy/vmess/outbound/config.pb.go +++ /dev/null @@ -1,158 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/vmess/outbound/config.proto - -package outbound - -import ( - protocol "marzban-node/xray_api/proto/common/protocol" - 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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Receiver []*protocol.ServerEndpoint `protobuf:"bytes,1,rep,name=Receiver,proto3" json:"Receiver,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_vmess_outbound_config_proto_msgTypes[0] - 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_proxy_vmess_outbound_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_proxy_vmess_outbound_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetReceiver() []*protocol.ServerEndpoint { - if x != nil { - return x.Receiver - } - return nil -} - -var File_proxy_vmess_outbound_config_proto protoreflect.FileDescriptor - -var file_proxy_vmess_outbound_config_proto_rawDesc = []byte{ - 0x0a, 0x21, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x2f, 0x6f, 0x75, - 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x19, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x76, 0x6d, 0x65, 0x73, 0x73, 0x2e, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x1a, 0x21, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, - 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, 0x73, 0x70, 0x65, 0x63, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x22, 0x4a, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x40, 0x0a, 0x08, 0x52, - 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x24, 0x2e, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x72, 0x76, 0x65, 0x72, 0x45, 0x6e, 0x64, 0x70, 0x6f, - 0x69, 0x6e, 0x74, 0x52, 0x08, 0x52, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x72, 0x42, 0x6d, 0x0a, - 0x1d, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, - 0x76, 0x6d, 0x65, 0x73, 0x73, 0x2e, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x50, 0x01, - 0x5a, 0x2e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, - 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2f, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x2f, 0x6f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0xaa, 0x02, 0x19, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x56, 0x6d, - 0x65, 0x73, 0x73, 0x2e, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_vmess_outbound_config_proto_rawDescOnce sync.Once - file_proxy_vmess_outbound_config_proto_rawDescData = file_proxy_vmess_outbound_config_proto_rawDesc -) - -func file_proxy_vmess_outbound_config_proto_rawDescGZIP() []byte { - file_proxy_vmess_outbound_config_proto_rawDescOnce.Do(func() { - file_proxy_vmess_outbound_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_vmess_outbound_config_proto_rawDescData) - }) - return file_proxy_vmess_outbound_config_proto_rawDescData -} - -var file_proxy_vmess_outbound_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_proxy_vmess_outbound_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.proxy.vmess.outbound.Config - (*protocol.ServerEndpoint)(nil), // 1: xray.common.protocol.ServerEndpoint -} -var file_proxy_vmess_outbound_config_proto_depIdxs = []int32{ - 1, // 0: xray.proxy.vmess.outbound.Config.Receiver:type_name -> xray.common.protocol.ServerEndpoint - 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_proxy_vmess_outbound_config_proto_init() } -func file_proxy_vmess_outbound_config_proto_init() { - if File_proxy_vmess_outbound_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_vmess_outbound_config_proto_msgTypes[0].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_proxy_vmess_outbound_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_vmess_outbound_config_proto_goTypes, - DependencyIndexes: file_proxy_vmess_outbound_config_proto_depIdxs, - MessageInfos: file_proxy_vmess_outbound_config_proto_msgTypes, - }.Build() - File_proxy_vmess_outbound_config_proto = out.File - file_proxy_vmess_outbound_config_proto_rawDesc = nil - file_proxy_vmess_outbound_config_proto_goTypes = nil - file_proxy_vmess_outbound_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/proxy/wireguard/config.pb.go b/xray_api/proto/proxy/wireguard/config.pb.go deleted file mode 100644 index 25036ba..0000000 --- a/xray_api/proto/proxy/wireguard/config.pb.go +++ /dev/null @@ -1,402 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: proxy/wireguard/config.proto - -package wireguard - -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 DeviceConfig_DomainStrategy int32 - -const ( - DeviceConfig_FORCE_IP DeviceConfig_DomainStrategy = 0 - DeviceConfig_FORCE_IP4 DeviceConfig_DomainStrategy = 1 - DeviceConfig_FORCE_IP6 DeviceConfig_DomainStrategy = 2 - DeviceConfig_FORCE_IP46 DeviceConfig_DomainStrategy = 3 - DeviceConfig_FORCE_IP64 DeviceConfig_DomainStrategy = 4 -) - -// Enum value maps for DeviceConfig_DomainStrategy. -var ( - DeviceConfig_DomainStrategy_name = map[int32]string{ - 0: "FORCE_IP", - 1: "FORCE_IP4", - 2: "FORCE_IP6", - 3: "FORCE_IP46", - 4: "FORCE_IP64", - } - DeviceConfig_DomainStrategy_value = map[string]int32{ - "FORCE_IP": 0, - "FORCE_IP4": 1, - "FORCE_IP6": 2, - "FORCE_IP46": 3, - "FORCE_IP64": 4, - } -) - -func (x DeviceConfig_DomainStrategy) Enum() *DeviceConfig_DomainStrategy { - p := new(DeviceConfig_DomainStrategy) - *p = x - return p -} - -func (x DeviceConfig_DomainStrategy) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DeviceConfig_DomainStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_proxy_wireguard_config_proto_enumTypes[0].Descriptor() -} - -func (DeviceConfig_DomainStrategy) Type() protoreflect.EnumType { - return &file_proxy_wireguard_config_proto_enumTypes[0] -} - -func (x DeviceConfig_DomainStrategy) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DeviceConfig_DomainStrategy.Descriptor instead. -func (DeviceConfig_DomainStrategy) EnumDescriptor() ([]byte, []int) { - return file_proxy_wireguard_config_proto_rawDescGZIP(), []int{1, 0} -} - -type PeerConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - PublicKey string `protobuf:"bytes,1,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - PreSharedKey string `protobuf:"bytes,2,opt,name=pre_shared_key,json=preSharedKey,proto3" json:"pre_shared_key,omitempty"` - Endpoint string `protobuf:"bytes,3,opt,name=endpoint,proto3" json:"endpoint,omitempty"` - KeepAlive uint32 `protobuf:"varint,4,opt,name=keep_alive,json=keepAlive,proto3" json:"keep_alive,omitempty"` - AllowedIps []string `protobuf:"bytes,5,rep,name=allowed_ips,json=allowedIps,proto3" json:"allowed_ips,omitempty"` -} - -func (x *PeerConfig) Reset() { - *x = PeerConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_wireguard_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PeerConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PeerConfig) ProtoMessage() {} - -func (x *PeerConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_wireguard_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 PeerConfig.ProtoReflect.Descriptor instead. -func (*PeerConfig) Descriptor() ([]byte, []int) { - return file_proxy_wireguard_config_proto_rawDescGZIP(), []int{0} -} - -func (x *PeerConfig) GetPublicKey() string { - if x != nil { - return x.PublicKey - } - return "" -} - -func (x *PeerConfig) GetPreSharedKey() string { - if x != nil { - return x.PreSharedKey - } - return "" -} - -func (x *PeerConfig) GetEndpoint() string { - if x != nil { - return x.Endpoint - } - return "" -} - -func (x *PeerConfig) GetKeepAlive() uint32 { - if x != nil { - return x.KeepAlive - } - return 0 -} - -func (x *PeerConfig) GetAllowedIps() []string { - if x != nil { - return x.AllowedIps - } - return nil -} - -type DeviceConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - SecretKey string `protobuf:"bytes,1,opt,name=secret_key,json=secretKey,proto3" json:"secret_key,omitempty"` - Endpoint []string `protobuf:"bytes,2,rep,name=endpoint,proto3" json:"endpoint,omitempty"` - Peers []*PeerConfig `protobuf:"bytes,3,rep,name=peers,proto3" json:"peers,omitempty"` - Mtu int32 `protobuf:"varint,4,opt,name=mtu,proto3" json:"mtu,omitempty"` - NumWorkers int32 `protobuf:"varint,5,opt,name=num_workers,json=numWorkers,proto3" json:"num_workers,omitempty"` - Reserved []byte `protobuf:"bytes,6,opt,name=reserved,proto3" json:"reserved,omitempty"` - DomainStrategy DeviceConfig_DomainStrategy `protobuf:"varint,7,opt,name=domain_strategy,json=domainStrategy,proto3,enum=xray.proxy.wireguard.DeviceConfig_DomainStrategy" json:"domain_strategy,omitempty"` - IsClient bool `protobuf:"varint,8,opt,name=is_client,json=isClient,proto3" json:"is_client,omitempty"` - KernelMode bool `protobuf:"varint,9,opt,name=kernel_mode,json=kernelMode,proto3" json:"kernel_mode,omitempty"` -} - -func (x *DeviceConfig) Reset() { - *x = DeviceConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_proxy_wireguard_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DeviceConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DeviceConfig) ProtoMessage() {} - -func (x *DeviceConfig) ProtoReflect() protoreflect.Message { - mi := &file_proxy_wireguard_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 DeviceConfig.ProtoReflect.Descriptor instead. -func (*DeviceConfig) Descriptor() ([]byte, []int) { - return file_proxy_wireguard_config_proto_rawDescGZIP(), []int{1} -} - -func (x *DeviceConfig) GetSecretKey() string { - if x != nil { - return x.SecretKey - } - return "" -} - -func (x *DeviceConfig) GetEndpoint() []string { - if x != nil { - return x.Endpoint - } - return nil -} - -func (x *DeviceConfig) GetPeers() []*PeerConfig { - if x != nil { - return x.Peers - } - return nil -} - -func (x *DeviceConfig) GetMtu() int32 { - if x != nil { - return x.Mtu - } - return 0 -} - -func (x *DeviceConfig) GetNumWorkers() int32 { - if x != nil { - return x.NumWorkers - } - return 0 -} - -func (x *DeviceConfig) GetReserved() []byte { - if x != nil { - return x.Reserved - } - return nil -} - -func (x *DeviceConfig) GetDomainStrategy() DeviceConfig_DomainStrategy { - if x != nil { - return x.DomainStrategy - } - return DeviceConfig_FORCE_IP -} - -func (x *DeviceConfig) GetIsClient() bool { - if x != nil { - return x.IsClient - } - return false -} - -func (x *DeviceConfig) GetKernelMode() bool { - if x != nil { - return x.KernelMode - } - return false -} - -var File_proxy_wireguard_config_proto protoreflect.FileDescriptor - -var file_proxy_wireguard_config_proto_rawDesc = []byte{ - 0x0a, 0x1c, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x77, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, - 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x14, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x77, 0x69, 0x72, 0x65, 0x67, - 0x75, 0x61, 0x72, 0x64, 0x22, 0xad, 0x01, 0x0a, 0x0a, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, - 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x70, 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, - 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x72, 0x65, 0x5f, 0x73, 0x68, 0x61, 0x72, 0x65, 0x64, - 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x65, 0x53, - 0x68, 0x61, 0x72, 0x65, 0x64, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, - 0x6f, 0x69, 0x6e, 0x74, 0x12, 0x1d, 0x0a, 0x0a, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x61, 0x6c, 0x69, - 0x76, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x6b, 0x65, 0x65, 0x70, 0x41, 0x6c, - 0x69, 0x76, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, 0x64, 0x5f, 0x69, - 0x70, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0a, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x65, - 0x64, 0x49, 0x70, 0x73, 0x22, 0xc8, 0x03, 0x0a, 0x0c, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1d, 0x0a, 0x0a, 0x73, 0x65, 0x63, 0x72, 0x65, 0x74, 0x5f, - 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x63, 0x72, 0x65, - 0x74, 0x4b, 0x65, 0x79, 0x12, 0x1a, 0x0a, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x18, 0x02, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x65, 0x6e, 0x64, 0x70, 0x6f, 0x69, 0x6e, 0x74, - 0x12, 0x36, 0x0a, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x77, 0x69, 0x72, - 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x50, 0x65, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x05, 0x70, 0x65, 0x65, 0x72, 0x73, 0x12, 0x10, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x12, 0x1f, 0x0a, 0x0b, 0x6e, 0x75, - 0x6d, 0x5f, 0x77, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x0a, 0x6e, 0x75, 0x6d, 0x57, 0x6f, 0x72, 0x6b, 0x65, 0x72, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x08, 0x72, - 0x65, 0x73, 0x65, 0x72, 0x76, 0x65, 0x64, 0x12, 0x5a, 0x0a, 0x0f, 0x64, 0x6f, 0x6d, 0x61, 0x69, - 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0e, - 0x32, 0x31, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x77, 0x69, - 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2e, 0x44, 0x65, 0x76, 0x69, 0x63, 0x65, 0x43, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x52, 0x0e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x69, 0x73, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x18, 0x08, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x69, 0x73, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, - 0x12, 0x1f, 0x0a, 0x0b, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x6b, 0x65, 0x72, 0x6e, 0x65, 0x6c, 0x4d, 0x6f, 0x64, - 0x65, 0x22, 0x5c, 0x0a, 0x0e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, - 0x65, 0x67, 0x79, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x10, - 0x00, 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x34, 0x10, 0x01, - 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x36, 0x10, 0x02, 0x12, - 0x0e, 0x0a, 0x0a, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x34, 0x36, 0x10, 0x03, 0x12, - 0x0e, 0x0a, 0x0a, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x36, 0x34, 0x10, 0x04, 0x42, - 0x5e, 0x0a, 0x18, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x70, 0x72, 0x6f, 0x78, - 0x79, 0x2e, 0x77, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x50, 0x01, 0x5a, 0x29, 0x67, - 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, - 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x2f, 0x77, - 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0xaa, 0x02, 0x14, 0x58, 0x72, 0x61, 0x79, 0x2e, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x2e, 0x57, 0x69, 0x72, 0x65, 0x47, 0x75, 0x61, 0x72, 0x64, 0x62, - 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_proxy_wireguard_config_proto_rawDescOnce sync.Once - file_proxy_wireguard_config_proto_rawDescData = file_proxy_wireguard_config_proto_rawDesc -) - -func file_proxy_wireguard_config_proto_rawDescGZIP() []byte { - file_proxy_wireguard_config_proto_rawDescOnce.Do(func() { - file_proxy_wireguard_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_proxy_wireguard_config_proto_rawDescData) - }) - return file_proxy_wireguard_config_proto_rawDescData -} - -var file_proxy_wireguard_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_proxy_wireguard_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_proxy_wireguard_config_proto_goTypes = []interface{}{ - (DeviceConfig_DomainStrategy)(0), // 0: xray.proxy.wireguard.DeviceConfig.DomainStrategy - (*PeerConfig)(nil), // 1: xray.proxy.wireguard.PeerConfig - (*DeviceConfig)(nil), // 2: xray.proxy.wireguard.DeviceConfig -} -var file_proxy_wireguard_config_proto_depIdxs = []int32{ - 1, // 0: xray.proxy.wireguard.DeviceConfig.peers:type_name -> xray.proxy.wireguard.PeerConfig - 0, // 1: xray.proxy.wireguard.DeviceConfig.domain_strategy:type_name -> xray.proxy.wireguard.DeviceConfig.DomainStrategy - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_proxy_wireguard_config_proto_init() } -func file_proxy_wireguard_config_proto_init() { - if File_proxy_wireguard_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_proxy_wireguard_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PeerConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_proxy_wireguard_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DeviceConfig); 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_proxy_wireguard_config_proto_rawDesc, - NumEnums: 1, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_proxy_wireguard_config_proto_goTypes, - DependencyIndexes: file_proxy_wireguard_config_proto_depIdxs, - EnumInfos: file_proxy_wireguard_config_proto_enumTypes, - MessageInfos: file_proxy_wireguard_config_proto_msgTypes, - }.Build() - File_proxy_wireguard_config_proto = out.File - file_proxy_wireguard_config_proto_rawDesc = nil - file_proxy_wireguard_config_proto_goTypes = nil - file_proxy_wireguard_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/global/config.pb.go b/xray_api/proto/transport/global/config.pb.go deleted file mode 100644 index 0d32542..0000000 --- a/xray_api/proto/transport/global/config.pb.go +++ /dev/null @@ -1,162 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/global/config.proto - -package global - -import ( - internet "marzban-node/xray_api/proto/transport/internet" - 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) -) - -// Global transport settings. This affects all type of connections that go -// through Xray. Deprecated. Use each settings in StreamConfig. -// -// Deprecated: Marked as deprecated in transport/global/config.proto. -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - TransportSettings []*internet.TransportConfig `protobuf:"bytes,1,rep,name=transport_settings,json=transportSettings,proto3" json:"transport_settings,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_global_config_proto_msgTypes[0] - 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_transport_global_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_global_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetTransportSettings() []*internet.TransportConfig { - if x != nil { - return x.TransportSettings - } - return nil -} - -var File_transport_global_config_proto protoreflect.FileDescriptor - -var file_transport_global_config_proto_rawDesc = []byte{ - 0x0a, 0x1d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x67, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x0e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x1a, - 0x1f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x22, 0x65, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x57, 0x0a, 0x12, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x3a, 0x02, 0x18, 0x01, 0x42, 0x61, 0x0a, 0x19, 0x63, 0x6f, 0x6d, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x67, 0x6c, - 0x6f, 0x62, 0x61, 0x6c, 0x50, 0x01, 0x5a, 0x2a, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, - 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x67, 0x6c, 0x6f, 0x62, - 0x61, 0x6c, 0xaa, 0x02, 0x15, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x47, 0x6c, 0x6f, 0x62, 0x61, 0x6c, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_transport_global_config_proto_rawDescOnce sync.Once - file_transport_global_config_proto_rawDescData = file_transport_global_config_proto_rawDesc -) - -func file_transport_global_config_proto_rawDescGZIP() []byte { - file_transport_global_config_proto_rawDescOnce.Do(func() { - file_transport_global_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_global_config_proto_rawDescData) - }) - return file_transport_global_config_proto_rawDescData -} - -var file_transport_global_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_global_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.Config - (*internet.TransportConfig)(nil), // 1: xray.transport.internet.TransportConfig -} -var file_transport_global_config_proto_depIdxs = []int32{ - 1, // 0: xray.transport.Config.transport_settings:type_name -> xray.transport.internet.TransportConfig - 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_transport_global_config_proto_init() } -func file_transport_global_config_proto_init() { - if File_transport_global_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_global_config_proto_msgTypes[0].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_transport_global_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_global_config_proto_goTypes, - DependencyIndexes: file_transport_global_config_proto_depIdxs, - MessageInfos: file_transport_global_config_proto_msgTypes, - }.Build() - File_transport_global_config_proto = out.File - file_transport_global_config_proto_rawDesc = nil - file_transport_global_config_proto_goTypes = nil - file_transport_global_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/config.pb.go b/xray_api/proto/transport/internet/config.pb.go deleted file mode 100644 index 0b5e81a..0000000 --- a/xray_api/proto/transport/internet/config.pb.go +++ /dev/null @@ -1,876 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/config.proto - -package internet - -import ( - serial "marzban-node/xray_api/proto/common/serial" - 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 TransportProtocol int32 - -const ( - TransportProtocol_TCP TransportProtocol = 0 - TransportProtocol_UDP TransportProtocol = 1 - TransportProtocol_MKCP TransportProtocol = 2 - TransportProtocol_WebSocket TransportProtocol = 3 - TransportProtocol_HTTP TransportProtocol = 4 - TransportProtocol_DomainSocket TransportProtocol = 5 - TransportProtocol_HTTPUpgrade TransportProtocol = 6 - TransportProtocol_SplitHTTP TransportProtocol = 7 -) - -// Enum value maps for TransportProtocol. -var ( - TransportProtocol_name = map[int32]string{ - 0: "TCP", - 1: "UDP", - 2: "MKCP", - 3: "WebSocket", - 4: "HTTP", - 5: "DomainSocket", - 6: "HTTPUpgrade", - 7: "SplitHTTP", - } - TransportProtocol_value = map[string]int32{ - "TCP": 0, - "UDP": 1, - "MKCP": 2, - "WebSocket": 3, - "HTTP": 4, - "DomainSocket": 5, - "HTTPUpgrade": 6, - "SplitHTTP": 7, - } -) - -func (x TransportProtocol) Enum() *TransportProtocol { - p := new(TransportProtocol) - *p = x - return p -} - -func (x TransportProtocol) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (TransportProtocol) Descriptor() protoreflect.EnumDescriptor { - return file_transport_internet_config_proto_enumTypes[0].Descriptor() -} - -func (TransportProtocol) Type() protoreflect.EnumType { - return &file_transport_internet_config_proto_enumTypes[0] -} - -func (x TransportProtocol) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use TransportProtocol.Descriptor instead. -func (TransportProtocol) EnumDescriptor() ([]byte, []int) { - return file_transport_internet_config_proto_rawDescGZIP(), []int{0} -} - -type DomainStrategy int32 - -const ( - DomainStrategy_AS_IS DomainStrategy = 0 - DomainStrategy_USE_IP DomainStrategy = 1 - DomainStrategy_USE_IP4 DomainStrategy = 2 - DomainStrategy_USE_IP6 DomainStrategy = 3 - DomainStrategy_USE_IP46 DomainStrategy = 4 - DomainStrategy_USE_IP64 DomainStrategy = 5 - DomainStrategy_FORCE_IP DomainStrategy = 6 - DomainStrategy_FORCE_IP4 DomainStrategy = 7 - DomainStrategy_FORCE_IP6 DomainStrategy = 8 - DomainStrategy_FORCE_IP46 DomainStrategy = 9 - DomainStrategy_FORCE_IP64 DomainStrategy = 10 -) - -// Enum value maps for DomainStrategy. -var ( - DomainStrategy_name = map[int32]string{ - 0: "AS_IS", - 1: "USE_IP", - 2: "USE_IP4", - 3: "USE_IP6", - 4: "USE_IP46", - 5: "USE_IP64", - 6: "FORCE_IP", - 7: "FORCE_IP4", - 8: "FORCE_IP6", - 9: "FORCE_IP46", - 10: "FORCE_IP64", - } - DomainStrategy_value = map[string]int32{ - "AS_IS": 0, - "USE_IP": 1, - "USE_IP4": 2, - "USE_IP6": 3, - "USE_IP46": 4, - "USE_IP64": 5, - "FORCE_IP": 6, - "FORCE_IP4": 7, - "FORCE_IP6": 8, - "FORCE_IP46": 9, - "FORCE_IP64": 10, - } -) - -func (x DomainStrategy) Enum() *DomainStrategy { - p := new(DomainStrategy) - *p = x - return p -} - -func (x DomainStrategy) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (DomainStrategy) Descriptor() protoreflect.EnumDescriptor { - return file_transport_internet_config_proto_enumTypes[1].Descriptor() -} - -func (DomainStrategy) Type() protoreflect.EnumType { - return &file_transport_internet_config_proto_enumTypes[1] -} - -func (x DomainStrategy) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use DomainStrategy.Descriptor instead. -func (DomainStrategy) EnumDescriptor() ([]byte, []int) { - return file_transport_internet_config_proto_rawDescGZIP(), []int{1} -} - -type SocketConfig_TProxyMode int32 - -const ( - // TProxy is off. - SocketConfig_Off SocketConfig_TProxyMode = 0 - // TProxy mode. - SocketConfig_TProxy SocketConfig_TProxyMode = 1 - // Redirect mode. - SocketConfig_Redirect SocketConfig_TProxyMode = 2 -) - -// Enum value maps for SocketConfig_TProxyMode. -var ( - SocketConfig_TProxyMode_name = map[int32]string{ - 0: "Off", - 1: "TProxy", - 2: "Redirect", - } - SocketConfig_TProxyMode_value = map[string]int32{ - "Off": 0, - "TProxy": 1, - "Redirect": 2, - } -) - -func (x SocketConfig_TProxyMode) Enum() *SocketConfig_TProxyMode { - p := new(SocketConfig_TProxyMode) - *p = x - return p -} - -func (x SocketConfig_TProxyMode) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (SocketConfig_TProxyMode) Descriptor() protoreflect.EnumDescriptor { - return file_transport_internet_config_proto_enumTypes[2].Descriptor() -} - -func (SocketConfig_TProxyMode) Type() protoreflect.EnumType { - return &file_transport_internet_config_proto_enumTypes[2] -} - -func (x SocketConfig_TProxyMode) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use SocketConfig_TProxyMode.Descriptor instead. -func (SocketConfig_TProxyMode) EnumDescriptor() ([]byte, []int) { - return file_transport_internet_config_proto_rawDescGZIP(), []int{3, 0} -} - -type TransportConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Type of network that this settings supports. - // Deprecated. Use the string form below. - // - // Deprecated: Marked as deprecated in transport/internet/config.proto. - Protocol TransportProtocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=xray.transport.internet.TransportProtocol" json:"protocol,omitempty"` - // Type of network that this settings supports. - ProtocolName string `protobuf:"bytes,3,opt,name=protocol_name,json=protocolName,proto3" json:"protocol_name,omitempty"` - // Specific settings. Must be of the transports. - Settings *serial.TypedMessage `protobuf:"bytes,2,opt,name=settings,proto3" json:"settings,omitempty"` -} - -func (x *TransportConfig) Reset() { - *x = TransportConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TransportConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TransportConfig) ProtoMessage() {} - -func (x *TransportConfig) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_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 TransportConfig.ProtoReflect.Descriptor instead. -func (*TransportConfig) Descriptor() ([]byte, []int) { - return file_transport_internet_config_proto_rawDescGZIP(), []int{0} -} - -// Deprecated: Marked as deprecated in transport/internet/config.proto. -func (x *TransportConfig) GetProtocol() TransportProtocol { - if x != nil { - return x.Protocol - } - return TransportProtocol_TCP -} - -func (x *TransportConfig) GetProtocolName() string { - if x != nil { - return x.ProtocolName - } - return "" -} - -func (x *TransportConfig) GetSettings() *serial.TypedMessage { - if x != nil { - return x.Settings - } - return nil -} - -type StreamConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Effective network. Deprecated. Use the string form below. - // - // Deprecated: Marked as deprecated in transport/internet/config.proto. - Protocol TransportProtocol `protobuf:"varint,1,opt,name=protocol,proto3,enum=xray.transport.internet.TransportProtocol" json:"protocol,omitempty"` - // Effective network. - ProtocolName string `protobuf:"bytes,5,opt,name=protocol_name,json=protocolName,proto3" json:"protocol_name,omitempty"` - TransportSettings []*TransportConfig `protobuf:"bytes,2,rep,name=transport_settings,json=transportSettings,proto3" json:"transport_settings,omitempty"` - // Type of security. Must be a message name of the settings proto. - SecurityType string `protobuf:"bytes,3,opt,name=security_type,json=securityType,proto3" json:"security_type,omitempty"` - // Settings for transport security. For now the only choice is TLS. - SecuritySettings []*serial.TypedMessage `protobuf:"bytes,4,rep,name=security_settings,json=securitySettings,proto3" json:"security_settings,omitempty"` - SocketSettings *SocketConfig `protobuf:"bytes,6,opt,name=socket_settings,json=socketSettings,proto3" json:"socket_settings,omitempty"` -} - -func (x *StreamConfig) Reset() { - *x = StreamConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *StreamConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*StreamConfig) ProtoMessage() {} - -func (x *StreamConfig) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_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 StreamConfig.ProtoReflect.Descriptor instead. -func (*StreamConfig) Descriptor() ([]byte, []int) { - return file_transport_internet_config_proto_rawDescGZIP(), []int{1} -} - -// Deprecated: Marked as deprecated in transport/internet/config.proto. -func (x *StreamConfig) GetProtocol() TransportProtocol { - if x != nil { - return x.Protocol - } - return TransportProtocol_TCP -} - -func (x *StreamConfig) GetProtocolName() string { - if x != nil { - return x.ProtocolName - } - return "" -} - -func (x *StreamConfig) GetTransportSettings() []*TransportConfig { - if x != nil { - return x.TransportSettings - } - return nil -} - -func (x *StreamConfig) GetSecurityType() string { - if x != nil { - return x.SecurityType - } - return "" -} - -func (x *StreamConfig) GetSecuritySettings() []*serial.TypedMessage { - if x != nil { - return x.SecuritySettings - } - return nil -} - -func (x *StreamConfig) GetSocketSettings() *SocketConfig { - if x != nil { - return x.SocketSettings - } - return nil -} - -type ProxyConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Tag string `protobuf:"bytes,1,opt,name=tag,proto3" json:"tag,omitempty"` - TransportLayerProxy bool `protobuf:"varint,2,opt,name=transportLayerProxy,proto3" json:"transportLayerProxy,omitempty"` -} - -func (x *ProxyConfig) Reset() { - *x = ProxyConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ProxyConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ProxyConfig) ProtoMessage() {} - -func (x *ProxyConfig) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_config_proto_msgTypes[2] - 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 ProxyConfig.ProtoReflect.Descriptor instead. -func (*ProxyConfig) Descriptor() ([]byte, []int) { - return file_transport_internet_config_proto_rawDescGZIP(), []int{2} -} - -func (x *ProxyConfig) GetTag() string { - if x != nil { - return x.Tag - } - return "" -} - -func (x *ProxyConfig) GetTransportLayerProxy() bool { - if x != nil { - return x.TransportLayerProxy - } - return false -} - -// SocketConfig is options to be applied on network sockets. -type SocketConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Mark of the connection. If non-zero, the value will be set to SO_MARK. - Mark int32 `protobuf:"varint,1,opt,name=mark,proto3" json:"mark,omitempty"` - // TFO is the state of TFO settings. - Tfo int32 `protobuf:"varint,2,opt,name=tfo,proto3" json:"tfo,omitempty"` - // TProxy is for enabling TProxy socket option. - Tproxy SocketConfig_TProxyMode `protobuf:"varint,3,opt,name=tproxy,proto3,enum=xray.transport.internet.SocketConfig_TProxyMode" json:"tproxy,omitempty"` - // ReceiveOriginalDestAddress is for enabling IP_RECVORIGDSTADDR socket - // option. This option is for UDP only. - ReceiveOriginalDestAddress bool `protobuf:"varint,4,opt,name=receive_original_dest_address,json=receiveOriginalDestAddress,proto3" json:"receive_original_dest_address,omitempty"` - BindAddress []byte `protobuf:"bytes,5,opt,name=bind_address,json=bindAddress,proto3" json:"bind_address,omitempty"` - BindPort uint32 `protobuf:"varint,6,opt,name=bind_port,json=bindPort,proto3" json:"bind_port,omitempty"` - AcceptProxyProtocol bool `protobuf:"varint,7,opt,name=accept_proxy_protocol,json=acceptProxyProtocol,proto3" json:"accept_proxy_protocol,omitempty"` - DomainStrategy DomainStrategy `protobuf:"varint,8,opt,name=domain_strategy,json=domainStrategy,proto3,enum=xray.transport.internet.DomainStrategy" json:"domain_strategy,omitempty"` - DialerProxy string `protobuf:"bytes,9,opt,name=dialer_proxy,json=dialerProxy,proto3" json:"dialer_proxy,omitempty"` - TcpKeepAliveInterval int32 `protobuf:"varint,10,opt,name=tcp_keep_alive_interval,json=tcpKeepAliveInterval,proto3" json:"tcp_keep_alive_interval,omitempty"` - TcpKeepAliveIdle int32 `protobuf:"varint,11,opt,name=tcp_keep_alive_idle,json=tcpKeepAliveIdle,proto3" json:"tcp_keep_alive_idle,omitempty"` - TcpCongestion string `protobuf:"bytes,12,opt,name=tcp_congestion,json=tcpCongestion,proto3" json:"tcp_congestion,omitempty"` - Interface string `protobuf:"bytes,13,opt,name=interface,proto3" json:"interface,omitempty"` - V6Only bool `protobuf:"varint,14,opt,name=v6only,proto3" json:"v6only,omitempty"` - TcpWindowClamp int32 `protobuf:"varint,15,opt,name=tcp_window_clamp,json=tcpWindowClamp,proto3" json:"tcp_window_clamp,omitempty"` - TcpUserTimeout int32 `protobuf:"varint,16,opt,name=tcp_user_timeout,json=tcpUserTimeout,proto3" json:"tcp_user_timeout,omitempty"` - TcpMaxSeg int32 `protobuf:"varint,17,opt,name=tcp_max_seg,json=tcpMaxSeg,proto3" json:"tcp_max_seg,omitempty"` - TcpNoDelay bool `protobuf:"varint,18,opt,name=tcp_no_delay,json=tcpNoDelay,proto3" json:"tcp_no_delay,omitempty"` - TcpMptcp bool `protobuf:"varint,19,opt,name=tcp_mptcp,json=tcpMptcp,proto3" json:"tcp_mptcp,omitempty"` -} - -func (x *SocketConfig) Reset() { - *x = SocketConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *SocketConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*SocketConfig) ProtoMessage() {} - -func (x *SocketConfig) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_config_proto_msgTypes[3] - 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 SocketConfig.ProtoReflect.Descriptor instead. -func (*SocketConfig) Descriptor() ([]byte, []int) { - return file_transport_internet_config_proto_rawDescGZIP(), []int{3} -} - -func (x *SocketConfig) GetMark() int32 { - if x != nil { - return x.Mark - } - return 0 -} - -func (x *SocketConfig) GetTfo() int32 { - if x != nil { - return x.Tfo - } - return 0 -} - -func (x *SocketConfig) GetTproxy() SocketConfig_TProxyMode { - if x != nil { - return x.Tproxy - } - return SocketConfig_Off -} - -func (x *SocketConfig) GetReceiveOriginalDestAddress() bool { - if x != nil { - return x.ReceiveOriginalDestAddress - } - return false -} - -func (x *SocketConfig) GetBindAddress() []byte { - if x != nil { - return x.BindAddress - } - return nil -} - -func (x *SocketConfig) GetBindPort() uint32 { - if x != nil { - return x.BindPort - } - return 0 -} - -func (x *SocketConfig) GetAcceptProxyProtocol() bool { - if x != nil { - return x.AcceptProxyProtocol - } - return false -} - -func (x *SocketConfig) GetDomainStrategy() DomainStrategy { - if x != nil { - return x.DomainStrategy - } - return DomainStrategy_AS_IS -} - -func (x *SocketConfig) GetDialerProxy() string { - if x != nil { - return x.DialerProxy - } - return "" -} - -func (x *SocketConfig) GetTcpKeepAliveInterval() int32 { - if x != nil { - return x.TcpKeepAliveInterval - } - return 0 -} - -func (x *SocketConfig) GetTcpKeepAliveIdle() int32 { - if x != nil { - return x.TcpKeepAliveIdle - } - return 0 -} - -func (x *SocketConfig) GetTcpCongestion() string { - if x != nil { - return x.TcpCongestion - } - return "" -} - -func (x *SocketConfig) GetInterface() string { - if x != nil { - return x.Interface - } - return "" -} - -func (x *SocketConfig) GetV6Only() bool { - if x != nil { - return x.V6Only - } - return false -} - -func (x *SocketConfig) GetTcpWindowClamp() int32 { - if x != nil { - return x.TcpWindowClamp - } - return 0 -} - -func (x *SocketConfig) GetTcpUserTimeout() int32 { - if x != nil { - return x.TcpUserTimeout - } - return 0 -} - -func (x *SocketConfig) GetTcpMaxSeg() int32 { - if x != nil { - return x.TcpMaxSeg - } - return 0 -} - -func (x *SocketConfig) GetTcpNoDelay() bool { - if x != nil { - return x.TcpNoDelay - } - return false -} - -func (x *SocketConfig) GetTcpMptcp() bool { - if x != nil { - return x.TcpMptcp - } - return false -} - -var File_transport_internet_config_proto protoreflect.FileDescriptor - -var file_transport_internet_config_proto_rawDesc = []byte{ - 0x0a, 0x1f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x12, 0x17, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, - 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, - 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0xc0, 0x01, - 0x0a, 0x0f, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x23, 0x0a, - 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x3c, 0x0a, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, - 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, - 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x08, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, - 0x22, 0x9c, 0x03, 0x0a, 0x0c, 0x53, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x4a, 0x0a, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x2a, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x42, - 0x02, 0x18, 0x01, 0x52, 0x08, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x23, 0x0a, - 0x0d, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x05, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x0c, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4e, 0x61, - 0x6d, 0x65, 0x12, 0x57, 0x0a, 0x12, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x5f, - 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x11, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x23, 0x0a, 0x0d, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x4d, 0x0a, 0x11, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x5f, 0x73, 0x65, 0x74, - 0x74, 0x69, 0x6e, 0x67, 0x73, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, - 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x10, 0x73, - 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, - 0x4e, 0x0a, 0x0f, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, 0x6e, - 0x67, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x25, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, - 0x0e, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x22, - 0x51, 0x0a, 0x0b, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x10, - 0x0a, 0x03, 0x74, 0x61, 0x67, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x74, 0x61, 0x67, - 0x12, 0x30, 0x0a, 0x13, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x79, - 0x65, 0x72, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x4c, 0x61, 0x79, 0x65, 0x72, 0x50, 0x72, 0x6f, - 0x78, 0x79, 0x22, 0xd1, 0x06, 0x0a, 0x0c, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x05, 0x52, 0x04, 0x6d, 0x61, 0x72, 0x6b, 0x12, 0x10, 0x0a, 0x03, 0x74, 0x66, 0x6f, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x05, 0x52, 0x03, 0x74, 0x66, 0x6f, 0x12, 0x48, 0x0a, 0x06, 0x74, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x30, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x2e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x54, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, 0x6f, 0x64, 0x65, 0x52, 0x06, 0x74, 0x70, 0x72, - 0x6f, 0x78, 0x79, 0x12, 0x41, 0x0a, 0x1d, 0x72, 0x65, 0x63, 0x65, 0x69, 0x76, 0x65, 0x5f, 0x6f, - 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x5f, 0x64, 0x65, 0x73, 0x74, 0x5f, 0x61, 0x64, 0x64, - 0x72, 0x65, 0x73, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x1a, 0x72, 0x65, 0x63, 0x65, - 0x69, 0x76, 0x65, 0x4f, 0x72, 0x69, 0x67, 0x69, 0x6e, 0x61, 0x6c, 0x44, 0x65, 0x73, 0x74, 0x41, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x62, 0x69, 0x6e, 0x64, 0x5f, 0x61, - 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x62, 0x69, - 0x6e, 0x64, 0x41, 0x64, 0x64, 0x72, 0x65, 0x73, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x62, 0x69, 0x6e, - 0x64, 0x5f, 0x70, 0x6f, 0x72, 0x74, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x08, 0x62, 0x69, - 0x6e, 0x64, 0x50, 0x6f, 0x72, 0x74, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, - 0x07, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x50, 0x72, 0x6f, - 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x50, 0x0a, 0x0f, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x73, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x0e, 0x32, 0x27, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x44, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x52, 0x0e, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x21, 0x0a, 0x0c, - 0x64, 0x69, 0x61, 0x6c, 0x65, 0x72, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x18, 0x09, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0b, 0x64, 0x69, 0x61, 0x6c, 0x65, 0x72, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, - 0x35, 0x0a, 0x17, 0x74, 0x63, 0x70, 0x5f, 0x6b, 0x65, 0x65, 0x70, 0x5f, 0x61, 0x6c, 0x69, 0x76, - 0x65, 0x5f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x05, - 0x52, 0x14, 0x74, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, 0x65, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x76, 0x61, 0x6c, 0x12, 0x2d, 0x0a, 0x13, 0x74, 0x63, 0x70, 0x5f, 0x6b, 0x65, - 0x65, 0x70, 0x5f, 0x61, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x69, 0x64, 0x6c, 0x65, 0x18, 0x0b, 0x20, - 0x01, 0x28, 0x05, 0x52, 0x10, 0x74, 0x63, 0x70, 0x4b, 0x65, 0x65, 0x70, 0x41, 0x6c, 0x69, 0x76, - 0x65, 0x49, 0x64, 0x6c, 0x65, 0x12, 0x25, 0x0a, 0x0e, 0x74, 0x63, 0x70, 0x5f, 0x63, 0x6f, 0x6e, - 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0d, 0x74, - 0x63, 0x70, 0x43, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x1c, 0x0a, 0x09, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x18, 0x0d, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x09, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x66, 0x61, 0x63, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x76, 0x36, - 0x6f, 0x6e, 0x6c, 0x79, 0x18, 0x0e, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x76, 0x36, 0x6f, 0x6e, - 0x6c, 0x79, 0x12, 0x28, 0x0a, 0x10, 0x74, 0x63, 0x70, 0x5f, 0x77, 0x69, 0x6e, 0x64, 0x6f, 0x77, - 0x5f, 0x63, 0x6c, 0x61, 0x6d, 0x70, 0x18, 0x0f, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x63, - 0x70, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x43, 0x6c, 0x61, 0x6d, 0x70, 0x12, 0x28, 0x0a, 0x10, - 0x74, 0x63, 0x70, 0x5f, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0x10, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0e, 0x74, 0x63, 0x70, 0x55, 0x73, 0x65, 0x72, 0x54, - 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x1e, 0x0a, 0x0b, 0x74, 0x63, 0x70, 0x5f, 0x6d, 0x61, - 0x78, 0x5f, 0x73, 0x65, 0x67, 0x18, 0x11, 0x20, 0x01, 0x28, 0x05, 0x52, 0x09, 0x74, 0x63, 0x70, - 0x4d, 0x61, 0x78, 0x53, 0x65, 0x67, 0x12, 0x20, 0x0a, 0x0c, 0x74, 0x63, 0x70, 0x5f, 0x6e, 0x6f, - 0x5f, 0x64, 0x65, 0x6c, 0x61, 0x79, 0x18, 0x12, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0a, 0x74, 0x63, - 0x70, 0x4e, 0x6f, 0x44, 0x65, 0x6c, 0x61, 0x79, 0x12, 0x1b, 0x0a, 0x09, 0x74, 0x63, 0x70, 0x5f, - 0x6d, 0x70, 0x74, 0x63, 0x70, 0x18, 0x13, 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x74, 0x63, 0x70, - 0x4d, 0x70, 0x74, 0x63, 0x70, 0x22, 0x2f, 0x0a, 0x0a, 0x54, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x4d, - 0x6f, 0x64, 0x65, 0x12, 0x07, 0x0a, 0x03, 0x4f, 0x66, 0x66, 0x10, 0x00, 0x12, 0x0a, 0x0a, 0x06, - 0x54, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x10, 0x01, 0x12, 0x0c, 0x0a, 0x08, 0x52, 0x65, 0x64, 0x69, - 0x72, 0x65, 0x63, 0x74, 0x10, 0x02, 0x2a, 0x7a, 0x0a, 0x11, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x07, 0x0a, 0x03, 0x54, - 0x43, 0x50, 0x10, 0x00, 0x12, 0x07, 0x0a, 0x03, 0x55, 0x44, 0x50, 0x10, 0x01, 0x12, 0x08, 0x0a, - 0x04, 0x4d, 0x4b, 0x43, 0x50, 0x10, 0x02, 0x12, 0x0d, 0x0a, 0x09, 0x57, 0x65, 0x62, 0x53, 0x6f, - 0x63, 0x6b, 0x65, 0x74, 0x10, 0x03, 0x12, 0x08, 0x0a, 0x04, 0x48, 0x54, 0x54, 0x50, 0x10, 0x04, - 0x12, 0x10, 0x0a, 0x0c, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, - 0x10, 0x05, 0x12, 0x0f, 0x0a, 0x0b, 0x48, 0x54, 0x54, 0x50, 0x55, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x10, 0x06, 0x12, 0x0d, 0x0a, 0x09, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x48, 0x54, 0x54, 0x50, - 0x10, 0x07, 0x2a, 0xa9, 0x01, 0x0a, 0x0e, 0x44, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x53, 0x74, 0x72, - 0x61, 0x74, 0x65, 0x67, 0x79, 0x12, 0x09, 0x0a, 0x05, 0x41, 0x53, 0x5f, 0x49, 0x53, 0x10, 0x00, - 0x12, 0x0a, 0x0a, 0x06, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, 0x10, 0x01, 0x12, 0x0b, 0x0a, 0x07, - 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, 0x34, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07, 0x55, 0x53, 0x45, - 0x5f, 0x49, 0x50, 0x36, 0x10, 0x03, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, - 0x34, 0x36, 0x10, 0x04, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x53, 0x45, 0x5f, 0x49, 0x50, 0x36, 0x34, - 0x10, 0x05, 0x12, 0x0c, 0x0a, 0x08, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x10, 0x06, - 0x12, 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x34, 0x10, 0x07, 0x12, - 0x0d, 0x0a, 0x09, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x36, 0x10, 0x08, 0x12, 0x0e, - 0x0a, 0x0a, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x34, 0x36, 0x10, 0x09, 0x12, 0x0e, - 0x0a, 0x0a, 0x46, 0x4f, 0x52, 0x43, 0x45, 0x5f, 0x49, 0x50, 0x36, 0x34, 0x10, 0x0a, 0x42, 0x67, - 0x0a, 0x1b, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x50, 0x01, 0x5a, - 0x2c, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, - 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0xaa, 0x02, 0x17, - 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_config_proto_rawDescOnce sync.Once - file_transport_internet_config_proto_rawDescData = file_transport_internet_config_proto_rawDesc -) - -func file_transport_internet_config_proto_rawDescGZIP() []byte { - file_transport_internet_config_proto_rawDescOnce.Do(func() { - file_transport_internet_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_config_proto_rawDescData) - }) - return file_transport_internet_config_proto_rawDescData -} - -var file_transport_internet_config_proto_enumTypes = make([]protoimpl.EnumInfo, 3) -var file_transport_internet_config_proto_msgTypes = make([]protoimpl.MessageInfo, 4) -var file_transport_internet_config_proto_goTypes = []interface{}{ - (TransportProtocol)(0), // 0: xray.transport.internet.TransportProtocol - (DomainStrategy)(0), // 1: xray.transport.internet.DomainStrategy - (SocketConfig_TProxyMode)(0), // 2: xray.transport.internet.SocketConfig.TProxyMode - (*TransportConfig)(nil), // 3: xray.transport.internet.TransportConfig - (*StreamConfig)(nil), // 4: xray.transport.internet.StreamConfig - (*ProxyConfig)(nil), // 5: xray.transport.internet.ProxyConfig - (*SocketConfig)(nil), // 6: xray.transport.internet.SocketConfig - (*serial.TypedMessage)(nil), // 7: xray.common.serial.TypedMessage -} -var file_transport_internet_config_proto_depIdxs = []int32{ - 0, // 0: xray.transport.internet.TransportConfig.protocol:type_name -> xray.transport.internet.TransportProtocol - 7, // 1: xray.transport.internet.TransportConfig.settings:type_name -> xray.common.serial.TypedMessage - 0, // 2: xray.transport.internet.StreamConfig.protocol:type_name -> xray.transport.internet.TransportProtocol - 3, // 3: xray.transport.internet.StreamConfig.transport_settings:type_name -> xray.transport.internet.TransportConfig - 7, // 4: xray.transport.internet.StreamConfig.security_settings:type_name -> xray.common.serial.TypedMessage - 6, // 5: xray.transport.internet.StreamConfig.socket_settings:type_name -> xray.transport.internet.SocketConfig - 2, // 6: xray.transport.internet.SocketConfig.tproxy:type_name -> xray.transport.internet.SocketConfig.TProxyMode - 1, // 7: xray.transport.internet.SocketConfig.domain_strategy:type_name -> xray.transport.internet.DomainStrategy - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name -} - -func init() { file_transport_internet_config_proto_init() } -func file_transport_internet_config_proto_init() { - if File_transport_internet_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TransportConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*StreamConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ProxyConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*SocketConfig); 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_transport_internet_config_proto_rawDesc, - NumEnums: 3, - NumMessages: 4, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_config_proto_goTypes, - DependencyIndexes: file_transport_internet_config_proto_depIdxs, - EnumInfos: file_transport_internet_config_proto_enumTypes, - MessageInfos: file_transport_internet_config_proto_msgTypes, - }.Build() - File_transport_internet_config_proto = out.File - file_transport_internet_config_proto_rawDesc = nil - file_transport_internet_config_proto_goTypes = nil - file_transport_internet_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/domainsocket/config.pb.go b/xray_api/proto/transport/internet/domainsocket/config.pb.go deleted file mode 100644 index 3ab1adc..0000000 --- a/xray_api/proto/transport/internet/domainsocket/config.pb.go +++ /dev/null @@ -1,180 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/domainsocket/config.proto - -package domainsocket - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Path of the domain socket. This overrides the IP/Port parameter from - // upstream caller. - Path string `protobuf:"bytes,1,opt,name=path,proto3" json:"path,omitempty"` - // Abstract speicifies whether to use abstract namespace or not. - // Traditionally Unix domain socket is file system based. Abstract domain - // socket can be used without acquiring file lock. - Abstract bool `protobuf:"varint,2,opt,name=abstract,proto3" json:"abstract,omitempty"` - // Some apps, eg. haproxy, use the full length of sockaddr_un.sun_path to - // connect(2) or bind(2) when using abstract UDS. - Padding bool `protobuf:"varint,3,opt,name=padding,proto3" json:"padding,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_domainsocket_config_proto_msgTypes[0] - 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_transport_internet_domainsocket_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_domainsocket_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *Config) GetAbstract() bool { - if x != nil { - return x.Abstract - } - return false -} - -func (x *Config) GetPadding() bool { - if x != nil { - return x.Padding - } - return false -} - -var File_transport_internet_domainsocket_config_proto protoreflect.FileDescriptor - -var file_transport_internet_domainsocket_config_proto_rawDesc = []byte{ - 0x0a, 0x2c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x6f, 0x63, 0x6b, 0x65, - 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x24, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x6f, - 0x63, 0x6b, 0x65, 0x74, 0x22, 0x52, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, - 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, - 0x74, 0x68, 0x12, 0x1a, 0x0a, 0x08, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x08, 0x61, 0x62, 0x73, 0x74, 0x72, 0x61, 0x63, 0x74, 0x12, 0x18, - 0x0a, 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x07, 0x70, 0x61, 0x64, 0x64, 0x69, 0x6e, 0x67, 0x42, 0x8e, 0x01, 0x0a, 0x28, 0x63, 0x6f, 0x6d, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, - 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, - 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, - 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x73, 0x6f, 0x63, 0x6b, - 0x65, 0x74, 0xaa, 0x02, 0x24, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x44, 0x6f, 0x6d, - 0x61, 0x69, 0x6e, 0x53, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, -} - -var ( - file_transport_internet_domainsocket_config_proto_rawDescOnce sync.Once - file_transport_internet_domainsocket_config_proto_rawDescData = file_transport_internet_domainsocket_config_proto_rawDesc -) - -func file_transport_internet_domainsocket_config_proto_rawDescGZIP() []byte { - file_transport_internet_domainsocket_config_proto_rawDescOnce.Do(func() { - file_transport_internet_domainsocket_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_domainsocket_config_proto_rawDescData) - }) - return file_transport_internet_domainsocket_config_proto_rawDescData -} - -var file_transport_internet_domainsocket_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_domainsocket_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.domainsocket.Config -} -var file_transport_internet_domainsocket_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_domainsocket_config_proto_init() } -func file_transport_internet_domainsocket_config_proto_init() { - if File_transport_internet_domainsocket_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_domainsocket_config_proto_msgTypes[0].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_transport_internet_domainsocket_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_domainsocket_config_proto_goTypes, - DependencyIndexes: file_transport_internet_domainsocket_config_proto_depIdxs, - MessageInfos: file_transport_internet_domainsocket_config_proto_msgTypes, - }.Build() - File_transport_internet_domainsocket_config_proto = out.File - file_transport_internet_domainsocket_config_proto_rawDesc = nil - file_transport_internet_domainsocket_config_proto_goTypes = nil - file_transport_internet_domainsocket_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/grpc/config.pb.go b/xray_api/proto/transport/internet/grpc/config.pb.go deleted file mode 100644 index a0996e5..0000000 --- a/xray_api/proto/transport/internet/grpc/config.pb.go +++ /dev/null @@ -1,221 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/grpc/config.proto - -package grpc - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Authority string `protobuf:"bytes,1,opt,name=authority,proto3" json:"authority,omitempty"` - ServiceName string `protobuf:"bytes,2,opt,name=service_name,json=serviceName,proto3" json:"service_name,omitempty"` - MultiMode bool `protobuf:"varint,3,opt,name=multi_mode,json=multiMode,proto3" json:"multi_mode,omitempty"` - IdleTimeout int32 `protobuf:"varint,4,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` - HealthCheckTimeout int32 `protobuf:"varint,5,opt,name=health_check_timeout,json=healthCheckTimeout,proto3" json:"health_check_timeout,omitempty"` - PermitWithoutStream bool `protobuf:"varint,6,opt,name=permit_without_stream,json=permitWithoutStream,proto3" json:"permit_without_stream,omitempty"` - InitialWindowsSize int32 `protobuf:"varint,7,opt,name=initial_windows_size,json=initialWindowsSize,proto3" json:"initial_windows_size,omitempty"` - UserAgent string `protobuf:"bytes,8,opt,name=user_agent,json=userAgent,proto3" json:"user_agent,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_grpc_config_proto_msgTypes[0] - 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_transport_internet_grpc_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_grpc_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetAuthority() string { - if x != nil { - return x.Authority - } - return "" -} - -func (x *Config) GetServiceName() string { - if x != nil { - return x.ServiceName - } - return "" -} - -func (x *Config) GetMultiMode() bool { - if x != nil { - return x.MultiMode - } - return false -} - -func (x *Config) GetIdleTimeout() int32 { - if x != nil { - return x.IdleTimeout - } - return 0 -} - -func (x *Config) GetHealthCheckTimeout() int32 { - if x != nil { - return x.HealthCheckTimeout - } - return 0 -} - -func (x *Config) GetPermitWithoutStream() bool { - if x != nil { - return x.PermitWithoutStream - } - return false -} - -func (x *Config) GetInitialWindowsSize() int32 { - if x != nil { - return x.InitialWindowsSize - } - return 0 -} - -func (x *Config) GetUserAgent() string { - if x != nil { - return x.UserAgent - } - return "" -} - -var File_transport_internet_grpc_config_proto protoreflect.FileDescriptor - -var file_transport_internet_grpc_config_proto_rawDesc = []byte{ - 0x0a, 0x24, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x25, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0xc2, 0x02, - 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x61, 0x75, 0x74, 0x68, - 0x6f, 0x72, 0x69, 0x74, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x61, 0x75, 0x74, - 0x68, 0x6f, 0x72, 0x69, 0x74, 0x79, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x6d, 0x75, 0x6c, - 0x74, 0x69, 0x5f, 0x6d, 0x6f, 0x64, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x6d, - 0x75, 0x6c, 0x74, 0x69, 0x4d, 0x6f, 0x64, 0x65, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, - 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, - 0x69, 0x64, 0x6c, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x68, - 0x65, 0x61, 0x6c, 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, - 0x6f, 0x75, 0x74, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x68, 0x65, 0x61, 0x6c, 0x74, - 0x68, 0x43, 0x68, 0x65, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x32, 0x0a, - 0x15, 0x70, 0x65, 0x72, 0x6d, 0x69, 0x74, 0x5f, 0x77, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x5f, - 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x18, 0x06, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x70, 0x65, - 0x72, 0x6d, 0x69, 0x74, 0x57, 0x69, 0x74, 0x68, 0x6f, 0x75, 0x74, 0x53, 0x74, 0x72, 0x65, 0x61, - 0x6d, 0x12, 0x30, 0x0a, 0x14, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x5f, 0x77, 0x69, 0x6e, - 0x64, 0x6f, 0x77, 0x73, 0x5f, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x07, 0x20, 0x01, 0x28, 0x05, 0x52, - 0x12, 0x69, 0x6e, 0x69, 0x74, 0x69, 0x61, 0x6c, 0x57, 0x69, 0x6e, 0x64, 0x6f, 0x77, 0x73, 0x53, - 0x69, 0x7a, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x75, 0x73, 0x65, 0x72, 0x5f, 0x61, 0x67, 0x65, 0x6e, - 0x74, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x75, 0x73, 0x65, 0x72, 0x41, 0x67, 0x65, - 0x6e, 0x74, 0x42, 0x33, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_grpc_config_proto_rawDescOnce sync.Once - file_transport_internet_grpc_config_proto_rawDescData = file_transport_internet_grpc_config_proto_rawDesc -) - -func file_transport_internet_grpc_config_proto_rawDescGZIP() []byte { - file_transport_internet_grpc_config_proto_rawDescOnce.Do(func() { - file_transport_internet_grpc_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_grpc_config_proto_rawDescData) - }) - return file_transport_internet_grpc_config_proto_rawDescData -} - -var file_transport_internet_grpc_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_grpc_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.grpc.encoding.Config -} -var file_transport_internet_grpc_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_grpc_config_proto_init() } -func file_transport_internet_grpc_config_proto_init() { - if File_transport_internet_grpc_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_grpc_config_proto_msgTypes[0].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_transport_internet_grpc_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_grpc_config_proto_goTypes, - DependencyIndexes: file_transport_internet_grpc_config_proto_depIdxs, - MessageInfos: file_transport_internet_grpc_config_proto_msgTypes, - }.Build() - File_transport_internet_grpc_config_proto = out.File - file_transport_internet_grpc_config_proto_rawDesc = nil - file_transport_internet_grpc_config_proto_goTypes = nil - file_transport_internet_grpc_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/grpc/encoding/stream.pb.go b/xray_api/proto/transport/internet/grpc/encoding/stream.pb.go deleted file mode 100644 index 519adb7..0000000 --- a/xray_api/proto/transport/internet/grpc/encoding/stream.pb.go +++ /dev/null @@ -1,229 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/grpc/encoding/stream.proto - -package encoding - -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 Hunk struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Data []byte `protobuf:"bytes,1,opt,name=data,proto3" json:"data,omitempty"` -} - -func (x *Hunk) Reset() { - *x = Hunk{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_grpc_encoding_stream_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Hunk) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Hunk) ProtoMessage() {} - -func (x *Hunk) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_grpc_encoding_stream_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 Hunk.ProtoReflect.Descriptor instead. -func (*Hunk) Descriptor() ([]byte, []int) { - return file_transport_internet_grpc_encoding_stream_proto_rawDescGZIP(), []int{0} -} - -func (x *Hunk) GetData() []byte { - if x != nil { - return x.Data - } - return nil -} - -type MultiHunk struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Data [][]byte `protobuf:"bytes,1,rep,name=data,proto3" json:"data,omitempty"` -} - -func (x *MultiHunk) Reset() { - *x = MultiHunk{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_grpc_encoding_stream_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MultiHunk) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MultiHunk) ProtoMessage() {} - -func (x *MultiHunk) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_grpc_encoding_stream_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 MultiHunk.ProtoReflect.Descriptor instead. -func (*MultiHunk) Descriptor() ([]byte, []int) { - return file_transport_internet_grpc_encoding_stream_proto_rawDescGZIP(), []int{1} -} - -func (x *MultiHunk) GetData() [][]byte { - if x != nil { - return x.Data - } - return nil -} - -var File_transport_internet_grpc_encoding_stream_proto protoreflect.FileDescriptor - -var file_transport_internet_grpc_encoding_stream_proto_rawDesc = []byte{ - 0x0a, 0x2d, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x67, 0x72, 0x70, 0x63, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x2f, 0x73, 0x74, 0x72, 0x65, 0x61, 0x6d, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, - 0x25, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x6e, - 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x22, 0x1a, 0x0a, 0x04, 0x48, 0x75, 0x6e, 0x6b, 0x12, 0x12, - 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x04, 0x64, 0x61, - 0x74, 0x61, 0x22, 0x1f, 0x0a, 0x09, 0x4d, 0x75, 0x6c, 0x74, 0x69, 0x48, 0x75, 0x6e, 0x6b, 0x12, - 0x12, 0x0a, 0x04, 0x64, 0x61, 0x74, 0x61, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x04, 0x64, - 0x61, 0x74, 0x61, 0x32, 0xe6, 0x01, 0x0a, 0x0b, 0x47, 0x52, 0x50, 0x43, 0x53, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x12, 0x63, 0x0a, 0x03, 0x54, 0x75, 0x6e, 0x12, 0x2b, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, - 0x6e, 0x67, 0x2e, 0x48, 0x75, 0x6e, 0x6b, 0x1a, 0x2b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2e, - 0x48, 0x75, 0x6e, 0x6b, 0x28, 0x01, 0x30, 0x01, 0x12, 0x72, 0x0a, 0x08, 0x54, 0x75, 0x6e, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x12, 0x30, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x67, - 0x72, 0x70, 0x63, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x4d, 0x75, 0x6c, - 0x74, 0x69, 0x48, 0x75, 0x6e, 0x6b, 0x1a, 0x30, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x2e, 0x67, 0x72, 0x70, 0x63, 0x2e, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x2e, 0x4d, - 0x75, 0x6c, 0x74, 0x69, 0x48, 0x75, 0x6e, 0x6b, 0x28, 0x01, 0x30, 0x01, 0x42, 0x3c, 0x5a, 0x3a, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, - 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x67, 0x72, 0x70, - 0x63, 0x2f, 0x65, 0x6e, 0x63, 0x6f, 0x64, 0x69, 0x6e, 0x67, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_transport_internet_grpc_encoding_stream_proto_rawDescOnce sync.Once - file_transport_internet_grpc_encoding_stream_proto_rawDescData = file_transport_internet_grpc_encoding_stream_proto_rawDesc -) - -func file_transport_internet_grpc_encoding_stream_proto_rawDescGZIP() []byte { - file_transport_internet_grpc_encoding_stream_proto_rawDescOnce.Do(func() { - file_transport_internet_grpc_encoding_stream_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_grpc_encoding_stream_proto_rawDescData) - }) - return file_transport_internet_grpc_encoding_stream_proto_rawDescData -} - -var file_transport_internet_grpc_encoding_stream_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_transport_internet_grpc_encoding_stream_proto_goTypes = []interface{}{ - (*Hunk)(nil), // 0: xray.transport.internet.grpc.encoding.Hunk - (*MultiHunk)(nil), // 1: xray.transport.internet.grpc.encoding.MultiHunk -} -var file_transport_internet_grpc_encoding_stream_proto_depIdxs = []int32{ - 0, // 0: xray.transport.internet.grpc.encoding.GRPCService.Tun:input_type -> xray.transport.internet.grpc.encoding.Hunk - 1, // 1: xray.transport.internet.grpc.encoding.GRPCService.TunMulti:input_type -> xray.transport.internet.grpc.encoding.MultiHunk - 0, // 2: xray.transport.internet.grpc.encoding.GRPCService.Tun:output_type -> xray.transport.internet.grpc.encoding.Hunk - 1, // 3: xray.transport.internet.grpc.encoding.GRPCService.TunMulti:output_type -> xray.transport.internet.grpc.encoding.MultiHunk - 2, // [2:4] is the sub-list for method output_type - 0, // [0:2] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_grpc_encoding_stream_proto_init() } -func file_transport_internet_grpc_encoding_stream_proto_init() { - if File_transport_internet_grpc_encoding_stream_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_grpc_encoding_stream_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Hunk); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_grpc_encoding_stream_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MultiHunk); 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_transport_internet_grpc_encoding_stream_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 1, - }, - GoTypes: file_transport_internet_grpc_encoding_stream_proto_goTypes, - DependencyIndexes: file_transport_internet_grpc_encoding_stream_proto_depIdxs, - MessageInfos: file_transport_internet_grpc_encoding_stream_proto_msgTypes, - }.Build() - File_transport_internet_grpc_encoding_stream_proto = out.File - file_transport_internet_grpc_encoding_stream_proto_rawDesc = nil - file_transport_internet_grpc_encoding_stream_proto_goTypes = nil - file_transport_internet_grpc_encoding_stream_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/grpc/encoding/stream_grpc.pb.go b/xray_api/proto/transport/internet/grpc/encoding/stream_grpc.pb.go deleted file mode 100644 index 5daf42a..0000000 --- a/xray_api/proto/transport/internet/grpc/encoding/stream_grpc.pb.go +++ /dev/null @@ -1,210 +0,0 @@ -// Code generated by protoc-gen-go-grpc. DO NOT EDIT. -// versions: -// - protoc-gen-go-grpc v1.3.0 -// - protoc v5.27.0 -// source: transport/internet/grpc/encoding/stream.proto - -package encoding - -import ( - context "context" - grpc "google.golang.org/grpc" - codes "google.golang.org/grpc/codes" - status "google.golang.org/grpc/status" -) - -// This is a compile-time assertion to ensure that this generated file -// is compatible with the grpc package it is being compiled against. -// Requires gRPC-Go v1.32.0 or later. -const _ = grpc.SupportPackageIsVersion7 - -const ( - GRPCService_Tun_FullMethodName = "/xray.transport.internet.grpc.encoding.GRPCService/Tun" - GRPCService_TunMulti_FullMethodName = "/xray.transport.internet.grpc.encoding.GRPCService/TunMulti" -) - -// GRPCServiceClient is the client API for GRPCService service. -// -// For semantics around ctx use and closing/ending streaming RPCs, please refer to https://pkg.go.dev/google.golang.org/grpc/?tab=doc#ClientConn.NewStream. -type GRPCServiceClient interface { - Tun(ctx context.Context, opts ...grpc.CallOption) (GRPCService_TunClient, error) - TunMulti(ctx context.Context, opts ...grpc.CallOption) (GRPCService_TunMultiClient, error) -} - -type gRPCServiceClient struct { - cc grpc.ClientConnInterface -} - -func NewGRPCServiceClient(cc grpc.ClientConnInterface) GRPCServiceClient { - return &gRPCServiceClient{cc} -} - -func (c *gRPCServiceClient) Tun(ctx context.Context, opts ...grpc.CallOption) (GRPCService_TunClient, error) { - stream, err := c.cc.NewStream(ctx, &GRPCService_ServiceDesc.Streams[0], GRPCService_Tun_FullMethodName, opts...) - if err != nil { - return nil, err - } - x := &gRPCServiceTunClient{stream} - return x, nil -} - -type GRPCService_TunClient interface { - Send(*Hunk) error - Recv() (*Hunk, error) - grpc.ClientStream -} - -type gRPCServiceTunClient struct { - grpc.ClientStream -} - -func (x *gRPCServiceTunClient) Send(m *Hunk) error { - return x.ClientStream.SendMsg(m) -} - -func (x *gRPCServiceTunClient) Recv() (*Hunk, error) { - m := new(Hunk) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func (c *gRPCServiceClient) TunMulti(ctx context.Context, opts ...grpc.CallOption) (GRPCService_TunMultiClient, error) { - stream, err := c.cc.NewStream(ctx, &GRPCService_ServiceDesc.Streams[1], GRPCService_TunMulti_FullMethodName, opts...) - if err != nil { - return nil, err - } - x := &gRPCServiceTunMultiClient{stream} - return x, nil -} - -type GRPCService_TunMultiClient interface { - Send(*MultiHunk) error - Recv() (*MultiHunk, error) - grpc.ClientStream -} - -type gRPCServiceTunMultiClient struct { - grpc.ClientStream -} - -func (x *gRPCServiceTunMultiClient) Send(m *MultiHunk) error { - return x.ClientStream.SendMsg(m) -} - -func (x *gRPCServiceTunMultiClient) Recv() (*MultiHunk, error) { - m := new(MultiHunk) - if err := x.ClientStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// GRPCServiceServer is the server API for GRPCService service. -// All implementations must embed UnimplementedGRPCServiceServer -// for forward compatibility -type GRPCServiceServer interface { - Tun(GRPCService_TunServer) error - TunMulti(GRPCService_TunMultiServer) error - mustEmbedUnimplementedGRPCServiceServer() -} - -// UnimplementedGRPCServiceServer must be embedded to have forward compatible implementations. -type UnimplementedGRPCServiceServer struct { -} - -func (UnimplementedGRPCServiceServer) Tun(GRPCService_TunServer) error { - return status.Errorf(codes.Unimplemented, "method Tun not implemented") -} -func (UnimplementedGRPCServiceServer) TunMulti(GRPCService_TunMultiServer) error { - return status.Errorf(codes.Unimplemented, "method TunMulti not implemented") -} -func (UnimplementedGRPCServiceServer) mustEmbedUnimplementedGRPCServiceServer() {} - -// UnsafeGRPCServiceServer may be embedded to opt out of forward compatibility for this service. -// Use of this interface is not recommended, as added methods to GRPCServiceServer will -// result in compilation errors. -type UnsafeGRPCServiceServer interface { - mustEmbedUnimplementedGRPCServiceServer() -} - -func RegisterGRPCServiceServer(s grpc.ServiceRegistrar, srv GRPCServiceServer) { - s.RegisterService(&GRPCService_ServiceDesc, srv) -} - -func _GRPCService_Tun_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(GRPCServiceServer).Tun(&gRPCServiceTunServer{stream}) -} - -type GRPCService_TunServer interface { - Send(*Hunk) error - Recv() (*Hunk, error) - grpc.ServerStream -} - -type gRPCServiceTunServer struct { - grpc.ServerStream -} - -func (x *gRPCServiceTunServer) Send(m *Hunk) error { - return x.ServerStream.SendMsg(m) -} - -func (x *gRPCServiceTunServer) Recv() (*Hunk, error) { - m := new(Hunk) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -func _GRPCService_TunMulti_Handler(srv interface{}, stream grpc.ServerStream) error { - return srv.(GRPCServiceServer).TunMulti(&gRPCServiceTunMultiServer{stream}) -} - -type GRPCService_TunMultiServer interface { - Send(*MultiHunk) error - Recv() (*MultiHunk, error) - grpc.ServerStream -} - -type gRPCServiceTunMultiServer struct { - grpc.ServerStream -} - -func (x *gRPCServiceTunMultiServer) Send(m *MultiHunk) error { - return x.ServerStream.SendMsg(m) -} - -func (x *gRPCServiceTunMultiServer) Recv() (*MultiHunk, error) { - m := new(MultiHunk) - if err := x.ServerStream.RecvMsg(m); err != nil { - return nil, err - } - return m, nil -} - -// GRPCService_ServiceDesc is the grpc.ServiceDesc for GRPCService service. -// It's only intended for direct use with grpc.RegisterService, -// and not to be introspected or modified (even as a copy) -var GRPCService_ServiceDesc = grpc.ServiceDesc{ - ServiceName: "xray.transport.internet.grpc.encoding.GRPCService", - HandlerType: (*GRPCServiceServer)(nil), - Methods: []grpc.MethodDesc{}, - Streams: []grpc.StreamDesc{ - { - StreamName: "Tun", - Handler: _GRPCService_Tun_Handler, - ServerStreams: true, - ClientStreams: true, - }, - { - StreamName: "TunMulti", - Handler: _GRPCService_TunMulti_Handler, - ServerStreams: true, - ClientStreams: true, - }, - }, - Metadata: "transport/internet/grpc/encoding/stream.proto", -} diff --git a/xray_api/proto/transport/internet/headers/dns/config.pb.go b/xray_api/proto/transport/internet/headers/dns/config.pb.go deleted file mode 100644 index 78e5e99..0000000 --- a/xray_api/proto/transport/internet/headers/dns/config.pb.go +++ /dev/null @@ -1,153 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/headers/dns/config.proto - -package dns - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Domain string `protobuf:"bytes,1,opt,name=domain,proto3" json:"domain,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_dns_config_proto_msgTypes[0] - 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_transport_internet_headers_dns_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_dns_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetDomain() string { - if x != nil { - return x.Domain - } - return "" -} - -var File_transport_internet_headers_dns_config_proto protoreflect.FileDescriptor - -var file_transport_internet_headers_dns_config_proto_rawDesc = []byte{ - 0x0a, 0x2b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x64, 0x6e, 0x73, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x64, - 0x6e, 0x73, 0x22, 0x20, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x16, 0x0a, 0x06, - 0x64, 0x6f, 0x6d, 0x61, 0x69, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x6f, - 0x6d, 0x61, 0x69, 0x6e, 0x42, 0x8b, 0x01, 0x0a, 0x27, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x64, 0x6e, 0x73, - 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, - 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x64, 0x6e, 0x73, 0xaa, 0x02, 0x23, 0x58, - 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x44, - 0x4e, 0x53, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_headers_dns_config_proto_rawDescOnce sync.Once - file_transport_internet_headers_dns_config_proto_rawDescData = file_transport_internet_headers_dns_config_proto_rawDesc -) - -func file_transport_internet_headers_dns_config_proto_rawDescGZIP() []byte { - file_transport_internet_headers_dns_config_proto_rawDescOnce.Do(func() { - file_transport_internet_headers_dns_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_headers_dns_config_proto_rawDescData) - }) - return file_transport_internet_headers_dns_config_proto_rawDescData -} - -var file_transport_internet_headers_dns_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_headers_dns_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.headers.dns.Config -} -var file_transport_internet_headers_dns_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_headers_dns_config_proto_init() } -func file_transport_internet_headers_dns_config_proto_init() { - if File_transport_internet_headers_dns_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_headers_dns_config_proto_msgTypes[0].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_transport_internet_headers_dns_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_headers_dns_config_proto_goTypes, - DependencyIndexes: file_transport_internet_headers_dns_config_proto_depIdxs, - MessageInfos: file_transport_internet_headers_dns_config_proto_msgTypes, - }.Build() - File_transport_internet_headers_dns_config_proto = out.File - file_transport_internet_headers_dns_config_proto_rawDesc = nil - file_transport_internet_headers_dns_config_proto_goTypes = nil - file_transport_internet_headers_dns_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/headers/http/config.pb.go b/xray_api/proto/transport/internet/headers/http/config.pb.go deleted file mode 100644 index 681323f..0000000 --- a/xray_api/proto/transport/internet/headers/http/config.pb.go +++ /dev/null @@ -1,649 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/headers/http/config.proto - -package http - -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 Header struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // "Accept", "Cookie", etc - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` - // Each entry must be valid in one piece. Random entry will be chosen if - // multiple entries present. - Value []string `protobuf:"bytes,2,rep,name=value,proto3" json:"value,omitempty"` -} - -func (x *Header) Reset() { - *x = Header{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Header) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Header) ProtoMessage() {} - -func (x *Header) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_headers_http_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 Header.ProtoReflect.Descriptor instead. -func (*Header) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_http_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Header) GetName() string { - if x != nil { - return x.Name - } - return "" -} - -func (x *Header) GetValue() []string { - if x != nil { - return x.Value - } - return nil -} - -// HTTP version. Default value "1.1". -type Version struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *Version) Reset() { - *x = Version{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Version) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Version) ProtoMessage() {} - -func (x *Version) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_headers_http_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 Version.ProtoReflect.Descriptor instead. -func (*Version) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_http_config_proto_rawDescGZIP(), []int{1} -} - -func (x *Version) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -// HTTP method. Default value "GET". -type Method struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value string `protobuf:"bytes,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *Method) Reset() { - *x = Method{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Method) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Method) ProtoMessage() {} - -func (x *Method) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[2] - 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 Method.ProtoReflect.Descriptor instead. -func (*Method) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_http_config_proto_rawDescGZIP(), []int{2} -} - -func (x *Method) GetValue() string { - if x != nil { - return x.Value - } - return "" -} - -type RequestConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Full HTTP version like "1.1". - Version *Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - // GET, POST, CONNECT etc - Method *Method `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` - // URI like "/login.php" - Uri []string `protobuf:"bytes,3,rep,name=uri,proto3" json:"uri,omitempty"` - Header []*Header `protobuf:"bytes,4,rep,name=header,proto3" json:"header,omitempty"` -} - -func (x *RequestConfig) Reset() { - *x = RequestConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *RequestConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*RequestConfig) ProtoMessage() {} - -func (x *RequestConfig) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[3] - 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 RequestConfig.ProtoReflect.Descriptor instead. -func (*RequestConfig) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_http_config_proto_rawDescGZIP(), []int{3} -} - -func (x *RequestConfig) GetVersion() *Version { - if x != nil { - return x.Version - } - return nil -} - -func (x *RequestConfig) GetMethod() *Method { - if x != nil { - return x.Method - } - return nil -} - -func (x *RequestConfig) GetUri() []string { - if x != nil { - return x.Uri - } - return nil -} - -func (x *RequestConfig) GetHeader() []*Header { - if x != nil { - return x.Header - } - return nil -} - -type Status struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Status code. Default "200". - Code string `protobuf:"bytes,1,opt,name=code,proto3" json:"code,omitempty"` - // Statue reason. Default "OK". - Reason string `protobuf:"bytes,2,opt,name=reason,proto3" json:"reason,omitempty"` -} - -func (x *Status) Reset() { - *x = Status{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Status) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Status) ProtoMessage() {} - -func (x *Status) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[4] - 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 Status.ProtoReflect.Descriptor instead. -func (*Status) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_http_config_proto_rawDescGZIP(), []int{4} -} - -func (x *Status) GetCode() string { - if x != nil { - return x.Code - } - return "" -} - -func (x *Status) GetReason() string { - if x != nil { - return x.Reason - } - return "" -} - -type ResponseConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Version *Version `protobuf:"bytes,1,opt,name=version,proto3" json:"version,omitempty"` - Status *Status `protobuf:"bytes,2,opt,name=status,proto3" json:"status,omitempty"` - Header []*Header `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty"` -} - -func (x *ResponseConfig) Reset() { - *x = ResponseConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ResponseConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ResponseConfig) ProtoMessage() {} - -func (x *ResponseConfig) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[5] - 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 ResponseConfig.ProtoReflect.Descriptor instead. -func (*ResponseConfig) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_http_config_proto_rawDescGZIP(), []int{5} -} - -func (x *ResponseConfig) GetVersion() *Version { - if x != nil { - return x.Version - } - return nil -} - -func (x *ResponseConfig) GetStatus() *Status { - if x != nil { - return x.Status - } - return nil -} - -func (x *ResponseConfig) GetHeader() []*Header { - if x != nil { - return x.Header - } - return nil -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Settings for authenticating requests. If not set, client side will not send - // authenication header, and server side will bypass authentication. - Request *RequestConfig `protobuf:"bytes,1,opt,name=request,proto3" json:"request,omitempty"` - // Settings for authenticating responses. If not set, client side will bypass - // authentication, and server side will not send authentication header. - Response *ResponseConfig `protobuf:"bytes,2,opt,name=response,proto3" json:"response,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_http_config_proto_msgTypes[6] - 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_transport_internet_headers_http_config_proto_msgTypes[6] - 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_transport_internet_headers_http_config_proto_rawDescGZIP(), []int{6} -} - -func (x *Config) GetRequest() *RequestConfig { - if x != nil { - return x.Request - } - return nil -} - -func (x *Config) GetResponse() *ResponseConfig { - if x != nil { - return x.Response - } - return nil -} - -var File_transport_internet_headers_http_config_proto protoreflect.FileDescriptor - -var file_transport_internet_headers_http_config_proto_rawDesc = []byte{ - 0x0a, 0x2c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x68, 0x74, 0x74, - 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x24, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, - 0x68, 0x74, 0x74, 0x70, 0x22, 0x32, 0x0a, 0x06, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x12, - 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, - 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x1f, 0x0a, 0x07, 0x56, 0x65, 0x72, 0x73, - 0x69, 0x6f, 0x6e, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x1e, 0x0a, 0x06, 0x4d, 0x65, 0x74, - 0x68, 0x6f, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xf6, 0x01, 0x0a, 0x0d, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x68, - 0x74, 0x74, 0x70, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x4d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x12, 0x10, 0x0a, 0x03, 0x75, 0x72, - 0x69, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x03, 0x75, 0x72, 0x69, 0x12, 0x44, 0x0a, 0x06, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x04, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x68, - 0x74, 0x74, 0x70, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x22, 0x34, 0x0a, 0x06, 0x53, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x12, 0x0a, 0x04, - 0x63, 0x6f, 0x64, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x63, 0x6f, 0x64, 0x65, - 0x12, 0x16, 0x0a, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x72, 0x65, 0x61, 0x73, 0x6f, 0x6e, 0x22, 0xe5, 0x01, 0x0a, 0x0e, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x47, 0x0a, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x68, - 0x74, 0x74, 0x70, 0x2e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x07, 0x76, 0x65, 0x72, - 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x44, 0x0a, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x53, 0x74, 0x61, 0x74, - 0x75, 0x73, 0x52, 0x06, 0x73, 0x74, 0x61, 0x74, 0x75, 0x73, 0x12, 0x44, 0x0a, 0x06, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, - 0x70, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x22, 0xa9, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x4d, 0x0a, 0x07, 0x72, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x33, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x68, - 0x74, 0x74, 0x70, 0x2e, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x52, 0x07, 0x72, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x50, 0x0a, 0x08, 0x72, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x34, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x68, - 0x74, 0x74, 0x70, 0x2e, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x52, 0x08, 0x72, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x8e, 0x01, 0x0a, - 0x28, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, - 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x2f, 0x68, 0x74, 0x74, 0x70, 0xaa, 0x02, 0x24, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_headers_http_config_proto_rawDescOnce sync.Once - file_transport_internet_headers_http_config_proto_rawDescData = file_transport_internet_headers_http_config_proto_rawDesc -) - -func file_transport_internet_headers_http_config_proto_rawDescGZIP() []byte { - file_transport_internet_headers_http_config_proto_rawDescOnce.Do(func() { - file_transport_internet_headers_http_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_headers_http_config_proto_rawDescData) - }) - return file_transport_internet_headers_http_config_proto_rawDescData -} - -var file_transport_internet_headers_http_config_proto_msgTypes = make([]protoimpl.MessageInfo, 7) -var file_transport_internet_headers_http_config_proto_goTypes = []interface{}{ - (*Header)(nil), // 0: xray.transport.internet.headers.http.Header - (*Version)(nil), // 1: xray.transport.internet.headers.http.Version - (*Method)(nil), // 2: xray.transport.internet.headers.http.Method - (*RequestConfig)(nil), // 3: xray.transport.internet.headers.http.RequestConfig - (*Status)(nil), // 4: xray.transport.internet.headers.http.Status - (*ResponseConfig)(nil), // 5: xray.transport.internet.headers.http.ResponseConfig - (*Config)(nil), // 6: xray.transport.internet.headers.http.Config -} -var file_transport_internet_headers_http_config_proto_depIdxs = []int32{ - 1, // 0: xray.transport.internet.headers.http.RequestConfig.version:type_name -> xray.transport.internet.headers.http.Version - 2, // 1: xray.transport.internet.headers.http.RequestConfig.method:type_name -> xray.transport.internet.headers.http.Method - 0, // 2: xray.transport.internet.headers.http.RequestConfig.header:type_name -> xray.transport.internet.headers.http.Header - 1, // 3: xray.transport.internet.headers.http.ResponseConfig.version:type_name -> xray.transport.internet.headers.http.Version - 4, // 4: xray.transport.internet.headers.http.ResponseConfig.status:type_name -> xray.transport.internet.headers.http.Status - 0, // 5: xray.transport.internet.headers.http.ResponseConfig.header:type_name -> xray.transport.internet.headers.http.Header - 3, // 6: xray.transport.internet.headers.http.Config.request:type_name -> xray.transport.internet.headers.http.RequestConfig - 5, // 7: xray.transport.internet.headers.http.Config.response:type_name -> xray.transport.internet.headers.http.ResponseConfig - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name -} - -func init() { file_transport_internet_headers_http_config_proto_init() } -func file_transport_internet_headers_http_config_proto_init() { - if File_transport_internet_headers_http_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_headers_http_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Header); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_headers_http_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Version); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_headers_http_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Method); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_headers_http_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*RequestConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_headers_http_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Status); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_headers_http_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ResponseConfig); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_headers_http_config_proto_msgTypes[6].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_transport_internet_headers_http_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 7, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_headers_http_config_proto_goTypes, - DependencyIndexes: file_transport_internet_headers_http_config_proto_depIdxs, - MessageInfos: file_transport_internet_headers_http_config_proto_msgTypes, - }.Build() - File_transport_internet_headers_http_config_proto = out.File - file_transport_internet_headers_http_config_proto_rawDesc = nil - file_transport_internet_headers_http_config_proto_goTypes = nil - file_transport_internet_headers_http_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/headers/noop/config.pb.go b/xray_api/proto/transport/internet/headers/noop/config.pb.go deleted file mode 100644 index 844c3f2..0000000 --- a/xray_api/proto/transport/internet/headers/noop/config.pb.go +++ /dev/null @@ -1,195 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/headers/noop/config.proto - -package noop - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_noop_config_proto_msgTypes[0] - 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_transport_internet_headers_noop_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_noop_config_proto_rawDescGZIP(), []int{0} -} - -type ConnectionConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *ConnectionConfig) Reset() { - *x = ConnectionConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_noop_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ConnectionConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConnectionConfig) ProtoMessage() {} - -func (x *ConnectionConfig) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_headers_noop_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 ConnectionConfig.ProtoReflect.Descriptor instead. -func (*ConnectionConfig) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_noop_config_proto_rawDescGZIP(), []int{1} -} - -var File_transport_internet_headers_noop_config_proto protoreflect.FileDescriptor - -var file_transport_internet_headers_noop_config_proto_rawDesc = []byte{ - 0x0a, 0x2c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x6e, 0x6f, 0x6f, - 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x24, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, - 0x6e, 0x6f, 0x6f, 0x70, 0x22, 0x08, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, 0x12, - 0x0a, 0x10, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, 0x74, 0x69, 0x6f, 0x6e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x42, 0x8e, 0x01, 0x0a, 0x28, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x6e, 0x6f, 0x6f, 0x70, 0x50, - 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, - 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x6e, 0x6f, 0x6f, 0x70, 0xaa, 0x02, 0x24, 0x58, - 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x4e, - 0x6f, 0x6f, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_headers_noop_config_proto_rawDescOnce sync.Once - file_transport_internet_headers_noop_config_proto_rawDescData = file_transport_internet_headers_noop_config_proto_rawDesc -) - -func file_transport_internet_headers_noop_config_proto_rawDescGZIP() []byte { - file_transport_internet_headers_noop_config_proto_rawDescOnce.Do(func() { - file_transport_internet_headers_noop_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_headers_noop_config_proto_rawDescData) - }) - return file_transport_internet_headers_noop_config_proto_rawDescData -} - -var file_transport_internet_headers_noop_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_transport_internet_headers_noop_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.headers.noop.Config - (*ConnectionConfig)(nil), // 1: xray.transport.internet.headers.noop.ConnectionConfig -} -var file_transport_internet_headers_noop_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_headers_noop_config_proto_init() } -func file_transport_internet_headers_noop_config_proto_init() { - if File_transport_internet_headers_noop_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_headers_noop_config_proto_msgTypes[0].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 - } - } - file_transport_internet_headers_noop_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionConfig); 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_transport_internet_headers_noop_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_headers_noop_config_proto_goTypes, - DependencyIndexes: file_transport_internet_headers_noop_config_proto_depIdxs, - MessageInfos: file_transport_internet_headers_noop_config_proto_msgTypes, - }.Build() - File_transport_internet_headers_noop_config_proto = out.File - file_transport_internet_headers_noop_config_proto_rawDesc = nil - file_transport_internet_headers_noop_config_proto_goTypes = nil - file_transport_internet_headers_noop_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/headers/srtp/config.pb.go b/xray_api/proto/transport/internet/headers/srtp/config.pb.go deleted file mode 100644 index f0bff8f..0000000 --- a/xray_api/proto/transport/internet/headers/srtp/config.pb.go +++ /dev/null @@ -1,203 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/headers/srtp/config.proto - -package srtp - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` - Padding bool `protobuf:"varint,2,opt,name=padding,proto3" json:"padding,omitempty"` - Extension bool `protobuf:"varint,3,opt,name=extension,proto3" json:"extension,omitempty"` - CsrcCount uint32 `protobuf:"varint,4,opt,name=csrc_count,json=csrcCount,proto3" json:"csrc_count,omitempty"` - Marker bool `protobuf:"varint,5,opt,name=marker,proto3" json:"marker,omitempty"` - PayloadType uint32 `protobuf:"varint,6,opt,name=payload_type,json=payloadType,proto3" json:"payload_type,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_srtp_config_proto_msgTypes[0] - 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_transport_internet_headers_srtp_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_srtp_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetVersion() uint32 { - if x != nil { - return x.Version - } - return 0 -} - -func (x *Config) GetPadding() bool { - if x != nil { - return x.Padding - } - return false -} - -func (x *Config) GetExtension() bool { - if x != nil { - return x.Extension - } - return false -} - -func (x *Config) GetCsrcCount() uint32 { - if x != nil { - return x.CsrcCount - } - return 0 -} - -func (x *Config) GetMarker() bool { - if x != nil { - return x.Marker - } - return false -} - -func (x *Config) GetPayloadType() uint32 { - if x != nil { - return x.PayloadType - } - return 0 -} - -var File_transport_internet_headers_srtp_config_proto protoreflect.FileDescriptor - -var file_transport_internet_headers_srtp_config_proto_rawDesc = []byte{ - 0x0a, 0x2c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x73, 0x72, 0x74, - 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x24, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, - 0x73, 0x72, 0x74, 0x70, 0x22, 0xb4, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, - 0x18, 0x0a, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x70, 0x61, 0x64, - 0x64, 0x69, 0x6e, 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x08, 0x52, 0x07, 0x70, 0x61, 0x64, 0x64, - 0x69, 0x6e, 0x67, 0x12, 0x1c, 0x0a, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x09, 0x65, 0x78, 0x74, 0x65, 0x6e, 0x73, 0x69, 0x6f, - 0x6e, 0x12, 0x1d, 0x0a, 0x0a, 0x63, 0x73, 0x72, 0x63, 0x5f, 0x63, 0x6f, 0x75, 0x6e, 0x74, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x09, 0x63, 0x73, 0x72, 0x63, 0x43, 0x6f, 0x75, 0x6e, 0x74, - 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x06, 0x6d, 0x61, 0x72, 0x6b, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x70, 0x61, 0x79, 0x6c, - 0x6f, 0x61, 0x64, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0b, - 0x70, 0x61, 0x79, 0x6c, 0x6f, 0x61, 0x64, 0x54, 0x79, 0x70, 0x65, 0x42, 0x8e, 0x01, 0x0a, 0x28, - 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, - 0x65, 0x72, 0x73, 0x2e, 0x73, 0x72, 0x74, 0x70, 0x50, 0x01, 0x5a, 0x39, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, - 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x2f, 0x73, 0x72, 0x74, 0x70, 0xaa, 0x02, 0x24, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x53, 0x72, 0x74, 0x70, 0x62, 0x06, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_headers_srtp_config_proto_rawDescOnce sync.Once - file_transport_internet_headers_srtp_config_proto_rawDescData = file_transport_internet_headers_srtp_config_proto_rawDesc -) - -func file_transport_internet_headers_srtp_config_proto_rawDescGZIP() []byte { - file_transport_internet_headers_srtp_config_proto_rawDescOnce.Do(func() { - file_transport_internet_headers_srtp_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_headers_srtp_config_proto_rawDescData) - }) - return file_transport_internet_headers_srtp_config_proto_rawDescData -} - -var file_transport_internet_headers_srtp_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_headers_srtp_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.headers.srtp.Config -} -var file_transport_internet_headers_srtp_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_headers_srtp_config_proto_init() } -func file_transport_internet_headers_srtp_config_proto_init() { - if File_transport_internet_headers_srtp_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_headers_srtp_config_proto_msgTypes[0].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_transport_internet_headers_srtp_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_headers_srtp_config_proto_goTypes, - DependencyIndexes: file_transport_internet_headers_srtp_config_proto_depIdxs, - MessageInfos: file_transport_internet_headers_srtp_config_proto_msgTypes, - }.Build() - File_transport_internet_headers_srtp_config_proto = out.File - file_transport_internet_headers_srtp_config_proto_rawDesc = nil - file_transport_internet_headers_srtp_config_proto_goTypes = nil - file_transport_internet_headers_srtp_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/headers/tls/config.pb.go b/xray_api/proto/transport/internet/headers/tls/config.pb.go deleted file mode 100644 index 3c4786c..0000000 --- a/xray_api/proto/transport/internet/headers/tls/config.pb.go +++ /dev/null @@ -1,143 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/headers/tls/config.proto - -package tls - -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 PacketConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *PacketConfig) Reset() { - *x = PacketConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_tls_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *PacketConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*PacketConfig) ProtoMessage() {} - -func (x *PacketConfig) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_headers_tls_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 PacketConfig.ProtoReflect.Descriptor instead. -func (*PacketConfig) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_tls_config_proto_rawDescGZIP(), []int{0} -} - -var File_transport_internet_headers_tls_config_proto protoreflect.FileDescriptor - -var file_transport_internet_headers_tls_config_proto_rawDesc = []byte{ - 0x0a, 0x2b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x74, 0x6c, 0x73, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x74, - 0x6c, 0x73, 0x22, 0x0e, 0x0a, 0x0c, 0x50, 0x61, 0x63, 0x6b, 0x65, 0x74, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x42, 0x8b, 0x01, 0x0a, 0x27, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x74, 0x6c, 0x73, 0x50, 0x01, - 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, - 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, - 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x74, 0x6c, 0x73, 0xaa, 0x02, 0x23, 0x58, 0x72, 0x61, - 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x54, 0x6c, 0x73, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_headers_tls_config_proto_rawDescOnce sync.Once - file_transport_internet_headers_tls_config_proto_rawDescData = file_transport_internet_headers_tls_config_proto_rawDesc -) - -func file_transport_internet_headers_tls_config_proto_rawDescGZIP() []byte { - file_transport_internet_headers_tls_config_proto_rawDescOnce.Do(func() { - file_transport_internet_headers_tls_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_headers_tls_config_proto_rawDescData) - }) - return file_transport_internet_headers_tls_config_proto_rawDescData -} - -var file_transport_internet_headers_tls_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_headers_tls_config_proto_goTypes = []interface{}{ - (*PacketConfig)(nil), // 0: xray.transport.internet.headers.tls.PacketConfig -} -var file_transport_internet_headers_tls_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_headers_tls_config_proto_init() } -func file_transport_internet_headers_tls_config_proto_init() { - if File_transport_internet_headers_tls_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_headers_tls_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*PacketConfig); 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_transport_internet_headers_tls_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_headers_tls_config_proto_goTypes, - DependencyIndexes: file_transport_internet_headers_tls_config_proto_depIdxs, - MessageInfos: file_transport_internet_headers_tls_config_proto_msgTypes, - }.Build() - File_transport_internet_headers_tls_config_proto = out.File - file_transport_internet_headers_tls_config_proto_rawDesc = nil - file_transport_internet_headers_tls_config_proto_goTypes = nil - file_transport_internet_headers_tls_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/headers/utp/config.pb.go b/xray_api/proto/transport/internet/headers/utp/config.pb.go deleted file mode 100644 index ed04788..0000000 --- a/xray_api/proto/transport/internet/headers/utp/config.pb.go +++ /dev/null @@ -1,153 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/headers/utp/config.proto - -package utp - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Version uint32 `protobuf:"varint,1,opt,name=version,proto3" json:"version,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_utp_config_proto_msgTypes[0] - 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_transport_internet_headers_utp_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_utp_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetVersion() uint32 { - if x != nil { - return x.Version - } - return 0 -} - -var File_transport_internet_headers_utp_config_proto protoreflect.FileDescriptor - -var file_transport_internet_headers_utp_config_proto_rawDesc = []byte{ - 0x0a, 0x2b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x75, 0x74, 0x70, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x75, - 0x74, 0x70, 0x22, 0x22, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x18, 0x0a, 0x07, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x07, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x42, 0x8b, 0x01, 0x0a, 0x27, 0x63, 0x6f, 0x6d, 0x2e, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x75, - 0x74, 0x70, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, - 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x75, 0x74, 0x70, 0xaa, 0x02, - 0x23, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x2e, 0x55, 0x74, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_headers_utp_config_proto_rawDescOnce sync.Once - file_transport_internet_headers_utp_config_proto_rawDescData = file_transport_internet_headers_utp_config_proto_rawDesc -) - -func file_transport_internet_headers_utp_config_proto_rawDescGZIP() []byte { - file_transport_internet_headers_utp_config_proto_rawDescOnce.Do(func() { - file_transport_internet_headers_utp_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_headers_utp_config_proto_rawDescData) - }) - return file_transport_internet_headers_utp_config_proto_rawDescData -} - -var file_transport_internet_headers_utp_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_headers_utp_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.headers.utp.Config -} -var file_transport_internet_headers_utp_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_headers_utp_config_proto_init() } -func file_transport_internet_headers_utp_config_proto_init() { - if File_transport_internet_headers_utp_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_headers_utp_config_proto_msgTypes[0].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_transport_internet_headers_utp_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_headers_utp_config_proto_goTypes, - DependencyIndexes: file_transport_internet_headers_utp_config_proto_depIdxs, - MessageInfos: file_transport_internet_headers_utp_config_proto_msgTypes, - }.Build() - File_transport_internet_headers_utp_config_proto = out.File - file_transport_internet_headers_utp_config_proto_rawDesc = nil - file_transport_internet_headers_utp_config_proto_goTypes = nil - file_transport_internet_headers_utp_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/headers/wechat/config.pb.go b/xray_api/proto/transport/internet/headers/wechat/config.pb.go deleted file mode 100644 index 3961181..0000000 --- a/xray_api/proto/transport/internet/headers/wechat/config.pb.go +++ /dev/null @@ -1,144 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/headers/wechat/config.proto - -package wechat - -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 VideoConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *VideoConfig) Reset() { - *x = VideoConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_wechat_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *VideoConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*VideoConfig) ProtoMessage() {} - -func (x *VideoConfig) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_headers_wechat_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 VideoConfig.ProtoReflect.Descriptor instead. -func (*VideoConfig) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_wechat_config_proto_rawDescGZIP(), []int{0} -} - -var File_transport_internet_headers_wechat_config_proto protoreflect.FileDescriptor - -var file_transport_internet_headers_wechat_config_proto_rawDesc = []byte{ - 0x0a, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x77, 0x65, 0x63, - 0x68, 0x61, 0x74, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x12, 0x26, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x73, 0x2e, 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x22, 0x0d, 0x0a, 0x0b, 0x56, 0x69, 0x64, 0x65, - 0x6f, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x94, 0x01, 0x0a, 0x2a, 0x63, 0x6f, 0x6d, 0x2e, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, - 0x77, 0x65, 0x63, 0x68, 0x61, 0x74, 0x50, 0x01, 0x5a, 0x3b, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, - 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x77, - 0x65, 0x63, 0x68, 0x61, 0x74, 0xaa, 0x02, 0x26, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x57, 0x65, 0x63, 0x68, 0x61, 0x74, 0x62, 0x06, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_headers_wechat_config_proto_rawDescOnce sync.Once - file_transport_internet_headers_wechat_config_proto_rawDescData = file_transport_internet_headers_wechat_config_proto_rawDesc -) - -func file_transport_internet_headers_wechat_config_proto_rawDescGZIP() []byte { - file_transport_internet_headers_wechat_config_proto_rawDescOnce.Do(func() { - file_transport_internet_headers_wechat_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_headers_wechat_config_proto_rawDescData) - }) - return file_transport_internet_headers_wechat_config_proto_rawDescData -} - -var file_transport_internet_headers_wechat_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_headers_wechat_config_proto_goTypes = []interface{}{ - (*VideoConfig)(nil), // 0: xray.transport.internet.headers.wechat.VideoConfig -} -var file_transport_internet_headers_wechat_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_headers_wechat_config_proto_init() } -func file_transport_internet_headers_wechat_config_proto_init() { - if File_transport_internet_headers_wechat_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_headers_wechat_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*VideoConfig); 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_transport_internet_headers_wechat_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_headers_wechat_config_proto_goTypes, - DependencyIndexes: file_transport_internet_headers_wechat_config_proto_depIdxs, - MessageInfos: file_transport_internet_headers_wechat_config_proto_msgTypes, - }.Build() - File_transport_internet_headers_wechat_config_proto = out.File - file_transport_internet_headers_wechat_config_proto_rawDesc = nil - file_transport_internet_headers_wechat_config_proto_goTypes = nil - file_transport_internet_headers_wechat_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/headers/wireguard/config.pb.go b/xray_api/proto/transport/internet/headers/wireguard/config.pb.go deleted file mode 100644 index 2212c69..0000000 --- a/xray_api/proto/transport/internet/headers/wireguard/config.pb.go +++ /dev/null @@ -1,145 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/headers/wireguard/config.proto - -package wireguard - -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 WireguardConfig struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *WireguardConfig) Reset() { - *x = WireguardConfig{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_headers_wireguard_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WireguardConfig) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WireguardConfig) ProtoMessage() {} - -func (x *WireguardConfig) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_headers_wireguard_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 WireguardConfig.ProtoReflect.Descriptor instead. -func (*WireguardConfig) Descriptor() ([]byte, []int) { - return file_transport_internet_headers_wireguard_config_proto_rawDescGZIP(), []int{0} -} - -var File_transport_internet_headers_wireguard_config_proto protoreflect.FileDescriptor - -var file_transport_internet_headers_wireguard_config_proto_rawDesc = []byte{ - 0x0a, 0x31, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x77, 0x69, 0x72, - 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, - 0x6f, 0x74, 0x6f, 0x12, 0x29, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x2e, 0x77, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x22, 0x11, - 0x0a, 0x0f, 0x57, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, 0x64, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x42, 0x9d, 0x01, 0x0a, 0x2d, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x2e, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x77, 0x69, 0x72, 0x65, 0x67, 0x75, - 0x61, 0x72, 0x64, 0x50, 0x01, 0x5a, 0x3e, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, - 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2f, 0x77, 0x69, 0x72, 0x65, - 0x67, 0x75, 0x61, 0x72, 0x64, 0xaa, 0x02, 0x29, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, 0x2e, 0x57, 0x69, 0x72, 0x65, 0x67, 0x75, 0x61, 0x72, - 0x64, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_headers_wireguard_config_proto_rawDescOnce sync.Once - file_transport_internet_headers_wireguard_config_proto_rawDescData = file_transport_internet_headers_wireguard_config_proto_rawDesc -) - -func file_transport_internet_headers_wireguard_config_proto_rawDescGZIP() []byte { - file_transport_internet_headers_wireguard_config_proto_rawDescOnce.Do(func() { - file_transport_internet_headers_wireguard_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_headers_wireguard_config_proto_rawDescData) - }) - return file_transport_internet_headers_wireguard_config_proto_rawDescData -} - -var file_transport_internet_headers_wireguard_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_headers_wireguard_config_proto_goTypes = []interface{}{ - (*WireguardConfig)(nil), // 0: xray.transport.internet.headers.wireguard.WireguardConfig -} -var file_transport_internet_headers_wireguard_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_headers_wireguard_config_proto_init() } -func file_transport_internet_headers_wireguard_config_proto_init() { - if File_transport_internet_headers_wireguard_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_headers_wireguard_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WireguardConfig); 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_transport_internet_headers_wireguard_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_headers_wireguard_config_proto_goTypes, - DependencyIndexes: file_transport_internet_headers_wireguard_config_proto_depIdxs, - MessageInfos: file_transport_internet_headers_wireguard_config_proto_msgTypes, - }.Build() - File_transport_internet_headers_wireguard_config_proto = out.File - file_transport_internet_headers_wireguard_config_proto_rawDesc = nil - file_transport_internet_headers_wireguard_config_proto_goTypes = nil - file_transport_internet_headers_wireguard_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/http/config.pb.go b/xray_api/proto/transport/internet/http/config.pb.go deleted file mode 100644 index 5db5a3c..0000000 --- a/xray_api/proto/transport/internet/http/config.pb.go +++ /dev/null @@ -1,209 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/http/config.proto - -package http - -import ( - http "marzban-node/xray_api/proto/transport/internet/headers/http" - 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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Host []string `protobuf:"bytes,1,rep,name=host,proto3" json:"host,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - IdleTimeout int32 `protobuf:"varint,3,opt,name=idle_timeout,json=idleTimeout,proto3" json:"idle_timeout,omitempty"` - HealthCheckTimeout int32 `protobuf:"varint,4,opt,name=health_check_timeout,json=healthCheckTimeout,proto3" json:"health_check_timeout,omitempty"` - Method string `protobuf:"bytes,5,opt,name=method,proto3" json:"method,omitempty"` - Header []*http.Header `protobuf:"bytes,6,rep,name=header,proto3" json:"header,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_http_config_proto_msgTypes[0] - 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_transport_internet_http_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_http_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetHost() []string { - if x != nil { - return x.Host - } - return nil -} - -func (x *Config) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *Config) GetIdleTimeout() int32 { - if x != nil { - return x.IdleTimeout - } - return 0 -} - -func (x *Config) GetHealthCheckTimeout() int32 { - if x != nil { - return x.HealthCheckTimeout - } - return 0 -} - -func (x *Config) GetMethod() string { - if x != nil { - return x.Method - } - return "" -} - -func (x *Config) GetHeader() []*http.Header { - if x != nil { - return x.Header - } - return nil -} - -var File_transport_internet_http_config_proto protoreflect.FileDescriptor - -var file_transport_internet_http_config_proto_rawDesc = []byte{ - 0x0a, 0x24, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x68, 0x74, 0x74, 0x70, 0x1a, 0x2c, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x2f, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, - 0x74, 0x6f, 0x22, 0xe3, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, - 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x21, 0x0a, 0x0c, 0x69, 0x64, 0x6c, 0x65, 0x5f, 0x74, 0x69, - 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x18, 0x03, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0b, 0x69, 0x64, 0x6c, - 0x65, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x30, 0x0a, 0x14, 0x68, 0x65, 0x61, 0x6c, - 0x74, 0x68, 0x5f, 0x63, 0x68, 0x65, 0x63, 0x6b, 0x5f, 0x74, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x12, 0x68, 0x65, 0x61, 0x6c, 0x74, 0x68, 0x43, 0x68, - 0x65, 0x63, 0x6b, 0x54, 0x69, 0x6d, 0x65, 0x6f, 0x75, 0x74, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x12, 0x44, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x06, 0x20, 0x03, - 0x28, 0x0b, 0x32, 0x2c, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x73, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, 0x76, 0x0a, 0x20, 0x63, 0x6f, 0x6d, 0x2e, - 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x50, 0x01, 0x5a, 0x31, - 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, - 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x74, 0x74, - 0x70, 0xaa, 0x02, 0x1c, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_http_config_proto_rawDescOnce sync.Once - file_transport_internet_http_config_proto_rawDescData = file_transport_internet_http_config_proto_rawDesc -) - -func file_transport_internet_http_config_proto_rawDescGZIP() []byte { - file_transport_internet_http_config_proto_rawDescOnce.Do(func() { - file_transport_internet_http_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_http_config_proto_rawDescData) - }) - return file_transport_internet_http_config_proto_rawDescData -} - -var file_transport_internet_http_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_http_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.http.Config - (*http.Header)(nil), // 1: xray.transport.internet.headers.http.Header -} -var file_transport_internet_http_config_proto_depIdxs = []int32{ - 1, // 0: xray.transport.internet.http.Config.header:type_name -> xray.transport.internet.headers.http.Header - 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_transport_internet_http_config_proto_init() } -func file_transport_internet_http_config_proto_init() { - if File_transport_internet_http_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_http_config_proto_msgTypes[0].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_transport_internet_http_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_http_config_proto_goTypes, - DependencyIndexes: file_transport_internet_http_config_proto_depIdxs, - MessageInfos: file_transport_internet_http_config_proto_msgTypes, - }.Build() - File_transport_internet_http_config_proto = out.File - file_transport_internet_http_config_proto_rawDesc = nil - file_transport_internet_http_config_proto_goTypes = nil - file_transport_internet_http_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/httpupgrade/config.pb.go b/xray_api/proto/transport/internet/httpupgrade/config.pb.go deleted file mode 100644 index 9c0a4de..0000000 --- a/xray_api/proto/transport/internet/httpupgrade/config.pb.go +++ /dev/null @@ -1,201 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/httpupgrade/config.proto - -package httpupgrade - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - Header map[string]string `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - AcceptProxyProtocol bool `protobuf:"varint,4,opt,name=accept_proxy_protocol,json=acceptProxyProtocol,proto3" json:"accept_proxy_protocol,omitempty"` - Ed uint32 `protobuf:"varint,5,opt,name=ed,proto3" json:"ed,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_httpupgrade_config_proto_msgTypes[0] - 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_transport_internet_httpupgrade_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_httpupgrade_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -func (x *Config) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *Config) GetHeader() map[string]string { - if x != nil { - return x.Header - } - return nil -} - -func (x *Config) GetAcceptProxyProtocol() bool { - if x != nil { - return x.AcceptProxyProtocol - } - return false -} - -func (x *Config) GetEd() uint32 { - if x != nil { - return x.Ed - } - return 0 -} - -var File_transport_internet_httpupgrade_config_proto protoreflect.FileDescriptor - -var file_transport_internet_httpupgrade_config_proto_rawDesc = []byte{ - 0x0a, 0x2b, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, - 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x23, 0x78, - 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x75, 0x70, 0x67, 0x72, 0x61, - 0x64, 0x65, 0x22, 0x80, 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, - 0x04, 0x68, 0x6f, 0x73, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, - 0x74, 0x12, 0x12, 0x0a, 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x12, 0x4f, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x37, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x68, 0x74, 0x74, 0x70, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0x2e, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x2e, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, - 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x12, 0x32, 0x0a, 0x15, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, - 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x50, 0x72, 0x6f, - 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x64, - 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x02, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x8b, 0x01, 0x0a, 0x27, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x68, 0x74, 0x74, 0x70, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, - 0x65, 0x50, 0x01, 0x5a, 0x38, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, - 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, - 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x2f, 0x68, 0x74, 0x74, 0x70, 0x75, 0x70, 0x67, 0x72, 0x61, 0x64, 0x65, 0xaa, 0x02, 0x23, - 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, - 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x48, 0x74, 0x74, 0x70, 0x55, 0x70, 0x67, 0x72, - 0x61, 0x64, 0x65, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_httpupgrade_config_proto_rawDescOnce sync.Once - file_transport_internet_httpupgrade_config_proto_rawDescData = file_transport_internet_httpupgrade_config_proto_rawDesc -) - -func file_transport_internet_httpupgrade_config_proto_rawDescGZIP() []byte { - file_transport_internet_httpupgrade_config_proto_rawDescOnce.Do(func() { - file_transport_internet_httpupgrade_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_httpupgrade_config_proto_rawDescData) - }) - return file_transport_internet_httpupgrade_config_proto_rawDescData -} - -var file_transport_internet_httpupgrade_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_transport_internet_httpupgrade_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.httpupgrade.Config - nil, // 1: xray.transport.internet.httpupgrade.Config.HeaderEntry -} -var file_transport_internet_httpupgrade_config_proto_depIdxs = []int32{ - 1, // 0: xray.transport.internet.httpupgrade.Config.header:type_name -> xray.transport.internet.httpupgrade.Config.HeaderEntry - 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_transport_internet_httpupgrade_config_proto_init() } -func file_transport_internet_httpupgrade_config_proto_init() { - if File_transport_internet_httpupgrade_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_httpupgrade_config_proto_msgTypes[0].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_transport_internet_httpupgrade_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_httpupgrade_config_proto_goTypes, - DependencyIndexes: file_transport_internet_httpupgrade_config_proto_depIdxs, - MessageInfos: file_transport_internet_httpupgrade_config_proto_msgTypes, - }.Build() - File_transport_internet_httpupgrade_config_proto = out.File - file_transport_internet_httpupgrade_config_proto_rawDesc = nil - file_transport_internet_httpupgrade_config_proto_goTypes = nil - file_transport_internet_httpupgrade_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/kcp/config.pb.go b/xray_api/proto/transport/internet/kcp/config.pb.go deleted file mode 100644 index 3a91310..0000000 --- a/xray_api/proto/transport/internet/kcp/config.pb.go +++ /dev/null @@ -1,768 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/kcp/config.proto - -package kcp - -import ( - serial "marzban-node/xray_api/proto/common/serial" - 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) -) - -// Maximum Transmission Unit, in bytes. -type MTU struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *MTU) Reset() { - *x = MTU{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_kcp_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *MTU) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*MTU) ProtoMessage() {} - -func (x *MTU) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_kcp_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 MTU.ProtoReflect.Descriptor instead. -func (*MTU) Descriptor() ([]byte, []int) { - return file_transport_internet_kcp_config_proto_rawDescGZIP(), []int{0} -} - -func (x *MTU) GetValue() uint32 { - if x != nil { - return x.Value - } - return 0 -} - -// Transmission Time Interview, in milli-sec. -type TTI struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *TTI) Reset() { - *x = TTI{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_kcp_config_proto_msgTypes[1] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *TTI) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*TTI) ProtoMessage() {} - -func (x *TTI) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_kcp_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 TTI.ProtoReflect.Descriptor instead. -func (*TTI) Descriptor() ([]byte, []int) { - return file_transport_internet_kcp_config_proto_rawDescGZIP(), []int{1} -} - -func (x *TTI) GetValue() uint32 { - if x != nil { - return x.Value - } - return 0 -} - -// Uplink capacity, in MB. -type UplinkCapacity struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *UplinkCapacity) Reset() { - *x = UplinkCapacity{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_kcp_config_proto_msgTypes[2] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *UplinkCapacity) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*UplinkCapacity) ProtoMessage() {} - -func (x *UplinkCapacity) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_kcp_config_proto_msgTypes[2] - 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 UplinkCapacity.ProtoReflect.Descriptor instead. -func (*UplinkCapacity) Descriptor() ([]byte, []int) { - return file_transport_internet_kcp_config_proto_rawDescGZIP(), []int{2} -} - -func (x *UplinkCapacity) GetValue() uint32 { - if x != nil { - return x.Value - } - return 0 -} - -// Downlink capacity, in MB. -type DownlinkCapacity struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Value uint32 `protobuf:"varint,1,opt,name=value,proto3" json:"value,omitempty"` -} - -func (x *DownlinkCapacity) Reset() { - *x = DownlinkCapacity{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_kcp_config_proto_msgTypes[3] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *DownlinkCapacity) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*DownlinkCapacity) ProtoMessage() {} - -func (x *DownlinkCapacity) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_kcp_config_proto_msgTypes[3] - 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 DownlinkCapacity.ProtoReflect.Descriptor instead. -func (*DownlinkCapacity) Descriptor() ([]byte, []int) { - return file_transport_internet_kcp_config_proto_rawDescGZIP(), []int{3} -} - -func (x *DownlinkCapacity) GetValue() uint32 { - if x != nil { - return x.Value - } - return 0 -} - -type WriteBuffer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Buffer size in bytes. - Size uint32 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"` -} - -func (x *WriteBuffer) Reset() { - *x = WriteBuffer{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_kcp_config_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *WriteBuffer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*WriteBuffer) ProtoMessage() {} - -func (x *WriteBuffer) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_kcp_config_proto_msgTypes[4] - 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 WriteBuffer.ProtoReflect.Descriptor instead. -func (*WriteBuffer) Descriptor() ([]byte, []int) { - return file_transport_internet_kcp_config_proto_rawDescGZIP(), []int{4} -} - -func (x *WriteBuffer) GetSize() uint32 { - if x != nil { - return x.Size - } - return 0 -} - -type ReadBuffer struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Buffer size in bytes. - Size uint32 `protobuf:"varint,1,opt,name=size,proto3" json:"size,omitempty"` -} - -func (x *ReadBuffer) Reset() { - *x = ReadBuffer{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_kcp_config_proto_msgTypes[5] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ReadBuffer) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ReadBuffer) ProtoMessage() {} - -func (x *ReadBuffer) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_kcp_config_proto_msgTypes[5] - 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 ReadBuffer.ProtoReflect.Descriptor instead. -func (*ReadBuffer) Descriptor() ([]byte, []int) { - return file_transport_internet_kcp_config_proto_rawDescGZIP(), []int{5} -} - -func (x *ReadBuffer) GetSize() uint32 { - if x != nil { - return x.Size - } - return 0 -} - -type ConnectionReuse struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Enable bool `protobuf:"varint,1,opt,name=enable,proto3" json:"enable,omitempty"` -} - -func (x *ConnectionReuse) Reset() { - *x = ConnectionReuse{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_kcp_config_proto_msgTypes[6] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *ConnectionReuse) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*ConnectionReuse) ProtoMessage() {} - -func (x *ConnectionReuse) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_kcp_config_proto_msgTypes[6] - 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 ConnectionReuse.ProtoReflect.Descriptor instead. -func (*ConnectionReuse) Descriptor() ([]byte, []int) { - return file_transport_internet_kcp_config_proto_rawDescGZIP(), []int{6} -} - -func (x *ConnectionReuse) GetEnable() bool { - if x != nil { - return x.Enable - } - return false -} - -// Maximum Transmission Unit, in bytes. -type EncryptionSeed struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Seed string `protobuf:"bytes,1,opt,name=seed,proto3" json:"seed,omitempty"` -} - -func (x *EncryptionSeed) Reset() { - *x = EncryptionSeed{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_kcp_config_proto_msgTypes[7] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *EncryptionSeed) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*EncryptionSeed) ProtoMessage() {} - -func (x *EncryptionSeed) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_kcp_config_proto_msgTypes[7] - 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 EncryptionSeed.ProtoReflect.Descriptor instead. -func (*EncryptionSeed) Descriptor() ([]byte, []int) { - return file_transport_internet_kcp_config_proto_rawDescGZIP(), []int{7} -} - -func (x *EncryptionSeed) GetSeed() string { - if x != nil { - return x.Seed - } - return "" -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Mtu *MTU `protobuf:"bytes,1,opt,name=mtu,proto3" json:"mtu,omitempty"` - Tti *TTI `protobuf:"bytes,2,opt,name=tti,proto3" json:"tti,omitempty"` - UplinkCapacity *UplinkCapacity `protobuf:"bytes,3,opt,name=uplink_capacity,json=uplinkCapacity,proto3" json:"uplink_capacity,omitempty"` - DownlinkCapacity *DownlinkCapacity `protobuf:"bytes,4,opt,name=downlink_capacity,json=downlinkCapacity,proto3" json:"downlink_capacity,omitempty"` - Congestion bool `protobuf:"varint,5,opt,name=congestion,proto3" json:"congestion,omitempty"` - WriteBuffer *WriteBuffer `protobuf:"bytes,6,opt,name=write_buffer,json=writeBuffer,proto3" json:"write_buffer,omitempty"` - ReadBuffer *ReadBuffer `protobuf:"bytes,7,opt,name=read_buffer,json=readBuffer,proto3" json:"read_buffer,omitempty"` - HeaderConfig *serial.TypedMessage `protobuf:"bytes,8,opt,name=header_config,json=headerConfig,proto3" json:"header_config,omitempty"` - Seed *EncryptionSeed `protobuf:"bytes,10,opt,name=seed,proto3" json:"seed,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_kcp_config_proto_msgTypes[8] - 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_transport_internet_kcp_config_proto_msgTypes[8] - 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_transport_internet_kcp_config_proto_rawDescGZIP(), []int{8} -} - -func (x *Config) GetMtu() *MTU { - if x != nil { - return x.Mtu - } - return nil -} - -func (x *Config) GetTti() *TTI { - if x != nil { - return x.Tti - } - return nil -} - -func (x *Config) GetUplinkCapacity() *UplinkCapacity { - if x != nil { - return x.UplinkCapacity - } - return nil -} - -func (x *Config) GetDownlinkCapacity() *DownlinkCapacity { - if x != nil { - return x.DownlinkCapacity - } - return nil -} - -func (x *Config) GetCongestion() bool { - if x != nil { - return x.Congestion - } - return false -} - -func (x *Config) GetWriteBuffer() *WriteBuffer { - if x != nil { - return x.WriteBuffer - } - return nil -} - -func (x *Config) GetReadBuffer() *ReadBuffer { - if x != nil { - return x.ReadBuffer - } - return nil -} - -func (x *Config) GetHeaderConfig() *serial.TypedMessage { - if x != nil { - return x.HeaderConfig - } - return nil -} - -func (x *Config) GetSeed() *EncryptionSeed { - if x != nil { - return x.Seed - } - return nil -} - -var File_transport_internet_kcp_config_proto protoreflect.FileDescriptor - -var file_transport_internet_kcp_config_proto_rawDesc = []byte{ - 0x0a, 0x23, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x6b, 0x63, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x6b, - 0x63, 0x70, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x1b, 0x0a, 0x03, 0x4d, 0x54, 0x55, 0x12, 0x14, 0x0a, 0x05, - 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x22, 0x1b, 0x0a, 0x03, 0x54, 0x54, 0x49, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0x26, 0x0a, 0x0e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, - 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x28, 0x0a, 0x10, 0x44, 0x6f, 0x77, 0x6e, 0x6c, - 0x69, 0x6e, 0x6b, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x22, 0x21, 0x0a, 0x0b, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, - 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x04, - 0x73, 0x69, 0x7a, 0x65, 0x22, 0x20, 0x0a, 0x0a, 0x52, 0x65, 0x61, 0x64, 0x42, 0x75, 0x66, 0x66, - 0x65, 0x72, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x04, 0x73, 0x69, 0x7a, 0x65, 0x22, 0x29, 0x0a, 0x0f, 0x43, 0x6f, 0x6e, 0x6e, 0x65, 0x63, - 0x74, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x75, 0x73, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x65, 0x6e, 0x61, - 0x62, 0x6c, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x06, 0x65, 0x6e, 0x61, 0x62, 0x6c, - 0x65, 0x22, 0x24, 0x0a, 0x0e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x53, - 0x65, 0x65, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x65, 0x65, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x73, 0x65, 0x65, 0x64, 0x22, 0xe7, 0x04, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x32, 0x0a, 0x03, 0x6d, 0x74, 0x75, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x6b, 0x63, 0x70, 0x2e, 0x4d, 0x54, - 0x55, 0x52, 0x03, 0x6d, 0x74, 0x75, 0x12, 0x32, 0x0a, 0x03, 0x74, 0x74, 0x69, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x6b, 0x63, - 0x70, 0x2e, 0x54, 0x54, 0x49, 0x52, 0x03, 0x74, 0x74, 0x69, 0x12, 0x54, 0x0a, 0x0f, 0x75, 0x70, - 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x6b, 0x63, - 0x70, 0x2e, 0x55, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, - 0x52, 0x0e, 0x75, 0x70, 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, - 0x12, 0x5a, 0x0a, 0x11, 0x64, 0x6f, 0x77, 0x6e, 0x6c, 0x69, 0x6e, 0x6b, 0x5f, 0x63, 0x61, 0x70, - 0x61, 0x63, 0x69, 0x74, 0x79, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2d, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x6b, 0x63, 0x70, 0x2e, 0x44, 0x6f, 0x77, 0x6e, 0x6c, 0x69, - 0x6e, 0x6b, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x52, 0x10, 0x64, 0x6f, 0x77, 0x6e, - 0x6c, 0x69, 0x6e, 0x6b, 0x43, 0x61, 0x70, 0x61, 0x63, 0x69, 0x74, 0x79, 0x12, 0x1e, 0x0a, 0x0a, - 0x63, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, - 0x52, 0x0a, 0x63, 0x6f, 0x6e, 0x67, 0x65, 0x73, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x4b, 0x0a, 0x0c, - 0x77, 0x72, 0x69, 0x74, 0x65, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x06, 0x20, 0x01, - 0x28, 0x0b, 0x32, 0x28, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, - 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x6b, 0x63, 0x70, - 0x2e, 0x57, 0x72, 0x69, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x52, 0x0b, 0x77, 0x72, - 0x69, 0x74, 0x65, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x12, 0x48, 0x0a, 0x0b, 0x72, 0x65, 0x61, - 0x64, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x27, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x6b, 0x63, 0x70, 0x2e, 0x52, 0x65, 0x61, - 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x52, 0x0a, 0x72, 0x65, 0x61, 0x64, 0x42, 0x75, 0x66, - 0x66, 0x65, 0x72, 0x12, 0x45, 0x0a, 0x0d, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x63, 0x6f, - 0x6e, 0x66, 0x69, 0x67, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, - 0x54, 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0c, 0x68, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x3f, 0x0a, 0x04, 0x73, 0x65, - 0x65, 0x64, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x2b, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2e, 0x6b, 0x63, 0x70, 0x2e, 0x45, 0x6e, 0x63, 0x72, 0x79, 0x70, 0x74, 0x69, 0x6f, - 0x6e, 0x53, 0x65, 0x65, 0x64, 0x52, 0x04, 0x73, 0x65, 0x65, 0x64, 0x4a, 0x04, 0x08, 0x09, 0x10, - 0x0a, 0x42, 0x73, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, - 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, - 0x2e, 0x6b, 0x63, 0x70, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, - 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, - 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x6b, 0x63, 0x70, 0xaa, 0x02, 0x1b, 0x58, 0x72, 0x61, 0x79, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2e, 0x4b, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_kcp_config_proto_rawDescOnce sync.Once - file_transport_internet_kcp_config_proto_rawDescData = file_transport_internet_kcp_config_proto_rawDesc -) - -func file_transport_internet_kcp_config_proto_rawDescGZIP() []byte { - file_transport_internet_kcp_config_proto_rawDescOnce.Do(func() { - file_transport_internet_kcp_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_kcp_config_proto_rawDescData) - }) - return file_transport_internet_kcp_config_proto_rawDescData -} - -var file_transport_internet_kcp_config_proto_msgTypes = make([]protoimpl.MessageInfo, 9) -var file_transport_internet_kcp_config_proto_goTypes = []interface{}{ - (*MTU)(nil), // 0: xray.transport.internet.kcp.MTU - (*TTI)(nil), // 1: xray.transport.internet.kcp.TTI - (*UplinkCapacity)(nil), // 2: xray.transport.internet.kcp.UplinkCapacity - (*DownlinkCapacity)(nil), // 3: xray.transport.internet.kcp.DownlinkCapacity - (*WriteBuffer)(nil), // 4: xray.transport.internet.kcp.WriteBuffer - (*ReadBuffer)(nil), // 5: xray.transport.internet.kcp.ReadBuffer - (*ConnectionReuse)(nil), // 6: xray.transport.internet.kcp.ConnectionReuse - (*EncryptionSeed)(nil), // 7: xray.transport.internet.kcp.EncryptionSeed - (*Config)(nil), // 8: xray.transport.internet.kcp.Config - (*serial.TypedMessage)(nil), // 9: xray.common.serial.TypedMessage -} -var file_transport_internet_kcp_config_proto_depIdxs = []int32{ - 0, // 0: xray.transport.internet.kcp.Config.mtu:type_name -> xray.transport.internet.kcp.MTU - 1, // 1: xray.transport.internet.kcp.Config.tti:type_name -> xray.transport.internet.kcp.TTI - 2, // 2: xray.transport.internet.kcp.Config.uplink_capacity:type_name -> xray.transport.internet.kcp.UplinkCapacity - 3, // 3: xray.transport.internet.kcp.Config.downlink_capacity:type_name -> xray.transport.internet.kcp.DownlinkCapacity - 4, // 4: xray.transport.internet.kcp.Config.write_buffer:type_name -> xray.transport.internet.kcp.WriteBuffer - 5, // 5: xray.transport.internet.kcp.Config.read_buffer:type_name -> xray.transport.internet.kcp.ReadBuffer - 9, // 6: xray.transport.internet.kcp.Config.header_config:type_name -> xray.common.serial.TypedMessage - 7, // 7: xray.transport.internet.kcp.Config.seed:type_name -> xray.transport.internet.kcp.EncryptionSeed - 8, // [8:8] is the sub-list for method output_type - 8, // [8:8] is the sub-list for method input_type - 8, // [8:8] is the sub-list for extension type_name - 8, // [8:8] is the sub-list for extension extendee - 0, // [0:8] is the sub-list for field type_name -} - -func init() { file_transport_internet_kcp_config_proto_init() } -func file_transport_internet_kcp_config_proto_init() { - if File_transport_internet_kcp_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_kcp_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*MTU); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_kcp_config_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*TTI); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_kcp_config_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*UplinkCapacity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_kcp_config_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*DownlinkCapacity); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_kcp_config_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*WriteBuffer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_kcp_config_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ReadBuffer); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_kcp_config_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*ConnectionReuse); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_kcp_config_proto_msgTypes[7].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*EncryptionSeed); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_kcp_config_proto_msgTypes[8].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_transport_internet_kcp_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 9, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_kcp_config_proto_goTypes, - DependencyIndexes: file_transport_internet_kcp_config_proto_depIdxs, - MessageInfos: file_transport_internet_kcp_config_proto_msgTypes, - }.Build() - File_transport_internet_kcp_config_proto = out.File - file_transport_internet_kcp_config_proto_rawDesc = nil - file_transport_internet_kcp_config_proto_goTypes = nil - file_transport_internet_kcp_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/quic/config.pb.go b/xray_api/proto/transport/internet/quic/config.pb.go deleted file mode 100644 index 5cc2d67..0000000 --- a/xray_api/proto/transport/internet/quic/config.pb.go +++ /dev/null @@ -1,184 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/quic/config.proto - -package quic - -import ( - protocol "marzban-node/xray_api/proto/common/protocol" - serial "marzban-node/xray_api/proto/common/serial" - 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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Key string `protobuf:"bytes,1,opt,name=key,proto3" json:"key,omitempty"` - Security *protocol.SecurityConfig `protobuf:"bytes,2,opt,name=security,proto3" json:"security,omitempty"` - Header *serial.TypedMessage `protobuf:"bytes,3,opt,name=header,proto3" json:"header,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_quic_config_proto_msgTypes[0] - 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_transport_internet_quic_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_quic_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetKey() string { - if x != nil { - return x.Key - } - return "" -} - -func (x *Config) GetSecurity() *protocol.SecurityConfig { - if x != nil { - return x.Security - } - return nil -} - -func (x *Config) GetHeader() *serial.TypedMessage { - if x != nil { - return x.Header - } - return nil -} - -var File_transport_internet_quic_config_proto protoreflect.FileDescriptor - -var file_transport_internet_quic_config_proto_rawDesc = []byte{ - 0x0a, 0x24, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x71, 0x75, 0x69, 0x63, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1c, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x71, 0x75, 0x69, 0x63, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, - 0x69, 0x61, 0x6c, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, - 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x1a, 0x1d, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x73, - 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x96, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, - 0x6b, 0x65, 0x79, 0x12, 0x40, 0x0a, 0x08, 0x73, 0x65, 0x63, 0x75, 0x72, 0x69, 0x74, 0x79, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x24, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x2e, 0x53, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x52, 0x08, 0x73, 0x65, 0x63, - 0x75, 0x72, 0x69, 0x74, 0x79, 0x12, 0x38, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x63, 0x6f, 0x6d, - 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, 0x79, 0x70, 0x65, 0x64, - 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x42, - 0x76, 0x0a, 0x20, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x71, - 0x75, 0x69, 0x63, 0x50, 0x01, 0x5a, 0x31, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, - 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x2f, 0x71, 0x75, 0x69, 0x63, 0xaa, 0x02, 0x1c, 0x58, 0x72, 0x61, 0x79, 0x2e, - 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2e, 0x51, 0x75, 0x69, 0x63, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_quic_config_proto_rawDescOnce sync.Once - file_transport_internet_quic_config_proto_rawDescData = file_transport_internet_quic_config_proto_rawDesc -) - -func file_transport_internet_quic_config_proto_rawDescGZIP() []byte { - file_transport_internet_quic_config_proto_rawDescOnce.Do(func() { - file_transport_internet_quic_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_quic_config_proto_rawDescData) - }) - return file_transport_internet_quic_config_proto_rawDescData -} - -var file_transport_internet_quic_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_quic_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.quic.Config - (*protocol.SecurityConfig)(nil), // 1: xray.common.protocol.SecurityConfig - (*serial.TypedMessage)(nil), // 2: xray.common.serial.TypedMessage -} -var file_transport_internet_quic_config_proto_depIdxs = []int32{ - 1, // 0: xray.transport.internet.quic.Config.security:type_name -> xray.common.protocol.SecurityConfig - 2, // 1: xray.transport.internet.quic.Config.header:type_name -> xray.common.serial.TypedMessage - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_transport_internet_quic_config_proto_init() } -func file_transport_internet_quic_config_proto_init() { - if File_transport_internet_quic_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_quic_config_proto_msgTypes[0].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_transport_internet_quic_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_quic_config_proto_goTypes, - DependencyIndexes: file_transport_internet_quic_config_proto_depIdxs, - MessageInfos: file_transport_internet_quic_config_proto_msgTypes, - }.Build() - File_transport_internet_quic_config_proto = out.File - file_transport_internet_quic_config_proto_rawDesc = nil - file_transport_internet_quic_config_proto_goTypes = nil - file_transport_internet_quic_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/reality/config.pb.go b/xray_api/proto/transport/internet/reality/config.pb.go deleted file mode 100644 index 99dec21..0000000 --- a/xray_api/proto/transport/internet/reality/config.pb.go +++ /dev/null @@ -1,310 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/reality/config.proto - -package reality - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Show bool `protobuf:"varint,1,opt,name=show,proto3" json:"show,omitempty"` - Dest string `protobuf:"bytes,2,opt,name=dest,proto3" json:"dest,omitempty"` - Type string `protobuf:"bytes,3,opt,name=type,proto3" json:"type,omitempty"` - Xver uint64 `protobuf:"varint,4,opt,name=xver,proto3" json:"xver,omitempty"` - ServerNames []string `protobuf:"bytes,5,rep,name=server_names,json=serverNames,proto3" json:"server_names,omitempty"` - PrivateKey []byte `protobuf:"bytes,6,opt,name=private_key,json=privateKey,proto3" json:"private_key,omitempty"` - MinClientVer []byte `protobuf:"bytes,7,opt,name=min_client_ver,json=minClientVer,proto3" json:"min_client_ver,omitempty"` - MaxClientVer []byte `protobuf:"bytes,8,opt,name=max_client_ver,json=maxClientVer,proto3" json:"max_client_ver,omitempty"` - MaxTimeDiff uint64 `protobuf:"varint,9,opt,name=max_time_diff,json=maxTimeDiff,proto3" json:"max_time_diff,omitempty"` - ShortIds [][]byte `protobuf:"bytes,10,rep,name=short_ids,json=shortIds,proto3" json:"short_ids,omitempty"` - Fingerprint string `protobuf:"bytes,21,opt,name=Fingerprint,proto3" json:"Fingerprint,omitempty"` - ServerName string `protobuf:"bytes,22,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"` - PublicKey []byte `protobuf:"bytes,23,opt,name=public_key,json=publicKey,proto3" json:"public_key,omitempty"` - ShortId []byte `protobuf:"bytes,24,opt,name=short_id,json=shortId,proto3" json:"short_id,omitempty"` - SpiderX string `protobuf:"bytes,25,opt,name=spider_x,json=spiderX,proto3" json:"spider_x,omitempty"` - SpiderY []int64 `protobuf:"varint,26,rep,packed,name=spider_y,json=spiderY,proto3" json:"spider_y,omitempty"` - MasterKeyLog string `protobuf:"bytes,27,opt,name=master_key_log,json=masterKeyLog,proto3" json:"master_key_log,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_reality_config_proto_msgTypes[0] - 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_transport_internet_reality_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_reality_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetShow() bool { - if x != nil { - return x.Show - } - return false -} - -func (x *Config) GetDest() string { - if x != nil { - return x.Dest - } - return "" -} - -func (x *Config) GetType() string { - if x != nil { - return x.Type - } - return "" -} - -func (x *Config) GetXver() uint64 { - if x != nil { - return x.Xver - } - return 0 -} - -func (x *Config) GetServerNames() []string { - if x != nil { - return x.ServerNames - } - return nil -} - -func (x *Config) GetPrivateKey() []byte { - if x != nil { - return x.PrivateKey - } - return nil -} - -func (x *Config) GetMinClientVer() []byte { - if x != nil { - return x.MinClientVer - } - return nil -} - -func (x *Config) GetMaxClientVer() []byte { - if x != nil { - return x.MaxClientVer - } - return nil -} - -func (x *Config) GetMaxTimeDiff() uint64 { - if x != nil { - return x.MaxTimeDiff - } - return 0 -} - -func (x *Config) GetShortIds() [][]byte { - if x != nil { - return x.ShortIds - } - return nil -} - -func (x *Config) GetFingerprint() string { - if x != nil { - return x.Fingerprint - } - return "" -} - -func (x *Config) GetServerName() string { - if x != nil { - return x.ServerName - } - return "" -} - -func (x *Config) GetPublicKey() []byte { - if x != nil { - return x.PublicKey - } - return nil -} - -func (x *Config) GetShortId() []byte { - if x != nil { - return x.ShortId - } - return nil -} - -func (x *Config) GetSpiderX() string { - if x != nil { - return x.SpiderX - } - return "" -} - -func (x *Config) GetSpiderY() []int64 { - if x != nil { - return x.SpiderY - } - return nil -} - -func (x *Config) GetMasterKeyLog() string { - if x != nil { - return x.MasterKeyLog - } - return "" -} - -var File_transport_internet_reality_config_proto protoreflect.FileDescriptor - -var file_transport_internet_reality_config_proto_rawDesc = []byte{ - 0x0a, 0x27, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x2f, 0x63, 0x6f, 0x6e, - 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1f, 0x78, 0x72, 0x61, 0x79, 0x2e, - 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, - 0x65, 0x74, 0x2e, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x22, 0x82, 0x04, 0x0a, 0x06, 0x43, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x04, 0x73, 0x68, 0x6f, 0x77, 0x12, 0x12, 0x0a, 0x04, 0x64, 0x65, 0x73, - 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x64, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, - 0x65, 0x12, 0x12, 0x0a, 0x04, 0x78, 0x76, 0x65, 0x72, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x04, 0x78, 0x76, 0x65, 0x72, 0x12, 0x21, 0x0a, 0x0c, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x73, 0x18, 0x05, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0b, 0x73, 0x65, 0x72, - 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x73, 0x12, 0x1f, 0x0a, 0x0b, 0x70, 0x72, 0x69, 0x76, - 0x61, 0x74, 0x65, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x06, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0a, 0x70, - 0x72, 0x69, 0x76, 0x61, 0x74, 0x65, 0x4b, 0x65, 0x79, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x69, 0x6e, - 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, 0x72, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x0c, 0x6d, 0x69, 0x6e, 0x43, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x56, 0x65, 0x72, 0x12, - 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x78, 0x5f, 0x63, 0x6c, 0x69, 0x65, 0x6e, 0x74, 0x5f, 0x76, 0x65, - 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0c, 0x6d, 0x61, 0x78, 0x43, 0x6c, 0x69, 0x65, - 0x6e, 0x74, 0x56, 0x65, 0x72, 0x12, 0x22, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x5f, 0x74, 0x69, 0x6d, - 0x65, 0x5f, 0x64, 0x69, 0x66, 0x66, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6d, 0x61, - 0x78, 0x54, 0x69, 0x6d, 0x65, 0x44, 0x69, 0x66, 0x66, 0x12, 0x1b, 0x0a, 0x09, 0x73, 0x68, 0x6f, - 0x72, 0x74, 0x5f, 0x69, 0x64, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28, 0x0c, 0x52, 0x08, 0x73, 0x68, - 0x6f, 0x72, 0x74, 0x49, 0x64, 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x46, 0x69, 0x6e, 0x67, 0x65, 0x72, - 0x70, 0x72, 0x69, 0x6e, 0x74, 0x18, 0x15, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x46, 0x69, 0x6e, - 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x5f, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x16, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x1d, 0x0a, 0x0a, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x18, 0x17, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x09, 0x70, - 0x75, 0x62, 0x6c, 0x69, 0x63, 0x4b, 0x65, 0x79, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x68, 0x6f, 0x72, - 0x74, 0x5f, 0x69, 0x64, 0x18, 0x18, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x07, 0x73, 0x68, 0x6f, 0x72, - 0x74, 0x49, 0x64, 0x12, 0x19, 0x0a, 0x08, 0x73, 0x70, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x78, 0x18, - 0x19, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, 0x73, 0x70, 0x69, 0x64, 0x65, 0x72, 0x58, 0x12, 0x19, - 0x0a, 0x08, 0x73, 0x70, 0x69, 0x64, 0x65, 0x72, 0x5f, 0x79, 0x18, 0x1a, 0x20, 0x03, 0x28, 0x03, - 0x52, 0x07, 0x73, 0x70, 0x69, 0x64, 0x65, 0x72, 0x59, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, 0x73, - 0x74, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x1b, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4c, 0x6f, 0x67, 0x42, - 0x7f, 0x0a, 0x23, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x72, - 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0x50, 0x01, 0x5a, 0x34, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, - 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, - 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x72, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, 0xaa, 0x02, - 0x1f, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x52, 0x65, 0x61, 0x6c, 0x69, 0x74, 0x79, - 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_reality_config_proto_rawDescOnce sync.Once - file_transport_internet_reality_config_proto_rawDescData = file_transport_internet_reality_config_proto_rawDesc -) - -func file_transport_internet_reality_config_proto_rawDescGZIP() []byte { - file_transport_internet_reality_config_proto_rawDescOnce.Do(func() { - file_transport_internet_reality_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_reality_config_proto_rawDescData) - }) - return file_transport_internet_reality_config_proto_rawDescData -} - -var file_transport_internet_reality_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_reality_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.reality.Config -} -var file_transport_internet_reality_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_reality_config_proto_init() } -func file_transport_internet_reality_config_proto_init() { - if File_transport_internet_reality_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_reality_config_proto_msgTypes[0].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_transport_internet_reality_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_reality_config_proto_goTypes, - DependencyIndexes: file_transport_internet_reality_config_proto_depIdxs, - MessageInfos: file_transport_internet_reality_config_proto_msgTypes, - }.Build() - File_transport_internet_reality_config_proto = out.File - file_transport_internet_reality_config_proto_rawDesc = nil - file_transport_internet_reality_config_proto_goTypes = nil - file_transport_internet_reality_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/splithttp/config.pb.go b/xray_api/proto/transport/internet/splithttp/config.pb.go deleted file mode 100644 index 3975b9f..0000000 --- a/xray_api/proto/transport/internet/splithttp/config.pb.go +++ /dev/null @@ -1,202 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/splithttp/config.proto - -package splithttp - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` - Header map[string]string `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - MaxConcurrentUploads int32 `protobuf:"varint,4,opt,name=maxConcurrentUploads,proto3" json:"maxConcurrentUploads,omitempty"` - MaxUploadSize int32 `protobuf:"varint,5,opt,name=maxUploadSize,proto3" json:"maxUploadSize,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_splithttp_config_proto_msgTypes[0] - 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_transport_internet_splithttp_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_splithttp_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -func (x *Config) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *Config) GetHeader() map[string]string { - if x != nil { - return x.Header - } - return nil -} - -func (x *Config) GetMaxConcurrentUploads() int32 { - if x != nil { - return x.MaxConcurrentUploads - } - return 0 -} - -func (x *Config) GetMaxUploadSize() int32 { - if x != nil { - return x.MaxUploadSize - } - return 0 -} - -var File_transport_internet_splithttp_config_proto protoreflect.FileDescriptor - -var file_transport_internet_splithttp_config_proto_rawDesc = []byte{ - 0x0a, 0x29, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x68, 0x74, 0x74, 0x70, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x68, 0x74, 0x74, 0x70, 0x22, 0x94, - 0x02, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x4d, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x73, 0x70, 0x6c, 0x69, - 0x74, 0x68, 0x74, 0x74, 0x70, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x12, 0x32, 0x0a, 0x14, 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, - 0x74, 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x05, 0x52, 0x14, - 0x6d, 0x61, 0x78, 0x43, 0x6f, 0x6e, 0x63, 0x75, 0x72, 0x72, 0x65, 0x6e, 0x74, 0x55, 0x70, 0x6c, - 0x6f, 0x61, 0x64, 0x73, 0x12, 0x24, 0x0a, 0x0d, 0x6d, 0x61, 0x78, 0x55, 0x70, 0x6c, 0x6f, 0x61, - 0x64, 0x53, 0x69, 0x7a, 0x65, 0x18, 0x05, 0x20, 0x01, 0x28, 0x05, 0x52, 0x0d, 0x6d, 0x61, 0x78, - 0x55, 0x70, 0x6c, 0x6f, 0x61, 0x64, 0x53, 0x69, 0x7a, 0x65, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, - 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, - 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, - 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x85, 0x01, 0x0a, 0x25, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, - 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, - 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x73, 0x70, 0x6c, 0x69, 0x74, 0x68, 0x74, 0x74, 0x70, 0x50, - 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, - 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, - 0x73, 0x70, 0x6c, 0x69, 0x74, 0x68, 0x74, 0x74, 0x70, 0xaa, 0x02, 0x21, 0x58, 0x72, 0x61, 0x79, - 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x2e, 0x53, 0x70, 0x6c, 0x69, 0x74, 0x48, 0x74, 0x74, 0x70, 0x62, 0x06, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_splithttp_config_proto_rawDescOnce sync.Once - file_transport_internet_splithttp_config_proto_rawDescData = file_transport_internet_splithttp_config_proto_rawDesc -) - -func file_transport_internet_splithttp_config_proto_rawDescGZIP() []byte { - file_transport_internet_splithttp_config_proto_rawDescOnce.Do(func() { - file_transport_internet_splithttp_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_splithttp_config_proto_rawDescData) - }) - return file_transport_internet_splithttp_config_proto_rawDescData -} - -var file_transport_internet_splithttp_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_transport_internet_splithttp_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.splithttp.Config - nil, // 1: xray.transport.internet.splithttp.Config.HeaderEntry -} -var file_transport_internet_splithttp_config_proto_depIdxs = []int32{ - 1, // 0: xray.transport.internet.splithttp.Config.header:type_name -> xray.transport.internet.splithttp.Config.HeaderEntry - 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_transport_internet_splithttp_config_proto_init() } -func file_transport_internet_splithttp_config_proto_init() { - if File_transport_internet_splithttp_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_splithttp_config_proto_msgTypes[0].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_transport_internet_splithttp_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_splithttp_config_proto_goTypes, - DependencyIndexes: file_transport_internet_splithttp_config_proto_depIdxs, - MessageInfos: file_transport_internet_splithttp_config_proto_msgTypes, - }.Build() - File_transport_internet_splithttp_config_proto = out.File - file_transport_internet_splithttp_config_proto_rawDesc = nil - file_transport_internet_splithttp_config_proto_goTypes = nil - file_transport_internet_splithttp_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/tcp/config.pb.go b/xray_api/proto/transport/internet/tcp/config.pb.go deleted file mode 100644 index 135ba7e..0000000 --- a/xray_api/proto/transport/internet/tcp/config.pb.go +++ /dev/null @@ -1,171 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/tcp/config.proto - -package tcp - -import ( - serial "marzban-node/xray_api/proto/common/serial" - 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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - HeaderSettings *serial.TypedMessage `protobuf:"bytes,2,opt,name=header_settings,json=headerSettings,proto3" json:"header_settings,omitempty"` - AcceptProxyProtocol bool `protobuf:"varint,3,opt,name=accept_proxy_protocol,json=acceptProxyProtocol,proto3" json:"accept_proxy_protocol,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_tcp_config_proto_msgTypes[0] - 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_transport_internet_tcp_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_tcp_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetHeaderSettings() *serial.TypedMessage { - if x != nil { - return x.HeaderSettings - } - return nil -} - -func (x *Config) GetAcceptProxyProtocol() bool { - if x != nil { - return x.AcceptProxyProtocol - } - return false -} - -var File_transport_internet_tcp_config_proto protoreflect.FileDescriptor - -var file_transport_internet_tcp_config_proto_rawDesc = []byte{ - 0x0a, 0x23, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x74, 0x63, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x74, - 0x63, 0x70, 0x1a, 0x21, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2f, 0x73, 0x65, 0x72, 0x69, 0x61, - 0x6c, 0x2f, 0x74, 0x79, 0x70, 0x65, 0x64, 0x5f, 0x6d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x22, 0x8d, 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, - 0x12, 0x49, 0x0a, 0x0f, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x20, 0x2e, 0x78, 0x72, 0x61, 0x79, - 0x2e, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x2e, 0x73, 0x65, 0x72, 0x69, 0x61, 0x6c, 0x2e, 0x54, - 0x79, 0x70, 0x65, 0x64, 0x4d, 0x65, 0x73, 0x73, 0x61, 0x67, 0x65, 0x52, 0x0e, 0x68, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x73, 0x12, 0x32, 0x0a, 0x15, 0x61, - 0x63, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, 0x5f, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x03, 0x20, 0x01, 0x28, 0x08, 0x52, 0x13, 0x61, 0x63, 0x63, 0x65, - 0x70, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x4a, - 0x04, 0x08, 0x01, 0x10, 0x02, 0x42, 0x73, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x74, 0x63, 0x70, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, - 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, - 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x74, 0x63, 0x70, 0xaa, 0x02, 0x1b, 0x58, - 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, - 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x54, 0x63, 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, -} - -var ( - file_transport_internet_tcp_config_proto_rawDescOnce sync.Once - file_transport_internet_tcp_config_proto_rawDescData = file_transport_internet_tcp_config_proto_rawDesc -) - -func file_transport_internet_tcp_config_proto_rawDescGZIP() []byte { - file_transport_internet_tcp_config_proto_rawDescOnce.Do(func() { - file_transport_internet_tcp_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_tcp_config_proto_rawDescData) - }) - return file_transport_internet_tcp_config_proto_rawDescData -} - -var file_transport_internet_tcp_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_tcp_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.tcp.Config - (*serial.TypedMessage)(nil), // 1: xray.common.serial.TypedMessage -} -var file_transport_internet_tcp_config_proto_depIdxs = []int32{ - 1, // 0: xray.transport.internet.tcp.Config.header_settings:type_name -> xray.common.serial.TypedMessage - 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_transport_internet_tcp_config_proto_init() } -func file_transport_internet_tcp_config_proto_init() { - if File_transport_internet_tcp_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_tcp_config_proto_msgTypes[0].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_transport_internet_tcp_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_tcp_config_proto_goTypes, - DependencyIndexes: file_transport_internet_tcp_config_proto_depIdxs, - MessageInfos: file_transport_internet_tcp_config_proto_msgTypes, - }.Build() - File_transport_internet_tcp_config_proto = out.File - file_transport_internet_tcp_config_proto_rawDesc = nil - file_transport_internet_tcp_config_proto_goTypes = nil - file_transport_internet_tcp_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/tls/config.pb.go b/xray_api/proto/transport/internet/tls/config.pb.go deleted file mode 100644 index 2613c3b..0000000 --- a/xray_api/proto/transport/internet/tls/config.pb.go +++ /dev/null @@ -1,521 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/tls/config.proto - -package tls - -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 Certificate_Usage int32 - -const ( - Certificate_ENCIPHERMENT Certificate_Usage = 0 - Certificate_AUTHORITY_VERIFY Certificate_Usage = 1 - Certificate_AUTHORITY_ISSUE Certificate_Usage = 2 -) - -// Enum value maps for Certificate_Usage. -var ( - Certificate_Usage_name = map[int32]string{ - 0: "ENCIPHERMENT", - 1: "AUTHORITY_VERIFY", - 2: "AUTHORITY_ISSUE", - } - Certificate_Usage_value = map[string]int32{ - "ENCIPHERMENT": 0, - "AUTHORITY_VERIFY": 1, - "AUTHORITY_ISSUE": 2, - } -) - -func (x Certificate_Usage) Enum() *Certificate_Usage { - p := new(Certificate_Usage) - *p = x - return p -} - -func (x Certificate_Usage) String() string { - return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x)) -} - -func (Certificate_Usage) Descriptor() protoreflect.EnumDescriptor { - return file_transport_internet_tls_config_proto_enumTypes[0].Descriptor() -} - -func (Certificate_Usage) Type() protoreflect.EnumType { - return &file_transport_internet_tls_config_proto_enumTypes[0] -} - -func (x Certificate_Usage) Number() protoreflect.EnumNumber { - return protoreflect.EnumNumber(x) -} - -// Deprecated: Use Certificate_Usage.Descriptor instead. -func (Certificate_Usage) EnumDescriptor() ([]byte, []int) { - return file_transport_internet_tls_config_proto_rawDescGZIP(), []int{0, 0} -} - -type Certificate struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // TLS certificate in x509 format. - Certificate []byte `protobuf:"bytes,1,opt,name=certificate,proto3" json:"certificate,omitempty"` - // TLS key in x509 format. - Key []byte `protobuf:"bytes,2,opt,name=key,proto3" json:"key,omitempty"` - Usage Certificate_Usage `protobuf:"varint,3,opt,name=usage,proto3,enum=xray.transport.internet.tls.Certificate_Usage" json:"usage,omitempty"` - OcspStapling uint64 `protobuf:"varint,4,opt,name=ocsp_stapling,json=ocspStapling,proto3" json:"ocsp_stapling,omitempty"` - // TLS certificate path - CertificatePath string `protobuf:"bytes,5,opt,name=certificate_path,json=certificatePath,proto3" json:"certificate_path,omitempty"` - // TLS Key path - KeyPath string `protobuf:"bytes,6,opt,name=key_path,json=keyPath,proto3" json:"key_path,omitempty"` - // If true, one-Time Loading - OneTimeLoading bool `protobuf:"varint,7,opt,name=One_time_loading,json=OneTimeLoading,proto3" json:"One_time_loading,omitempty"` -} - -func (x *Certificate) Reset() { - *x = Certificate{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_tls_config_proto_msgTypes[0] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) - } -} - -func (x *Certificate) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*Certificate) ProtoMessage() {} - -func (x *Certificate) ProtoReflect() protoreflect.Message { - mi := &file_transport_internet_tls_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 Certificate.ProtoReflect.Descriptor instead. -func (*Certificate) Descriptor() ([]byte, []int) { - return file_transport_internet_tls_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Certificate) GetCertificate() []byte { - if x != nil { - return x.Certificate - } - return nil -} - -func (x *Certificate) GetKey() []byte { - if x != nil { - return x.Key - } - return nil -} - -func (x *Certificate) GetUsage() Certificate_Usage { - if x != nil { - return x.Usage - } - return Certificate_ENCIPHERMENT -} - -func (x *Certificate) GetOcspStapling() uint64 { - if x != nil { - return x.OcspStapling - } - return 0 -} - -func (x *Certificate) GetCertificatePath() string { - if x != nil { - return x.CertificatePath - } - return "" -} - -func (x *Certificate) GetKeyPath() string { - if x != nil { - return x.KeyPath - } - return "" -} - -func (x *Certificate) GetOneTimeLoading() bool { - if x != nil { - return x.OneTimeLoading - } - return false -} - -type Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - // Whether or not to allow self-signed certificates. - AllowInsecure bool `protobuf:"varint,1,opt,name=allow_insecure,json=allowInsecure,proto3" json:"allow_insecure,omitempty"` - // List of certificates to be served on server. - Certificate []*Certificate `protobuf:"bytes,2,rep,name=certificate,proto3" json:"certificate,omitempty"` - // Override server name. - ServerName string `protobuf:"bytes,3,opt,name=server_name,json=serverName,proto3" json:"server_name,omitempty"` - // Lists of string as ALPN values. - NextProtocol []string `protobuf:"bytes,4,rep,name=next_protocol,json=nextProtocol,proto3" json:"next_protocol,omitempty"` - // Whether or not to enable session (ticket) resumption. - EnableSessionResumption bool `protobuf:"varint,5,opt,name=enable_session_resumption,json=enableSessionResumption,proto3" json:"enable_session_resumption,omitempty"` - // If true, root certificates on the system will not be loaded for - // verification. - DisableSystemRoot bool `protobuf:"varint,6,opt,name=disable_system_root,json=disableSystemRoot,proto3" json:"disable_system_root,omitempty"` - // The minimum TLS version. - MinVersion string `protobuf:"bytes,7,opt,name=min_version,json=minVersion,proto3" json:"min_version,omitempty"` - // The maximum TLS version. - MaxVersion string `protobuf:"bytes,8,opt,name=max_version,json=maxVersion,proto3" json:"max_version,omitempty"` - // Specify cipher suites, except for TLS 1.3. - CipherSuites string `protobuf:"bytes,9,opt,name=cipher_suites,json=cipherSuites,proto3" json:"cipher_suites,omitempty"` - // Whether the server selects its most preferred ciphersuite. - // Deprecated: crypto/tls has ignored this field. - // - // Deprecated: Marked as deprecated in transport/internet/tls/config.proto. - PreferServerCipherSuites bool `protobuf:"varint,10,opt,name=prefer_server_cipher_suites,json=preferServerCipherSuites,proto3" json:"prefer_server_cipher_suites,omitempty"` - // TLS Client Hello fingerprint (uTLS). - Fingerprint string `protobuf:"bytes,11,opt,name=fingerprint,proto3" json:"fingerprint,omitempty"` - RejectUnknownSni bool `protobuf:"varint,12,opt,name=reject_unknown_sni,json=rejectUnknownSni,proto3" json:"reject_unknown_sni,omitempty"` - // @Document A pinned certificate chain sha256 hash. - // @Document If the server's hash does not match this value, the connection will be aborted. - // @Document This value replace allow_insecure. - // @Critical - PinnedPeerCertificateChainSha256 [][]byte `protobuf:"bytes,13,rep,name=pinned_peer_certificate_chain_sha256,json=pinnedPeerCertificateChainSha256,proto3" json:"pinned_peer_certificate_chain_sha256,omitempty"` - // @Document A pinned certificate public key sha256 hash. - // @Document If the server's public key hash does not match this value, the connection will be aborted. - // @Document This value replace allow_insecure. - // @Critical - PinnedPeerCertificatePublicKeySha256 [][]byte `protobuf:"bytes,14,rep,name=pinned_peer_certificate_public_key_sha256,json=pinnedPeerCertificatePublicKeySha256,proto3" json:"pinned_peer_certificate_public_key_sha256,omitempty"` - MasterKeyLog string `protobuf:"bytes,15,opt,name=master_key_log,json=masterKeyLog,proto3" json:"master_key_log,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_tls_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_transport_internet_tls_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_transport_internet_tls_config_proto_rawDescGZIP(), []int{1} -} - -func (x *Config) GetAllowInsecure() bool { - if x != nil { - return x.AllowInsecure - } - return false -} - -func (x *Config) GetCertificate() []*Certificate { - if x != nil { - return x.Certificate - } - return nil -} - -func (x *Config) GetServerName() string { - if x != nil { - return x.ServerName - } - return "" -} - -func (x *Config) GetNextProtocol() []string { - if x != nil { - return x.NextProtocol - } - return nil -} - -func (x *Config) GetEnableSessionResumption() bool { - if x != nil { - return x.EnableSessionResumption - } - return false -} - -func (x *Config) GetDisableSystemRoot() bool { - if x != nil { - return x.DisableSystemRoot - } - return false -} - -func (x *Config) GetMinVersion() string { - if x != nil { - return x.MinVersion - } - return "" -} - -func (x *Config) GetMaxVersion() string { - if x != nil { - return x.MaxVersion - } - return "" -} - -func (x *Config) GetCipherSuites() string { - if x != nil { - return x.CipherSuites - } - return "" -} - -// Deprecated: Marked as deprecated in transport/internet/tls/config.proto. -func (x *Config) GetPreferServerCipherSuites() bool { - if x != nil { - return x.PreferServerCipherSuites - } - return false -} - -func (x *Config) GetFingerprint() string { - if x != nil { - return x.Fingerprint - } - return "" -} - -func (x *Config) GetRejectUnknownSni() bool { - if x != nil { - return x.RejectUnknownSni - } - return false -} - -func (x *Config) GetPinnedPeerCertificateChainSha256() [][]byte { - if x != nil { - return x.PinnedPeerCertificateChainSha256 - } - return nil -} - -func (x *Config) GetPinnedPeerCertificatePublicKeySha256() [][]byte { - if x != nil { - return x.PinnedPeerCertificatePublicKeySha256 - } - return nil -} - -func (x *Config) GetMasterKeyLog() string { - if x != nil { - return x.MasterKeyLog - } - return "" -} - -var File_transport_internet_tls_config_proto protoreflect.FileDescriptor - -var file_transport_internet_tls_config_proto_rawDesc = []byte{ - 0x0a, 0x23, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x74, 0x6c, 0x73, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x74, - 0x6c, 0x73, 0x22, 0xe2, 0x02, 0x0a, 0x0b, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, - 0x74, 0x65, 0x12, 0x20, 0x0a, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, - 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0c, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, - 0x63, 0x61, 0x74, 0x65, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0c, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x44, 0x0a, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x03, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x2e, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x74, 0x6c, 0x73, 0x2e, 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x2e, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x52, 0x05, 0x75, 0x73, 0x61, 0x67, 0x65, 0x12, 0x23, 0x0a, 0x0d, - 0x6f, 0x63, 0x73, 0x70, 0x5f, 0x73, 0x74, 0x61, 0x70, 0x6c, 0x69, 0x6e, 0x67, 0x18, 0x04, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0c, 0x6f, 0x63, 0x73, 0x70, 0x53, 0x74, 0x61, 0x70, 0x6c, 0x69, 0x6e, - 0x67, 0x12, 0x29, 0x0a, 0x10, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, - 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0f, 0x63, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x61, 0x74, 0x68, 0x12, 0x19, 0x0a, 0x08, - 0x6b, 0x65, 0x79, 0x5f, 0x70, 0x61, 0x74, 0x68, 0x18, 0x06, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07, - 0x6b, 0x65, 0x79, 0x50, 0x61, 0x74, 0x68, 0x12, 0x28, 0x0a, 0x10, 0x4f, 0x6e, 0x65, 0x5f, 0x74, - 0x69, 0x6d, 0x65, 0x5f, 0x6c, 0x6f, 0x61, 0x64, 0x69, 0x6e, 0x67, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x08, 0x52, 0x0e, 0x4f, 0x6e, 0x65, 0x54, 0x69, 0x6d, 0x65, 0x4c, 0x6f, 0x61, 0x64, 0x69, 0x6e, - 0x67, 0x22, 0x44, 0x0a, 0x05, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x10, 0x0a, 0x0c, 0x45, 0x4e, - 0x43, 0x49, 0x50, 0x48, 0x45, 0x52, 0x4d, 0x45, 0x4e, 0x54, 0x10, 0x00, 0x12, 0x14, 0x0a, 0x10, - 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, 0x56, 0x45, 0x52, 0x49, 0x46, 0x59, - 0x10, 0x01, 0x12, 0x13, 0x0a, 0x0f, 0x41, 0x55, 0x54, 0x48, 0x4f, 0x52, 0x49, 0x54, 0x59, 0x5f, - 0x49, 0x53, 0x53, 0x55, 0x45, 0x10, 0x02, 0x22, 0xf6, 0x05, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, - 0x69, 0x67, 0x12, 0x25, 0x0a, 0x0e, 0x61, 0x6c, 0x6c, 0x6f, 0x77, 0x5f, 0x69, 0x6e, 0x73, 0x65, - 0x63, 0x75, 0x72, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x08, 0x52, 0x0d, 0x61, 0x6c, 0x6c, 0x6f, - 0x77, 0x49, 0x6e, 0x73, 0x65, 0x63, 0x75, 0x72, 0x65, 0x12, 0x4a, 0x0a, 0x0b, 0x63, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x18, 0x02, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x28, - 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, - 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x74, 0x6c, 0x73, 0x2e, 0x43, 0x65, 0x72, - 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x52, 0x0b, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, - 0x69, 0x63, 0x61, 0x74, 0x65, 0x12, 0x1f, 0x0a, 0x0b, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x73, 0x65, 0x72, 0x76, - 0x65, 0x72, 0x4e, 0x61, 0x6d, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x65, 0x78, 0x74, 0x5f, 0x70, - 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x03, 0x28, 0x09, 0x52, 0x0c, 0x6e, - 0x65, 0x78, 0x74, 0x50, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x3a, 0x0a, 0x19, 0x65, - 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x5f, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x72, 0x65, - 0x73, 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x05, 0x20, 0x01, 0x28, 0x08, 0x52, 0x17, - 0x65, 0x6e, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x52, 0x65, 0x73, - 0x75, 0x6d, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x12, 0x2e, 0x0a, 0x13, 0x64, 0x69, 0x73, 0x61, 0x62, - 0x6c, 0x65, 0x5f, 0x73, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x5f, 0x72, 0x6f, 0x6f, 0x74, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x08, 0x52, 0x11, 0x64, 0x69, 0x73, 0x61, 0x62, 0x6c, 0x65, 0x53, 0x79, 0x73, - 0x74, 0x65, 0x6d, 0x52, 0x6f, 0x6f, 0x74, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x69, 0x6e, 0x5f, 0x76, - 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x07, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, 0x69, - 0x6e, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x1f, 0x0a, 0x0b, 0x6d, 0x61, 0x78, 0x5f, - 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x6d, - 0x61, 0x78, 0x56, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x23, 0x0a, 0x0d, 0x63, 0x69, 0x70, - 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x0c, 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, 0x73, 0x12, 0x41, - 0x0a, 0x1b, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x65, 0x72, 0x76, 0x65, 0x72, 0x5f, - 0x63, 0x69, 0x70, 0x68, 0x65, 0x72, 0x5f, 0x73, 0x75, 0x69, 0x74, 0x65, 0x73, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x08, 0x42, 0x02, 0x18, 0x01, 0x52, 0x18, 0x70, 0x72, 0x65, 0x66, 0x65, 0x72, 0x53, - 0x65, 0x72, 0x76, 0x65, 0x72, 0x43, 0x69, 0x70, 0x68, 0x65, 0x72, 0x53, 0x75, 0x69, 0x74, 0x65, - 0x73, 0x12, 0x20, 0x0a, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, 0x69, 0x6e, 0x74, - 0x18, 0x0b, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0b, 0x66, 0x69, 0x6e, 0x67, 0x65, 0x72, 0x70, 0x72, - 0x69, 0x6e, 0x74, 0x12, 0x2c, 0x0a, 0x12, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x5f, 0x75, 0x6e, - 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x5f, 0x73, 0x6e, 0x69, 0x18, 0x0c, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x10, 0x72, 0x65, 0x6a, 0x65, 0x63, 0x74, 0x55, 0x6e, 0x6b, 0x6e, 0x6f, 0x77, 0x6e, 0x53, 0x6e, - 0x69, 0x12, 0x4e, 0x0a, 0x24, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, - 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x63, 0x68, 0x61, - 0x69, 0x6e, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x0c, 0x52, - 0x20, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, 0x43, 0x65, 0x72, 0x74, 0x69, - 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x43, 0x68, 0x61, 0x69, 0x6e, 0x53, 0x68, 0x61, 0x32, 0x35, - 0x36, 0x12, 0x57, 0x0a, 0x29, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x5f, 0x70, 0x65, 0x65, 0x72, - 0x5f, 0x63, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x5f, 0x70, 0x75, 0x62, - 0x6c, 0x69, 0x63, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x73, 0x68, 0x61, 0x32, 0x35, 0x36, 0x18, 0x0e, - 0x20, 0x03, 0x28, 0x0c, 0x52, 0x24, 0x70, 0x69, 0x6e, 0x6e, 0x65, 0x64, 0x50, 0x65, 0x65, 0x72, - 0x43, 0x65, 0x72, 0x74, 0x69, 0x66, 0x69, 0x63, 0x61, 0x74, 0x65, 0x50, 0x75, 0x62, 0x6c, 0x69, - 0x63, 0x4b, 0x65, 0x79, 0x53, 0x68, 0x61, 0x32, 0x35, 0x36, 0x12, 0x24, 0x0a, 0x0e, 0x6d, 0x61, - 0x73, 0x74, 0x65, 0x72, 0x5f, 0x6b, 0x65, 0x79, 0x5f, 0x6c, 0x6f, 0x67, 0x18, 0x0f, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x0c, 0x6d, 0x61, 0x73, 0x74, 0x65, 0x72, 0x4b, 0x65, 0x79, 0x4c, 0x6f, 0x67, - 0x42, 0x73, 0x0a, 0x1f, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x74, 0x6c, 0x73, 0x50, 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, - 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, - 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, - 0x6e, 0x65, 0x74, 0x2f, 0x74, 0x6c, 0x73, 0xaa, 0x02, 0x1b, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, - 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, - 0x74, 0x2e, 0x54, 0x6c, 0x73, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_tls_config_proto_rawDescOnce sync.Once - file_transport_internet_tls_config_proto_rawDescData = file_transport_internet_tls_config_proto_rawDesc -) - -func file_transport_internet_tls_config_proto_rawDescGZIP() []byte { - file_transport_internet_tls_config_proto_rawDescOnce.Do(func() { - file_transport_internet_tls_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_tls_config_proto_rawDescData) - }) - return file_transport_internet_tls_config_proto_rawDescData -} - -var file_transport_internet_tls_config_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_transport_internet_tls_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_transport_internet_tls_config_proto_goTypes = []interface{}{ - (Certificate_Usage)(0), // 0: xray.transport.internet.tls.Certificate.Usage - (*Certificate)(nil), // 1: xray.transport.internet.tls.Certificate - (*Config)(nil), // 2: xray.transport.internet.tls.Config -} -var file_transport_internet_tls_config_proto_depIdxs = []int32{ - 0, // 0: xray.transport.internet.tls.Certificate.usage:type_name -> xray.transport.internet.tls.Certificate.Usage - 1, // 1: xray.transport.internet.tls.Config.certificate:type_name -> xray.transport.internet.tls.Certificate - 2, // [2:2] is the sub-list for method output_type - 2, // [2:2] is the sub-list for method input_type - 2, // [2:2] is the sub-list for extension type_name - 2, // [2:2] is the sub-list for extension extendee - 0, // [0:2] is the sub-list for field type_name -} - -func init() { file_transport_internet_tls_config_proto_init() } -func file_transport_internet_tls_config_proto_init() { - if File_transport_internet_tls_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_tls_config_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} { - switch v := v.(*Certificate); i { - case 0: - return &v.state - case 1: - return &v.sizeCache - case 2: - return &v.unknownFields - default: - return nil - } - } - file_transport_internet_tls_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_transport_internet_tls_config_proto_rawDesc, - NumEnums: 1, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_tls_config_proto_goTypes, - DependencyIndexes: file_transport_internet_tls_config_proto_depIdxs, - EnumInfos: file_transport_internet_tls_config_proto_enumTypes, - MessageInfos: file_transport_internet_tls_config_proto_msgTypes, - }.Build() - File_transport_internet_tls_config_proto = out.File - file_transport_internet_tls_config_proto_rawDesc = nil - file_transport_internet_tls_config_proto_goTypes = nil - file_transport_internet_tls_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/udp/config.pb.go b/xray_api/proto/transport/internet/udp/config.pb.go deleted file mode 100644 index 760e230..0000000 --- a/xray_api/proto/transport/internet/udp/config.pb.go +++ /dev/null @@ -1,140 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/udp/config.proto - -package udp - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_udp_config_proto_msgTypes[0] - 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_transport_internet_udp_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_udp_config_proto_rawDescGZIP(), []int{0} -} - -var File_transport_internet_udp_config_proto protoreflect.FileDescriptor - -var file_transport_internet_udp_config_proto_rawDesc = []byte{ - 0x0a, 0x23, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x75, 0x64, 0x70, 0x2f, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, - 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x1b, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, - 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x75, - 0x64, 0x70, 0x22, 0x08, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x42, 0x73, 0x0a, 0x1f, - 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x75, 0x64, 0x70, 0x50, - 0x01, 0x5a, 0x30, 0x67, 0x69, 0x74, 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, - 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, - 0x75, 0x64, 0x70, 0xaa, 0x02, 0x1b, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x55, 0x64, - 0x70, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_udp_config_proto_rawDescOnce sync.Once - file_transport_internet_udp_config_proto_rawDescData = file_transport_internet_udp_config_proto_rawDesc -) - -func file_transport_internet_udp_config_proto_rawDescGZIP() []byte { - file_transport_internet_udp_config_proto_rawDescOnce.Do(func() { - file_transport_internet_udp_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_udp_config_proto_rawDescData) - }) - return file_transport_internet_udp_config_proto_rawDescData -} - -var file_transport_internet_udp_config_proto_msgTypes = make([]protoimpl.MessageInfo, 1) -var file_transport_internet_udp_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.udp.Config -} -var file_transport_internet_udp_config_proto_depIdxs = []int32{ - 0, // [0:0] is the sub-list for method output_type - 0, // [0:0] is the sub-list for method input_type - 0, // [0:0] is the sub-list for extension type_name - 0, // [0:0] is the sub-list for extension extendee - 0, // [0:0] is the sub-list for field type_name -} - -func init() { file_transport_internet_udp_config_proto_init() } -func file_transport_internet_udp_config_proto_init() { - if File_transport_internet_udp_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_udp_config_proto_msgTypes[0].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_transport_internet_udp_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 1, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_udp_config_proto_goTypes, - DependencyIndexes: file_transport_internet_udp_config_proto_depIdxs, - MessageInfos: file_transport_internet_udp_config_proto_msgTypes, - }.Build() - File_transport_internet_udp_config_proto = out.File - file_transport_internet_udp_config_proto_rawDesc = nil - file_transport_internet_udp_config_proto_goTypes = nil - file_transport_internet_udp_config_proto_depIdxs = nil -} diff --git a/xray_api/proto/transport/internet/websocket/config.pb.go b/xray_api/proto/transport/internet/websocket/config.pb.go deleted file mode 100644 index 9631e7e..0000000 --- a/xray_api/proto/transport/internet/websocket/config.pb.go +++ /dev/null @@ -1,200 +0,0 @@ -// Code generated by protoc-gen-go. DO NOT EDIT. -// versions: -// protoc-gen-go v1.34.1 -// protoc v5.27.0 -// source: transport/internet/websocket/config.proto - -package websocket - -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 Config struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Host string `protobuf:"bytes,1,opt,name=host,proto3" json:"host,omitempty"` - Path string `protobuf:"bytes,2,opt,name=path,proto3" json:"path,omitempty"` // URL path to the WebSocket service. Empty value means root(/). - Header map[string]string `protobuf:"bytes,3,rep,name=header,proto3" json:"header,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"` - AcceptProxyProtocol bool `protobuf:"varint,4,opt,name=accept_proxy_protocol,json=acceptProxyProtocol,proto3" json:"accept_proxy_protocol,omitempty"` - Ed uint32 `protobuf:"varint,5,opt,name=ed,proto3" json:"ed,omitempty"` -} - -func (x *Config) Reset() { - *x = Config{} - if protoimpl.UnsafeEnabled { - mi := &file_transport_internet_websocket_config_proto_msgTypes[0] - 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_transport_internet_websocket_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 Config.ProtoReflect.Descriptor instead. -func (*Config) Descriptor() ([]byte, []int) { - return file_transport_internet_websocket_config_proto_rawDescGZIP(), []int{0} -} - -func (x *Config) GetHost() string { - if x != nil { - return x.Host - } - return "" -} - -func (x *Config) GetPath() string { - if x != nil { - return x.Path - } - return "" -} - -func (x *Config) GetHeader() map[string]string { - if x != nil { - return x.Header - } - return nil -} - -func (x *Config) GetAcceptProxyProtocol() bool { - if x != nil { - return x.AcceptProxyProtocol - } - return false -} - -func (x *Config) GetEd() uint32 { - if x != nil { - return x.Ed - } - return 0 -} - -var File_transport_internet_websocket_config_proto protoreflect.FileDescriptor - -var file_transport_internet_websocket_config_proto_rawDesc = []byte{ - 0x0a, 0x29, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2f, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2f, 0x63, - 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x21, 0x78, 0x72, 0x61, - 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, - 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x22, 0xfe, - 0x01, 0x0a, 0x06, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, 0x12, 0x0a, 0x04, 0x68, 0x6f, 0x73, - 0x74, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x68, 0x6f, 0x73, 0x74, 0x12, 0x12, 0x0a, - 0x04, 0x70, 0x61, 0x74, 0x68, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x70, 0x61, 0x74, - 0x68, 0x12, 0x4d, 0x0a, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, 0x18, 0x03, 0x20, 0x03, 0x28, - 0x0b, 0x32, 0x35, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, - 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x77, 0x65, 0x62, 0x73, - 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x2e, 0x43, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x2e, 0x48, 0x65, 0x61, - 0x64, 0x65, 0x72, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x06, 0x68, 0x65, 0x61, 0x64, 0x65, 0x72, - 0x12, 0x32, 0x0a, 0x15, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x5f, 0x70, 0x72, 0x6f, 0x78, 0x79, - 0x5f, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x63, 0x6f, 0x6c, 0x18, 0x04, 0x20, 0x01, 0x28, 0x08, 0x52, - 0x13, 0x61, 0x63, 0x63, 0x65, 0x70, 0x74, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x50, 0x72, 0x6f, 0x74, - 0x6f, 0x63, 0x6f, 0x6c, 0x12, 0x0e, 0x0a, 0x02, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x0d, - 0x52, 0x02, 0x65, 0x64, 0x1a, 0x39, 0x0a, 0x0b, 0x48, 0x65, 0x61, 0x64, 0x65, 0x72, 0x45, 0x6e, - 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, - 0x85, 0x01, 0x0a, 0x25, 0x63, 0x6f, 0x6d, 0x2e, 0x78, 0x72, 0x61, 0x79, 0x2e, 0x74, 0x72, 0x61, - 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, - 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x50, 0x01, 0x5a, 0x36, 0x67, 0x69, 0x74, - 0x68, 0x75, 0x62, 0x2e, 0x63, 0x6f, 0x6d, 0x2f, 0x78, 0x74, 0x6c, 0x73, 0x2f, 0x78, 0x72, 0x61, - 0x79, 0x2d, 0x63, 0x6f, 0x72, 0x65, 0x2f, 0x74, 0x72, 0x61, 0x6e, 0x73, 0x70, 0x6f, 0x72, 0x74, - 0x2f, 0x69, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2f, 0x77, 0x65, 0x62, 0x73, 0x6f, 0x63, - 0x6b, 0x65, 0x74, 0xaa, 0x02, 0x21, 0x58, 0x72, 0x61, 0x79, 0x2e, 0x54, 0x72, 0x61, 0x6e, 0x73, - 0x70, 0x6f, 0x72, 0x74, 0x2e, 0x49, 0x6e, 0x74, 0x65, 0x72, 0x6e, 0x65, 0x74, 0x2e, 0x57, 0x65, - 0x62, 0x73, 0x6f, 0x63, 0x6b, 0x65, 0x74, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, -} - -var ( - file_transport_internet_websocket_config_proto_rawDescOnce sync.Once - file_transport_internet_websocket_config_proto_rawDescData = file_transport_internet_websocket_config_proto_rawDesc -) - -func file_transport_internet_websocket_config_proto_rawDescGZIP() []byte { - file_transport_internet_websocket_config_proto_rawDescOnce.Do(func() { - file_transport_internet_websocket_config_proto_rawDescData = protoimpl.X.CompressGZIP(file_transport_internet_websocket_config_proto_rawDescData) - }) - return file_transport_internet_websocket_config_proto_rawDescData -} - -var file_transport_internet_websocket_config_proto_msgTypes = make([]protoimpl.MessageInfo, 2) -var file_transport_internet_websocket_config_proto_goTypes = []interface{}{ - (*Config)(nil), // 0: xray.transport.internet.websocket.Config - nil, // 1: xray.transport.internet.websocket.Config.HeaderEntry -} -var file_transport_internet_websocket_config_proto_depIdxs = []int32{ - 1, // 0: xray.transport.internet.websocket.Config.header:type_name -> xray.transport.internet.websocket.Config.HeaderEntry - 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_transport_internet_websocket_config_proto_init() } -func file_transport_internet_websocket_config_proto_init() { - if File_transport_internet_websocket_config_proto != nil { - return - } - if !protoimpl.UnsafeEnabled { - file_transport_internet_websocket_config_proto_msgTypes[0].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_transport_internet_websocket_config_proto_rawDesc, - NumEnums: 0, - NumMessages: 2, - NumExtensions: 0, - NumServices: 0, - }, - GoTypes: file_transport_internet_websocket_config_proto_goTypes, - DependencyIndexes: file_transport_internet_websocket_config_proto_depIdxs, - MessageInfos: file_transport_internet_websocket_config_proto_msgTypes, - }.Build() - File_transport_internet_websocket_config_proto = out.File - file_transport_internet_websocket_config_proto_rawDesc = nil - file_transport_internet_websocket_config_proto_goTypes = nil - file_transport_internet_websocket_config_proto_depIdxs = nil -} From 84e72d32ba99d2c199adc688bfc488681b612b17 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 15 Dec 2024 09:19:13 +0330 Subject: [PATCH 02/38] fix: test workflow --- .github/workflows/run-tests.yml | 1 + Makefile | 8 ++++---- controller/rest/rest_test.go | 8 ++++---- controller/rpc/rpc_test.go | 8 ++++---- 4 files changed, 13 insertions(+), 12 deletions(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 60e0341..d98dcd1 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -27,6 +27,7 @@ jobs: - name: Create certificate run: | + mkdir certs make generate_server_cert make generate_client_cert diff --git a/Makefile b/Makefile index 333e052..2525114 100644 --- a/Makefile +++ b/Makefile @@ -35,12 +35,12 @@ generate_grpc_code: common/service.proto generate_server_cert: - openssl req -x509 -newkey rsa:4096 -keyout /var/lib/marzban-node/ssl_key.pem \ - -out /var/lib/marzban-node/ssl_cert.pem -days 36500 -nodes -subj "/CN=Gozargah" + openssl req -x509 -newkey rsa:4096 -keyout ./certs/ssl_key.pem \ + -out ./certs/ssl_cert.pem -days 36500 -nodes -subj "/CN=Gozargah" generate_client_cert: - openssl req -x509 -newkey rsa:4096 -keyout /var/lib/marzban-node/ssl_client_key.pem \ - -out /var/lib/marzban-node/ssl_client_cert.pem -days 36500 -nodes -subj "/CN=Gozargah" + openssl req -x509 -newkey rsa:4096 -keyout ./certs/ssl_client_key.pem \ + -out ./certs/ssl_client_cert.pem -days 36500 -nodes -subj "/CN=Gozargah" test-integration: TEST_INTEGRATION=true go test ./... -v diff --git a/controller/rest/rest_test.go b/controller/rest/rest_test.go index 8333af0..a795fe3 100644 --- a/controller/rest/rest_test.go +++ b/controller/rest/rest_test.go @@ -26,10 +26,10 @@ var ( nodeHost = "127.0.0.1" xrayExecutablePath = "/usr/local/bin/xray" xrayAssetsPath = "/usr/local/share/xray" - sslCertFile = "/var/lib/marzban-node/ssl_cert.pem" - sslKeyFile = "/var/lib/marzban-node/ssl_key.pem" - sslClientCertFile = "/var/lib/marzban-node/ssl_client_cert.pem" - sslClientKeyFile = "/var/lib/marzban-node/ssl_client_key.pem" + sslCertFile = "../../certs/ssl_cert.pem" + sslKeyFile = "../../certs/ssl_key.pem" + sslClientCertFile = "../../certs/ssl_client_cert.pem" + sslClientKeyFile = "../../certs/ssl_client_key.pem" generatedConfigPath = "/var/lib/marzban-node/generated/" addr = fmt.Sprintf("%s:%d", nodeHost, servicePort) configPath = "../../backend/xray/config.json" diff --git a/controller/rpc/rpc_test.go b/controller/rpc/rpc_test.go index 1f1838c..dc352c3 100644 --- a/controller/rpc/rpc_test.go +++ b/controller/rpc/rpc_test.go @@ -27,10 +27,10 @@ var ( nodeHost = "127.0.0.1" xrayExecutablePath = "/usr/local/bin/xray" xrayAssetsPath = "/usr/local/share/xray" - sslCertFile = "/var/lib/marzban-node/ssl_cert.pem" - sslKeyFile = "/var/lib/marzban-node/ssl_key.pem" - sslClientCertFile = "/var/lib/marzban-node/ssl_client_cert.pem" - sslClientKeyFile = "/var/lib/marzban-node/ssl_client_key.pem" + sslCertFile = "../../certs/ssl_cert.pem" + sslKeyFile = "../../certs/ssl_key.pem" + sslClientCertFile = "../../certs/ssl_client_cert.pem" + sslClientKeyFile = "../../certs/ssl_client_key.pem" generatedConfigPath = "/var/lib/marzban-node/generated/" addr = fmt.Sprintf("%s:%d", nodeHost, servicePort) configPath = "../../backend/xray/config.json" From 6da02cc10fd263fd4f783e31b50017767dc54999 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 15 Dec 2024 09:24:16 +0330 Subject: [PATCH 03/38] fix: move deps into make file --- .github/workflows/run-tests.yml | 2 +- Makefile | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index d98dcd1..44e41fd 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -23,7 +23,7 @@ jobs: check-latest: true - name: Get project dependencies - run: go mod download + run: make deps - name: Create certificate run: | diff --git a/Makefile b/Makefile index 2525114..6abf99d 100644 --- a/Makefile +++ b/Makefile @@ -26,6 +26,10 @@ clean: go clean -v -i $(PWD) rm -f $(NAME)-* w$(NAME)-*.exe +deps: + go mod download + go mod tidy + generate_grpc_code: protoc \ --go_out=. \ From 4f018d035659c3d50228a4377727dca9da5e0839 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 15 Dec 2024 12:20:01 +0330 Subject: [PATCH 04/38] fix: add xray install to Makefile --- .github/workflows/run-tests.yml | 3 +++ Makefile | 41 +++++++++++++++++++++++++++++++++ 2 files changed, 44 insertions(+) diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index 44e41fd..b8d343e 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -25,6 +25,9 @@ jobs: - name: Get project dependencies run: make deps + - name: Install xray-core + run: make install_xray + - name: Create certificate run: | mkdir certs diff --git a/Makefile b/Makefile index 6abf99d..4d4f29e 100644 --- a/Makefile +++ b/Makefile @@ -46,6 +46,47 @@ generate_client_cert: openssl req -x509 -newkey rsa:4096 -keyout ./certs/ssl_client_key.pem \ -out ./certs/ssl_client_cert.pem -days 36500 -nodes -subj "/CN=Gozargah" +UNAME_S := $(shell uname -s) +UNAME_M := $(shell uname -m) +DISTRO := $(shell . /etc/os-release 2>/dev/null && echo $$ID || echo "unknown") + +update_os: +ifeq ($(UNAME_S),Linux) + @echo "Detected OS: Linux" + @echo "Distribution: $(DISTRO)" + + # Debian/Ubuntu + if [ "$(DISTRO)" = "debian" ] || [ "$(DISTRO)" = "ubuntu" ]; then \ + sudo apt-get update && \ + sudo apt-get install -y curl bash; \ + fi + + # Alpine Linux + if [ "$(DISTRO)" = "alpine" ]; then \ + apk update && \ + apk add --no-cache curl bash; \ + fi + + # CentOS/RHEL/Fedora + if [ "$(DISTRO)" = "centos" ] || [ "$(DISTRO)" = "rhel" ] || [ "$(DISTRO)" = "fedora" ]; then \ + sudo yum update -y && \ + sudo yum install -y curl bash; \ + fi + + # Arch Linux + if [ "$(DISTRO)" = "arch" ]; then \ + sudo pacman -Sy --noconfirm curl bash; \ + fi + + bash -c "$$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)"; +else + @echo "Unsupported operating system: $(UNAME_S)" + @exit 1 +endif + +install_xray: update_os + bash -c "$$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)" + test-integration: TEST_INTEGRATION=true go test ./... -v From cd01df0aada947569ab2dfc089e1a4824ec70aad Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 15 Dec 2024 12:21:31 +0330 Subject: [PATCH 05/38] fix: make file use sudo --- Makefile | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 4d4f29e..7aa5ca3 100644 --- a/Makefile +++ b/Makefile @@ -77,15 +77,13 @@ ifeq ($(UNAME_S),Linux) if [ "$(DISTRO)" = "arch" ]; then \ sudo pacman -Sy --noconfirm curl bash; \ fi - - bash -c "$$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)"; else @echo "Unsupported operating system: $(UNAME_S)" @exit 1 endif install_xray: update_os - bash -c "$$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)" + sudo bash -c "$$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)" test-integration: TEST_INTEGRATION=true go test ./... -v From 706473cf3a194dc0954a0ec3f0603f29419df0c1 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 15 Dec 2024 12:34:18 +0330 Subject: [PATCH 06/38] fix: change xray config port --- backend/xray/config.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/backend/xray/config.json b/backend/xray/config.json index c7f49be..acfe749 100644 --- a/backend/xray/config.json +++ b/backend/xray/config.json @@ -6,7 +6,7 @@ { "tag": "Shadowsocks TCP", "listen": "0.0.0.0", - "port": 1080, + "port": 4080, "protocol": "shadowsocks", "settings": { "clients": [], @@ -51,7 +51,7 @@ { "tag": "VMESS TCP NOTLS", "listen": "0.0.0.0", - "port": 443, + "port": 4433, "protocol": "vmess", "settings": { "clients": [] @@ -71,7 +71,7 @@ { "tag": "TROJAN TCP NOTLS", "listen": "0.0.0.0", - "port": 443, + "port": 4434, "protocol": "trojan", "settings": { "clients": [] From 3bab4d4fee9f1e1bf6c2d40f907ceec837f05719 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 15 Dec 2024 12:37:50 +0330 Subject: [PATCH 07/38] fix: change config generated path --- controller/rest/rest_test.go | 2 +- controller/rpc/rpc_test.go | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/controller/rest/rest_test.go b/controller/rest/rest_test.go index a795fe3..7fd4754 100644 --- a/controller/rest/rest_test.go +++ b/controller/rest/rest_test.go @@ -30,7 +30,7 @@ var ( sslKeyFile = "../../certs/ssl_key.pem" sslClientCertFile = "../../certs/ssl_client_cert.pem" sslClientKeyFile = "../../certs/ssl_client_key.pem" - generatedConfigPath = "/var/lib/marzban-node/generated/" + generatedConfigPath = "../../generated/" addr = fmt.Sprintf("%s:%d", nodeHost, servicePort) configPath = "../../backend/xray/config.json" ) diff --git a/controller/rpc/rpc_test.go b/controller/rpc/rpc_test.go index dc352c3..9db59a9 100644 --- a/controller/rpc/rpc_test.go +++ b/controller/rpc/rpc_test.go @@ -31,7 +31,7 @@ var ( sslKeyFile = "../../certs/ssl_key.pem" sslClientCertFile = "../../certs/ssl_client_cert.pem" sslClientKeyFile = "../../certs/ssl_client_key.pem" - generatedConfigPath = "/var/lib/marzban-node/generated/" + generatedConfigPath = "../../generated/" addr = fmt.Sprintf("%s:%d", nodeHost, servicePort) configPath = "../../backend/xray/config.json" ) From a6394935ef82eed60394e3e1364f95ad7a1f682a Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 15 Dec 2024 12:40:08 +0330 Subject: [PATCH 08/38] fix: change generated path in xray test --- backend/xray/xray_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/xray/xray_test.go b/backend/xray/xray_test.go index b209144..9e136d3 100644 --- a/backend/xray/xray_test.go +++ b/backend/xray/xray_test.go @@ -18,7 +18,7 @@ var ( jsonFile = "./config.json" executablePath = "/usr/local/bin/xray" assetsPath = "/usr/local/share/xray" - configPath = "/var/lib/marzban-node/generated/" + configPath = "../../generated/" ) func TestXrayBackend(t *testing.T) { From a3c2c09584cfca97e8ce2d0ed1f45e2f178db894 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Mon, 16 Dec 2024 14:35:21 +0330 Subject: [PATCH 09/38] chore: use xray sructs --- backend/xray/api/account.go | 18 +-- backend/xray/config.go | 214 +++++++++++++---------------------- backend/xray/config.json | 4 +- backend/xray/core.go | 4 +- backend/xray/user.go | 48 +++++--- controller/rest/rest_test.go | 20 +++- controller/rpc/rpc_test.go | 20 +++- 7 files changed, 156 insertions(+), 172 deletions(-) diff --git a/backend/xray/api/account.go b/backend/xray/api/account.go index 2d48db1..d3aadea 100644 --- a/backend/xray/api/account.go +++ b/backend/xray/api/account.go @@ -17,8 +17,8 @@ type Account interface { } type BaseAccount struct { - Email string - Level uint32 + Email string `json:"email"` + Level uint32 `json:"level"` } func (ba *BaseAccount) GetEmail() string { @@ -31,7 +31,7 @@ func (ba *BaseAccount) GetLevel() uint32 { type VMessAccount struct { BaseAccount - ID uuid.UUID + ID uuid.UUID `json:"id"` } func (va *VMessAccount) Message() (*serial.TypedMessage, error) { @@ -47,8 +47,8 @@ const ( type VLESSAccount struct { BaseAccount - ID uuid.UUID - Flow XTLSFlows + ID uuid.UUID `json:"id"` + Flow XTLSFlows `json:"flow"` } func (va *VLESSAccount) Message() (*serial.TypedMessage, error) { @@ -57,7 +57,7 @@ func (va *VLESSAccount) Message() (*serial.TypedMessage, error) { type TrojanAccount struct { BaseAccount - Password string + Password string `json:"password"` } func (ta *TrojanAccount) Message() (*serial.TypedMessage, error) { @@ -66,8 +66,8 @@ func (ta *TrojanAccount) Message() (*serial.TypedMessage, error) { type ShadowsocksAccount struct { BaseAccount - Password string - Method shadowsocks.CipherType + Password string `json:"password"` + Method shadowsocks.CipherType `json:"method"` } func (sa *ShadowsocksAccount) CipherType() string { @@ -80,7 +80,7 @@ func (sa *ShadowsocksAccount) Message() (*serial.TypedMessage, error) { type Shadowsocks2022Account struct { BaseAccount - Key string + Key string `json:"password"` } func (sa *Shadowsocks2022Account) Message() (*serial.TypedMessage, error) { diff --git a/backend/xray/config.go b/backend/xray/config.go index b414912..5b298f4 100644 --- a/backend/xray/config.go +++ b/backend/xray/config.go @@ -3,7 +3,7 @@ package xray import ( "encoding/json" - "github.com/m03ed/marzban-node-go/backend/xray/api" + "github.com/xtls/xray-core/infra/conf" ) type Protocol string @@ -16,116 +16,34 @@ const ( ) type Config struct { - Log Log `json:"log,omitempty"` - Inbounds []*Inbound `json:"Inbounds"` - Outbounds []interface{} `json:"outbounds,omitempty"` - Routing Routing `json:"routing,omitempty"` - API API `json:"api"` - Stats Stats `json:"stats"` - Policy Policy `json:"policy"` - DNS interface{} `json:"dns,omitempty"` - Reverse interface{} `json:"reverse,omitempty"` - FakeDNS interface{} `json:"fakedns,omitempty"` - Metrics interface{} `json:"metrics,omitempty"` - Observatory interface{} `json:"observatory,omitempty"` - BurstObservatory interface{} `json:"burstObservatory,omitempty"` -} - -type Log struct { - Access string `json:"access,omitempty"` - Error string `json:"error,omitempty"` - LogLevel string `json:"loglevel,omitempty"` - DnsLog string `json:"dnsLog,omitempty"` + LogConfig *conf.LogConfig `json:"log"` + RouterConfig map[string]interface{} `json:"routing"` + DNSConfig map[string]interface{} `json:"dns"` + InboundConfigs []*Inbound `json:"inbounds"` + OutboundConfigs interface{} `json:"outbounds"` + Policy *conf.PolicyConfig `json:"policy"` + API *conf.APIConfig `json:"api"` + Metrics map[string]interface{} `json:"metrics,omitempty"` + Stats Stats `json:"stats"` + Reverse map[string]interface{} `json:"reverse,omitempty"` + FakeDNS map[string]interface{} `json:"fakeDns,omitempty"` + Observatory map[string]interface{} `json:"observatory,omitempty"` + BurstObservatory map[string]interface{} `json:"burstObservatory,omitempty"` } type Inbound struct { + Tag string `json:"tag"` Listen string `json:"listen,omitempty"` - Port int `json:"port,omitempty"` + Port interface{} `json:"port,omitempty"` Protocol string `json:"protocol"` Settings map[string]interface{} `json:"settings"` StreamSettings map[string]interface{} `json:"streamSettings,omitempty"` - Tag string `json:"tag"` Sniffing interface{} `json:"sniffing,omitempty"` -} - -type InboundSettings struct { - Clients []*api.Account `json:"clients,omitempty"` - Fallbacks interface{} `json:"fallbacks,omitempty"` -} - -type API struct { - Services []string `json:"services"` - Tag string `json:"tag"` + Allocation map[string]interface{} `json:"allocate,omitempty"` } type Stats struct{} -type Policy struct { - Levels Levels `json:"levels"` - System System `json:"system"` -} - -type Levels struct { - Zero Level `json:"0"` -} - -type Level struct { - Handshake int `json:"handshake,omitempty"` - ConnIdle int `json:"connIdle,omitempty"` - UplinkOnly int `json:"uplinkOnly,omitempty"` - DownlinkOnly int `json:"downlinkOnly,omitempty"` - StatsUserUplink bool `json:"statsUserUplink"` - StatsUserDownlink bool `json:"statsUserDownlink"` - StatsUserOnline bool `json:"statsUserOnline"` - BufferSize int `json:"bufferSize,omitempty"` -} - -type System struct { - StatsInboundDownlink bool `json:"statsInboundDownlink"` - StatsInboundUplink bool `json:"statsInboundUplink"` - StatsOutboundDownlink bool `json:"statsOutboundDownlink"` - StatsOutboundUplink bool `json:"statsOutboundUplink"` -} - -type Routing struct { - Rules []Rule `json:"rules"` -} - -type Rule struct { - DomainMatcher string `json:"domainMatcher,omitempty"` - Type string `json:"type,omitempty"` - Domain []string `json:"domain,omitempty"` - IP []string `json:"ip,omitempty"` - Port string `json:"port,omitempty"` - SourcePort string `json:"sourcePort,omitempty"` - Network string `json:"network,omitempty"` - Source []string `json:"source,omitempty"` - User []string `json:"user,omitempty"` - InboundTag []string `json:"inboundTag,omitempty"` - Protocol []string `json:"protocol,omitempty"` - Attrs map[string]string `json:"attrs,omitempty"` - OutboundTag string `json:"outboundTag,omitempty"` - BalancerTag string `json:"balancerTag,omitempty"` -} - -type Settings struct { - Address string `json:"address"` -} - -type StreamSettings struct { - Security string `json:"security"` - TLSSettings TLSSettings `json:"tlsSettings"` -} - -type TLSSettings struct { - Certificates []Certificate `json:"certificates"` -} - -type Certificate struct { - CertificateFile string `json:"certificateFile"` - KeyFile string `json:"keyFile"` -} - func (c *Config) ToJSON() (string, error) { b, err := json.Marshal(c) if err != nil { @@ -134,65 +52,79 @@ func (c *Config) ToJSON() (string, error) { return string(b), nil } -func NewXRayConfig(config string) (*Config, error) { - var xrayConfig Config - err := json.Unmarshal([]byte(config), &xrayConfig) - if err != nil { - return nil, err - } - - return &xrayConfig, nil -} - func (c *Config) ApplyAPI(apiPort int) error { // Remove the existing inbound with the API_INBOUND tag - for i := len(c.Inbounds) - 1; i >= 0; i-- { - if c.Inbounds[i].Tag == "API_INBOUND" { - c.Inbounds = append(c.Inbounds[:i], c.Inbounds[i+1:]...) + for i, inbound := range c.InboundConfigs { + if inbound.Tag == "API_INBOUND" { + c.InboundConfigs = append(c.InboundConfigs[:i], c.InboundConfigs[i+1:]...) } } + if c.API == nil { + c.API = &conf.APIConfig{ + Services: []string{"HandlerService", "LoggerService", "StatsService"}, + Tag: "API", + } + } + + rules, ok := c.RouterConfig["rules"].([]map[string]interface{}) if c.API.Tag != "" { apiTag := c.API.Tag - for i, rule := range c.Routing.Rules { - if apiTag != "" && rule.OutboundTag == apiTag { - c.Routing.Rules = append(c.Routing.Rules[:i], c.Routing.Rules[i+1:]...) + if ok { + for i, rule := range rules { + if outboundTag, ok := rule["outboundTag"].(string); ok && outboundTag == apiTag { + rules = append(rules[:i], rules[i+1:]...) + } + } + } else { + // Initialize RouterConfig if it's nil + if c.RouterConfig == nil { + c.RouterConfig = make(map[string]interface{}) } + // Set a default empty slice of rules + c.RouterConfig["rules"] = []map[string]interface{}{} } } - c.API.Services = []string{"HandlerService", "LoggerService", "StatsService"} - c.API.Tag = "API" - c.checkPolicy() inbound := &Inbound{ Listen: "127.0.0.1", Port: apiPort, Protocol: "dokodemo-door", - Settings: map[string]interface{}{ - "address": "127.0.0.1", - }, - Tag: "API_INBOUND", + Settings: map[string]interface{}{"address": "127.0.0.1"}, + Tag: "API_INBOUND", } - c.Inbounds = append([]*Inbound{inbound}, c.Inbounds...) - rule := Rule{ - InboundTag: []string{"API_INBOUND"}, - Source: []string{"127.0.0.1"}, - OutboundTag: "API", - Type: "field", + c.InboundConfigs = append([]*Inbound{inbound}, c.InboundConfigs...) + + rule := map[string]interface{}{ + "inboundTag": []string{"API_INBOUND"}, + "source": []string{"127.0.0.1"}, + "outboundTag": "API", + "type": "field", } - c.Routing.Rules = append([]Rule{rule}, c.Routing.Rules...) + c.RouterConfig["rules"] = append([]map[string]interface{}{rule}, rules...) + return nil } func (c *Config) checkPolicy() { - c.Policy.Levels.Zero.StatsUserDownlink = true - c.Policy.Levels.Zero.StatsUserUplink = true + if c.Policy != nil { + zero, ok := c.Policy.Levels[0] + if !ok { + c.Policy.Levels[0] = &conf.Policy{StatsUserUplink: true, StatsUserDownlink: true} + } else { + zero.StatsUserDownlink = true + zero.StatsUserUplink = true + } + } else { + c.Policy = &conf.PolicyConfig{Levels: make(map[uint32]*conf.Policy)} + c.Policy.Levels[0] = &conf.Policy{StatsUserUplink: true, StatsUserDownlink: true} + } - c.Policy.System = System{ + c.Policy.System = &conf.SystemPolicy{ StatsInboundDownlink: false, StatsInboundUplink: false, StatsOutboundDownlink: true, @@ -201,10 +133,20 @@ func (c *Config) checkPolicy() { } func (c *Config) RemoveLogFiles() (accessFile, errorFile string) { - accessFile = c.Log.Access - c.Log.Access = "" - errorFile = c.Log.Error - c.Log.Error = "" + accessFile = c.LogConfig.AccessLog + c.LogConfig.AccessLog = "" + errorFile = c.LogConfig.ErrorLog + c.LogConfig.ErrorLog = "" return accessFile, errorFile } + +func NewXRayConfig(config string) (*Config, error) { + var xrayConfig Config + err := json.Unmarshal([]byte(config), &xrayConfig) + if err != nil { + return nil, err + } + + return &xrayConfig, nil +} diff --git a/backend/xray/config.json b/backend/xray/config.json index acfe749..6373f30 100644 --- a/backend/xray/config.json +++ b/backend/xray/config.json @@ -51,7 +51,7 @@ { "tag": "VMESS TCP NOTLS", "listen": "0.0.0.0", - "port": 4433, + "port": "4433", "protocol": "vmess", "settings": { "clients": [] @@ -71,7 +71,7 @@ { "tag": "TROJAN TCP NOTLS", "listen": "0.0.0.0", - "port": 4434, + "port": "4434", "protocol": "trojan", "settings": { "clients": [] diff --git a/backend/xray/core.go b/backend/xray/core.go index 8edf7a2..e0ad228 100644 --- a/backend/xray/core.go +++ b/backend/xray/core.go @@ -87,9 +87,9 @@ func (c *Core) Start(config *Config) error { return errors.New("xray is started already") } - logLevel := config.Log.LogLevel + logLevel := config.LogConfig.LogLevel if logLevel == "none" || logLevel == "error" { - config.Log.LogLevel = "warning" + config.LogConfig.LogLevel = "warning" } accessFile, errorFile := config.RemoveLogFiles() diff --git a/backend/xray/user.go b/backend/xray/user.go index eb61db6..9e2b776 100644 --- a/backend/xray/user.go +++ b/backend/xray/user.go @@ -88,23 +88,41 @@ func IsActiveInbound(inbound *Inbound, user *common.User, settings api.ProxySett case Vless: account := *settings.Vless if api.XTLSFlows(user.GetProxies().GetVless().GetFlow()) == api.VISION { - network, networkOk := inbound.StreamSettings["network"].(string) - tls, tlsOk := inbound.StreamSettings["security"].(string) + networkType := inbound.StreamSettings["network"] - headerMap, headerMapOk := inbound.StreamSettings["header"].(map[string]interface{}) - headerType, headerTypeOk := "", false - if headerMapOk { - headerType, headerTypeOk = headerMap["Type"].(string) + if !(networkType == "tcp" || networkType == "mkcp") { + account.Flow = api.NONE + return &account, true } - if networkOk && (network == "tcp" || network == "kcp") { - if !(tlsOk && (tls == "tls" || tls == "reality")) || (headerTypeOk && headerType == "http") { - account.Flow = api.NONE - } - } else if headerTypeOk && headerType == "http" { + securityType := inbound.StreamSettings["security"] + + if !(securityType == "tls" || securityType == "reality") { account.Flow = api.NONE - } else { + return &account, true + } + + rawMap, ok := inbound.StreamSettings["rawSettings"].(map[string]interface{}) + if !ok { + rawMap, ok = inbound.StreamSettings["tcpSettings"].(map[string]interface{}) + if !ok { + return &account, true + } + } + + headerMap, ok := rawMap["header"].(map[string]interface{}) + if !ok { + return &account, true + } + + headerType, ok := headerMap["Type"].(string) + if !ok { + return &account, true + } + + if headerType == "http" { account.Flow = api.NONE + return &account, true } } return &account, true @@ -133,7 +151,7 @@ func (x *Xray) AddUser(ctx context.Context, user *common.User) error { } handler := x.getHandler() - inbounds := x.getConfig().Inbounds + inbounds := x.getConfig().InboundConfigs var errMessage string for _, inbound := range inbounds { @@ -159,7 +177,7 @@ func (x *Xray) UpdateUser(ctx context.Context, user *common.User) error { } handler := x.getHandler() - inbounds := x.getConfig().Inbounds + inbounds := x.getConfig().InboundConfigs var errMessage string var activeInbounds []string @@ -191,7 +209,7 @@ func (x *Xray) UpdateUser(ctx context.Context, user *common.User) error { func (x *Xray) RemoveUser(ctx context.Context, email string) { handler := x.getHandler() - for _, inbound := range x.getConfig().Inbounds { + for _, inbound := range x.getConfig().InboundConfigs { _ = handler.RemoveInboundUser(ctx, inbound.Tag, email) } } diff --git a/controller/rest/rest_test.go b/controller/rest/rest_test.go index 7fd4754..a02267d 100644 --- a/controller/rest/rest_test.go +++ b/controller/rest/rest_test.go @@ -214,8 +214,14 @@ func TestRESTConnection(t *testing.T) { } user := &common.User{ - Email: "test_user1@example.com", - Inbounds: []string{"VMESS TCP NOTLS", "VLESS TCP REALITY", "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP"}, + Email: "test_user1@example.com", + Inbounds: []string{ + "VMESS TCP NOTLS", + "VLESS TCP REALITY", + "TROJAN TCP NOTLS", + "Shadowsocks TCP", + "Shadowsocks UDP", + }, Proxies: &common.Proxy{ Vmess: &common.VmessSetting{ Id: uuid.New().String(), @@ -244,8 +250,14 @@ func TestRESTConnection(t *testing.T) { defer addUserResp.Body.Close() user = &common.User{ - Email: "test_user2@example.com", - Inbounds: []string{"VMESS TCP NOTLS", "VLESS TCP REALITY", "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP"}, + Email: "test_user2@example.com", + Inbounds: []string{ + "VMESS TCP NOTLS", + "VLESS TCP REALITY", + "TROJAN TCP NOTLS", + "Shadowsocks TCP", + "Shadowsocks UDP", + }, Proxies: &common.Proxy{ Vmess: &common.VmessSetting{ Id: uuid.New().String(), diff --git a/controller/rpc/rpc_test.go b/controller/rpc/rpc_test.go index 9db59a9..958b568 100644 --- a/controller/rpc/rpc_test.go +++ b/controller/rpc/rpc_test.go @@ -174,8 +174,14 @@ func TestGRPCConnection(t *testing.T) { defer cancel() user := &common.User{ - Email: "test_user1@example.com", - Inbounds: []string{"VMESS TCP NOTLS", "VLESS TCP REALITY", "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP"}, + Email: "test_user1@example.com", + Inbounds: []string{ + "VMESS TCP NOTLS", + "VLESS TCP REALITY", + "TROJAN TCP NOTLS", + "Shadowsocks TCP", + "Shadowsocks UDP", + }, Proxies: &common.Proxy{ Vmess: &common.VmessSetting{ Id: uuid.New().String(), @@ -202,8 +208,14 @@ func TestGRPCConnection(t *testing.T) { defer cancel() user = &common.User{ - Email: "test_user2@example.com", - Inbounds: []string{"VMESS TCP NOTLS", "VLESS TCP REALITY", "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP"}, + Email: "test_user2@example.com", + Inbounds: []string{ + "VMESS TCP NOTLS", + "VLESS TCP REALITY", + "TROJAN TCP NOTLS", + "Shadowsocks TCP", + "Shadowsocks UDP", + }, Proxies: &common.Proxy{ Vmess: &common.VmessSetting{ Id: uuid.New().String(), From 2f431a143884bec93cb672c1f1d2d89b6f8574ee Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Mon, 16 Dec 2024 19:24:12 +0330 Subject: [PATCH 10/38] feat: update generated config after alerting user --- backend/xray/config.go | 234 ++++++++++++++++++++++++++++++++++++++ backend/xray/user.go | 16 +++ backend/xray/xray_test.go | 40 ++++++- 3 files changed, 288 insertions(+), 2 deletions(-) diff --git a/backend/xray/config.go b/backend/xray/config.go index 5b298f4..b9e7f59 100644 --- a/backend/xray/config.go +++ b/backend/xray/config.go @@ -2,8 +2,12 @@ package xray import ( "encoding/json" + "strings" + "sync" "github.com/xtls/xray-core/infra/conf" + + "github.com/m03ed/marzban-node-go/backend/xray/api" ) type Protocol string @@ -40,6 +44,236 @@ type Inbound struct { StreamSettings map[string]interface{} `json:"streamSettings,omitempty"` Sniffing interface{} `json:"sniffing,omitempty"` Allocation map[string]interface{} `json:"allocate,omitempty"` + mu sync.RWMutex +} + +func (i *Inbound) AddUser(account api.ProxySettings) { + i.mu.Lock() + defer i.mu.Unlock() + + switch Protocol(i.Protocol) { + case Vmess: + var clients []*api.VMessAccount + clients, ok := i.Settings["clients"].([]*api.VMessAccount) + if !ok { + clients = []*api.VMessAccount{} + } + i.Settings["clients"] = append(clients, account.Vmess) + + case Vless: + var clients []*api.VLESSAccount + clients, ok := i.Settings["clients"].([]*api.VLESSAccount) + if !ok { + clients = []*api.VLESSAccount{} + } + i.Settings["clients"] = append(clients, account.Vless) + + case Trojan: + var clients []*api.TrojanAccount + clients, ok := i.Settings["clients"].([]*api.TrojanAccount) + if !ok { + clients = []*api.TrojanAccount{} + } + i.Settings["clients"] = append(clients, account.Trojan) + + case Shadowsocks: + method, methodOk := i.Settings["method"].(string) + if methodOk && strings.HasPrefix("2022-blake3", method) { + clients, ok := i.Settings["clients"].([]*api.Shadowsocks2022Account) + if !ok { + clients = []*api.Shadowsocks2022Account{} + } + i.Settings["clients"] = append(clients, account.Shadowsocks2022) + } else { + clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) + if !ok { + clients = []*api.ShadowsocksAccount{} + } + i.Settings["clients"] = append(clients, account.Shadowsocks) + } + default: + return + } +} + +func (i *Inbound) UpdateUser(account api.ProxySettings) { + i.mu.Lock() + defer i.mu.Unlock() + + switch Protocol(i.Protocol) { + case Vmess: + var clients []*api.VMessAccount + clients, ok := i.Settings["clients"].([]*api.VMessAccount) + if !ok { + clients = []*api.VMessAccount{} + } + + email := account.Vmess.GetEmail() + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break + } + } + + i.Settings["clients"] = append(clients, account.Vmess) + + case Vless: + var clients []*api.VLESSAccount + clients, ok := i.Settings["clients"].([]*api.VLESSAccount) + if !ok { + clients = []*api.VLESSAccount{} + } + + email := account.Vless.GetEmail() + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break + } + } + + i.Settings["clients"] = append(clients, account.Vless) + + case Trojan: + var clients []*api.TrojanAccount + clients, ok := i.Settings["clients"].([]*api.TrojanAccount) + if !ok { + clients = []*api.TrojanAccount{} + } + + email := account.Trojan.GetEmail() + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break + } + } + + i.Settings["clients"] = append(clients, account.Trojan) + + case Shadowsocks: + method, methodOk := i.Settings["method"].(string) + if methodOk && strings.HasPrefix("2022-blake3", method) { + clients, ok := i.Settings["clients"].([]*api.Shadowsocks2022Account) + if !ok { + clients = []*api.Shadowsocks2022Account{} + } + + email := account.Shadowsocks2022.GetEmail() + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break + } + } + + i.Settings["clients"] = append(clients, account.Shadowsocks2022) + + } else { + clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) + if !ok { + clients = []*api.ShadowsocksAccount{} + } + + email := account.Shadowsocks.GetEmail() + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break + } + } + + i.Settings["clients"] = append(clients, account.Shadowsocks) + } + default: + return + } +} + +func (i *Inbound) RemoveUser(email string) { + i.mu.Lock() + defer i.mu.Unlock() + + switch Protocol(i.Protocol) { + case Vmess: + var clients []*api.VMessAccount + clients, ok := i.Settings["clients"].([]*api.VMessAccount) + if !ok { + clients = []*api.VMessAccount{} + } + + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break + } + } + i.Settings["clients"] = clients + + case Vless: + var clients []*api.VLESSAccount + clients, ok := i.Settings["clients"].([]*api.VLESSAccount) + if !ok { + clients = []*api.VLESSAccount{} + } + + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break + } + } + i.Settings["clients"] = clients + + case Trojan: + var clients []*api.TrojanAccount + clients, ok := i.Settings["clients"].([]*api.TrojanAccount) + if !ok { + clients = []*api.TrojanAccount{} + } + + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break + } + } + i.Settings["clients"] = clients + + case Shadowsocks: + method, methodOk := i.Settings["method"].(string) + if methodOk && strings.HasPrefix("2022-blake3", method) { + clients, ok := i.Settings["clients"].([]*api.Shadowsocks2022Account) + if !ok { + clients = []*api.Shadowsocks2022Account{} + } + + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break + } + } + i.Settings["clients"] = clients + + } else { + clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) + if !ok { + clients = []*api.ShadowsocksAccount{} + } + + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break + } + } + i.Settings["clients"] = clients + } + default: + return + } } type Stats struct{} diff --git a/backend/xray/user.go b/backend/xray/user.go index 9e2b776..23e957d 100644 --- a/backend/xray/user.go +++ b/backend/xray/user.go @@ -157,6 +157,7 @@ func (x *Xray) AddUser(ctx context.Context, user *common.User) error { for _, inbound := range inbounds { account, isActive := IsActiveInbound(inbound, user, proxySetting) if isActive { + inbound.AddUser(proxySetting) if err = handler.AddInboundUser(ctx, inbound.Tag, account); err != nil { log.Println(err) errMessage += "\n" + err.Error() @@ -164,6 +165,10 @@ func (x *Xray) AddUser(ctx context.Context, user *common.User) error { } } + if err = x.GenerateConfigFile(); err != nil { + log.Println(err) + } + if errMessage != "" { return errors.New("failed to add user:" + errMessage) } @@ -185,6 +190,7 @@ func (x *Xray) UpdateUser(ctx context.Context, user *common.User) error { for _, inbound := range inbounds { account, isActive := IsActiveInbound(inbound, user, proxySetting) if isActive { + inbound.UpdateUser(proxySetting) activeInbounds = append(activeInbounds, inbound.Tag) err = handler.AddInboundUser(ctx, inbound.Tag, account) if err != nil { @@ -196,10 +202,15 @@ func (x *Xray) UpdateUser(ctx context.Context, user *common.User) error { for _, inbound := range inbounds { if !slices.Contains(activeInbounds, inbound.Tag) { + inbound.RemoveUser(user.Email) _ = handler.RemoveInboundUser(ctx, inbound.Tag, user.Email) } } + if err = x.GenerateConfigFile(); err != nil { + log.Println(err) + } + if errMessage != "" { return errors.New("failed to add user:" + errMessage) } @@ -210,6 +221,11 @@ func (x *Xray) RemoveUser(ctx context.Context, email string) { handler := x.getHandler() for _, inbound := range x.getConfig().InboundConfigs { + inbound.RemoveUser(email) _ = handler.RemoveInboundUser(ctx, inbound.Tag, email) } + + if err := x.GenerateConfigFile(); err != nil { + log.Println(err) + } } diff --git a/backend/xray/xray_test.go b/backend/xray/xray_test.go index 9e136d3..e2a2326 100644 --- a/backend/xray/xray_test.go +++ b/backend/xray/xray_test.go @@ -59,8 +59,14 @@ func TestXrayBackend(t *testing.T) { // test HandlerServiceClient user := &common.User{ - Email: "test_user@example.com", - Inbounds: []string{"VMESS TCP NOTLS", "VLESS TCP REALITY", "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP"}, + Email: "test_user@example.com", + Inbounds: []string{ + "VMESS TCP NOTLS", + "VLESS TCP REALITY", + "TROJAN TCP NOTLS", + "Shadowsocks TCP", + "Shadowsocks UDP", + }, Proxies: &common.Proxy{ Vmess: &common.VmessSetting{ Id: uuid.New().String(), @@ -84,5 +90,35 @@ func TestXrayBackend(t *testing.T) { log.Println("user added") + user = &common.User{ + Email: "test_user@example.com", + Inbounds: []string{ + "VLESS TCP REALITY", + "Shadowsocks TCP", + "Shadowsocks UDP", + }, + Proxies: &common.Proxy{ + Vmess: &common.VmessSetting{ + Id: uuid.New().String(), + }, + Vless: &common.VlessSetting{ + Id: uuid.New().String(), + }, + Trojan: &common.TrojanSetting{ + Password: "try a random string", + }, + Shadowsocks: &common.ShadowsocksSetting{ + Password: "try a random string", + Method: "AES_256_GCM", + }, + }, + } + + if err = back.UpdateUser(ctx, user); err != nil { + t.Fatal(err) + } + + log.Println("user updated") + back.Shutdown() } From 306ae0368269abbca02c74f15ce6914732142465 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Mon, 16 Dec 2024 19:27:47 +0330 Subject: [PATCH 11/38] fix: xray test case --- backend/xray/xray_test.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/xray/xray_test.go b/backend/xray/xray_test.go index e2a2326..5b1eca7 100644 --- a/backend/xray/xray_test.go +++ b/backend/xray/xray_test.go @@ -114,7 +114,7 @@ func TestXrayBackend(t *testing.T) { }, } - if err = back.UpdateUser(ctx, user); err != nil { + if err = back.RemoveUser(ctx, user); err != nil { t.Fatal(err) } From ba8ec5e8c95f9880c326c9fe17c9dbeb3f17888b Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Mon, 16 Dec 2024 19:31:26 +0330 Subject: [PATCH 12/38] fix: test case miss spell --- backend/xray/xray_test.go | 28 +--------------------------- 1 file changed, 1 insertion(+), 27 deletions(-) diff --git a/backend/xray/xray_test.go b/backend/xray/xray_test.go index 5b1eca7..6927928 100644 --- a/backend/xray/xray_test.go +++ b/backend/xray/xray_test.go @@ -90,33 +90,7 @@ func TestXrayBackend(t *testing.T) { log.Println("user added") - user = &common.User{ - Email: "test_user@example.com", - Inbounds: []string{ - "VLESS TCP REALITY", - "Shadowsocks TCP", - "Shadowsocks UDP", - }, - Proxies: &common.Proxy{ - Vmess: &common.VmessSetting{ - Id: uuid.New().String(), - }, - Vless: &common.VlessSetting{ - Id: uuid.New().String(), - }, - Trojan: &common.TrojanSetting{ - Password: "try a random string", - }, - Shadowsocks: &common.ShadowsocksSetting{ - Password: "try a random string", - Method: "AES_256_GCM", - }, - }, - } - - if err = back.RemoveUser(ctx, user); err != nil { - t.Fatal(err) - } + back.RemoveUser(ctx, user.GetEmail()) log.Println("user updated") From 5be898ab5a5161f0fc257406553222da7769e776 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Tue, 17 Dec 2024 20:18:55 +0330 Subject: [PATCH 13/38] fix: fix update user method --- .gitignore | 2 + backend/xray/config.go | 123 +++++++++++++++++--------------------- backend/xray/user.go | 16 ++--- backend/xray/xray_test.go | 28 ++++++++- 4 files changed, 88 insertions(+), 81 deletions(-) diff --git a/.gitignore b/.gitignore index fb8bb44..bec8b78 100644 --- a/.gitignore +++ b/.gitignore @@ -13,6 +13,8 @@ # Output of the go coverage tool, specifically when used with LiteIDE *.out *.idea +./certs +./generated # Dependency directories (remove the comment below to include it) # vendor/ diff --git a/backend/xray/config.go b/backend/xray/config.go index b9e7f59..a6d250e 100644 --- a/backend/xray/config.go +++ b/backend/xray/config.go @@ -47,68 +47,64 @@ type Inbound struct { mu sync.RWMutex } -func (i *Inbound) AddUser(account api.ProxySettings) { +func (i *Inbound) AddUser(account api.Account) { i.mu.Lock() defer i.mu.Unlock() - switch Protocol(i.Protocol) { - case Vmess: - var clients []*api.VMessAccount + switch account.(type) { + case *api.VMessAccount: clients, ok := i.Settings["clients"].([]*api.VMessAccount) if !ok { clients = []*api.VMessAccount{} } - i.Settings["clients"] = append(clients, account.Vmess) + i.Settings["clients"] = append(clients, account.(*api.VMessAccount)) - case Vless: - var clients []*api.VLESSAccount + case *api.VLESSAccount: clients, ok := i.Settings["clients"].([]*api.VLESSAccount) if !ok { clients = []*api.VLESSAccount{} } - i.Settings["clients"] = append(clients, account.Vless) + i.Settings["clients"] = append(clients, account.(*api.VLESSAccount)) - case Trojan: - var clients []*api.TrojanAccount + case *api.TrojanAccount: clients, ok := i.Settings["clients"].([]*api.TrojanAccount) if !ok { clients = []*api.TrojanAccount{} } - i.Settings["clients"] = append(clients, account.Trojan) + i.Settings["clients"] = append(clients, account.(*api.TrojanAccount)) - case Shadowsocks: - method, methodOk := i.Settings["method"].(string) - if methodOk && strings.HasPrefix("2022-blake3", method) { - clients, ok := i.Settings["clients"].([]*api.Shadowsocks2022Account) - if !ok { - clients = []*api.Shadowsocks2022Account{} - } - i.Settings["clients"] = append(clients, account.Shadowsocks2022) - } else { - clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) - if !ok { - clients = []*api.ShadowsocksAccount{} - } - i.Settings["clients"] = append(clients, account.Shadowsocks) + case *api.ShadowsocksAccount: + clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) + if !ok { + clients = []*api.ShadowsocksAccount{} + } + + i.Settings["clients"] = append(clients, account.(*api.ShadowsocksAccount)) + + case *api.Shadowsocks2022Account: + clients, ok := i.Settings["clients"].([]*api.Shadowsocks2022Account) + if !ok { + clients = []*api.Shadowsocks2022Account{} } + + i.Settings["clients"] = append(clients, account.(*api.Shadowsocks2022Account)) default: return } } -func (i *Inbound) UpdateUser(account api.ProxySettings) { +func (i *Inbound) UpdateUser(account api.Account) { i.mu.Lock() defer i.mu.Unlock() - switch Protocol(i.Protocol) { - case Vmess: - var clients []*api.VMessAccount + email := account.GetEmail() + switch account.(type) { + case *api.VMessAccount: clients, ok := i.Settings["clients"].([]*api.VMessAccount) if !ok { clients = []*api.VMessAccount{} } - email := account.Vmess.GetEmail() for x, client := range clients { if client.Email == email { clients = append(clients[:x], clients[x+1:]...) @@ -116,16 +112,14 @@ func (i *Inbound) UpdateUser(account api.ProxySettings) { } } - i.Settings["clients"] = append(clients, account.Vmess) + i.Settings["clients"] = append(clients, account.(*api.VMessAccount)) - case Vless: - var clients []*api.VLESSAccount + case *api.VLESSAccount: clients, ok := i.Settings["clients"].([]*api.VLESSAccount) if !ok { clients = []*api.VLESSAccount{} } - email := account.Vless.GetEmail() for x, client := range clients { if client.Email == email { clients = append(clients[:x], clients[x+1:]...) @@ -133,16 +127,14 @@ func (i *Inbound) UpdateUser(account api.ProxySettings) { } } - i.Settings["clients"] = append(clients, account.Vless) + i.Settings["clients"] = append(clients, account.(*api.VLESSAccount)) - case Trojan: - var clients []*api.TrojanAccount + case *api.TrojanAccount: clients, ok := i.Settings["clients"].([]*api.TrojanAccount) if !ok { clients = []*api.TrojanAccount{} } - email := account.Trojan.GetEmail() for x, client := range clients { if client.Email == email { clients = append(clients[:x], clients[x+1:]...) @@ -150,42 +142,38 @@ func (i *Inbound) UpdateUser(account api.ProxySettings) { } } - i.Settings["clients"] = append(clients, account.Trojan) + i.Settings["clients"] = append(clients, account.(*api.TrojanAccount)) - case Shadowsocks: - method, methodOk := i.Settings["method"].(string) - if methodOk && strings.HasPrefix("2022-blake3", method) { - clients, ok := i.Settings["clients"].([]*api.Shadowsocks2022Account) - if !ok { - clients = []*api.Shadowsocks2022Account{} - } + case *api.ShadowsocksAccount: + clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) + if !ok { + clients = []*api.ShadowsocksAccount{} + } - email := account.Shadowsocks2022.GetEmail() - for x, client := range clients { - if client.Email == email { - clients = append(clients[:x], clients[x+1:]...) - break - } + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break } + } - i.Settings["clients"] = append(clients, account.Shadowsocks2022) + i.Settings["clients"] = append(clients, account.(*api.ShadowsocksAccount)) - } else { - clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) - if !ok { - clients = []*api.ShadowsocksAccount{} - } + case *api.Shadowsocks2022Account: + clients, ok := i.Settings["clients"].([]*api.Shadowsocks2022Account) + if !ok { + clients = []*api.Shadowsocks2022Account{} + } - email := account.Shadowsocks.GetEmail() - for x, client := range clients { - if client.Email == email { - clients = append(clients[:x], clients[x+1:]...) - break - } + for x, client := range clients { + if client.Email == email { + clients = append(clients[:x], clients[x+1:]...) + break } - - i.Settings["clients"] = append(clients, account.Shadowsocks) } + + i.Settings["clients"] = append(clients, account.(*api.Shadowsocks2022Account)) + default: return } @@ -197,7 +185,6 @@ func (i *Inbound) RemoveUser(email string) { switch Protocol(i.Protocol) { case Vmess: - var clients []*api.VMessAccount clients, ok := i.Settings["clients"].([]*api.VMessAccount) if !ok { clients = []*api.VMessAccount{} @@ -212,7 +199,6 @@ func (i *Inbound) RemoveUser(email string) { i.Settings["clients"] = clients case Vless: - var clients []*api.VLESSAccount clients, ok := i.Settings["clients"].([]*api.VLESSAccount) if !ok { clients = []*api.VLESSAccount{} @@ -227,7 +213,6 @@ func (i *Inbound) RemoveUser(email string) { i.Settings["clients"] = clients case Trojan: - var clients []*api.TrojanAccount clients, ok := i.Settings["clients"].([]*api.TrojanAccount) if !ok { clients = []*api.TrojanAccount{} diff --git a/backend/xray/user.go b/backend/xray/user.go index 23e957d..37f50d3 100644 --- a/backend/xray/user.go +++ b/backend/xray/user.go @@ -157,7 +157,7 @@ func (x *Xray) AddUser(ctx context.Context, user *common.User) error { for _, inbound := range inbounds { account, isActive := IsActiveInbound(inbound, user, proxySetting) if isActive { - inbound.AddUser(proxySetting) + inbound.AddUser(account) if err = handler.AddInboundUser(ctx, inbound.Tag, account); err != nil { log.Println(err) errMessage += "\n" + err.Error() @@ -185,25 +185,19 @@ func (x *Xray) UpdateUser(ctx context.Context, user *common.User) error { inbounds := x.getConfig().InboundConfigs var errMessage string - var activeInbounds []string for _, inbound := range inbounds { + _ = handler.RemoveInboundUser(ctx, inbound.Tag, user.Email) account, isActive := IsActiveInbound(inbound, user, proxySetting) if isActive { - inbound.UpdateUser(proxySetting) - activeInbounds = append(activeInbounds, inbound.Tag) + inbound.UpdateUser(account) err = handler.AddInboundUser(ctx, inbound.Tag, account) if err != nil { log.Println(err) errMessage += "\n" + err.Error() } - } - } - - for _, inbound := range inbounds { - if !slices.Contains(activeInbounds, inbound.Tag) { - inbound.RemoveUser(user.Email) - _ = handler.RemoveInboundUser(ctx, inbound.Tag, user.Email) + } else { + inbound.RemoveUser(user.GetEmail()) } } diff --git a/backend/xray/xray_test.go b/backend/xray/xray_test.go index 6927928..e2a2326 100644 --- a/backend/xray/xray_test.go +++ b/backend/xray/xray_test.go @@ -90,7 +90,33 @@ func TestXrayBackend(t *testing.T) { log.Println("user added") - back.RemoveUser(ctx, user.GetEmail()) + user = &common.User{ + Email: "test_user@example.com", + Inbounds: []string{ + "VLESS TCP REALITY", + "Shadowsocks TCP", + "Shadowsocks UDP", + }, + Proxies: &common.Proxy{ + Vmess: &common.VmessSetting{ + Id: uuid.New().String(), + }, + Vless: &common.VlessSetting{ + Id: uuid.New().String(), + }, + Trojan: &common.TrojanSetting{ + Password: "try a random string", + }, + Shadowsocks: &common.ShadowsocksSetting{ + Password: "try a random string", + Method: "AES_256_GCM", + }, + }, + } + + if err = back.UpdateUser(ctx, user); err != nil { + t.Fatal(err) + } log.Println("user updated") From e32e3717bf6065137d37676f6004f5c861148644 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 5 Jan 2025 15:27:19 +0330 Subject: [PATCH 14/38] feat: add sync users method --- Makefile | 4 +- backend/backend.go | 2 + backend/config.go | 2 + backend/xray/api/account.go | 131 +++++++-- backend/xray/api/message.go | 3 +- backend/xray/config.go | 121 +++++++-- backend/xray/config.json | 74 +++++ backend/xray/core.go | 7 +- backend/xray/user.go | 97 ++----- backend/xray/xray.go | 47 +++- backend/xray/xray_test.go | 109 +++++--- common/service.pb.go | 510 ++++++++++++++++++++--------------- common/service.proto | 24 +- common/service_grpc.pb.go | 64 ++++- controller/rest/base.go | 6 +- controller/rest/rest_test.go | 111 ++++---- controller/rest/service.go | 9 +- controller/rest/stats.go | 2 +- controller/rpc/base.go | 3 + controller/rpc/middleware.go | 4 +- controller/rpc/rpc_test.go | 32 +-- controller/rpc/stats.go | 2 +- controller/rpc/user.go | 9 + tools/file.go | 15 ++ tools/tls.go | 9 + 25 files changed, 895 insertions(+), 502 deletions(-) diff --git a/Makefile b/Makefile index 7aa5ca3..8cd2916 100644 --- a/Makefile +++ b/Makefile @@ -86,10 +86,10 @@ install_xray: update_os sudo bash -c "$$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)" test-integration: - TEST_INTEGRATION=true go test ./... -v + TEST_INTEGRATION=true go test ./... -v -p 1 test: - TEST_INTEGRATION=false go test ./... -v + TEST_INTEGRATION=false go test ./... -v -p 1 serve: go run main.go serve \ No newline at end of file diff --git a/backend/backend.go b/backend/backend.go index b2d3f6d..6e07cfe 100644 --- a/backend/backend.go +++ b/backend/backend.go @@ -2,6 +2,7 @@ package backend import ( "context" + "github.com/m03ed/marzban-node-go/common" ) @@ -15,6 +16,7 @@ type Backend interface { AddUser(context.Context, *common.User) error UpdateUser(context.Context, *common.User) error RemoveUser(context.Context, string) + SyncUsers(context.Context, []*common.User) error GetSysStats(context.Context) (*common.BackendStatsResponse, error) GetUsersStats(context.Context, bool) (*common.StatResponse, error) GetStatOnline(context.Context, string) (*common.OnlineStatResponse, error) diff --git a/backend/config.go b/backend/config.go index 91068a5..55819ef 100644 --- a/backend/config.go +++ b/backend/config.go @@ -7,3 +7,5 @@ type Config interface { } type ConfigKey struct{} + +type UsersKey struct{} diff --git a/backend/xray/api/account.go b/backend/xray/api/account.go index d3aadea..1419ebb 100644 --- a/backend/xray/api/account.go +++ b/backend/xray/api/account.go @@ -8,6 +8,8 @@ import ( "github.com/xtls/xray-core/proxy/trojan" "github.com/xtls/xray-core/proxy/vless" "github.com/xtls/xray-core/proxy/vmess" + + "github.com/m03ed/marzban-node-go/common" ) type Account interface { @@ -38,21 +40,43 @@ func (va *VMessAccount) Message() (*serial.TypedMessage, error) { return ToTypedMessage(&vmess.Account{Id: va.ID.String()}) } -type XTLSFlows string - -const ( - NONE XTLSFlows = "" - VISION XTLSFlows = "xtls-rprx-vision" -) +func NewVMessAccount(user *common.User) (*VMessAccount, error) { + id, err := uuid.Parse(user.GetProxies().GetVmess().GetId()) + if err != nil { + return nil, err + } + return &VMessAccount{ + BaseAccount: BaseAccount{ + Email: user.GetEmail(), + Level: 0, + }, + ID: id, + }, nil +} type VLESSAccount struct { BaseAccount ID uuid.UUID `json:"id"` - Flow XTLSFlows `json:"flow"` + Flow string `json:"flow"` } func (va *VLESSAccount) Message() (*serial.TypedMessage, error) { - return ToTypedMessage(&vless.Account{Id: va.ID.String(), Flow: string(va.Flow)}) + return ToTypedMessage(&vless.Account{Id: va.ID.String(), Flow: va.Flow}) +} + +func NewVlessAccount(user *common.User) (*VLESSAccount, error) { + id, err := uuid.Parse(user.GetProxies().GetVless().GetId()) + if err != nil { + return nil, err + } + return &VLESSAccount{ + BaseAccount: BaseAccount{ + Email: user.GetEmail(), + Level: 0, + }, + ID: id, + Flow: user.GetProxies().GetVless().GetFlow(), + }, nil } type TrojanAccount struct { @@ -64,33 +88,98 @@ func (ta *TrojanAccount) Message() (*serial.TypedMessage, error) { return ToTypedMessage(&trojan.Account{Password: ta.Password}) } +func NewTrojanAccount(user *common.User) *TrojanAccount { + return &TrojanAccount{ + BaseAccount: BaseAccount{ + Email: user.GetEmail(), + Level: 0, + }, + Password: user.GetProxies().GetTrojan().GetPassword(), + } +} + +type CipherType int32 + +const ( + CipherType_AES_128_GCM CipherType = 5 + CipherType_AES_256_GCM CipherType = 6 + CipherType_CHACHA20_POLY1305 CipherType = 7 + CipherType_XCHACHA20_POLY1305 CipherType = 8 + CipherType_NONE CipherType = 9 +) + +// Enum value maps for CipherType. +var ( + CipherType_name = map[int32]string{ + 5: "aes-128-gcm", + 6: "aes-256-gcm", + 7: "chacha20-poly1305", + 8: "xchacha20-poly1305", + 9: "none", + } + CipherType_value = map[string]int32{ + "aes-128-gcm": 5, + "aes-256-gcm": 6, + "chacha20-poly1305": 7, + "xchacha20-poly1305": 8, + "none": 9, + } +) + type ShadowsocksAccount struct { BaseAccount - Password string `json:"password"` - Method shadowsocks.CipherType `json:"method"` + Password string `json:"password"` } -func (sa *ShadowsocksAccount) CipherType() string { - return string(sa.Method) +func (sa *ShadowsocksAccount) Message() (*serial.TypedMessage, error) { + return ToTypedMessage(&shadowsocks_2022.Account{Key: sa.Password}) } -func (sa *ShadowsocksAccount) Message() (*serial.TypedMessage, error) { - return ToTypedMessage(&shadowsocks.Account{Password: sa.Password, CipherType: sa.Method}) +func NewShadowsocksAccount(user *common.User) *ShadowsocksAccount { + return &ShadowsocksAccount{ + BaseAccount: BaseAccount{ + Email: user.GetEmail(), + Level: 0, + }, + Password: user.GetProxies().GetShadowsocks().GetPassword(), + } } -type Shadowsocks2022Account struct { - BaseAccount - Key string `json:"password"` +type ShadowsocksTcpAccount struct { + ShadowsocksAccount + Method string `json:"method"` +} + +func (sa *ShadowsocksTcpAccount) CipherType() string { + return sa.Method } -func (sa *Shadowsocks2022Account) Message() (*serial.TypedMessage, error) { - return ToTypedMessage(&shadowsocks_2022.Account{Key: sa.Key}) +func (sa *ShadowsocksTcpAccount) Message() (*serial.TypedMessage, error) { + return ToTypedMessage(&shadowsocks.Account{Password: sa.Password, CipherType: shadowsocks.CipherType(CipherType_value[sa.Method])}) +} + +func NewShadowsocksTcpAccount(user *common.User) *ShadowsocksTcpAccount { + method := user.GetProxies().GetShadowsocks().GetMethod() + if _, ok := CipherType_value[method]; !ok { + method = CipherType_name[9] + } + + return &ShadowsocksTcpAccount{ + ShadowsocksAccount: ShadowsocksAccount{ + BaseAccount: BaseAccount{ + Email: user.GetEmail(), + Level: 0, + }, + Password: user.GetProxies().GetShadowsocks().GetPassword(), + }, + Method: method, + } } type ProxySettings struct { Vmess *VMessAccount Vless *VLESSAccount Trojan *TrojanAccount - Shadowsocks *ShadowsocksAccount - Shadowsocks2022 *Shadowsocks2022Account + Shadowsocks *ShadowsocksTcpAccount + Shadowsocks2022 *ShadowsocksAccount } diff --git a/backend/xray/api/message.go b/backend/xray/api/message.go index 57ad15c..685e930 100644 --- a/backend/xray/api/message.go +++ b/backend/xray/api/message.go @@ -1,9 +1,8 @@ package api import ( - "google.golang.org/protobuf/proto" - "github.com/xtls/xray-core/common/serial" + "google.golang.org/protobuf/proto" ) func ToTypedMessage(account proto.Message) (*serial.TypedMessage, error) { diff --git a/backend/xray/config.go b/backend/xray/config.go index a6d250e..1ffeb15 100644 --- a/backend/xray/config.go +++ b/backend/xray/config.go @@ -2,12 +2,14 @@ package xray import ( "encoding/json" + "log" + "slices" "strings" "sync" - "github.com/xtls/xray-core/infra/conf" - "github.com/m03ed/marzban-node-go/backend/xray/api" + "github.com/m03ed/marzban-node-go/common" + "github.com/xtls/xray-core/infra/conf" ) type Protocol string @@ -47,7 +49,76 @@ type Inbound struct { mu sync.RWMutex } -func (i *Inbound) AddUser(account api.Account) { +func (c *Config) syncUsers(users []*common.User) { + for _, i := range c.InboundConfigs { + i.syncUsers(users) + } +} + +func (i *Inbound) syncUsers(users []*common.User) { + i.mu.Lock() + defer i.mu.Unlock() + + switch i.Protocol { + case Vmess: + clients := []*api.VMessAccount{} + for _, user := range users { + account, err := api.NewVMessAccount(user) + if err != nil { + log.Println("error for user", user.GetEmail(), ":", err) + } + if slices.Contains(user.Inbounds, i.Tag) { + clients = append(clients, account) + } + } + i.Settings["clients"] = clients + + case Vless: + clients := []*api.VLESSAccount{} + for _, user := range users { + account, err := api.NewVlessAccount(user) + if err != nil { + log.Println("error for user", user.GetEmail(), ":", err) + } + if newAccount, active := isActiveInbound(i, user.GetInbounds(), api.ProxySettings{Vless: account}); active { + clients = append(clients, newAccount.(*api.VLESSAccount)) + } + } + i.Settings["clients"] = clients + + case Trojan: + clients := []*api.TrojanAccount{} + for _, user := range users { + if slices.Contains(user.Inbounds, i.Tag) { + clients = append(clients, api.NewTrojanAccount(user)) + } + } + i.Settings["clients"] = clients + + case Shadowsocks: + method, methodOk := i.Settings["method"].(string) + if methodOk && strings.HasPrefix("2022-blake3", method) { + clients := []*api.ShadowsocksAccount{} + for _, user := range users { + if slices.Contains(user.Inbounds, i.Tag) { + clients = append(clients, api.NewShadowsocksAccount(user)) + } + } + i.Settings["clients"] = clients + + } else { + clients := []*api.ShadowsocksTcpAccount{} + for _, user := range users { + if slices.Contains(user.Inbounds, i.Tag) { + clients = append(clients, api.NewShadowsocksTcpAccount(user)) + } + } + i.Settings["clients"] = clients + } + } +} + +func (i *Inbound) addUser(account api.Account) { i.mu.Lock() defer i.mu.Unlock() @@ -73,27 +144,27 @@ func (i *Inbound) AddUser(account api.Account) { } i.Settings["clients"] = append(clients, account.(*api.TrojanAccount)) - case *api.ShadowsocksAccount: - clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) + case *api.ShadowsocksTcpAccount: + clients, ok := i.Settings["clients"].([]*api.ShadowsocksTcpAccount) if !ok { - clients = []*api.ShadowsocksAccount{} + clients = []*api.ShadowsocksTcpAccount{} } - i.Settings["clients"] = append(clients, account.(*api.ShadowsocksAccount)) + i.Settings["clients"] = append(clients, account.(*api.ShadowsocksTcpAccount)) - case *api.Shadowsocks2022Account: - clients, ok := i.Settings["clients"].([]*api.Shadowsocks2022Account) + case *api.ShadowsocksAccount: + clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) if !ok { - clients = []*api.Shadowsocks2022Account{} + clients = []*api.ShadowsocksAccount{} } - i.Settings["clients"] = append(clients, account.(*api.Shadowsocks2022Account)) + i.Settings["clients"] = append(clients, account.(*api.ShadowsocksAccount)) default: return } } -func (i *Inbound) UpdateUser(account api.Account) { +func (i *Inbound) updateUser(account api.Account) { i.mu.Lock() defer i.mu.Unlock() @@ -144,10 +215,10 @@ func (i *Inbound) UpdateUser(account api.Account) { i.Settings["clients"] = append(clients, account.(*api.TrojanAccount)) - case *api.ShadowsocksAccount: - clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) + case *api.ShadowsocksTcpAccount: + clients, ok := i.Settings["clients"].([]*api.ShadowsocksTcpAccount) if !ok { - clients = []*api.ShadowsocksAccount{} + clients = []*api.ShadowsocksTcpAccount{} } for x, client := range clients { @@ -157,12 +228,12 @@ func (i *Inbound) UpdateUser(account api.Account) { } } - i.Settings["clients"] = append(clients, account.(*api.ShadowsocksAccount)) + i.Settings["clients"] = append(clients, account.(*api.ShadowsocksTcpAccount)) - case *api.Shadowsocks2022Account: - clients, ok := i.Settings["clients"].([]*api.Shadowsocks2022Account) + case *api.ShadowsocksAccount: + clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) if !ok { - clients = []*api.Shadowsocks2022Account{} + clients = []*api.ShadowsocksAccount{} } for x, client := range clients { @@ -172,14 +243,14 @@ func (i *Inbound) UpdateUser(account api.Account) { } } - i.Settings["clients"] = append(clients, account.(*api.Shadowsocks2022Account)) + i.Settings["clients"] = append(clients, account.(*api.ShadowsocksAccount)) default: return } } -func (i *Inbound) RemoveUser(email string) { +func (i *Inbound) removeUser(email string) { i.mu.Lock() defer i.mu.Unlock() @@ -229,9 +300,9 @@ func (i *Inbound) RemoveUser(email string) { case Shadowsocks: method, methodOk := i.Settings["method"].(string) if methodOk && strings.HasPrefix("2022-blake3", method) { - clients, ok := i.Settings["clients"].([]*api.Shadowsocks2022Account) + clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) if !ok { - clients = []*api.Shadowsocks2022Account{} + clients = []*api.ShadowsocksAccount{} } for x, client := range clients { @@ -243,9 +314,9 @@ func (i *Inbound) RemoveUser(email string) { i.Settings["clients"] = clients } else { - clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) + clients, ok := i.Settings["clients"].([]*api.ShadowsocksTcpAccount) if !ok { - clients = []*api.ShadowsocksAccount{} + clients = []*api.ShadowsocksTcpAccount{} } for x, client := range clients { diff --git a/backend/xray/config.json b/backend/xray/config.json index 6373f30..7609704 100644 --- a/backend/xray/config.json +++ b/backend/xray/config.json @@ -9,6 +9,18 @@ "port": 4080, "protocol": "shadowsocks", "settings": { + "password": "password", + "clients": [], + "network": "tcp,udp" + } + }, + { + "tag": "Shadowsocks 2024", + "port": 1234, + "protocol": "shadowsocks", + "settings": { + "method": "2022-blake3-aes-128-gcm", + "password": "sMLi2fSOqrmrYArJZbLhfH8LcaE5s0kHf4CdebqVLdg=", "clients": [], "network": "tcp,udp" } @@ -48,6 +60,68 @@ ] } }, + { + "tag": "VLESS TCP NOTLS", + "listen": "0.0.0.0", + "port": 443, + "protocol": "vless", + "settings": { + "clients": [], + "decryption": "none" + }, + "streamSettings": { + "network": "tcp", + "tcpSettings": {}, + "security": "none" + }, + "sniffing": { + "enabled": true, + "destOverride": [ + "http", + "tls", + "quic" + ] + } + }, + { + "tag": "VLESS TCP Header NoTLS", + "listen": "0.0.0.0", + "port": 443, + "protocol": "vless", + "settings": { + "clients": [], + "decryption": "none" + }, + "streamSettings": { + "network": "tcp", + "tcpSettings": { + "header": { + "type": "http", + "request": { + "method": "GET", + "path": [ + "/" + ], + "headers": { + "Host": [ + "cloudflare.com" + ] + } + }, + "response": {} + } + }, + "security": "none" + }, + "sniffing": { + "enabled": true, + "destOverride": [ + "http", + "tls", + "quic" + ] + } + }, { "tag": "VMESS TCP NOTLS", "listen": "0.0.0.0", diff --git a/backend/xray/core.go b/backend/xray/core.go index e0ad228..e048580 100644 --- a/backend/xray/core.go +++ b/backend/xray/core.go @@ -7,6 +7,7 @@ import ( "log" "os" "os/exec" + "path/filepath" "regexp" "sync" @@ -16,6 +17,7 @@ import ( type Core struct { executablePath string assetsPath string + configPath string version string process *exec.Cmd restarting bool @@ -24,10 +26,11 @@ type Core struct { mu sync.Mutex } -func NewXRayCore(executablePath, assetsPath string) (*Core, error) { +func NewXRayCore(executablePath, assetsPath, configPath string) (*Core, error) { core := &Core{ executablePath: executablePath, assetsPath: assetsPath, + configPath: configPath, logsChan: make(chan string), } @@ -94,7 +97,7 @@ func (c *Core) Start(config *Config) error { accessFile, errorFile := config.RemoveLogFiles() - cmd := exec.Command(c.executablePath, "run", "-config", "stdin:") + cmd := exec.Command(c.executablePath, "-c", filepath.Join(c.configPath, "xray.json")) cmd.Env = append(os.Environ(), "XRAY_LOCATION_ASSET="+c.assetsPath) xrayJson, err := config.ToJSON() diff --git a/backend/xray/user.go b/backend/xray/user.go index 37f50d3..ab143e5 100644 --- a/backend/xray/user.go +++ b/backend/xray/user.go @@ -7,9 +7,6 @@ import ( "slices" "strings" - "github.com/google/uuid" - "github.com/xtls/xray-core/proxy/shadowsocks" - "github.com/m03ed/marzban-node-go/backend/xray/api" "github.com/m03ed/marzban-node-go/common" ) @@ -17,88 +14,44 @@ import ( func setupUserAccount(user *common.User) (api.ProxySettings, error) { settings := api.ProxySettings{} - if user.Proxies.Vmess != nil && user.Proxies.Vmess.Id != "" { - settings.Vmess = &api.VMessAccount{ - BaseAccount: api.BaseAccount{ - Email: user.GetEmail(), - Level: uint32(0), - }, - } - id, err := uuid.Parse(user.Proxies.Vmess.Id) - if err != nil { - return settings, err - } - settings.Vmess.ID = id + vmessAccount, err := api.NewVMessAccount(user) + if err != nil { + return settings, err } + settings.Vmess = vmessAccount - if user.Proxies.Vless != nil && user.Proxies.Vless.Id != "" { - settings.Vless = &api.VLESSAccount{ - BaseAccount: api.BaseAccount{ - Email: user.GetEmail(), - Level: uint32(0), - }, - Flow: api.XTLSFlows(user.Proxies.Vless.Flow), - } - id, err := uuid.Parse(user.Proxies.Vmess.Id) - if err != nil { - return settings, err - } - settings.Vless.ID = id + vlessAccount, err := api.NewVlessAccount(user) + if err != nil { + return settings, err } + settings.Vless = vlessAccount - if user.Proxies.Trojan != nil && user.Proxies.Trojan.Password != "" { - settings.Trojan = &api.TrojanAccount{ - BaseAccount: api.BaseAccount{ - Email: user.GetEmail(), - Level: uint32(0), - }, - Password: user.Proxies.Trojan.Password, - } - } + settings.Trojan = api.NewTrojanAccount(user) - if user.Proxies.Shadowsocks != nil && user.Proxies.Shadowsocks.Password != "" { - settings.Shadowsocks = &api.ShadowsocksAccount{ - BaseAccount: api.BaseAccount{ - Email: user.GetEmail(), - Level: uint32(0), - }, - Password: user.Proxies.Shadowsocks.Password, - } - if v, ok := shadowsocks.CipherType_value[user.Proxies.Shadowsocks.Method]; ok { - settings.Shadowsocks.Method = shadowsocks.CipherType(v) - } else { - settings.Shadowsocks.Method = shadowsocks.CipherType_NONE - } + settings.Shadowsocks = api.NewShadowsocksTcpAccount(user) - settings.Shadowsocks2022 = &api.Shadowsocks2022Account{ - BaseAccount: api.BaseAccount{ - Email: user.GetEmail(), - Level: uint32(0), - }, - Key: user.Proxies.Shadowsocks.Password, - } - } + settings.Shadowsocks2022 = api.NewShadowsocksAccount(user) return settings, nil } -func IsActiveInbound(inbound *Inbound, user *common.User, settings api.ProxySettings) (api.Account, bool) { - if slices.Contains(user.GetInbounds(), inbound.Tag) { +func isActiveInbound(inbound *Inbound, inbounds []string, settings api.ProxySettings) (api.Account, bool) { + if slices.Contains(inbounds, inbound.Tag) { switch inbound.Protocol { case Vless: account := *settings.Vless - if api.XTLSFlows(user.GetProxies().GetVless().GetFlow()) == api.VISION { + if settings.Vless.Flow != "" { networkType := inbound.StreamSettings["network"] if !(networkType == "tcp" || networkType == "mkcp") { - account.Flow = api.NONE + account.Flow = "" return &account, true } securityType := inbound.StreamSettings["security"] if !(securityType == "tls" || securityType == "reality") { - account.Flow = api.NONE + account.Flow = "" return &account, true } @@ -121,7 +74,7 @@ func IsActiveInbound(inbound *Inbound, user *common.User, settings api.ProxySett } if headerType == "http" { - account.Flow = api.NONE + account.Flow = "" return &account, true } } @@ -155,9 +108,9 @@ func (x *Xray) AddUser(ctx context.Context, user *common.User) error { var errMessage string for _, inbound := range inbounds { - account, isActive := IsActiveInbound(inbound, user, proxySetting) + account, isActive := isActiveInbound(inbound, user.GetInbounds(), proxySetting) if isActive { - inbound.AddUser(account) + inbound.addUser(account) if err = handler.AddInboundUser(ctx, inbound.Tag, account); err != nil { log.Println(err) errMessage += "\n" + err.Error() @@ -188,16 +141,16 @@ func (x *Xray) UpdateUser(ctx context.Context, user *common.User) error { for _, inbound := range inbounds { _ = handler.RemoveInboundUser(ctx, inbound.Tag, user.Email) - account, isActive := IsActiveInbound(inbound, user, proxySetting) + account, isActive := isActiveInbound(inbound, user.GetInbounds(), proxySetting) if isActive { - inbound.UpdateUser(account) + inbound.updateUser(account) err = handler.AddInboundUser(ctx, inbound.Tag, account) if err != nil { log.Println(err) errMessage += "\n" + err.Error() } } else { - inbound.RemoveUser(user.GetEmail()) + inbound.removeUser(user.GetEmail()) } } @@ -215,7 +168,7 @@ func (x *Xray) RemoveUser(ctx context.Context, email string) { handler := x.getHandler() for _, inbound := range x.getConfig().InboundConfigs { - inbound.RemoveUser(email) + inbound.removeUser(email) _ = handler.RemoveInboundUser(ctx, inbound.Tag, email) } @@ -223,3 +176,7 @@ func (x *Xray) RemoveUser(ctx context.Context, email string) { log.Println(err) } } + +func (x *Xray) SyncUsers(_ context.Context, _ []*common.User) error { + return errors.New("not implemented method") +} diff --git a/backend/xray/xray.go b/backend/xray/xray.go index 78760c6..5eeac3d 100644 --- a/backend/xray/xray.go +++ b/backend/xray/xray.go @@ -6,6 +6,7 @@ import ( "encoding/json" "errors" "fmt" + "log" "os" "path/filepath" "regexp" @@ -141,8 +142,7 @@ func (x *Xray) GenerateConfigFile() error { } // Ensure the directory exists - err = os.MkdirAll(x.configPath, 0755) - if err != nil { + if err = os.MkdirAll(x.configPath, 0755); err != nil { return fmt.Errorf("failed to create config directory: %v", err) } @@ -186,26 +186,58 @@ Loop: } func NewXray(ctx context.Context, port int, executablePath, assetsPath, configPath string) (*Xray, error) { - xray := &Xray{configPath: configPath} + executableAbsolutePath, err := filepath.Abs(executablePath) + if err != nil { + return nil, err + } + + assetsAbsolutePath, err := filepath.Abs(assetsPath) + if err != nil { + return nil, err + } + + configAbsolutePath, err := filepath.Abs(configPath) + if err != nil { + return nil, err + } + + xray := &Xray{configPath: configAbsolutePath} + + start := time.Now() + config, ok := ctx.Value(backend.ConfigKey{}).(*Config) if !ok { return nil, errors.New("xray config has not been initialized") } - if err := config.ApplyAPI(port); err != nil { + + if err = config.ApplyAPI(port); err != nil { return nil, err } + + users := ctx.Value(backend.UsersKey{}).([]*common.User) + config.syncUsers(users) + xray.setConfig(config) - core, err := NewXRayCore(executablePath, assetsPath) + if err = xray.GenerateConfigFile(); err != nil { + return nil, err + } + + log.Println("config generated in", time.Since(start).Seconds(), "second.") + + core, err := NewXRayCore(executableAbsolutePath, assetsAbsolutePath, configAbsolutePath) if err != nil { return nil, err } + if err = core.Start(config); err != nil { return nil, err } + xray.setCore(core) if err = xray.checkXrayStatus(); err != nil { + xray.Shutdown() return nil, err } @@ -216,10 +248,5 @@ func NewXray(ctx context.Context, port int, executablePath, assetsPath, configPa } xray.setHandler(handler) - if err = xray.GenerateConfigFile(); err != nil { - xray.Shutdown() - return nil, err - } - return xray, nil } diff --git a/backend/xray/xray_test.go b/backend/xray/xray_test.go index e2a2326..f386071 100644 --- a/backend/xray/xray_test.go +++ b/backend/xray/xray_test.go @@ -35,28 +35,6 @@ func TestXrayBackend(t *testing.T) { log.Println("xray config created") - ctx := context.WithValue(context.Background(), backend.ConfigKey{}, newConfig) - - back, err := NewXray(ctx, tools.FindFreePort(), executablePath, assetsPath, configPath) - if err != nil { - t.Fatal(err) - } - - log.Println("xray started") - - ctx1, cancel := context.WithTimeout(context.Background(), time.Second*10) - defer cancel() - - // test with service StatsServiceClient - stats, err := back.GetOutboundsStats(ctx1, true) - if err != nil { - t.Error(err) - } - - for _, stat := range stats.Stats { - log.Printf(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) - } - // test HandlerServiceClient user := &common.User{ Email: "test_user@example.com", @@ -66,59 +44,104 @@ func TestXrayBackend(t *testing.T) { "TROJAN TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP", + "VLESS TCP Header NoTLS", }, Proxies: &common.Proxy{ - Vmess: &common.VmessSetting{ + Vmess: &common.Vmess{ Id: uuid.New().String(), }, - Vless: &common.VlessSetting{ - Id: uuid.New().String(), + Vless: &common.Vless{ + Id: uuid.New().String(), + Flow: "xtls-rprx-vision", }, - Trojan: &common.TrojanSetting{ + Trojan: &common.Trojan{ Password: "try a random string", }, - Shadowsocks: &common.ShadowsocksSetting{ + Shadowsocks: &common.Shadowsocks{ Password: "try a random string", - Method: "AES_256_GCM", + Method: "aes-128-gcm", }, }, } - if err = back.AddUser(ctx, user); err != nil { - t.Fatal(err) - } - - log.Println("user added") - - user = &common.User{ - Email: "test_user@example.com", + user2 := &common.User{ + Email: "test_user1@example.com", Inbounds: []string{ "VLESS TCP REALITY", + "VLESS TCP NOTLS", "Shadowsocks TCP", "Shadowsocks UDP", }, Proxies: &common.Proxy{ - Vmess: &common.VmessSetting{ + Vmess: &common.Vmess{ Id: uuid.New().String(), }, - Vless: &common.VlessSetting{ - Id: uuid.New().String(), + Vless: &common.Vless{ + Id: uuid.New().String(), + Flow: "xtls-rprx-vision", }, - Trojan: &common.TrojanSetting{ + Trojan: &common.Trojan{ Password: "try a random string", }, - Shadowsocks: &common.ShadowsocksSetting{ + Shadowsocks: &common.Shadowsocks{ Password: "try a random string", - Method: "AES_256_GCM", + Method: "aes-256-gcm", }, }, } - if err = back.UpdateUser(ctx, user); err != nil { + ctx := context.WithValue(context.Background(), backend.ConfigKey{}, newConfig) + ctx = context.WithValue(ctx, backend.UsersKey{}, []*common.User{user, user2}) + + back, err := NewXray(ctx, tools.FindFreePort(), executablePath, assetsPath, configPath) + if err != nil { + t.Fatal(err) + } + + log.Println("xray started") + + ctx1, cancel := context.WithTimeout(context.Background(), time.Second*10) + defer cancel() + + // test with service StatsServiceClient + stats, err := back.GetOutboundsStats(ctx1, true) + if err != nil { + t.Error(err) + } + + for _, stat := range stats.Stats { + log.Printf(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) + } + + if err = back.UpdateUser(ctx1, user); err != nil { + t.Fatal(err) + } + + log.Println("user added") + + if err = back.UpdateUser(ctx1, user2); err != nil { t.Fatal(err) } log.Println("user updated") + ctx1, cancel = context.WithTimeout(context.Background(), time.Second*10) + defer cancel() + + logs := back.GetLogs() +loop: + for { + select { + case newLog, ok := <-logs: + if !ok { + log.Println("channel closed") + break loop + } + fmt.Println(newLog) + case <-ctx1.Done(): + break loop + } + } + back.Shutdown() } diff --git a/common/service.pb.go b/common/service.pb.go index 358c5f0..316fcca 100644 --- a/common/service.pb.go +++ b/common/service.pb.go @@ -184,6 +184,7 @@ type Backend struct { Type BackendType `protobuf:"varint,1,opt,name=type,proto3,enum=service.BackendType" json:"type,omitempty"` Config string `protobuf:"bytes,2,opt,name=config,proto3" json:"config,omitempty"` + Users []*User `protobuf:"bytes,3,rep,name=users,proto3" json:"users,omitempty"` } func (x *Backend) Reset() { @@ -230,6 +231,13 @@ func (x *Backend) GetConfig() string { return "" } +func (x *Backend) GetUsers() []*User { + if x != nil { + return x.Users + } + return nil +} + // log type Log struct { state protoimpl.MessageState @@ -692,7 +700,7 @@ func (x *SystemStatsResponse) GetOutgoingBandwidthSpeed() uint64 { } // User -type VmessSetting struct { +type Vmess struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -700,20 +708,20 @@ type VmessSetting struct { Id string `protobuf:"bytes,1,opt,name=id,proto3" json:"id,omitempty"` } -func (x *VmessSetting) Reset() { - *x = VmessSetting{} +func (x *Vmess) Reset() { + *x = Vmess{} mi := &file_common_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *VmessSetting) String() string { +func (x *Vmess) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VmessSetting) ProtoMessage() {} +func (*Vmess) ProtoMessage() {} -func (x *VmessSetting) ProtoReflect() protoreflect.Message { +func (x *Vmess) ProtoReflect() protoreflect.Message { mi := &file_common_service_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -725,19 +733,19 @@ func (x *VmessSetting) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VmessSetting.ProtoReflect.Descriptor instead. -func (*VmessSetting) Descriptor() ([]byte, []int) { +// Deprecated: Use Vmess.ProtoReflect.Descriptor instead. +func (*Vmess) Descriptor() ([]byte, []int) { return file_common_service_proto_rawDescGZIP(), []int{10} } -func (x *VmessSetting) GetId() string { +func (x *Vmess) GetId() string { if x != nil { return x.Id } return "" } -type VlessSetting struct { +type Vless struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -746,20 +754,20 @@ type VlessSetting struct { Flow string `protobuf:"bytes,2,opt,name=flow,proto3" json:"flow,omitempty"` } -func (x *VlessSetting) Reset() { - *x = VlessSetting{} +func (x *Vless) Reset() { + *x = Vless{} mi := &file_common_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *VlessSetting) String() string { +func (x *Vless) String() string { return protoimpl.X.MessageStringOf(x) } -func (*VlessSetting) ProtoMessage() {} +func (*Vless) ProtoMessage() {} -func (x *VlessSetting) ProtoReflect() protoreflect.Message { +func (x *Vless) ProtoReflect() protoreflect.Message { mi := &file_common_service_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -771,26 +779,26 @@ func (x *VlessSetting) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use VlessSetting.ProtoReflect.Descriptor instead. -func (*VlessSetting) Descriptor() ([]byte, []int) { +// Deprecated: Use Vless.ProtoReflect.Descriptor instead. +func (*Vless) Descriptor() ([]byte, []int) { return file_common_service_proto_rawDescGZIP(), []int{11} } -func (x *VlessSetting) GetId() string { +func (x *Vless) GetId() string { if x != nil { return x.Id } return "" } -func (x *VlessSetting) GetFlow() string { +func (x *Vless) GetFlow() string { if x != nil { return x.Flow } return "" } -type TrojanSetting struct { +type Trojan struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -798,20 +806,20 @@ type TrojanSetting struct { Password string `protobuf:"bytes,1,opt,name=password,proto3" json:"password,omitempty"` } -func (x *TrojanSetting) Reset() { - *x = TrojanSetting{} +func (x *Trojan) Reset() { + *x = Trojan{} mi := &file_common_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *TrojanSetting) String() string { +func (x *Trojan) String() string { return protoimpl.X.MessageStringOf(x) } -func (*TrojanSetting) ProtoMessage() {} +func (*Trojan) ProtoMessage() {} -func (x *TrojanSetting) ProtoReflect() protoreflect.Message { +func (x *Trojan) ProtoReflect() protoreflect.Message { mi := &file_common_service_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -823,19 +831,19 @@ func (x *TrojanSetting) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use TrojanSetting.ProtoReflect.Descriptor instead. -func (*TrojanSetting) Descriptor() ([]byte, []int) { +// Deprecated: Use Trojan.ProtoReflect.Descriptor instead. +func (*Trojan) Descriptor() ([]byte, []int) { return file_common_service_proto_rawDescGZIP(), []int{12} } -func (x *TrojanSetting) GetPassword() string { +func (x *Trojan) GetPassword() string { if x != nil { return x.Password } return "" } -type ShadowsocksSetting struct { +type Shadowsocks struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields @@ -844,20 +852,20 @@ type ShadowsocksSetting struct { Method string `protobuf:"bytes,2,opt,name=method,proto3" json:"method,omitempty"` } -func (x *ShadowsocksSetting) Reset() { - *x = ShadowsocksSetting{} +func (x *Shadowsocks) Reset() { + *x = Shadowsocks{} mi := &file_common_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *ShadowsocksSetting) String() string { +func (x *Shadowsocks) String() string { return protoimpl.X.MessageStringOf(x) } -func (*ShadowsocksSetting) ProtoMessage() {} +func (*Shadowsocks) ProtoMessage() {} -func (x *ShadowsocksSetting) ProtoReflect() protoreflect.Message { +func (x *Shadowsocks) ProtoReflect() protoreflect.Message { mi := &file_common_service_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) @@ -869,19 +877,19 @@ func (x *ShadowsocksSetting) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use ShadowsocksSetting.ProtoReflect.Descriptor instead. -func (*ShadowsocksSetting) Descriptor() ([]byte, []int) { +// Deprecated: Use Shadowsocks.ProtoReflect.Descriptor instead. +func (*Shadowsocks) Descriptor() ([]byte, []int) { return file_common_service_proto_rawDescGZIP(), []int{13} } -func (x *ShadowsocksSetting) GetPassword() string { +func (x *Shadowsocks) GetPassword() string { if x != nil { return x.Password } return "" } -func (x *ShadowsocksSetting) GetMethod() string { +func (x *Shadowsocks) GetMethod() string { if x != nil { return x.Method } @@ -893,10 +901,10 @@ type Proxy struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Vmess *VmessSetting `protobuf:"bytes,1,opt,name=vmess,proto3" json:"vmess,omitempty"` - Vless *VlessSetting `protobuf:"bytes,2,opt,name=vless,proto3" json:"vless,omitempty"` - Trojan *TrojanSetting `protobuf:"bytes,3,opt,name=trojan,proto3" json:"trojan,omitempty"` - Shadowsocks *ShadowsocksSetting `protobuf:"bytes,4,opt,name=shadowsocks,proto3" json:"shadowsocks,omitempty"` + Vmess *Vmess `protobuf:"bytes,1,opt,name=vmess,proto3" json:"vmess,omitempty"` + Vless *Vless `protobuf:"bytes,2,opt,name=vless,proto3" json:"vless,omitempty"` + Trojan *Trojan `protobuf:"bytes,3,opt,name=trojan,proto3" json:"trojan,omitempty"` + Shadowsocks *Shadowsocks `protobuf:"bytes,4,opt,name=shadowsocks,proto3" json:"shadowsocks,omitempty"` } func (x *Proxy) Reset() { @@ -929,28 +937,28 @@ func (*Proxy) Descriptor() ([]byte, []int) { return file_common_service_proto_rawDescGZIP(), []int{14} } -func (x *Proxy) GetVmess() *VmessSetting { +func (x *Proxy) GetVmess() *Vmess { if x != nil { return x.Vmess } return nil } -func (x *Proxy) GetVless() *VlessSetting { +func (x *Proxy) GetVless() *Vless { if x != nil { return x.Vless } return nil } -func (x *Proxy) GetTrojan() *TrojanSetting { +func (x *Proxy) GetTrojan() *Trojan { if x != nil { return x.Trojan } return nil } -func (x *Proxy) GetShadowsocks() *ShadowsocksSetting { +func (x *Proxy) GetShadowsocks() *Shadowsocks { if x != nil { return x.Shadowsocks } @@ -1018,6 +1026,51 @@ func (x *User) GetInbounds() []string { return nil } +type Users struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Users []*User `protobuf:"bytes,1,rep,name=users,proto3" json:"users,omitempty"` +} + +func (x *Users) Reset() { + *x = Users{} + mi := &file_common_service_proto_msgTypes[16] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *Users) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*Users) ProtoMessage() {} + +func (x *Users) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[16] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use Users.ProtoReflect.Descriptor instead. +func (*Users) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{16} +} + +func (x *Users) GetUsers() []*User { + if x != nil { + return x.Users + } + return nil +} + var File_common_service_proto protoreflect.FileDescriptor var file_common_service_proto_rawDesc = []byte{ @@ -1034,147 +1087,151 @@ var file_common_service_proto_rawDesc = []byte{ 0x0a, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x5f, 0x69, 0x64, 0x18, 0x04, 0x20, 0x01, 0x28, 0x09, 0x52, 0x09, 0x73, 0x65, 0x73, 0x73, 0x69, 0x6f, 0x6e, 0x49, 0x64, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x78, 0x74, 0x72, 0x61, 0x18, 0x05, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x78, 0x74, - 0x72, 0x61, 0x22, 0x4b, 0x0a, 0x07, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x0a, + 0x72, 0x61, 0x22, 0x70, 0x0a, 0x07, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x12, 0x28, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x16, 0x0a, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, - 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x22, - 0x1d, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x22, 0x58, - 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, 0x70, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x69, - 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, - 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x33, 0x0a, 0x0c, 0x53, 0x74, 0x61, 0x74, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x22, 0x29, 0x0a, - 0x11, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, 0x12, 0x4f, 0x6e, 0x6c, 0x69, - 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, - 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, - 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x14, 0x42, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x6f, 0x72, 0x6f, 0x75, - 0x74, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x47, - 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x5f, - 0x67, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x75, 0x6d, 0x47, 0x63, 0x12, - 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, - 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, - 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, - 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x05, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x6c, 0x6c, - 0x6f, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, - 0x63, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, 0x76, 0x65, - 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, - 0x6c, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, - 0x61, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x73, 0x18, 0x09, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, - 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, - 0x0d, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x13, 0x53, 0x79, - 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x19, - 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, - 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x70, - 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, - 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, - 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, - 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x42, - 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x38, 0x0a, - 0x18, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, - 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x16, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, - 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x22, 0x1e, 0x0a, 0x0c, 0x56, 0x6d, 0x65, 0x73, 0x73, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x32, 0x0a, 0x0c, 0x56, 0x6c, 0x65, 0x73, 0x73, - 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x2b, 0x0a, 0x0d, 0x54, - 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1a, 0x0a, 0x08, + 0x67, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x63, 0x6f, 0x6e, 0x66, 0x69, 0x67, 0x12, + 0x23, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x22, 0x1d, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x64, + 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, + 0x61, 0x69, 0x6c, 0x22, 0x58, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x33, 0x0a, + 0x0c, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x22, 0x29, 0x0a, 0x11, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, + 0x12, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, + 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, + 0xac, 0x02, 0x0a, 0x14, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, + 0x67, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, + 0x0c, 0x6e, 0x75, 0x6d, 0x47, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x12, 0x15, 0x0a, + 0x06, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, + 0x75, 0x6d, 0x47, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x03, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x73, + 0x79, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, + 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, + 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, + 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x12, 0x21, 0x0a, + 0x0c, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6c, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, + 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, + 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x54, + 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, + 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfb, + 0x01, 0x0a, 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, + 0x74, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1b, + 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, + 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, + 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6f, + 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, + 0x70, 0x65, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6f, + 0x6d, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, + 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x62, + 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x42, 0x61, + 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x05, + 0x56, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x05, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, + 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, + 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, + 0x6f, 0x77, 0x22, 0x24, 0x0a, 0x06, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x48, 0x0a, 0x12, 0x53, 0x68, 0x61, 0x64, - 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x22, 0xd0, 0x01, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x2b, 0x0a, 0x05, - 0x76, 0x6d, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6d, 0x65, 0x73, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, - 0x6e, 0x67, 0x52, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x2b, 0x0a, 0x05, 0x76, 0x6c, 0x65, - 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, - 0x05, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x2e, 0x0a, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, - 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x16, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x06, - 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x3d, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x1b, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, - 0x73, 0x53, 0x65, 0x74, 0x74, 0x69, 0x6e, 0x67, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x62, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, - 0x72, 0x6f, 0x78, 0x79, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, - 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, - 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x2a, 0x17, 0x0a, 0x0b, 0x42, 0x61, 0x63, - 0x6b, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x58, 0x52, 0x41, 0x59, - 0x10, 0x00, 0x32, 0xeb, 0x05, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x1a, 0x19, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x04, 0x53, 0x74, - 0x6f, 0x70, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, - 0x74, 0x79, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x49, - 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, - 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, - 0x12, 0x2b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x22, 0x00, 0x30, 0x01, 0x12, 0x3e, 0x0a, - 0x0c, 0x47, 0x65, 0x74, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, - 0x0f, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, - 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x3c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x3b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, + 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0b, 0x53, 0x68, 0x61, 0x64, + 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, + 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x05, + 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x18, 0x01, + 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, + 0x6d, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x76, + 0x6c, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x6c, 0x65, 0x73, + 0x73, 0x12, 0x27, 0x0a, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x6f, 0x6a, + 0x61, 0x6e, 0x52, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x68, + 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, + 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, + 0x6b, 0x73, 0x22, 0x62, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x12, 0x28, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, + 0x79, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, + 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, + 0x23, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, + 0x73, 0x65, 0x72, 0x73, 0x2a, 0x17, 0x0a, 0x0b, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x54, + 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x58, 0x52, 0x41, 0x59, 0x10, 0x00, 0x32, 0x9c, 0x06, + 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, + 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x0e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, + 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, + 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x47, + 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x4c, 0x6f, 0x67, 0x22, 0x00, 0x30, 0x01, 0x12, 0x40, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, + 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x47, 0x65, + 0x74, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, + 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0d, - 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1a, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2a, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, - 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, - 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, - 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, - 0x00, 0x12, 0x2d, 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, - 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, - 0x42, 0x18, 0x5a, 0x16, 0x6d, 0x61, 0x72, 0x7a, 0x62, 0x61, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, - 0x5f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, - 0x6f, 0x33, + 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x10, + 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, + 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0d, 0x47, 0x65, 0x74, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, + 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x2a, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, + 0x2d, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x2d, + 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x2d, 0x0a, + 0x09, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x18, 0x5a, 0x16, + 0x6d, 0x61, 0x72, 0x7a, 0x62, 0x61, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x6f, 0x2f, + 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1190,7 +1247,7 @@ func file_common_service_proto_rawDescGZIP() []byte { } var file_common_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_common_service_proto_msgTypes = make([]protoimpl.MessageInfo, 16) +var file_common_service_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_common_service_proto_goTypes = []any{ (BackendType)(0), // 0: service.BackendType (*Empty)(nil), // 1: service.Empty @@ -1203,52 +1260,57 @@ var file_common_service_proto_goTypes = []any{ (*OnlineStatResponse)(nil), // 8: service.OnlineStatResponse (*BackendStatsResponse)(nil), // 9: service.BackendStatsResponse (*SystemStatsResponse)(nil), // 10: service.SystemStatsResponse - (*VmessSetting)(nil), // 11: service.VmessSetting - (*VlessSetting)(nil), // 12: service.VlessSetting - (*TrojanSetting)(nil), // 13: service.TrojanSetting - (*ShadowsocksSetting)(nil), // 14: service.ShadowsocksSetting + (*Vmess)(nil), // 11: service.Vmess + (*Vless)(nil), // 12: service.Vless + (*Trojan)(nil), // 13: service.Trojan + (*Shadowsocks)(nil), // 14: service.Shadowsocks (*Proxy)(nil), // 15: service.Proxy (*User)(nil), // 16: service.User + (*Users)(nil), // 17: service.Users } var file_common_service_proto_depIdxs = []int32{ 0, // 0: service.Backend.type:type_name -> service.BackendType - 5, // 1: service.StatResponse.stats:type_name -> service.Stat - 11, // 2: service.Proxy.vmess:type_name -> service.VmessSetting - 12, // 3: service.Proxy.vless:type_name -> service.VlessSetting - 13, // 4: service.Proxy.trojan:type_name -> service.TrojanSetting - 14, // 5: service.Proxy.shadowsocks:type_name -> service.ShadowsocksSetting - 15, // 6: service.User.proxies:type_name -> service.Proxy - 3, // 7: service.NodeService.Start:input_type -> service.Backend - 1, // 8: service.NodeService.Stop:input_type -> service.Empty - 1, // 9: service.NodeService.GetBaseInfo:input_type -> service.Empty - 1, // 10: service.NodeService.GetLogs:input_type -> service.Empty - 1, // 11: service.NodeService.GetNodeStats:input_type -> service.Empty - 1, // 12: service.NodeService.GetBackendStats:input_type -> service.Empty - 1, // 13: service.NodeService.GetOutboundsStats:input_type -> service.Empty - 1, // 14: service.NodeService.GetInboundsStats:input_type -> service.Empty - 1, // 15: service.NodeService.GetUsersStats:input_type -> service.Empty - 7, // 16: service.NodeService.GetUserOnlineStat:input_type -> service.OnlineStatRequest - 16, // 17: service.NodeService.AddUser:input_type -> service.User - 16, // 18: service.NodeService.UpdateUser:input_type -> service.User - 16, // 19: service.NodeService.RemoveUser:input_type -> service.User - 2, // 20: service.NodeService.Start:output_type -> service.BaseInfoResponse - 1, // 21: service.NodeService.Stop:output_type -> service.Empty - 2, // 22: service.NodeService.GetBaseInfo:output_type -> service.BaseInfoResponse - 4, // 23: service.NodeService.GetLogs:output_type -> service.Log - 10, // 24: service.NodeService.GetNodeStats:output_type -> service.SystemStatsResponse - 9, // 25: service.NodeService.GetBackendStats:output_type -> service.BackendStatsResponse - 6, // 26: service.NodeService.GetOutboundsStats:output_type -> service.StatResponse - 6, // 27: service.NodeService.GetInboundsStats:output_type -> service.StatResponse - 6, // 28: service.NodeService.GetUsersStats:output_type -> service.StatResponse - 8, // 29: service.NodeService.GetUserOnlineStat:output_type -> service.OnlineStatResponse - 1, // 30: service.NodeService.AddUser:output_type -> service.Empty - 1, // 31: service.NodeService.UpdateUser:output_type -> service.Empty - 1, // 32: service.NodeService.RemoveUser:output_type -> service.Empty - 20, // [20:33] is the sub-list for method output_type - 7, // [7:20] is the sub-list for method input_type - 7, // [7:7] is the sub-list for extension type_name - 7, // [7:7] is the sub-list for extension extendee - 0, // [0:7] is the sub-list for field type_name + 16, // 1: service.Backend.users:type_name -> service.User + 5, // 2: service.StatResponse.stats:type_name -> service.Stat + 11, // 3: service.Proxy.vmess:type_name -> service.Vmess + 12, // 4: service.Proxy.vless:type_name -> service.Vless + 13, // 5: service.Proxy.trojan:type_name -> service.Trojan + 14, // 6: service.Proxy.shadowsocks:type_name -> service.Shadowsocks + 15, // 7: service.User.proxies:type_name -> service.Proxy + 16, // 8: service.Users.users:type_name -> service.User + 3, // 9: service.NodeService.Start:input_type -> service.Backend + 1, // 10: service.NodeService.Stop:input_type -> service.Empty + 1, // 11: service.NodeService.GetBaseInfo:input_type -> service.Empty + 1, // 12: service.NodeService.GetLogs:input_type -> service.Empty + 1, // 13: service.NodeService.GetSystemStats:input_type -> service.Empty + 1, // 14: service.NodeService.GetBackendStats:input_type -> service.Empty + 1, // 15: service.NodeService.GetOutboundsStats:input_type -> service.Empty + 1, // 16: service.NodeService.GetInboundsStats:input_type -> service.Empty + 1, // 17: service.NodeService.GetUsersStats:input_type -> service.Empty + 7, // 18: service.NodeService.GetUserOnlineStat:input_type -> service.OnlineStatRequest + 16, // 19: service.NodeService.AddUser:input_type -> service.User + 16, // 20: service.NodeService.UpdateUser:input_type -> service.User + 16, // 21: service.NodeService.RemoveUser:input_type -> service.User + 17, // 22: service.NodeService.SyncUsers:input_type -> service.Users + 2, // 23: service.NodeService.Start:output_type -> service.BaseInfoResponse + 1, // 24: service.NodeService.Stop:output_type -> service.Empty + 2, // 25: service.NodeService.GetBaseInfo:output_type -> service.BaseInfoResponse + 4, // 26: service.NodeService.GetLogs:output_type -> service.Log + 10, // 27: service.NodeService.GetSystemStats:output_type -> service.SystemStatsResponse + 9, // 28: service.NodeService.GetBackendStats:output_type -> service.BackendStatsResponse + 6, // 29: service.NodeService.GetOutboundsStats:output_type -> service.StatResponse + 6, // 30: service.NodeService.GetInboundsStats:output_type -> service.StatResponse + 6, // 31: service.NodeService.GetUsersStats:output_type -> service.StatResponse + 8, // 32: service.NodeService.GetUserOnlineStat:output_type -> service.OnlineStatResponse + 1, // 33: service.NodeService.AddUser:output_type -> service.Empty + 1, // 34: service.NodeService.UpdateUser:output_type -> service.Empty + 1, // 35: service.NodeService.RemoveUser:output_type -> service.Empty + 1, // 36: service.NodeService.SyncUsers:output_type -> service.Empty + 23, // [23:37] is the sub-list for method output_type + 9, // [9:23] is the sub-list for method input_type + 9, // [9:9] is the sub-list for extension type_name + 9, // [9:9] is the sub-list for extension extendee + 0, // [0:9] is the sub-list for field type_name } func init() { file_common_service_proto_init() } @@ -1262,7 +1324,7 @@ func file_common_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_service_proto_rawDesc, NumEnums: 1, - NumMessages: 16, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/common/service.proto b/common/service.proto index e470e1f..c0578ac 100644 --- a/common/service.proto +++ b/common/service.proto @@ -22,6 +22,7 @@ enum BackendType { message Backend { BackendType type = 1; string config = 2; + repeated User users = 3; } // log @@ -73,29 +74,29 @@ message SystemStatsResponse { } // User -message VmessSetting { +message Vmess { string id = 1; } -message VlessSetting { +message Vless { string id = 1; string flow = 2; } -message TrojanSetting { +message Trojan { string password = 1; } -message ShadowsocksSetting { +message Shadowsocks { string password = 1; string method = 2; } message Proxy { - VmessSetting vmess = 1; - VlessSetting vless = 2; - TrojanSetting trojan = 3; - ShadowsocksSetting shadowsocks = 4; + Vmess vmess = 1; + Vless vless = 2; + Trojan trojan = 3; + Shadowsocks shadowsocks = 4; } message User { @@ -104,6 +105,10 @@ message User { repeated string inbounds = 3; } +message Users { + repeated User users = 1; +} + // Service for node management and connection service NodeService { rpc Start (Backend) returns (BaseInfoResponse) {} @@ -112,7 +117,7 @@ service NodeService { rpc GetLogs (Empty) returns (stream Log) {} - rpc GetNodeStats (Empty) returns (SystemStatsResponse) {} + rpc GetSystemStats (Empty) returns (SystemStatsResponse) {} rpc GetBackendStats (Empty) returns (BackendStatsResponse) {} rpc GetOutboundsStats (Empty) returns (StatResponse) {} rpc GetInboundsStats (Empty) returns (StatResponse) {} @@ -122,4 +127,5 @@ service NodeService { rpc AddUser (User) returns (Empty) {} rpc UpdateUser (User) returns (Empty) {} rpc RemoveUser (User) returns (Empty) {} + rpc SyncUsers (Users) returns (Empty) {} } diff --git a/common/service_grpc.pb.go b/common/service_grpc.pb.go index 0da7a01..7c6d047 100644 --- a/common/service_grpc.pb.go +++ b/common/service_grpc.pb.go @@ -23,7 +23,7 @@ const ( NodeService_Stop_FullMethodName = "/service.NodeService/Stop" NodeService_GetBaseInfo_FullMethodName = "/service.NodeService/GetBaseInfo" NodeService_GetLogs_FullMethodName = "/service.NodeService/GetLogs" - NodeService_GetNodeStats_FullMethodName = "/service.NodeService/GetNodeStats" + NodeService_GetSystemStats_FullMethodName = "/service.NodeService/GetSystemStats" NodeService_GetBackendStats_FullMethodName = "/service.NodeService/GetBackendStats" NodeService_GetOutboundsStats_FullMethodName = "/service.NodeService/GetOutboundsStats" NodeService_GetInboundsStats_FullMethodName = "/service.NodeService/GetInboundsStats" @@ -32,6 +32,7 @@ const ( NodeService_AddUser_FullMethodName = "/service.NodeService/AddUser" NodeService_UpdateUser_FullMethodName = "/service.NodeService/UpdateUser" NodeService_RemoveUser_FullMethodName = "/service.NodeService/RemoveUser" + NodeService_SyncUsers_FullMethodName = "/service.NodeService/SyncUsers" ) // NodeServiceClient is the client API for NodeService service. @@ -44,7 +45,7 @@ type NodeServiceClient interface { Stop(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*Empty, error) GetBaseInfo(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*BaseInfoResponse, error) GetLogs(ctx context.Context, in *Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[Log], error) - GetNodeStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SystemStatsResponse, error) + GetSystemStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SystemStatsResponse, error) GetBackendStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*BackendStatsResponse, error) GetOutboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) GetInboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) @@ -53,6 +54,7 @@ type NodeServiceClient interface { AddUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) UpdateUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) RemoveUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) + SyncUsers(ctx context.Context, in *Users, opts ...grpc.CallOption) (*Empty, error) } type nodeServiceClient struct { @@ -112,10 +114,10 @@ func (c *nodeServiceClient) GetLogs(ctx context.Context, in *Empty, opts ...grpc // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. type NodeService_GetLogsClient = grpc.ServerStreamingClient[Log] -func (c *nodeServiceClient) GetNodeStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SystemStatsResponse, error) { +func (c *nodeServiceClient) GetSystemStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SystemStatsResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(SystemStatsResponse) - err := c.cc.Invoke(ctx, NodeService_GetNodeStats_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, NodeService_GetSystemStats_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } @@ -202,6 +204,16 @@ func (c *nodeServiceClient) RemoveUser(ctx context.Context, in *User, opts ...gr return out, nil } +func (c *nodeServiceClient) SyncUsers(ctx context.Context, in *Users, opts ...grpc.CallOption) (*Empty, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(Empty) + err := c.cc.Invoke(ctx, NodeService_SyncUsers_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + // NodeServiceServer is the server API for NodeService service. // All implementations must embed UnimplementedNodeServiceServer // for forward compatibility. @@ -212,7 +224,7 @@ type NodeServiceServer interface { Stop(context.Context, *Empty) (*Empty, error) GetBaseInfo(context.Context, *Empty) (*BaseInfoResponse, error) GetLogs(*Empty, grpc.ServerStreamingServer[Log]) error - GetNodeStats(context.Context, *Empty) (*SystemStatsResponse, error) + GetSystemStats(context.Context, *Empty) (*SystemStatsResponse, error) GetBackendStats(context.Context, *Empty) (*BackendStatsResponse, error) GetOutboundsStats(context.Context, *Empty) (*StatResponse, error) GetInboundsStats(context.Context, *Empty) (*StatResponse, error) @@ -221,6 +233,7 @@ type NodeServiceServer interface { AddUser(context.Context, *User) (*Empty, error) UpdateUser(context.Context, *User) (*Empty, error) RemoveUser(context.Context, *User) (*Empty, error) + SyncUsers(context.Context, *Users) (*Empty, error) mustEmbedUnimplementedNodeServiceServer() } @@ -243,8 +256,8 @@ func (UnimplementedNodeServiceServer) GetBaseInfo(context.Context, *Empty) (*Bas func (UnimplementedNodeServiceServer) GetLogs(*Empty, grpc.ServerStreamingServer[Log]) error { return status.Errorf(codes.Unimplemented, "method GetLogs not implemented") } -func (UnimplementedNodeServiceServer) GetNodeStats(context.Context, *Empty) (*SystemStatsResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetNodeStats not implemented") +func (UnimplementedNodeServiceServer) GetSystemStats(context.Context, *Empty) (*SystemStatsResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetSystemStats not implemented") } func (UnimplementedNodeServiceServer) GetBackendStats(context.Context, *Empty) (*BackendStatsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetBackendStats not implemented") @@ -270,6 +283,9 @@ func (UnimplementedNodeServiceServer) UpdateUser(context.Context, *User) (*Empty func (UnimplementedNodeServiceServer) RemoveUser(context.Context, *User) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method RemoveUser not implemented") } +func (UnimplementedNodeServiceServer) SyncUsers(context.Context, *Users) (*Empty, error) { + return nil, status.Errorf(codes.Unimplemented, "method SyncUsers not implemented") +} func (UnimplementedNodeServiceServer) mustEmbedUnimplementedNodeServiceServer() {} func (UnimplementedNodeServiceServer) testEmbeddedByValue() {} @@ -356,20 +372,20 @@ func _NodeService_GetLogs_Handler(srv interface{}, stream grpc.ServerStream) err // This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. type NodeService_GetLogsServer = grpc.ServerStreamingServer[Log] -func _NodeService_GetNodeStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { +func _NodeService_GetSystemStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Empty) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(NodeServiceServer).GetNodeStats(ctx, in) + return srv.(NodeServiceServer).GetSystemStats(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: NodeService_GetNodeStats_FullMethodName, + FullMethod: NodeService_GetSystemStats_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).GetNodeStats(ctx, req.(*Empty)) + return srv.(NodeServiceServer).GetSystemStats(ctx, req.(*Empty)) } return interceptor(ctx, in, info, handler) } @@ -518,6 +534,24 @@ func _NodeService_RemoveUser_Handler(srv interface{}, ctx context.Context, dec f return interceptor(ctx, in, info, handler) } +func _NodeService_SyncUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Users) + if err := dec(in); err != nil { + return nil, err + } + if interceptor == nil { + return srv.(NodeServiceServer).SyncUsers(ctx, in) + } + info := &grpc.UnaryServerInfo{ + Server: srv, + FullMethod: NodeService_SyncUsers_FullMethodName, + } + handler := func(ctx context.Context, req interface{}) (interface{}, error) { + return srv.(NodeServiceServer).SyncUsers(ctx, req.(*Users)) + } + return interceptor(ctx, in, info, handler) +} + // NodeService_ServiceDesc is the grpc.ServiceDesc for NodeService service. // It's only intended for direct use with grpc.RegisterService, // and not to be introspected or modified (even as a copy) @@ -538,8 +572,8 @@ var NodeService_ServiceDesc = grpc.ServiceDesc{ Handler: _NodeService_GetBaseInfo_Handler, }, { - MethodName: "GetNodeStats", - Handler: _NodeService_GetNodeStats_Handler, + MethodName: "GetSystemStats", + Handler: _NodeService_GetSystemStats_Handler, }, { MethodName: "GetBackendStats", @@ -573,6 +607,10 @@ var NodeService_ServiceDesc = grpc.ServiceDesc{ MethodName: "RemoveUser", Handler: _NodeService_RemoveUser_Handler, }, + { + MethodName: "SyncUsers", + Handler: _NodeService_SyncUsers_Handler, + }, }, Streams: []grpc.StreamDesc{ { diff --git a/controller/rest/base.go b/controller/rest/base.go index 45f0db8..9994b22 100644 --- a/controller/rest/base.go +++ b/controller/rest/base.go @@ -68,18 +68,20 @@ func (s *Service) detectBackend(r *http.Request) (context.Context, common.Backen // Decode into a map if err := json.NewDecoder(r.Body).Decode(&body); err != nil { - return nil, 0, errors.New("invalid JSON") + return nil, 0, err } if body.Type == common.BackendType_XRAY { config, err := xray.NewXRayConfig(body.Config) if err != nil { - return nil, 0, errors.New("invalid Config") + return nil, 0, err } ctx = context.WithValue(r.Context(), backend.ConfigKey{}, config) } else { return ctx, body.Type, errors.New("invalid backend type") } + ctx = context.WithValue(ctx, backend.UsersKey{}, body.GetUsers()) + return ctx, body.Type, nil } diff --git a/controller/rest/rest_test.go b/controller/rest/rest_test.go index a02267d..6fa2539 100644 --- a/controller/rest/rest_test.go +++ b/controller/rest/rest_test.go @@ -87,9 +87,62 @@ func TestRESTConnection(t *testing.T) { t.Fatal(err) } + user := &common.User{ + Email: "test_user1@example.com", + Inbounds: []string{ + "VMESS TCP NOTLS", + "VLESS TCP REALITY", + "TROJAN TCP NOTLS", + "Shadowsocks TCP", + "Shadowsocks UDP", + }, + Proxies: &common.Proxy{ + Vmess: &common.Vmess{ + Id: uuid.New().String(), + }, + Vless: &common.Vless{ + Id: uuid.New().String(), + }, + Trojan: &common.Trojan{ + Password: "try a random string", + }, + Shadowsocks: &common.Shadowsocks{ + Password: "try a random string", + Method: "aes-256-gcm", + }, + }, + } + + user2 := &common.User{ + Email: "test_user2@example.com", + Inbounds: []string{ + "VMESS TCP NOTLS", + "VLESS TCP REALITY", + "TROJAN TCP NOTLS", + "Shadowsocks TCP", + "Shadowsocks UDP", + }, + Proxies: &common.Proxy{ + Vmess: &common.Vmess{ + Id: uuid.New().String(), + }, + Vless: &common.Vless{ + Id: uuid.New().String(), + }, + Trojan: &common.Trojan{ + Password: "try a random string", + }, + Shadowsocks: &common.Shadowsocks{ + Password: "try a random string", + Method: "aes-256-gcm", + }, + }, + } + backendStartReq := &common.Backend{ Type: common.BackendType_XRAY, Config: string(configFile), + Users: []*common.User{user, user2}, } jsonBody, _ := json.Marshal(backendStartReq) @@ -194,7 +247,7 @@ func TestRESTConnection(t *testing.T) { } // Try To Get Backend Stats - backendStatsReq, _ := createAuthenticatedRequest("GET", "/stats/system", nil) + backendStatsReq, _ := createAuthenticatedRequest("GET", "/stats/backend", nil) backendStatsResp, err := client.Do(backendStatsReq) if err != nil { t.Fatalf("Backend stats request failed: %v", err) @@ -213,32 +266,6 @@ func TestRESTConnection(t *testing.T) { stat.Name, stat.Value, stat.Type, stat.Link) } - user := &common.User{ - Email: "test_user1@example.com", - Inbounds: []string{ - "VMESS TCP NOTLS", - "VLESS TCP REALITY", - "TROJAN TCP NOTLS", - "Shadowsocks TCP", - "Shadowsocks UDP", - }, - Proxies: &common.Proxy{ - Vmess: &common.VmessSetting{ - Id: uuid.New().String(), - }, - Vless: &common.VlessSetting{ - Id: uuid.New().String(), - }, - Trojan: &common.TrojanSetting{ - Password: "try a random string", - }, - Shadowsocks: &common.ShadowsocksSetting{ - Password: "try a random string", - Method: "AES_256_GCM", - }, - }, - } - jsonBody, _ = json.Marshal(user) // Try To Add User @@ -249,33 +276,7 @@ func TestRESTConnection(t *testing.T) { } defer addUserResp.Body.Close() - user = &common.User{ - Email: "test_user2@example.com", - Inbounds: []string{ - "VMESS TCP NOTLS", - "VLESS TCP REALITY", - "TROJAN TCP NOTLS", - "Shadowsocks TCP", - "Shadowsocks UDP", - }, - Proxies: &common.Proxy{ - Vmess: &common.VmessSetting{ - Id: uuid.New().String(), - }, - Vless: &common.VlessSetting{ - Id: uuid.New().String(), - }, - Trojan: &common.TrojanSetting{ - Password: "try a random string", - }, - Shadowsocks: &common.ShadowsocksSetting{ - Password: "try a random string", - Method: "AES_128_GCM", - }, - }, - } - - jsonBody, _ = json.Marshal(user) + jsonBody, _ = json.Marshal(user2) // Try To Update User updateUserReq, _ := createAuthenticatedRequest("PUT", "/user/update", bytes.NewBuffer(jsonBody)) @@ -314,7 +315,7 @@ func TestRESTConnection(t *testing.T) { time.Sleep(2 * time.Second) // Try To Get Node Stats - nodeStatsReq, _ := createAuthenticatedRequest("GET", "/stats/node", nil) + nodeStatsReq, _ := createAuthenticatedRequest("GET", "/stats/system", nil) nodeStatsResp, err := client.Do(nodeStatsReq) if err != nil { t.Fatalf("Node stats request failed: %v", err) diff --git a/controller/rest/service.go b/controller/rest/service.go index 5ba4ee8..2f3e528 100644 --- a/controller/rest/service.go +++ b/controller/rest/service.go @@ -33,13 +33,12 @@ func (s *Service) setRouter() { router.Group(func(protected chi.Router) { // check session and need to return data as context protected.Use(s.checkSessionIDMiddleware) - protected.Get("/", s.Base) - protected.Get("/ping", s.Ping) + protected.Get("/info", s.Base) protected.Put("/stop", s.Stop) protected.Get("/logs", s.GetLogs) - protected.Get("/stats/node", s.GetNodeStats) + protected.Get("/stats/system", s.GetSystemStats) protected.Group(func(private chi.Router) { private.Use(s.checkBackendMiddleware) @@ -50,14 +49,14 @@ func (s *Service) setRouter() { statsGroup.Get("/outbounds", s.GetOutboundsStats) statsGroup.Get("/user/{email}", s.GetUserOnlineStat) statsGroup.Get("/users", s.GetUsersStats) - statsGroup.Get("/system", s.GetBackendStats) + statsGroup.Get("/backend", s.GetBackendStats) }) // users api private.Route("/user", func(userGroup chi.Router) { userGroup.Post("/add", s.AddUser) userGroup.Put("/update", s.UpdateUser) - userGroup.Post("/remove", s.RemoveUser) + userGroup.Delete("/remove", s.RemoveUser) }) }) }) diff --git a/controller/rest/stats.go b/controller/rest/stats.go index 14311ac..275973f 100644 --- a/controller/rest/stats.go +++ b/controller/rest/stats.go @@ -64,7 +64,7 @@ func (s *Service) GetBackendStats(w http.ResponseWriter, r *http.Request) { _ = json.NewEncoder(w).Encode(response) } -func (s *Service) GetNodeStats(w http.ResponseWriter, _ *http.Request) { +func (s *Service) GetSystemStats(w http.ResponseWriter, _ *http.Request) { w.Header().Set("Content-Type", "application/json") _ = json.NewEncoder(w).Encode(s.controller.GetStats()) } diff --git a/controller/rpc/base.go b/controller/rpc/base.go index bed0417..951eb2a 100644 --- a/controller/rpc/base.go +++ b/controller/rpc/base.go @@ -39,6 +39,9 @@ func (s *Service) detectBackend(ctx context.Context, detail *common.Backend) (co } else { return nil, errors.New("unknown backend type") } + + ctx = context.WithValue(ctx, backend.UsersKey{}, detail.GetUsers()) + return ctx, nil } diff --git a/controller/rpc/middleware.go b/controller/rpc/middleware.go index a21fb64..90e8c8f 100644 --- a/controller/rpc/middleware.go +++ b/controller/rpc/middleware.go @@ -187,13 +187,14 @@ var backendMethods = map[string]bool{ "/service.NodeService/AddUser": true, "/service.NodeService/UpdateUser": true, "/service.NodeService/RemoveUser": true, + "/service.NodeService/SyncUsers": true, } var sessionIDMethods = map[string]bool{ "/service.NodeService/Stop": true, "/service.NodeService/GetBaseInfo": true, "/service.NodeService/GetLogs": true, - "/service.NodeService/GetNodeStats": true, + "/service.NodeService/GetSystemStats": true, "/service.NodeService/GetOutboundsStats": true, "/service.NodeService/GetInboundsStats": true, "/service.NodeService/GetUsersStats": true, @@ -201,6 +202,7 @@ var sessionIDMethods = map[string]bool{ "/service.NodeService/AddUser": true, "/service.NodeService/UpdateUser": true, "/service.NodeService/RemoveUser": true, + "/service.NodeService/SyncUsers": true, } func ConditionalMiddleware(s *Service) grpc.UnaryServerInterceptor { diff --git a/controller/rpc/rpc_test.go b/controller/rpc/rpc_test.go index 958b568..1fe312b 100644 --- a/controller/rpc/rpc_test.go +++ b/controller/rpc/rpc_test.go @@ -3,8 +3,6 @@ package rpc import ( "context" "fmt" - "google.golang.org/grpc/codes" - "google.golang.org/grpc/status" "io" "log" "os" @@ -13,8 +11,10 @@ import ( "github.com/google/uuid" "google.golang.org/grpc" + "google.golang.org/grpc/codes" "google.golang.org/grpc/credentials" "google.golang.org/grpc/metadata" + "google.golang.org/grpc/status" "github.com/m03ed/marzban-node-go/common" "github.com/m03ed/marzban-node-go/config" @@ -183,23 +183,23 @@ func TestGRPCConnection(t *testing.T) { "Shadowsocks UDP", }, Proxies: &common.Proxy{ - Vmess: &common.VmessSetting{ + Vmess: &common.Vmess{ Id: uuid.New().String(), }, - Vless: &common.VlessSetting{ + Vless: &common.Vless{ Id: uuid.New().String(), }, - Trojan: &common.TrojanSetting{ + Trojan: &common.Trojan{ Password: "try a random string", }, - Shadowsocks: &common.ShadowsocksSetting{ + Shadowsocks: &common.Shadowsocks{ Password: "try a random string", - Method: "AES_256_GCM", + Method: "aes-256-gcm", }, }, } - // test AddUser + // test addUser if _, err = client.AddUser(ctx, user); err != nil { t.Fatalf("Failed to add user: %v", err) } @@ -217,23 +217,23 @@ func TestGRPCConnection(t *testing.T) { "Shadowsocks UDP", }, Proxies: &common.Proxy{ - Vmess: &common.VmessSetting{ + Vmess: &common.Vmess{ Id: uuid.New().String(), }, - Vless: &common.VlessSetting{ + Vless: &common.Vless{ Id: uuid.New().String(), }, - Trojan: &common.TrojanSetting{ + Trojan: &common.Trojan{ Password: "try a random string", }, - Shadowsocks: &common.ShadowsocksSetting{ + Shadowsocks: &common.Shadowsocks{ Password: "try a random string", - Method: "AES_128_GCM", + Method: "aes-256-gcm", }, }, } - // test UpdateUser + // test updateUser if _, err = client.UpdateUser(ctx, user); err != nil { t.Fatalf("Failed to update user: %v", err) } @@ -241,7 +241,7 @@ func TestGRPCConnection(t *testing.T) { ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) defer cancel() - // test RemoveUser + // test removeUser if _, err = client.RemoveUser(ctx, user); err != nil { t.Fatalf("Failed to remove user: %v", err) } @@ -282,7 +282,7 @@ loop: defer cancel() // test GetNodeStats - nodeStats, err := client.GetNodeStats(ctx, &common.Empty{}) + nodeStats, err := client.GetSystemStats(ctx, &common.Empty{}) if err != nil { t.Fatalf("Failed to get node stats: %v", err) } diff --git a/controller/rpc/stats.go b/controller/rpc/stats.go index 3606194..3289e8e 100644 --- a/controller/rpc/stats.go +++ b/controller/rpc/stats.go @@ -26,6 +26,6 @@ func (s *Service) GetBackendStats(ctx context.Context, _ *common.Empty) (*common return s.controller.GetBackend().GetSysStats(ctx) } -func (s *Service) GetNodeStats(_ context.Context, _ *common.Empty) (*common.SystemStatsResponse, error) { +func (s *Service) GetSystemStats(_ context.Context, _ *common.Empty) (*common.SystemStatsResponse, error) { return s.controller.GetStats(), nil } diff --git a/controller/rpc/user.go b/controller/rpc/user.go index 5779ea7..846cc8e 100644 --- a/controller/rpc/user.go +++ b/controller/rpc/user.go @@ -2,6 +2,7 @@ package rpc import ( "context" + "github.com/m03ed/marzban-node-go/common" ) @@ -17,3 +18,11 @@ func (s *Service) RemoveUser(ctx context.Context, user *common.User) (*common.Em s.controller.GetBackend().RemoveUser(ctx, user.Email) return nil, nil } + +func (s *Service) SyncUsers(ctx context.Context, users *common.Users) (*common.Empty, error) { + if err := s.controller.GetBackend().SyncUsers(ctx, users.GetUsers()); err != nil { + return nil, err + } + + return nil, nil +} diff --git a/tools/file.go b/tools/file.go index 7bedf7c..e44f548 100644 --- a/tools/file.go +++ b/tools/file.go @@ -16,3 +16,18 @@ func FileExists(filename string) bool { _, err := os.Stat(filename) return !os.IsNotExist(err) } + +// StringToTempFile writes the given string to a temporary file. +func StringToTempFile(content string) (string, error) { + tmpFile, err := os.CreateTemp("", "node_temp_*.pem") + if err != nil { + return "", err + } + defer tmpFile.Close() + + if _, err = tmpFile.WriteString(content); err != nil { + return "", err + } + + return tmpFile.Name(), nil +} diff --git a/tools/tls.go b/tools/tls.go index c8873ce..fdaa426 100644 --- a/tools/tls.go +++ b/tools/tls.go @@ -33,3 +33,12 @@ func LoadTLSCredentials(cert, key, poolCert string, isClient bool) (*tls.Config, } return config, nil } + +func LoadCertPool(certFile string) *x509.CertPool { + certPool := x509.NewCertPool() + certData, err := os.ReadFile(certFile) + if err == nil { + certPool.AppendCertsFromPEM(certData) + } + return certPool +} From 4c82a803d35ce31cf54b41e1d7b4cc59947b7043 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 5 Jan 2025 15:41:43 +0330 Subject: [PATCH 15/38] fix: change 443 port in config --- backend/xray/config.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/backend/xray/config.json b/backend/xray/config.json index 7609704..4efb9a8 100644 --- a/backend/xray/config.json +++ b/backend/xray/config.json @@ -63,7 +63,7 @@ { "tag": "VLESS TCP NOTLS", "listen": "0.0.0.0", - "port": 443, + "port": 4435, "protocol": "vless", "settings": { "clients": [], @@ -86,7 +86,7 @@ { "tag": "VLESS TCP Header NoTLS", "listen": "0.0.0.0", - "port": 443, + "port": 4436, "protocol": "vless", "settings": { "clients": [], From 988b4dcec8d6198048aab7aed572b33cce4a3ec2 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Wed, 5 Feb 2025 12:58:18 +0330 Subject: [PATCH 16/38] feat: use x-protobuf instead of json --- backend/backend.go | 7 +- backend/xray/api/account.go | 20 +- backend/xray/api/stats.go | 95 +++---- backend/xray/config.go | 102 +++---- backend/xray/user.go | 94 +++---- backend/xray/xray.go | 12 + backend/xray/xray_test.go | 10 +- common/service.pb.go | 514 +++++++++++++++++++---------------- common/service.proto | 19 +- common/service_grpc.pb.go | 205 ++++++++------ controller/rest/base.go | 54 ++-- controller/rest/log.go | 19 +- controller/rest/rest_test.go | 46 +--- controller/rest/service.go | 14 +- controller/rest/stats.go | 131 +++++++-- controller/rest/user.go | 65 ++--- controller/rpc/middleware.go | 49 ++-- controller/rpc/rpc_test.go | 60 ++-- controller/rpc/stats.go | 16 +- controller/rpc/user.go | 28 +- 20 files changed, 865 insertions(+), 695 deletions(-) diff --git a/backend/backend.go b/backend/backend.go index 6e07cfe..33a964d 100644 --- a/backend/backend.go +++ b/backend/backend.go @@ -13,13 +13,14 @@ type Backend interface { Restart() error Shutdown() GenerateConfigFile() error - AddUser(context.Context, *common.User) error - UpdateUser(context.Context, *common.User) error - RemoveUser(context.Context, string) + SyncUser(context.Context, *common.User) error SyncUsers(context.Context, []*common.User) error GetSysStats(context.Context) (*common.BackendStatsResponse, error) GetUsersStats(context.Context, bool) (*common.StatResponse, error) + GetUserStats(context.Context, string, bool) (*common.StatResponse, error) GetStatOnline(context.Context, string) (*common.OnlineStatResponse, error) GetOutboundsStats(context.Context, bool) (*common.StatResponse, error) + GetOutboundStats(context.Context, string, bool) (*common.StatResponse, error) GetInboundsStats(context.Context, bool) (*common.StatResponse, error) + GetInboundStats(context.Context, string, bool) (*common.StatResponse, error) } diff --git a/backend/xray/api/account.go b/backend/xray/api/account.go index 1419ebb..07272c6 100644 --- a/backend/xray/api/account.go +++ b/backend/xray/api/account.go @@ -31,21 +31,21 @@ func (ba *BaseAccount) GetLevel() uint32 { return ba.Level } -type VMessAccount struct { +type VmessAccount struct { BaseAccount ID uuid.UUID `json:"id"` } -func (va *VMessAccount) Message() (*serial.TypedMessage, error) { +func (va *VmessAccount) Message() (*serial.TypedMessage, error) { return ToTypedMessage(&vmess.Account{Id: va.ID.String()}) } -func NewVMessAccount(user *common.User) (*VMessAccount, error) { +func NewVmessAccount(user *common.User) (*VmessAccount, error) { id, err := uuid.Parse(user.GetProxies().GetVmess().GetId()) if err != nil { return nil, err } - return &VMessAccount{ + return &VmessAccount{ BaseAccount: BaseAccount{ Email: user.GetEmail(), Level: 0, @@ -54,22 +54,22 @@ func NewVMessAccount(user *common.User) (*VMessAccount, error) { }, nil } -type VLESSAccount struct { +type VlessAccount struct { BaseAccount ID uuid.UUID `json:"id"` Flow string `json:"flow"` } -func (va *VLESSAccount) Message() (*serial.TypedMessage, error) { +func (va *VlessAccount) Message() (*serial.TypedMessage, error) { return ToTypedMessage(&vless.Account{Id: va.ID.String(), Flow: va.Flow}) } -func NewVlessAccount(user *common.User) (*VLESSAccount, error) { +func NewVlessAccount(user *common.User) (*VlessAccount, error) { id, err := uuid.Parse(user.GetProxies().GetVless().GetId()) if err != nil { return nil, err } - return &VLESSAccount{ + return &VlessAccount{ BaseAccount: BaseAccount{ Email: user.GetEmail(), Level: 0, @@ -177,8 +177,8 @@ func NewShadowsocksTcpAccount(user *common.User) *ShadowsocksTcpAccount { } type ProxySettings struct { - Vmess *VMessAccount - Vless *VLESSAccount + Vmess *VmessAccount + Vless *VlessAccount Trojan *TrojanAccount Shadowsocks *ShadowsocksTcpAccount Shadowsocks2022 *ShadowsocksAccount diff --git a/backend/xray/api/stats.go b/backend/xray/api/stats.go index e095423..0bcec76 100644 --- a/backend/xray/api/stats.go +++ b/backend/xray/api/stats.go @@ -12,29 +12,6 @@ import ( "github.com/m03ed/marzban-node-go/common" ) -type LinkType string - -const ( - Downlink LinkType = "downlink" - Uplink LinkType = "uplink" -) - -func (l LinkType) String() string { - return string(l) -} - -type UserStatsResponse struct { - Email string `json:"email"` - Uplink int64 `json:"uplink"` - Downlink int64 `json:"downlink"` -} - -type StatsResponse struct { - Tag string `json:"tag"` - Uplink int64 `json:"uplink"` - Downlink int64 `json:"downlink"` -} - func (x *XrayHandler) GetSysStats(ctx context.Context) (*common.BackendStatsResponse, error) { client := *x.StatsServiceClient resp, err := client.GetSysStats(ctx, &command.SysStatsRequest{}) @@ -159,83 +136,83 @@ func (x *XrayHandler) GetOutboundsStats(ctx context.Context, reset bool) (*commo return stats, nil } -func (x *XrayHandler) GetUserStats(ctx context.Context, email string, reset bool) (*UserStatsResponse, error) { +func (x *XrayHandler) GetUserStats(ctx context.Context, email string, reset bool) (*common.StatResponse, error) { resp, err := x.QueryStats(ctx, fmt.Sprintf("user>>>%s>>>", email), reset) if err != nil { return nil, err } - var stats UserStatsResponse - + stats := &common.StatResponse{} for _, stat := range resp.GetStat() { data := stat.GetName() value := stat.GetValue() - // Extract the type from the name (e.g., "traffic") parts := strings.Split(data, ">>>") - link := parts[len(parts)] + name := parts[1] + statType := parts[2] + link := parts[3] - if link == Downlink.String() { - stats.Downlink = value - } else if link == Uplink.String() { - stats.Uplink = value - } + stats.Stats = append(stats.Stats, &common.Stat{ + Name: name, + Type: statType, + Link: link, + Value: value, + }) } - stats.Email = email - return &stats, nil + return stats, nil } -func (x *XrayHandler) GetInboundStats(ctx context.Context, tag string, reset bool) (*StatsResponse, error) { +func (x *XrayHandler) GetInboundStats(ctx context.Context, tag string, reset bool) (*common.StatResponse, error) { resp, err := x.QueryStats(ctx, fmt.Sprintf("inbound>>>%s>>>", tag), reset) if err != nil { return nil, err } - var stats StatsResponse - + stats := &common.StatResponse{} for _, stat := range resp.GetStat() { data := stat.GetName() value := stat.GetValue() - // Extract the type from the name (e.g., "traffic") parts := strings.Split(data, ">>>") - link := parts[len(parts)] + name := parts[1] + statType := parts[2] + link := parts[3] - if link == Downlink.String() { - stats.Downlink = value - } else if link == Uplink.String() { - stats.Uplink = value - } + stats.Stats = append(stats.Stats, &common.Stat{ + Name: name, + Type: statType, + Link: link, + Value: value, + }) } - stats.Tag = tag - return &stats, nil + return stats, nil } -func (x *XrayHandler) GetOutboundStats(ctx context.Context, tag string, reset bool) (*StatsResponse, error) { +func (x *XrayHandler) GetOutboundStats(ctx context.Context, tag string, reset bool) (*common.StatResponse, error) { resp, err := x.QueryStats(ctx, fmt.Sprintf("outbound>>>%s>>>", tag), reset) if err != nil { return nil, err } - var stats StatsResponse - + stats := &common.StatResponse{} for _, stat := range resp.GetStat() { data := stat.GetName() value := stat.GetValue() - // Extract the type from the name (e.g., "traffic") parts := strings.Split(data, ">>>") - link := parts[len(parts)] + name := parts[1] + statType := parts[2] + link := parts[3] - if link == Downlink.String() { - stats.Downlink = value - } else if link == Uplink.String() { - stats.Uplink = value - } + stats.Stats = append(stats.Stats, &common.Stat{ + Name: name, + Type: statType, + Link: link, + Value: value, + }) } - stats.Tag = tag - return &stats, nil + return stats, nil } diff --git a/backend/xray/config.go b/backend/xray/config.go index 1ffeb15..04fc0e4 100644 --- a/backend/xray/config.go +++ b/backend/xray/config.go @@ -61,9 +61,12 @@ func (i *Inbound) syncUsers(users []*common.User) { switch i.Protocol { case Vmess: - clients := []*api.VMessAccount{} + var clients []*api.VmessAccount for _, user := range users { - account, err := api.NewVMessAccount(user) + if user.GetProxies().GetVmess() == nil { + continue + } + account, err := api.NewVmessAccount(user) if err != nil { log.Println("error for user", user.GetEmail(), ":", err) } @@ -74,21 +77,27 @@ func (i *Inbound) syncUsers(users []*common.User) { i.Settings["clients"] = clients case Vless: - clients := []*api.VLESSAccount{} + var clients []*api.VlessAccount for _, user := range users { + if user.GetProxies().GetVless() == nil { + continue + } account, err := api.NewVlessAccount(user) if err != nil { log.Println("error for user", user.GetEmail(), ":", err) } if newAccount, active := isActiveInbound(i, user.GetInbounds(), api.ProxySettings{Vless: account}); active { - clients = append(clients, newAccount.(*api.VLESSAccount)) + clients = append(clients, newAccount.(*api.VlessAccount)) } } i.Settings["clients"] = clients case Trojan: - clients := []*api.TrojanAccount{} + var clients []*api.TrojanAccount for _, user := range users { + if user.GetProxies().GetTrojan() == nil { + continue + } if slices.Contains(user.Inbounds, i.Tag) { clients = append(clients, api.NewTrojanAccount(user)) } @@ -98,8 +107,11 @@ func (i *Inbound) syncUsers(users []*common.User) { case Shadowsocks: method, methodOk := i.Settings["method"].(string) if methodOk && strings.HasPrefix("2022-blake3", method) { - clients := []*api.ShadowsocksAccount{} + var clients []*api.ShadowsocksAccount for _, user := range users { + if user.GetProxies().GetShadowsocks() == nil { + continue + } if slices.Contains(user.Inbounds, i.Tag) { clients = append(clients, api.NewShadowsocksAccount(user)) } @@ -109,6 +121,9 @@ func (i *Inbound) syncUsers(users []*common.User) { } else { clients := []*api.ShadowsocksTcpAccount{} for _, user := range users { + if user.GetProxies().GetShadowsocks() == nil { + continue + } if slices.Contains(user.Inbounds, i.Tag) { clients = append(clients, api.NewShadowsocksTcpAccount(user)) } @@ -118,62 +133,16 @@ func (i *Inbound) syncUsers(users []*common.User) { } } -func (i *Inbound) addUser(account api.Account) { - i.mu.Lock() - defer i.mu.Unlock() - - switch account.(type) { - case *api.VMessAccount: - clients, ok := i.Settings["clients"].([]*api.VMessAccount) - if !ok { - clients = []*api.VMessAccount{} - } - i.Settings["clients"] = append(clients, account.(*api.VMessAccount)) - - case *api.VLESSAccount: - clients, ok := i.Settings["clients"].([]*api.VLESSAccount) - if !ok { - clients = []*api.VLESSAccount{} - } - i.Settings["clients"] = append(clients, account.(*api.VLESSAccount)) - - case *api.TrojanAccount: - clients, ok := i.Settings["clients"].([]*api.TrojanAccount) - if !ok { - clients = []*api.TrojanAccount{} - } - i.Settings["clients"] = append(clients, account.(*api.TrojanAccount)) - - case *api.ShadowsocksTcpAccount: - clients, ok := i.Settings["clients"].([]*api.ShadowsocksTcpAccount) - if !ok { - clients = []*api.ShadowsocksTcpAccount{} - } - - i.Settings["clients"] = append(clients, account.(*api.ShadowsocksTcpAccount)) - - case *api.ShadowsocksAccount: - clients, ok := i.Settings["clients"].([]*api.ShadowsocksAccount) - if !ok { - clients = []*api.ShadowsocksAccount{} - } - - i.Settings["clients"] = append(clients, account.(*api.ShadowsocksAccount)) - default: - return - } -} - func (i *Inbound) updateUser(account api.Account) { i.mu.Lock() defer i.mu.Unlock() email := account.GetEmail() switch account.(type) { - case *api.VMessAccount: - clients, ok := i.Settings["clients"].([]*api.VMessAccount) + case *api.VmessAccount: + clients, ok := i.Settings["clients"].([]*api.VmessAccount) if !ok { - clients = []*api.VMessAccount{} + clients = []*api.VmessAccount{} } for x, client := range clients { @@ -183,12 +152,12 @@ func (i *Inbound) updateUser(account api.Account) { } } - i.Settings["clients"] = append(clients, account.(*api.VMessAccount)) + i.Settings["clients"] = append(clients, account.(*api.VmessAccount)) - case *api.VLESSAccount: - clients, ok := i.Settings["clients"].([]*api.VLESSAccount) + case *api.VlessAccount: + clients, ok := i.Settings["clients"].([]*api.VlessAccount) if !ok { - clients = []*api.VLESSAccount{} + clients = []*api.VlessAccount{} } for x, client := range clients { @@ -198,7 +167,7 @@ func (i *Inbound) updateUser(account api.Account) { } } - i.Settings["clients"] = append(clients, account.(*api.VLESSAccount)) + i.Settings["clients"] = append(clients, account.(*api.VlessAccount)) case *api.TrojanAccount: clients, ok := i.Settings["clients"].([]*api.TrojanAccount) @@ -256,9 +225,9 @@ func (i *Inbound) removeUser(email string) { switch Protocol(i.Protocol) { case Vmess: - clients, ok := i.Settings["clients"].([]*api.VMessAccount) + clients, ok := i.Settings["clients"].([]*api.VmessAccount) if !ok { - clients = []*api.VMessAccount{} + clients = []*api.VmessAccount{} } for x, client := range clients { @@ -270,9 +239,9 @@ func (i *Inbound) removeUser(email string) { i.Settings["clients"] = clients case Vless: - clients, ok := i.Settings["clients"].([]*api.VLESSAccount) + clients, ok := i.Settings["clients"].([]*api.VlessAccount) if !ok { - clients = []*api.VLESSAccount{} + clients = []*api.VlessAccount{} } for x, client := range clients { @@ -335,6 +304,11 @@ func (i *Inbound) removeUser(email string) { type Stats struct{} func (c *Config) ToJSON() (string, error) { + for _, i := range c.InboundConfigs { + i.mu.RLock() + defer i.mu.RUnlock() + } + b, err := json.Marshal(c) if err != nil { return "", err diff --git a/backend/xray/user.go b/backend/xray/user.go index ab143e5..c15295f 100644 --- a/backend/xray/user.go +++ b/backend/xray/user.go @@ -13,24 +13,30 @@ import ( func setupUserAccount(user *common.User) (api.ProxySettings, error) { settings := api.ProxySettings{} - - vmessAccount, err := api.NewVMessAccount(user) - if err != nil { - return settings, err + if user.GetProxies().GetVmess() != nil { + vmessAccount, err := api.NewVmessAccount(user) + if err != nil { + return settings, err + } + settings.Vmess = vmessAccount } - settings.Vmess = vmessAccount - vlessAccount, err := api.NewVlessAccount(user) - if err != nil { - return settings, err + if user.GetProxies().GetVless() != nil { + vlessAccount, err := api.NewVlessAccount(user) + if err != nil { + return settings, err + } + settings.Vless = vlessAccount } - settings.Vless = vlessAccount - - settings.Trojan = api.NewTrojanAccount(user) - settings.Shadowsocks = api.NewShadowsocksTcpAccount(user) + if user.GetProxies().GetTrojan() != nil { + settings.Trojan = api.NewTrojanAccount(user) + } - settings.Shadowsocks2022 = api.NewShadowsocksAccount(user) + if user.GetProxies().GetTrojan() != nil { + settings.Shadowsocks = api.NewShadowsocksTcpAccount(user) + settings.Shadowsocks2022 = api.NewShadowsocksAccount(user) + } return settings, nil } @@ -39,6 +45,10 @@ func isActiveInbound(inbound *Inbound, inbounds []string, settings api.ProxySett if slices.Contains(inbounds, inbound.Tag) { switch inbound.Protocol { case Vless: + if settings.Vless == nil { + return nil, false + } + account := *settings.Vless if settings.Vless.Flow != "" { networkType := inbound.StreamSettings["network"] @@ -81,54 +91,35 @@ func isActiveInbound(inbound *Inbound, inbounds []string, settings api.ProxySett return &account, true case Vmess: + if settings.Vmess == nil { + return nil, false + } return settings.Vmess, true case Trojan: + if settings.Trojan == nil { + return nil, false + } return settings.Trojan, true case Shadowsocks: method, methodOk := inbound.Settings["method"].(string) if methodOk && strings.HasPrefix("2022-blake3", method) { + if settings.Shadowsocks2022 == nil { + return nil, false + } return settings.Shadowsocks2022, true } + if settings.Shadowsocks == nil { + return nil, false + } return settings.Shadowsocks, true } } return nil, false } -func (x *Xray) AddUser(ctx context.Context, user *common.User) error { - proxySetting, err := setupUserAccount(user) - if err != nil { - return err - } - - handler := x.getHandler() - inbounds := x.getConfig().InboundConfigs - - var errMessage string - for _, inbound := range inbounds { - account, isActive := isActiveInbound(inbound, user.GetInbounds(), proxySetting) - if isActive { - inbound.addUser(account) - if err = handler.AddInboundUser(ctx, inbound.Tag, account); err != nil { - log.Println(err) - errMessage += "\n" + err.Error() - } - } - } - - if err = x.GenerateConfigFile(); err != nil { - log.Println(err) - } - - if errMessage != "" { - return errors.New("failed to add user:" + errMessage) - } - return nil -} - -func (x *Xray) UpdateUser(ctx context.Context, user *common.User) error { +func (x *Xray) SyncUser(ctx context.Context, user *common.User) error { proxySetting, err := setupUserAccount(user) if err != nil { return err @@ -164,19 +155,6 @@ func (x *Xray) UpdateUser(ctx context.Context, user *common.User) error { return nil } -func (x *Xray) RemoveUser(ctx context.Context, email string) { - handler := x.getHandler() - - for _, inbound := range x.getConfig().InboundConfigs { - inbound.removeUser(email) - _ = handler.RemoveInboundUser(ctx, inbound.Tag, email) - } - - if err := x.GenerateConfigFile(); err != nil { - log.Println(err) - } -} - func (x *Xray) SyncUsers(_ context.Context, _ []*common.User) error { return errors.New("not implemented method") } diff --git a/backend/xray/xray.go b/backend/xray/xray.go index 5eeac3d..4c9d3ee 100644 --- a/backend/xray/xray.go +++ b/backend/xray/xray.go @@ -114,6 +114,10 @@ func (x *Xray) GetUsersStats(ctx context.Context, reset bool) (*common.StatRespo return x.handler.GetUsersStats(ctx, reset) } +func (x *Xray) GetUserStats(ctx context.Context, email string, reset bool) (*common.StatResponse, error) { + return x.handler.GetUserStats(ctx, email, reset) +} + func (x *Xray) GetStatOnline(ctx context.Context, email string) (*common.OnlineStatResponse, error) { return x.handler.GetStatOnline(ctx, email) } @@ -122,10 +126,18 @@ func (x *Xray) GetOutboundsStats(ctx context.Context, reset bool) (*common.StatR return x.handler.GetOutboundsStats(ctx, reset) } +func (x *Xray) GetOutboundStats(ctx context.Context, tag string, reset bool) (*common.StatResponse, error) { + return x.handler.GetOutboundStats(ctx, tag, reset) +} + func (x *Xray) GetInboundsStats(ctx context.Context, reset bool) (*common.StatResponse, error) { return x.handler.GetInboundsStats(ctx, reset) } +func (x *Xray) GetInboundStats(ctx context.Context, tag string, reset bool) (*common.StatResponse, error) { + return x.handler.GetInboundStats(ctx, tag, reset) +} + func (x *Xray) GenerateConfigFile() error { x.mu.Lock() defer x.mu.Unlock() diff --git a/backend/xray/xray_test.go b/backend/xray/xray_test.go index f386071..b756729 100644 --- a/backend/xray/xray_test.go +++ b/backend/xray/xray_test.go @@ -113,17 +113,11 @@ func TestXrayBackend(t *testing.T) { log.Printf(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) } - if err = back.UpdateUser(ctx1, user); err != nil { + if err = back.SyncUser(ctx1, user2); err != nil { t.Fatal(err) } - log.Println("user added") - - if err = back.UpdateUser(ctx1, user2); err != nil { - t.Fatal(err) - } - - log.Println("user updated") + log.Println("user synced") ctx1, cancel = context.WithTimeout(context.Background(), time.Second*10) defer cancel() diff --git a/common/service.pb.go b/common/service.pb.go index 316fcca..c940d95 100644 --- a/common/service.pb.go +++ b/common/service.pb.go @@ -284,6 +284,51 @@ func (x *Log) GetDetail() string { return "" } +type LogList struct { + state protoimpl.MessageState + sizeCache protoimpl.SizeCache + unknownFields protoimpl.UnknownFields + + Logs []string `protobuf:"bytes,1,rep,name=logs,proto3" json:"logs,omitempty"` +} + +func (x *LogList) Reset() { + *x = LogList{} + mi := &file_common_service_proto_msgTypes[4] + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + ms.StoreMessageInfo(mi) +} + +func (x *LogList) String() string { + return protoimpl.X.MessageStringOf(x) +} + +func (*LogList) ProtoMessage() {} + +func (x *LogList) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[4] + if x != nil { + ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) + if ms.LoadMessageInfo() == nil { + ms.StoreMessageInfo(mi) + } + return ms + } + return mi.MessageOf(x) +} + +// Deprecated: Use LogList.ProtoReflect.Descriptor instead. +func (*LogList) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{4} +} + +func (x *LogList) GetLogs() []string { + if x != nil { + return x.Logs + } + return nil +} + // stats type Stat struct { state protoimpl.MessageState @@ -298,7 +343,7 @@ type Stat struct { func (x *Stat) Reset() { *x = Stat{} - mi := &file_common_service_proto_msgTypes[4] + mi := &file_common_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -310,7 +355,7 @@ func (x *Stat) String() string { func (*Stat) ProtoMessage() {} func (x *Stat) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[4] + mi := &file_common_service_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -323,7 +368,7 @@ func (x *Stat) ProtoReflect() protoreflect.Message { // Deprecated: Use Stat.ProtoReflect.Descriptor instead. func (*Stat) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{4} + return file_common_service_proto_rawDescGZIP(), []int{5} } func (x *Stat) GetName() string { @@ -364,7 +409,7 @@ type StatResponse struct { func (x *StatResponse) Reset() { *x = StatResponse{} - mi := &file_common_service_proto_msgTypes[5] + mi := &file_common_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -376,7 +421,7 @@ func (x *StatResponse) String() string { func (*StatResponse) ProtoMessage() {} func (x *StatResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[5] + mi := &file_common_service_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -389,7 +434,7 @@ func (x *StatResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StatResponse.ProtoReflect.Descriptor instead. func (*StatResponse) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{5} + return file_common_service_proto_rawDescGZIP(), []int{6} } func (x *StatResponse) GetStats() []*Stat { @@ -399,29 +444,29 @@ func (x *StatResponse) GetStats() []*Stat { return nil } -type OnlineStatRequest struct { +type StatRequest struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Email string `protobuf:"bytes,1,opt,name=email,proto3" json:"email,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` } -func (x *OnlineStatRequest) Reset() { - *x = OnlineStatRequest{} - mi := &file_common_service_proto_msgTypes[6] +func (x *StatRequest) Reset() { + *x = StatRequest{} + mi := &file_common_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } -func (x *OnlineStatRequest) String() string { +func (x *StatRequest) String() string { return protoimpl.X.MessageStringOf(x) } -func (*OnlineStatRequest) ProtoMessage() {} +func (*StatRequest) ProtoMessage() {} -func (x *OnlineStatRequest) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[6] +func (x *StatRequest) ProtoReflect() protoreflect.Message { + mi := &file_common_service_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -432,14 +477,14 @@ func (x *OnlineStatRequest) ProtoReflect() protoreflect.Message { return mi.MessageOf(x) } -// Deprecated: Use OnlineStatRequest.ProtoReflect.Descriptor instead. -func (*OnlineStatRequest) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{6} +// Deprecated: Use StatRequest.ProtoReflect.Descriptor instead. +func (*StatRequest) Descriptor() ([]byte, []int) { + return file_common_service_proto_rawDescGZIP(), []int{7} } -func (x *OnlineStatRequest) GetEmail() string { +func (x *StatRequest) GetName() string { if x != nil { - return x.Email + return x.Name } return "" } @@ -455,7 +500,7 @@ type OnlineStatResponse struct { func (x *OnlineStatResponse) Reset() { *x = OnlineStatResponse{} - mi := &file_common_service_proto_msgTypes[7] + mi := &file_common_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -467,7 +512,7 @@ func (x *OnlineStatResponse) String() string { func (*OnlineStatResponse) ProtoMessage() {} func (x *OnlineStatResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[7] + mi := &file_common_service_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -480,7 +525,7 @@ func (x *OnlineStatResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OnlineStatResponse.ProtoReflect.Descriptor instead. func (*OnlineStatResponse) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{7} + return file_common_service_proto_rawDescGZIP(), []int{8} } func (x *OnlineStatResponse) GetEmail() string { @@ -516,7 +561,7 @@ type BackendStatsResponse struct { func (x *BackendStatsResponse) Reset() { *x = BackendStatsResponse{} - mi := &file_common_service_proto_msgTypes[8] + mi := &file_common_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -528,7 +573,7 @@ func (x *BackendStatsResponse) String() string { func (*BackendStatsResponse) ProtoMessage() {} func (x *BackendStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[8] + mi := &file_common_service_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -541,7 +586,7 @@ func (x *BackendStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BackendStatsResponse.ProtoReflect.Descriptor instead. func (*BackendStatsResponse) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{8} + return file_common_service_proto_rawDescGZIP(), []int{9} } func (x *BackendStatsResponse) GetNumGoroutine() uint32 { @@ -629,7 +674,7 @@ type SystemStatsResponse struct { func (x *SystemStatsResponse) Reset() { *x = SystemStatsResponse{} - mi := &file_common_service_proto_msgTypes[9] + mi := &file_common_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -641,7 +686,7 @@ func (x *SystemStatsResponse) String() string { func (*SystemStatsResponse) ProtoMessage() {} func (x *SystemStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[9] + mi := &file_common_service_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -654,7 +699,7 @@ func (x *SystemStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemStatsResponse.ProtoReflect.Descriptor instead. func (*SystemStatsResponse) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{9} + return file_common_service_proto_rawDescGZIP(), []int{10} } func (x *SystemStatsResponse) GetMemTotal() uint64 { @@ -710,7 +755,7 @@ type Vmess struct { func (x *Vmess) Reset() { *x = Vmess{} - mi := &file_common_service_proto_msgTypes[10] + mi := &file_common_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -722,7 +767,7 @@ func (x *Vmess) String() string { func (*Vmess) ProtoMessage() {} func (x *Vmess) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[10] + mi := &file_common_service_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -735,7 +780,7 @@ func (x *Vmess) ProtoReflect() protoreflect.Message { // Deprecated: Use Vmess.ProtoReflect.Descriptor instead. func (*Vmess) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{10} + return file_common_service_proto_rawDescGZIP(), []int{11} } func (x *Vmess) GetId() string { @@ -756,7 +801,7 @@ type Vless struct { func (x *Vless) Reset() { *x = Vless{} - mi := &file_common_service_proto_msgTypes[11] + mi := &file_common_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -768,7 +813,7 @@ func (x *Vless) String() string { func (*Vless) ProtoMessage() {} func (x *Vless) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[11] + mi := &file_common_service_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -781,7 +826,7 @@ func (x *Vless) ProtoReflect() protoreflect.Message { // Deprecated: Use Vless.ProtoReflect.Descriptor instead. func (*Vless) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{11} + return file_common_service_proto_rawDescGZIP(), []int{12} } func (x *Vless) GetId() string { @@ -808,7 +853,7 @@ type Trojan struct { func (x *Trojan) Reset() { *x = Trojan{} - mi := &file_common_service_proto_msgTypes[12] + mi := &file_common_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -820,7 +865,7 @@ func (x *Trojan) String() string { func (*Trojan) ProtoMessage() {} func (x *Trojan) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[12] + mi := &file_common_service_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -833,7 +878,7 @@ func (x *Trojan) ProtoReflect() protoreflect.Message { // Deprecated: Use Trojan.ProtoReflect.Descriptor instead. func (*Trojan) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{12} + return file_common_service_proto_rawDescGZIP(), []int{13} } func (x *Trojan) GetPassword() string { @@ -854,7 +899,7 @@ type Shadowsocks struct { func (x *Shadowsocks) Reset() { *x = Shadowsocks{} - mi := &file_common_service_proto_msgTypes[13] + mi := &file_common_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -866,7 +911,7 @@ func (x *Shadowsocks) String() string { func (*Shadowsocks) ProtoMessage() {} func (x *Shadowsocks) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[13] + mi := &file_common_service_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -879,7 +924,7 @@ func (x *Shadowsocks) ProtoReflect() protoreflect.Message { // Deprecated: Use Shadowsocks.ProtoReflect.Descriptor instead. func (*Shadowsocks) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{13} + return file_common_service_proto_rawDescGZIP(), []int{14} } func (x *Shadowsocks) GetPassword() string { @@ -909,7 +954,7 @@ type Proxy struct { func (x *Proxy) Reset() { *x = Proxy{} - mi := &file_common_service_proto_msgTypes[14] + mi := &file_common_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -921,7 +966,7 @@ func (x *Proxy) String() string { func (*Proxy) ProtoMessage() {} func (x *Proxy) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[14] + mi := &file_common_service_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -934,7 +979,7 @@ func (x *Proxy) ProtoReflect() protoreflect.Message { // Deprecated: Use Proxy.ProtoReflect.Descriptor instead. func (*Proxy) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{14} + return file_common_service_proto_rawDescGZIP(), []int{15} } func (x *Proxy) GetVmess() *Vmess { @@ -977,7 +1022,7 @@ type User struct { func (x *User) Reset() { *x = User{} - mi := &file_common_service_proto_msgTypes[15] + mi := &file_common_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -989,7 +1034,7 @@ func (x *User) String() string { func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[15] + mi := &file_common_service_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1002,7 +1047,7 @@ func (x *User) ProtoReflect() protoreflect.Message { // Deprecated: Use User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{15} + return file_common_service_proto_rawDescGZIP(), []int{16} } func (x *User) GetEmail() string { @@ -1036,7 +1081,7 @@ type Users struct { func (x *Users) Reset() { *x = Users{} - mi := &file_common_service_proto_msgTypes[16] + mi := &file_common_service_proto_msgTypes[17] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1048,7 +1093,7 @@ func (x *Users) String() string { func (*Users) ProtoMessage() {} func (x *Users) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[16] + mi := &file_common_service_proto_msgTypes[17] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1061,7 +1106,7 @@ func (x *Users) ProtoReflect() protoreflect.Message { // Deprecated: Use Users.ProtoReflect.Descriptor instead. func (*Users) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{16} + return file_common_service_proto_rawDescGZIP(), []int{17} } func (x *Users) GetUsers() []*User { @@ -1096,142 +1141,150 @@ var file_common_service_proto_rawDesc = []byte{ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x1d, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x22, 0x58, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, - 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, - 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, - 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x33, 0x0a, - 0x0c, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, - 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, - 0x74, 0x73, 0x22, 0x29, 0x0a, 0x11, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, - 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x22, 0x40, 0x0a, - 0x12, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, - 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, - 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, - 0xac, 0x02, 0x0a, 0x14, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, - 0x67, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, - 0x0c, 0x6e, 0x75, 0x6d, 0x47, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x12, 0x15, 0x0a, - 0x06, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, - 0x75, 0x6d, 0x47, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x03, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x73, - 0x79, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, - 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, - 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, - 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x12, 0x21, 0x0a, - 0x0c, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6c, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, - 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, - 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x54, - 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, - 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfb, - 0x01, 0x0a, 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, - 0x74, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1b, - 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, - 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, - 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6f, - 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, - 0x70, 0x65, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6f, - 0x6d, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, - 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x62, - 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, - 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x42, 0x61, - 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x05, - 0x56, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x05, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, - 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, - 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, - 0x6f, 0x77, 0x22, 0x24, 0x0a, 0x06, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, - 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0b, 0x53, 0x68, 0x61, 0x64, - 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, - 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x05, - 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x18, 0x01, - 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, - 0x6d, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x76, - 0x6c, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x6c, 0x65, 0x73, - 0x73, 0x12, 0x27, 0x0a, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x6f, 0x6a, - 0x61, 0x6e, 0x52, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, - 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, - 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, - 0x6b, 0x73, 0x22, 0x62, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, + 0x61, 0x69, 0x6c, 0x22, 0x1d, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, + 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, + 0x67, 0x73, 0x22, 0x58, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, + 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, + 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, + 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x33, 0x0a, 0x0c, + 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x05, + 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, + 0x73, 0x22, 0x21, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, + 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x12, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, + 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x28, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, - 0x79, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, - 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, - 0x23, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, - 0x73, 0x65, 0x72, 0x73, 0x2a, 0x17, 0x0a, 0x0b, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x54, - 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x58, 0x52, 0x41, 0x59, 0x10, 0x00, 0x32, 0x9c, 0x06, - 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, - 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x0e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, - 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, - 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x47, - 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x4c, 0x6f, 0x67, 0x22, 0x00, 0x30, 0x01, 0x12, 0x40, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, - 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x47, 0x65, - 0x74, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, - 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x10, - 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, - 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0d, 0x47, 0x65, 0x74, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, + 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x14, 0x42, 0x61, 0x63, 0x6b, 0x65, + 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, + 0x23, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x47, 0x6f, 0x72, 0x6f, 0x75, + 0x74, 0x69, 0x6e, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x63, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x75, 0x6d, 0x47, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x61, + 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, + 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c, + 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x03, 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x18, + 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x12, 0x14, + 0x0a, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x66, + 0x72, 0x65, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x62, 0x6a, + 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6c, 0x69, 0x76, 0x65, + 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x61, 0x75, 0x73, 0x65, + 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x73, 0x12, 0x16, 0x0a, + 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, + 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, + 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, + 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, + 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, + 0x6d, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, + 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, + 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, + 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, + 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x6f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, + 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6f, 0x75, 0x74, + 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, + 0x65, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x05, 0x56, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x05, + 0x56, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x24, 0x0a, 0x06, 0x54, 0x72, 0x6f, + 0x6a, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, + 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, + 0x41, 0x0a, 0x0b, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1a, + 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, + 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, + 0x6f, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x24, 0x0a, 0x05, + 0x76, 0x6d, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6d, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x6d, 0x65, + 0x73, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6c, 0x65, 0x73, + 0x73, 0x52, 0x05, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x27, 0x0a, 0x06, 0x74, 0x72, 0x6f, 0x6a, + 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x52, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, + 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x0b, 0x73, 0x68, + 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x62, 0x0a, 0x04, 0x55, 0x73, 0x65, + 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, + 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, + 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, + 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x22, 0x2c, 0x0a, + 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, + 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2a, 0x17, 0x0a, 0x0b, 0x42, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x58, 0x52, + 0x41, 0x59, 0x10, 0x00, 0x32, 0x80, 0x07, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x1a, + 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, + 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x04, + 0x53, 0x74, 0x6f, 0x70, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x61, 0x73, + 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x0e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x22, 0x00, 0x30, 0x01, 0x12, + 0x40, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, + 0x79, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x4e, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x6e, - 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x12, 0x1a, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, - 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, - 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x2a, 0x0a, 0x07, 0x41, 0x64, 0x64, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, - 0x2d, 0x0a, 0x0a, 0x55, 0x70, 0x64, 0x61, 0x74, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x2d, - 0x0a, 0x0a, 0x52, 0x65, 0x6d, 0x6f, 0x76, 0x65, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x2d, 0x0a, - 0x09, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x18, 0x5a, 0x16, - 0x6d, 0x61, 0x72, 0x7a, 0x62, 0x61, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x6f, 0x2f, - 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x3d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, + 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, + 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, + 0x0a, 0x12, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x08, 0x53, 0x79, 0x6e, + 0x63, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x28, 0x01, 0x12, 0x2d, 0x0a, 0x09, 0x53, 0x79, 0x6e, 0x63, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x55, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x18, 0x5a, 0x16, 0x6d, 0x61, 0x72, 0x7a, 0x62, + 0x61, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, + 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, } var ( @@ -1247,37 +1300,38 @@ func file_common_service_proto_rawDescGZIP() []byte { } var file_common_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_common_service_proto_msgTypes = make([]protoimpl.MessageInfo, 17) +var file_common_service_proto_msgTypes = make([]protoimpl.MessageInfo, 18) var file_common_service_proto_goTypes = []any{ (BackendType)(0), // 0: service.BackendType (*Empty)(nil), // 1: service.Empty (*BaseInfoResponse)(nil), // 2: service.BaseInfoResponse (*Backend)(nil), // 3: service.Backend (*Log)(nil), // 4: service.Log - (*Stat)(nil), // 5: service.Stat - (*StatResponse)(nil), // 6: service.StatResponse - (*OnlineStatRequest)(nil), // 7: service.OnlineStatRequest - (*OnlineStatResponse)(nil), // 8: service.OnlineStatResponse - (*BackendStatsResponse)(nil), // 9: service.BackendStatsResponse - (*SystemStatsResponse)(nil), // 10: service.SystemStatsResponse - (*Vmess)(nil), // 11: service.Vmess - (*Vless)(nil), // 12: service.Vless - (*Trojan)(nil), // 13: service.Trojan - (*Shadowsocks)(nil), // 14: service.Shadowsocks - (*Proxy)(nil), // 15: service.Proxy - (*User)(nil), // 16: service.User - (*Users)(nil), // 17: service.Users + (*LogList)(nil), // 5: service.LogList + (*Stat)(nil), // 6: service.Stat + (*StatResponse)(nil), // 7: service.StatResponse + (*StatRequest)(nil), // 8: service.StatRequest + (*OnlineStatResponse)(nil), // 9: service.OnlineStatResponse + (*BackendStatsResponse)(nil), // 10: service.BackendStatsResponse + (*SystemStatsResponse)(nil), // 11: service.SystemStatsResponse + (*Vmess)(nil), // 12: service.Vmess + (*Vless)(nil), // 13: service.Vless + (*Trojan)(nil), // 14: service.Trojan + (*Shadowsocks)(nil), // 15: service.Shadowsocks + (*Proxy)(nil), // 16: service.Proxy + (*User)(nil), // 17: service.User + (*Users)(nil), // 18: service.Users } var file_common_service_proto_depIdxs = []int32{ 0, // 0: service.Backend.type:type_name -> service.BackendType - 16, // 1: service.Backend.users:type_name -> service.User - 5, // 2: service.StatResponse.stats:type_name -> service.Stat - 11, // 3: service.Proxy.vmess:type_name -> service.Vmess - 12, // 4: service.Proxy.vless:type_name -> service.Vless - 13, // 5: service.Proxy.trojan:type_name -> service.Trojan - 14, // 6: service.Proxy.shadowsocks:type_name -> service.Shadowsocks - 15, // 7: service.User.proxies:type_name -> service.Proxy - 16, // 8: service.Users.users:type_name -> service.User + 17, // 1: service.Backend.users:type_name -> service.User + 6, // 2: service.StatResponse.stats:type_name -> service.Stat + 12, // 3: service.Proxy.vmess:type_name -> service.Vmess + 13, // 4: service.Proxy.vless:type_name -> service.Vless + 14, // 5: service.Proxy.trojan:type_name -> service.Trojan + 15, // 6: service.Proxy.shadowsocks:type_name -> service.Shadowsocks + 16, // 7: service.User.proxies:type_name -> service.Proxy + 17, // 8: service.Users.users:type_name -> service.User 3, // 9: service.NodeService.Start:input_type -> service.Backend 1, // 10: service.NodeService.Stop:input_type -> service.Empty 1, // 11: service.NodeService.GetBaseInfo:input_type -> service.Empty @@ -1285,29 +1339,31 @@ var file_common_service_proto_depIdxs = []int32{ 1, // 13: service.NodeService.GetSystemStats:input_type -> service.Empty 1, // 14: service.NodeService.GetBackendStats:input_type -> service.Empty 1, // 15: service.NodeService.GetOutboundsStats:input_type -> service.Empty - 1, // 16: service.NodeService.GetInboundsStats:input_type -> service.Empty - 1, // 17: service.NodeService.GetUsersStats:input_type -> service.Empty - 7, // 18: service.NodeService.GetUserOnlineStat:input_type -> service.OnlineStatRequest - 16, // 19: service.NodeService.AddUser:input_type -> service.User - 16, // 20: service.NodeService.UpdateUser:input_type -> service.User - 16, // 21: service.NodeService.RemoveUser:input_type -> service.User - 17, // 22: service.NodeService.SyncUsers:input_type -> service.Users - 2, // 23: service.NodeService.Start:output_type -> service.BaseInfoResponse - 1, // 24: service.NodeService.Stop:output_type -> service.Empty - 2, // 25: service.NodeService.GetBaseInfo:output_type -> service.BaseInfoResponse - 4, // 26: service.NodeService.GetLogs:output_type -> service.Log - 10, // 27: service.NodeService.GetSystemStats:output_type -> service.SystemStatsResponse - 9, // 28: service.NodeService.GetBackendStats:output_type -> service.BackendStatsResponse - 6, // 29: service.NodeService.GetOutboundsStats:output_type -> service.StatResponse - 6, // 30: service.NodeService.GetInboundsStats:output_type -> service.StatResponse - 6, // 31: service.NodeService.GetUsersStats:output_type -> service.StatResponse - 8, // 32: service.NodeService.GetUserOnlineStat:output_type -> service.OnlineStatResponse - 1, // 33: service.NodeService.AddUser:output_type -> service.Empty - 1, // 34: service.NodeService.UpdateUser:output_type -> service.Empty - 1, // 35: service.NodeService.RemoveUser:output_type -> service.Empty - 1, // 36: service.NodeService.SyncUsers:output_type -> service.Empty - 23, // [23:37] is the sub-list for method output_type - 9, // [9:23] is the sub-list for method input_type + 8, // 16: service.NodeService.GetOutboundStats:input_type -> service.StatRequest + 1, // 17: service.NodeService.GetInboundsStats:input_type -> service.Empty + 8, // 18: service.NodeService.GetInboundStats:input_type -> service.StatRequest + 1, // 19: service.NodeService.GetUsersStats:input_type -> service.Empty + 8, // 20: service.NodeService.GetUserStats:input_type -> service.StatRequest + 8, // 21: service.NodeService.GetUserOnlineStats:input_type -> service.StatRequest + 17, // 22: service.NodeService.SyncUser:input_type -> service.User + 18, // 23: service.NodeService.SyncUsers:input_type -> service.Users + 2, // 24: service.NodeService.Start:output_type -> service.BaseInfoResponse + 1, // 25: service.NodeService.Stop:output_type -> service.Empty + 2, // 26: service.NodeService.GetBaseInfo:output_type -> service.BaseInfoResponse + 4, // 27: service.NodeService.GetLogs:output_type -> service.Log + 11, // 28: service.NodeService.GetSystemStats:output_type -> service.SystemStatsResponse + 10, // 29: service.NodeService.GetBackendStats:output_type -> service.BackendStatsResponse + 7, // 30: service.NodeService.GetOutboundsStats:output_type -> service.StatResponse + 7, // 31: service.NodeService.GetOutboundStats:output_type -> service.StatResponse + 7, // 32: service.NodeService.GetInboundsStats:output_type -> service.StatResponse + 7, // 33: service.NodeService.GetInboundStats:output_type -> service.StatResponse + 7, // 34: service.NodeService.GetUsersStats:output_type -> service.StatResponse + 7, // 35: service.NodeService.GetUserStats:output_type -> service.StatResponse + 9, // 36: service.NodeService.GetUserOnlineStats:output_type -> service.OnlineStatResponse + 1, // 37: service.NodeService.SyncUser:output_type -> service.Empty + 1, // 38: service.NodeService.SyncUsers:output_type -> service.Empty + 24, // [24:39] is the sub-list for method output_type + 9, // [9:24] is the sub-list for method input_type 9, // [9:9] is the sub-list for extension type_name 9, // [9:9] is the sub-list for extension extendee 0, // [0:9] is the sub-list for field type_name @@ -1324,7 +1380,7 @@ func file_common_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_service_proto_rawDesc, NumEnums: 1, - NumMessages: 17, + NumMessages: 18, NumExtensions: 0, NumServices: 1, }, diff --git a/common/service.proto b/common/service.proto index c0578ac..82d61e4 100644 --- a/common/service.proto +++ b/common/service.proto @@ -30,6 +30,10 @@ message Log { string detail = 1; } +message LogList { + repeated string logs = 1; +} + // stats message Stat { string name = 1; @@ -42,8 +46,8 @@ message StatResponse { repeated Stat stats = 1; } -message OnlineStatRequest { - string email = 1; +message StatRequest { + string name = 1; } message OnlineStatResponse { @@ -120,12 +124,13 @@ service NodeService { rpc GetSystemStats (Empty) returns (SystemStatsResponse) {} rpc GetBackendStats (Empty) returns (BackendStatsResponse) {} rpc GetOutboundsStats (Empty) returns (StatResponse) {} + rpc GetOutboundStats (StatRequest) returns (StatResponse) {} rpc GetInboundsStats (Empty) returns (StatResponse) {} + rpc GetInboundStats (StatRequest) returns (StatResponse) {} rpc GetUsersStats (Empty) returns (StatResponse) {} - rpc GetUserOnlineStat (OnlineStatRequest) returns (OnlineStatResponse) {} - - rpc AddUser (User) returns (Empty) {} - rpc UpdateUser (User) returns (Empty) {} - rpc RemoveUser (User) returns (Empty) {} + rpc GetUserStats (StatRequest) returns (StatResponse) {} + rpc GetUserOnlineStats (StatRequest) returns (OnlineStatResponse) {} + + rpc SyncUser (stream User) returns (Empty) {} rpc SyncUsers (Users) returns (Empty) {} } diff --git a/common/service_grpc.pb.go b/common/service_grpc.pb.go index 7c6d047..3880652 100644 --- a/common/service_grpc.pb.go +++ b/common/service_grpc.pb.go @@ -19,20 +19,21 @@ import ( const _ = grpc.SupportPackageIsVersion9 const ( - NodeService_Start_FullMethodName = "/service.NodeService/Start" - NodeService_Stop_FullMethodName = "/service.NodeService/Stop" - NodeService_GetBaseInfo_FullMethodName = "/service.NodeService/GetBaseInfo" - NodeService_GetLogs_FullMethodName = "/service.NodeService/GetLogs" - NodeService_GetSystemStats_FullMethodName = "/service.NodeService/GetSystemStats" - NodeService_GetBackendStats_FullMethodName = "/service.NodeService/GetBackendStats" - NodeService_GetOutboundsStats_FullMethodName = "/service.NodeService/GetOutboundsStats" - NodeService_GetInboundsStats_FullMethodName = "/service.NodeService/GetInboundsStats" - NodeService_GetUsersStats_FullMethodName = "/service.NodeService/GetUsersStats" - NodeService_GetUserOnlineStat_FullMethodName = "/service.NodeService/GetUserOnlineStat" - NodeService_AddUser_FullMethodName = "/service.NodeService/AddUser" - NodeService_UpdateUser_FullMethodName = "/service.NodeService/UpdateUser" - NodeService_RemoveUser_FullMethodName = "/service.NodeService/RemoveUser" - NodeService_SyncUsers_FullMethodName = "/service.NodeService/SyncUsers" + NodeService_Start_FullMethodName = "/service.NodeService/Start" + NodeService_Stop_FullMethodName = "/service.NodeService/Stop" + NodeService_GetBaseInfo_FullMethodName = "/service.NodeService/GetBaseInfo" + NodeService_GetLogs_FullMethodName = "/service.NodeService/GetLogs" + NodeService_GetSystemStats_FullMethodName = "/service.NodeService/GetSystemStats" + NodeService_GetBackendStats_FullMethodName = "/service.NodeService/GetBackendStats" + NodeService_GetOutboundsStats_FullMethodName = "/service.NodeService/GetOutboundsStats" + NodeService_GetOutboundStats_FullMethodName = "/service.NodeService/GetOutboundStats" + NodeService_GetInboundsStats_FullMethodName = "/service.NodeService/GetInboundsStats" + NodeService_GetInboundStats_FullMethodName = "/service.NodeService/GetInboundStats" + NodeService_GetUsersStats_FullMethodName = "/service.NodeService/GetUsersStats" + NodeService_GetUserStats_FullMethodName = "/service.NodeService/GetUserStats" + NodeService_GetUserOnlineStats_FullMethodName = "/service.NodeService/GetUserOnlineStats" + NodeService_SyncUser_FullMethodName = "/service.NodeService/SyncUser" + NodeService_SyncUsers_FullMethodName = "/service.NodeService/SyncUsers" ) // NodeServiceClient is the client API for NodeService service. @@ -48,12 +49,13 @@ type NodeServiceClient interface { GetSystemStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SystemStatsResponse, error) GetBackendStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*BackendStatsResponse, error) GetOutboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) + GetOutboundStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) GetInboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) + GetInboundStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) GetUsersStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) - GetUserOnlineStat(ctx context.Context, in *OnlineStatRequest, opts ...grpc.CallOption) (*OnlineStatResponse, error) - AddUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) - UpdateUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) - RemoveUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) + GetUserStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) + GetUserOnlineStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*OnlineStatResponse, error) + SyncUser(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[User, Empty], error) SyncUsers(ctx context.Context, in *Users, opts ...grpc.CallOption) (*Empty, error) } @@ -144,6 +146,16 @@ func (c *nodeServiceClient) GetOutboundsStats(ctx context.Context, in *Empty, op return out, nil } +func (c *nodeServiceClient) GetOutboundStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) { + cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) + out := new(StatResponse) + err := c.cc.Invoke(ctx, NodeService_GetOutboundStats_FullMethodName, in, out, cOpts...) + if err != nil { + return nil, err + } + return out, nil +} + func (c *nodeServiceClient) GetInboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StatResponse) @@ -154,56 +166,59 @@ func (c *nodeServiceClient) GetInboundsStats(ctx context.Context, in *Empty, opt return out, nil } -func (c *nodeServiceClient) GetUsersStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) { +func (c *nodeServiceClient) GetInboundStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StatResponse) - err := c.cc.Invoke(ctx, NodeService_GetUsersStats_FullMethodName, in, out, cOpts...) + err := c.cc.Invoke(ctx, NodeService_GetInboundStats_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *nodeServiceClient) GetUserOnlineStat(ctx context.Context, in *OnlineStatRequest, opts ...grpc.CallOption) (*OnlineStatResponse, error) { +func (c *nodeServiceClient) GetUsersStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(OnlineStatResponse) - err := c.cc.Invoke(ctx, NodeService_GetUserOnlineStat_FullMethodName, in, out, cOpts...) + out := new(StatResponse) + err := c.cc.Invoke(ctx, NodeService_GetUsersStats_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *nodeServiceClient) AddUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) { +func (c *nodeServiceClient) GetUserStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(Empty) - err := c.cc.Invoke(ctx, NodeService_AddUser_FullMethodName, in, out, cOpts...) + out := new(StatResponse) + err := c.cc.Invoke(ctx, NodeService_GetUserStats_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *nodeServiceClient) UpdateUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) { +func (c *nodeServiceClient) GetUserOnlineStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*OnlineStatResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(Empty) - err := c.cc.Invoke(ctx, NodeService_UpdateUser_FullMethodName, in, out, cOpts...) + out := new(OnlineStatResponse) + err := c.cc.Invoke(ctx, NodeService_GetUserOnlineStats_FullMethodName, in, out, cOpts...) if err != nil { return nil, err } return out, nil } -func (c *nodeServiceClient) RemoveUser(ctx context.Context, in *User, opts ...grpc.CallOption) (*Empty, error) { +func (c *nodeServiceClient) SyncUser(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[User, Empty], error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) - out := new(Empty) - err := c.cc.Invoke(ctx, NodeService_RemoveUser_FullMethodName, in, out, cOpts...) + stream, err := c.cc.NewStream(ctx, &NodeService_ServiceDesc.Streams[1], NodeService_SyncUser_FullMethodName, cOpts...) if err != nil { return nil, err } - return out, nil + x := &grpc.GenericClientStream[User, Empty]{ClientStream: stream} + return x, nil } +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type NodeService_SyncUserClient = grpc.ClientStreamingClient[User, Empty] + func (c *nodeServiceClient) SyncUsers(ctx context.Context, in *Users, opts ...grpc.CallOption) (*Empty, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(Empty) @@ -227,12 +242,13 @@ type NodeServiceServer interface { GetSystemStats(context.Context, *Empty) (*SystemStatsResponse, error) GetBackendStats(context.Context, *Empty) (*BackendStatsResponse, error) GetOutboundsStats(context.Context, *Empty) (*StatResponse, error) + GetOutboundStats(context.Context, *StatRequest) (*StatResponse, error) GetInboundsStats(context.Context, *Empty) (*StatResponse, error) + GetInboundStats(context.Context, *StatRequest) (*StatResponse, error) GetUsersStats(context.Context, *Empty) (*StatResponse, error) - GetUserOnlineStat(context.Context, *OnlineStatRequest) (*OnlineStatResponse, error) - AddUser(context.Context, *User) (*Empty, error) - UpdateUser(context.Context, *User) (*Empty, error) - RemoveUser(context.Context, *User) (*Empty, error) + GetUserStats(context.Context, *StatRequest) (*StatResponse, error) + GetUserOnlineStats(context.Context, *StatRequest) (*OnlineStatResponse, error) + SyncUser(grpc.ClientStreamingServer[User, Empty]) error SyncUsers(context.Context, *Users) (*Empty, error) mustEmbedUnimplementedNodeServiceServer() } @@ -265,23 +281,26 @@ func (UnimplementedNodeServiceServer) GetBackendStats(context.Context, *Empty) ( func (UnimplementedNodeServiceServer) GetOutboundsStats(context.Context, *Empty) (*StatResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetOutboundsStats not implemented") } +func (UnimplementedNodeServiceServer) GetOutboundStats(context.Context, *StatRequest) (*StatResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetOutboundStats not implemented") +} func (UnimplementedNodeServiceServer) GetInboundsStats(context.Context, *Empty) (*StatResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetInboundsStats not implemented") } +func (UnimplementedNodeServiceServer) GetInboundStats(context.Context, *StatRequest) (*StatResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetInboundStats not implemented") +} func (UnimplementedNodeServiceServer) GetUsersStats(context.Context, *Empty) (*StatResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetUsersStats not implemented") } -func (UnimplementedNodeServiceServer) GetUserOnlineStat(context.Context, *OnlineStatRequest) (*OnlineStatResponse, error) { - return nil, status.Errorf(codes.Unimplemented, "method GetUserOnlineStat not implemented") -} -func (UnimplementedNodeServiceServer) AddUser(context.Context, *User) (*Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method AddUser not implemented") +func (UnimplementedNodeServiceServer) GetUserStats(context.Context, *StatRequest) (*StatResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUserStats not implemented") } -func (UnimplementedNodeServiceServer) UpdateUser(context.Context, *User) (*Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method UpdateUser not implemented") +func (UnimplementedNodeServiceServer) GetUserOnlineStats(context.Context, *StatRequest) (*OnlineStatResponse, error) { + return nil, status.Errorf(codes.Unimplemented, "method GetUserOnlineStats not implemented") } -func (UnimplementedNodeServiceServer) RemoveUser(context.Context, *User) (*Empty, error) { - return nil, status.Errorf(codes.Unimplemented, "method RemoveUser not implemented") +func (UnimplementedNodeServiceServer) SyncUser(grpc.ClientStreamingServer[User, Empty]) error { + return status.Errorf(codes.Unimplemented, "method SyncUser not implemented") } func (UnimplementedNodeServiceServer) SyncUsers(context.Context, *Users) (*Empty, error) { return nil, status.Errorf(codes.Unimplemented, "method SyncUsers not implemented") @@ -426,114 +445,121 @@ func _NodeService_GetOutboundsStats_Handler(srv interface{}, ctx context.Context return interceptor(ctx, in, info, handler) } -func _NodeService_GetInboundsStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) +func _NodeService_GetOutboundStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(NodeServiceServer).GetInboundsStats(ctx, in) + return srv.(NodeServiceServer).GetOutboundStats(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: NodeService_GetInboundsStats_FullMethodName, + FullMethod: NodeService_GetOutboundStats_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).GetInboundsStats(ctx, req.(*Empty)) + return srv.(NodeServiceServer).GetOutboundStats(ctx, req.(*StatRequest)) } return interceptor(ctx, in, info, handler) } -func _NodeService_GetUsersStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { +func _NodeService_GetInboundsStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Empty) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(NodeServiceServer).GetUsersStats(ctx, in) + return srv.(NodeServiceServer).GetInboundsStats(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: NodeService_GetUsersStats_FullMethodName, + FullMethod: NodeService_GetInboundsStats_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).GetUsersStats(ctx, req.(*Empty)) + return srv.(NodeServiceServer).GetInboundsStats(ctx, req.(*Empty)) } return interceptor(ctx, in, info, handler) } -func _NodeService_GetUserOnlineStat_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(OnlineStatRequest) +func _NodeService_GetInboundStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(NodeServiceServer).GetUserOnlineStat(ctx, in) + return srv.(NodeServiceServer).GetInboundStats(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: NodeService_GetUserOnlineStat_FullMethodName, + FullMethod: NodeService_GetInboundStats_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).GetUserOnlineStat(ctx, req.(*OnlineStatRequest)) + return srv.(NodeServiceServer).GetInboundStats(ctx, req.(*StatRequest)) } return interceptor(ctx, in, info, handler) } -func _NodeService_AddUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(User) +func _NodeService_GetUsersStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(Empty) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(NodeServiceServer).AddUser(ctx, in) + return srv.(NodeServiceServer).GetUsersStats(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: NodeService_AddUser_FullMethodName, + FullMethod: NodeService_GetUsersStats_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).AddUser(ctx, req.(*User)) + return srv.(NodeServiceServer).GetUsersStats(ctx, req.(*Empty)) } return interceptor(ctx, in, info, handler) } -func _NodeService_UpdateUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(User) +func _NodeService_GetUserStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(NodeServiceServer).UpdateUser(ctx, in) + return srv.(NodeServiceServer).GetUserStats(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: NodeService_UpdateUser_FullMethodName, + FullMethod: NodeService_GetUserStats_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).UpdateUser(ctx, req.(*User)) + return srv.(NodeServiceServer).GetUserStats(ctx, req.(*StatRequest)) } return interceptor(ctx, in, info, handler) } -func _NodeService_RemoveUser_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(User) +func _NodeService_GetUserOnlineStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { + in := new(StatRequest) if err := dec(in); err != nil { return nil, err } if interceptor == nil { - return srv.(NodeServiceServer).RemoveUser(ctx, in) + return srv.(NodeServiceServer).GetUserOnlineStats(ctx, in) } info := &grpc.UnaryServerInfo{ Server: srv, - FullMethod: NodeService_RemoveUser_FullMethodName, + FullMethod: NodeService_GetUserOnlineStats_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).RemoveUser(ctx, req.(*User)) + return srv.(NodeServiceServer).GetUserOnlineStats(ctx, req.(*StatRequest)) } return interceptor(ctx, in, info, handler) } +func _NodeService_SyncUser_Handler(srv interface{}, stream grpc.ServerStream) error { + return srv.(NodeServiceServer).SyncUser(&grpc.GenericServerStream[User, Empty]{ServerStream: stream}) +} + +// This type alias is provided for backwards compatibility with existing code that references the prior non-generic stream type by name. +type NodeService_SyncUserServer = grpc.ClientStreamingServer[User, Empty] + func _NodeService_SyncUsers_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { in := new(Users) if err := dec(in); err != nil { @@ -584,28 +610,28 @@ var NodeService_ServiceDesc = grpc.ServiceDesc{ Handler: _NodeService_GetOutboundsStats_Handler, }, { - MethodName: "GetInboundsStats", - Handler: _NodeService_GetInboundsStats_Handler, + MethodName: "GetOutboundStats", + Handler: _NodeService_GetOutboundStats_Handler, }, { - MethodName: "GetUsersStats", - Handler: _NodeService_GetUsersStats_Handler, + MethodName: "GetInboundsStats", + Handler: _NodeService_GetInboundsStats_Handler, }, { - MethodName: "GetUserOnlineStat", - Handler: _NodeService_GetUserOnlineStat_Handler, + MethodName: "GetInboundStats", + Handler: _NodeService_GetInboundStats_Handler, }, { - MethodName: "AddUser", - Handler: _NodeService_AddUser_Handler, + MethodName: "GetUsersStats", + Handler: _NodeService_GetUsersStats_Handler, }, { - MethodName: "UpdateUser", - Handler: _NodeService_UpdateUser_Handler, + MethodName: "GetUserStats", + Handler: _NodeService_GetUserStats_Handler, }, { - MethodName: "RemoveUser", - Handler: _NodeService_RemoveUser_Handler, + MethodName: "GetUserOnlineStats", + Handler: _NodeService_GetUserOnlineStats_Handler, }, { MethodName: "SyncUsers", @@ -618,6 +644,11 @@ var NodeService_ServiceDesc = grpc.ServiceDesc{ Handler: _NodeService_GetLogs_Handler, ServerStreams: true, }, + { + StreamName: "SyncUser", + Handler: _NodeService_SyncUser_Handler, + ClientStreams: true, + }, }, Metadata: "common/service.proto", } diff --git a/controller/rest/base.go b/controller/rest/base.go index 9994b22..e5dc5bb 100644 --- a/controller/rest/base.go +++ b/controller/rest/base.go @@ -2,25 +2,27 @@ package rest import ( "context" - "encoding/json" "errors" + "io" "log" "net" "net/http" + "google.golang.org/protobuf/proto" + "github.com/m03ed/marzban-node-go/backend" "github.com/m03ed/marzban-node-go/backend/xray" "github.com/m03ed/marzban-node-go/common" ) func (s *Service) Base(w http.ResponseWriter, _ *http.Request) { - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(s.controller.BaseInfoResponse(false, "")) -} + response, _ := proto.Marshal(s.controller.BaseInfoResponse(false, "")) -func (s *Service) Ping(w http.ResponseWriter, _ *http.Request) { - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(map[string]interface{}{}) + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err := w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } } func (s *Service) Start(w http.ResponseWriter, r *http.Request) { @@ -50,38 +52,54 @@ func (s *Service) Start(w http.ResponseWriter, r *http.Request) { return } - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(s.controller.BaseInfoResponse(true, "")) + response, _ := proto.Marshal(s.controller.BaseInfoResponse(true, "")) + + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } } func (s *Service) Stop(w http.ResponseWriter, _ *http.Request) { log.Println(s.GetIP(), " disconnected, Session ID = ", s.controller.GetSessionID()) s.disconnect() - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(map[string]interface{}{}) + response, _ := proto.Marshal(&common.Empty{}) + + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err := w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } } func (s *Service) detectBackend(r *http.Request) (context.Context, common.BackendType, error) { - var body common.Backend + var data common.Backend var ctx context.Context + body, err := io.ReadAll(r.Body) + if err != nil { + return nil, 0, err + } + defer r.Body.Close() + // Decode into a map - if err := json.NewDecoder(r.Body).Decode(&body); err != nil { + if err = proto.Unmarshal(body, &data); err != nil { return nil, 0, err } - if body.Type == common.BackendType_XRAY { - config, err := xray.NewXRayConfig(body.Config) + if data.Type == common.BackendType_XRAY { + config, err := xray.NewXRayConfig(data.Config) if err != nil { return nil, 0, err } ctx = context.WithValue(r.Context(), backend.ConfigKey{}, config) } else { - return ctx, body.Type, errors.New("invalid backend type") + return ctx, data.Type, errors.New("invalid backend type") } - ctx = context.WithValue(ctx, backend.UsersKey{}, body.GetUsers()) + ctx = context.WithValue(ctx, backend.UsersKey{}, data.GetUsers()) - return ctx, body.Type, nil + return ctx, data.Type, nil } diff --git a/controller/rest/log.go b/controller/rest/log.go index 2e751c8..ba9cb13 100644 --- a/controller/rest/log.go +++ b/controller/rest/log.go @@ -1,23 +1,26 @@ package rest import ( - "encoding/json" "net/http" "time" + "google.golang.org/protobuf/proto" + + "github.com/m03ed/marzban-node-go/common" "github.com/m03ed/marzban-node-go/config" ) -type logResponse struct { - Logs []string `json:"logs,omitempty"` -} - func sendLogs(w http.ResponseWriter, logs []string, status int) { - w.Header().Set("Content-Type", "application/json") - w.WriteHeader(status) - _ = json.NewEncoder(w).Encode(logResponse{ + response, _ := proto.Marshal(&common.LogList{ Logs: logs, }) + + w.Header().Set("Content-Type", "application/x-protobuf") + w.WriteHeader(status) + if _, err := w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } } func (s *Service) GetLogs(w http.ResponseWriter, r *http.Request) { diff --git a/controller/rest/rest_test.go b/controller/rest/rest_test.go index 6fa2539..299c19b 100644 --- a/controller/rest/rest_test.go +++ b/controller/rest/rest_test.go @@ -4,9 +4,7 @@ import ( "bytes" "context" "crypto/tls" - "encoding/json" "fmt" - nodeLogger "github.com/m03ed/marzban-node-go/logger" "io" "log" "net/http" @@ -15,9 +13,11 @@ import ( "time" "github.com/google/uuid" + "google.golang.org/protobuf/proto" "github.com/m03ed/marzban-node-go/common" "github.com/m03ed/marzban-node-go/config" + nodeLogger "github.com/m03ed/marzban-node-go/logger" "github.com/m03ed/marzban-node-go/tools" ) @@ -145,7 +145,7 @@ func TestRESTConnection(t *testing.T) { Users: []*common.User{user, user2}, } - jsonBody, _ := json.Marshal(backendStartReq) + jsonBody, _ := proto.Marshal(backendStartReq) url := fmt.Sprintf("https://%s", addr) @@ -157,7 +157,7 @@ func TestRESTConnection(t *testing.T) { var baseInfoResp common.BaseInfoResponse body, _ := io.ReadAll(resp.Body) - err = json.Unmarshal(body, &baseInfoResp) + err = proto.Unmarshal(body, &baseInfoResp) if err != nil { t.Fatalf("Failed to parse start response: %v", err) } @@ -196,7 +196,7 @@ func TestRESTConnection(t *testing.T) { var outboundsStats common.StatResponse outboundsStatsBody, _ := io.ReadAll(outboundsStatsResp.Body) - err = json.Unmarshal(outboundsStatsBody, &outboundsStats) + err = proto.Unmarshal(outboundsStatsBody, &outboundsStats) if err != nil { t.Fatalf("Failed to parse outbounds stats: %v", err) } @@ -216,7 +216,7 @@ func TestRESTConnection(t *testing.T) { var inboundsStats common.StatResponse inboundsStatsBody, _ := io.ReadAll(inboundsStatsResp.Body) - err = json.Unmarshal(inboundsStatsBody, &inboundsStats) + err = proto.Unmarshal(inboundsStatsBody, &inboundsStats) if err != nil { t.Fatalf("Failed to parse inbounds stats: %v", err) } @@ -236,7 +236,7 @@ func TestRESTConnection(t *testing.T) { var usersStats common.StatResponse usersStatsBody, _ := io.ReadAll(usersStatsResp.Body) - err = json.Unmarshal(usersStatsBody, &usersStats) + err = proto.Unmarshal(usersStatsBody, &usersStats) if err != nil { t.Fatalf("Failed to parse Users stats: %v", err) } @@ -256,7 +256,7 @@ func TestRESTConnection(t *testing.T) { var backendStats common.BackendStatsResponse backendStatsBody, _ := io.ReadAll(backendStatsResp.Body) - err = json.Unmarshal(backendStatsBody, &backendStats) + err = proto.Unmarshal(backendStatsBody, &backendStats) if err != nil { t.Fatalf("Failed to parse backend stats: %v", err) } @@ -266,34 +266,16 @@ func TestRESTConnection(t *testing.T) { stat.Name, stat.Value, stat.Type, stat.Link) } - jsonBody, _ = json.Marshal(user) + jsonBody, _ = proto.Marshal(user) // Try To Add User - addUserReq, _ := createAuthenticatedRequest("POST", "/user/add", bytes.NewBuffer(jsonBody)) + addUserReq, _ := createAuthenticatedRequest("PUT", "/user/sync", bytes.NewBuffer(jsonBody)) addUserResp, err := client.Do(addUserReq) if err != nil { t.Fatalf("Add user request failed: %v", err) } defer addUserResp.Body.Close() - jsonBody, _ = json.Marshal(user2) - - // Try To Update User - updateUserReq, _ := createAuthenticatedRequest("PUT", "/user/update", bytes.NewBuffer(jsonBody)) - updateUserResp, err := client.Do(updateUserReq) - if err != nil { - t.Fatalf("Update user request failed: %v", err) - } - defer updateUserResp.Body.Close() - - // Try To remove User - removeUserReq, _ := createAuthenticatedRequest("POST", "/user/remove", bytes.NewBuffer(jsonBody)) - removeUserResp, err := client.Do(removeUserReq) - if err != nil { - t.Fatalf("Remove user request failed: %v", err) - } - defer removeUserResp.Body.Close() - logsReq, _ := createAuthenticatedRequest("GET", "/logs", nil) logsResp, err := client.Do(logsReq) if err != nil { @@ -302,13 +284,13 @@ func TestRESTConnection(t *testing.T) { defer logsResp.Body.Close() logsBody, _ := io.ReadAll(logsResp.Body) - var logs logResponse - err = json.Unmarshal(logsBody, &logs) + var logs common.LogList + err = proto.Unmarshal(logsBody, &logs) if err != nil { t.Fatalf("Failed to parse logs: %v", err) } - for _, newLog := range logs.Logs { + for _, newLog := range logs.GetLogs() { fmt.Println("Log detail:", newLog) } @@ -324,7 +306,7 @@ func TestRESTConnection(t *testing.T) { var systemStats common.SystemStatsResponse nodeStatsBody, _ := io.ReadAll(nodeStatsResp.Body) - err = json.Unmarshal(nodeStatsBody, &systemStats) + err = proto.Unmarshal(nodeStatsBody, &systemStats) if err != nil { t.Fatalf("Failed to parse node stats: %v", err) } diff --git a/controller/rest/service.go b/controller/rest/service.go index 2f3e528..dea22fa 100644 --- a/controller/rest/service.go +++ b/controller/rest/service.go @@ -46,18 +46,16 @@ func (s *Service) setRouter() { // stats api private.Route("/stats", func(statsGroup chi.Router) { statsGroup.Get("/inbounds", s.GetInboundsStats) + statsGroup.Get("/inbound/{tag}", s.GetInboundStats) statsGroup.Get("/outbounds", s.GetOutboundsStats) - statsGroup.Get("/user/{email}", s.GetUserOnlineStat) + statsGroup.Get("/outbound/{tag}", s.GetOutboundStats) statsGroup.Get("/users", s.GetUsersStats) + statsGroup.Get("/user/{email}/online", s.GetUserOnlineStat) + statsGroup.Get("/user/{email}", s.GetUserStats) statsGroup.Get("/backend", s.GetBackendStats) }) - - // users api - private.Route("/user", func(userGroup chi.Router) { - userGroup.Post("/add", s.AddUser) - userGroup.Put("/update", s.UpdateUser) - userGroup.Delete("/remove", s.RemoveUser) - }) + private.Put("/user/sync", s.SyncUser) + private.Put("/users/sync", s.SyncUsers) }) }) diff --git a/controller/rest/stats.go b/controller/rest/stats.go index 275973f..47a07cb 100644 --- a/controller/rest/stats.go +++ b/controller/rest/stats.go @@ -1,40 +1,118 @@ package rest import ( - "encoding/json" - "github.com/go-chi/chi/v5" "net/http" + + "github.com/go-chi/chi/v5" + "google.golang.org/protobuf/proto" ) func (s *Service) GetOutboundsStats(w http.ResponseWriter, r *http.Request) { - response, err := s.controller.GetBackend().GetOutboundsStats(r.Context(), true) + stats, err := s.controller.GetBackend().GetOutboundsStats(r.Context(), true) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } + response, _ := proto.Marshal(stats) - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(response) + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } +} + +func (s *Service) GetOutboundStats(w http.ResponseWriter, r *http.Request) { + tag := chi.URLParam(r, "tag") + if tag == "" { + http.Error(w, "missing tag", http.StatusBadRequest) + return + } + + stats, err := s.controller.GetBackend().GetOutboundStats(r.Context(), tag, true) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + response, _ := proto.Marshal(stats) + + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } } func (s *Service) GetInboundsStats(w http.ResponseWriter, r *http.Request) { - response, err := s.controller.GetBackend().GetInboundsStats(r.Context(), true) + stats, err := s.controller.GetBackend().GetInboundsStats(r.Context(), true) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + response, _ := proto.Marshal(stats) + + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } +} + +func (s *Service) GetInboundStats(w http.ResponseWriter, r *http.Request) { + tag := chi.URLParam(r, "tag") + if tag == "" { + http.Error(w, "missing tag", http.StatusBadRequest) + return + } + + stats, err := s.controller.GetBackend().GetInboundStats(r.Context(), tag, true) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(response) + response, _ := proto.Marshal(stats) + + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } } func (s *Service) GetUsersStats(w http.ResponseWriter, r *http.Request) { - response, err := s.controller.GetBackend().GetUsersStats(r.Context(), true) + stats, err := s.controller.GetBackend().GetUsersStats(r.Context(), true) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(response) + response, _ := proto.Marshal(stats) + + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } +} + +func (s *Service) GetUserStats(w http.ResponseWriter, r *http.Request) { + email := chi.URLParam(r, "email") + if email == "" { + http.Error(w, "missing email", http.StatusBadRequest) + return + } + + stats, err := s.controller.GetBackend().GetUserStats(r.Context(), email, true) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) + return + } + response, _ := proto.Marshal(stats) + + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } } func (s *Service) GetUserOnlineStat(w http.ResponseWriter, r *http.Request) { @@ -44,27 +122,42 @@ func (s *Service) GetUserOnlineStat(w http.ResponseWriter, r *http.Request) { return } - response, err := s.controller.GetBackend().GetStatOnline(r.Context(), email) + stats, err := s.controller.GetBackend().GetStatOnline(r.Context(), email) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } + response, _ := proto.Marshal(stats) - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(response) + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } } func (s *Service) GetBackendStats(w http.ResponseWriter, r *http.Request) { - response, err := s.controller.GetBackend().GetSysStats(r.Context()) + stats, err := s.controller.GetBackend().GetSysStats(r.Context()) if err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(response) + response, _ := proto.Marshal(stats) + + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } } func (s *Service) GetSystemStats(w http.ResponseWriter, _ *http.Request) { - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(s.controller.GetStats()) + data, _ := proto.Marshal(s.controller.GetStats()) + + w.Header().Set("Content-Type", "application/x-protobuf") + w.WriteHeader(http.StatusOK) + if _, err := w.Write(data); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } } diff --git a/controller/rest/user.go b/controller/rest/user.go index a04ff8e..15234fd 100644 --- a/controller/rest/user.go +++ b/controller/rest/user.go @@ -1,16 +1,25 @@ package rest import ( - "encoding/json" + "io" "net/http" + "google.golang.org/protobuf/proto" + "github.com/m03ed/marzban-node-go/common" ) -func (s *Service) AddUser(w http.ResponseWriter, r *http.Request) { +func (s *Service) SyncUser(w http.ResponseWriter, r *http.Request) { + body, err := io.ReadAll(r.Body) + if err != nil { + http.Error(w, "Failed to read request body", http.StatusBadRequest) + return + } + defer r.Body.Close() + user := &common.User{} - if err := json.NewDecoder(r.Body).Decode(&user); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) + if err = proto.Unmarshal(body, user); err != nil { + http.Error(w, "Failed to decode user", http.StatusBadRequest) return } @@ -19,50 +28,44 @@ func (s *Service) AddUser(w http.ResponseWriter, r *http.Request) { return } - if err := s.controller.GetBackend().AddUser(r.Context(), user); err != nil { + if err = s.controller.GetBackend().SyncUser(r.Context(), user); err != nil { http.Error(w, err.Error(), http.StatusInternalServerError) return } - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(map[string]interface{}{}) -} + response, _ := proto.Marshal(&common.Empty{}) -func (s *Service) UpdateUser(w http.ResponseWriter, r *http.Request) { - user := &common.User{} - if err := json.NewDecoder(r.Body).Decode(&user); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) return } +} - if user == nil { - http.Error(w, "no user received", http.StatusBadRequest) +func (s *Service) SyncUsers(w http.ResponseWriter, r *http.Request) { + body, err := io.ReadAll(r.Body) + if err != nil { + http.Error(w, "Failed to read request body", http.StatusBadRequest) return } + defer r.Body.Close() - if err := s.controller.GetBackend().UpdateUser(r.Context(), user); err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + users := &common.Users{} + if err = proto.Unmarshal(body, users); err != nil { + http.Error(w, "Failed to decode user", http.StatusBadRequest) return } - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(map[string]interface{}{}) -} - -func (s *Service) RemoveUser(w http.ResponseWriter, r *http.Request) { - user := &common.User{} - if err := json.NewDecoder(r.Body).Decode(&user); err != nil { - http.Error(w, err.Error(), http.StatusBadRequest) + if err = s.controller.GetBackend().SyncUsers(r.Context(), users.GetUsers()); err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) return } - if user == nil { - http.Error(w, "no user received", http.StatusBadRequest) + response, _ := proto.Marshal(&common.Empty{}) + + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err = w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) return } - - s.controller.GetBackend().RemoveUser(r.Context(), user.Email) - - w.Header().Set("Content-Type", "application/json") - _ = json.NewEncoder(w).Encode(map[string]interface{}{}) } diff --git a/controller/rpc/middleware.go b/controller/rpc/middleware.go index 90e8c8f..dba8134 100644 --- a/controller/rpc/middleware.go +++ b/controller/rpc/middleware.go @@ -6,13 +6,12 @@ import ( "log" "strings" - grpcmiddleware "github.com/grpc-ecosystem/go-grpc-middleware" - "google.golang.org/grpc/peer" - "github.com/google/uuid" + grpcmiddleware "github.com/grpc-ecosystem/go-grpc-middleware" "google.golang.org/grpc" "google.golang.org/grpc/codes" "google.golang.org/grpc/metadata" + "google.golang.org/grpc/peer" "google.golang.org/grpc/status" ) @@ -180,29 +179,33 @@ func LoggingStreamInterceptor() grpc.StreamServerInterceptor { } var backendMethods = map[string]bool{ - "/service.NodeService/GetOutboundsStats": true, - "/service.NodeService/GetInboundsStats": true, - "/service.NodeService/GetUsersStats": true, - "/service.NodeService/GetBackendStats": true, - "/service.NodeService/AddUser": true, - "/service.NodeService/UpdateUser": true, - "/service.NodeService/RemoveUser": true, - "/service.NodeService/SyncUsers": true, + "/service.NodeService/GetOutboundsStats": true, + "/service.NodeService/GetOutboundStats": true, + "/service.NodeService/GetInboundsStats": true, + "/service.NodeService/GetInboundStats": true, + "/service.NodeService/GetUsersStats": true, + "/service.NodeService/GetUserStats": true, + "/service.NodeService/GetUserOnlineStats": true, + "/service.NodeService/GetBackendStats": true, + "/service.NodeService/SyncUser": true, + "/service.NodeService/SyncUsers": true, } var sessionIDMethods = map[string]bool{ - "/service.NodeService/Stop": true, - "/service.NodeService/GetBaseInfo": true, - "/service.NodeService/GetLogs": true, - "/service.NodeService/GetSystemStats": true, - "/service.NodeService/GetOutboundsStats": true, - "/service.NodeService/GetInboundsStats": true, - "/service.NodeService/GetUsersStats": true, - "/service.NodeService/GetBackendStats": true, - "/service.NodeService/AddUser": true, - "/service.NodeService/UpdateUser": true, - "/service.NodeService/RemoveUser": true, - "/service.NodeService/SyncUsers": true, + "/service.NodeService/Stop": true, + "/service.NodeService/GetBaseInfo": true, + "/service.NodeService/GetLogs": true, + "/service.NodeService/GetSystemStats": true, + "/service.NodeService/GetOutboundsStats": true, + "/service.NodeService/GetOutboundStats": true, + "/service.NodeService/GetInboundsStats": true, + "/service.NodeService/GetInboundStats": true, + "/service.NodeService/GetUsersStats": true, + "/service.NodeService/GetUserStats": true, + "/service.NodeService/GetUserOnlineStats": true, + "/service.NodeService/GetBackendStats": true, + "/service.NodeService/SyncUser": true, + "/service.NodeService/SyncUsers": true, } func ConditionalMiddleware(s *Service) grpc.UnaryServerInterceptor { diff --git a/controller/rpc/rpc_test.go b/controller/rpc/rpc_test.go index 1fe312b..f6890eb 100644 --- a/controller/rpc/rpc_test.go +++ b/controller/rpc/rpc_test.go @@ -135,12 +135,12 @@ func TestGRPCConnection(t *testing.T) { defer cancel() // test GetOutboundsStats - outboundStats, err := client.GetOutboundsStats(ctx, &common.Empty{}) + stats, err := client.GetOutboundsStats(ctx, &common.Empty{}) if err != nil { t.Fatalf("Failed to get outbounds stats: %v", err) } - for _, stat := range outboundStats.Stats { + for _, stat := range stats.GetStats() { log.Println(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) } @@ -148,12 +148,12 @@ func TestGRPCConnection(t *testing.T) { defer cancel() // test GetInboundsStats - inboundStats, err := client.GetInboundsStats(ctx, &common.Empty{}) + stats, err = client.GetInboundsStats(ctx, &common.Empty{}) if err != nil { t.Fatalf("Failed to get inbounds stats: %v", err) } - for _, stat := range inboundStats.Stats { + for _, stat := range stats.GetStats() { log.Println(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) } @@ -161,18 +161,20 @@ func TestGRPCConnection(t *testing.T) { defer cancel() // test GetUsersStats - usersStats, err := client.GetUsersStats(ctx, &common.Empty{}) + stats, err = client.GetUsersStats(ctx, &common.Empty{}) if err != nil { t.Fatalf("Failed to get users stats: %v", err) } - for _, stat := range usersStats.Stats { + for _, stat := range stats.GetStats() { log.Println(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) } - ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + ctx, cancel = context.WithTimeout(ctxWithSession, 10*time.Second) defer cancel() + syncUser, _ := client.SyncUser(ctx) + user := &common.User{ Email: "test_user1@example.com", Inbounds: []string{ @@ -199,14 +201,10 @@ func TestGRPCConnection(t *testing.T) { }, } - // test addUser - if _, err = client.AddUser(ctx, user); err != nil { - t.Fatalf("Failed to add user: %v", err) + if err = syncUser.Send(user); err != nil { + t.Fatalf("Failed to sync user: %v", err) } - ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) - defer cancel() - user = &common.User{ Email: "test_user2@example.com", Inbounds: []string{ @@ -233,17 +231,41 @@ func TestGRPCConnection(t *testing.T) { }, } - // test updateUser - if _, err = client.UpdateUser(ctx, user); err != nil { - t.Fatalf("Failed to update user: %v", err) + if err = syncUser.Send(user); err != nil { + t.Fatalf("Failed to sync user: %v", err) + } + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + stats, err = client.GetUserStats(ctx, &common.StatRequest{Name: user.GetEmail()}) + if err != nil { + t.Fatalf("Failed to get user stats: %v", err) + } + for _, stat := range stats.GetStats() { + log.Println(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) + } + + ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) + defer cancel() + + stats, err = client.GetOutboundStats(ctx, &common.StatRequest{Name: "direct"}) + if err != nil { + t.Fatalf("Failed to get outbound stats: %v", err) + } + for _, stat := range stats.GetStats() { + log.Println(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) } ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) defer cancel() - // test removeUser - if _, err = client.RemoveUser(ctx, user); err != nil { - t.Fatalf("Failed to remove user: %v", err) + stats, err = client.GetInboundStats(ctx, &common.StatRequest{Name: "Shadowsocks TCP"}) + if err != nil { + t.Fatalf("Failed to get inbound stats: %v", err) + } + for _, stat := range stats.GetStats() { + log.Println(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) } ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) diff --git a/controller/rpc/stats.go b/controller/rpc/stats.go index 3289e8e..bd16263 100644 --- a/controller/rpc/stats.go +++ b/controller/rpc/stats.go @@ -10,16 +10,28 @@ func (s *Service) GetOutboundsStats(ctx context.Context, _ *common.Empty) (*comm return s.controller.GetBackend().GetOutboundsStats(ctx, true) } +func (s *Service) GetOutboundStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { + return s.controller.GetBackend().GetOutboundStats(ctx, request.GetName(), true) +} + func (s *Service) GetInboundsStats(ctx context.Context, _ *common.Empty) (*common.StatResponse, error) { return s.controller.GetBackend().GetInboundsStats(ctx, true) } +func (s *Service) GetInboundStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { + return s.controller.GetBackend().GetInboundStats(ctx, request.GetName(), true) +} + func (s *Service) GetUsersStats(ctx context.Context, _ *common.Empty) (*common.StatResponse, error) { return s.controller.GetBackend().GetUsersStats(ctx, true) } -func (s *Service) GetUserOnlineStat(ctx context.Context, request *common.OnlineStatRequest) (*common.OnlineStatResponse, error) { - return s.controller.GetBackend().GetStatOnline(ctx, request.GetEmail()) +func (s *Service) GetUserStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { + return s.controller.GetBackend().GetUserStats(ctx, request.GetName(), true) +} + +func (s *Service) GetUserOnlineStats(ctx context.Context, request *common.StatRequest) (*common.OnlineStatResponse, error) { + return s.controller.GetBackend().GetStatOnline(ctx, request.GetName()) } func (s *Service) GetBackendStats(ctx context.Context, _ *common.Empty) (*common.BackendStatsResponse, error) { diff --git a/controller/rpc/user.go b/controller/rpc/user.go index 846cc8e..b023f09 100644 --- a/controller/rpc/user.go +++ b/controller/rpc/user.go @@ -2,21 +2,29 @@ package rpc import ( "context" + "io" + + "google.golang.org/grpc" + "google.golang.org/grpc/codes" + "google.golang.org/grpc/status" "github.com/m03ed/marzban-node-go/common" ) -func (s *Service) AddUser(ctx context.Context, user *common.User) (*common.Empty, error) { - return nil, s.controller.GetBackend().AddUser(ctx, user) -} - -func (s *Service) UpdateUser(ctx context.Context, user *common.User) (*common.Empty, error) { - return nil, s.controller.GetBackend().UpdateUser(ctx, user) -} +func (s *Service) SyncUser(stream grpc.ClientStreamingServer[common.User, common.Empty]) error { + for { + user, err := stream.Recv() + if err == io.EOF { + return stream.SendAndClose(&common.Empty{}) + } + if err != nil { + return status.Errorf(codes.Internal, "failed to receive user: %v", err) + } -func (s *Service) RemoveUser(ctx context.Context, user *common.User) (*common.Empty, error) { - s.controller.GetBackend().RemoveUser(ctx, user.Email) - return nil, nil + if err = s.controller.GetBackend().SyncUser(stream.Context(), user); err != nil { + return status.Errorf(codes.Internal, "failed to update user: %v", err) + } + } } func (s *Service) SyncUsers(ctx context.Context, users *common.Users) (*common.Empty, error) { From 9dfdc741b514770cb8df4b3bd61464d1990f9102 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Thu, 6 Feb 2025 21:51:06 +0330 Subject: [PATCH 17/38] feat: add xray health check --- backend/xray/core.go | 14 +-- backend/xray/xray.go | 159 +++++++++++++++++++++-------------- controller/rpc/middleware.go | 6 ++ tools/file.go | 15 ---- tools/sys.go | 3 +- tools/tls.go | 15 +--- 6 files changed, 115 insertions(+), 97 deletions(-) diff --git a/backend/xray/core.go b/backend/xray/core.go index e048580..b97ecab 100644 --- a/backend/xray/core.go +++ b/backend/xray/core.go @@ -150,19 +150,23 @@ func (c *Core) Stop() { } func (c *Core) Restart(config *Config) error { - c.mu.Lock() - defer c.mu.Unlock() if c.restarting { return errors.New("xray is already restarted") } + c.mu.Lock() c.restarting = true - defer func() { c.restarting = false }() + c.mu.Unlock() + + defer func() { + c.mu.Lock() + c.restarting = false + c.mu.Unlock() + }() log.Println("restarting Xray core...") c.Stop() - err := c.Start(config) - if err != nil { + if err := c.Start(config); err != nil { return err } return nil diff --git a/backend/xray/xray.go b/backend/xray/xray.go index 4c9d3ee..1ef6a2e 100644 --- a/backend/xray/xray.go +++ b/backend/xray/xray.go @@ -17,6 +17,7 @@ import ( "github.com/m03ed/marzban-node-go/backend" "github.com/m03ed/marzban-node-go/backend/xray/api" "github.com/m03ed/marzban-node-go/common" + nodeLogger "github.com/m03ed/marzban-node-go/logger" ) type Xray struct { @@ -24,9 +25,80 @@ type Xray struct { core *Core handler *api.XrayHandler configPath string + ctx context.Context + cancelFunc context.CancelFunc mu sync.Mutex } +func NewXray(ctx context.Context, port int, executablePath, assetsPath, configPath string) (*Xray, error) { + executableAbsolutePath, err := filepath.Abs(executablePath) + if err != nil { + return nil, err + } + + assetsAbsolutePath, err := filepath.Abs(assetsPath) + if err != nil { + return nil, err + } + + configAbsolutePath, err := filepath.Abs(configPath) + if err != nil { + return nil, err + } + + xCtx, xCancel := context.WithCancel(context.Background()) + + xray := &Xray{configPath: configAbsolutePath, ctx: xCtx, cancelFunc: xCancel} + + start := time.Now() + + config, ok := ctx.Value(backend.ConfigKey{}).(*Config) + if !ok { + return nil, errors.New("xray config has not been initialized") + } + + if err = config.ApplyAPI(port); err != nil { + return nil, err + } + + users := ctx.Value(backend.UsersKey{}).([]*common.User) + config.syncUsers(users) + + xray.setConfig(config) + + if err = xray.GenerateConfigFile(); err != nil { + return nil, err + } + + log.Println("config generated in", time.Since(start).Seconds(), "second.") + + core, err := NewXRayCore(executableAbsolutePath, assetsAbsolutePath, configAbsolutePath) + if err != nil { + return nil, err + } + + if err = core.Start(config); err != nil { + return nil, err + } + + xray.setCore(core) + + if err = xray.checkXrayStatus(); err != nil { + xray.Shutdown() + return nil, err + } + + handler, err := api.NewXrayAPI(port) + if err != nil { + xray.Shutdown() + return nil, err + } + go xray.checkXrayHealth() + xray.setHandler(handler) + + return xray, nil +} + func (x *Xray) setConfig(config *Config) { x.mu.Lock() defer x.mu.Unlock() @@ -88,8 +160,7 @@ func (x *Xray) Started() bool { func (x *Xray) Restart() error { x.mu.Lock() defer x.mu.Unlock() - err := x.core.Restart(x.config) - if err != nil { + if err := x.core.Restart(x.config); err != nil { return err } return nil @@ -98,6 +169,9 @@ func (x *Xray) Restart() error { func (x *Xray) Shutdown() { x.mu.Lock() defer x.mu.Unlock() + + x.cancelFunc() + if x.core != nil { x.core.Stop() } @@ -197,68 +271,23 @@ Loop: return nil } -func NewXray(ctx context.Context, port int, executablePath, assetsPath, configPath string) (*Xray, error) { - executableAbsolutePath, err := filepath.Abs(executablePath) - if err != nil { - return nil, err - } - - assetsAbsolutePath, err := filepath.Abs(assetsPath) - if err != nil { - return nil, err - } - - configAbsolutePath, err := filepath.Abs(configPath) - if err != nil { - return nil, err - } - - xray := &Xray{configPath: configAbsolutePath} - - start := time.Now() - - config, ok := ctx.Value(backend.ConfigKey{}).(*Config) - if !ok { - return nil, errors.New("xray config has not been initialized") - } - - if err = config.ApplyAPI(port); err != nil { - return nil, err - } - - users := ctx.Value(backend.UsersKey{}).([]*common.User) - config.syncUsers(users) - - xray.setConfig(config) - - if err = xray.GenerateConfigFile(); err != nil { - return nil, err - } - - log.Println("config generated in", time.Since(start).Seconds(), "second.") - - core, err := NewXRayCore(executableAbsolutePath, assetsAbsolutePath, configAbsolutePath) - if err != nil { - return nil, err - } - - if err = core.Start(config); err != nil { - return nil, err - } - - xray.setCore(core) - - if err = xray.checkXrayStatus(); err != nil { - xray.Shutdown() - return nil, err - } - - handler, err := api.NewXrayAPI(port) - if err != nil { - xray.Shutdown() - return nil, err +func (x *Xray) checkXrayHealth() { + for { + select { + case <-x.ctx.Done(): + return + default: + ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) + + if _, err := x.GetSysStats(ctx); err != nil { + if err = x.Restart(); err != nil { + nodeLogger.Log(nodeLogger.LogError, err.Error()) + } else { + nodeLogger.Log(nodeLogger.LogInfo, "xray restarted") + } + } + cancel() + } + time.Sleep(time.Second * 2) } - xray.setHandler(handler) - - return xray, nil } diff --git a/controller/rpc/middleware.go b/controller/rpc/middleware.go index dba8134..ffb9e57 100644 --- a/controller/rpc/middleware.go +++ b/controller/rpc/middleware.go @@ -168,6 +168,12 @@ func LoggingStreamInterceptor() grpc.StreamServerInterceptor { info *grpc.StreamServerInfo, handler grpc.StreamHandler, ) error { + clientIP := "unknown" + if p, ok := peer.FromContext(ss.Context()); ok { + clientIP = p.Addr.String() + } + log.Printf("Trying To Open Stream Connection, IP: %s, Method: %s,", clientIP, strings.TrimPrefix(info.FullMethod, "/service.NodeService/")) + // Handle the request err := handler(srv, ss) diff --git a/tools/file.go b/tools/file.go index e44f548..7bedf7c 100644 --- a/tools/file.go +++ b/tools/file.go @@ -16,18 +16,3 @@ func FileExists(filename string) bool { _, err := os.Stat(filename) return !os.IsNotExist(err) } - -// StringToTempFile writes the given string to a temporary file. -func StringToTempFile(content string) (string, error) { - tmpFile, err := os.CreateTemp("", "node_temp_*.pem") - if err != nil { - return "", err - } - defer tmpFile.Close() - - if _, err = tmpFile.WriteString(content); err != nil { - return "", err - } - - return tmpFile.Name(), nil -} diff --git a/tools/sys.go b/tools/sys.go index c8f4af8..1145ec1 100644 --- a/tools/sys.go +++ b/tools/sys.go @@ -2,7 +2,6 @@ package tools import ( "bufio" - "github.com/m03ed/marzban-node-go/common" "os" "strconv" "strings" @@ -10,6 +9,8 @@ import ( "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/mem" + + "github.com/m03ed/marzban-node-go/common" ) func GetSystemStats() (*common.SystemStatsResponse, error) { diff --git a/tools/tls.go b/tools/tls.go index fdaa426..2cee541 100644 --- a/tools/tls.go +++ b/tools/tls.go @@ -25,20 +25,13 @@ func LoadTLSCredentials(cert, key, poolCert string, isClient bool) (*tls.Config, config := &tls.Config{ Certificates: []tls.Certificate{serverCert}, - ClientAuth: tls.RequireAndVerifyClientCert, - ClientCAs: certPool, } if isClient { + config.RootCAs = certPool config.InsecureSkipVerify = true + } else { + config.ClientAuth = tls.RequireAndVerifyClientCert + config.ClientCAs = certPool } return config, nil } - -func LoadCertPool(certFile string) *x509.CertPool { - certPool := x509.NewCertPool() - certData, err := os.ReadFile(certFile) - if err == nil { - certPool.AppendCertsFromPEM(certData) - } - return certPool -} From c5bc7c258df23a96e13c6887401f3e517fc59706 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sat, 8 Feb 2025 00:53:42 +0330 Subject: [PATCH 18/38] feat: add README.md and some small fix --- .env.example | 10 ++- .github/workflows/release.yml | 14 ++-- README.md | 118 ++++++++++++++++++++++++++++++++++ backend/xray/xray.go | 3 +- config/config.go | 2 +- controller/controller.go | 17 ++--- controller/rpc/middleware.go | 2 +- controller/rpc/rpc_test.go | 2 +- controller/rpc/stats.go | 13 ++++ controller/rpc/user.go | 5 ++ go.mod | 2 +- 11 files changed, 161 insertions(+), 27 deletions(-) create mode 100644 README.md diff --git a/.env.example b/.env.example index 21e91d2..2b9e9ca 100644 --- a/.env.example +++ b/.env.example @@ -1,5 +1,4 @@ SERVICE_PORT = 62050 -XRAY_API_PORT = 62051 NODE_HOST = "0.0.0.0" # use absolute path @@ -7,10 +6,9 @@ NODE_HOST = "0.0.0.0" # XRAY_EXECUTABLE_PATH = /usr/local/bin/xray # XRAY_ASSETS_PATH = /usr/local/share/xray -SSL_CERT_FILE = /var/lib/marzban-node/ssl_cert.pem -SSL_KEY_FILE = /var/lib/marzban-node/ssl_key.pem -SSL_CLIENT_CERT_FILE = /var/lib/marzban-node/ssl_client_cert.pem -SSL_CLIENT_KEY_FILE = /var/lib/marzban-node/ssl_client_key.pem +SSL_CERT_FILE = /var/lib/gozargah-node/ssl_cert.pem +SSL_KEY_FILE = /var/lib/gozargah-node/ssl_key.pem +SSL_CLIENT_CERT_FILE = /var/lib/gozargah-node/ssl_client_cert.pem ### can be rest or grpc # SERVICE_PROTOCOL = grpc @@ -18,4 +16,4 @@ SSL_CLIENT_KEY_FILE = /var/lib/marzban-node/ssl_client_key.pem ### for developers # DEBUG = false -# GENERATED_CONFIG_PATH = /var/lib/marzban-node/generated +# GENERATED_CONFIG_PATH = /var/lib/gozargah-node/generated diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 72c3ff9..58f7441 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -128,7 +128,7 @@ jobs: _NAME="${GOOS}-${GOARCH}" fi echo "ASSET_NAME=$_NAME" >> $GITHUB_ENV - echo "BINARY_NAME=marzban_node-${_NAME}" >> $GITHUB_ENV + echo "BINARY_NAME=gozargah_node-${_NAME}" >> $GITHUB_ENV - name: Set up Go uses: actions/setup-go@v5 @@ -143,15 +143,15 @@ jobs: run: | mkdir -p dist make - find . -type f -name "marzban_node*" -exec mv {} "./marzban_node-${{ env.ASSET_NAME }}" \; + find . -type f -name "gozargah_node*" -exec mv {} "./gozargah_node-${{ env.ASSET_NAME }}" \; # Create zip file - zip "./marzban_node-${{ env.ASSET_NAME }}.zip" "./marzban_node-${{ env.ASSET_NAME }}" + zip "./gozargah_node-${{ env.ASSET_NAME }}.zip" "./gozargah_node-${{ env.ASSET_NAME }}" - name: Upload binaries to Artifacts uses: actions/upload-artifact@v4 with: - name: marzban_node-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.goarm || '' }} - path: marzban_node-${{ env.ASSET_NAME }}* + name: gozargah_node-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.goarm || '' }} + path: gozargah_node-${{ env.ASSET_NAME }}* - name: Upload Release Asset id: upload-release-asset @@ -160,6 +160,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ needs.create_release.outputs.upload_url }} - asset_path: ./marzban_node-${{ env.ASSET_NAME }}.zip - asset_name: marzban_node-${{ env.ASSET_NAME }}.zip + asset_path: ./gozargah_node-${{ env.ASSET_NAME }}.zip + asset_name: gozargah_node-${{ env.ASSET_NAME }}.zip asset_content_type: application/zip diff --git a/README.md b/README.md new file mode 100644 index 0000000..42e0c7c --- /dev/null +++ b/README.md @@ -0,0 +1,118 @@ +# Gozargah-Node-Go +

+ + + + + + +

+ +# Overview + +Gozargah Node is developed by the Gozargah team to replace [Marzban-node](https://github.com/Gozargah/Marzban-node). It aims to be more stable, scalable, and efficient. + +## Why Use Gozargah Node? + +We designed this project to be usable in any project, even without Marzban. You can run nodes with a simple script and the help of official libraries. +We plan to expand supported cores after the testing stage, allowing you to use any core you want. + +## Supported Cores + +| Core | Support | +|:-------------------------------------------------:|---------| +| [xray-core](https://github.com/XTLS/Xray-core) | ✅ | +| [sing-box](https://github.com/SagerNet/sing-box) | ❌ | +| [x2ray-core](https://github.com/v2fly/v2ray-core) | ❌ | + +# Documentation + +## Configuration + +> You can set the settings below using environment variables or by placing them in a `.env` file. + +| Variable | Description | +|:------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `SERVICE_PORT` | Bind application to this port (default: `62050`). | +| `NODE_HOST` | Bind application to this host (default: `127.0.0.1`). | +| `XRAY_EXECUTABLE_PATH` | Path of Xray binary (default: `/usr/local/bin/xray`). | +| `XRAY_ASSETS_PATH` | Path of Xray assets (default: `/usr/local/share/xray`). | +| `SSL_CERT_FILE` | SSL certificate file to secure the application between master and node (it will generate a self-signed SSL if it doesn't exist; better to use a real SSL with a domain). | +| `SSL_KEY_FILE` | SSL key file to secure the application between master and node (it will generate a self-signed SSL if it doesn't exist; better to use a real SSL with a domain). | +| `SSL_CLIENT_CERT_FILE` | SSL certificate file to ensure only allowed clients can connect. | +| `SERVICE_PROTOCOL` | Protocol to use: `grpc` or `rest` (recommended: `grpc`). | +| `MAX_LOG_PER_REQUEST` | Maximum number of logs per request (only for long polling in REST connections). | +| `DEBUG` | Debug mode for development; prints core logs in the node server (default: `False`). | +| `GENERATED_CONFIG_PATH` | Path to the generated config by the node (default: `/var/lib/gozargah-node/generated`). | + +## API + +Gozargah Node supports two types of connection protocols: **gRPC** and **REST API**. +We recommend using **gRPC**, with REST always available as a fallback option (in case there is a problem with gRPC). + +### Data Structure + +The node uses the `common/service.proto` file messages for both protocols. + +| Message | Description | +|:-----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `Empty` | Used when no input is required. Can replace `null` with `Empty`. | +| `BaseInfoResponse` | Contains:
- `started` (bool): Indicates if the service is started.
- `core_version` (string): Version of the core.
- `node_version` (string): Version of the node.
- `session_id` (string): Session ID.
- `extra` (string): Additional information. | +| `Vmess` | Contains:
- `id` (string): UUID for Vmess configuration. | +| `Vless` | Contains:
- `id` (string): UUID for Vless configuration.
- `flow` (string): Currently only supports `xtls-rprx-vision`. | +| `Trojan` | Contains:
- `password` (string): Password for Trojan configuration. | +| `Shadowsocks` | Contains:
- `password` (string): Password for Shadowsocks.
- `method` (string): Encryption method. Supported methods: `aes-128-gcm`, `aes-256-gcm`, `chacha20-poly1305`, `xchacha20-poly1305`. | +| `Proxy` | Contains:
- `vmess` (Vmess): Vmess configuration.
- `vless` (Vless): Vless configuration.
- `trojan` (Trojan): Trojan configuration.
- `shadowsocks` (Shadowsocks): Shadowsocks configuration. | +| `User` | Contains:
- `email` (string): User's email.
- `proxies` (Proxy): Proxy configurations.
- `inbounds` ([]string): List of inbounds. | +| `BackendType` | Enum:
- `XRAY = 0`: Represents the Xray backend type. | +| `Backend` | Contains:
- `type` (BackendType): Type of backend.
- `config` (string): Configuration for the backend.
- `users` ([]User): List of users. | +| `Log` | Contains:
- `detail` (string): Log details. | +| `LogList` | Contains:
- `logs` ([]string): List of log details. | +| `Stat` | Contains:
- `name` (string): Stat name.
- `type` (string): Stat type.
- `link` (string): Link associated with the stat.
- `value` (int64): Stat value. | +| `StatResponse` | Contains:
- `stats` ([]Stat): List of stats. | +| `StatRequest` | Contains:
- `name` (string): Name of the stat to request, user email or inbound \ outbound tag. | +| `OnlineStatResponse` | Contains:
- `email` (string): User's email.
- `value` (int64): Online stat value. | +| `BackendStatsResponse` | Contains:
- `num_goroutine` (uint32): Number of goroutines.
- `num_gc` (uint32): Number of garbage collections.
- `alloc` (uint64): Allocated memory.
- `total_alloc` (uint64): Total allocated memory.
- `sys` (uint64): System memory.
- `mallocs` (uint64): Number of mallocs.
- `frees` (uint64): Number of frees.
- `live_objects` (uint64): Number of live objects.
- `pause_total_ns` (uint64): Total pause time in nanoseconds.
- `uptime` (uint32): Uptime in seconds. | +| `SystemStatsResponse` | Contains:
- `mem_total` (uint64): Total memory.
- `mem_used` (uint64): Used memory.
- `cpu_cores` (uint64): Number of CPU cores.
- `cpu_usage` (double): CPU usage percentage.
- `incoming_bandwidth_speed` (uint64): Incoming bandwidth speed.
- `outgoing_bandwidth_speed` (uint64): Outgoing bandwidth speed. | +| `Users` | Contains:
- `users` ([]User): List of users. | + +**Note:** The node receives data with `x-protobuf` as the content type in the **REST API**. + +### Methods + +- Add `address:port` at the beginning of the **REST API** URL. +- Use `Authorization Bearer ` in the header for authentication with the **REST API**. +- Use `Authorization Bearer ` in metadata for authentication with **gRPC**. + +| Method | gRPC | REST | Input | Output | Description | +|:-------------------|:-----------------------|:-----------------------------|---------------|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Start | `Start()` | `/start` | `Backend` | `BaseInfoResponse` | This is the only method called before creating a connection. | +| Stop | `Stop()` | `/stop` | `Empty` | `Empty` | Stops the backend and deactivates the connection with the client. | +| GetBaseInfo | `GetBaseInfo()` | `/info` | `Empty` | `BaseInfoResponse` | Returns base info; can be used to check the connection between the node and client. | +| GetLogs | `GetLogs()` | `/logs` | `Empty` | gRPC: (stream `Log`)
REST API: (`LogList`) | This method is a long-polling connection in the REST protocol, but in gRPC, it provides a stream connection. | +| GetSystemStats | `GetSystemStats()` | `/stats/system` | `Empty` | `SystemStatsResponse` | Retrieves system statistics. | +| GetBackendStats | `GetBackendStats()` | `/stats/backend` | `Empty` | `BackendStatsResponse` | Retrieves backend statistics. | +| GetOutboundsStats | `GetOutboundsStats()` | `/stats/outbounds` | `Empty` | `StatResponse` | Retrieves outbound statistics and resets traffic stats. | +| GetOutboundStats | `GetOutboundStats()` | `/stats/outbound/{tag}` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific outbound and resets traffic stats. Requires an empty body in the `REST` protocol. | +| GetInboundsStats | `GetInboundsStats()` | `/stats/inbounds` | `Empty` | `StatResponse` | Retrieves inbound statistics and resets traffic stats. | +| GetInboundStats | `GetInboundStats()` | `/stats/inbound/{tag}` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific inbound and resets traffic stats. Requires an empty body in the `REST` protocol. | +| GetUsersStats | `GetUsersStats()` | `/stats/users` | `Empty` | `StatResponse` | Retrieves user statistics and resets traffic stats. | +| GetUserStats | `GetUserStats()` | `/stats/user/{email}` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific user and resets traffic stats. Requires an empty body in the `REST` protocol. | +| GetUserOnlineStats | `GetUserOnlineStats()` | `/stats/user/{email}/online` | `StatRequest` | `StatResponse` | Retrieves online statistics for a specific user and resets traffic stats. Requires an empty body in the `REST` protocol. | +| SyncUser | `SyncUser()` | `/user/sync` | `User` | `Empty` | Adds/updates/removes a user in the core. To remove a user, ensure you send empty inbounds. Provides a stream in `gRPC` but must be called for each user in the `REST API`. | +| SyncUsers | `SyncUsers()` | `/users/sync` | `Users` | `Empty` | Removes all old users and replaces them with the provided users. | + +## official library's +We create some library's for you so make your job easier +### Go +``` +https://github.com/m03ed/gozargah_node_bridge +``` +To add it to your project use: +```shell +go get github.com/m03ed/gozargah_node_bridge +``` +### Python +``` +Not released yet +``` diff --git a/backend/xray/xray.go b/backend/xray/xray.go index 1ef6a2e..56f5244 100644 --- a/backend/xray/xray.go +++ b/backend/xray/xray.go @@ -93,8 +93,8 @@ func NewXray(ctx context.Context, port int, executablePath, assetsPath, configPa xray.Shutdown() return nil, err } - go xray.checkXrayHealth() xray.setHandler(handler) + go xray.checkXrayHealth() return xray, nil } @@ -278,7 +278,6 @@ func (x *Xray) checkXrayHealth() { return default: ctx, cancel := context.WithTimeout(context.Background(), time.Second*2) - if _, err := x.GetSysStats(ctx); err != nil { if err = x.Restart(); err != nil { nodeLogger.Log(nodeLogger.LogError, err.Error()) diff --git a/config/config.go b/config/config.go index 2872362..5937ff2 100644 --- a/config/config.go +++ b/config/config.go @@ -21,7 +21,7 @@ func init() { SslCertFile = GetEnv("SSL_CERT_FILE", "/var/lib/marzban-node/ssl_cert.pem") SslKeyFile = GetEnv("SSL_KEY_FILE", "/var/lib/marzban-node/ssl_key.pem") SslClientCertFile = GetEnv("SSL_CLIENT_CERT_FILE", "/var/lib/marzban-node/ssl_client_cert.pem") - GeneratedConfigPath = GetEnv("GENERATED_CONFIG_PATH", "/var/lib/marzban-node/generated/") + GeneratedConfigPath = GetEnv("GENERATED_CONFIG_PATH", "/var/lib/gozargah-node/generated/") ServiceProtocol = GetEnv("SERVICE_PROTOCOL", "rest") MaxLogPerRequest = GetEnvAsInt("MAX_LOG_PER_REQUEST", 1000) Debug = GetEnvAsBool("DEBUG", false) diff --git a/controller/controller.go b/controller/controller.go index baf0170..866959b 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -56,15 +56,15 @@ func (c *Controller) Disconnect() { c.mu.Lock() defer c.mu.Unlock() - apiPort := tools.FindFreePort() - c.apiPort = apiPort - - c.sessionID = uuid.Nil - if c.backend != nil { c.backend.Shutdown() } c.backend = nil + + apiPort := tools.FindFreePort() + c.apiPort = apiPort + + c.sessionID = uuid.Nil } func (c *Controller) StartBackend(ctx context.Context, backendType common.BackendType) error { @@ -147,9 +147,10 @@ func (c *Controller) startJobs() { } func (c *Controller) StopJobs() { - c.Disconnect() - c.mu.Lock() - defer c.mu.Unlock() c.cancelFunc() + c.mu.Unlock() + + c.Disconnect() + } diff --git a/controller/rpc/middleware.go b/controller/rpc/middleware.go index ffb9e57..35ef2cc 100644 --- a/controller/rpc/middleware.go +++ b/controller/rpc/middleware.go @@ -29,7 +29,7 @@ func validateSessionID(ctx context.Context, s *Service) error { } // Extract Authorization header - authHeader, ok := md["authorization"] + authHeader, ok := md["Authorization"] if !ok || len(authHeader) == 0 { return status.Errorf(codes.Unauthenticated, "missing authorization header") } diff --git a/controller/rpc/rpc_test.go b/controller/rpc/rpc_test.go index f6890eb..ada0863 100644 --- a/controller/rpc/rpc_test.go +++ b/controller/rpc/rpc_test.go @@ -117,7 +117,7 @@ func TestGRPCConnection(t *testing.T) { log.Println("Session ID:", sessionID) // Add SessionId to the metadata - md := metadata.Pairs("authorization", "Bearer "+sessionID) + md := metadata.Pairs("Authorization", "Bearer "+sessionID) ctxWithSession := metadata.NewOutgoingContext(context.Background(), md) // test all methods diff --git a/controller/rpc/stats.go b/controller/rpc/stats.go index bd16263..6ff97ed 100644 --- a/controller/rpc/stats.go +++ b/controller/rpc/stats.go @@ -2,6 +2,7 @@ package rpc import ( "context" + "errors" "github.com/m03ed/marzban-node-go/common" ) @@ -11,6 +12,9 @@ func (s *Service) GetOutboundsStats(ctx context.Context, _ *common.Empty) (*comm } func (s *Service) GetOutboundStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { + if request.GetName() == "" { + return nil, errors.New("name is required") + } return s.controller.GetBackend().GetOutboundStats(ctx, request.GetName(), true) } @@ -19,6 +23,9 @@ func (s *Service) GetInboundsStats(ctx context.Context, _ *common.Empty) (*commo } func (s *Service) GetInboundStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { + if request.GetName() == "" { + return nil, errors.New("name is required") + } return s.controller.GetBackend().GetInboundStats(ctx, request.GetName(), true) } @@ -27,10 +34,16 @@ func (s *Service) GetUsersStats(ctx context.Context, _ *common.Empty) (*common.S } func (s *Service) GetUserStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { + if request.GetName() == "" { + return nil, errors.New("name is required") + } return s.controller.GetBackend().GetUserStats(ctx, request.GetName(), true) } func (s *Service) GetUserOnlineStats(ctx context.Context, request *common.StatRequest) (*common.OnlineStatResponse, error) { + if request.GetName() == "" { + return nil, errors.New("name is required") + } return s.controller.GetBackend().GetStatOnline(ctx, request.GetName()) } diff --git a/controller/rpc/user.go b/controller/rpc/user.go index b023f09..2958332 100644 --- a/controller/rpc/user.go +++ b/controller/rpc/user.go @@ -2,6 +2,7 @@ package rpc import ( "context" + "errors" "io" "google.golang.org/grpc" @@ -21,6 +22,10 @@ func (s *Service) SyncUser(stream grpc.ClientStreamingServer[common.User, common return status.Errorf(codes.Internal, "failed to receive user: %v", err) } + if user.GetEmail() == "" { + return errors.New("email is required") + } + if err = s.controller.GetBackend().SyncUser(stream.Context(), user); err != nil { return status.Errorf(codes.Internal, "failed to update user: %v", err) } diff --git a/go.mod b/go.mod index 4a3a226..bbd12b2 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/m03ed/marzban-node-go -go 1.23.0 +go 1.23.4 require ( github.com/go-chi/chi/v5 v5.1.0 From b74541a08d053f27cd4aea8669ce456bd1788dab Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sat, 8 Feb 2025 01:53:43 +0330 Subject: [PATCH 19/38] fix: add CONTRIBUTING.md --- CONTRIBUTING.md | 39 ++++++++++++++++++++++++++++++++++++ README.md | 23 ++++++++++++++++++++- controller/rpc/middleware.go | 2 +- controller/rpc/rpc_test.go | 2 +- go.mod | 17 ++++++++++++++++ go.sum | 26 ++++++++++++------------ 6 files changed, 93 insertions(+), 16 deletions(-) create mode 100644 CONTRIBUTING.md diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md new file mode 100644 index 0000000..6762a43 --- /dev/null +++ b/CONTRIBUTING.md @@ -0,0 +1,39 @@ +# Contribute to Gozargah-Node-Go +Thanks for considering contributing to Gozargah! + +## Questions + +Please don't ask your questions in issues. Instead, use one of the following ways to ask: +- Ask on our telegram group: [@Gozargah_Marzban](https://t.me/gozargah_marzban) +- Ask on our [Node GitHub Discussions](https://github.com/m03ed/gozargah_node_go/discussions) for long term discussion or larger questions. +- Ask on our [Marzban GitHub Discussions](https://github.com/gozargah/marzban/discussions) for long term discussion or larger questions. + +## Reporting issues + +Include the following information in your post: +- Describe what you expected to happen. +- Describe what actually happened. Include server logs or any error that browser shows. +- If possible, post your core config file and what you have set in env (by censoring critical information). +- Also tell the version of Marzban, Core and docker (if you use docker) you are using. + +# Submitting a Pull Request +If there is not an open issue for what you want to submit, prefer opening one for discussion before working on a PR. You can work on any issue that doesn't have an open PR linked to it or a maintainer assigned to it. These show up in the sidebar. No need to ask if you can work on an issue that interests you. +
+Before you create a PR, make sure to run tests using the `make test` command to prevent any bugs. + +## Branches +When starting development on this project, please make sure to create a new branch off the `dev` branch. This helps to keep the `main` branch stable and free of any development work that may not be complete or fully tested. + +## Project Structure +``` +├───backend # Backend handler and interfaces +│ └───xray # Xray methods and jobs +│ └───api # Xray API handler +├───common # Proto files and common object structures +├───config # Reads .env configuration +├───controller # Service controllers for managing API interactions +│ ├───rest # REST API protocol methods +│ └───rpc # gRPC protocol methods +├───logger # primary logger for backend logs +└───tools # Standalone utilities with no project dependencies +``` diff --git a/README.md b/README.md index 42e0c7c..7aca5a1 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ The node uses the `common/service.proto` file messages for both protocols. - Add `address:port` at the beginning of the **REST API** URL. - Use `Authorization Bearer ` in the header for authentication with the **REST API**. -- Use `Authorization Bearer ` in metadata for authentication with **gRPC**. +- Use `authorization Bearer ` in metadata for authentication with **gRPC**. | Method | gRPC | REST | Input | Output | Description | |:-------------------|:-----------------------|:-----------------------------|---------------|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| @@ -116,3 +116,24 @@ go get github.com/m03ed/gozargah_node_bridge ``` Not released yet ``` + +# Donation +You can help gozargah team with your donations, [Click Here](https://donate.gozargah.pro) + +# Contributors + +We ❤️‍🔥 contributors! If you'd like to contribute, please check out our [Contributing Guidelines](CONTRIBUTING.md) and feel free to submit a pull request or open an issue. We also welcome you to join our [Telegram](https://t.me/gozargah_marzban) group for either support or contributing guidance. + +Check [open issues](https://github.com/m03ed/gozargah_node_go/issues) to help the progress of this project. + +

+Thanks to the all contributors who have helped improve Gozargah Node: +

+

+ + + +

+

+ Made with contrib.rocks +

\ No newline at end of file diff --git a/controller/rpc/middleware.go b/controller/rpc/middleware.go index 35ef2cc..ffb9e57 100644 --- a/controller/rpc/middleware.go +++ b/controller/rpc/middleware.go @@ -29,7 +29,7 @@ func validateSessionID(ctx context.Context, s *Service) error { } // Extract Authorization header - authHeader, ok := md["Authorization"] + authHeader, ok := md["authorization"] if !ok || len(authHeader) == 0 { return status.Errorf(codes.Unauthenticated, "missing authorization header") } diff --git a/controller/rpc/rpc_test.go b/controller/rpc/rpc_test.go index ada0863..7945257 100644 --- a/controller/rpc/rpc_test.go +++ b/controller/rpc/rpc_test.go @@ -117,7 +117,7 @@ func TestGRPCConnection(t *testing.T) { log.Println("Session ID:", sessionID) // Add SessionId to the metadata - md := metadata.Pairs("Authorization", "Bearer "+sessionID) + md := metadata.Pairs("authorization", "Bearer "+info.SessionId) ctxWithSession := metadata.NewOutgoingContext(context.Background(), md) // test all methods diff --git a/go.mod b/go.mod index bbd12b2..98a6350 100644 --- a/go.mod +++ b/go.mod @@ -18,9 +18,15 @@ require ( github.com/cloudflare/circl v1.4.0 // indirect github.com/dgryski/go-metro v0.0.0-20211217172704-adc40b04c140 // indirect github.com/go-ole/go-ole v1.3.0 // indirect + github.com/go-task/slim-sprig/v3 v3.0.0 // indirect + github.com/google/btree v1.1.2 // indirect + github.com/google/pprof v0.0.0-20240528025155-186aa0362fba // indirect + github.com/gorilla/websocket v1.5.3 // indirect github.com/klauspost/compress v1.17.8 // indirect github.com/klauspost/cpuid/v2 v2.2.7 // indirect + github.com/onsi/ginkgo/v2 v2.19.0 // indirect github.com/pires/go-proxyproto v0.8.0 // indirect + github.com/quic-go/qpack v0.4.0 // indirect github.com/quic-go/quic-go v0.46.0 // indirect github.com/refraction-networking/utls v1.6.7 // indirect github.com/riobard/go-bloom v0.0.0-20200614022211-cdc8013cb5b3 // indirect @@ -30,12 +36,23 @@ require ( github.com/tklauser/go-sysconf v0.3.14 // indirect github.com/tklauser/numcpus v0.8.0 // indirect github.com/v2fly/ss-bloomring v0.0.0-20210312155135-28617310f63e // indirect + github.com/vishvananda/netlink v1.3.0 // indirect + github.com/vishvananda/netns v0.0.4 // indirect github.com/xtls/reality v0.0.0-20240712055506-48f0b2d5ed6d // indirect github.com/yusufpapurcu/wmi v1.2.4 // indirect + go.uber.org/mock v0.4.0 // indirect + go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect golang.org/x/crypto v0.31.0 // indirect + golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect + golang.org/x/mod v0.18.0 // indirect golang.org/x/net v0.31.0 // indirect golang.org/x/sys v0.28.0 // indirect golang.org/x/text v0.21.0 // indirect + golang.org/x/time v0.5.0 // indirect + golang.org/x/tools v0.22.0 // indirect + golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect + golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + gvisor.dev/gvisor v0.0.0-20231202080848-1f7806d17489 // indirect lukechampine.com/blake3 v1.3.0 // indirect ) diff --git a/go.sum b/go.sum index 535eadf..7427af2 100644 --- a/go.sum +++ b/go.sum @@ -26,13 +26,12 @@ github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= -github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= +github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= -github.com/go-task/slim-sprig v0.0.0-20230315185526-52ccab3ef572 h1:tfuBGBXKqDEevZMzYi5KSi8KkcZtzBcTgAUUtapy0OI= github.com/go-task/slim-sprig/v3 v3.0.0 h1:sUs3vkvUymDpBKi3qH1YSqBQk9+9D/8M2mN1vB6EwHI= github.com/go-task/slim-sprig/v3 v3.0.0/go.mod h1:W848ghGpv3Qj3dhTPRyJypKRiqCdHZiAzKg9hl15HA8= github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q= @@ -70,10 +69,12 @@ github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxv github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= +github.com/miekg/dns v1.1.62 h1:cN8OuEF1/x5Rq6Np+h1epln8OiyPWV+lROx9LxcGgIQ= +github.com/miekg/dns v1.1.62/go.mod h1:mvDlcItzm+br7MToIKqkglaGhlFMHJ9DTNNWONWXbNQ= github.com/onsi/ginkgo/v2 v2.19.0 h1:9Cnnf7UHo57Hy3k6/m5k3dRfGTMXGvxhHFvkDTCTpvA= github.com/onsi/ginkgo/v2 v2.19.0/go.mod h1:rlwLi9PilAFJ8jCg9UE1QP6VBpd6/xj3SRC0d6TU0To= -github.com/onsi/gomega v1.27.6 h1:ENqfyGeS5AX/rlXDd/ETokDz93u0YufY1Pgxuy/PvWE= -github.com/onsi/gomega v1.27.6/go.mod h1:PIQNjfQwkP3aQAH7lf7j87O/5FiNr+ZR8+ipb+qQlhg= +github.com/onsi/gomega v1.33.1 h1:dsYjIxxSR755MDmKVsaFQTE22ChNBcuuTWgkUDSubOk= +github.com/onsi/gomega v1.33.1/go.mod h1:U4R44UsT+9eLIaYRB2a5qajjtQYn0hauxvRm16AVYg0= github.com/opentracing/opentracing-go v1.1.0/go.mod h1:UkNAQd3GIcIGf0SeVgPpRdFStlNbqXla1AfSYxPUl2o= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= @@ -138,8 +139,7 @@ go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/W golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= +golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= @@ -168,8 +168,8 @@ golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJ 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-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.9.0 h1:fEo0HyrW1GIgZdpbhCRO0PkJajUS5H9IFUztCgEo2jQ= -golang.org/x/sync v0.9.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= +golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -178,14 +178,14 @@ golang.org/x/sys v0.0.0-20190916202348-b4ddaad3f8a3/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20211025201205-69cdffdb9359/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.27.0 h1:wBqf8DvsY9Y/2P8gAfPDEYNuS30J4lPHJxXSb/nJZ+s= -golang.org/x/sys v0.27.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.20.0 h1:gK/Kv2otX8gz+wn7Rmb3vT96ZwuoxnQlY+HlJVj7Qug= -golang.org/x/text v0.20.0/go.mod h1:D4IsuqiFMhST5bX19pQ9ikHC2GsaKyk/oF+pn3ducp4= +golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= From af41649ed473ea47a7862c79010bd3e825e2a12a Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sat, 8 Feb 2025 13:09:43 +0330 Subject: [PATCH 20/38] feat: add table of content to README --- README.md | 22 +++++++++++++++++++--- 1 file changed, 19 insertions(+), 3 deletions(-) diff --git a/README.md b/README.md index 7aca5a1..e591d5d 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,22 @@

+## Table of Contents + +- [Overview](#overview) + - [Why Use Gozargah Node?](#why-use-gozargah-node) + - [Supported Cores](#supported-cores) +- [Documentation](#documentation) + - [Configuration](#configuration) + - [API](#api) + - [Data Structure](#data-structure) + - [Methods](#methods) +- [Official library](#official-library) + - [Go](#go) + - [Python](#python) +- [Donation](#donation) +- [Contributors](#contributors) + # Overview Gozargah Node is developed by the Gozargah team to replace [Marzban-node](https://github.com/Gozargah/Marzban-node). It aims to be more stable, scalable, and efficient. @@ -102,9 +118,9 @@ The node uses the `common/service.proto` file messages for both protocols. | SyncUser | `SyncUser()` | `/user/sync` | `User` | `Empty` | Adds/updates/removes a user in the core. To remove a user, ensure you send empty inbounds. Provides a stream in `gRPC` but must be called for each user in the `REST API`. | | SyncUsers | `SyncUsers()` | `/users/sync` | `Users` | `Empty` | Removes all old users and replaces them with the provided users. | -## official library's +# Official library We create some library's for you so make your job easier -### Go +## Go ``` https://github.com/m03ed/gozargah_node_bridge ``` @@ -112,7 +128,7 @@ To add it to your project use: ```shell go get github.com/m03ed/gozargah_node_bridge ``` -### Python +## Python ``` Not released yet ``` From 8a6afc714b969f6ad78498cef8ca6176e650a8b3 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sat, 8 Feb 2025 14:37:43 +0330 Subject: [PATCH 21/38] fix: url in readme --- README.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index e591d5d..4acde4a 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # Gozargah-Node-Go

- + - +

@@ -140,14 +140,14 @@ You can help gozargah team with your donations, [Click Here](https://donate.goza We ❤️‍🔥 contributors! If you'd like to contribute, please check out our [Contributing Guidelines](CONTRIBUTING.md) and feel free to submit a pull request or open an issue. We also welcome you to join our [Telegram](https://t.me/gozargah_marzban) group for either support or contributing guidance. -Check [open issues](https://github.com/m03ed/gozargah_node_go/issues) to help the progress of this project. +Check [open issues](https://github.com/m03ed/gozargah-node/issues) to help the progress of this project.

Thanks to the all contributors who have helped improve Gozargah Node:

- - + +

From 2412b8a81f235d22190156ed190eeae647e7f59b Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sat, 8 Feb 2025 16:51:48 +0330 Subject: [PATCH 22/38] feat: add build docker image workflow --- .github/workflows/docker-build-dev.yml | 57 ++++++++++++++++++++++++++ Dockerfile | 7 ++-- 2 files changed, 60 insertions(+), 4 deletions(-) create mode 100644 .github/workflows/docker-build-dev.yml diff --git a/.github/workflows/docker-build-dev.yml b/.github/workflows/docker-build-dev.yml new file mode 100644 index 0000000..306f5a8 --- /dev/null +++ b/.github/workflows/docker-build-dev.yml @@ -0,0 +1,57 @@ +name: Build and Push Docker Image (Non-Main Branches) + +on: + push: + branches-ignore: + - 'main' + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/m03ed/gozargah-node + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: | + m03ed/gozargah-node:${{ github.ref_name }} + ghcr.io/m03ed/gozargah-node:${{ github.ref_name }} + + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 72c9ebf..68b4957 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.23.2 as builder +FROM golang:1.23.4 as builder WORKDIR /app COPY go.mod . @@ -16,9 +16,8 @@ FROM alpine:latest RUN mkdir /app WORKDIR /app COPY --from=builder /app/main . +COPY Makefile . -RUN apk update \ - && apk add --no-cache curl bash \ - && bash -c "$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)" +RUN make install_xray ENTRYPOINT ["./main", "serve"] From 4c4e678302903d5f690c8fa22d738fb4fb3d1d01 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sat, 8 Feb 2025 16:55:23 +0330 Subject: [PATCH 23/38] fix: docke file --- Dockerfile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Dockerfile b/Dockerfile index 68b4957..9600f16 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,6 +13,8 @@ RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o main -ldflags="- FROM alpine:latest +RUN apk update && apk add --no-cache curl bash make + RUN mkdir /app WORKDIR /app COPY --from=builder /app/main . From dac5b9831e57db419f877dd934c617d1b03dd852 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sat, 8 Feb 2025 17:23:00 +0330 Subject: [PATCH 24/38] fix: make file for alpine --- Dockerfile | 2 +- Makefile | 15 ++++++++++++++- 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9600f16..248570a 100644 --- a/Dockerfile +++ b/Dockerfile @@ -13,7 +13,7 @@ RUN CGO_ENABLED=0 GOOS=$TARGETOS GOARCH=$TARGETARCH go build -o main -ldflags="- FROM alpine:latest -RUN apk update && apk add --no-cache curl bash make +RUN apk update && apk add --no-cache make RUN mkdir /app WORKDIR /app diff --git a/Makefile b/Makefile index 8cd2916..e6bf2c4 100644 --- a/Makefile +++ b/Makefile @@ -83,7 +83,20 @@ else endif install_xray: update_os - sudo bash -c "$$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)" +ifeq ($(UNAME_S),Linux) + # Debian/Ubuntu, CentOS, Fedora, Arch → Use sudo + if [ "$(DISTRO)" = "debian" ] || [ "$(DISTRO)" = "ubuntu" ] || \ + [ "$(DISTRO)" = "centos" ] || [ "$(DISTRO)" = "rhel" ] || [ "$(DISTRO)" = "fedora" ] || \ + [ "$(DISTRO)" = "arch" ]; then \ + sudo bash -c "$$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)"; \ + else \ + bash -c "$$(curl -L https://github.com/Gozargah/Marzban-scripts/raw/master/install_latest_xray.sh)"; \ + fi + +else + @echo "Unsupported operating system: $(UNAME_S)" + @exit 1 +endif test-integration: TEST_INTEGRATION=true go test ./... -v -p 1 From 6a9cd8dd6d9aca5b8745f9ab996fd3733f7ad7e3 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sat, 8 Feb 2025 19:39:57 +0330 Subject: [PATCH 25/38] fix: readme typo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 4acde4a..d0b3a00 100644 --- a/README.md +++ b/README.md @@ -39,7 +39,7 @@ We plan to expand supported cores after the testing stage, allowing you to use a |:-------------------------------------------------:|---------| | [xray-core](https://github.com/XTLS/Xray-core) | ✅ | | [sing-box](https://github.com/SagerNet/sing-box) | ❌ | -| [x2ray-core](https://github.com/v2fly/v2ray-core) | ❌ | +| [v2ray-core](https://github.com/v2fly/v2ray-core) | ❌ | # Documentation From a81118cb134d3ff354a247077681f2cdfdef2c18 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sat, 8 Feb 2025 20:40:56 +0330 Subject: [PATCH 26/38] fix: rest content type --- controller/rest/rest_test.go | 11 ++--------- 1 file changed, 2 insertions(+), 9 deletions(-) diff --git a/controller/rest/rest_test.go b/controller/rest/rest_test.go index 299c19b..88062c0 100644 --- a/controller/rest/rest_test.go +++ b/controller/rest/rest_test.go @@ -149,7 +149,7 @@ func TestRESTConnection(t *testing.T) { url := fmt.Sprintf("https://%s", addr) - resp, err := client.Post(url+"/start", "application/json", bytes.NewBuffer(jsonBody)) + resp, err := client.Post(url+"/start", "application/x-protobuf", bytes.NewBuffer(jsonBody)) if err != nil { t.Fatalf("Failed to start backend: %v", err) } @@ -174,18 +174,11 @@ func TestRESTConnection(t *testing.T) { } req.Header.Set("Authorization", "Bearer "+sessionID) if body != nil { - req.Header.Set("Content-Type", "application/json") // Set content type if body exists + req.Header.Set("Content-Type", "application/x-protobuf") } return req, nil } - pingReq, _ := createAuthenticatedRequest("GET", "/ping", nil) - pingResp, err := client.Do(pingReq) - if err != nil { - t.Fatalf("Ping request failed: %v", err) - } - defer pingResp.Body.Close() - // Try To Get Outbounds Stats outboundsStatsReq, _ := createAuthenticatedRequest("GET", "/stats/outbounds", nil) outboundsStatsResp, err := client.Do(outboundsStatsReq) From 17ba8d798cc72213aee08b225e9ab8cb7bd85fd7 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 9 Feb 2025 00:57:34 +0330 Subject: [PATCH 27/38] fix: prevent panic in middleware --- controller/rest/middleware.go | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/controller/rest/middleware.go b/controller/rest/middleware.go index 035f275..d5779c4 100644 --- a/controller/rest/middleware.go +++ b/controller/rest/middleware.go @@ -38,8 +38,13 @@ func (s *Service) checkSessionIDMiddleware(next http.Handler) http.Handler { return } - tokenString := strings.Split(authHeader, " ")[1] - // check session id + parts := strings.Split(authHeader, " ") + if len(parts) != 2 { + http.Error(w, "invalid Authorization header format", http.StatusUnauthorized) + return + } + + tokenString := parts[1] sessionID, err := uuid.Parse(tokenString) switch { case err != nil: From d1284a88028d6b9d1b563a1db7cffdb68b5c962b Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Mon, 10 Feb 2025 17:22:10 +0330 Subject: [PATCH 28/38] feat: leave reset statistics to client --- README.md | 39 ++--- common/helper.go | 32 ++++ common/service.pb.go | 277 ++++++++++++++++++----------------- common/service.proto | 7 +- common/service_grpc.pb.go | 36 ++--- config/config.go | 2 +- controller/rest/base.go | 36 +---- controller/rest/log.go | 26 ++-- controller/rest/rest_test.go | 185 ++++++++--------------- controller/rest/service.go | 8 +- controller/rest/stats.go | 144 +++++++++--------- controller/rpc/rpc_test.go | 12 +- controller/rpc/stats.go | 18 +-- 13 files changed, 379 insertions(+), 443 deletions(-) create mode 100644 common/helper.go diff --git a/README.md b/README.md index d0b3a00..70bc201 100644 --- a/README.md +++ b/README.md @@ -8,6 +8,9 @@

+# Attention ⚠️ +This project is in the testing and development stage. The code may undergo major changes during this phase, so use it at your own risk. + ## Table of Contents - [Overview](#overview) @@ -86,7 +89,7 @@ The node uses the `common/service.proto` file messages for both protocols. | `LogList` | Contains:
- `logs` ([]string): List of log details. | | `Stat` | Contains:
- `name` (string): Stat name.
- `type` (string): Stat type.
- `link` (string): Link associated with the stat.
- `value` (int64): Stat value. | | `StatResponse` | Contains:
- `stats` ([]Stat): List of stats. | -| `StatRequest` | Contains:
- `name` (string): Name of the stat to request, user email or inbound \ outbound tag. | +| `StatRequest` | Contains:
- `name` (string): Name of the stat to request, user email or inbound \ outbound tag.
- `reset` (bool) Whether to reset traffic stats. | | `OnlineStatResponse` | Contains:
- `email` (string): User's email.
- `value` (int64): Online stat value. | | `BackendStatsResponse` | Contains:
- `num_goroutine` (uint32): Number of goroutines.
- `num_gc` (uint32): Number of garbage collections.
- `alloc` (uint64): Allocated memory.
- `total_alloc` (uint64): Total allocated memory.
- `sys` (uint64): System memory.
- `mallocs` (uint64): Number of mallocs.
- `frees` (uint64): Number of frees.
- `live_objects` (uint64): Number of live objects.
- `pause_total_ns` (uint64): Total pause time in nanoseconds.
- `uptime` (uint32): Uptime in seconds. | | `SystemStatsResponse` | Contains:
- `mem_total` (uint64): Total memory.
- `mem_used` (uint64): Used memory.
- `cpu_cores` (uint64): Number of CPU cores.
- `cpu_usage` (double): CPU usage percentage.
- `incoming_bandwidth_speed` (uint64): Incoming bandwidth speed.
- `outgoing_bandwidth_speed` (uint64): Outgoing bandwidth speed. | @@ -100,23 +103,23 @@ The node uses the `common/service.proto` file messages for both protocols. - Use `Authorization Bearer ` in the header for authentication with the **REST API**. - Use `authorization Bearer ` in metadata for authentication with **gRPC**. -| Method | gRPC | REST | Input | Output | Description | -|:-------------------|:-----------------------|:-----------------------------|---------------|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Start | `Start()` | `/start` | `Backend` | `BaseInfoResponse` | This is the only method called before creating a connection. | -| Stop | `Stop()` | `/stop` | `Empty` | `Empty` | Stops the backend and deactivates the connection with the client. | -| GetBaseInfo | `GetBaseInfo()` | `/info` | `Empty` | `BaseInfoResponse` | Returns base info; can be used to check the connection between the node and client. | -| GetLogs | `GetLogs()` | `/logs` | `Empty` | gRPC: (stream `Log`)
REST API: (`LogList`) | This method is a long-polling connection in the REST protocol, but in gRPC, it provides a stream connection. | -| GetSystemStats | `GetSystemStats()` | `/stats/system` | `Empty` | `SystemStatsResponse` | Retrieves system statistics. | -| GetBackendStats | `GetBackendStats()` | `/stats/backend` | `Empty` | `BackendStatsResponse` | Retrieves backend statistics. | -| GetOutboundsStats | `GetOutboundsStats()` | `/stats/outbounds` | `Empty` | `StatResponse` | Retrieves outbound statistics and resets traffic stats. | -| GetOutboundStats | `GetOutboundStats()` | `/stats/outbound/{tag}` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific outbound and resets traffic stats. Requires an empty body in the `REST` protocol. | -| GetInboundsStats | `GetInboundsStats()` | `/stats/inbounds` | `Empty` | `StatResponse` | Retrieves inbound statistics and resets traffic stats. | -| GetInboundStats | `GetInboundStats()` | `/stats/inbound/{tag}` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific inbound and resets traffic stats. Requires an empty body in the `REST` protocol. | -| GetUsersStats | `GetUsersStats()` | `/stats/users` | `Empty` | `StatResponse` | Retrieves user statistics and resets traffic stats. | -| GetUserStats | `GetUserStats()` | `/stats/user/{email}` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific user and resets traffic stats. Requires an empty body in the `REST` protocol. | -| GetUserOnlineStats | `GetUserOnlineStats()` | `/stats/user/{email}/online` | `StatRequest` | `StatResponse` | Retrieves online statistics for a specific user and resets traffic stats. Requires an empty body in the `REST` protocol. | -| SyncUser | `SyncUser()` | `/user/sync` | `User` | `Empty` | Adds/updates/removes a user in the core. To remove a user, ensure you send empty inbounds. Provides a stream in `gRPC` but must be called for each user in the `REST API`. | -| SyncUsers | `SyncUsers()` | `/users/sync` | `Users` | `Empty` | Removes all old users and replaces them with the provided users. | +| gRPC | REST | Input | Output | Description | +|:-----------------------|:---------------------------|---------------|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `Start()` | `POST`,`/start` | `Backend` | `BaseInfoResponse` | This is the only method called before creating a connection. | +| `Stop()` | `PUT`,`/stop` | `Empty` | `Empty` | Stops the backend and deactivates the connection with the client. | +| `GetBaseInfo()` | `GET`,`/info` | `Empty` | `BaseInfoResponse` | Returns base info; can be used to check the connection between the node and client. | +| `GetLogs()` | `GET`,`/logs` | `Empty` | gRPC: (stream `Log`)
REST API: (`LogList`) | This method is a long-polling connection in the REST protocol, but in gRPC, it provides a stream connection. | +| `GetSystemStats()` | `GET`,`/stats/system` | `Empty` | `SystemStatsResponse` | Retrieves system statistics. | +| `GetBackendStats()` | `GET`,`/stats/backend` | `Empty` | `BackendStatsResponse` | Retrieves backend statistics. | +| `GetOutboundsStats()` | `GET`, `/stats/outbounds` | `StatRequest` | `StatResponse` | Retrieves outbound statistics. The `name` field in the request will be ignored. | +| `GetOutboundStats()` | `GET`,`/stats/outbound` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific outbound. | +| `GetInboundsStats()` | `GET`,`/stats/inbounds` | `StatRequest` | `StatResponse` | Retrieves inbound statistics. The `name` field in the request will be ignored. | +| `GetInboundStats()` | `GET`,`/stats/inbound` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific inbound. | +| `GetUsersStats()` | `GET`,`/stats/users` | `StatRequest` | `StatResponse` | Retrieves user statistics and resets traffic stats. The `name` field in the request will be ignored. | +| `GetUserStats()` | `GET`,`/stats/user` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific user. | +| `GetUserOnlineStats()` | `GET`,`/stats/user/online` | `StatRequest` | `StatResponse` | Retrieves online statistics for a specific user. The `reset` field in the request will be ignored | +| `SyncUser()` | `PUT`,`/user/sync` | `User` | `Empty` | Adds/updates/removes a user in the core. To remove a user, ensure you send empty inbounds. Provides a stream in `gRPC` but must be called for each user in the `REST API`. | +| `SyncUsers()` | `PUT`,`/users/sync` | `Users` | `Empty` | Removes all old users and replaces them with the provided users. | # Official library We create some library's for you so make your job easier diff --git a/common/helper.go b/common/helper.go new file mode 100644 index 0000000..4bce609 --- /dev/null +++ b/common/helper.go @@ -0,0 +1,32 @@ +package common + +import ( + "io" + "net/http" + + "google.golang.org/protobuf/proto" +) + +func ReadProtoBody(body io.ReadCloser, message proto.Message) error { + data, err := io.ReadAll(body) + if err != nil { + return err + } + defer body.Close() + + // Decode into a map + if err = proto.Unmarshal(data, message); err != nil { + return err + } + return nil +} + +func SendProtoResponse(w http.ResponseWriter, data proto.Message) { + response, _ := proto.Marshal(data) + + w.Header().Set("Content-Type", "application/x-protobuf") + if _, err := w.Write(response); err != nil { + http.Error(w, "Failed to write response", http.StatusInternalServerError) + return + } +} diff --git a/common/service.pb.go b/common/service.pb.go index c940d95..f22800a 100644 --- a/common/service.pb.go +++ b/common/service.pb.go @@ -449,7 +449,8 @@ type StatRequest struct { sizeCache protoimpl.SizeCache unknownFields protoimpl.UnknownFields - Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"` + Reset_ bool `protobuf:"varint,2,opt,name=reset,proto3" json:"reset,omitempty"` } func (x *StatRequest) Reset() { @@ -489,6 +490,13 @@ func (x *StatRequest) GetName() string { return "" } +func (x *StatRequest) GetReset_() bool { + if x != nil { + return x.Reset_ + } + return false +} + type OnlineStatResponse struct { state protoimpl.MessageState sizeCache protoimpl.SizeCache @@ -1152,139 +1160,142 @@ var file_common_service_proto_rawDesc = []byte{ 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x22, 0x21, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, + 0x73, 0x22, 0x37, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x22, 0x40, 0x0a, 0x12, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, - 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, - 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, - 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x02, 0x0a, 0x14, 0x42, 0x61, 0x63, 0x6b, 0x65, - 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, - 0x23, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6e, 0x75, 0x6d, 0x47, 0x6f, 0x72, 0x6f, 0x75, - 0x74, 0x69, 0x6e, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x63, 0x18, 0x02, - 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x75, 0x6d, 0x47, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x61, - 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, - 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c, - 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x03, 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x18, - 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x12, 0x14, - 0x0a, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x18, 0x07, 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x66, - 0x72, 0x65, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x62, 0x6a, - 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0b, 0x6c, 0x69, 0x76, 0x65, - 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x24, 0x0a, 0x0e, 0x70, 0x61, 0x75, 0x73, 0x65, - 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x73, 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, - 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x4e, 0x73, 0x12, 0x16, 0x0a, - 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, - 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, - 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, - 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, 0x74, 0x61, 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, - 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, - 0x6d, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, - 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, - 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x70, 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, - 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, - 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, 0x38, 0x0a, 0x18, 0x6f, 0x75, 0x74, - 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, - 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x6f, 0x75, 0x74, - 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, - 0x65, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x05, 0x56, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, - 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x05, - 0x56, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x22, 0x24, 0x0a, 0x06, 0x54, 0x72, 0x6f, - 0x6a, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, - 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, - 0x41, 0x0a, 0x0b, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1a, - 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, - 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, - 0x6f, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x05, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x12, 0x24, 0x0a, 0x05, - 0x76, 0x6d, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6d, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x6d, 0x65, - 0x73, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6c, 0x65, 0x73, - 0x73, 0x52, 0x05, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x27, 0x0a, 0x06, 0x74, 0x72, 0x6f, 0x6a, - 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x52, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, - 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, - 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x52, 0x0b, 0x73, 0x68, - 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x22, 0x62, 0x0a, 0x04, 0x55, 0x73, 0x65, - 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, - 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, - 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, - 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x22, 0x2c, 0x0a, - 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, - 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x2a, 0x17, 0x0a, 0x0b, 0x42, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, 0x12, 0x08, 0x0a, 0x04, 0x58, 0x52, - 0x41, 0x59, 0x10, 0x00, 0x32, 0x80, 0x07, 0x0a, 0x0b, 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x53, 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x1a, - 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, - 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x04, - 0x53, 0x74, 0x6f, 0x70, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, 0x47, 0x65, 0x74, 0x42, 0x61, 0x73, - 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, + 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x22, 0x40, 0x0a, 0x12, 0x4f, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, + 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x02, 0x0a, + 0x14, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x6f, 0x72, + 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6e, 0x75, + 0x6d, 0x47, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x75, + 0x6d, 0x5f, 0x67, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x75, 0x6d, 0x47, + 0x63, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, + 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, + 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, + 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x6c, + 0x6c, 0x6f, 0x63, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x18, 0x07, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, + 0x76, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, + 0x52, 0x0b, 0x6c, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x24, 0x0a, + 0x0e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x73, 0x18, + 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x4e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, + 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x13, + 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, + 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, 0x74, 0x61, 0x6c, + 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, + 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, + 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, + 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x70, 0x75, + 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, + 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, + 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, + 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, + 0x38, 0x0a, 0x18, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x16, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, + 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x05, 0x56, 0x6d, 0x65, + 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, + 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x05, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, + 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x22, + 0x24, 0x0a, 0x06, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, + 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0b, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, + 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, + 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x05, 0x50, 0x72, 0x6f, + 0x78, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, + 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6d, 0x65, 0x73, + 0x73, 0x52, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x6c, 0x65, 0x73, + 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x27, + 0x0a, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x52, + 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, + 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, + 0x6b, 0x73, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x22, + 0x62, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, + 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, + 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x07, + 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, + 0x6e, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x05, + 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, + 0x73, 0x2a, 0x17, 0x0a, 0x0b, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, + 0x12, 0x08, 0x0a, 0x04, 0x58, 0x52, 0x41, 0x59, 0x10, 0x00, 0x32, 0x92, 0x07, 0x0a, 0x0b, 0x4e, + 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x53, 0x74, + 0x61, 0x72, 0x74, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, + 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x0e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x6f, 0x67, 0x22, 0x00, 0x30, 0x01, 0x12, - 0x40, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, - 0x79, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, - 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3c, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3b, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, - 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, - 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, - 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x22, 0x00, 0x12, 0x28, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, + 0x47, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, + 0x6f, 0x67, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, + 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x6f, + 0x67, 0x22, 0x00, 0x30, 0x01, 0x12, 0x40, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, + 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x61, + 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x11, 0x47, + 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, + 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, + 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, + 0x41, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x74, + 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, + 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x41, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, + 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x38, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x3d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, - 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, - 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, - 0x0a, 0x12, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, - 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, - 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, - 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x08, 0x53, 0x79, 0x6e, - 0x63, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, - 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x28, 0x01, 0x12, 0x2d, 0x0a, 0x09, 0x53, 0x79, 0x6e, 0x63, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x55, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, 0x18, 0x5a, 0x16, 0x6d, 0x61, 0x72, 0x7a, 0x62, - 0x61, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, - 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33, + 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, + 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, + 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, + 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, + 0x00, 0x12, 0x2d, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x28, 0x01, + 0x12, 0x2d, 0x0a, 0x09, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x0e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, + 0x18, 0x5a, 0x16, 0x6d, 0x61, 0x72, 0x7a, 0x62, 0x61, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, + 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, + 0x33, } var ( @@ -1338,11 +1349,11 @@ var file_common_service_proto_depIdxs = []int32{ 1, // 12: service.NodeService.GetLogs:input_type -> service.Empty 1, // 13: service.NodeService.GetSystemStats:input_type -> service.Empty 1, // 14: service.NodeService.GetBackendStats:input_type -> service.Empty - 1, // 15: service.NodeService.GetOutboundsStats:input_type -> service.Empty + 8, // 15: service.NodeService.GetOutboundsStats:input_type -> service.StatRequest 8, // 16: service.NodeService.GetOutboundStats:input_type -> service.StatRequest - 1, // 17: service.NodeService.GetInboundsStats:input_type -> service.Empty + 8, // 17: service.NodeService.GetInboundsStats:input_type -> service.StatRequest 8, // 18: service.NodeService.GetInboundStats:input_type -> service.StatRequest - 1, // 19: service.NodeService.GetUsersStats:input_type -> service.Empty + 8, // 19: service.NodeService.GetUsersStats:input_type -> service.StatRequest 8, // 20: service.NodeService.GetUserStats:input_type -> service.StatRequest 8, // 21: service.NodeService.GetUserOnlineStats:input_type -> service.StatRequest 17, // 22: service.NodeService.SyncUser:input_type -> service.User diff --git a/common/service.proto b/common/service.proto index 82d61e4..2a46208 100644 --- a/common/service.proto +++ b/common/service.proto @@ -48,6 +48,7 @@ message StatResponse { message StatRequest { string name = 1; + bool reset = 2; } message OnlineStatResponse { @@ -123,11 +124,11 @@ service NodeService { rpc GetSystemStats (Empty) returns (SystemStatsResponse) {} rpc GetBackendStats (Empty) returns (BackendStatsResponse) {} - rpc GetOutboundsStats (Empty) returns (StatResponse) {} + rpc GetOutboundsStats (StatRequest) returns (StatResponse) {} rpc GetOutboundStats (StatRequest) returns (StatResponse) {} - rpc GetInboundsStats (Empty) returns (StatResponse) {} + rpc GetInboundsStats (StatRequest) returns (StatResponse) {} rpc GetInboundStats (StatRequest) returns (StatResponse) {} - rpc GetUsersStats (Empty) returns (StatResponse) {} + rpc GetUsersStats (StatRequest) returns (StatResponse) {} rpc GetUserStats (StatRequest) returns (StatResponse) {} rpc GetUserOnlineStats (StatRequest) returns (OnlineStatResponse) {} diff --git a/common/service_grpc.pb.go b/common/service_grpc.pb.go index 3880652..3de7df4 100644 --- a/common/service_grpc.pb.go +++ b/common/service_grpc.pb.go @@ -48,11 +48,11 @@ type NodeServiceClient interface { GetLogs(ctx context.Context, in *Empty, opts ...grpc.CallOption) (grpc.ServerStreamingClient[Log], error) GetSystemStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*SystemStatsResponse, error) GetBackendStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*BackendStatsResponse, error) - GetOutboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) + GetOutboundsStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) GetOutboundStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) - GetInboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) + GetInboundsStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) GetInboundStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) - GetUsersStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) + GetUsersStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) GetUserStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) GetUserOnlineStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*OnlineStatResponse, error) SyncUser(ctx context.Context, opts ...grpc.CallOption) (grpc.ClientStreamingClient[User, Empty], error) @@ -136,7 +136,7 @@ func (c *nodeServiceClient) GetBackendStats(ctx context.Context, in *Empty, opts return out, nil } -func (c *nodeServiceClient) GetOutboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) { +func (c *nodeServiceClient) GetOutboundsStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StatResponse) err := c.cc.Invoke(ctx, NodeService_GetOutboundsStats_FullMethodName, in, out, cOpts...) @@ -156,7 +156,7 @@ func (c *nodeServiceClient) GetOutboundStats(ctx context.Context, in *StatReques return out, nil } -func (c *nodeServiceClient) GetInboundsStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) { +func (c *nodeServiceClient) GetInboundsStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StatResponse) err := c.cc.Invoke(ctx, NodeService_GetInboundsStats_FullMethodName, in, out, cOpts...) @@ -176,7 +176,7 @@ func (c *nodeServiceClient) GetInboundStats(ctx context.Context, in *StatRequest return out, nil } -func (c *nodeServiceClient) GetUsersStats(ctx context.Context, in *Empty, opts ...grpc.CallOption) (*StatResponse, error) { +func (c *nodeServiceClient) GetUsersStats(ctx context.Context, in *StatRequest, opts ...grpc.CallOption) (*StatResponse, error) { cOpts := append([]grpc.CallOption{grpc.StaticMethod()}, opts...) out := new(StatResponse) err := c.cc.Invoke(ctx, NodeService_GetUsersStats_FullMethodName, in, out, cOpts...) @@ -241,11 +241,11 @@ type NodeServiceServer interface { GetLogs(*Empty, grpc.ServerStreamingServer[Log]) error GetSystemStats(context.Context, *Empty) (*SystemStatsResponse, error) GetBackendStats(context.Context, *Empty) (*BackendStatsResponse, error) - GetOutboundsStats(context.Context, *Empty) (*StatResponse, error) + GetOutboundsStats(context.Context, *StatRequest) (*StatResponse, error) GetOutboundStats(context.Context, *StatRequest) (*StatResponse, error) - GetInboundsStats(context.Context, *Empty) (*StatResponse, error) + GetInboundsStats(context.Context, *StatRequest) (*StatResponse, error) GetInboundStats(context.Context, *StatRequest) (*StatResponse, error) - GetUsersStats(context.Context, *Empty) (*StatResponse, error) + GetUsersStats(context.Context, *StatRequest) (*StatResponse, error) GetUserStats(context.Context, *StatRequest) (*StatResponse, error) GetUserOnlineStats(context.Context, *StatRequest) (*OnlineStatResponse, error) SyncUser(grpc.ClientStreamingServer[User, Empty]) error @@ -278,19 +278,19 @@ func (UnimplementedNodeServiceServer) GetSystemStats(context.Context, *Empty) (* func (UnimplementedNodeServiceServer) GetBackendStats(context.Context, *Empty) (*BackendStatsResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetBackendStats not implemented") } -func (UnimplementedNodeServiceServer) GetOutboundsStats(context.Context, *Empty) (*StatResponse, error) { +func (UnimplementedNodeServiceServer) GetOutboundsStats(context.Context, *StatRequest) (*StatResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetOutboundsStats not implemented") } func (UnimplementedNodeServiceServer) GetOutboundStats(context.Context, *StatRequest) (*StatResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetOutboundStats not implemented") } -func (UnimplementedNodeServiceServer) GetInboundsStats(context.Context, *Empty) (*StatResponse, error) { +func (UnimplementedNodeServiceServer) GetInboundsStats(context.Context, *StatRequest) (*StatResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetInboundsStats not implemented") } func (UnimplementedNodeServiceServer) GetInboundStats(context.Context, *StatRequest) (*StatResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetInboundStats not implemented") } -func (UnimplementedNodeServiceServer) GetUsersStats(context.Context, *Empty) (*StatResponse, error) { +func (UnimplementedNodeServiceServer) GetUsersStats(context.Context, *StatRequest) (*StatResponse, error) { return nil, status.Errorf(codes.Unimplemented, "method GetUsersStats not implemented") } func (UnimplementedNodeServiceServer) GetUserStats(context.Context, *StatRequest) (*StatResponse, error) { @@ -428,7 +428,7 @@ func _NodeService_GetBackendStats_Handler(srv interface{}, ctx context.Context, } func _NodeService_GetOutboundsStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) + in := new(StatRequest) if err := dec(in); err != nil { return nil, err } @@ -440,7 +440,7 @@ func _NodeService_GetOutboundsStats_Handler(srv interface{}, ctx context.Context FullMethod: NodeService_GetOutboundsStats_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).GetOutboundsStats(ctx, req.(*Empty)) + return srv.(NodeServiceServer).GetOutboundsStats(ctx, req.(*StatRequest)) } return interceptor(ctx, in, info, handler) } @@ -464,7 +464,7 @@ func _NodeService_GetOutboundStats_Handler(srv interface{}, ctx context.Context, } func _NodeService_GetInboundsStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) + in := new(StatRequest) if err := dec(in); err != nil { return nil, err } @@ -476,7 +476,7 @@ func _NodeService_GetInboundsStats_Handler(srv interface{}, ctx context.Context, FullMethod: NodeService_GetInboundsStats_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).GetInboundsStats(ctx, req.(*Empty)) + return srv.(NodeServiceServer).GetInboundsStats(ctx, req.(*StatRequest)) } return interceptor(ctx, in, info, handler) } @@ -500,7 +500,7 @@ func _NodeService_GetInboundStats_Handler(srv interface{}, ctx context.Context, } func _NodeService_GetUsersStats_Handler(srv interface{}, ctx context.Context, dec func(interface{}) error, interceptor grpc.UnaryServerInterceptor) (interface{}, error) { - in := new(Empty) + in := new(StatRequest) if err := dec(in); err != nil { return nil, err } @@ -512,7 +512,7 @@ func _NodeService_GetUsersStats_Handler(srv interface{}, ctx context.Context, de FullMethod: NodeService_GetUsersStats_FullMethodName, } handler := func(ctx context.Context, req interface{}) (interface{}, error) { - return srv.(NodeServiceServer).GetUsersStats(ctx, req.(*Empty)) + return srv.(NodeServiceServer).GetUsersStats(ctx, req.(*StatRequest)) } return interceptor(ctx, in, info, handler) } diff --git a/config/config.go b/config/config.go index 5937ff2..e953b98 100644 --- a/config/config.go +++ b/config/config.go @@ -12,7 +12,7 @@ import ( func init() { err := godotenv.Load() if err != nil { - log.Printf("Failed to load env file, node will use default values, Error: %v", err) + log.Printf("[Warning] Failed to load env file, if you're using 'Docker' and you set 'environment' or 'env_file' variable, don't worry, everything is fine. Error: %v", err) } ServicePort = GetEnvAsInt("SERVICE_PORT", 62050) diff --git a/controller/rest/base.go b/controller/rest/base.go index e5dc5bb..8671da7 100644 --- a/controller/rest/base.go +++ b/controller/rest/base.go @@ -3,26 +3,17 @@ package rest import ( "context" "errors" - "io" "log" "net" "net/http" - "google.golang.org/protobuf/proto" - "github.com/m03ed/marzban-node-go/backend" "github.com/m03ed/marzban-node-go/backend/xray" "github.com/m03ed/marzban-node-go/common" ) func (s *Service) Base(w http.ResponseWriter, _ *http.Request) { - response, _ := proto.Marshal(s.controller.BaseInfoResponse(false, "")) - - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err := w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) - return - } + common.SendProtoResponse(w, s.controller.BaseInfoResponse(false, "")) } func (s *Service) Start(w http.ResponseWriter, r *http.Request) { @@ -52,40 +43,21 @@ func (s *Service) Start(w http.ResponseWriter, r *http.Request) { return } - response, _ := proto.Marshal(s.controller.BaseInfoResponse(true, "")) - - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err = w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) - return - } + common.SendProtoResponse(w, s.controller.BaseInfoResponse(true, "")) } func (s *Service) Stop(w http.ResponseWriter, _ *http.Request) { log.Println(s.GetIP(), " disconnected, Session ID = ", s.controller.GetSessionID()) s.disconnect() - response, _ := proto.Marshal(&common.Empty{}) - - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err := w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) - return - } + common.SendProtoResponse(w, &common.Empty{}) } func (s *Service) detectBackend(r *http.Request) (context.Context, common.BackendType, error) { var data common.Backend var ctx context.Context - body, err := io.ReadAll(r.Body) - if err != nil { - return nil, 0, err - } - defer r.Body.Close() - - // Decode into a map - if err = proto.Unmarshal(body, &data); err != nil { + if err := common.ReadProtoBody(r.Body, &data); err != nil { return nil, 0, err } diff --git a/controller/rest/log.go b/controller/rest/log.go index ba9cb13..c9239ec 100644 --- a/controller/rest/log.go +++ b/controller/rest/log.go @@ -4,23 +4,15 @@ import ( "net/http" "time" - "google.golang.org/protobuf/proto" - "github.com/m03ed/marzban-node-go/common" "github.com/m03ed/marzban-node-go/config" ) -func sendLogs(w http.ResponseWriter, logs []string, status int) { - response, _ := proto.Marshal(&common.LogList{ +func (s *Service) sendLogs(w http.ResponseWriter, logs []string, status int) { + w.WriteHeader(status) + common.SendProtoResponse(w, &common.LogList{ Logs: logs, }) - - w.Header().Set("Content-Type", "application/x-protobuf") - w.WriteHeader(status) - if _, err := w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) - return - } } func (s *Service) GetLogs(w http.ResponseWriter, r *http.Request) { @@ -36,7 +28,7 @@ func (s *Service) GetLogs(w http.ResponseWriter, r *http.Request) { select { case log, ok := <-logChan: if !ok { // If the channel is closed, break the loop - sendLogs(w, logs, http.StatusInternalServerError) + s.sendLogs(w, logs, http.StatusInternalServerError) } // Add the log to the logs slice using the counter @@ -48,7 +40,7 @@ func (s *Service) GetLogs(w http.ResponseWriter, r *http.Request) { if counter >= config.MaxLogPerRequest { // Send the collected logs immediately - sendLogs(w, logs, http.StatusOK) + s.sendLogs(w, logs, http.StatusOK) return } continue @@ -56,20 +48,20 @@ func (s *Service) GetLogs(w http.ResponseWriter, r *http.Request) { case <-ticker.C: if len(logs) > 0 && len(logChan) == 0 { // If the cache is not empty and the channel is empty, send the logs - sendLogs(w, logs, http.StatusOK) + s.sendLogs(w, logs, http.StatusOK) return } case <-timeout: if len(logs) > 0 { - sendLogs(w, logs, http.StatusOK) + s.sendLogs(w, logs, http.StatusOK) } else { - sendLogs(w, logs, http.StatusNoContent) + s.sendLogs(w, logs, http.StatusNoContent) } return case <-r.Context().Done(): // If the client disconnects or the request is canceled - sendLogs(w, logs, http.StatusRequestTimeout) + s.sendLogs(w, logs, http.StatusRequestTimeout) return } } diff --git a/controller/rest/rest_test.go b/controller/rest/rest_test.go index 88062c0..072766a 100644 --- a/controller/rest/rest_test.go +++ b/controller/rest/rest_test.go @@ -80,7 +80,38 @@ func TestRESTConnection(t *testing.T) { t.Fatal(err) } + url := fmt.Sprintf("https://%s", addr) + client := createHTTPClient(creds) + sessionId := "" + + createAuthenticatedRequest := func(method, endpoint string, data proto.Message, response proto.Message) error { + body, err := proto.Marshal(data) + if err != nil { + return err + } + + req, err := http.NewRequest(method, url+endpoint, bytes.NewBuffer(body)) + if err != nil { + return err + } + req.Header.Set("Authorization", "Bearer "+sessionId) + if body != nil { + req.Header.Set("Content-Type", "application/x-protobuf") + } + + do, err := client.Do(req) + if err != nil { + return err + } + defer do.Body.Close() + + responseBody, _ := io.ReadAll(do.Body) + if err = proto.Unmarshal(responseBody, response); err != nil { + return err + } + return nil + } configFile, err := os.ReadFile(configPath) if err != nil { @@ -145,173 +176,77 @@ func TestRESTConnection(t *testing.T) { Users: []*common.User{user, user2}, } - jsonBody, _ := proto.Marshal(backendStartReq) - - url := fmt.Sprintf("https://%s", addr) - - resp, err := client.Post(url+"/start", "application/x-protobuf", bytes.NewBuffer(jsonBody)) - if err != nil { - t.Fatalf("Failed to start backend: %v", err) - } - defer resp.Body.Close() - var baseInfoResp common.BaseInfoResponse - body, _ := io.ReadAll(resp.Body) - err = proto.Unmarshal(body, &baseInfoResp) - if err != nil { - t.Fatalf("Failed to parse start response: %v", err) + if err = createAuthenticatedRequest("POST", "/start", backendStartReq, &baseInfoResp); err != nil { + t.Fatalf("Failed to start backend: %v", err) } - sessionID := baseInfoResp.SessionId - if sessionID == "" { + sessionId = baseInfoResp.GetSessionId() + if sessionId == "" { t.Fatal("No session ID received") } - createAuthenticatedRequest := func(method, endpoint string, body io.Reader) (*http.Request, error) { - req, err := http.NewRequest(method, url+endpoint, body) - if err != nil { - return nil, err - } - req.Header.Set("Authorization", "Bearer "+sessionID) - if body != nil { - req.Header.Set("Content-Type", "application/x-protobuf") - } - return req, nil - } - + var stats common.StatResponse // Try To Get Outbounds Stats - outboundsStatsReq, _ := createAuthenticatedRequest("GET", "/stats/outbounds", nil) - outboundsStatsResp, err := client.Do(outboundsStatsReq) - if err != nil { - t.Fatalf("Outbounds stats request failed: %v", err) - } - defer outboundsStatsResp.Body.Close() - - var outboundsStats common.StatResponse - outboundsStatsBody, _ := io.ReadAll(outboundsStatsResp.Body) - err = proto.Unmarshal(outboundsStatsBody, &outboundsStats) - if err != nil { - t.Fatalf("Failed to parse outbounds stats: %v", err) + if err = createAuthenticatedRequest("GET", "/stats/outbounds", &common.StatRequest{Reset_: true}, &stats); err != nil { + t.Fatalf("Failed to get outbound stats: %v", err) } - for _, stat := range outboundsStats.Stats { + for _, stat := range stats.GetStats() { log.Printf("Outbound Stat - Name: %s, Traffic: %d, Type: %s, Link: %s", - stat.Name, stat.Value, stat.Type, stat.Link) + stat.GetName(), stat.GetValue(), stat.GetType(), stat.GetLink()) } - // Try To Get Inbounds Stats - inboundsStatsReq, _ := createAuthenticatedRequest("GET", "/stats/inbounds", nil) - inboundsStatsResp, err := client.Do(inboundsStatsReq) - if err != nil { - t.Fatalf("Inbounds stats request failed: %v", err) - } - defer inboundsStatsResp.Body.Close() - - var inboundsStats common.StatResponse - inboundsStatsBody, _ := io.ReadAll(inboundsStatsResp.Body) - err = proto.Unmarshal(inboundsStatsBody, &inboundsStats) - if err != nil { - t.Fatalf("Failed to parse inbounds stats: %v", err) + if err = createAuthenticatedRequest("GET", "/stats/inbounds", &common.StatRequest{Reset_: true}, &stats); err != nil { + t.Fatalf("Failed to get inbounds stats: %v", err) } - for _, stat := range inboundsStats.Stats { + for _, stat := range stats.GetStats() { log.Printf("Inbound Stat - Name: %s, Traffic: %d, Type: %s, Link: %s", - stat.Name, stat.Value, stat.Type, stat.Link) + stat.GetName(), stat.GetValue(), stat.GetType(), stat.GetLink()) } - // Try To Get Users Stats - usersStatsReq, _ := createAuthenticatedRequest("GET", "/stats/users", nil) - usersStatsResp, err := client.Do(usersStatsReq) - if err != nil { - t.Fatalf("Users stats request failed: %v", err) - } - defer usersStatsResp.Body.Close() - - var usersStats common.StatResponse - usersStatsBody, _ := io.ReadAll(usersStatsResp.Body) - err = proto.Unmarshal(usersStatsBody, &usersStats) - if err != nil { - t.Fatalf("Failed to parse Users stats: %v", err) + if err = createAuthenticatedRequest("GET", "/stats/users", &common.StatRequest{Reset_: true}, &stats); err != nil { + t.Fatalf("Failed to get users stats: %v", err) } - for _, stat := range inboundsStats.Stats { - log.Printf("User Stat - Name: %s, Traffic: %d, Type: %s, Link: %s", - stat.Name, stat.Value, stat.Type, stat.Link) - } - - // Try To Get Backend Stats - backendStatsReq, _ := createAuthenticatedRequest("GET", "/stats/backend", nil) - backendStatsResp, err := client.Do(backendStatsReq) - if err != nil { - t.Fatalf("Backend stats request failed: %v", err) + for _, stat := range stats.GetStats() { + log.Printf("Users Stat - Name: %s, Traffic: %d, Type: %s, Link: %s", + stat.GetName(), stat.GetValue(), stat.GetType(), stat.GetLink()) } - defer backendStatsResp.Body.Close() var backendStats common.BackendStatsResponse - backendStatsBody, _ := io.ReadAll(backendStatsResp.Body) - err = proto.Unmarshal(backendStatsBody, &backendStats) - if err != nil { - t.Fatalf("Failed to parse backend stats: %v", err) - } - - for _, stat := range inboundsStats.Stats { - log.Printf("Users Stat - Name: %s, Traffic: %d, Type: %s, Link: %s", - stat.Name, stat.Value, stat.Type, stat.Link) + if err = createAuthenticatedRequest("GET", "/stats/backend", &common.Empty{}, &backendStats); err != nil { + t.Fatalf("Failed to get backend stats: %v", err) } - jsonBody, _ = proto.Marshal(user) + fmt.Println(backendStats) - // Try To Add User - addUserReq, _ := createAuthenticatedRequest("PUT", "/user/sync", bytes.NewBuffer(jsonBody)) - addUserResp, err := client.Do(addUserReq) - if err != nil { - t.Fatalf("Add user request failed: %v", err) - } - defer addUserResp.Body.Close() - - logsReq, _ := createAuthenticatedRequest("GET", "/logs", nil) - logsResp, err := client.Do(logsReq) - if err != nil { - t.Fatalf("Logs request failed: %v", err) + if err = createAuthenticatedRequest("PUT", "/user/sync", user, &common.Empty{}); err != nil { + t.Fatalf("Sync user request failed: %v", err) } - defer logsResp.Body.Close() - logsBody, _ := io.ReadAll(logsResp.Body) var logs common.LogList - err = proto.Unmarshal(logsBody, &logs) - if err != nil { - t.Fatalf("Failed to parse logs: %v", err) + if err = createAuthenticatedRequest("GET", "/logs", &common.Empty{}, &logs); err != nil { + t.Fatalf("Sync user request failed: %v", err) } for _, newLog := range logs.GetLogs() { fmt.Println("Log detail:", newLog) } - time.Sleep(2 * time.Second) - // Try To Get Node Stats - nodeStatsReq, _ := createAuthenticatedRequest("GET", "/stats/system", nil) - nodeStatsResp, err := client.Do(nodeStatsReq) - if err != nil { + var systemStats common.SystemStatsResponse + if err = createAuthenticatedRequest("GET", "/stats/system", &common.Empty{}, &systemStats); err != nil { t.Fatalf("Node stats request failed: %v", err) } - defer nodeStatsResp.Body.Close() - var systemStats common.SystemStatsResponse - nodeStatsBody, _ := io.ReadAll(nodeStatsResp.Body) - err = proto.Unmarshal(nodeStatsBody, &systemStats) - if err != nil { - t.Fatalf("Failed to parse node stats: %v", err) - } fmt.Printf("System Stats: \nMem Total: %d \nMem Used: %d \nCpu Number: %d \nCpu Usage: %f \nIncoming: %d \nOutgoing: %d \n", systemStats.MemTotal, systemStats.MemUsed, systemStats.CpuCores, systemStats.CpuUsage, systemStats.IncomingBandwidthSpeed, systemStats.OutgoingBandwidthSpeed) - stopReq, _ := createAuthenticatedRequest("PUT", "/stop", nil) - stopResp, err := client.Do(stopReq) - if err != nil { - t.Fatalf("Stop request failed: %v", err) + if err = createAuthenticatedRequest("PUT", "/stop", user, &common.Empty{}); err != nil { + t.Fatalf("Sync user request failed: %v", err) } - defer stopResp.Body.Close() ctx, cancel := context.WithTimeout(context.Background(), 5*time.Second) defer cancel() diff --git a/controller/rest/service.go b/controller/rest/service.go index dea22fa..21ba868 100644 --- a/controller/rest/service.go +++ b/controller/rest/service.go @@ -46,12 +46,12 @@ func (s *Service) setRouter() { // stats api private.Route("/stats", func(statsGroup chi.Router) { statsGroup.Get("/inbounds", s.GetInboundsStats) - statsGroup.Get("/inbound/{tag}", s.GetInboundStats) + statsGroup.Get("/inbound", s.GetInboundStats) statsGroup.Get("/outbounds", s.GetOutboundsStats) - statsGroup.Get("/outbound/{tag}", s.GetOutboundStats) + statsGroup.Get("/outbound", s.GetOutboundStats) statsGroup.Get("/users", s.GetUsersStats) - statsGroup.Get("/user/{email}/online", s.GetUserOnlineStat) - statsGroup.Get("/user/{email}", s.GetUserStats) + statsGroup.Get("/user", s.GetUserStats) + statsGroup.Get("/user/online", s.GetUserOnlineStat) statsGroup.Get("/backend", s.GetBackendStats) }) private.Put("/user/sync", s.SyncUser) diff --git a/controller/rest/stats.go b/controller/rest/stats.go index 47a07cb..a9efaa7 100644 --- a/controller/rest/stats.go +++ b/controller/rest/stats.go @@ -3,137 +3,139 @@ package rest import ( "net/http" - "github.com/go-chi/chi/v5" - "google.golang.org/protobuf/proto" + "github.com/m03ed/marzban-node-go/common" ) func (s *Service) GetOutboundsStats(w http.ResponseWriter, r *http.Request) { - stats, err := s.controller.GetBackend().GetOutboundsStats(r.Context(), true) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + var request common.StatRequest + if err := common.ReadProtoBody(r.Body, &request); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) return } - response, _ := proto.Marshal(stats) - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err = w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) + stats, err := s.controller.GetBackend().GetOutboundsStats(r.Context(), request.GetReset_()) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) return } + + common.SendProtoResponse(w, stats) } func (s *Service) GetOutboundStats(w http.ResponseWriter, r *http.Request) { - tag := chi.URLParam(r, "tag") - if tag == "" { - http.Error(w, "missing tag", http.StatusBadRequest) + var request common.StatRequest + if err := common.ReadProtoBody(r.Body, &request); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) return } - stats, err := s.controller.GetBackend().GetOutboundStats(r.Context(), tag, true) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + if request.GetName() == "" { + http.Error(w, "name is required", http.StatusBadRequest) return } - response, _ := proto.Marshal(stats) - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err = w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) + stats, err := s.controller.GetBackend().GetOutboundStats(r.Context(), request.GetName(), request.GetReset_()) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) return } + + common.SendProtoResponse(w, stats) } func (s *Service) GetInboundsStats(w http.ResponseWriter, r *http.Request) { - stats, err := s.controller.GetBackend().GetInboundsStats(r.Context(), true) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + var request common.StatRequest + if err := common.ReadProtoBody(r.Body, &request); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) return } - response, _ := proto.Marshal(stats) - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err = w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) + stats, err := s.controller.GetBackend().GetInboundsStats(r.Context(), request.GetReset_()) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) return } + + common.SendProtoResponse(w, stats) } func (s *Service) GetInboundStats(w http.ResponseWriter, r *http.Request) { - tag := chi.URLParam(r, "tag") - if tag == "" { - http.Error(w, "missing tag", http.StatusBadRequest) + var request common.StatRequest + if err := common.ReadProtoBody(r.Body, &request); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) return } - stats, err := s.controller.GetBackend().GetInboundStats(r.Context(), tag, true) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + if request.GetName() == "" { + http.Error(w, "name is required", http.StatusBadRequest) return } - response, _ := proto.Marshal(stats) - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err = w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) + stats, err := s.controller.GetBackend().GetInboundStats(r.Context(), request.GetName(), request.GetReset_()) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) return } + + common.SendProtoResponse(w, stats) } func (s *Service) GetUsersStats(w http.ResponseWriter, r *http.Request) { - stats, err := s.controller.GetBackend().GetUsersStats(r.Context(), true) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + var request common.StatRequest + if err := common.ReadProtoBody(r.Body, &request); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) return } - response, _ := proto.Marshal(stats) - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err = w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) + stats, err := s.controller.GetBackend().GetUsersStats(r.Context(), request.GetReset_()) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) return } + + common.SendProtoResponse(w, stats) } func (s *Service) GetUserStats(w http.ResponseWriter, r *http.Request) { - email := chi.URLParam(r, "email") - if email == "" { - http.Error(w, "missing email", http.StatusBadRequest) + var request common.StatRequest + if err := common.ReadProtoBody(r.Body, &request); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) return } - stats, err := s.controller.GetBackend().GetUserStats(r.Context(), email, true) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + if request.GetName() == "" { + http.Error(w, "name is required", http.StatusBadRequest) return } - response, _ := proto.Marshal(stats) - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err = w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) + stats, err := s.controller.GetBackend().GetUserStats(r.Context(), request.GetName(), request.GetReset_()) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) return } + + common.SendProtoResponse(w, stats) } func (s *Service) GetUserOnlineStat(w http.ResponseWriter, r *http.Request) { - email := chi.URLParam(r, "email") - if email == "" { - http.Error(w, "missing email", http.StatusBadRequest) + var request common.StatRequest + if err := common.ReadProtoBody(r.Body, &request); err != nil { + http.Error(w, err.Error(), http.StatusBadRequest) return } - stats, err := s.controller.GetBackend().GetStatOnline(r.Context(), email) - if err != nil { - http.Error(w, err.Error(), http.StatusInternalServerError) + if request.GetName() == "" { + http.Error(w, "name is required", http.StatusBadRequest) return } - response, _ := proto.Marshal(stats) - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err = w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) + stats, err := s.controller.GetBackend().GetStatOnline(r.Context(), request.GetName()) + if err != nil { + http.Error(w, err.Error(), http.StatusInternalServerError) return } + + common.SendProtoResponse(w, stats) } func (s *Service) GetBackendStats(w http.ResponseWriter, r *http.Request) { @@ -142,22 +144,10 @@ func (s *Service) GetBackendStats(w http.ResponseWriter, r *http.Request) { http.Error(w, err.Error(), http.StatusInternalServerError) return } - response, _ := proto.Marshal(stats) - w.Header().Set("Content-Type", "application/x-protobuf") - if _, err = w.Write(response); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) - return - } + common.SendProtoResponse(w, stats) } func (s *Service) GetSystemStats(w http.ResponseWriter, _ *http.Request) { - data, _ := proto.Marshal(s.controller.GetStats()) - - w.Header().Set("Content-Type", "application/x-protobuf") - w.WriteHeader(http.StatusOK) - if _, err := w.Write(data); err != nil { - http.Error(w, "Failed to write response", http.StatusInternalServerError) - return - } + common.SendProtoResponse(w, s.controller.GetStats()) } diff --git a/controller/rpc/rpc_test.go b/controller/rpc/rpc_test.go index 7945257..207c216 100644 --- a/controller/rpc/rpc_test.go +++ b/controller/rpc/rpc_test.go @@ -135,7 +135,7 @@ func TestGRPCConnection(t *testing.T) { defer cancel() // test GetOutboundsStats - stats, err := client.GetOutboundsStats(ctx, &common.Empty{}) + stats, err := client.GetOutboundsStats(ctx, &common.StatRequest{Reset_: true}) if err != nil { t.Fatalf("Failed to get outbounds stats: %v", err) } @@ -148,7 +148,7 @@ func TestGRPCConnection(t *testing.T) { defer cancel() // test GetInboundsStats - stats, err = client.GetInboundsStats(ctx, &common.Empty{}) + stats, err = client.GetInboundsStats(ctx, &common.StatRequest{Reset_: true}) if err != nil { t.Fatalf("Failed to get inbounds stats: %v", err) } @@ -161,7 +161,7 @@ func TestGRPCConnection(t *testing.T) { defer cancel() // test GetUsersStats - stats, err = client.GetUsersStats(ctx, &common.Empty{}) + stats, err = client.GetUsersStats(ctx, &common.StatRequest{Reset_: true}) if err != nil { t.Fatalf("Failed to get users stats: %v", err) } @@ -238,7 +238,7 @@ func TestGRPCConnection(t *testing.T) { ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) defer cancel() - stats, err = client.GetUserStats(ctx, &common.StatRequest{Name: user.GetEmail()}) + stats, err = client.GetUserStats(ctx, &common.StatRequest{Name: user.GetEmail(), Reset_: true}) if err != nil { t.Fatalf("Failed to get user stats: %v", err) } @@ -249,7 +249,7 @@ func TestGRPCConnection(t *testing.T) { ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) defer cancel() - stats, err = client.GetOutboundStats(ctx, &common.StatRequest{Name: "direct"}) + stats, err = client.GetOutboundStats(ctx, &common.StatRequest{Name: "direct", Reset_: true}) if err != nil { t.Fatalf("Failed to get outbound stats: %v", err) } @@ -260,7 +260,7 @@ func TestGRPCConnection(t *testing.T) { ctx, cancel = context.WithTimeout(ctxWithSession, 5*time.Second) defer cancel() - stats, err = client.GetInboundStats(ctx, &common.StatRequest{Name: "Shadowsocks TCP"}) + stats, err = client.GetInboundStats(ctx, &common.StatRequest{Name: "Shadowsocks TCP", Reset_: true}) if err != nil { t.Fatalf("Failed to get inbound stats: %v", err) } diff --git a/controller/rpc/stats.go b/controller/rpc/stats.go index 6ff97ed..bace297 100644 --- a/controller/rpc/stats.go +++ b/controller/rpc/stats.go @@ -7,37 +7,37 @@ import ( "github.com/m03ed/marzban-node-go/common" ) -func (s *Service) GetOutboundsStats(ctx context.Context, _ *common.Empty) (*common.StatResponse, error) { - return s.controller.GetBackend().GetOutboundsStats(ctx, true) +func (s *Service) GetOutboundsStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { + return s.controller.GetBackend().GetOutboundsStats(ctx, request.GetReset_()) } func (s *Service) GetOutboundStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { if request.GetName() == "" { return nil, errors.New("name is required") } - return s.controller.GetBackend().GetOutboundStats(ctx, request.GetName(), true) + return s.controller.GetBackend().GetOutboundStats(ctx, request.GetName(), request.GetReset_()) } -func (s *Service) GetInboundsStats(ctx context.Context, _ *common.Empty) (*common.StatResponse, error) { - return s.controller.GetBackend().GetInboundsStats(ctx, true) +func (s *Service) GetInboundsStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { + return s.controller.GetBackend().GetInboundsStats(ctx, request.GetReset_()) } func (s *Service) GetInboundStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { if request.GetName() == "" { return nil, errors.New("name is required") } - return s.controller.GetBackend().GetInboundStats(ctx, request.GetName(), true) + return s.controller.GetBackend().GetInboundStats(ctx, request.GetName(), request.GetReset_()) } -func (s *Service) GetUsersStats(ctx context.Context, _ *common.Empty) (*common.StatResponse, error) { - return s.controller.GetBackend().GetUsersStats(ctx, true) +func (s *Service) GetUsersStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { + return s.controller.GetBackend().GetUsersStats(ctx, request.GetReset_()) } func (s *Service) GetUserStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { if request.GetName() == "" { return nil, errors.New("name is required") } - return s.controller.GetBackend().GetUserStats(ctx, request.GetName(), true) + return s.controller.GetBackend().GetUserStats(ctx, request.GetName(), request.GetReset_()) } func (s *Service) GetUserOnlineStats(ctx context.Context, request *common.StatRequest) (*common.OnlineStatResponse, error) { From 0f2285e40ac7fbf6f59dfc27b0c23a1dc1f1f1dd Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Mon, 10 Feb 2025 20:56:57 +0330 Subject: [PATCH 29/38] feat: add docker compose file --- .env.example | 6 +++--- config/config.go | 6 +++--- docker-compose.yml | 18 ++++++++++++++++++ main.go | 6 +++--- 4 files changed, 27 insertions(+), 9 deletions(-) create mode 100644 docker-compose.yml diff --git a/.env.example b/.env.example index 2b9e9ca..c27966e 100644 --- a/.env.example +++ b/.env.example @@ -6,9 +6,9 @@ NODE_HOST = "0.0.0.0" # XRAY_EXECUTABLE_PATH = /usr/local/bin/xray # XRAY_ASSETS_PATH = /usr/local/share/xray -SSL_CERT_FILE = /var/lib/gozargah-node/ssl_cert.pem -SSL_KEY_FILE = /var/lib/gozargah-node/ssl_key.pem -SSL_CLIENT_CERT_FILE = /var/lib/gozargah-node/ssl_client_cert.pem +SSL_CERT_FILE = /var/lib/gozargah-node/certs/ssl_cert.pem +SSL_KEY_FILE = /var/lib/gozargah-node/certs/ssl_key.pem +SSL_CLIENT_CERT_FILE = /var/lib/gozargah-node/certs/ssl_client_cert.pem ### can be rest or grpc # SERVICE_PROTOCOL = grpc diff --git a/config/config.go b/config/config.go index e953b98..9c73461 100644 --- a/config/config.go +++ b/config/config.go @@ -18,9 +18,9 @@ func init() { ServicePort = GetEnvAsInt("SERVICE_PORT", 62050) XrayExecutablePath = GetEnv("XRAY_EXECUTABLE_PATH", "/usr/local/bin/xray") XrayAssetsPath = GetEnv("XRAY_ASSETS_PATH", "/usr/local/share/xray") - SslCertFile = GetEnv("SSL_CERT_FILE", "/var/lib/marzban-node/ssl_cert.pem") - SslKeyFile = GetEnv("SSL_KEY_FILE", "/var/lib/marzban-node/ssl_key.pem") - SslClientCertFile = GetEnv("SSL_CLIENT_CERT_FILE", "/var/lib/marzban-node/ssl_client_cert.pem") + SslCertFile = GetEnv("SSL_CERT_FILE", "/var/lib/gozargah-node/certs/ssl_cert.pem") + SslKeyFile = GetEnv("SSL_KEY_FILE", "/var/lib/gozargah-node/certs/ssl_key.pem") + SslClientCertFile = GetEnv("SSL_CLIENT_CERT_FILE", "/var/lib/gozargah-node/certs/ssl_client_cert.pem") GeneratedConfigPath = GetEnv("GENERATED_CONFIG_PATH", "/var/lib/gozargah-node/generated/") ServiceProtocol = GetEnv("SERVICE_PROTOCOL", "rest") MaxLogPerRequest = GetEnvAsInt("MAX_LOG_PER_REQUEST", 1000) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..45e70c5 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,18 @@ +services: + gozargah-node: + image: ghcr.io/m03ed/gozargah-node:dev + restart: always + network_mode: host + + environment: + SERVICE_PORT: 62050 + SERVICE_PROTOCOL: "grpc" + + SSL_CERT_FILE: "/var/lib/gozargah-node/certs/ssl_cert.pem" + SSL_KEY_FILE: "/var/lib/gozargah-node/certs/ssl_key.pem" + SSL_CLIENT_CERT_FILE: "/var/lib/gozargah-node/certs/ssl_client_cert.pem" + + GENERATED_CONFIG_PATH: "/var/lib/gozargah-node/generated" + + volumes: + - /var/lib/gozargah-node:/var/lib/gozargah-node diff --git a/main.go b/main.go index c992911..a9bd13a 100644 --- a/main.go +++ b/main.go @@ -44,10 +44,10 @@ func main() { var shutdownFunc func(ctx context.Context) error var service controller.Service - if config.ServiceProtocol == "grpc" { - shutdownFunc, service, err = rpc.StartGRPCListener(tlsConfig, addr) - } else { + if config.ServiceProtocol == "rest" { shutdownFunc, service, err = rest.StartHttpListener(tlsConfig, addr) + } else { + shutdownFunc, service, err = rpc.StartGRPCListener(tlsConfig, addr) } defer service.StopService() From adbb45cabd1ccb61eca9bc65375c635d81196bd8 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Fri, 14 Feb 2025 20:29:19 +0330 Subject: [PATCH 30/38] refactore: replace long pulling with sse --- .github/workflows/release.yml | 2 +- .github/workflows/run-tests.yml | 2 +- Dockerfile | 2 +- README.md | 45 ++- backend/xray/user.go | 13 +- backend/xray/xray_test.go | 5 +- common/service.pb.go | 494 ++++++++++++++------------------ common/service.proto | 4 - controller/rest/log.go | 61 ++-- controller/rest/middleware.go | 3 + controller/rest/rest_test.go | 55 +++- go.mod | 18 +- go.sum | 52 ++-- 13 files changed, 367 insertions(+), 389 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 58f7441..2142c34 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -133,7 +133,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: ${{ matrix.gotoolchain || '1.23.4' }} + go-version: ${{ matrix.gotoolchain || '1.24.0' }} check-latest: true - name: Get project dependencies diff --git a/.github/workflows/run-tests.yml b/.github/workflows/run-tests.yml index b8d343e..7145bac 100644 --- a/.github/workflows/run-tests.yml +++ b/.github/workflows/run-tests.yml @@ -19,7 +19,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: ${{ matrix.gotoolchain || '1.23.4' }} + go-version: ${{ matrix.gotoolchain || '1.24.0' }} check-latest: true - name: Get project dependencies diff --git a/Dockerfile b/Dockerfile index 248570a..6ef7075 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM golang:1.23.4 as builder +FROM golang:1.24.0 as builder WORKDIR /app COPY go.mod . diff --git a/README.md b/README.md index 70bc201..91c7c87 100644 --- a/README.md +++ b/README.md @@ -86,7 +86,6 @@ The node uses the `common/service.proto` file messages for both protocols. | `BackendType` | Enum:
- `XRAY = 0`: Represents the Xray backend type. | | `Backend` | Contains:
- `type` (BackendType): Type of backend.
- `config` (string): Configuration for the backend.
- `users` ([]User): List of users. | | `Log` | Contains:
- `detail` (string): Log details. | -| `LogList` | Contains:
- `logs` ([]string): List of log details. | | `Stat` | Contains:
- `name` (string): Stat name.
- `type` (string): Stat type.
- `link` (string): Link associated with the stat.
- `value` (int64): Stat value. | | `StatResponse` | Contains:
- `stats` ([]Stat): List of stats. | | `StatRequest` | Contains:
- `name` (string): Name of the stat to request, user email or inbound \ outbound tag.
- `reset` (bool) Whether to reset traffic stats. | @@ -103,31 +102,31 @@ The node uses the `common/service.proto` file messages for both protocols. - Use `Authorization Bearer ` in the header for authentication with the **REST API**. - Use `authorization Bearer ` in metadata for authentication with **gRPC**. -| gRPC | REST | Input | Output | Description | -|:-----------------------|:---------------------------|---------------|------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| `Start()` | `POST`,`/start` | `Backend` | `BaseInfoResponse` | This is the only method called before creating a connection. | -| `Stop()` | `PUT`,`/stop` | `Empty` | `Empty` | Stops the backend and deactivates the connection with the client. | -| `GetBaseInfo()` | `GET`,`/info` | `Empty` | `BaseInfoResponse` | Returns base info; can be used to check the connection between the node and client. | -| `GetLogs()` | `GET`,`/logs` | `Empty` | gRPC: (stream `Log`)
REST API: (`LogList`) | This method is a long-polling connection in the REST protocol, but in gRPC, it provides a stream connection. | -| `GetSystemStats()` | `GET`,`/stats/system` | `Empty` | `SystemStatsResponse` | Retrieves system statistics. | -| `GetBackendStats()` | `GET`,`/stats/backend` | `Empty` | `BackendStatsResponse` | Retrieves backend statistics. | -| `GetOutboundsStats()` | `GET`, `/stats/outbounds` | `StatRequest` | `StatResponse` | Retrieves outbound statistics. The `name` field in the request will be ignored. | -| `GetOutboundStats()` | `GET`,`/stats/outbound` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific outbound. | -| `GetInboundsStats()` | `GET`,`/stats/inbounds` | `StatRequest` | `StatResponse` | Retrieves inbound statistics. The `name` field in the request will be ignored. | -| `GetInboundStats()` | `GET`,`/stats/inbound` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific inbound. | -| `GetUsersStats()` | `GET`,`/stats/users` | `StatRequest` | `StatResponse` | Retrieves user statistics and resets traffic stats. The `name` field in the request will be ignored. | -| `GetUserStats()` | `GET`,`/stats/user` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific user. | -| `GetUserOnlineStats()` | `GET`,`/stats/user/online` | `StatRequest` | `StatResponse` | Retrieves online statistics for a specific user. The `reset` field in the request will be ignored | -| `SyncUser()` | `PUT`,`/user/sync` | `User` | `Empty` | Adds/updates/removes a user in the core. To remove a user, ensure you send empty inbounds. Provides a stream in `gRPC` but must be called for each user in the `REST API`. | -| `SyncUsers()` | `PUT`,`/users/sync` | `Users` | `Empty` | Removes all old users and replaces them with the provided users. | +| gRPC | REST | Input | Output | Description | +|:-----------------------|:---------------------------|---------------|--------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| `Start()` | `POST`,`/start` | `Backend` | `BaseInfoResponse` | This is the only method called before creating a connection. | +| `Stop()` | `PUT`,`/stop` | `Empty` | `Empty` | Stops the backend and deactivates the connection with the client. | +| `GetBaseInfo()` | `GET`,`/info` | `Empty` | `BaseInfoResponse` | Returns base info; can be used to check the connection between the node and client. | +| `GetLogs()` | `GET`,`/logs` | `Empty` | gRPC: (stream `Log`)
REST API: (`SSE`) | This method is a `SSE` connection in the REST protocol, but in gRPC, it provides a stream connection. | +| `GetSystemStats()` | `GET`,`/stats/system` | `Empty` | `SystemStatsResponse` | Retrieves system statistics. | +| `GetBackendStats()` | `GET`,`/stats/backend` | `Empty` | `BackendStatsResponse` | Retrieves backend statistics. | +| `GetOutboundsStats()` | `GET`, `/stats/outbounds` | `StatRequest` | `StatResponse` | Retrieves outbound statistics. The `name` field in the request will be ignored. | +| `GetOutboundStats()` | `GET`,`/stats/outbound` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific outbound. | +| `GetInboundsStats()` | `GET`,`/stats/inbounds` | `StatRequest` | `StatResponse` | Retrieves inbound statistics. The `name` field in the request will be ignored. | +| `GetInboundStats()` | `GET`,`/stats/inbound` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific inbound. | +| `GetUsersStats()` | `GET`,`/stats/users` | `StatRequest` | `StatResponse` | Retrieves user statistics and resets traffic stats. The `name` field in the request will be ignored. | +| `GetUserStats()` | `GET`,`/stats/user` | `StatRequest` | `StatResponse` | Retrieves statistics for a specific user. | +| `GetUserOnlineStats()` | `GET`,`/stats/user/online` | `StatRequest` | `StatResponse` | Retrieves online statistics for a specific user. The `reset` field in the request will be ignored | +| `SyncUser()` | `PUT`,`/user/sync` | `User` | `Empty` | Adds/updates/removes a user in the core. To remove a user, ensure you send empty inbounds. Provides a stream in `gRPC` but must be called for each user in the `REST API`. | +| `SyncUsers()` | `PUT`,`/users/sync` | `Users` | `Empty` | Removes all old users and replaces them with the provided users. | # Official library -We create some library's for you so make your job easier +We create some library's for you so make your job easier + ## Go -``` -https://github.com/m03ed/gozargah_node_bridge -``` -To add it to your project use: +[gozargah-node-bridge](https://github.com/m03ed/gozargah_node_bridge) + +To add bridge to your project use: ```shell go get github.com/m03ed/gozargah_node_bridge ``` diff --git a/backend/xray/user.go b/backend/xray/user.go index c15295f..0be5ded 100644 --- a/backend/xray/user.go +++ b/backend/xray/user.go @@ -53,7 +53,7 @@ func isActiveInbound(inbound *Inbound, inbounds []string, settings api.ProxySett if settings.Vless.Flow != "" { networkType := inbound.StreamSettings["network"] - if !(networkType == "tcp" || networkType == "mkcp") { + if !(networkType == "tcp" || networkType == "raw" || networkType == "mkcp") { account.Flow = "" return &account, true } @@ -155,6 +155,13 @@ func (x *Xray) SyncUser(ctx context.Context, user *common.User) error { return nil } -func (x *Xray) SyncUsers(_ context.Context, _ []*common.User) error { - return errors.New("not implemented method") +func (x *Xray) SyncUsers(_ context.Context, users []*common.User) error { + x.config.syncUsers(users) + if err := x.GenerateConfigFile(); err != nil { + return err + } + if err := x.Restart(); err != nil { + return err + } + return nil } diff --git a/backend/xray/xray_test.go b/backend/xray/xray_test.go index b756729..8ac31e4 100644 --- a/backend/xray/xray_test.go +++ b/backend/xray/xray_test.go @@ -109,8 +109,9 @@ func TestXrayBackend(t *testing.T) { t.Error(err) } - for _, stat := range stats.Stats { - log.Printf(fmt.Sprintf("Name: %s , Traffic: %d , Type: %s , Link: %s", stat.Name, stat.Value, stat.Type, stat.Link)) + for _, stat := range stats.GetStats() { + log.Printf("Name: %s , Traffic: %d , Type: %s , Link: %s", + stat.GetName(), stat.GetValue(), stat.GetType(), stat.GetLink()) } if err = back.SyncUser(ctx1, user2); err != nil { diff --git a/common/service.pb.go b/common/service.pb.go index f22800a..fdef708 100644 --- a/common/service.pb.go +++ b/common/service.pb.go @@ -284,51 +284,6 @@ func (x *Log) GetDetail() string { return "" } -type LogList struct { - state protoimpl.MessageState - sizeCache protoimpl.SizeCache - unknownFields protoimpl.UnknownFields - - Logs []string `protobuf:"bytes,1,rep,name=logs,proto3" json:"logs,omitempty"` -} - -func (x *LogList) Reset() { - *x = LogList{} - mi := &file_common_service_proto_msgTypes[4] - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - ms.StoreMessageInfo(mi) -} - -func (x *LogList) String() string { - return protoimpl.X.MessageStringOf(x) -} - -func (*LogList) ProtoMessage() {} - -func (x *LogList) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[4] - if x != nil { - ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) - if ms.LoadMessageInfo() == nil { - ms.StoreMessageInfo(mi) - } - return ms - } - return mi.MessageOf(x) -} - -// Deprecated: Use LogList.ProtoReflect.Descriptor instead. -func (*LogList) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{4} -} - -func (x *LogList) GetLogs() []string { - if x != nil { - return x.Logs - } - return nil -} - // stats type Stat struct { state protoimpl.MessageState @@ -343,7 +298,7 @@ type Stat struct { func (x *Stat) Reset() { *x = Stat{} - mi := &file_common_service_proto_msgTypes[5] + mi := &file_common_service_proto_msgTypes[4] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -355,7 +310,7 @@ func (x *Stat) String() string { func (*Stat) ProtoMessage() {} func (x *Stat) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[5] + mi := &file_common_service_proto_msgTypes[4] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -368,7 +323,7 @@ func (x *Stat) ProtoReflect() protoreflect.Message { // Deprecated: Use Stat.ProtoReflect.Descriptor instead. func (*Stat) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{5} + return file_common_service_proto_rawDescGZIP(), []int{4} } func (x *Stat) GetName() string { @@ -409,7 +364,7 @@ type StatResponse struct { func (x *StatResponse) Reset() { *x = StatResponse{} - mi := &file_common_service_proto_msgTypes[6] + mi := &file_common_service_proto_msgTypes[5] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -421,7 +376,7 @@ func (x *StatResponse) String() string { func (*StatResponse) ProtoMessage() {} func (x *StatResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[6] + mi := &file_common_service_proto_msgTypes[5] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -434,7 +389,7 @@ func (x *StatResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use StatResponse.ProtoReflect.Descriptor instead. func (*StatResponse) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{6} + return file_common_service_proto_rawDescGZIP(), []int{5} } func (x *StatResponse) GetStats() []*Stat { @@ -455,7 +410,7 @@ type StatRequest struct { func (x *StatRequest) Reset() { *x = StatRequest{} - mi := &file_common_service_proto_msgTypes[7] + mi := &file_common_service_proto_msgTypes[6] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -467,7 +422,7 @@ func (x *StatRequest) String() string { func (*StatRequest) ProtoMessage() {} func (x *StatRequest) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[7] + mi := &file_common_service_proto_msgTypes[6] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -480,7 +435,7 @@ func (x *StatRequest) ProtoReflect() protoreflect.Message { // Deprecated: Use StatRequest.ProtoReflect.Descriptor instead. func (*StatRequest) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{7} + return file_common_service_proto_rawDescGZIP(), []int{6} } func (x *StatRequest) GetName() string { @@ -508,7 +463,7 @@ type OnlineStatResponse struct { func (x *OnlineStatResponse) Reset() { *x = OnlineStatResponse{} - mi := &file_common_service_proto_msgTypes[8] + mi := &file_common_service_proto_msgTypes[7] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -520,7 +475,7 @@ func (x *OnlineStatResponse) String() string { func (*OnlineStatResponse) ProtoMessage() {} func (x *OnlineStatResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[8] + mi := &file_common_service_proto_msgTypes[7] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -533,7 +488,7 @@ func (x *OnlineStatResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use OnlineStatResponse.ProtoReflect.Descriptor instead. func (*OnlineStatResponse) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{8} + return file_common_service_proto_rawDescGZIP(), []int{7} } func (x *OnlineStatResponse) GetEmail() string { @@ -569,7 +524,7 @@ type BackendStatsResponse struct { func (x *BackendStatsResponse) Reset() { *x = BackendStatsResponse{} - mi := &file_common_service_proto_msgTypes[9] + mi := &file_common_service_proto_msgTypes[8] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -581,7 +536,7 @@ func (x *BackendStatsResponse) String() string { func (*BackendStatsResponse) ProtoMessage() {} func (x *BackendStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[9] + mi := &file_common_service_proto_msgTypes[8] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -594,7 +549,7 @@ func (x *BackendStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use BackendStatsResponse.ProtoReflect.Descriptor instead. func (*BackendStatsResponse) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{9} + return file_common_service_proto_rawDescGZIP(), []int{8} } func (x *BackendStatsResponse) GetNumGoroutine() uint32 { @@ -682,7 +637,7 @@ type SystemStatsResponse struct { func (x *SystemStatsResponse) Reset() { *x = SystemStatsResponse{} - mi := &file_common_service_proto_msgTypes[10] + mi := &file_common_service_proto_msgTypes[9] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -694,7 +649,7 @@ func (x *SystemStatsResponse) String() string { func (*SystemStatsResponse) ProtoMessage() {} func (x *SystemStatsResponse) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[10] + mi := &file_common_service_proto_msgTypes[9] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -707,7 +662,7 @@ func (x *SystemStatsResponse) ProtoReflect() protoreflect.Message { // Deprecated: Use SystemStatsResponse.ProtoReflect.Descriptor instead. func (*SystemStatsResponse) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{10} + return file_common_service_proto_rawDescGZIP(), []int{9} } func (x *SystemStatsResponse) GetMemTotal() uint64 { @@ -763,7 +718,7 @@ type Vmess struct { func (x *Vmess) Reset() { *x = Vmess{} - mi := &file_common_service_proto_msgTypes[11] + mi := &file_common_service_proto_msgTypes[10] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -775,7 +730,7 @@ func (x *Vmess) String() string { func (*Vmess) ProtoMessage() {} func (x *Vmess) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[11] + mi := &file_common_service_proto_msgTypes[10] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -788,7 +743,7 @@ func (x *Vmess) ProtoReflect() protoreflect.Message { // Deprecated: Use Vmess.ProtoReflect.Descriptor instead. func (*Vmess) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{11} + return file_common_service_proto_rawDescGZIP(), []int{10} } func (x *Vmess) GetId() string { @@ -809,7 +764,7 @@ type Vless struct { func (x *Vless) Reset() { *x = Vless{} - mi := &file_common_service_proto_msgTypes[12] + mi := &file_common_service_proto_msgTypes[11] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -821,7 +776,7 @@ func (x *Vless) String() string { func (*Vless) ProtoMessage() {} func (x *Vless) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[12] + mi := &file_common_service_proto_msgTypes[11] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -834,7 +789,7 @@ func (x *Vless) ProtoReflect() protoreflect.Message { // Deprecated: Use Vless.ProtoReflect.Descriptor instead. func (*Vless) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{12} + return file_common_service_proto_rawDescGZIP(), []int{11} } func (x *Vless) GetId() string { @@ -861,7 +816,7 @@ type Trojan struct { func (x *Trojan) Reset() { *x = Trojan{} - mi := &file_common_service_proto_msgTypes[13] + mi := &file_common_service_proto_msgTypes[12] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -873,7 +828,7 @@ func (x *Trojan) String() string { func (*Trojan) ProtoMessage() {} func (x *Trojan) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[13] + mi := &file_common_service_proto_msgTypes[12] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -886,7 +841,7 @@ func (x *Trojan) ProtoReflect() protoreflect.Message { // Deprecated: Use Trojan.ProtoReflect.Descriptor instead. func (*Trojan) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{13} + return file_common_service_proto_rawDescGZIP(), []int{12} } func (x *Trojan) GetPassword() string { @@ -907,7 +862,7 @@ type Shadowsocks struct { func (x *Shadowsocks) Reset() { *x = Shadowsocks{} - mi := &file_common_service_proto_msgTypes[14] + mi := &file_common_service_proto_msgTypes[13] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -919,7 +874,7 @@ func (x *Shadowsocks) String() string { func (*Shadowsocks) ProtoMessage() {} func (x *Shadowsocks) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[14] + mi := &file_common_service_proto_msgTypes[13] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -932,7 +887,7 @@ func (x *Shadowsocks) ProtoReflect() protoreflect.Message { // Deprecated: Use Shadowsocks.ProtoReflect.Descriptor instead. func (*Shadowsocks) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{14} + return file_common_service_proto_rawDescGZIP(), []int{13} } func (x *Shadowsocks) GetPassword() string { @@ -962,7 +917,7 @@ type Proxy struct { func (x *Proxy) Reset() { *x = Proxy{} - mi := &file_common_service_proto_msgTypes[15] + mi := &file_common_service_proto_msgTypes[14] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -974,7 +929,7 @@ func (x *Proxy) String() string { func (*Proxy) ProtoMessage() {} func (x *Proxy) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[15] + mi := &file_common_service_proto_msgTypes[14] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -987,7 +942,7 @@ func (x *Proxy) ProtoReflect() protoreflect.Message { // Deprecated: Use Proxy.ProtoReflect.Descriptor instead. func (*Proxy) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{15} + return file_common_service_proto_rawDescGZIP(), []int{14} } func (x *Proxy) GetVmess() *Vmess { @@ -1030,7 +985,7 @@ type User struct { func (x *User) Reset() { *x = User{} - mi := &file_common_service_proto_msgTypes[16] + mi := &file_common_service_proto_msgTypes[15] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1042,7 +997,7 @@ func (x *User) String() string { func (*User) ProtoMessage() {} func (x *User) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[16] + mi := &file_common_service_proto_msgTypes[15] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1055,7 +1010,7 @@ func (x *User) ProtoReflect() protoreflect.Message { // Deprecated: Use User.ProtoReflect.Descriptor instead. func (*User) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{16} + return file_common_service_proto_rawDescGZIP(), []int{15} } func (x *User) GetEmail() string { @@ -1089,7 +1044,7 @@ type Users struct { func (x *Users) Reset() { *x = Users{} - mi := &file_common_service_proto_msgTypes[17] + mi := &file_common_service_proto_msgTypes[16] ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) ms.StoreMessageInfo(mi) } @@ -1101,7 +1056,7 @@ func (x *Users) String() string { func (*Users) ProtoMessage() {} func (x *Users) ProtoReflect() protoreflect.Message { - mi := &file_common_service_proto_msgTypes[17] + mi := &file_common_service_proto_msgTypes[16] if x != nil { ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) if ms.LoadMessageInfo() == nil { @@ -1114,7 +1069,7 @@ func (x *Users) ProtoReflect() protoreflect.Message { // Deprecated: Use Users.ProtoReflect.Descriptor instead. func (*Users) Descriptor() ([]byte, []int) { - return file_common_service_proto_rawDescGZIP(), []int{17} + return file_common_service_proto_rawDescGZIP(), []int{16} } func (x *Users) GetUsers() []*User { @@ -1149,153 +1104,151 @@ var file_common_service_proto_rawDesc = []byte{ 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x22, 0x1d, 0x0a, 0x03, 0x4c, 0x6f, 0x67, 0x12, 0x16, 0x0a, 0x06, 0x64, 0x65, 0x74, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x06, 0x64, 0x65, 0x74, - 0x61, 0x69, 0x6c, 0x22, 0x1d, 0x0a, 0x07, 0x4c, 0x6f, 0x67, 0x4c, 0x69, 0x73, 0x74, 0x12, 0x12, - 0x0a, 0x04, 0x6c, 0x6f, 0x67, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x09, 0x52, 0x04, 0x6c, 0x6f, - 0x67, 0x73, 0x22, 0x58, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, - 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x12, - 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, 0x79, - 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x33, 0x0a, 0x0c, - 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x05, - 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, 0x74, - 0x73, 0x22, 0x37, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, - 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, - 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x02, 0x20, - 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x22, 0x40, 0x0a, 0x12, 0x4f, 0x6e, - 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, - 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, - 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x02, 0x0a, - 0x14, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x6f, 0x72, - 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6e, 0x75, - 0x6d, 0x47, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6e, 0x75, - 0x6d, 0x5f, 0x67, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x75, 0x6d, 0x47, - 0x63, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, 0x6f, - 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, 0x18, - 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, 0x61, - 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, 0x6c, - 0x6c, 0x6f, 0x63, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x18, 0x07, 0x20, - 0x01, 0x28, 0x04, 0x52, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, 0x69, - 0x76, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, 0x04, - 0x52, 0x0b, 0x6c, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x24, 0x0a, - 0x0e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x73, 0x18, - 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x54, 0x6f, 0x74, 0x61, - 0x6c, 0x4e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, 0x20, - 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfb, 0x01, 0x0a, 0x13, - 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, 0x74, 0x61, 0x6c, - 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, 0x01, - 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, 0x63, - 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, - 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, 0x5f, - 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x70, 0x75, - 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, - 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, - 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, 0x6e, - 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x12, - 0x38, 0x0a, 0x18, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, - 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, 0x28, - 0x04, 0x52, 0x16, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, - 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x05, 0x56, 0x6d, 0x65, - 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, - 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x05, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, - 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, 0x66, - 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, 0x22, - 0x24, 0x0a, 0x06, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, - 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0b, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, - 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, - 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, - 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x05, 0x50, 0x72, 0x6f, - 0x78, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, 0x28, - 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6d, 0x65, 0x73, - 0x73, 0x52, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x6c, 0x65, 0x73, - 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x27, - 0x0a, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0f, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x52, - 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, - 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, - 0x6b, 0x73, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x22, - 0x62, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, - 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x28, 0x0a, - 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, 0x07, - 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x62, 0x6f, 0x75, - 0x6e, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, 0x05, - 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, 0x72, - 0x73, 0x2a, 0x17, 0x0a, 0x0b, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, 0x65, - 0x12, 0x08, 0x0a, 0x04, 0x58, 0x52, 0x41, 0x59, 0x10, 0x00, 0x32, 0x92, 0x07, 0x0a, 0x0b, 0x4e, - 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x53, 0x74, - 0x61, 0x72, 0x74, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, - 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, - 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x28, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3a, 0x0a, 0x0b, - 0x47, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x73, 0x65, - 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, - 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x47, 0x65, 0x74, 0x4c, - 0x6f, 0x67, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, - 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, 0x6f, - 0x67, 0x22, 0x00, 0x30, 0x01, 0x12, 0x40, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, 0x74, - 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, - 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, 0x61, - 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x73, 0x65, 0x72, - 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, - 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x11, 0x47, - 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, - 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, - 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, - 0x41, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x74, - 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, - 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, - 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, - 0x22, 0x00, 0x12, 0x41, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, 0x64, - 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, - 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, - 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, - 0x75, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, - 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, - 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, - 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, 0x73, - 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x61, 0x69, 0x6c, 0x22, 0x58, 0x0a, 0x04, 0x53, 0x74, 0x61, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, + 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, + 0x12, 0x0a, 0x04, 0x74, 0x79, 0x70, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x74, + 0x79, 0x70, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x04, 0x6c, 0x69, 0x6e, 0x6b, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x33, 0x0a, + 0x0c, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, + 0x05, 0x73, 0x74, 0x61, 0x74, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x05, 0x73, 0x74, 0x61, + 0x74, 0x73, 0x22, 0x37, 0x0a, 0x0b, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, + 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x14, 0x0a, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x18, 0x02, + 0x20, 0x01, 0x28, 0x08, 0x52, 0x05, 0x72, 0x65, 0x73, 0x65, 0x74, 0x22, 0x40, 0x0a, 0x12, 0x4f, + 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, + 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x14, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, + 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0xac, 0x02, + 0x0a, 0x14, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x23, 0x0a, 0x0d, 0x6e, 0x75, 0x6d, 0x5f, 0x67, 0x6f, + 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x0c, 0x6e, + 0x75, 0x6d, 0x47, 0x6f, 0x72, 0x6f, 0x75, 0x74, 0x69, 0x6e, 0x65, 0x12, 0x15, 0x0a, 0x06, 0x6e, + 0x75, 0x6d, 0x5f, 0x67, 0x63, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0d, 0x52, 0x05, 0x6e, 0x75, 0x6d, + 0x47, 0x63, 0x12, 0x14, 0x0a, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x03, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x05, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x1f, 0x0a, 0x0b, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x5f, 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x18, 0x04, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0a, 0x74, + 0x6f, 0x74, 0x61, 0x6c, 0x41, 0x6c, 0x6c, 0x6f, 0x63, 0x12, 0x10, 0x0a, 0x03, 0x73, 0x79, 0x73, + 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x03, 0x73, 0x79, 0x73, 0x12, 0x18, 0x0a, 0x07, 0x6d, + 0x61, 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x18, 0x06, 0x20, 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x61, + 0x6c, 0x6c, 0x6f, 0x63, 0x73, 0x12, 0x14, 0x0a, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x18, 0x07, + 0x20, 0x01, 0x28, 0x04, 0x52, 0x05, 0x66, 0x72, 0x65, 0x65, 0x73, 0x12, 0x21, 0x0a, 0x0c, 0x6c, + 0x69, 0x76, 0x65, 0x5f, 0x6f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x18, 0x08, 0x20, 0x01, 0x28, + 0x04, 0x52, 0x0b, 0x6c, 0x69, 0x76, 0x65, 0x4f, 0x62, 0x6a, 0x65, 0x63, 0x74, 0x73, 0x12, 0x24, + 0x0a, 0x0e, 0x70, 0x61, 0x75, 0x73, 0x65, 0x5f, 0x74, 0x6f, 0x74, 0x61, 0x6c, 0x5f, 0x6e, 0x73, + 0x18, 0x09, 0x20, 0x01, 0x28, 0x04, 0x52, 0x0c, 0x70, 0x61, 0x75, 0x73, 0x65, 0x54, 0x6f, 0x74, + 0x61, 0x6c, 0x4e, 0x73, 0x12, 0x16, 0x0a, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x18, 0x0a, + 0x20, 0x01, 0x28, 0x0d, 0x52, 0x06, 0x75, 0x70, 0x74, 0x69, 0x6d, 0x65, 0x22, 0xfb, 0x01, 0x0a, + 0x13, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, + 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x1b, 0x0a, 0x09, 0x6d, 0x65, 0x6d, 0x5f, 0x74, 0x6f, 0x74, 0x61, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x04, 0x52, 0x08, 0x6d, 0x65, 0x6d, 0x54, 0x6f, 0x74, 0x61, + 0x6c, 0x12, 0x19, 0x0a, 0x08, 0x6d, 0x65, 0x6d, 0x5f, 0x75, 0x73, 0x65, 0x64, 0x18, 0x02, 0x20, + 0x01, 0x28, 0x04, 0x52, 0x07, 0x6d, 0x65, 0x6d, 0x55, 0x73, 0x65, 0x64, 0x12, 0x1b, 0x0a, 0x09, + 0x63, 0x70, 0x75, 0x5f, 0x63, 0x6f, 0x72, 0x65, 0x73, 0x18, 0x03, 0x20, 0x01, 0x28, 0x04, 0x52, + 0x08, 0x63, 0x70, 0x75, 0x43, 0x6f, 0x72, 0x65, 0x73, 0x12, 0x1b, 0x0a, 0x09, 0x63, 0x70, 0x75, + 0x5f, 0x75, 0x73, 0x61, 0x67, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x01, 0x52, 0x08, 0x63, 0x70, + 0x75, 0x55, 0x73, 0x61, 0x67, 0x65, 0x12, 0x38, 0x0a, 0x18, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, + 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, + 0x65, 0x64, 0x18, 0x05, 0x20, 0x01, 0x28, 0x04, 0x52, 0x16, 0x69, 0x6e, 0x63, 0x6f, 0x6d, 0x69, + 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, + 0x12, 0x38, 0x0a, 0x18, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x5f, 0x62, 0x61, 0x6e, + 0x64, 0x77, 0x69, 0x64, 0x74, 0x68, 0x5f, 0x73, 0x70, 0x65, 0x65, 0x64, 0x18, 0x06, 0x20, 0x01, + 0x28, 0x04, 0x52, 0x16, 0x6f, 0x75, 0x74, 0x67, 0x6f, 0x69, 0x6e, 0x67, 0x42, 0x61, 0x6e, 0x64, + 0x77, 0x69, 0x64, 0x74, 0x68, 0x53, 0x70, 0x65, 0x65, 0x64, 0x22, 0x17, 0x0a, 0x05, 0x56, 0x6d, + 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, + 0x02, 0x69, 0x64, 0x22, 0x2b, 0x0a, 0x05, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x12, 0x0e, 0x0a, 0x02, + 0x69, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x02, 0x69, 0x64, 0x12, 0x12, 0x0a, 0x04, + 0x66, 0x6c, 0x6f, 0x77, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x66, 0x6c, 0x6f, 0x77, + 0x22, 0x24, 0x0a, 0x06, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, + 0x73, 0x73, 0x77, 0x6f, 0x72, 0x64, 0x22, 0x41, 0x0a, 0x0b, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, + 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x08, 0x70, 0x61, 0x73, 0x73, 0x77, 0x6f, 0x72, + 0x64, 0x12, 0x16, 0x0a, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x18, 0x02, 0x20, 0x01, 0x28, + 0x09, 0x52, 0x06, 0x6d, 0x65, 0x74, 0x68, 0x6f, 0x64, 0x22, 0xb4, 0x01, 0x0a, 0x05, 0x50, 0x72, + 0x6f, 0x78, 0x79, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x18, 0x01, 0x20, 0x01, + 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x56, 0x6d, 0x65, + 0x73, 0x73, 0x52, 0x05, 0x76, 0x6d, 0x65, 0x73, 0x73, 0x12, 0x24, 0x0a, 0x05, 0x76, 0x6c, 0x65, + 0x73, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x56, 0x6c, 0x65, 0x73, 0x73, 0x52, 0x05, 0x76, 0x6c, 0x65, 0x73, 0x73, 0x12, + 0x27, 0x0a, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0f, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x54, 0x72, 0x6f, 0x6a, 0x61, 0x6e, + 0x52, 0x06, 0x74, 0x72, 0x6f, 0x6a, 0x61, 0x6e, 0x12, 0x36, 0x0a, 0x0b, 0x73, 0x68, 0x61, 0x64, + 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x14, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, + 0x63, 0x6b, 0x73, 0x52, 0x0b, 0x73, 0x68, 0x61, 0x64, 0x6f, 0x77, 0x73, 0x6f, 0x63, 0x6b, 0x73, + 0x22, 0x62, 0x0a, 0x04, 0x55, 0x73, 0x65, 0x72, 0x12, 0x14, 0x0a, 0x05, 0x65, 0x6d, 0x61, 0x69, + 0x6c, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x05, 0x65, 0x6d, 0x61, 0x69, 0x6c, 0x12, 0x28, + 0x0a, 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, + 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x50, 0x72, 0x6f, 0x78, 0x79, 0x52, + 0x07, 0x70, 0x72, 0x6f, 0x78, 0x69, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x69, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x73, 0x18, 0x03, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x69, 0x6e, 0x62, 0x6f, + 0x75, 0x6e, 0x64, 0x73, 0x22, 0x2c, 0x0a, 0x05, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x23, 0x0a, + 0x05, 0x75, 0x73, 0x65, 0x72, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x0d, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x52, 0x05, 0x75, 0x73, 0x65, + 0x72, 0x73, 0x2a, 0x17, 0x0a, 0x0b, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x54, 0x79, 0x70, + 0x65, 0x12, 0x08, 0x0a, 0x04, 0x58, 0x52, 0x41, 0x59, 0x10, 0x00, 0x32, 0x92, 0x07, 0x0a, 0x0b, + 0x4e, 0x6f, 0x64, 0x65, 0x53, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x12, 0x36, 0x0a, 0x05, 0x53, + 0x74, 0x61, 0x72, 0x74, 0x12, 0x10, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x1a, 0x19, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, + 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x28, 0x0a, 0x04, 0x53, 0x74, 0x6f, 0x70, 0x12, 0x0e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x12, 0x3a, 0x0a, + 0x0b, 0x47, 0x65, 0x74, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x12, 0x0e, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x19, 0x2e, 0x73, + 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x73, 0x65, 0x49, 0x6e, 0x66, 0x6f, 0x52, + 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x2b, 0x0a, 0x07, 0x47, 0x65, 0x74, + 0x4c, 0x6f, 0x67, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, + 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x0c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4c, + 0x6f, 0x67, 0x22, 0x00, 0x30, 0x01, 0x12, 0x40, 0x0a, 0x0e, 0x47, 0x65, 0x74, 0x53, 0x79, 0x73, + 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1c, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x53, 0x79, 0x73, 0x74, 0x65, 0x6d, 0x53, 0x74, 0x61, 0x74, 0x73, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x42, + 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x0e, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x1a, 0x1d, 0x2e, 0x73, 0x65, + 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x42, 0x61, 0x63, 0x6b, 0x65, 0x6e, 0x64, 0x53, 0x74, 0x61, + 0x74, 0x73, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x42, 0x0a, 0x11, + 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, + 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, + 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, + 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, + 0x12, 0x41, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x4f, 0x75, 0x74, 0x62, 0x6f, 0x75, 0x6e, 0x64, 0x53, + 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, + 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, + 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, + 0x65, 0x22, 0x00, 0x12, 0x41, 0x0a, 0x10, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, 0x6f, 0x75, 0x6e, + 0x64, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, - 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x55, 0x73, 0x65, - 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, - 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x6e, 0x6c, - 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, - 0x00, 0x12, 0x2d, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, 0x73, - 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x28, 0x01, - 0x12, 0x2d, 0x0a, 0x09, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x0e, 0x2e, - 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x42, - 0x18, 0x5a, 0x16, 0x6d, 0x61, 0x72, 0x7a, 0x62, 0x61, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, 0x5f, - 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, - 0x33, + 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x40, 0x0a, 0x0f, 0x47, 0x65, 0x74, 0x49, 0x6e, 0x62, + 0x6f, 0x75, 0x6e, 0x64, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3e, 0x0a, 0x0d, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x73, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, + 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, + 0x15, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, + 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x3d, 0x0a, 0x0c, 0x47, 0x65, 0x74, 0x55, + 0x73, 0x65, 0x72, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, + 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x15, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, + 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x22, 0x00, 0x12, 0x49, 0x0a, 0x12, 0x47, 0x65, 0x74, 0x55, 0x73, + 0x65, 0x72, 0x4f, 0x6e, 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x73, 0x12, 0x14, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x71, 0x75, + 0x65, 0x73, 0x74, 0x1a, 0x1b, 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x4f, 0x6e, + 0x6c, 0x69, 0x6e, 0x65, 0x53, 0x74, 0x61, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, + 0x22, 0x00, 0x12, 0x2d, 0x0a, 0x08, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x12, 0x0d, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x1a, 0x0e, 0x2e, + 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, 0x28, + 0x01, 0x12, 0x2d, 0x0a, 0x09, 0x53, 0x79, 0x6e, 0x63, 0x55, 0x73, 0x65, 0x72, 0x73, 0x12, 0x0e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x55, 0x73, 0x65, 0x72, 0x73, 0x1a, 0x0e, + 0x2e, 0x73, 0x65, 0x72, 0x76, 0x69, 0x63, 0x65, 0x2e, 0x45, 0x6d, 0x70, 0x74, 0x79, 0x22, 0x00, + 0x42, 0x18, 0x5a, 0x16, 0x6d, 0x61, 0x72, 0x7a, 0x62, 0x61, 0x6e, 0x5f, 0x6e, 0x6f, 0x64, 0x65, + 0x5f, 0x67, 0x6f, 0x2f, 0x63, 0x6f, 0x6d, 0x6d, 0x6f, 0x6e, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, + 0x6f, 0x33, } var ( @@ -1311,66 +1264,65 @@ func file_common_service_proto_rawDescGZIP() []byte { } var file_common_service_proto_enumTypes = make([]protoimpl.EnumInfo, 1) -var file_common_service_proto_msgTypes = make([]protoimpl.MessageInfo, 18) +var file_common_service_proto_msgTypes = make([]protoimpl.MessageInfo, 17) var file_common_service_proto_goTypes = []any{ (BackendType)(0), // 0: service.BackendType (*Empty)(nil), // 1: service.Empty (*BaseInfoResponse)(nil), // 2: service.BaseInfoResponse (*Backend)(nil), // 3: service.Backend (*Log)(nil), // 4: service.Log - (*LogList)(nil), // 5: service.LogList - (*Stat)(nil), // 6: service.Stat - (*StatResponse)(nil), // 7: service.StatResponse - (*StatRequest)(nil), // 8: service.StatRequest - (*OnlineStatResponse)(nil), // 9: service.OnlineStatResponse - (*BackendStatsResponse)(nil), // 10: service.BackendStatsResponse - (*SystemStatsResponse)(nil), // 11: service.SystemStatsResponse - (*Vmess)(nil), // 12: service.Vmess - (*Vless)(nil), // 13: service.Vless - (*Trojan)(nil), // 14: service.Trojan - (*Shadowsocks)(nil), // 15: service.Shadowsocks - (*Proxy)(nil), // 16: service.Proxy - (*User)(nil), // 17: service.User - (*Users)(nil), // 18: service.Users + (*Stat)(nil), // 5: service.Stat + (*StatResponse)(nil), // 6: service.StatResponse + (*StatRequest)(nil), // 7: service.StatRequest + (*OnlineStatResponse)(nil), // 8: service.OnlineStatResponse + (*BackendStatsResponse)(nil), // 9: service.BackendStatsResponse + (*SystemStatsResponse)(nil), // 10: service.SystemStatsResponse + (*Vmess)(nil), // 11: service.Vmess + (*Vless)(nil), // 12: service.Vless + (*Trojan)(nil), // 13: service.Trojan + (*Shadowsocks)(nil), // 14: service.Shadowsocks + (*Proxy)(nil), // 15: service.Proxy + (*User)(nil), // 16: service.User + (*Users)(nil), // 17: service.Users } var file_common_service_proto_depIdxs = []int32{ 0, // 0: service.Backend.type:type_name -> service.BackendType - 17, // 1: service.Backend.users:type_name -> service.User - 6, // 2: service.StatResponse.stats:type_name -> service.Stat - 12, // 3: service.Proxy.vmess:type_name -> service.Vmess - 13, // 4: service.Proxy.vless:type_name -> service.Vless - 14, // 5: service.Proxy.trojan:type_name -> service.Trojan - 15, // 6: service.Proxy.shadowsocks:type_name -> service.Shadowsocks - 16, // 7: service.User.proxies:type_name -> service.Proxy - 17, // 8: service.Users.users:type_name -> service.User + 16, // 1: service.Backend.users:type_name -> service.User + 5, // 2: service.StatResponse.stats:type_name -> service.Stat + 11, // 3: service.Proxy.vmess:type_name -> service.Vmess + 12, // 4: service.Proxy.vless:type_name -> service.Vless + 13, // 5: service.Proxy.trojan:type_name -> service.Trojan + 14, // 6: service.Proxy.shadowsocks:type_name -> service.Shadowsocks + 15, // 7: service.User.proxies:type_name -> service.Proxy + 16, // 8: service.Users.users:type_name -> service.User 3, // 9: service.NodeService.Start:input_type -> service.Backend 1, // 10: service.NodeService.Stop:input_type -> service.Empty 1, // 11: service.NodeService.GetBaseInfo:input_type -> service.Empty 1, // 12: service.NodeService.GetLogs:input_type -> service.Empty 1, // 13: service.NodeService.GetSystemStats:input_type -> service.Empty 1, // 14: service.NodeService.GetBackendStats:input_type -> service.Empty - 8, // 15: service.NodeService.GetOutboundsStats:input_type -> service.StatRequest - 8, // 16: service.NodeService.GetOutboundStats:input_type -> service.StatRequest - 8, // 17: service.NodeService.GetInboundsStats:input_type -> service.StatRequest - 8, // 18: service.NodeService.GetInboundStats:input_type -> service.StatRequest - 8, // 19: service.NodeService.GetUsersStats:input_type -> service.StatRequest - 8, // 20: service.NodeService.GetUserStats:input_type -> service.StatRequest - 8, // 21: service.NodeService.GetUserOnlineStats:input_type -> service.StatRequest - 17, // 22: service.NodeService.SyncUser:input_type -> service.User - 18, // 23: service.NodeService.SyncUsers:input_type -> service.Users + 7, // 15: service.NodeService.GetOutboundsStats:input_type -> service.StatRequest + 7, // 16: service.NodeService.GetOutboundStats:input_type -> service.StatRequest + 7, // 17: service.NodeService.GetInboundsStats:input_type -> service.StatRequest + 7, // 18: service.NodeService.GetInboundStats:input_type -> service.StatRequest + 7, // 19: service.NodeService.GetUsersStats:input_type -> service.StatRequest + 7, // 20: service.NodeService.GetUserStats:input_type -> service.StatRequest + 7, // 21: service.NodeService.GetUserOnlineStats:input_type -> service.StatRequest + 16, // 22: service.NodeService.SyncUser:input_type -> service.User + 17, // 23: service.NodeService.SyncUsers:input_type -> service.Users 2, // 24: service.NodeService.Start:output_type -> service.BaseInfoResponse 1, // 25: service.NodeService.Stop:output_type -> service.Empty 2, // 26: service.NodeService.GetBaseInfo:output_type -> service.BaseInfoResponse 4, // 27: service.NodeService.GetLogs:output_type -> service.Log - 11, // 28: service.NodeService.GetSystemStats:output_type -> service.SystemStatsResponse - 10, // 29: service.NodeService.GetBackendStats:output_type -> service.BackendStatsResponse - 7, // 30: service.NodeService.GetOutboundsStats:output_type -> service.StatResponse - 7, // 31: service.NodeService.GetOutboundStats:output_type -> service.StatResponse - 7, // 32: service.NodeService.GetInboundsStats:output_type -> service.StatResponse - 7, // 33: service.NodeService.GetInboundStats:output_type -> service.StatResponse - 7, // 34: service.NodeService.GetUsersStats:output_type -> service.StatResponse - 7, // 35: service.NodeService.GetUserStats:output_type -> service.StatResponse - 9, // 36: service.NodeService.GetUserOnlineStats:output_type -> service.OnlineStatResponse + 10, // 28: service.NodeService.GetSystemStats:output_type -> service.SystemStatsResponse + 9, // 29: service.NodeService.GetBackendStats:output_type -> service.BackendStatsResponse + 6, // 30: service.NodeService.GetOutboundsStats:output_type -> service.StatResponse + 6, // 31: service.NodeService.GetOutboundStats:output_type -> service.StatResponse + 6, // 32: service.NodeService.GetInboundsStats:output_type -> service.StatResponse + 6, // 33: service.NodeService.GetInboundStats:output_type -> service.StatResponse + 6, // 34: service.NodeService.GetUsersStats:output_type -> service.StatResponse + 6, // 35: service.NodeService.GetUserStats:output_type -> service.StatResponse + 8, // 36: service.NodeService.GetUserOnlineStats:output_type -> service.OnlineStatResponse 1, // 37: service.NodeService.SyncUser:output_type -> service.Empty 1, // 38: service.NodeService.SyncUsers:output_type -> service.Empty 24, // [24:39] is the sub-list for method output_type @@ -1391,7 +1343,7 @@ func file_common_service_proto_init() { GoPackagePath: reflect.TypeOf(x{}).PkgPath(), RawDescriptor: file_common_service_proto_rawDesc, NumEnums: 1, - NumMessages: 18, + NumMessages: 17, NumExtensions: 0, NumServices: 1, }, diff --git a/common/service.proto b/common/service.proto index 2a46208..665b9ce 100644 --- a/common/service.proto +++ b/common/service.proto @@ -30,10 +30,6 @@ message Log { string detail = 1; } -message LogList { - repeated string logs = 1; -} - // stats message Stat { string name = 1; diff --git a/controller/rest/log.go b/controller/rest/log.go index c9239ec..8a97f17 100644 --- a/controller/rest/log.go +++ b/controller/rest/log.go @@ -1,67 +1,38 @@ package rest import ( + "fmt" "net/http" - "time" - - "github.com/m03ed/marzban-node-go/common" - "github.com/m03ed/marzban-node-go/config" ) -func (s *Service) sendLogs(w http.ResponseWriter, logs []string, status int) { - w.WriteHeader(status) - common.SendProtoResponse(w, &common.LogList{ - Logs: logs, - }) -} - func (s *Service) GetLogs(w http.ResponseWriter, r *http.Request) { - logs := make([]string, 0, config.MaxLogPerRequest) - logChan := s.controller.GetBackend().GetLogs() - timeout := time.After(60 * time.Second) - counter := 0 + flusher, ok := w.(http.Flusher) + if !ok { + http.Error(w, "Streaming unsupported", http.StatusInternalServerError) + return + } + + w.Header().Set("Content-Type", "text/event-stream") + w.Header().Set("Cache-Control", "no-cache") + w.Header().Set("Connection", "keep-alive") - ticker := time.NewTicker(100 * time.Millisecond) // Periodic check every 100ms - defer ticker.Stop() + logChan := s.controller.GetBackend().GetLogs() for { select { case log, ok := <-logChan: - if !ok { // If the channel is closed, break the loop - s.sendLogs(w, logs, http.StatusInternalServerError) - } - - // Add the log to the logs slice using the counter - if counter < cap(logs) { - logs = logs[:counter+1] - logs[counter] = log - counter++ - } - - if counter >= config.MaxLogPerRequest { - // Send the collected logs immediately - s.sendLogs(w, logs, http.StatusOK) + if !ok { return } - continue - case <-ticker.C: - if len(logs) > 0 && len(logChan) == 0 { - // If the cache is not empty and the channel is empty, send the logs - s.sendLogs(w, logs, http.StatusOK) + _, err := fmt.Fprintf(w, "%s\n", log) + if err != nil { return } - case <-timeout: - if len(logs) > 0 { - s.sendLogs(w, logs, http.StatusOK) - } else { - s.sendLogs(w, logs, http.StatusNoContent) - } - return + flusher.Flush() - case <-r.Context().Done(): // If the client disconnects or the request is canceled - s.sendLogs(w, logs, http.StatusRequestTimeout) + case <-r.Context().Done(): return } } diff --git a/controller/rest/middleware.go b/controller/rest/middleware.go index d5779c4..cd0caf0 100644 --- a/controller/rest/middleware.go +++ b/controller/rest/middleware.go @@ -78,6 +78,9 @@ func (s *Service) checkBackendMiddleware(next http.Handler) http.Handler { func LogRequest(next http.Handler) http.Handler { return http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) { ww := middleware.NewWrapResponseWriter(w, r.ProtoMajor) + + log.Println(fmt.Sprintf("[API] New requesrt from %s, %s, %s", r.RemoteAddr, r.Method, r.URL.Path)) + next.ServeHTTP(ww, r) log.Println(fmt.Sprintf("[API] %s, %s, %s, %d", r.RemoteAddr, r.Method, r.URL.Path, ww.Status())) diff --git a/controller/rest/rest_test.go b/controller/rest/rest_test.go index 072766a..b4471a8 100644 --- a/controller/rest/rest_test.go +++ b/controller/rest/rest_test.go @@ -1,9 +1,11 @@ package rest import ( + "bufio" "bytes" "context" "crypto/tls" + "errors" "fmt" "io" "log" @@ -37,11 +39,15 @@ var ( // httpClient creates a custom HTTP client with TLS configuration func createHTTPClient(tlsConfig *tls.Config) *http.Client { + transport := &http.Transport{ + TLSClientConfig: tlsConfig, + Protocols: new(http.Protocols), + } + transport.Protocols.SetHTTP2(true) + return &http.Client{ - Transport: &http.Transport{ - TLSClientConfig: tlsConfig, - }, - Timeout: 10 * time.Second, + Transport: transport, + Timeout: 10 * time.Second, } } @@ -113,6 +119,26 @@ func TestRESTConnection(t *testing.T) { return nil } + createAuthenticatedStreamingRequest := func(method, endpoint string) (io.ReadCloser, error) { + req, err := http.NewRequest(method, url+endpoint, nil) + if err != nil { + return nil, err + } + req.Header.Set("Authorization", "Bearer "+sessionId) + + resp, err := client.Do(req) + if err != nil { + return nil, err + } + + if resp.StatusCode != http.StatusOK { + defer resp.Body.Close() + return nil, fmt.Errorf("unexpected status code: %d", resp.StatusCode) + } + + return resp.Body, nil + } + configFile, err := os.ReadFile(configPath) if err != nil { t.Fatal(err) @@ -226,13 +252,24 @@ func TestRESTConnection(t *testing.T) { t.Fatalf("Sync user request failed: %v", err) } - var logs common.LogList - if err = createAuthenticatedRequest("GET", "/logs", &common.Empty{}, &logs); err != nil { - t.Fatalf("Sync user request failed: %v", err) + reader, err := createAuthenticatedStreamingRequest("GET", "/logs") + if err != nil { + t.Fatalf("Failed to start streaming logs: %v", err) } + defer reader.Close() + + scanner := bufio.NewScanner(reader) - for _, newLog := range logs.GetLogs() { - fmt.Println("Log detail:", newLog) + for scanner.Scan() { + fmt.Println(scanner.Text()) + } + + if err = scanner.Err(); err != nil { + if errors.Is(err, context.DeadlineExceeded) { + t.Logf("Skipping context deadline exceeded error: %v", err) + return + } + t.Fatalf("Error reading streaming logs: %v", err) } // Try To Get Node Stats diff --git a/go.mod b/go.mod index 98a6350..fe78e41 100644 --- a/go.mod +++ b/go.mod @@ -1,16 +1,16 @@ module github.com/m03ed/marzban-node-go -go 1.23.4 +go 1.24.0 require ( - github.com/go-chi/chi/v5 v5.1.0 + github.com/go-chi/chi/v5 v5.2.1 github.com/google/uuid v1.6.0 github.com/grpc-ecosystem/go-grpc-middleware v1.4.0 github.com/joho/godotenv v1.5.1 github.com/shirou/gopsutil v3.21.11+incompatible github.com/xtls/xray-core v1.8.25-0.20241130041635-98a72b6fb49b - google.golang.org/grpc v1.68.1 - google.golang.org/protobuf v1.35.2 + google.golang.org/grpc v1.70.0 + google.golang.org/protobuf v1.36.5 ) require ( @@ -42,17 +42,17 @@ require ( github.com/yusufpapurcu/wmi v1.2.4 // indirect go.uber.org/mock v0.4.0 // indirect go4.org/netipx v0.0.0-20231129151722-fdeea329fbba // indirect - golang.org/x/crypto v0.31.0 // indirect + golang.org/x/crypto v0.33.0 // indirect golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc // indirect golang.org/x/mod v0.18.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sys v0.28.0 // indirect - golang.org/x/text v0.21.0 // indirect + golang.org/x/net v0.35.0 // indirect + golang.org/x/sys v0.30.0 // indirect + golang.org/x/text v0.22.0 // indirect golang.org/x/time v0.5.0 // indirect golang.org/x/tools v0.22.0 // indirect golang.zx2c4.com/wintun v0.0.0-20230126152724-0fa3db229ce2 // indirect golang.zx2c4.com/wireguard v0.0.0-20231211153847-12269c276173 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a // indirect gvisor.dev/gvisor v0.0.0-20231202080848-1f7806d17489 // indirect lukechampine.com/blake3 v1.3.0 // indirect ) diff --git a/go.sum b/go.sum index 7427af2..83e8abf 100644 --- a/go.sum +++ b/go.sum @@ -22,12 +22,14 @@ github.com/envoyproxy/go-control-plane v0.9.4/go.mod h1:6rpuAdCZL397s3pYoYcLgu1m github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c= github.com/ghodss/yaml v1.0.1-0.20220118164431-d8423dcdf344 h1:Arcl6UOIS/kgO2nW3A65HN+7CMjSDP/gofXL4CZt1V4= github.com/ghodss/yaml v1.0.1-0.20220118164431-d8423dcdf344/go.mod h1:GIjDIg/heH5DOkXY3YJ/wNhfHsQHoXGjl8G8amsYQ1I= -github.com/go-chi/chi/v5 v5.1.0 h1:acVI1TYaD+hhedDJ3r54HyA6sExp3HfXq7QWEEY/xMw= -github.com/go-chi/chi/v5 v5.1.0/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/chi/v5 v5.2.1 h1:KOIHODQj58PmL80G2Eak4WdvUzjSJSm0vG72crDCqb8= +github.com/go-chi/chi/v5 v5.2.1/go.mod h1:L2yAIGWB3H+phAw1NxKwWM+7eUH/lU8pOMm5hHcoops= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= -github.com/go-logr/logr v1.4.1 h1:pKouT5E8xu9zeFC39JXRDukb6JFQPXM5p5I91188VAQ= -github.com/go-logr/logr v1.4.1/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY= +github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= +github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= +github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-ole/go-ole v1.2.6/go.mod h1:pprOEPIfldk/42T2oK7lQ4v4JSDwmV0As9GaiUsvbm0= github.com/go-ole/go-ole v1.3.0 h1:Dt6ye7+vXGIKZ7Xtk4s6/xVdGDQynvom7xCFEdWr6uE= github.com/go-ole/go-ole v1.3.0/go.mod h1:5LS6F96DhAwUc7C+1HLexzMXY1xGRSryjyPPKW6zv78= @@ -128,6 +130,16 @@ github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9de github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yusufpapurcu/wmi v1.2.4 h1:zFUKzehAFReQwLys1b/iSMl+JQGSCSjtVqQn9bBrPo0= github.com/yusufpapurcu/wmi v1.2.4/go.mod h1:SBZ9tNy3G9/m5Oi98Zks0QjeHVDvuK0qfxQmPyzfmi0= +go.opentelemetry.io/otel v1.32.0 h1:WnBN+Xjcteh0zdk01SVqV55d/m62NJLJdIyb4y/WO5U= +go.opentelemetry.io/otel v1.32.0/go.mod h1:00DCVSB0RQcnzlwyTfqtxSm+DRr9hpYrHjNGiBHVQIg= +go.opentelemetry.io/otel/metric v1.32.0 h1:xV2umtmNcThh2/a/aCP+h64Xx5wsj8qqnkYZktzNa0M= +go.opentelemetry.io/otel/metric v1.32.0/go.mod h1:jH7CIbbK6SH2V2wE16W05BHCtIDzauciCRLoc/SyMv8= +go.opentelemetry.io/otel/sdk v1.32.0 h1:RNxepc9vK59A8XsgZQouW8ue8Gkb4jpWtJm9ge5lEG4= +go.opentelemetry.io/otel/sdk v1.32.0/go.mod h1:LqgegDBjKMmb2GC6/PrTnteJG39I8/vJCAP9LlJXEjU= +go.opentelemetry.io/otel/sdk/metric v1.32.0 h1:rZvFnvmvawYb0alrYkjraqJq0Z4ZUJAiyYCU9snn1CU= +go.opentelemetry.io/otel/sdk/metric v1.32.0/go.mod h1:PWeZlq0zt9YkYAp3gjKZ0eicRYvOh1Gd+X99x6GHpCQ= +go.opentelemetry.io/otel/trace v1.32.0 h1:WIC9mYrXf8TmY/EXuULKc8hR17vE+Hjv2cssQDe03fM= +go.opentelemetry.io/otel/trace v1.32.0/go.mod h1:+i4rkvCraA+tG6AzwloGaCtkx53Fa+L+V8e9a7YvhT8= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.10/go.mod h1:8a7PlsEVH3e/a/GLqe5IIrQx6GzcnRmZEufDUTk4A7A= go.uber.org/mock v0.4.0 h1:VcM4ZOtdbR4f6VXfiOpwpVJDL6lCReaZ6mw31wqh7KU= @@ -139,8 +151,8 @@ go4.org/netipx v0.0.0-20231129151722-fdeea329fbba/go.mod h1:PLyyIXexvUFg3Owu6p/W golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= -golang.org/x/crypto v0.31.0 h1:ihbySMvVjLAeSH1IbfcRTkD/iNscyz8rGzjF/E5hV6U= -golang.org/x/crypto v0.31.0/go.mod h1:kDsLvtWBEx7MV9tJOj9bnXsPbxwJQ6csT/x4KIN4Ssk= +golang.org/x/crypto v0.33.0 h1:IOBPskki6Lysi0lo9qQvbxiQ+FvsCC/YWOecCHAixus= +golang.org/x/crypto v0.33.0/go.mod h1:bVdXmD7IV/4GdElGPozy6U7lWdRXA4qyRVGJV57uQ5M= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc h1:O9NuF4s+E/PvMIy+9IUZB9znFwUIXEWSstNjek6VpVg= golang.org/x/exp v0.0.0-20240531132922-fd00a4e0eefc/go.mod h1:XtvwrStGgqGPLc4cjQfWqZHG1YFdYs6swckp8vpsjnc= @@ -160,16 +172,16 @@ golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn golang.org/x/net v0.0.0-20190620200207-3b0461eec859/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-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= -golang.org/x/net v0.31.0 h1:68CPQngjLL0r2AlUKiSxtQFKvzRVbnzLwMUn5SzcLHo= -golang.org/x/net v0.31.0/go.mod h1:P4fl1q7dY2hnZFxEk4pPSkDHF+QqjitcnDjUQyMM+pM= +golang.org/x/net v0.35.0 h1:T5GQRQb2y08kTAByq9L4/bz8cipCdA8FbRTXewonqY8= +golang.org/x/net v0.35.0/go.mod h1:EglIi67kWsHKlRzzVMUD93VMSWGFOMSZgxFjparz1Qk= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= 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-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-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.11.0 h1:GGz8+XQP4FvTTrjZPzNKTMFtSXH80RAzG+5ghFPgK9w= +golang.org/x/sync v0.11.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/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-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= @@ -181,12 +193,12 @@ golang.org/x/sys v0.1.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.2.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.28.0 h1:Fksou7UEQUWlKvIdsqzJmUmCX3cZuD2+P3XyyzwMhlA= -golang.org/x/sys v0.28.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.30.0 h1:QjkSwP/36a20jFYWkSue1YwXzLmsV5Gfq7Eiy72C1uc= +golang.org/x/sys v0.30.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.21.0 h1:zyQAAkrwaneQ066sspRyJaG9VNi/YJ1NfzcGB3hZ/qo= -golang.org/x/text v0.21.0/go.mod h1:4IBbMaMmOPCJ8SecivzSH54+73PCFmPWxNTLm+vZkEQ= +golang.org/x/text v0.22.0 h1:bofq7m3/HAFvbF51jz3Q9wLg3jkvSPuiZu/pD1XwgtM= +golang.org/x/text v0.22.0/go.mod h1:YRoo4H8PVmsu+E3Ou7cqLVH8oXWIHVoX0jqUWALQhfY= golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= @@ -213,17 +225,17 @@ google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7 google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190819201941-24fa4b261c55/go.mod h1:DMBHOl98Agz4BDEuKkezgsaosCRResVns1a3J2ZsMNc= google.golang.org/genproto v0.0.0-20200423170343-7949de9c1215/go.mod h1:55QSHmfGQM9UVYDPBsyGGes0y52j32PQ3BqQfXhyH3c= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697 h1:LWZqQOEjDyONlF1H6afSWpAL/znlREo2tHfLoe+8LMA= -google.golang.org/genproto/googleapis/rpc v0.0.0-20241118233622-e639e219e697/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a h1:hgh8P4EuoxpsuKMXX/To36nOFD7vixReXgn8lPGnt+o= +google.golang.org/genproto/googleapis/rpc v0.0.0-20241202173237-19429a94021a/go.mod h1:5uTbfoYQed2U9p3KIj2/Zzm02PYhndfdmML0qC3q3FU= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= 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.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk= google.golang.org/grpc v1.29.1/go.mod h1:itym6AZVZYACWQqET3MqgPpjcuV5QH3BxFS3IjizoKk= -google.golang.org/grpc v1.68.1 h1:oI5oTa11+ng8r8XMMN7jAOmWfPZWbYpCFaMUTACxkM0= -google.golang.org/grpc v1.68.1/go.mod h1:+q1XYFJjShcqn0QZHvCyeR4CXPA+llXIeUIfIe00waw= -google.golang.org/protobuf v1.35.2 h1:8Ar7bF+apOIoThw1EdZl0p1oWvMqTHmpA2fRTyZO8io= -google.golang.org/protobuf v1.35.2/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= +google.golang.org/grpc v1.70.0 h1:pWFv03aZoHzlRKHWicjsZytKAiYCtNS0dHbXnIdq7jQ= +google.golang.org/grpc v1.70.0/go.mod h1:ofIJqVKDXx/JiXrwr2IG4/zwdH9txy3IlF40RmcJSQw= +google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM= +google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE= 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/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= From 99bae39a11b4c933becc69605efb2a8c34f3a91c Mon Sep 17 00:00:00 2001 From: Mohammad Date: Sun, 16 Feb 2025 14:47:20 +0330 Subject: [PATCH 31/38] fix: kcp for flow --- backend/xray/user.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/backend/xray/user.go b/backend/xray/user.go index 0be5ded..c2b30f4 100644 --- a/backend/xray/user.go +++ b/backend/xray/user.go @@ -53,7 +53,7 @@ func isActiveInbound(inbound *Inbound, inbounds []string, settings api.ProxySett if settings.Vless.Flow != "" { networkType := inbound.StreamSettings["network"] - if !(networkType == "tcp" || networkType == "raw" || networkType == "mkcp") { + if !(networkType == "tcp" || networkType == "raw" || networkType == "kcp") { account.Flow = "" return &account, true } From 4cbea33dec4dd27c1d433a894f2dc9be9724ddff Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 16 Feb 2025 20:36:24 +0330 Subject: [PATCH 32/38] feat: check inbound more carefuly --- backend/xray/user.go | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/backend/xray/user.go b/backend/xray/user.go index c2b30f4..4133bee 100644 --- a/backend/xray/user.go +++ b/backend/xray/user.go @@ -51,16 +51,15 @@ func isActiveInbound(inbound *Inbound, inbounds []string, settings api.ProxySett account := *settings.Vless if settings.Vless.Flow != "" { - networkType := inbound.StreamSettings["network"] - if !(networkType == "tcp" || networkType == "raw" || networkType == "kcp") { + networkType, ok := inbound.StreamSettings["network"] + if !ok || !(networkType == "tcp" || networkType == "raw" || networkType == "kcp") { account.Flow = "" return &account, true } - securityType := inbound.StreamSettings["security"] - - if !(securityType == "tls" || securityType == "reality") { + securityType, ok := inbound.StreamSettings["security"] + if !ok || !(securityType == "tls" || securityType == "reality") { account.Flow = "" return &account, true } @@ -103,8 +102,8 @@ func isActiveInbound(inbound *Inbound, inbounds []string, settings api.ProxySett return settings.Trojan, true case Shadowsocks: - method, methodOk := inbound.Settings["method"].(string) - if methodOk && strings.HasPrefix("2022-blake3", method) { + method, ok := inbound.Settings["method"].(string) + if ok && strings.HasPrefix("2022-blake3", method) { if settings.Shadowsocks2022 == nil { return nil, false } From dfc97ccfe399794c2f07db8748f2d6675d5ff6f5 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 16 Feb 2025 22:15:31 +0330 Subject: [PATCH 33/38] feat: add python library to readme --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 91c7c87..2f49285 100644 --- a/README.md +++ b/README.md @@ -131,8 +131,9 @@ To add bridge to your project use: go get github.com/m03ed/gozargah_node_bridge ``` ## Python -``` -Not released yet +[gozargah-node-bridge-py](https://github.com/m03ed/gozargah_node_bridge_py) +```shell +pip install gozargah-node-bridge ``` # Donation From abaa6156fbd52ec8a228ea914bca2055959f0180 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Mon, 17 Feb 2025 22:11:11 +0330 Subject: [PATCH 34/38] refactor: re-write workflows --- .github/workflows/docker-build-dev.yml | 6 +-- .github/workflows/docker-build.yml | 64 ++++++++++++++++++++++++++ .github/workflows/release.yml | 27 ++--------- 3 files changed, 70 insertions(+), 27 deletions(-) create mode 100644 .github/workflows/docker-build.yml diff --git a/.github/workflows/docker-build-dev.yml b/.github/workflows/docker-build-dev.yml index 306f5a8..147108e 100644 --- a/.github/workflows/docker-build-dev.yml +++ b/.github/workflows/docker-build-dev.yml @@ -1,9 +1,9 @@ -name: Build and Push Docker Image (Non-Main Branches) +name: Build and Push Docker Image (All Branches) on: push: - branches-ignore: - - 'main' + branches: + - '*' env: REGISTRY: ghcr.io diff --git a/.github/workflows/docker-build.yml b/.github/workflows/docker-build.yml new file mode 100644 index 0000000..0c48957 --- /dev/null +++ b/.github/workflows/docker-build.yml @@ -0,0 +1,64 @@ +name: Build and Push Docker Image (On Release) + +on: + release: + types: [created] + +env: + REGISTRY: ghcr.io + IMAGE_NAME: ${{ github.repository }} + +jobs: + build: + runs-on: ubuntu-latest + permissions: + contents: read + packages: write + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Login to Docker Hub + uses: docker/login-action@v2 + with: + username: ${{ secrets.DOCKERHUB_USERNAME }} + password: ${{ secrets.DOCKERHUB_TOKEN }} + + - name: Log in to the Container registry + uses: docker/login-action@v3 + with: + registry: ghcr.io + username: ${{ github.actor }} + password: ${{ secrets.GITHUB_TOKEN }} + + - name: Set up Docker Buildx + uses: docker/setup-buildx-action@v3 + + - name: Extract metadata (tags, labels) for Docker + id: meta + uses: docker/metadata-action@v5 + with: + images: ${{ env.REGISTRY }}/m03ed/gozargah-node + + - name: Set Docker tags + id: tags + run: | + if [ "${{ github.event.release.prerelease }}" = "true" ]; then + # Pre-release: only version tags + echo "DOCKER_TAGS=m03ed/gozargah-node:${{ github.ref_name }},ghcr.io/m03ed/gozargah-node:${{ github.ref_name }}" >> $GITHUB_ENV + else + # Regular release: version tags + latest tags + echo "DOCKER_TAGS=m03ed/gozargah-node:${{ github.ref_name }},m03ed/gozargah-node:latest,ghcr.io/m03ed/gozargah-node:${{ github.ref_name }},ghcr.io/m03ed/gozargah-node:latest" >> $GITHUB_ENV + fi + + - name: Build and push Docker image + uses: docker/build-push-action@v5 + with: + context: . + platforms: linux/amd64,linux/arm64 + push: true + tags: ${{ env.DOCKER_TAGS }} + labels: ${{ steps.meta.outputs.labels }} + cache-from: type=gha + cache-to: type=gha,mode=max \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 2142c34..3460d20 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,32 +1,11 @@ name: Create Release on: - push: - tags: - - "v*.*.*" + release: + types: [created] jobs: - create_release: - permissions: - contents: write - - runs-on: ubuntu-latest - outputs: - upload_url: ${{steps.create_release_before.outputs.upload_url}} - steps: - - name: Create Release - id: create_release_before - uses: actions/create-release@v1 - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - with: - tag_name: ${{ github.ref_name }} - release_name: ${{ github.ref_name }} - draft: false - prerelease: false - build: - needs: create_release permissions: contents: write strategy: @@ -159,7 +138,7 @@ jobs: env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: - upload_url: ${{ needs.create_release.outputs.upload_url }} + upload_url: ${{ github.event.release.upload_url }} asset_path: ./gozargah_node-${{ env.ASSET_NAME }}.zip asset_name: gozargah_node-${{ env.ASSET_NAME }}.zip asset_content_type: application/zip From 4f8119d100bbe4d20462752b8be760c571d4d8a5 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Tue, 18 Feb 2025 12:01:52 +0330 Subject: [PATCH 35/38] chore: avoid generating binary for not popular os --- .github/workflows/release.yml | 66 +++++++++++++++++++---------------- 1 file changed, 36 insertions(+), 30 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 3460d20..919fd22 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -11,19 +11,23 @@ jobs: strategy: matrix: # Include amd64 on all platforms. - goos: [ windows, freebsd, openbsd, linux, darwin ] + goos: + # - windows + - freebsd + - openbsd + - linux + # - darwin + goarch: [ amd64, 386 ] gotoolchain: [ "" ] patch-assetname: [ "" ] - exclude: - # Exclude i386 on darwin - - goarch: 386 - goos: darwin + # exclude: + include: # BEGIN MacOS ARM64 - - goos: darwin - goarch: arm64 + # - goos: darwin + # goarch: arm64 # END MacOS ARM64 # BEGIN Linux ARM 5 6 7 - goos: linux @@ -37,35 +41,37 @@ jobs: goarm: 5 # END Linux ARM 5 6 7 # Windows ARM - - goos: windows - goarch: arm64 - - goos: windows - goarch: arm - goarm: 7 + # - goos: windows + # goarch: arm64 + # - goos: windows + # goarch: arm + # goarm: 7 # BEGIN Other architectures - # BEGIN riscv64 & ARM64 & LOONG64 + # BEGIN ARM64 - goos: linux goarch: arm64 - - goos: linux - goarch: riscv64 - - goos: linux - goarch: loong64 - # END riscv64 & ARM64 & LOONG64 + # END ARM64 + #BEGIN riscv64 & LOONG64 + # - goos: linux + # goarch: riscv64 + # - goos: linux + # goarch: loong64 + # END riscv64 & LOONG64 # BEGIN MIPS - - goos: linux - goarch: mips64 - - goos: linux - goarch: mips64le - - goos: linux - goarch: mipsle - - goos: linux - goarch: 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 + # - goos: linux + # goarch: ppc64 + # - goos: linux + # goarch: ppc64le # END PPC # BEGIN FreeBSD ARM - goos: freebsd From 254c14cb17a8d2d427cd9176f187f91b1dfd3b49 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Wed, 19 Feb 2025 17:08:49 +0330 Subject: [PATCH 36/38] fix: module name in files --- .github/workflows/release.yml | 22 ++++++++-------------- backend/backend.go | 2 +- backend/handler.go | 2 +- backend/xray/api/account.go | 2 +- backend/xray/api/stats.go | 2 +- backend/xray/config.go | 4 ++-- backend/xray/core.go | 2 +- backend/xray/log.go | 2 +- backend/xray/user.go | 4 ++-- backend/xray/xray.go | 8 ++++---- backend/xray/xray_test.go | 6 +++--- controller/controller.go | 10 +++++----- controller/rest/base.go | 6 +++--- controller/rest/rest_test.go | 8 ++++---- controller/rest/service.go | 4 ++-- controller/rest/stats.go | 2 +- controller/rest/user.go | 2 +- controller/rpc/base.go | 6 +++--- controller/rpc/log.go | 2 +- controller/rpc/rpc_test.go | 8 ++++---- controller/rpc/service.go | 4 ++-- controller/rpc/stats.go | 2 +- controller/rpc/user.go | 2 +- docker-compose.yml | 4 +++- go.mod | 2 +- main.go | 12 ++++++------ tools/sys.go | 2 +- 27 files changed, 64 insertions(+), 68 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 919fd22..4336bfe 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -113,7 +113,7 @@ jobs: _NAME="${GOOS}-${GOARCH}" fi echo "ASSET_NAME=$_NAME" >> $GITHUB_ENV - echo "BINARY_NAME=gozargah_node-${_NAME}" >> $GITHUB_ENV + echo "BINARY_NAME=gozargah-node-${_NAME}" >> $GITHUB_ENV - name: Set up Go uses: actions/setup-go@v5 @@ -122,21 +122,15 @@ jobs: check-latest: true - name: Get project dependencies - run: go mod download + run: make deps - - name: Build binary + - name: Build binary and zip run: | mkdir -p dist make - find . -type f -name "gozargah_node*" -exec mv {} "./gozargah_node-${{ env.ASSET_NAME }}" \; - # Create zip file - zip "./gozargah_node-${{ env.ASSET_NAME }}.zip" "./gozargah_node-${{ env.ASSET_NAME }}" - - - name: Upload binaries to Artifacts - uses: actions/upload-artifact@v4 - with: - name: gozargah_node-${{ matrix.goos }}-${{ matrix.goarch }}${{ matrix.goarm || '' }} - path: gozargah_node-${{ env.ASSET_NAME }}* + find . -type f -name "gozargah-node*" -exec mv {} "./gozargah-node-${{ env.ASSET_NAME }}" \; + # Create zip file with max compression and include README & LICENSE + zip -9 "./gozargah-node-${{ env.ASSET_NAME }}.zip" "./gozargah-node-${{ env.ASSET_NAME }}" README.md LICENSE - name: Upload Release Asset id: upload-release-asset @@ -145,6 +139,6 @@ jobs: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} with: upload_url: ${{ github.event.release.upload_url }} - asset_path: ./gozargah_node-${{ env.ASSET_NAME }}.zip - asset_name: gozargah_node-${{ env.ASSET_NAME }}.zip + asset_path: ./gozargah-node-${{ env.ASSET_NAME }}.zip + asset_name: gozargah-node-${{ env.ASSET_NAME }}.zip asset_content_type: application/zip diff --git a/backend/backend.go b/backend/backend.go index 33a964d..723470d 100644 --- a/backend/backend.go +++ b/backend/backend.go @@ -3,7 +3,7 @@ package backend import ( "context" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/common" ) type Backend interface { diff --git a/backend/handler.go b/backend/handler.go index d4e45b9..674d4a1 100644 --- a/backend/handler.go +++ b/backend/handler.go @@ -2,7 +2,7 @@ package backend import ( "context" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/common" ) type Handler interface { diff --git a/backend/xray/api/account.go b/backend/xray/api/account.go index 07272c6..196d8f0 100644 --- a/backend/xray/api/account.go +++ b/backend/xray/api/account.go @@ -9,7 +9,7 @@ import ( "github.com/xtls/xray-core/proxy/vless" "github.com/xtls/xray-core/proxy/vmess" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/common" ) type Account interface { diff --git a/backend/xray/api/stats.go b/backend/xray/api/stats.go index 0bcec76..8f07a4c 100644 --- a/backend/xray/api/stats.go +++ b/backend/xray/api/stats.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/common" ) func (x *XrayHandler) GetSysStats(ctx context.Context) (*common.BackendStatsResponse, error) { diff --git a/backend/xray/config.go b/backend/xray/config.go index 04fc0e4..bcfcec6 100644 --- a/backend/xray/config.go +++ b/backend/xray/config.go @@ -7,8 +7,8 @@ import ( "strings" "sync" - "github.com/m03ed/marzban-node-go/backend/xray/api" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/backend/xray/api" + "github.com/m03ed/gozargah-node/common" "github.com/xtls/xray-core/infra/conf" ) diff --git a/backend/xray/core.go b/backend/xray/core.go index b97ecab..626167a 100644 --- a/backend/xray/core.go +++ b/backend/xray/core.go @@ -11,7 +11,7 @@ import ( "regexp" "sync" - nodeLogger "github.com/m03ed/marzban-node-go/logger" + nodeLogger "github.com/m03ed/gozargah-node/logger" ) type Core struct { diff --git a/backend/xray/log.go b/backend/xray/log.go index 6f7133a..791f91f 100644 --- a/backend/xray/log.go +++ b/backend/xray/log.go @@ -7,7 +7,7 @@ import ( "regexp" "strings" - nodeLogger "github.com/m03ed/marzban-node-go/logger" + nodeLogger "github.com/m03ed/gozargah-node/logger" ) var ( diff --git a/backend/xray/user.go b/backend/xray/user.go index 4133bee..144caf6 100644 --- a/backend/xray/user.go +++ b/backend/xray/user.go @@ -7,8 +7,8 @@ import ( "slices" "strings" - "github.com/m03ed/marzban-node-go/backend/xray/api" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/backend/xray/api" + "github.com/m03ed/gozargah-node/common" ) func setupUserAccount(user *common.User) (api.ProxySettings, error) { diff --git a/backend/xray/xray.go b/backend/xray/xray.go index 56f5244..d3fcca0 100644 --- a/backend/xray/xray.go +++ b/backend/xray/xray.go @@ -14,10 +14,10 @@ import ( "sync" "time" - "github.com/m03ed/marzban-node-go/backend" - "github.com/m03ed/marzban-node-go/backend/xray/api" - "github.com/m03ed/marzban-node-go/common" - nodeLogger "github.com/m03ed/marzban-node-go/logger" + "github.com/m03ed/gozargah-node/backend" + "github.com/m03ed/gozargah-node/backend/xray/api" + "github.com/m03ed/gozargah-node/common" + nodeLogger "github.com/m03ed/gozargah-node/logger" ) type Xray struct { diff --git a/backend/xray/xray_test.go b/backend/xray/xray_test.go index 8ac31e4..778e584 100644 --- a/backend/xray/xray_test.go +++ b/backend/xray/xray_test.go @@ -9,9 +9,9 @@ import ( "github.com/google/uuid" - "github.com/m03ed/marzban-node-go/backend" - "github.com/m03ed/marzban-node-go/common" - "github.com/m03ed/marzban-node-go/tools" + "github.com/m03ed/gozargah-node/backend" + "github.com/m03ed/gozargah-node/common" + "github.com/m03ed/gozargah-node/tools" ) var ( diff --git a/controller/controller.go b/controller/controller.go index 866959b..2d28c5f 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -9,11 +9,11 @@ import ( "github.com/google/uuid" - "github.com/m03ed/marzban-node-go/backend" - "github.com/m03ed/marzban-node-go/backend/xray" - "github.com/m03ed/marzban-node-go/common" - "github.com/m03ed/marzban-node-go/config" - "github.com/m03ed/marzban-node-go/tools" + "github.com/m03ed/gozargah-node/backend" + "github.com/m03ed/gozargah-node/backend/xray" + "github.com/m03ed/gozargah-node/common" + "github.com/m03ed/gozargah-node/config" + "github.com/m03ed/gozargah-node/tools" ) const NodeVersion = "0.1.2" diff --git a/controller/rest/base.go b/controller/rest/base.go index 8671da7..83fbc1a 100644 --- a/controller/rest/base.go +++ b/controller/rest/base.go @@ -7,9 +7,9 @@ import ( "net" "net/http" - "github.com/m03ed/marzban-node-go/backend" - "github.com/m03ed/marzban-node-go/backend/xray" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/backend" + "github.com/m03ed/gozargah-node/backend/xray" + "github.com/m03ed/gozargah-node/common" ) func (s *Service) Base(w http.ResponseWriter, _ *http.Request) { diff --git a/controller/rest/rest_test.go b/controller/rest/rest_test.go index b4471a8..c1d9d29 100644 --- a/controller/rest/rest_test.go +++ b/controller/rest/rest_test.go @@ -17,10 +17,10 @@ import ( "github.com/google/uuid" "google.golang.org/protobuf/proto" - "github.com/m03ed/marzban-node-go/common" - "github.com/m03ed/marzban-node-go/config" - nodeLogger "github.com/m03ed/marzban-node-go/logger" - "github.com/m03ed/marzban-node-go/tools" + "github.com/m03ed/gozargah-node/common" + "github.com/m03ed/gozargah-node/config" + nodeLogger "github.com/m03ed/gozargah-node/logger" + "github.com/m03ed/gozargah-node/tools" ) var ( diff --git a/controller/rest/service.go b/controller/rest/service.go index 21ba868..a003f8b 100644 --- a/controller/rest/service.go +++ b/controller/rest/service.go @@ -9,8 +9,8 @@ import ( "sync" "github.com/go-chi/chi/v5" - "github.com/m03ed/marzban-node-go/common" - "github.com/m03ed/marzban-node-go/controller" + "github.com/m03ed/gozargah-node/common" + "github.com/m03ed/gozargah-node/controller" ) func NewService() *Service { diff --git a/controller/rest/stats.go b/controller/rest/stats.go index a9efaa7..c4c878f 100644 --- a/controller/rest/stats.go +++ b/controller/rest/stats.go @@ -3,7 +3,7 @@ package rest import ( "net/http" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/common" ) func (s *Service) GetOutboundsStats(w http.ResponseWriter, r *http.Request) { diff --git a/controller/rest/user.go b/controller/rest/user.go index 15234fd..7c91c2f 100644 --- a/controller/rest/user.go +++ b/controller/rest/user.go @@ -6,7 +6,7 @@ import ( "google.golang.org/protobuf/proto" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/common" ) func (s *Service) SyncUser(w http.ResponseWriter, r *http.Request) { diff --git a/controller/rpc/base.go b/controller/rpc/base.go index 951eb2a..ac1adca 100644 --- a/controller/rpc/base.go +++ b/controller/rpc/base.go @@ -4,9 +4,9 @@ import ( "context" "errors" - "github.com/m03ed/marzban-node-go/backend" - "github.com/m03ed/marzban-node-go/backend/xray" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/backend" + "github.com/m03ed/gozargah-node/backend/xray" + "github.com/m03ed/gozargah-node/common" ) func (s *Service) Start(ctx context.Context, detail *common.Backend) (*common.BaseInfoResponse, error) { diff --git a/controller/rpc/log.go b/controller/rpc/log.go index 8cb5923..6042455 100644 --- a/controller/rpc/log.go +++ b/controller/rpc/log.go @@ -4,7 +4,7 @@ import ( "errors" "fmt" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/common" ) func (s *Service) GetLogs(_ *common.Empty, stream common.NodeService_GetLogsServer) error { diff --git a/controller/rpc/rpc_test.go b/controller/rpc/rpc_test.go index 207c216..8328b07 100644 --- a/controller/rpc/rpc_test.go +++ b/controller/rpc/rpc_test.go @@ -16,10 +16,10 @@ import ( "google.golang.org/grpc/metadata" "google.golang.org/grpc/status" - "github.com/m03ed/marzban-node-go/common" - "github.com/m03ed/marzban-node-go/config" - nodeLogger "github.com/m03ed/marzban-node-go/logger" - "github.com/m03ed/marzban-node-go/tools" + "github.com/m03ed/gozargah-node/common" + "github.com/m03ed/gozargah-node/config" + nodeLogger "github.com/m03ed/gozargah-node/logger" + "github.com/m03ed/gozargah-node/tools" ) var ( diff --git a/controller/rpc/service.go b/controller/rpc/service.go index 89c692b..6e0f045 100644 --- a/controller/rpc/service.go +++ b/controller/rpc/service.go @@ -11,8 +11,8 @@ import ( "google.golang.org/grpc" "google.golang.org/grpc/credentials" - "github.com/m03ed/marzban-node-go/common" - "github.com/m03ed/marzban-node-go/controller" + "github.com/m03ed/gozargah-node/common" + "github.com/m03ed/gozargah-node/controller" ) type Service struct { diff --git a/controller/rpc/stats.go b/controller/rpc/stats.go index bace297..40e3738 100644 --- a/controller/rpc/stats.go +++ b/controller/rpc/stats.go @@ -4,7 +4,7 @@ import ( "context" "errors" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/common" ) func (s *Service) GetOutboundsStats(ctx context.Context, request *common.StatRequest) (*common.StatResponse, error) { diff --git a/controller/rpc/user.go b/controller/rpc/user.go index 2958332..8d83bd2 100644 --- a/controller/rpc/user.go +++ b/controller/rpc/user.go @@ -9,7 +9,7 @@ import ( "google.golang.org/grpc/codes" "google.golang.org/grpc/status" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/common" ) func (s *Service) SyncUser(stream grpc.ClientStreamingServer[common.User, common.Empty]) error { diff --git a/docker-compose.yml b/docker-compose.yml index 45e70c5..3f9b3b1 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,8 @@ services: gozargah-node: - image: ghcr.io/m03ed/gozargah-node:dev + image: m03ed/gozargah-node:dev + # for situations, you don't have access to docker hub use 👇 + # image: ghcr.io/m03ed/gozargah-node:dev restart: always network_mode: host diff --git a/go.mod b/go.mod index fe78e41..afe090e 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/m03ed/marzban-node-go +module github.com/m03ed/gozargah-node go 1.24.0 diff --git a/main.go b/main.go index a9bd13a..671d45a 100644 --- a/main.go +++ b/main.go @@ -9,12 +9,12 @@ import ( "syscall" "time" - "github.com/m03ed/marzban-node-go/config" - "github.com/m03ed/marzban-node-go/controller" - "github.com/m03ed/marzban-node-go/controller/rest" - "github.com/m03ed/marzban-node-go/controller/rpc" - nodeLogger "github.com/m03ed/marzban-node-go/logger" - "github.com/m03ed/marzban-node-go/tools" + "github.com/m03ed/gozargah-node/config" + "github.com/m03ed/gozargah-node/controller" + "github.com/m03ed/gozargah-node/controller/rest" + "github.com/m03ed/gozargah-node/controller/rpc" + nodeLogger "github.com/m03ed/gozargah-node/logger" + "github.com/m03ed/gozargah-node/tools" ) func main() { diff --git a/tools/sys.go b/tools/sys.go index 1145ec1..5a8f95a 100644 --- a/tools/sys.go +++ b/tools/sys.go @@ -10,7 +10,7 @@ import ( "github.com/shirou/gopsutil/cpu" "github.com/shirou/gopsutil/mem" - "github.com/m03ed/marzban-node-go/common" + "github.com/m03ed/gozargah-node/common" ) func GetSystemStats() (*common.SystemStatsResponse, error) { From 41408939975676f9482f416d4160fe4dca781650 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Wed, 19 Feb 2025 17:26:33 +0330 Subject: [PATCH 37/38] fix: name in make file --- .github/workflows/release.yml | 1 - Makefile | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 4336bfe..e32a4ba 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -126,7 +126,6 @@ jobs: - name: Build binary and zip run: | - mkdir -p dist make find . -type f -name "gozargah-node*" -exec mv {} "./gozargah-node-${{ env.ASSET_NAME }}" \; # Create zip file with max compression and include README & LICENSE diff --git a/Makefile b/Makefile index e6bf2c4..c1ef4ba 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -NAME = marzban_node-$(GOOS)-$(GOARCH) +NAME = gozargah-node-$(GOOS)-$(GOARCH) LDFLAGS = -s -w -buildid= PARAMS = -trimpath -ldflags "$(LDFLAGS)" -v From 06930f1e4b66d5dcf1096b49047c732836e846c5 Mon Sep 17 00:00:00 2001 From: M03ED <50927468+M03ED@users.noreply.github.com> Date: Sun, 23 Feb 2025 14:44:18 +0330 Subject: [PATCH 38/38] bump to version v1.0.0 --- controller/controller.go | 2 +- docker-compose.yml | 2 +- main.go | 15 ++------------- 3 files changed, 4 insertions(+), 15 deletions(-) diff --git a/controller/controller.go b/controller/controller.go index 2d28c5f..9628fe1 100644 --- a/controller/controller.go +++ b/controller/controller.go @@ -16,7 +16,7 @@ import ( "github.com/m03ed/gozargah-node/tools" ) -const NodeVersion = "0.1.2" +const NodeVersion = "1.0.0" type Service interface { StopService() diff --git a/docker-compose.yml b/docker-compose.yml index 3f9b3b1..150dbd8 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -1,6 +1,6 @@ services: gozargah-node: - image: m03ed/gozargah-node:dev + image: m03ed/gozargah-node:latest # for situations, you don't have access to docker hub use 👇 # image: ghcr.io/m03ed/gozargah-node:dev restart: always diff --git a/main.go b/main.go index 671d45a..f258fb1 100644 --- a/main.go +++ b/main.go @@ -20,19 +20,6 @@ import ( func main() { nodeLogger.SetOutputMode(config.Debug) - certFileExists := tools.FileExists(config.SslCertFile) - keyFileExists := tools.FileExists(config.SslKeyFile) - if !certFileExists || !keyFileExists { - if err := tools.RewriteSslFile(config.SslCertFile, config.SslKeyFile); err != nil { - log.Fatal(err) - } - } - sslClientCertFile := tools.FileExists(config.SslClientCertFile) - - if !sslClientCertFile { - log.Fatal("SSL_CLIENT_CERT_FILE is required.") - } - addr := fmt.Sprintf("%s:%d", config.NodeHost, config.ServicePort) tlsConfig, err := tools.LoadTLSCredentials(config.SslCertFile, config.SslKeyFile, @@ -41,6 +28,8 @@ func main() { log.Fatal(err) } + log.Printf("Starting Node Version: %s", controller.NodeVersion) + var shutdownFunc func(ctx context.Context) error var service controller.Service