diff --git a/.github/workflows/devbuild.yaml b/.github/workflows/devbuild.yaml index 4576b25..73ba184 100644 --- a/.github/workflows/devbuild.yaml +++ b/.github/workflows/devbuild.yaml @@ -1,8 +1,5 @@ name: Development build -permissions: - contents: write - on: push: branches: [ dev ] @@ -22,7 +19,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: 1.22 + go-version: 1.21 - name: compile id: compile @@ -53,7 +50,7 @@ jobs: runs-on: ubuntu-latest name: musl (${{ matrix.arch }}) container: - image: golang:1.22-alpine3.19 + image: golang:1.21-alpine3.19 steps: - uses: actions/checkout@v4 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 9c900d7..5a93045 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,6 +1,4 @@ name: Package -permissions: - contents: write on: release: @@ -21,7 +19,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: 1.22 + go-version: 1.21 - name: compile id: compile @@ -29,7 +27,7 @@ jobs: mkdir -p build/bundle/{bin,logs} GOOS=${{matrix.os}} GOARCH=${{matrix.arch}} make -e DESTDIR=build/bundle PREFIX= CFGDIR= install install-scripts tar -C build/bundle -z -cf build/bundle.tar.gz . - echo "version=$(sed -n 's/.*PROGRAM_VERSION.*=\s*//p' Makefile)" >> "$GITHUB_OUTPUT" + echo "version=$(sed -n 's/.*PROGRAM_VERSION\s*=\s*//p' Makefile)" >> "$GITHUB_OUTPUT" - name: Upload thalos-server uses: actions/upload-release-asset@v1 @@ -70,7 +68,7 @@ jobs: runs-on: ubuntu-latest name: Build musl (${{ matrix.arch }}) container: - image: golang:1.22-alpine3.19 + image: golang:1.21-alpine3.19 steps: - uses: actions/checkout@v4 @@ -83,7 +81,7 @@ jobs: mkdir -p build/bundle/{bin,logs} GOARCH=${{matrix.arch}} make -e DESTDIR=build/bundle PREFIX= CFGDIR= install install-scripts tar -C build/bundle -z -cf build/bundle.tar.gz . - echo "version=$(sed -n 's/.*PROGRAM_VERSION.*=\s*//p' Makefile)" >> "$GITHUB_OUTPUT" + echo "version=$(sed -n 's/.*PROGRAM_VERSION\s*=\s*//p' Makefile)" >> "$GITHUB_OUTPUT" - name: Upload thalos-server uses: actions/upload-release-asset@v1 @@ -129,7 +127,7 @@ jobs: - name: Set up Go uses: actions/setup-go@v5 with: - go-version: 1.22 + go-version: 1.21 - name: Install build dependencies run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1b69220..2df9f11 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -1,8 +1,5 @@ name: Test -permissions: - contents: read - on: - push - pull_request @@ -13,7 +10,7 @@ jobs: strategy: fail-fast: false matrix: - go-version: ["1.22"] + go-version: ["1.20", "1.21"] arch: [ 386, amd64 ] runs-on: ubuntu-latest name: Test (${{matrix.arch}} go v${{ matrix.go-version }}) @@ -35,7 +32,7 @@ jobs: strategy: fail-fast: false matrix: - tag: [ "1.22-alpine3.19"] + tag: ["1.20-alpine3.19", "1.21-alpine3.19"] runs-on: ubuntu-latest name: Test alpine (${{ matrix.tag }}) container: diff --git a/Makefile b/Makefile index 33fd99f..a139da8 100644 --- a/Makefile +++ b/Makefile @@ -1,9 +1,9 @@ GO=go GOLDFLAGS=-v -s -w -X main.VersionString=$(PROGRAM_VERSION) -GOBUILDFLAGS+=-v -p $(shell nproc) -ldflags="$(GOLDFLAGS)" +GOBUILDFLAGS=-v -p $(shell nproc) -ldflags="$(GOLDFLAGS)" PROGRAM=thalos-server -PROGRAM_VERSION ?= 1.1.9 +PROGRAM_VERSION ?= 1.1.5-rc1 PREFIX=/usr/local BINDIR=$(PREFIX)/bin CFGDIR=$(PREFIX)/etc/thalos diff --git a/README.md b/README.md index 09ab23c..fdf2c0e 100644 --- a/README.md +++ b/README.md @@ -9,13 +9,9 @@ Consult the [documentation](https://thalos.waxsweden.org/docs) for more informat Join the discussion on [telegram](https://t.me/antelopethalos) -## Docker images - -Docker images can be found [here](https://github.com/eosswedenorg/thalos/pkgs/container/thalos) - ## Compiling -You will need golang version `1.21` or later to compile the source. +You will need golang version `1.20` or later to compile the source. Compile using make: diff --git a/api/channel_test.go b/api/channel_test.go index ae2edf1..caaf4e7 100644 --- a/api/channel_test.go +++ b/api/channel_test.go @@ -55,13 +55,13 @@ func TestChannel_Is(t *testing.T) { func TestChannel_Format(t *testing.T) { tests := []struct { name string + c Channel delim string want string - c Channel }{ - {"Empty", ":", "", Channel{}}, - {"Alot#1", "-", "one-two-three", Channel{"one", "two", "three"}}, - {"Alot#2", ":", "first:second", Channel{"first", "second"}}, + {"Empty", Channel{}, ":", ""}, + {"Alot#1", Channel{"one", "two", "three"}, "-", "one-two-three"}, + {"Alot#2", Channel{"first", "second"}, ":", "first:second"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -75,11 +75,11 @@ func TestChannel_Format(t *testing.T) { func TestChannel_String(t *testing.T) { tests := []struct { name string - want string c Channel + want string }{ - {"Empty", "", Channel{}}, - {"Alot", "one/two/three", Channel{"one", "two", "three"}}, + {"Empty", Channel{}, ""}, + {"Alot", Channel{"one", "two", "three"}, "one/two/three"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { @@ -93,13 +93,13 @@ func TestChannel_String(t *testing.T) { func TestChannel_Type(t *testing.T) { tests := []struct { name string - want string c Channel + want string }{ - {"Empty", "unknown", Channel{}}, - {"Heartbeat", "heartbeat", HeartbeatChannel}, - {"Transaction", "transactions", TransactionChannel}, - {"Actions", "actions", ActionChannel{}.Channel()}, + {"Empty", Channel{}, "unknown"}, + {"Heartbeat", HeartbeatChannel, "heartbeat"}, + {"Transaction", TransactionChannel, "transactions"}, + {"Actions", ActionChannel{}.Channel(), "actions"}, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { diff --git a/api/client.go b/api/client.go index ad01497..9157af0 100644 --- a/api/client.go +++ b/api/client.go @@ -11,7 +11,7 @@ import ( type handler func([]byte) -// Client reads and decodes messages from a reader and posts them to a go channel +// Client reads and decodes messages from a reader and posts thems to a go channel type Client struct { reader Reader decoder message.Decoder @@ -35,7 +35,6 @@ func (c *Client) Channel() <-chan any { return c.channel } -// Helper method to post a message to a channel with timeout. func (c *Client) post(msg any) { select { case <-time.After(time.Second): @@ -47,7 +46,7 @@ func (c *Client) worker(channel Channel, h handler) { for { payload, err := c.reader.Read(channel) if err != nil { - // Don't report EOF as an error because it is used + // Dont report EOF as an error because it is used // by readers to signal an graceful end of input. if err != io.EOF { c.post(err) @@ -60,7 +59,7 @@ func (c *Client) worker(channel Channel, h handler) { } // Helper method to decode a message and post and error on the channel if it fails. -// Returns true if successful. False otherwise +// Returns true if successfull. false otherwise func (c *Client) decode(payload []byte, msg any) bool { if err := c.decoder(payload, msg); err != nil { c.post(err) @@ -153,7 +152,7 @@ func (c *Client) Run() { func (c *Client) Close() error { err := c.reader.Close() - // Wait for all goroutines to finish before closing channel. + // Wait for all goroutines before closing channel. c.wg.Wait() close(c.channel) return err diff --git a/api/message/msgpack/codec.go b/api/message/msgpack/codec.go index ce16975..2e684a6 100644 --- a/api/message/msgpack/codec.go +++ b/api/message/msgpack/codec.go @@ -14,7 +14,7 @@ func createCodec() message.Codec { handle.MapType = reflect.TypeOf(map[string]any(nil)) handle.Canonical = true - // Weird name but this is needed for the newest version of msgpack + // Wierd name but this is needed for the newest version of msgpack // that has support for time and string datatypes etc. handle.WriteExt = true diff --git a/api/reader.go b/api/reader.go index 5dd719e..21b4be7 100644 --- a/api/reader.go +++ b/api/reader.go @@ -6,7 +6,7 @@ package api // This is a low-level interface typically implemented by backend drivers type Reader interface { // Read a message from a channel. - // Read may block until a message is ready or an error occurred. + // Read may block until a message is ready or an error occured. // // io.EOF is returned from a reader when there is no more data to be read. // If Read returns io.EOF all subsequent calls must also return io.EOF diff --git a/api/redis/namespace.go b/api/redis/namespace.go index d02d579..4e0167c 100644 --- a/api/redis/namespace.go +++ b/api/redis/namespace.go @@ -19,7 +19,7 @@ const ( // // Contains a prefix and chain_id to guard keys against collision. // Prefix should be sufficient to not collide with other application using the same redis database. -// chain_id should be fine to not let multiple reader with different chains to write to the same channels. +// chain_id should be ok to not let multiple reader with different chains to write to the same channels. type Namespace struct { Prefix string diff --git a/api/redis/subscriber.go b/api/redis/subscriber.go index c8c7099..07218ba 100644 --- a/api/redis/subscriber.go +++ b/api/redis/subscriber.go @@ -48,7 +48,7 @@ func NewSubscriber(ctx context.Context, client *redis.Client, ns Namespace, opti return sub } -// worker reads messages from Redis pubsub and forwards them to +// worker reads messages from redis pubsub and forwards them to // correct channels. func (s *Subscriber) worker() { for msg := range s.sub.Channel() { diff --git a/cmd/thalos/server.go b/cmd/thalos/server.go index 72ea05f..5813aee 100644 --- a/cmd/thalos/server.go +++ b/cmd/thalos/server.go @@ -363,7 +363,6 @@ func serverCmd(cmd *cobra.Command, args []string) { s.StartBlock = conf.Ship.StartBlockNum s.EndBlock = conf.Ship.EndBlockNum s.IrreversibleOnly = conf.Ship.IrreversibleOnly - s.MaxMessagesInFlight = 1 }) // Get codec @@ -393,7 +392,6 @@ func serverCmd(cmd *cobra.Command, args []string) { ) processor.SetBlacklist(conf.Ship.Blacklist) - processor.FetchDeltas(conf.Ship.EnableTableDeltas) // Run the application run(conf, shClient, processor) diff --git a/cmd/tools/main.go b/cmd/tools/main.go index 35b8684..3e131ac 100644 --- a/cmd/tools/main.go +++ b/cmd/tools/main.go @@ -11,7 +11,7 @@ var VersionString string = "dev" func main() { rootCmd := &cobra.Command{ Use: "thalos-tools", - Short: "Collection of tools for dealing with the Thalos application", + Short: "Collection of tools for dealing with the thalos application", FParseErrWhitelist: cobra.FParseErrWhitelist{ UnknownFlags: true, }, diff --git a/config.example.yml b/config.example.yml index 2dc438e..85c289d 100644 --- a/config.example.yml +++ b/config.example.yml @@ -38,13 +38,10 @@ ship: # Request ship to start sending blocks from this block. # If not set, the head block reported by the nodeos api is used. - # start_block_num: 1000 + #start_block_num: 1000 # Request ship to stop sending blocks when reaching this block. - # end_block_num: 2000 - - # If true, Thalos will process table deltas - # table_deltas: false + #end_block_num: 2000 # Blacklist contract/actions blacklist: @@ -70,9 +67,9 @@ ship: # options: [] # Telegram notifications -# telegram: -# id: "123456789:GPdmGPBWvpgHPxlergJLavus-PoAURTjMWP" -# channel: -123456789 +#telegram: +# id: "123456789:GPdmGPBWvpgHPxlergJLavus-PoAURTjMWP" +# channel: -123456789 # Redis settings redis: @@ -83,7 +80,7 @@ redis: user: "" # Password to use when authenticating - password: "" + pasword: "" # database index db: 0 diff --git a/debian/changelog b/debian/changelog index ecc01aa..f423520 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,78 +1,3 @@ -thalos (1.1.9) bionic focal jammy; urgency=medium - - * [Security CVE-2024-45338] Update golang.org/x/net to 0.33.0 - - -- Henrik Hautakoski Thu, 23 Jan 2025 19:30:31 +0100 - -thalos (1.1.8) bionic focal jammy; urgency=medium - - * Support for wildcard contracts in Blacklist - * [Security CVE-2024-45337] Update golang.org/x/crypto to 0.31.0 - * [Security CVE-2024-53259] Update github.com/quic-go/quic-go to 0.48.2 - - -- Henrik Hautakoski Mon, 23 Dec 2024 09:25:44 +0100 - -thalos (1.1.8~rc1) bionic focal jammy; urgency=medium - - * Support for wildcard contracts in Blacklist - - -- Henrik Hautakoski Wed, 04 Dec 2024 15:19:53 +0100 - -thalos (1.1.7) bionic focal jammy; urgency=medium - - * ship: set MaxMessagesInFlight to 1. This forces the client/server to ack - every message and might be a workaround fix for issue #25 - according to this comment: - https://github.com/AntelopeIO/leap/issues/1358#issuecomment-2276294557 - * golang: update eosswedenrg-go/antelope-ship-client to v0.3.2 - * Add support to disable processing of table deltas. - - -- Henrik Hautakoski Mon, 11 Nov 2024 19:38:15 +0100 - -thalos (1.1.7~rc2) bionic focal jammy; urgency=medium - - * ship: set MaxMessagesInFlight to 1. This forces the client/server to ack - every message and might be a workaround fix for issue #25 - according to this comment: - https://github.com/AntelopeIO/leap/issues/1358#issuecomment-2276294557 - * golang: update eosswedenrg-go/antelope-ship-client to v0.3.2 - - -- Henrik Hautakoski Sun, 03 Nov 2024 12:04:29 +0100 - -thalos (1.1.7~rc1) bionic focal jammy; urgency=medium - - * Add support to disable processing of table deltas. - - -- Henrik Hautakoski Mon, 21 Oct 2024 12:31:21 +0200 - -thalos (1.1.6) bionic focal jammy; urgency=medium - - [ Henrik Hautakoski ] - * makefile: make sure we apppend to GOBULDFLAGS if user wants to add their own. - * minor style fixes. - * api/channel_test.go: rearange fields. - * README.md: Update minimum go version - * README.md: Link to docker page - * .github/workflows/release.yml: need to update version regex for musl builds - - [ Avm07 ] - * Fix typo in config.example.yml - - -- Henrik Hautakoski Wed, 16 Oct 2024 16:23:47 +0200 - -thalos (1.1.5) bionic focal jammy; urgency=medium - - * New config section: `cache` - * New CLI flag: `cache` specify what cache driver to use - * New CLI flag: `abi-cache-api-timeout` configure the timeout for the HTTP - request made when Thalos wants to fetch a ABI from the api. - * API Table Deltas: abi decode the data in `value` field for contract_row deltas. - * golang: update github.com/shufflingpixels/antelope-go to v0.1.5 - * golang: update github.com/quic-go/quic-go from 0.41.0 to 0.42.0 - * golang: version 1.20 can no longer be used to build the project. - - -- Henrik Hautakoski Thu, 29 Aug 2024 15:33:17 +0200 - thalos (1.1.5~rc1) bionic focal jammy; urgency=medium * New config section: `cache` @@ -120,7 +45,7 @@ thalos (1.1.2~rc4) bionic focal jammy; urgency=medium * API: Fix a bug regarding json timestamp being encoded/decoded with wrong format - * Implement action blacklist, it is now possible to configure a blacklist + * Implement action blacklist, it is not possible to configure a blacklist that will be used to filter out processing of unwanted contracts/actions. -- Henrik Hautakoski Sun, 23 Jun 2024 14:55:03 +0200 @@ -280,4 +205,3 @@ thalos-server (0.1.0) bionic focal jammy; urgency=medium Initial release. -- Henrik Hautakoski Sun, 14 May 2023 18:17:35 +0200 - diff --git a/debian/thalos.postinst b/debian/thalos.postinst index a643c01..9c31f4b 100644 --- a/debian/thalos.postinst +++ b/debian/thalos.postinst @@ -2,14 +2,14 @@ set -e if [ "$1" = 'configure' ]; then - adduser --force-badname --system --home /nonexistent \ + adduser --force-badname --system --home /nonexistent \ --group --no-create-home --quiet thalos || true - # Create log directory - mkdir -p /var/log/thalos - chown thalos:adm /var/log/thalos + # Create log directory + mkdir -p /var/log/thalos + chown thalos:adm /var/log/thalos fi #DEBHELPER# -exit 0 +exit 0 \ No newline at end of file diff --git a/debian/thalos.postrm b/debian/thalos.postrm index dde4859..08a6475 100644 --- a/debian/thalos.postrm +++ b/debian/thalos.postrm @@ -3,9 +3,11 @@ set -e #DEBHELPER# -if [ "${1}" = "purge" ]; then - deluser --quiet thalos >/dev/null || true - rm -rf /var/log/thalos + +if [ "${1}" = "purge" ] +then + deluser --quiet thalos > /dev/null || true + rm -rf /var/log/thalos fi -exit 0 +exit 0 \ No newline at end of file diff --git a/docker/Dockerfile b/docker/Dockerfile index b8fb57f..066533c 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -1,6 +1,6 @@ FROM alpine:latest LABEL maintainer="Henrik Hautakoski " -ARG VERSION=1.1.9 +ARG VERSION=1.1.5-rc1 WORKDIR /thalos ADD --chmod=755 https://github.com/eosswedenorg/thalos/releases/download/v$VERSION/thalos-server-${VERSION}-linux-amd64-musl thalos-server ENTRYPOINT [ "./thalos-server" ] diff --git a/go.mod b/go.mod index b7de7b0..ca4a378 100644 --- a/go.mod +++ b/go.mod @@ -1,11 +1,11 @@ module github.com/eosswedenorg/thalos -go 1.22.0 +go 1.20 require ( github.com/cenkalti/backoff/v4 v4.2.1 github.com/docker/go-units v0.5.0 - github.com/eosswedenorg-go/antelope-ship-client v0.3.2 + github.com/eosswedenorg-go/antelope-ship-client v0.3.0 github.com/eosswedenorg-go/pid v1.0.1 github.com/eosswedenorg/thalos/api v1.0.0 github.com/go-redis/cache/v9 v9.0.0 @@ -14,7 +14,7 @@ require ( github.com/mitchellh/mapstructure v1.5.0 github.com/nikoksr/notify v0.41.0 github.com/redis/go-redis/v9 v9.5.1 - github.com/shufflingpixels/antelope-go v0.1.5 + github.com/shufflingpixels/antelope-go v0.1.4 github.com/sirupsen/logrus v1.9.3 github.com/spf13/cobra v1.8.0 github.com/spf13/pflag v1.0.5 @@ -24,35 +24,28 @@ require ( ) require ( - github.com/andybalholm/brotli v1.1.1 // indirect github.com/cespare/xxhash/v2 v2.3.0 // indirect - github.com/cloudflare/circl v1.5.0 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f // indirect github.com/fsnotify/fsnotify v1.7.0 // indirect - github.com/go-task/slim-sprig/v3 v3.0.0 // indirect github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible // indirect github.com/google/go-cmp v0.6.0 // indirect - github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad // indirect github.com/gorilla/websocket v1.5.1 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect github.com/hashicorp/hcl v1.0.0 // indirect - github.com/imroc/req/v3 v3.49.0 // indirect + github.com/imroc/req/v3 v3.7.6 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/json-iterator/go v1.1.12 // indirect - github.com/klauspost/compress v1.17.11 // indirect + github.com/klauspost/compress v1.17.8 // indirect github.com/liamylian/jsontime/v2 v2.0.0 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd // indirect github.com/modern-go/reflect2 v1.0.2 // indirect - github.com/onsi/ginkgo/v2 v2.22.0 // indirect + github.com/onsi/gomega v1.31.1 // indirect github.com/pelletier/go-toml/v2 v2.1.1 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect - github.com/quic-go/qpack v0.5.1 // indirect - github.com/quic-go/quic-go v0.48.2 // indirect - github.com/refraction-networking/utls v1.6.7 // indirect github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/shufflingpixels/jsontime-go v0.0.0-20240622163621-cf4b2804c92d // indirect @@ -65,16 +58,12 @@ require ( github.com/vmihailenco/go-tinylfu v0.2.2 // indirect github.com/vmihailenco/msgpack/v5 v5.4.1 // indirect github.com/vmihailenco/tagparser/v2 v2.0.0 // indirect - go.uber.org/mock v0.5.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.31.0 // indirect - golang.org/x/exp v0.0.0-20241215155358-4a5509556b9e // indirect - golang.org/x/mod v0.22.0 // indirect - golang.org/x/net v0.33.0 // indirect - golang.org/x/sync v0.10.0 // indirect - golang.org/x/sys v0.28.0 // indirect - golang.org/x/text v0.21.0 // indirect - golang.org/x/tools v0.28.0 // indirect + golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 // indirect + golang.org/x/net v0.24.0 // indirect + golang.org/x/sync v0.7.0 // indirect + golang.org/x/sys v0.19.0 // indirect + golang.org/x/text v0.14.0 // indirect gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect gopkg.in/ini.v1 v1.67.0 // indirect ) diff --git a/go.sum b/go.sum index 7a6c686..41dd453 100644 --- a/go.sum +++ b/go.sum @@ -1,13 +1,7 @@ github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a h1:HbKu58rmZpUGpz5+4FfNmIU+FmZg2P3Xaj2v2bfNWmk= -github.com/alicebob/gopher-json v0.0.0-20200520072559-a9ecdc9d1d3a/go.mod h1:SGnFV6hVsYE877CKEZ6tDNTjaSXYUk6QqoIK6PrAtcc= github.com/alicebob/miniredis/v2 v2.30.2 h1:lc1UAUT9ZA7h4srlfBmBt2aorm5Yftk9nBjxz7EyY9I= -github.com/alicebob/miniredis/v2 v2.30.2/go.mod h1:b25qWj4fCEsBeAAR2mlb0ufImGC6uH3VlUfb/HS5zKg= -github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA= -github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA= github.com/bsm/ginkgo/v2 v2.12.0 h1:Ny8MWAHyOepLGlLKYmXG4IEkioBysk6GpaRTLC8zwWs= -github.com/bsm/ginkgo/v2 v2.12.0/go.mod h1:SwYbGRRDovPVboqFv0tPTcG1sN61LM1Z4ARdbAV9g4c= github.com/bsm/gomega v1.27.10 h1:yeMWxP2pV2fG3FgAODIY8EiRE3dy0aeFYt4l7wh6yKA= -github.com/bsm/gomega v1.27.10/go.mod h1:JyEr/xRbxbtgWNi8tIEVPUYZ5Dzef52k01W3YH0H+O0= github.com/cenkalti/backoff/v4 v4.2.1 h1:y4OZtCnogmCPw98Zjyt5a6+QwPLGkiQsYW5oUqylYbM= github.com/cenkalti/backoff/v4 v4.2.1/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= @@ -17,8 +11,6 @@ github.com/cespare/xxhash/v2 v2.3.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XL github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= -github.com/cloudflare/circl v1.5.0 h1:hxIWksrX6XN5a1L2TI/h53AGPhNHoUBo+TD1ms9+pys= -github.com/cloudflare/circl v1.5.0/go.mod h1:uddAzsPgqdMAYatqJ0lsjX1oECcQLIlRpzZh3pJrofs= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= @@ -29,26 +21,21 @@ github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/r github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4= github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk= -github.com/eosswedenorg-go/antelope-ship-client v0.3.2 h1:mDXZkjQ0bTPJClkhoPEP5ltucxql6bR+QixhnQI/Og4= -github.com/eosswedenorg-go/antelope-ship-client v0.3.2/go.mod h1:DnUmaRGxz/V73CtVEJx/fReqhgGzhVyWpOrEKVYQSgE= +github.com/eosswedenorg-go/antelope-ship-client v0.3.0 h1:L1DTE2ZeOGSbehCAqVF5GhdaAb3ZYgvFFUhpDWmJ2vQ= +github.com/eosswedenorg-go/antelope-ship-client v0.3.0/go.mod h1:F3nAzlbcANY6zvZ+cTJH9WjJtvJU6hvduBAUAjX2/lA= github.com/eosswedenorg-go/pid v1.0.1 h1:W4AEnnNwb041SpNR1uTZ/KbJ0OTA5eqiqIR1Q5Ah6A0= github.com/eosswedenorg-go/pid v1.0.1/go.mod h1:wiOB/JXGt4YA3+T0j0xmCGSc3Jxzb7Ti/Ftli1fgWu4= github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= -github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/go-logr/logr v1.2.3/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= -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-redis/cache/v9 v9.0.0 h1:0thdtFo0xJi0/WXbRVu8B066z8OvVymXTJGaXrVWnN0= github.com/go-redis/cache/v9 v9.0.0/go.mod h1:cMwi1N8ASBOufbIvk7cdXe2PbPjK/WMRL95FFHWsSgI= github.com/go-redis/redismock/v9 v9.2.0 h1:ZrMYQeKPECZPjOj5u9eyOjg8Nnb0BS9lkVIZ6IpsKLw= github.com/go-redis/redismock/v9 v9.2.0/go.mod h1:18KHfGDK4Y6c2R0H38EUGWAdc7ZQS9gfYxc94k7rWT0= github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= -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/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible h1:2cauKuaELYAEARXRkq2LrJ0yDDv1rW7+wrTEdVL3uaU= github.com/go-telegram-bot-api/telegram-bot-api v4.6.4+incompatible/go.mod h1:qf9acutJ8cwBUhm1bqgz6Bei9/C/c93FPDljKWwsOgM= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= @@ -70,8 +57,6 @@ 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/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/pprof v0.0.0-20210407192527-94a9f03dee38/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad h1:a6HEuzUHeKH6hwfN/ZoQgRgVIWFJljSWa/zetS2WTvg= -github.com/google/pprof v0.0.0-20241210010833-40e02aabc2ad/go.mod h1:vavhavw2zAxS5dIdcRluK6cSGGPlZynqzFM8NdvU144= github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/hashicorp/errwrap v1.0.0/go.mod h1:YH+1FKiLXxHSkmPseP+kNlulaMuP3n2brvKWEqk/Jc4= @@ -83,25 +68,23 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= -github.com/imroc/req/v3 v3.49.0 h1:5Rac2qvz7Dq0E3PeBo/c2szV3hagPQIGLoHtfBmYhu4= -github.com/imroc/req/v3 v3.49.0/go.mod h1:XZf4t94DNJzcA0UOBlA68hmSrWsAyvN407ADdH4mzCA= +github.com/imroc/req/v3 v3.7.6 h1:SUVWgFt/dJsSzpzpnc8pHdL79zoE6O8FSCfNvbTZXVU= +github.com/imroc/req/v3 v3.7.6/go.mod h1:3JIicOKEDHfCSYYNLb/ObZNpx64EV5y40VlHMwhUCzU= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible h1:jdpOPRN1zP63Td1hDQbZW73xKmzDvZHzVdNYxhnTMDA= -github.com/jordan-wright/email v4.0.1-0.20210109023952-943e75fe5223+incompatible/go.mod h1:1c7szIrayyPPB/987hsnvNzLushdWf4o/79s3P08L8A= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/karlseguin/typed v1.1.8 h1:ND0eDpwiUFIrm/n1ehxUyh/XNGs9zkYrLxtGqENSalY= github.com/karlseguin/typed v1.1.8/go.mod h1:pZlmYaWQ7MVpwfIOP88fASh3LopVxKeE+uNXW3hQ2D8= github.com/klauspost/compress v1.13.6/go.mod h1:/3/Vjq9QcHkK5uEr5lBEmyoZ1iFhe47etQ6QUkpK6sk= -github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc= -github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0= +github.com/klauspost/compress v1.17.8 h1:YcnTYrq7MikUT7k0Yb5eceMmALQPYBW/Xltxn0NAMnU= +github.com/klauspost/compress v1.17.8/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw= github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= 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/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= @@ -136,8 +119,6 @@ github.com/onsi/ginkgo/v2 v2.3.0/go.mod h1:Eew0uilEqZmIEZr8JrvYlvOM7Rr6xzTmMV8Ay github.com/onsi/ginkgo/v2 v2.4.0/go.mod h1:iHkDK1fKGcBoEHT5W7YBq4RFWaQulw+caOMkAt4OrFo= github.com/onsi/ginkgo/v2 v2.5.0/go.mod h1:Luc4sArBICYCS8THh8v3i3i5CuSZO+RaQRaJoeNwomw= github.com/onsi/ginkgo/v2 v2.7.0/go.mod h1:yjiuMwPokqY1XauOgju45q3sJt6VzQ/Fict1LFVcsAo= -github.com/onsi/ginkgo/v2 v2.22.0 h1:Yed107/8DjTr0lKCNt7Dn8yQ6ybuDRQoMGrNFKzMfHg= -github.com/onsi/ginkgo/v2 v2.22.0/go.mod h1:7Du3c42kxCUegi0IImZ1wUQzMBVecgIHjR1C+NkhLQo= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.17.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= @@ -148,8 +129,8 @@ github.com/onsi/gomega v1.22.1/go.mod h1:x6n7VNe4hw0vkyYUM4mjIXx3JbLiPaBPNgB7PRQ github.com/onsi/gomega v1.24.0/go.mod h1:Z/NWtiqwBrwUt4/2loMmHL63EDLnYHmVbuBpDr2vQAg= github.com/onsi/gomega v1.24.1/go.mod h1:3AOiACssS3/MajrniINInwbfOOtfZvplPzuRSmvt1jM= github.com/onsi/gomega v1.25.0/go.mod h1:r+zV744Re+DiYCIPRlYOTxn0YkOLcAnW8k1xXdMPGhM= -github.com/onsi/gomega v1.34.2 h1:pNCwDkzrsv7MS9kpaQvVb1aVLahQXyJ/Tv5oAZMI3i8= -github.com/onsi/gomega v1.34.2/go.mod h1:v1xfxRgk0KIsG+QOdm7p8UosrOzPYRo60fd3B/1Dukc= +github.com/onsi/gomega v1.31.1 h1:KYppCUK+bUgAZwHOu7EXVBKyQA6ILvOESHkn/tgoqvo= +github.com/onsi/gomega v1.31.1/go.mod h1:y40C95dwAD1Nz36SsEnxvfFe8FFfNxzI5eJ0EYGyAy0= github.com/pelletier/go-toml/v2 v2.1.1 h1:LWAJwfNvjQZCFIDKWYQaM62NcYeYViCmWIwmOStowAI= github.com/pelletier/go-toml/v2 v2.1.1/go.mod h1:tJU2Z3ZkXwnxa4DPO899bsyIoywizdUvyaeZurnPPDc= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= @@ -157,25 +138,18 @@ github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINE github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 h1:Jamvg5psRIccs7FGNTlIRMkT8wgtp5eCXdBlqhYGL6U= github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/quic-go/qpack v0.5.1 h1:giqksBPnT/HDtZ6VhtFKgoLOWmlyo9Ei6u9PqzIMbhI= -github.com/quic-go/qpack v0.5.1/go.mod h1:+PC4XFrEskIVkcLzpEkbLqq1uCoxPhQuvK5rH1ZgaEg= -github.com/quic-go/quic-go v0.48.2 h1:wsKXZPeGWpMpCGSWqOcqpW2wZYic/8T3aqiOID0/KWE= -github.com/quic-go/quic-go v0.48.2/go.mod h1:yBgs3rWBOADpga7F+jJsb6Ybg1LSYiQvwWlLX+/6HMs= github.com/redis/go-redis/v9 v9.0.0-rc.4/go.mod h1:Vo3EsyWnicKnSKCA7HhgnvnyA74wOA69Cd2Meli5mmA= github.com/redis/go-redis/v9 v9.5.1 h1:H1X4D3yHPaYrkL5X06Wh6xNVM/pX0Ft4RV0vMGvLBh8= github.com/redis/go-redis/v9 v9.5.1/go.mod h1:hdY0cQFCN4fnSYT6TkisLufl/4W5UIXyv0b/CLO2V2M= -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/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= -github.com/shufflingpixels/antelope-go v0.1.5 h1:N0jCC5bya5shBb96Ff2cCpN+Yw99YldVjWvr0qoiW3E= -github.com/shufflingpixels/antelope-go v0.1.5/go.mod h1:VFULwUB/YfNZeZFzClTNrLyIKWChRhnPvxdzapeOcm0= +github.com/shufflingpixels/antelope-go v0.1.4 h1:MInk3tEo69OA/U6tZWXGrVzdQhrDFX8UfUkGq1Lq/2Y= +github.com/shufflingpixels/antelope-go v0.1.4/go.mod h1:Bi+zmFI5s7Qv2hx3v9FAcDyf4N4MUs5zaKNa2CetmSg= github.com/shufflingpixels/jsontime-go v0.0.0-20240622163621-cf4b2804c92d h1:nju7jR1Kf210tArPT6l//HlfLLFnvje1BWl5TSRsohQ= github.com/shufflingpixels/jsontime-go v0.0.0-20240622163621-cf4b2804c92d/go.mod h1:W0TaKyg3kDqWmFUxlax3qAls/lRdo12EseM6f4f0dzE= github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= @@ -218,15 +192,10 @@ github.com/vmihailenco/msgpack/v5 v5.4.1 h1:cQriyiUvjTwOHg8QZaPihLWeRAAVoCpE00IU github.com/vmihailenco/msgpack/v5 v5.4.1/go.mod h1:GaZTsDaehaPpQVyxrf5mtQlH+pc21PIudVV/E3rRQok= github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAhO7/IwNM9g= github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds= -github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU= -github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= github.com/yuin/goldmark v1.4.1/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/gopher-lua v1.1.0 h1:BojcDhfyDWgU2f2TOzYK/g5p2gxMrku8oupLDqlnSqE= -github.com/yuin/gopher-lua v1.1.0/go.mod h1:GBR0iDaNXjAgGg9zfCvksxSRnQx76gclCIb7kdAd1Pw= -go.uber.org/mock v0.5.0 h1:KAMbZvZPyBPWgD14IrIQ38QCyjwpvVVV6K/bHl1IwQU= -go.uber.org/mock v0.5.0/go.mod h1:ge71pBPLYDk7QIi1LupWxdAykm7KIEFchiOqd6z7qMM= go.uber.org/multierr v1.11.0 h1:blXXJkSxSSfBVBlC76pxqeO+LN3aDfLQo+309xJstO0= go.uber.org/multierr v1.11.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= @@ -234,17 +203,13 @@ golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8U golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20210921155107-089bfa567519/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= -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-20241215155358-4a5509556b9e h1:4qufH0hlUYs6AO6XmZC3GqfDPGSXHVXUFR6OND+iJX4= -golang.org/x/exp v0.0.0-20241215155358-4a5509556b9e/go.mod h1:qj5a5QZpwLU2NLQudwIN5koi3beDhSAlJwa67PuM98c= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225 h1:LfspQV/FYTatPTr/3HzIcmiUFH7PGP+OQ6mgDYo3yuQ= +golang.org/x/exp v0.0.0-20240222234643-814bf88cf225/go.mod h1:CxmFvTBINI24O/j8iY7H1xHzx2i4OsyguNBmN/uPtqc= golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220106191415-9b9b3d81d5e3/go.mod h1:3p9vT2HGsQu2K1YbXdKPJLVgG5VJdoTa1poYQBtP1AY= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= golang.org/x/mod v0.6.0/go.mod h1:4mET923SAdbXp2ki8ey+zGs1SLqsuM2Y0uvdZR/fUNI= golang.org/x/mod v0.7.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= -golang.org/x/mod v0.22.0 h1:D4nJWe9zXqHOmWqj4VMOJhvzj7bEZg4wEYa759z1pH4= -golang.org/x/mod v0.22.0/go.mod h1:6SkKJ3Xj0I0BrPOZoBy3bdMptDDU9oJrpohJ3eWZ1fY= golang.org/x/net v0.0.0-20180906233101-161cd47e91fd/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= 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= @@ -253,6 +218,7 @@ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwY golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg= golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/net v0.0.0-20211015210444-4f30a5c0130f/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= +golang.org/x/net v0.0.0-20220111093109-d55c255bac03/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220425223048-2871e0cb64e4/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= @@ -260,16 +226,16 @@ golang.org/x/net v0.1.0/go.mod h1:Cx3nUiGt4eDBEyega/BKRp+/AlGL8hYe7U9odMt2Cco= golang.org/x/net v0.2.0/go.mod h1:KqCZLdyyvdV855qA2rE3GC2aiw5xGR5TEjj8smXukLY= golang.org/x/net v0.3.0/go.mod h1:MBQ8lrhLObU/6UmLb4fmbmk5OcyYmqtbGd/9yIeKjEE= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= -golang.org/x/net v0.33.0 h1:74SYHlV8BIgHIFC/LrYkOGIwL19eTYXQ5wc6TBuO36I= -golang.org/x/net v0.33.0/go.mod h1:HXLR5J+9DxmrqMwG9qjGCxZ+zKXxBru04zlTvWlWuN4= +golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= +golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/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-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20220722155255-886fb9371eb4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.10.0 h1:3NQrjDixjgGwUOCaF8w2+VYHv0Ve/vGYSbdkTa98gmQ= -golang.org/x/sync v0.10.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= +golang.org/x/sync v0.7.0 h1:YsImfSBoP9QPYL0xyKJPq0gcaJdG3rInoqxTWbfQu9M= +golang.org/x/sync v0.7.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180909124046-d0be0721c37e/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= @@ -294,8 +260,8 @@ 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.3.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.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.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= +golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -309,10 +275,8 @@ golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= golang.org/x/text v0.4.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.5.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= -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= +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/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -320,8 +284,6 @@ golang.org/x/tools v0.1.10/go.mod h1:Uh6Zz+xoGYZom868N8YTex3t7RhtHDBrE8Gzo9bV56E golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= golang.org/x/tools v0.2.0/go.mod h1:y4OqIKeOV/fWJetJ8bXPU1sEVniLMIyDAZWeHdV+NTA= golang.org/x/tools v0.4.0/go.mod h1:UE5sM2OK9E/d67R0ANs2xJizIymRP5gJU295PvKXxjQ= -golang.org/x/tools v0.28.0 h1:WuB6qZ4RPCQo5aP3WdKZS7i595EdWqWR8vqJTlwTVK8= -golang.org/x/tools v0.28.0/go.mod h1:dcIOrVd3mfQKTgrDVQHqCPMWy6lnhfhtX3hLXYVLfRw= 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= @@ -335,8 +297,6 @@ google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2 google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= google.golang.org/protobuf v1.28.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= -google.golang.org/protobuf v1.34.1 h1:9ddQBjfCyZPOHPUiPxpYESBLc+T8P3E+Vo4IbKZgFWg= -google.golang.org/protobuf v1.34.1/go.mod h1:c6P6GXX6sHbq/GpV6MGZEdwhWPcYBgnhAHhKbcUYpos= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= @@ -356,4 +316,3 @@ gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= gotest.tools/v3 v3.5.1 h1:EENdUnS3pdur5nybKYIh2Vfgc8IUNBjxDPSjtiJcOzU= -gotest.tools/v3 v3.5.1/go.mod h1:isy3WKz7GK6uNw/sbHzfKBLvlvXwUyV06n6brMxxopU= diff --git a/internal/config/builder.go b/internal/config/builder.go index e22bf45..6429f24 100644 --- a/internal/config/builder.go +++ b/internal/config/builder.go @@ -59,7 +59,6 @@ func NewBuilder() *Builder { "ship.chain": "chain", "ship.blacklist": "blacklist", "ship.blacklist_is_whitelist": "blacklist-is-whitelist", - "ship.table_deltas": "table-deltas", }, } } diff --git a/internal/config/builder_test.go b/internal/config/builder_test.go index b133353..234776a 100644 --- a/internal/config/builder_test.go +++ b/internal/config/builder_test.go @@ -127,7 +127,6 @@ func TestBuilder_WithDefaultConfig(t *testing.T) { StartBlockNum: shipclient.NULL_BLOCK_NUMBER, EndBlockNum: shipclient.NULL_BLOCK_NUMBER, MaxMessagesInFlight: 10, - EnableTableDeltas: true, }, Redis: RedisConfig{ Addr: "127.0.0.1:6379", @@ -175,7 +174,6 @@ func TestBuilder_Flags(t *testing.T) { require.NoError(t, flags.Set("chain", "wax")) require.NoError(t, flags.Set("blacklist", "contract:action1,contract:action2,contract2:action1")) require.NoError(t, flags.Set("blacklist-is-whitelist", "true")) - require.NoError(t, flags.Set("table-deltas", "false")) cfg, err := NewBuilder(). SetSource(bytes.NewReader([]byte(``))). diff --git a/internal/config/cli.go b/internal/config/cli.go index d4f26ac..a23794a 100644 --- a/internal/config/cli.go +++ b/internal/config/cli.go @@ -7,7 +7,6 @@ import ( "github.com/spf13/pflag" ) -// Get a flag set with all flags mapping to a config value. func GetFlags() *pflag.FlagSet { flags := pflag.FlagSet{} @@ -43,16 +42,14 @@ func GetFlags() *pflag.FlagSet { flags.Uint32("start-block", shipclient.NULL_BLOCK_NUMBER, "Start to stream from this block") flags.Uint32("end-block", shipclient.NULL_BLOCK_NUMBER, "Stop streaming when this block is reached") - flags.Lookup("start-block").DefValue = "Config value, cache, head from api" + flags.Lookup("start-block").DefValue = "config value, cache, head from api" flags.Lookup("end-block").DefValue = "none" - flags.Bool("table-deltas", true, "True if thalos should receive and process table deltas from ship.") - flags.Bool("irreversible-only", false, "Only stream irreversible blocks from ship") flags.Int("max-msg-in-flight", 10, "Maximum messages that can be sent from SHIP without acknowledgement") flags.String("chain", "", "ChainID used in channel namespace, can be any string (default from api)") - flags.StringSlice("blacklist", []string{}, "Define a list of 'contract:action' pairs that will be blacklisted (Thalos will not process those actions)") + flags.StringSlice("blacklist", []string{}, "Define a list of 'contract:action' pairs that will be blacklisted (thalos will not process those actions)") flags.Bool("blacklist-is-whitelist", false, "Thalos will treat the blacklist as a whitelist") return &flags diff --git a/internal/config/config.go b/internal/config/config.go index feabb87..e1d815e 100644 --- a/internal/config/config.go +++ b/internal/config/config.go @@ -39,7 +39,6 @@ type ShipConfig struct { Chain string `yaml:"chain" mapstructure:"chain"` Blacklist types.Blacklist `yaml:"blacklist" mapstructure:"blacklist"` BlacklistIsWhitelist bool `yaml:"blacklist_is_whitelist" mapstructure:"blacklist_is_whitelist"` - EnableTableDeltas bool `yaml:"table_deltas" mapstructure:"table_deltas"` } type Config struct { diff --git a/internal/server/message_queue.go b/internal/server/message_queue.go index da46da5..50386ec 100644 --- a/internal/server/message_queue.go +++ b/internal/server/message_queue.go @@ -13,7 +13,7 @@ type MessageQueue struct { // Writer to write messages to writer driver.Writer - // Encoder to encode messages with + // encoder to encode messages with encode message.Encoder } diff --git a/internal/server/ship_processor.go b/internal/server/ship_processor.go index 1c1ee39..e3ab11e 100644 --- a/internal/server/ship_processor.go +++ b/internal/server/ship_processor.go @@ -2,7 +2,6 @@ package server import ( "bytes" - "errors" "github.com/eosswedenorg/thalos/api/message" "github.com/eosswedenorg/thalos/internal/abi" @@ -67,15 +66,6 @@ func SpawnProccessor(shipStream *shipclient.Stream, loader StateLoader, saver St return processor } -func (processor *ShipProcessor) FetchDeltas(value bool) { - if value { - // empty callback will signal that traces should be included in the response from ship. - processor.shipStream.TableDeltaHandler = func(*ship.TableDeltaArray) {} - } else { - processor.shipStream.TableDeltaHandler = nil - } -} - func (processor *ShipProcessor) SetBlacklist(list types.Blacklist) { processor.blacklist = list } @@ -229,47 +219,41 @@ func (processor *ShipProcessor) proccessActionTrace(logger *log.Entry, trace *sh func (processor *ShipProcessor) proccessDeltaRows(logger *log.Entry, table_name string, rows []ship.Row) []message.TableDeltaRow { out := []message.TableDeltaRow{} for _, row := range rows { - msg, err := processor.proccessDeltaRow(row, table_name) - if err != nil { - logger.WithError(err).Warn("Failed to processs table delta row") + + msg := message.TableDeltaRow{ + Present: row.Present, + RawData: row.Data, + } + + if processor.shipABI != nil { + v, err := processor.shipABI.Decode(bytes.NewReader(row.Data), table_name) + if err == nil { + data, err := ship_helper.ParseTableDeltaData(v) + if err == nil { + // Decode contract row data + if table_name == "contract_row" { + dec, err := ship_helper.DecodeContractRow(processor.abi, data) + if err != nil { + logger.WithError(err).Warn("Failed to decode contract row") + } else { + data["value"] = dec + } + } + msg.Data = data + } else { + logger.WithError(err).Error("Failed to parse table delta data") + } + } else { + logger.WithError(err).Error("Failed to decode table delta") + } + } else { + logger.Warn("No SHIP ABI present") } out = append(out, msg) } return out } -func (processor *ShipProcessor) proccessDeltaRow(row ship.Row, table_name string) (message.TableDeltaRow, error) { - msg := message.TableDeltaRow{ - Present: row.Present, - RawData: row.Data, - } - - if processor.shipABI == nil { - return msg, errors.New("No SHIP ABI present") - } - - v, err := processor.shipABI.Decode(bytes.NewReader(row.Data), table_name) - if err != nil { - return msg, errors.New("Failed to decode table delta") - } - data, err := ship_helper.ParseTableDeltaData(v) - if err != nil { - return msg, errors.New("Failed to parse table delta data") - } - - msg.Data = data - - // Decode contract row data - if table_name == "contract_row" { - dec, err := ship_helper.DecodeContractRow(processor.abi, data) - if err != nil { - return msg, errors.New("Failed to decode contract row") - } - msg.Data["value"] = dec - } - return msg, nil -} - // Callback function called by shipclient.Stream when a new block arrives. func (processor *ShipProcessor) processBlock(blockResult *ship.GetBlocksResultV0) { block := ship.SignedBlock{} diff --git a/internal/types/blacklist.go b/internal/types/blacklist.go index 4606c5e..24419c8 100644 --- a/internal/types/blacklist.go +++ b/internal/types/blacklist.go @@ -1,7 +1,5 @@ package types -const BlacklistWildcard = "*" - type Blacklist struct { table map[string][]string isWhitelist bool @@ -33,20 +31,10 @@ func (bl *Blacklist) Add(contract string, action string) { bl.table[contract] = append(bl.table[contract], action) } -func (bl Blacklist) list(contracts ...string) [][]string { - ret := [][]string{} - for _, contract := range contracts { - if v, ok := bl.table[contract]; ok { - ret = append(ret, v) - } - } - return ret -} - func (bl Blacklist) IsAllowed(contract string, action string) bool { - for _, v := range bl.list(contract, BlacklistWildcard) { + if v, ok := bl.table[contract]; ok { for _, act := range v { - if act == action || act == BlacklistWildcard { + if act == action || act == "*" { return bl.isWhitelist == true } } diff --git a/internal/types/blacklist_test.go b/internal/types/blacklist_test.go index 3c6a8a8..631d329 100644 --- a/internal/types/blacklist_test.go +++ b/internal/types/blacklist_test.go @@ -52,32 +52,20 @@ func TestBlacklist_IsAllowed(t *testing.T) { func TestBlacklist_IsAllowedWildcard(t *testing.T) { bl := Blacklist{ table: map[string][]string{ - "mycontract": {"*"}, - "*": {"action1", "action2"}, - "evilcontract": {"evilaction"}, + "mycontract": {"*"}, }, } require.False(t, bl.IsAllowed("mycontract", "myaction")) require.False(t, bl.IsAllowed("mycontract", "noop")) require.False(t, bl.IsAllowed("mycontract", "xxx")) - - // Wildcard contract - require.False(t, bl.IsAllowed("somecontract", "action1")) - require.False(t, bl.IsAllowed("someothercontract", "action1")) - require.False(t, bl.IsAllowed("randomcontract", "action2")) - require.False(t, bl.IsAllowed("evilcontract", "action2")) - require.False(t, bl.IsAllowed("evilcontract", "evilaction")) - require.True(t, bl.IsAllowed("xxx", "yyy")) - require.True(t, bl.IsAllowed("evilcontract", "alloweaction")) } func TestBlacklist_Whitelist(t *testing.T) { bl := Blacklist{ table: map[string][]string{ "mycontract": {"myaction", "noop"}, - "*": {"goodaction1", "goodaction2"}, }, } @@ -85,11 +73,6 @@ func TestBlacklist_Whitelist(t *testing.T) { require.True(t, bl.IsAllowed("mycontract", "myaction")) require.True(t, bl.IsAllowed("mycontract", "noop")) - - // Wildcard contract - require.True(t, bl.IsAllowed("mycontract", "goodaction1")) - require.True(t, bl.IsAllowed("someothercontract", "goodaction2")) - require.False(t, bl.IsAllowed("mycontract", "xxx")) require.False(t, bl.IsAllowed("xxx", "yyy")) }