Thumbnail

rani/matterbridge.git

Clone URL: https://git.buni.party/rani/matterbridge.git

commit d67d0a2a8b19aeadf64e5bacbeed2a0696cbfde9 Author: Joseph Crowell <joseph.w.crowell@gmail.com> Date: Wed Dec 17 18:25:52 2025 +0000 remove deprecated "io/ioutil" library diff --git a/bridge/config/config.go b/bridge/config/config.go index 3a1dff2..0ee0651 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -47 +46 @@ import (   "bytes"   "errors"   "fmt" - "io/ioutil"   "os"   "path/filepath"   "regexp" @@ -3037 +3028 @@ func NewConfig(rootLogger *logrus.Logger, cfgfile string) Config {   logger := rootLogger.WithFields(logrus.Fields{"prefix": "config"})     viper.SetConfigFile(cfgfile) - input, err := ioutil.ReadFile(cfgfile) + + input, err := os.ReadFile(cfgfile) //nolint:gosec   if err != nil {   logger.Fatalf("Failed to read configuration file: %#v", err)   } diff --git a/bridge/helper/helper_test.go b/bridge/helper/helper_test.go index 6823de6..7873e27 100644 --- a/bridge/helper/helper_test.go +++ b/bridge/helper/helper_test.go @@ -17 +16 @@  package helper    import ( - "io/ioutil"   "os"   "testing"   @@ -1187 +1177 @@ func TestConvertWebPToPNG(t *testing.T) {   t.Skip()   }   - input, err := ioutil.ReadFile("test.webp") + input, err := os.ReadFile("test.webp")   if err != nil {   t.Fail()   } @@ -1297 +1287 @@ func TestConvertWebPToPNG(t *testing.T) {   t.Fail()   }   - err = ioutil.WriteFile("test.png", *d, 0o644) // nolint:gosec + err = os.WriteFile("test.png", *d, 0o644) //nolint:gosec   if err != nil {   t.Fail()   } diff --git a/bridge/helper/lottie_convert.go b/bridge/helper/lottie_convert.go index 89397d0..c9843ed 100644 --- a/bridge/helper/lottie_convert.go +++ b/bridge/helper/lottie_convert.go @@ -37 +36 @@  package helper    import ( - "io/ioutil"   "os"   "os/exec"   @@ -237 +227 @@ func CanConvertTgsToX() error {  // This relies on an external command, which is ugly, but works.  func ConvertTgsToX(data *[]byte, outputFormat string, logger *logrus.Entry) error {   // lottie can't handle input from a pipe, so write to a temporary file: - tmpInFile, err := ioutil.TempFile(os.TempDir(), "matterbridge-lottie-input-*.tgs") + tmpInFile, err := os.CreateTemp(os.TempDir(), "matterbridge-lottie-input-*.tgs")   if err != nil {   return err   } @@ -357 +347 @@ func ConvertTgsToX(data *[]byte, outputFormat string, logger *logrus.Entry) erro   }()   // lottie can handle writing to a pipe, but there is no way to do that platform-independently.   // "/dev/stdout" won't work on Windows, and "-" upsets Cairo for some reason. So we need another file: - tmpOutFile, err := ioutil.TempFile(os.TempDir(), "matterbridge-lottie-output-*.data") + tmpOutFile, err := os.CreateTemp(os.TempDir(), "matterbridge-lottie-output-*.data")   if err != nil {   return err   } @@ -647 +638 @@ func ConvertTgsToX(data *[]byte, outputFormat string, logger *logrus.Entry) erro   // 'stderr' already contains some parts of Stderr, because it was set to 'nil'.   return stderr   } - dataContents, err := ioutil.ReadFile(tmpOutFileName) + + dataContents, err := os.ReadFile(tmpOutFileName) //nolint:gosec   if err != nil {   return err   } diff --git a/bridge/irc/handlers.go b/bridge/irc/handlers.go index e9d79aa..d3934fb 100644 --- a/bridge/irc/handlers.go +++ b/bridge/irc/handlers.go @@ -37 +37 @@ package birc  import (   "bytes"   "fmt" - "io/ioutil" + "io"   "strconv"   "strings"   "time" @@ -2477 +2478 @@ func (b *Birc) handlePrivMsg(client *girc.Client, event girc.Event) {   b.Log.Errorf("charset to utf-8 conversion failed: %s", err)   return   } - output, _ := ioutil.ReadAll(r) + + output, _ := io.ReadAll(r)   rmsg.Text = string(output)   }   diff --git a/bridge/irc/irc.go b/bridge/irc/irc.go index cf978c4..504367d 100644 --- a/bridge/irc/irc.go +++ b/bridge/irc/irc.go @@ -57 +57 @@ import (   "errors"   "fmt"   "hash/crc32" - "io/ioutil" + "io"   "net"   "sort"   "strconv" @@ -2937 +2937 @@ func (b *Birc) getClient() (*girc.Client, error) {   realName = b.GetString("Nick")   }   - debug := ioutil.Discard + debug := io.Discard   if b.GetInt("DebugLevel") == 2 {   debug = b.Log.Writer()   } diff --git a/bridge/msteams/handler.go b/bridge/msteams/handler.go index 6083eab..992e28a 100644 --- a/bridge/msteams/handler.go +++ b/bridge/msteams/handler.go @@ -37 +37 @@ package bmsteams  import (   "encoding/json"   "fmt" - "io/ioutil" + "io"   "strings"     "github.com/matterbridge-org/matterbridge/bridge/config" @@ -927 +928 @@ func (b *Bmsteams) handleCodeSnippet(rmsg *config.Message, attach msgraph.ChatMe   return   }   defer resp.Body.Close() - res, err := ioutil.ReadAll(resp.Body) + + res, err := io.ReadAll(resp.Body)   if err != nil {   b.Log.Errorf("reading snippet data failed: %s", err)   return diff --git a/bridge/mumble/mumble.go b/bridge/mumble/mumble.go index 54bbdcd..bc1b3db 100644 --- a/bridge/mumble/mumble.go +++ b/bridge/mumble/mumble.go @@ -58 +58 @@ import (   "crypto/x509"   "errors"   "fmt" - "io/ioutil"   "net" + "os"   "strconv"   "strings"   "time" @@ -1197 +1197 @@ func (b *Bmumble) buildTLSConfig() error {   }   // Load TLS CA used for server verification. If not provided, the Go system trust anchor is used   if capath := b.GetString("TLSCACertificate"); capath != "" { - ca, err := ioutil.ReadFile(capath) + ca, err := os.ReadFile(capath) //nolint:gosec   if err != nil {   return err   } diff --git a/bridge/rocketchat/helpers.go b/bridge/rocketchat/helpers.go index a9a4657..b9b9d59 100644 --- a/bridge/rocketchat/helpers.go +++ b/bridge/rocketchat/helpers.go @@ -27 +27 @@ package brocketchat    import (   "context" - "io/ioutil" + "io"   "mime"   "net/http"   "net/url" @@ -146 +147 @@ import (   "github.com/matterbridge-org/matterbridge/hook/rockethook"   "github.com/matterbridge-org/matterbridge/matterhook"   "github.com/nelsonken/gomf" +   // Library even upstream no longer actively maintained, should be replaced:   "github.com/matterbridge/Rocket.Chat.Go.SDK/models"   "github.com/matterbridge/Rocket.Chat.Go.SDK/realtime" @@ -1377 +1388 @@ func (b *Brocketchat) uploadFile(fi *config.FileInfo, channel string) error {   return err   }   defer resp.Body.Close() - body, err := ioutil.ReadAll(resp.Body) + + body, err := io.ReadAll(resp.Body)   if err != nil {   return err   } diff --git a/bridge/slack/helpers_test.go b/bridge/slack/helpers_test.go index 5e314d3..6a9e9ee 100644 --- a/bridge/slack/helpers_test.go +++ b/bridge/slack/helpers_test.go @@ -17 +17 @@  package bslack    import ( - "io/ioutil" + "io"   "testing"     "github.com/matterbridge-org/matterbridge/bridge" @@ -247 +247 @@ func TestExtractTopicOrPurpose(t *testing.T) {   }     logger := logrus.New() - logger.SetOutput(ioutil.Discard) + logger.SetOutput(io.Discard)   cfg := &bridge.Config{Bridge: &bridge.Bridge{Log: logrus.NewEntry(logger)}}   b := newBridge(cfg)   for name, tc := range testcases { diff --git a/bridge/zulip/zulip.go b/bridge/zulip/zulip.go index a31cbf7..3569ae8 100644 --- a/bridge/zulip/zulip.go +++ b/bridge/zulip/zulip.go @@ -37 +37 @@ package bzulip  import (   "encoding/json"   "fmt" - "io/ioutil" + "io"   "strconv"   "strings"   "sync" @@ -1817 +1818 @@ func (b *Bzulip) sendMessage(msg config.Message) (string, error) {   }   if resp != nil {   defer resp.Body.Close() - res, err := ioutil.ReadAll(resp.Body) + + res, err := io.ReadAll(resp.Body)   if err != nil {   return "", err   } diff --git a/gateway/gateway.go b/gateway/gateway.go index a23b3b3..7ca84e4 100644 --- a/gateway/gateway.go +++ b/gateway/gateway.go @@ -27 +26 @@ package gateway    import (   "fmt" - "io/ioutil"   "os"   "regexp"   "strings" @@ -5787 +5778 @@ func modifyInMessageTengo(filename string, msg *config.Message) error {   if filename == "" {   return nil   } - res, err := ioutil.ReadFile(filename) + + res, err := os.ReadFile(filename) //nolint:gosec   if err != nil {   return err   } @@ -6067 +6068 @@ func (gw *Gateway) modifyUsernameTengo(msg *config.Message, br *bridge.Bridge) (   if filename == "" {   return "", nil   } - res, err := ioutil.ReadFile(filename) + + res, err := os.ReadFile(filename) //nolint:gosec   if err != nil {   return "", err   } @@ -6497 +6507 @@ func (gw *Gateway) modifyOutMessageTengo(origmsg *config.Message, msg *config.Me   return drop, err   }   } else { - res, err = ioutil.ReadFile(filename) + res, err = os.ReadFile(filename) //nolint:gosec   if err != nil {   return drop, err   } diff --git a/gateway/gateway_test.go b/gateway/gateway_test.go index c0a2980..0f5a6c3 100644 --- a/gateway/gateway_test.go +++ b/gateway/gateway_test.go @@ -27 +27 @@ package gateway    import (   "fmt" - "io/ioutil" + "io"   "strconv"   "testing"   @@ -1597 +1597 @@ const (    func maketestRouter(input []byte) *Router {   logger := logrus.New() - logger.SetOutput(ioutil.Discard) + logger.SetOutput(io.Discard)   cfg := config.NewConfigFromString(logger, input)   r, err := NewRouter(logger, cfg, bridgemap.FullMap)   if err != nil { @@ -3857 +3857 @@ func TestIgnoreSuite(t *testing.T) {    func (s *ignoreTestSuite) SetupSuite() {   logger := logrus.New() - logger.SetOutput(ioutil.Discard) + logger.SetOutput(io.Discard)   s.gw = &Gateway{logger: logrus.NewEntry(logger)}  }   diff --git a/gateway/handlers.go b/gateway/handlers.go index 2f26103..a151d58 100644 --- a/gateway/handlers.go +++ b/gateway/handlers.go @@ -47 +46 @@ import (   "bytes"   "crypto/sha1" //nolint:gosec   "fmt" - "io/ioutil"   "net/http"   "os"   "path/filepath" @@ -1577 +1567 @@ func (gw *Gateway) handleFilesLocal(fi *config.FileInfo) error {   path := dir + "/" + fi.Name   gw.logger.Debugf("mediaserver path placing file: %s", path)   - err = ioutil.WriteFile(path, *fi.Data, os.ModePerm) + err = os.WriteFile(path, *fi.Data, os.ModePerm) //nolint:gosec   if err != nil {   return fmt.Errorf("mediaserver path failed, could not writefile: %s %#v", err, err)   } diff --git a/gateway/samechannel/samechannel_test.go b/gateway/samechannel/samechannel_test.go index 1bed9cf..e5f54f2 100644 --- a/gateway/samechannel/samechannel_test.go +++ b/gateway/samechannel/samechannel_test.go @@ -17 +17 @@  package samechannel    import ( - "io/ioutil" + "io"   "testing"     "github.com/matterbridge-org/matterbridge/bridge/config" @@ -697 +697 @@ var (    func TestGetConfig(t *testing.T) {   logger := logrus.New() - logger.SetOutput(ioutil.Discard) + logger.SetOutput(io.Discard)   cfg := config.NewConfigFromString(logger, []byte(testConfig))   sgw := New(cfg)   configs := sgw.GetConfig() diff --git a/hook/rockethook/rockethook.go b/hook/rockethook/rockethook.go index 38f53e4..eea75f2 100644 --- a/hook/rockethook/rockethook.go +++ b/hook/rockethook/rockethook.go @@ -37 +37 @@ package rockethook  import (   "crypto/tls"   "encoding/json" - "io/ioutil" + "io"   "log"   "net"   "net/http" @@ -687 +688 @@ func (c *Client) ServeHTTP(w http.ResponseWriter, r *http.Request) {   return   }   msg := Message{} - body, err := ioutil.ReadAll(r.Body) + + body, err := io.ReadAll(r.Body)   if err != nil {   log.Println(err)   http.NotFound(w, r) diff --git a/internal/bindata.go b/internal/bindata.go index 6ea509a..ca767b5 100644 --- a/internal/bindata.go +++ b/internal/bindata.go @@ -97 +96 @@ import (   "compress/gzip"   "fmt"   "io" - "io/ioutil"   "os"   "path/filepath"   "strings" @@ -2427 +2417 @@ func RestoreAsset(dir, name string) error {   if err != nil {   return err   } - err = ioutil.WriteFile(_filePath(dir, name), data, info.Mode()) + err = os.WriteFile(_filePath(dir, name), data, info.Mode())   if err != nil {   return err   } diff --git a/matterhook/matterhook.go b/matterhook/matterhook.go index b989d25..5e61d49 100644 --- a/matterhook/matterhook.go +++ b/matterhook/matterhook.go @@ -77 +76 @@ import (   "encoding/json"   "fmt"   "io" - "io/ioutil"   "log"   "net"   "net/http" @@ -1597 +15810 @@ func (c *Client) Send(msg OMessage) error {   defer resp.Body.Close()     // Read entire body to completion to re-use keep-alive connections. - io.Copy(ioutil.Discard, resp.Body) + _, err2 := io.Copy(io.Discard, resp.Body) + if err2 != nil { + return err2 + }     if resp.StatusCode != 200 {   return fmt.Errorf("unexpected status code: %d", resp.StatusCode)