diff --git a/.codebeatsettings b/.codebeatsettings
deleted file mode 100644
index 8e5dd08..0000000
--- a/.codebeatsettings
+++ /dev/null
@@ -1,11 +0,0 @@
-{
- "GOLANG": {
- "ABC": [15, 25, 50, 70],
- "LOC": [30, 45, 70, 100],
- "BLOCK_NESTING": [4, 6, 8, 10],
- "TOO_MANY_IVARS": [50, 75, 100, 150],
- "TOO_MANY_FUNCTIONS": [64, 128, 256, 512],
- "TOTAL_LOC": [1500, 3000, 5000, 10000],
- "TOTAL_COMPLEXITY": [350, 600, 900, 1200]
- }
-}
diff --git a/.github/ISSUE_TEMPLATE.md b/.github/ISSUE_TEMPLATE.md
deleted file mode 100644
index a3c74a6..0000000
--- a/.github/ISSUE_TEMPLATE.md
+++ /dev/null
@@ -1,53 +0,0 @@
-_Before opening an issue, search for similar bug reports or feature requests on GitHub Issues. If yes, please add a_ đź‘Ť _reaction to the existing issue. If no similar issue can be found, fill out either the "Bug Report" or the "Feature Request" section below. Erase the other section and everything on and above this line._
-
-### Bug report
-
-**System info:**
-
-* **Version used (`updown-badge-server --version`):**
-* **OS (e.g. from `/etc/*-release`):**
-* **Kernel (`uname -a`):**
-* **Install tools:**
-
-**Steps to reproduce:**
-
-1. [First Step]
-2. [Second Step]
-3. [and so on...]
-
-**Expected behavior:**
-
-[What you expected to happen]
-
-**Actual behavior:**
-
-[What actually happened]
-
-**Additional info:**
-
-[Include gist of relevant config, logs, etc.]
-
-Please run those if possible and link them from a [gist](http://gist.github.com).
-
----
-
-### Feature Request
-
-Opening a feature request kicks off a discussion. Requests may be closed if we're not actively planning to work on them.
-
-**Proposal:**
-
-[Description of the feature]
-
-**Current behavior:**
-
-[What currently happens]
-
-**Desired behavior:**
-
-[What you would like to happen]
-
-**Use case:**
-
-[Why is this important (helps with prioritizing requests)]
-
diff --git a/.github/ISSUE_TEMPLATE/bug.yml b/.github/ISSUE_TEMPLATE/bug.yml
new file mode 100644
index 0000000..19d3e3b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/bug.yml
@@ -0,0 +1,64 @@
+name: âť— Bug Report
+description: File a bug report
+title: "[Bug]: "
+labels: ["issue • bug"]
+assignees:
+ - andyone
+
+body:
+ - type: markdown
+ attributes:
+ value: |
+ > [!IMPORTANT]
+ > Before you open an issue, search GitHub Issues for a similar bug reports. If so, please add a đź‘Ť reaction to the existing issue.
+
+ - type: textarea
+ attributes:
+ label: Verbose application info
+ description: Output of `updown-badge-server -vv` command
+ render: shell
+ validations:
+ required: true
+
+ - type: dropdown
+ id: version
+ attributes:
+ label: Install tools
+ description: How did you install this application
+ options:
+ - From Sources
+ - RPM Package
+ - Prebuilt Binary
+ default: 0
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Steps to reproduce
+ description: Short guide on how to reproduce this problem on our site
+ placeholder: |
+ 1. [First Step]
+ 2. [Second Step]
+ 3. [and so on...]
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Expected behavior
+ description: What you expected to happen
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Actual behavior
+ description: What actually happened
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Additional info
+ description: Include gist of relevant config, logs, etc.
diff --git a/.github/ISSUE_TEMPLATE/config.yml b/.github/ISSUE_TEMPLATE/config.yml
new file mode 100644
index 0000000..185cc9a
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/config.yml
@@ -0,0 +1,14 @@
+blank_issues_enabled: false
+
+contact_links:
+ - name: Security Policies and Procedures
+ url: https://github.com/essentialkaos/.github/blob/master/SECURITY.md
+ about: Security procedures and general policies for all ESSENTIAL KAOS projects.
+
+ - name: Contributing Guidelines
+ url: https://github.com/essentialkaos/contributing-guidelines/blob/master/CONTRIBUTING.md
+ about: Contributing Guidelines for all ESSENTIAL KAOS projects
+
+ - name: Go Version Support Policy
+ url: https://github.com/essentialkaos/.github/blob/master/GO-VERSION-SUPPORT.md
+ about: Information about supported Go versions
diff --git a/.github/ISSUE_TEMPLATE/question.yml b/.github/ISSUE_TEMPLATE/question.yml
new file mode 100644
index 0000000..e35c68b
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/question.yml
@@ -0,0 +1,26 @@
+name: âť“ Question
+description: Question about application, configuration or code
+title: "[Question]: "
+labels: ["issue • question"]
+assignees:
+ - andyone
+
+body:
+ - type: markdown
+ attributes:
+ value: |
+ > [!IMPORTANT]
+ > Before you open an issue, search GitHub Issues for a similar question. If so, please add a đź‘Ť reaction to the existing issue.
+
+ - type: textarea
+ attributes:
+ label: Question
+ description: Detailed question
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Related version application info
+ description: Output of `updown-badge-server -vv` command
+ render: shell
diff --git a/.github/ISSUE_TEMPLATE/suggestion.yml b/.github/ISSUE_TEMPLATE/suggestion.yml
new file mode 100644
index 0000000..39c69e0
--- /dev/null
+++ b/.github/ISSUE_TEMPLATE/suggestion.yml
@@ -0,0 +1,43 @@
+name: âž• Suggestion
+description: Suggest new feature or improvement
+title: "[Suggestion]: "
+labels: ["issue • suggestion"]
+assignees:
+ - andyone
+
+body:
+ - type: markdown
+ attributes:
+ value: |
+ > [!IMPORTANT]
+ > Before you open an issue, search GitHub Issues for a similar feature requests. If so, please add a đź‘Ť reaction to the existing issue.
+ >
+ > Opening a feature request kicks off a discussion. Requests may be closed if we're not actively planning to work on them.
+
+ - type: textarea
+ attributes:
+ label: Proposal
+ description: Description of the feature
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Current behavior
+ description: What currently happens
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Desired behavior
+ description: What you would like to happen
+ validations:
+ required: true
+
+ - type: textarea
+ attributes:
+ label: Use case
+ description: Why is this important (helps with prioritizing requests)
+ validations:
+ required: true
diff --git a/.github/dependabot.yml b/.github/dependabot.yml
index d0ad1de..605744a 100644
--- a/.github/dependabot.yml
+++ b/.github/dependabot.yml
@@ -6,7 +6,7 @@ updates:
target-branch: "develop"
schedule:
interval: "daily"
- timezone: "Europe/London"
+ timezone: "Etc/UTC"
time: "03:00"
labels:
- "PR • MAINTENANCE"
@@ -26,8 +26,8 @@ updates:
target-branch: "develop"
schedule:
interval: "daily"
- timezone: "Europe/London"
- time: "04:00"
+ timezone: "Etc/UTC"
+ time: "03:00"
labels:
- "PR • MAINTENANCE"
assignees:
diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml
index 7e8768b..765872e 100644
--- a/.github/workflows/ci.yml
+++ b/.github/workflows/ci.yml
@@ -29,7 +29,7 @@ jobs:
strategy:
matrix:
- go: [ '1.21.x', '1.22.x' ]
+ go: [ '1.22.x', '1.23.x' ]
steps:
- name: Checkout
@@ -59,7 +59,7 @@ jobs:
- name: Set up Go
uses: actions/setup-go@v5
with:
- go-version: '1.21.x'
+ go-version: '1.22.x'
- name: Download dependencies
run: make deps
diff --git a/Makefile b/Makefile
index 0e1b51a..03b0103 100644
--- a/Makefile
+++ b/Makefile
@@ -1,6 +1,6 @@
################################################################################
-# This Makefile generated by GoMakeGen 3.0.2 using next command:
+# This Makefile generated by GoMakeGen 3.2.2 using next command:
# gomakegen --mod .
#
# More info: https://kaos.sh/gomakegen
@@ -11,7 +11,16 @@ ifdef VERBOSE ## Print verbose information (Flag)
VERBOSE_FLAG = -v
endif
-COMPAT ?= 1.19
+ifdef PROXY ## Force proxy usage for downloading dependencies (Flag)
+export GOPROXY=https://proxy.golang.org/cached-only,direct
+endif
+
+ifdef CGO ## Enable CGO usage (Flag)
+export CGO_ENABLED=1
+else
+export CGO_ENABLED=0
+endif
+
MAKEDIR = $(dir $(realpath $(firstword $(MAKEFILE_LIST))))
GITREV ?= $(shell test -s $(MAKEDIR)/.git && git rev-parse --short HEAD)
@@ -45,19 +54,22 @@ update: mod-update ## Update dependencies to the latest versions
vendor: mod-vendor ## Make vendored copy of dependencies
mod-init:
- @echo "[37m[1/2][0m [36;1mModules initialization…[0m"
+ @echo "[37m[1/3][0m [36;1mModules initialization…[0m"
+ @rm -f go.mod go.sum
ifdef MODULE_PATH ## Module path for initialization (String)
@go mod init $(MODULE_PATH)
else
@go mod init
endif
- @echo "[37m[2/2][0m [36;1mDependencies cleanup…[0m"
+ @echo "[37m[2/3][0m [36;1mDependencies cleanup…[0m"
ifdef COMPAT ## Compatible Go version (String)
@go mod tidy $(VERBOSE_FLAG) -compat=$(COMPAT) -go=$(COMPAT)
else
@go mod tidy $(VERBOSE_FLAG)
endif
+ @echo "[37m[3/3][0m [36;1mStripping toolchain info…[0m"
+ @grep -q 'toolchain ' go.mod && go mod edit -toolchain=none || :
mod-update:
@echo "[37m[1/4][0m [36;1mUpdating dependencies…[0m"
@@ -107,8 +119,9 @@ help: ## Show this info
@echo -e '\n\033[1mVariables:\033[0m\n'
@grep -E '^ifdef [A-Z_]+ .*?## .*$$' $(abspath $(lastword $(MAKEFILE_LIST))) \
| sed 's/ifdef //' \
+ | sort -h \
| awk 'BEGIN {FS = " .*?## "}; {printf " \033[32m%-11s\033[0m %s\n", $$1, $$2}'
@echo -e ''
- @echo -e '\033[90mGenerated by GoMakeGen 3.0.2\033[0m\n'
+ @echo -e '\033[90mGenerated by GoMakeGen 3.2.2\033[0m\n'
################################################################################
diff --git a/README.md b/README.md
index 0fc2cff..139dabe 100644
--- a/README.md
+++ b/README.md
@@ -2,7 +2,6 @@
-
@@ -18,8 +17,8 @@
#### From [ESSENTIAL KAOS Public Repository](https://kaos.sh/kaos-repo)
```bash
-sudo yum install -y https://pkgs.kaos.st/kaos-repo-latest.el$(grep 'CPE_NAME' /etc/os-release | tr -d '"' | cut -d':' -f5).noarch.rpm
-sudo yum install updown-badge-server
+sudo dnf install -y https://pkgs.kaos.st/kaos-repo-latest.el$(grep 'CPE_NAME' /etc/os-release | tr -d '"' | cut -d':' -f5).noarch.rpm
+sudo dnf install updown-badge-server
```
### Badges
diff --git a/common/updown-badge-server.spec b/common/updown-badge-server.spec
index c18d30f..975f50c 100644
--- a/common/updown-badge-server.spec
+++ b/common/updown-badge-server.spec
@@ -14,7 +14,7 @@
Summary: Service for generating badges for updown.io checks
Name: updown-badge-server
-Version: 1.3.2
+Version: 1.4.0
Release: 0%{?dist}
Group: Applications/System
License: Apache License, Version 2.0
@@ -26,7 +26,7 @@ Source100: checksum.sha512
BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
-BuildRequires: golang >= 1.21
+BuildRequires: golang >= 1.22
Requires: systemd
@@ -100,6 +100,10 @@ exit 0
################################################################################
%changelog
+* Thu Oct 10 2024 Anton Novojilov - 1.4.0-0
+- Code refactoring
+- Dependencies update
+
* Mon Jun 24 2024 Anton Novojilov - 1.3.2-0
- Code refactoring
- Dependencies update
diff --git a/daemon/daemon.go b/daemon/daemon.go
index 90b3c4c..6b17f98 100644
--- a/daemon/daemon.go
+++ b/daemon/daemon.go
@@ -8,29 +8,32 @@ package daemon
// ////////////////////////////////////////////////////////////////////////////////// //
import (
+ "fmt"
"os"
"runtime"
- "strings"
"time"
- "github.com/essentialkaos/ek/v12/cache"
- "github.com/essentialkaos/ek/v12/fmtc"
- "github.com/essentialkaos/ek/v12/knf"
- "github.com/essentialkaos/ek/v12/log"
- "github.com/essentialkaos/ek/v12/options"
- "github.com/essentialkaos/ek/v12/signal"
- "github.com/essentialkaos/ek/v12/support"
- "github.com/essentialkaos/ek/v12/support/deps"
- "github.com/essentialkaos/ek/v12/terminal"
- "github.com/essentialkaos/ek/v12/terminal/tty"
- "github.com/essentialkaos/ek/v12/usage"
-
- knfv "github.com/essentialkaos/ek/v12/knf/validators"
- knff "github.com/essentialkaos/ek/v12/knf/validators/fs"
- knfn "github.com/essentialkaos/ek/v12/knf/validators/network"
- knfr "github.com/essentialkaos/ek/v12/knf/validators/regexp"
-
- "github.com/essentialkaos/go-badge"
+ "github.com/essentialkaos/ek/v13/cache"
+ "github.com/essentialkaos/ek/v13/cache/memory"
+ "github.com/essentialkaos/ek/v13/errors"
+ "github.com/essentialkaos/ek/v13/fmtc"
+ "github.com/essentialkaos/ek/v13/knf"
+ "github.com/essentialkaos/ek/v13/log"
+ "github.com/essentialkaos/ek/v13/options"
+ "github.com/essentialkaos/ek/v13/signal"
+ "github.com/essentialkaos/ek/v13/support"
+ "github.com/essentialkaos/ek/v13/support/deps"
+ "github.com/essentialkaos/ek/v13/support/services"
+ "github.com/essentialkaos/ek/v13/terminal"
+ "github.com/essentialkaos/ek/v13/terminal/tty"
+ "github.com/essentialkaos/ek/v13/usage"
+
+ knfv "github.com/essentialkaos/ek/v13/knf/validators"
+ knff "github.com/essentialkaos/ek/v13/knf/validators/fs"
+ knfn "github.com/essentialkaos/ek/v13/knf/validators/network"
+ knfr "github.com/essentialkaos/ek/v13/knf/validators/regexp"
+
+ badge "github.com/essentialkaos/go-badge"
"github.com/valyala/fasthttp"
@@ -42,7 +45,7 @@ import (
// Basic service info
const (
APP = "UpDownBadgeServer"
- VER = "1.3.2"
+ VER = "1.4.0"
DESC = "Service for generating badges for updown.io checks"
)
@@ -97,7 +100,7 @@ var optMap = options.Map{
var udAPI *api.API
var server *fasthttp.Server
-var badgeCache *cache.Cache
+var badgeCache cache.Cache
var badgeGen *badge.Generator
var badgeStyle string
var redirectURL string
@@ -112,7 +115,7 @@ func Run(gomod []byte) {
if !errs.IsEmpty() {
terminal.Error("Options parsing errors:")
- terminal.Error(errs.String())
+ terminal.Error(errs.Error("- "))
os.Exit(1)
}
@@ -125,6 +128,7 @@ func Run(gomod []byte) {
case options.GetB(OPT_VERB_VER):
support.Collect(APP, VER).
WithDeps(deps.Extract(gomod)).
+ WithServices(services.Collect("updown-badge-server")).
Print()
os.Exit(0)
case options.GetB(OPT_HELP):
@@ -132,15 +136,33 @@ func Run(gomod []byte) {
os.Exit(0)
}
- loadConfig()
- validateConfig()
- configureRuntime()
- registerSignalHandlers()
- setupLogger()
+ err := errors.Chain(
+ loadConfig,
+ validateConfig,
+ configureRuntime,
+ setupSignalHandlers,
+ setupLogger,
+ )
- log.Aux(strings.Repeat("-", 80))
+ if err != nil {
+ terminal.Error(err)
+ os.Exit(1)
+ }
+
+ log.Divider()
log.Aux("%s %s starting…", APP, VER)
+ err = errors.Chain(
+ setupCache,
+ setupGenerator,
+ setupAPIClient,
+ )
+
+ if err != nil {
+ log.Crit(err.Error())
+ os.Exit(1)
+ }
+
start()
}
@@ -159,31 +181,32 @@ func configureUI() {
}
// loadConfig reads and parses configuration file
-func loadConfig() {
+func loadConfig() error {
err := knf.Global(options.GetS(OPT_CONFIG))
if err != nil {
- log.Crit(err.Error())
- os.Exit(1)
+ return fmt.Errorf("Can't load configuration: %w", err)
}
+
+ return nil
}
// validateConfig validates configuration file values
-func validateConfig() {
+func validateConfig() error {
errs := knf.Validate([]*knf.Validator{
- {UPDOWN_API_KEY, knfv.Empty, nil},
- {SERVER_PORT, knfv.Empty, nil},
+ {UPDOWN_API_KEY, knfv.Set, nil},
+ {SERVER_PORT, knfv.Set, nil},
{MAIN_MAX_PROCS, knfv.TypeNum, nil},
{CACHE_PERIOD, knfv.TypeNum, nil},
{SERVER_PORT, knfv.TypeNum, nil},
{BADGE_FONT, knff.Perms, "FRS"},
- {BADGE_STYLE, knfv.NotContains, []string{
+ {BADGE_STYLE, knfv.SetToAny, []string{
STYLE_PLASTIC, STYLE_FLAT, STYLE_FLAT_SQUARE,
}},
- {UPDOWN_API_KEY, knfv.NotLen, 23},
+ {UPDOWN_API_KEY, knfv.LenEquals, 23},
{UPDOWN_API_KEY, knfr.Regexp, "^ro-[0-9A-Za-z]{20}$"},
{MAIN_MAX_PROCS, knfv.Less, MIN_PROCS},
@@ -201,57 +224,75 @@ func validateConfig() {
{LOG_DIR, knff.Perms, "DW"},
{LOG_DIR, knff.Perms, "DX"},
- {LOG_LEVEL, knfv.NotContains, []string{
+ {LOG_LEVEL, knfv.SetToAnyIgnoreCase, []string{
"debug", "info", "warn", "error", "crit",
}},
})
if len(errs) != 0 {
- for _, err := range errs {
- log.Crit(err.Error())
- }
-
- os.Exit(1)
+ return errs[0]
}
+
+ return nil
}
// configureRuntime configures runtime
-func configureRuntime() {
+func configureRuntime() error {
if !knf.HasProp(MAIN_MAX_PROCS) {
- return
+ return nil
}
runtime.GOMAXPROCS(knf.GetI(MAIN_MAX_PROCS))
+
+ return nil
}
-// registerSignalHandlers registers signal handlers
-func registerSignalHandlers() {
+// setupSignalHandlers registers signal handlers
+func setupSignalHandlers() error {
signal.Handlers{
signal.TERM: termSignalHandler,
signal.INT: intSignalHandler,
signal.HUP: hupSignalHandler,
}.TrackAsync()
+
+ return nil
}
// setupLogger configures logger subsystems
-func setupLogger() {
+func setupLogger() error {
err := log.Set(knf.GetS(LOG_FILE), knf.GetM(LOG_MODE, 0644))
if err != nil {
- log.Crit(err.Error())
- os.Exit(1)
+ return fmt.Errorf("Can't setup logger: %w", err)
}
err = log.MinLevel(knf.GetS(LOG_LEVEL))
if err != nil {
- log.Crit(err.Error())
- os.Exit(1)
+ return fmt.Errorf("Can't setup logger: %w", err)
}
+
+ return nil
}
-// start configures and starts all subsystems
-func start() {
+// setupCache configures in-memory cache
+func setupCache() error {
+ var err error
+
+ badgeCache, err = memory.New(memory.Config{
+ DefaultExpiration: knf.GetD(CACHE_PERIOD, knf.SECOND),
+ CleanupInterval: 15 * time.Second,
+ })
+
+ if err != nil {
+ return fmt.Errorf("Can't configure in-memory cache: %w", err)
+ }
+
+ return nil
+}
+
+// setupGenerator configurates badge generator
+func setupGenerator() error {
var err error
badgeStyle = knf.GetS(BADGE_STYLE, "flat")
@@ -260,21 +301,32 @@ func start() {
badgeGen, err = badge.NewGenerator(knf.GetS(BADGE_FONT), 11)
if err != nil {
- log.Crit("Can't load font for badges: %v", err)
- shutdown(1)
+ return fmt.Errorf("Can't create badge generator: %w", err)
}
+ return nil
+}
+
+// setupAPIClient configures updown.io API client
+func setupAPIClient() error {
udAPI = api.NewClient(knf.GetS(UPDOWN_API_KEY))
udAPI.SetUserAgent(APP, VER)
- badgeCache = cache.New(knf.GetD(CACHE_PERIOD, knf.Second), time.Minute)
+ return nil
+}
- err = startHTTPServer(knf.GetS(SERVER_IP), knf.GetS(SERVER_PORT))
+// start configures and starts all subsystems
+func start() error {
+ err := startHTTPServer(
+ knf.GetS(SERVER_IP),
+ knf.GetS(SERVER_PORT),
+ )
if err != nil {
- log.Crit("Can't start HTTP server: %v", err)
- shutdown(1)
+ return fmt.Errorf("Can't start HTTP server: %w", err)
}
+
+ return nil
}
// intSignalHandler is INT signal handler
@@ -306,6 +358,7 @@ func shutdown(code int) {
}
}
+ log.Flush()
os.Exit(code)
}
diff --git a/daemon/server.go b/daemon/server.go
index a316df3..039333b 100644
--- a/daemon/server.go
+++ b/daemon/server.go
@@ -11,11 +11,11 @@ import (
"fmt"
"strings"
- "github.com/essentialkaos/ek/v12/color"
- "github.com/essentialkaos/ek/v12/easing"
- "github.com/essentialkaos/ek/v12/log"
- "github.com/essentialkaos/ek/v12/mathutil"
- "github.com/essentialkaos/ek/v12/strutil"
+ "github.com/essentialkaos/ek/v13/color"
+ "github.com/essentialkaos/ek/v13/easing"
+ "github.com/essentialkaos/ek/v13/log"
+ "github.com/essentialkaos/ek/v13/mathutil"
+ "github.com/essentialkaos/ek/v13/strutil"
"github.com/essentialkaos/go-badge"
diff --git a/go.mod b/go.mod
index 0930249..17488fa 100644
--- a/go.mod
+++ b/go.mod
@@ -1,19 +1,19 @@
module github.com/essentialkaos/updown-badge-server
-go 1.18
+go 1.22.8
require (
- github.com/essentialkaos/ek/v12 v12.127.0
- github.com/essentialkaos/go-badge v1.3.4
- github.com/valyala/fasthttp v1.55.0
+ github.com/essentialkaos/ek/v13 v13.10.1
+ github.com/essentialkaos/go-badge v1.4.1
+ github.com/valyala/fasthttp v1.57.0
)
require (
- github.com/andybalholm/brotli v1.1.0 // indirect
- github.com/essentialkaos/depsy v1.3.0 // indirect
+ github.com/andybalholm/brotli v1.1.1 // indirect
+ github.com/essentialkaos/depsy v1.3.1 // indirect
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 // indirect
- github.com/klauspost/compress v1.17.9 // indirect
+ github.com/klauspost/compress v1.17.11 // indirect
github.com/valyala/bytebufferpool v1.0.0 // indirect
- golang.org/x/image v0.17.0 // indirect
- golang.org/x/sys v0.21.0 // indirect
+ golang.org/x/image v0.22.0 // indirect
+ golang.org/x/sys v0.27.0 // indirect
)
diff --git a/go.sum b/go.sum
index 7dc68ab..ead7595 100644
--- a/go.sum
+++ b/go.sum
@@ -1,24 +1,30 @@
-github.com/andybalholm/brotli v1.1.0 h1:eLKJA0d02Lf0mVpIDgYnqXcUn0GqVmEFny3VuID1U3M=
-github.com/andybalholm/brotli v1.1.0/go.mod h1:sms7XGricyQI9K10gOSf56VKKWS4oLer58Q+mhRPtnY=
-github.com/essentialkaos/check v1.4.0 h1:kWdFxu9odCxUqo1NNFNJmguGrDHgwi3A8daXX1nkuKk=
-github.com/essentialkaos/depsy v1.3.0 h1:CN7bRgBU2jGTHSkg/Sh38eDUn7cvmaTp2sxFt2HpFeU=
-github.com/essentialkaos/depsy v1.3.0/go.mod h1:kpiTAV17dyByVnrbNaMcZt2jRwvuXClUYOzpyJQwtG8=
-github.com/essentialkaos/ek/v12 v12.127.0 h1:fU5A+QbIZ7NTq1K5jGVwAWwuLtBUhsIKuRWYT78hE+Q=
-github.com/essentialkaos/ek/v12 v12.127.0/go.mod h1:71IJ7m82hgjrvWnhL+z0vIhguxz47/rfVma5/CeI5Fw=
-github.com/essentialkaos/go-badge v1.3.4 h1:nQPlfc0F7YbcpnZa+gaiAQy5VMGiojfQeJb+D34gLKI=
-github.com/essentialkaos/go-badge v1.3.4/go.mod h1:AAHR0QTa5yMNAY/dNA4e6jJbPBZvpD2qowyiFz1Gb04=
+github.com/andybalholm/brotli v1.1.1 h1:PR2pgnyFznKEugtsUo0xLdDop5SKXd5Qf5ysW+7XdTA=
+github.com/andybalholm/brotli v1.1.1/go.mod h1:05ib4cKhjx3OQYUY22hTVd34Bc8upXjOLL2rKwwZBoA=
+github.com/essentialkaos/check v1.4.1 h1:SuxXzrbokPGTPWxGRnzy0hXvtb44mtVrdNxgPa1s4c8=
+github.com/essentialkaos/check v1.4.1/go.mod h1:xQOYwFvnxfVZyt5Qvjoa1SxcRqu5VyP77pgALr3iu+M=
+github.com/essentialkaos/depsy v1.3.1 h1:00k9QcMsdPM4IzDaEFHsTHBD/zoM0oxtB5+dMUwbQa8=
+github.com/essentialkaos/depsy v1.3.1/go.mod h1:B5+7Jhv2a2RacOAxIKU2OeJp9QfZjwIpEEPI5X7auWM=
+github.com/essentialkaos/ek/v13 v13.10.1 h1:pQPSOQn04KPv3LAPzg/2HlRTmv2fPK+A8JthE+1Wdr8=
+github.com/essentialkaos/ek/v13 v13.10.1/go.mod h1:GAoS44v5gtd3Yc1qqfgXsaJNoC0dMw1ueW5Fc9TTHUg=
+github.com/essentialkaos/go-badge v1.4.1 h1:ZtPY1VzukuK51ryYnOrh8vIUBcSdsNJRL8GG+5QxdFg=
+github.com/essentialkaos/go-badge v1.4.1/go.mod h1:CwkvOc0vEK7OnTPNsl9Jx2nxzPakzZl9/ak6GvRFyQA=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0 h1:DACJavvAHhabrF08vX0COfcOBJRhZ8lUbR+ZWIs0Y5g=
github.com/golang/freetype v0.0.0-20170609003504-e2365dfdc4a0/go.mod h1:E/TSTwGwJL78qG/PmXZO1EjYhfJinVAhrmmHX6Z8B9k=
-github.com/klauspost/compress v1.17.9 h1:6KIumPrER1LHsvBVuDa0r5xaG0Es51mhhB9BQB2qeMA=
-github.com/klauspost/compress v1.17.9/go.mod h1:Di0epgTjJY877eYKx5yC51cX2A2Vl2ibi7bDH9ttBbw=
+github.com/klauspost/compress v1.17.11 h1:In6xLpyWOi1+C7tXUUWv2ot1QvBjxevKAaI6IXrJmUc=
+github.com/klauspost/compress v1.17.11/go.mod h1:pMDklpSncoRMuLFrf1W9Ss9KT+0rH90U12bZKk7uwG0=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
+github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY=
-github.com/rogpeppe/go-internal v1.11.0 h1:cWPaGQEPrBb5/AsnsZesgZZ9yb1OQ+GOISoDNXVBh4M=
+github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE=
+github.com/rogpeppe/go-internal v1.13.1 h1:KvO1DLK/DRN07sQ1LQKScxyZJuNnedQ5/wKSR38lUII=
+github.com/rogpeppe/go-internal v1.13.1/go.mod h1:uMEvuHeurkdAXX61udpOXGD/AzZDWNMNyH2VO9fmH0o=
github.com/valyala/bytebufferpool v1.0.0 h1:GqA5TC/0021Y/b9FG4Oi9Mr3q7XYx6KllzawFIhcdPw=
github.com/valyala/bytebufferpool v1.0.0/go.mod h1:6bBcMArwyJ5K/AmCkWv1jt77kVWyCJ6HpOuEn7z0Csc=
-github.com/valyala/fasthttp v1.55.0 h1:Zkefzgt6a7+bVKHnu/YaYSOPfNYNisSVBo/unVCf8k8=
-github.com/valyala/fasthttp v1.55.0/go.mod h1:NkY9JtkrpPKmgwV3HTaS2HWaJss9RSIsRVfcxxoHiOM=
-golang.org/x/image v0.17.0 h1:nTRVVdajgB8zCMZVsViyzhnMKPwYeroEERRC64JuLco=
-golang.org/x/image v0.17.0/go.mod h1:4yyo5vMFQjVjUcVk4jEQcU9MGy/rulF5WvUILseCM2E=
-golang.org/x/sys v0.21.0 h1:rF+pYz3DAGSQAxAu1CbC7catZg4ebC4UIeIhKxBZvws=
-golang.org/x/sys v0.21.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
+github.com/valyala/fasthttp v1.57.0 h1:Xw8SjWGEP/+wAAgyy5XTvgrWlOD1+TxbbvNADYCm1Tg=
+github.com/valyala/fasthttp v1.57.0/go.mod h1:h6ZBaPRlzpZ6O3H5t2gEk1Qi33+TmLvfwgLLp0t9CpE=
+github.com/xyproto/randomstring v1.0.5 h1:YtlWPoRdgMu3NZtP45drfy1GKoojuR7hmRcnhZqKjWU=
+github.com/xyproto/randomstring v1.0.5/go.mod h1:rgmS5DeNXLivK7YprL0pY+lTuhNQW3iGxZ18UQApw/E=
+golang.org/x/image v0.22.0 h1:UtK5yLUzilVrkjMAZAZ34DXGpASN8i8pj8g+O+yd10g=
+golang.org/x/image v0.22.0/go.mod h1:9hPFhljd4zZ1GNSIZJ49sqbp45GKK9t6w+iXvGqZUz4=
+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=