From f9dd1acc459a52fd9c2d92338bef127116379444 Mon Sep 17 00:00:00 2001 From: eleksir Date: Tue, 27 May 2025 20:54:22 +0300 Subject: [PATCH] Update deps, update config of golangci-lint, fix some golangci-lint warnings --- .golangci.yml | 14 +- Design.txt | 2 + cmd/buny-jabber-bot/main.go | 8 +- contrib/buny-jabber-bot.openrc | 3 + go.mod | 12 +- go.sum | 20 +- internal/jabber/bf.go | 8 +- internal/jabber/black-whilte_lists.go | 2 + internal/jabber/commands.go | 2 + internal/jabber/event_parser.go | 20 +- internal/jabber/main_loop.go | 1 + internal/jabber/norm_string.go | 2 +- internal/jabber/sig_handler.go | 2 + internal/jabber/squash.go | 2 + internal/jabber/types.go | 20 +- internal/jabber/util.go | 14 +- .../x/exp/constraints/constraints.go | 50 -- vendor/golang.org/x/exp/slices/cmp.go | 44 -- vendor/golang.org/x/exp/slices/slices.go | 447 +++------------- vendor/golang.org/x/exp/slices/sort.go | 162 ++---- .../golang.org/x/exp/slices/zsortanyfunc.go | 479 ----------------- .../golang.org/x/exp/slices/zsortordered.go | 481 ------------------ vendor/golang.org/x/net/context/context.go | 112 +++- vendor/golang.org/x/net/context/go17.go | 72 --- vendor/golang.org/x/net/context/go19.go | 20 - vendor/golang.org/x/net/context/pre_go17.go | 300 ----------- vendor/golang.org/x/net/context/pre_go19.go | 109 ---- vendor/golang.org/x/sys/unix/auxv.go | 36 ++ .../golang.org/x/sys/unix/auxv_unsupported.go | 13 + .../golang.org/x/sys/unix/syscall_darwin.go | 149 +++++- .../x/sys/unix/syscall_dragonfly.go | 12 + vendor/golang.org/x/sys/unix/syscall_linux.go | 42 +- .../golang.org/x/sys/unix/syscall_solaris.go | 87 ++++ vendor/golang.org/x/sys/unix/zerrors_linux.go | 29 +- .../x/sys/unix/zerrors_linux_386.go | 9 + .../x/sys/unix/zerrors_linux_amd64.go | 9 + .../x/sys/unix/zerrors_linux_arm.go | 9 + .../x/sys/unix/zerrors_linux_arm64.go | 11 + .../x/sys/unix/zerrors_linux_loong64.go | 9 + .../x/sys/unix/zerrors_linux_mips.go | 9 + .../x/sys/unix/zerrors_linux_mips64.go | 9 + .../x/sys/unix/zerrors_linux_mips64le.go | 9 + .../x/sys/unix/zerrors_linux_mipsle.go | 9 + .../x/sys/unix/zerrors_linux_ppc.go | 9 + .../x/sys/unix/zerrors_linux_ppc64.go | 9 + .../x/sys/unix/zerrors_linux_ppc64le.go | 9 + .../x/sys/unix/zerrors_linux_riscv64.go | 9 + .../x/sys/unix/zerrors_linux_s390x.go | 9 + .../x/sys/unix/zerrors_linux_sparc64.go | 9 + .../x/sys/unix/zsyscall_darwin_amd64.go | 84 +++ .../x/sys/unix/zsyscall_darwin_amd64.s | 20 + .../x/sys/unix/zsyscall_darwin_arm64.go | 84 +++ .../x/sys/unix/zsyscall_darwin_arm64.s | 20 + .../x/sys/unix/zsyscall_solaris_amd64.go | 114 +++++ .../x/sys/unix/zsysnum_linux_386.go | 4 + .../x/sys/unix/zsysnum_linux_amd64.go | 4 + .../x/sys/unix/zsysnum_linux_arm.go | 4 + .../x/sys/unix/zsysnum_linux_arm64.go | 4 + .../x/sys/unix/zsysnum_linux_loong64.go | 4 + .../x/sys/unix/zsysnum_linux_mips.go | 4 + .../x/sys/unix/zsysnum_linux_mips64.go | 4 + .../x/sys/unix/zsysnum_linux_mips64le.go | 4 + .../x/sys/unix/zsysnum_linux_mipsle.go | 4 + .../x/sys/unix/zsysnum_linux_ppc.go | 4 + .../x/sys/unix/zsysnum_linux_ppc64.go | 4 + .../x/sys/unix/zsysnum_linux_ppc64le.go | 4 + .../x/sys/unix/zsysnum_linux_riscv64.go | 4 + .../x/sys/unix/zsysnum_linux_s390x.go | 4 + .../x/sys/unix/zsysnum_linux_sparc64.go | 4 + .../x/sys/unix/ztypes_darwin_amd64.go | 60 +++ .../x/sys/unix/ztypes_darwin_arm64.go | 60 +++ vendor/golang.org/x/sys/unix/ztypes_linux.go | 26 +- .../golang.org/x/sys/windows/dll_windows.go | 11 +- .../x/sys/windows/security_windows.go | 49 +- .../x/sys/windows/syscall_windows.go | 8 +- .../golang.org/x/sys/windows/types_windows.go | 240 +++++++++ .../x/sys/windows/zsyscall_windows.go | 37 +- vendor/modules.txt | 21 +- 78 files changed, 1602 insertions(+), 2205 deletions(-) delete mode 100644 vendor/golang.org/x/exp/constraints/constraints.go delete mode 100644 vendor/golang.org/x/exp/slices/cmp.go delete mode 100644 vendor/golang.org/x/exp/slices/zsortanyfunc.go delete mode 100644 vendor/golang.org/x/exp/slices/zsortordered.go delete mode 100644 vendor/golang.org/x/net/context/go17.go delete mode 100644 vendor/golang.org/x/net/context/go19.go delete mode 100644 vendor/golang.org/x/net/context/pre_go17.go delete mode 100644 vendor/golang.org/x/net/context/pre_go19.go create mode 100644 vendor/golang.org/x/sys/unix/auxv.go create mode 100644 vendor/golang.org/x/sys/unix/auxv_unsupported.go diff --git a/.golangci.yml b/.golangci.yml index 44130af..585a6b9 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,11 +1,12 @@ run: tests: false - skip-dirs: - - data - - vendor modules-download-mode: readonly allow-parallel-runners: true - go: '1.21' + go: '1.24' +issues: + exclude-dirs: + - data + - vendor output: sort-results: true linters-settings: @@ -34,13 +35,12 @@ linters: - errorlint - exhaustive - exhaustruct - - exportloopref + - copyloopvar - ginkgolinter - - gci - gocheckcompilerdirectives - gocritic - godot - - goerr113 + - err113 - gofmt - goimports - gosec diff --git a/Design.txt b/Design.txt index eb91c6b..29226c2 100644 --- a/Design.txt +++ b/Design.txt @@ -66,6 +66,8 @@ Cуществует несколько видов пинга: ------------------------------------------------------------------------------------------------------------------------ На текущий момент решена не совсем чисто. Скорее всего, при реконнекте утекают ресурсы, связанные с jabber-соединением. Проблема в том, что приходится пересоздавать основной "объект" со всеми его полями. + Кроме того, sig handler фактичеки не завершается, потому что в него не приходит ни одного сигнала и формально остаётся висеть на channel-е навечно. + А ещё есть пингеры каналов и пингеры сервера. Их бы тоже завершать явным образом. diff --git a/cmd/buny-jabber-bot/main.go b/cmd/buny-jabber-bot/main.go index 84161b7..a276fec 100644 --- a/cmd/buny-jabber-bot/main.go +++ b/cmd/buny-jabber-bot/main.go @@ -17,7 +17,7 @@ import ( // main - фактичеcки, начало и основное тело программы. func main() { for { - var j = jabber.Jabber{ + var j = jabber.Jabber{ //nolint:exhaustruct SigChan: make(chan os.Signal, 1), GTomb: tomb.Tomb{}, RoomsConnected: make([]string, 1), @@ -92,7 +92,7 @@ func main() { xmpp.DebugWriter = log.WithFields(log.Fields{"logger": "stdlib"}).WriterLevel(log.TraceLevel) // Хэндлер сигналов. - j.GTomb.Go(func() error { return j.SigHandler() }) + j.GTomb.Go(func() error { return j.SigHandler() }) //nolint: gocritic signal.Notify(j.SigChan, os.Interrupt) @@ -120,10 +120,10 @@ func main() { // запустить все асинхронные процессы заново, с чистого листа, но уже с распарсенным конфигом. // Устанавливаем соединение и гребём события, посылаемые сервером - основной и вспомогательные циклы программы. - j.GTomb.Go(func() error { return j.MyLoop() }) + j.GTomb.Go(func() error { return j.MyLoop() }) //nolint: gocritic // Ловим первый же kill и не дождаемся остальных, хотя формально надо бы. - _ = <-j.GTomb.Dying() + <-j.GTomb.Dying() // Если у нас wire error, то вызов .Close() повлечёт за собой ошибку. А если у нас не wire error, то по ходу мы // получим утечку сокетов. diff --git a/contrib/buny-jabber-bot.openrc b/contrib/buny-jabber-bot.openrc index 718902b..876cd10 100644 --- a/contrib/buny-jabber-bot.openrc +++ b/contrib/buny-jabber-bot.openrc @@ -18,3 +18,6 @@ start_pre() { mkdir -p /run/$SVCNAME chown -R nobody:nogroup /run/$SVCNAME } + + +# vim: set ft=sh noet ai ts=4 sw=4 sts=4: diff --git a/go.mod b/go.mod index fe993af..61d3e82 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module buny-jabber-bot -go 1.22.8 +go 1.24.3 require ( github.com/davecgh/go-spew v1.1.1 @@ -8,13 +8,13 @@ require ( github.com/hjson/hjson-go v3.3.0+incompatible github.com/jbrukh/bayesian v0.0.0-20231117143245-13ae6f916c7a github.com/sirupsen/logrus v1.9.3 - golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f + golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637 ) require ( - golang.org/x/crypto v0.29.0 // indirect - golang.org/x/net v0.31.0 // indirect - golang.org/x/sys v0.27.0 // indirect - golang.org/x/text v0.20.0 // indirect + golang.org/x/crypto v0.38.0 // indirect + golang.org/x/net v0.40.0 // indirect + golang.org/x/sys v0.33.0 // indirect + golang.org/x/text v0.25.0 // indirect ) diff --git a/go.sum b/go.sum index c95f192..1b6a4e1 100644 --- a/go.sum +++ b/go.sum @@ -14,17 +14,17 @@ github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVs github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -golang.org/x/crypto v0.29.0 h1:L5SG1JTTXupVV3n6sUqMTeWbjAyfPwoda2DLX8J8FrQ= -golang.org/x/crypto v0.29.0/go.mod h1:+F4F4N5hv6v38hfeYwTdx20oUvLLc+QfrE9Ax9HtgRg= -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f h1:XdNn9LlyWAhLVp6P/i8QYBW+hlyhrhei9uErw2B5GJo= -golang.org/x/exp v0.0.0-20241108190413-2d47ceb2692f/go.mod h1:D5SMRVC3C2/4+F/DB1wZsLRnSNimn2Sp/NPsCrsv8ak= -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/crypto v0.38.0 h1:jt+WWG8IZlBnVbomuhg2Mdq0+BBQaHbtqHEFEigjUV8= +golang.org/x/crypto v0.38.0/go.mod h1:MvrbAqul58NNYPKnOra203SB9vpuZW0e+RRZV+Ggqjw= +golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6 h1:y5zboxd6LQAqYIhHnB48p0ByQ/GnQx2BE33L8BOHQkI= +golang.org/x/exp v0.0.0-20250506013437-ce4c2cf36ca6/go.mod h1:U6Lno4MTRCDY+Ba7aCcauB9T60gsv5s4ralQzP72ZoQ= +golang.org/x/net v0.40.0 h1:79Xs7wF06Gbdcg4kdCCIQArK11Z1hr5POQ6+fIYHNuY= +golang.org/x/net v0.40.0/go.mod h1:y0hY0exeL2Pku80/zKK7tpntoX23cqL3Oa6njdgRtds= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/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/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/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw= +golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k= +golang.org/x/text v0.25.0 h1:qVyWApTSYLk/drJRO5mDlNYskwQznZmkpV2c8q9zls4= +golang.org/x/text v0.25.0/go.mod h1:WEdwpYrmk1qmdHvhkSTNPm3app7v4rsT8F2UD6+VHIA= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637 h1:yiW+nvdHb9LVqSHQBXfZCieqV4fzYhNBql77zY0ykqs= gopkg.in/tomb.v2 v2.0.0-20161208151619-d5d1b5820637/go.mod h1:BHsqpu/nsuzkT5BpiH1EMZPLyqSMM8JbIavyFACoFNk= diff --git a/internal/jabber/bf.go b/internal/jabber/bf.go index e86fee2..7b2cb9c 100644 --- a/internal/jabber/bf.go +++ b/internal/jabber/bf.go @@ -20,7 +20,7 @@ const ( ) // Выдаёт "очки похожести" для данной фразы. -func checkPhrase(s string) error { +func checkPhrase(s string) error { //nolint: unused classifier, err := bayesian.NewClassifierFromFile(dataFile) if err != nil { @@ -37,7 +37,7 @@ func checkPhrase(s string) error { } // Выучивает слова из предопределённых словарей. -func learn() error { +func learn() error { //nolint: unused classifier := bayesian.NewClassifier(Bad, Good) if err := feed(classifier, goodDictionaryFile, Good); err != nil { @@ -56,7 +56,7 @@ func learn() error { } // Дополняет заданный класс фразами из указанного файла. -func feed(c *bayesian.Classifier, filename string, bc bayesian.Class) error { +func feed(c *bayesian.Classifier, filename string, bc bayesian.Class) error { //nolint:unused fh, err := os.Open(filename) if err != nil { @@ -98,3 +98,5 @@ func feed(c *bayesian.Classifier, filename string, bc bayesian.Class) error { return nil } + +/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */ diff --git a/internal/jabber/black-whilte_lists.go b/internal/jabber/black-whilte_lists.go index 1a24360..809fb27 100644 --- a/internal/jabber/black-whilte_lists.go +++ b/internal/jabber/black-whilte_lists.go @@ -202,3 +202,5 @@ func (j *Jabber) ReadBlacklist() error { return err } + +/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */ diff --git a/internal/jabber/commands.go b/internal/jabber/commands.go index 6e79402..79cc3b4 100644 --- a/internal/jabber/commands.go +++ b/internal/jabber/commands.go @@ -208,3 +208,5 @@ func (j *Jabber) Cmd(v xmpp.Chat) error { return err } + +/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */ diff --git a/internal/jabber/event_parser.go b/internal/jabber/event_parser.go index 6cdcf29..ec40801 100644 --- a/internal/jabber/event_parser.go +++ b/internal/jabber/event_parser.go @@ -108,7 +108,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo } var ( - iqStruct JabberSimpleIqGetQuery + iqStruct SimpleIqGetQuery parseError bool ) @@ -244,7 +244,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo // Попробуем распарсить входящий запрос как urn:xmpp:time if parseError { - var iqStruct JabberTimeIqGetQuery + var iqStruct TimeIqGetQuery if err := xml.Unmarshal(v.Query, &iqStruct); err == nil { switch iqStruct.Xmlns { @@ -278,7 +278,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo // Попробуем распарсить входящий запрос как http://jabber.org/protocol/pubsub if parseError { - var iqStruct JabberPubsubIQGetQuery + var iqStruct PubsubIQGetQuery if err := xml.Unmarshal(v.Query, &iqStruct); err == nil { switch iqStruct.Xmlns { @@ -316,7 +316,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo // Предполагается, что такие респонсы должны приходить только для пинга без серверной оптимизации. // Хотя идейно мы не поддерживаем работу без серверной оптимизации, но на пинг ответим, нам несложно. if parseError { - var iqStruct JabberIqPing + var iqStruct IqPing if err := xml.Unmarshal(v.Query, &iqStruct); err == nil { log.Debugf("Got IQ get request (actually, response) for MUC Self-Ping from %s", v.From) @@ -377,8 +377,8 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo if mucNickMatch { log.Debugf("Got 2-nd stage MUC pong answer (xep-0410) from %s to %s", v.From, v.To) - // Поскольку никакой логики у нас на этот счёт не предусмотрено, то просто пропускаем ответ } else { + // Поскольку никакой логики у нас на этот счёт не предусмотрено, то просто пропускаем ответ log.Infof("Got unknown pong from %s to %s", v.From, v.To) log.Debug(spew.Sdump(e)) } @@ -405,11 +405,10 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo // Формально, ответ должен парситься как пустой result и совпадать с типом jabberSimpleIqGetQuery // Ответ приходит с 2 xmlns, похоже, он парсится неправильно в go-xmpp. // TODO: после исправления go-xmpp, надо исправить это тут - var iqStruct JabberSimpleIqGetQuery + var iqStruct SimpleIqGetQuery if err := xml.Unmarshal(v.Query, &iqStruct); err == nil { if iqStruct.Xmlns == "http://jabber.org/protocol/muc#admin" && iqStruct.Text == "" { - if mucNickMatch { // Поскольку никакой логики у нас на этот счёт не предусмотрено, то просто пропускаем ответ log.Infof("Got ban successful from %s to %s", v.From, v.To) @@ -464,7 +463,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo // Если сервер не хочет пинговаться и отвечает ошибкой на пинг, то наверно он не умеет в пинги, // хотя если мы его пингуем, значит он анонсировал такой capability. Вот, засранец! var ( - iqPingStruct JabberIqPing + iqPingStruct IqPing parseError = true ) @@ -489,7 +488,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo // Это у нас пинг xep-0410 и мы не в комнате, предполагается, что надо бы заджойниться if parseError { - var iqErrorCancelNotAcceptable JabberIqErrorCancelNotAcceptable + var iqErrorCancelNotAcceptable IqErrorCancelNotAcceptable if err := xml.Unmarshal(v.Query, &iqErrorCancelNotAcceptable); err == nil { if v.To == j.Talk.JID() { @@ -498,7 +497,6 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo if slices.Contains(j.RoomsConnected, iqErrorCancelNotAcceptable.By) && nick == j.GetBotNickFromRoomConfig(room) { - log.Errorf( "Got Iq error message from: %s to: %s. Looks like i'm not in MUC anymore", v.From, v.To, @@ -571,7 +569,7 @@ func (j *Jabber) ParseEvent(e interface{}) { //nolint:maintidx,gocognit,gocyclo } else { log.Errorf("Presence notification, Type: %s, From: %s, Show: %s, Status: %s", v.Type, v.From, v.Show, v.Status) - log.Errorf(spew.Sdump(v)) + log.Error(spew.Sdump(v)) } } else { log.Infof( diff --git a/internal/jabber/main_loop.go b/internal/jabber/main_loop.go index ecf3378..bdf2736 100644 --- a/internal/jabber/main_loop.go +++ b/internal/jabber/main_loop.go @@ -37,6 +37,7 @@ func (j *Jabber) MyLoop() error { func() error { err := j.ProbeServerLiveness() log.Error(err) + return err }, ) diff --git a/internal/jabber/norm_string.go b/internal/jabber/norm_string.go index df6da61..c059119 100644 --- a/internal/jabber/norm_string.go +++ b/internal/jabber/norm_string.go @@ -44,7 +44,7 @@ func nString(buf string) string { } // Обёртка для nString, возвращает нормализованную строку в нижнем регистре. -func nStringLower(buf string) string { +func nStringLower(buf string) string { //nolint:unused return strings.ToLower(nString(buf)) } diff --git a/internal/jabber/sig_handler.go b/internal/jabber/sig_handler.go index 0b910ed..33319f4 100644 --- a/internal/jabber/sig_handler.go +++ b/internal/jabber/sig_handler.go @@ -58,3 +58,5 @@ func (j *Jabber) SigHandler() error { return nil } + +/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */ diff --git a/internal/jabber/squash.go b/internal/jabber/squash.go index 108c732..1bfdee6 100644 --- a/internal/jabber/squash.go +++ b/internal/jabber/squash.go @@ -76,3 +76,5 @@ func (j *Jabber) Squash(room, jid string, reasonEnable bool, vType string) (stri return id, err } + +/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */ diff --git a/internal/jabber/types.go b/internal/jabber/types.go index e139762..b899fea 100644 --- a/internal/jabber/types.go +++ b/internal/jabber/types.go @@ -145,17 +145,17 @@ type Jabber struct { Connecting bool } -// JabberSimpleIqGetQuery прототип структурки для разбора запросов xmpp discovery query, например, +// SimpleIqGetQuery прототип структурки для разбора запросов xmpp discovery query, например, // https://xmpp.org/extensions/xep-0030.html#example-18 . -type JabberSimpleIqGetQuery struct { +type SimpleIqGetQuery struct { XMLName xml.Name `xml:"query"` Text string `xml:",chardata"` Xmlns string `xml:"xmlns,attr"` Node string `xml:"node,attr,omitempty"` // для xmlns="http://jabber.org/protocol/disco#items" } -// JabberPubsubIQGetQuery прототип структурки для разбора запросов xmpp pubsub. -type JabberPubsubIQGetQuery struct { +// PubsubIQGetQuery прототип структурки для разбора запросов xmpp pubsub. +type PubsubIQGetQuery struct { XMLName xml.Name `xml:"pubsub"` Text string `xml:",chardata"` Xmlns string `xml:"xmlns,attr"` @@ -166,25 +166,25 @@ type JabberPubsubIQGetQuery struct { } `xml:"items"` } -// JabberTimeIqGetQuery прототип структурки для разбора IQ запросов на локальное время клиента, +// TimeIqGetQuery прототип структурки для разбора IQ запросов на локальное время клиента, // https://xmpp.org/extensions/xep-0202.html -type JabberTimeIqGetQuery struct { +type TimeIqGetQuery struct { //