commit 230c714e14d228c3fd15b959611516ed2a9788d6
Author: Wim <wim@42.be>
Date: Sat Mar 19 23:14:56 2022 +0000
diff --git a/bridge/irc/charset.go b/bridge/irc/charset.go
new file mode 100644
index 0000000..57872ec
--- /dev/null
+++ b/bridge/irc/charset.go
@@ -00 +132 @@
+package birc
+
+import (
+ "golang.org/x/text/encoding"
+ "golang.org/x/text/encoding/japanese"
+ "golang.org/x/text/encoding/korean"
+ "golang.org/x/text/encoding/simplifiedchinese"
+ "golang.org/x/text/encoding/traditionalchinese"
+ "golang.org/x/text/encoding/unicode"
+)
+
+var encoders = map[string]encoding.Encoding{
+ "utf-8": unicode.UTF8,
+ "iso-2022-jp": japanese.ISO2022JP,
+ "big5": traditionalchinese.Big5,
+ "gbk": simplifiedchinese.GBK,
+ "euc-kr": korean.EUCKR,
+ "gb2312": simplifiedchinese.HZGB2312,
+ "shift-jis": japanese.ShiftJIS,
+ "euc-jp": japanese.EUCJP,
+ "gb18030": simplifiedchinese.GB18030,
+}
+
+func toUTF8(from string, input string) string {
+ enc, ok := encoders[from]
+ if !ok {
+ return input
+ }
+
+ res, _ := enc.NewDecoder().String(input)
+ return res
+}
diff --git a/bridge/irc/handlers.go b/bridge/irc/handlers.go
index b90fa3a..987df2c 100644
--- a/bridge/irc/handlers.go
+++ b/bridge/irc/handlers.go
@@ -117 +116 @@ import (
"github.com/42wim/matterbridge/bridge/config"
"github.com/42wim/matterbridge/bridge/helper"
"github.com/lrstanley/girc"
- "github.com/missdeer/golib/ic"
"github.com/paulrosania/go-charset/charset"
"github.com/saintfish/chardet"
@@ -2412 +2312 @@ func (b *Birc) handleCharset(msg *config.Message) error {
if b.GetString("Charset") != "" {
switch b.GetString("Charset") {
case "gbk", "gb18030", "gb2312", "big5", "euc-kr", "euc-jp", "shift-jis", "iso-2022-jp":
- msg.Text = ic.ConvertString("utf-8", b.GetString("Charset"), msg.Text)
+ msg.Text = toUTF8(b.GetString("Charset"), msg.Text)
default:
buf := new(bytes.Buffer)
w, err := charset.NewWriter(b.GetString("Charset"), buf)
if err != nil {
- b.Log.Errorf("charset from utf-8 conversion failed: %s", err)
+ b.Log.Errorf("charset to utf-8 conversion failed: %s", err)
return err
}
fmt.Fprint(w, msg.Text)
@@ -2277 +2267 @@ func (b *Birc) handlePrivMsg(client *girc.Client, event girc.Event) {
}
switch mycharset {
case "gbk", "gb18030", "gb2312", "big5", "euc-kr", "euc-jp", "shift-jis", "iso-2022-jp":
- rmsg.Text = ic.ConvertString("utf-8", b.GetString("Charset"), rmsg.Text)
+ rmsg.Text = toUTF8(b.GetString("Charset"), rmsg.Text)
default:
r, err := charset.NewReader(mycharset, strings.NewReader(rmsg.Text))
if err != nil {
diff --git a/go.mod b/go.mod
index 03e3df8..02c9437 100644
--- a/go.mod
+++ b/go.mod
@@ -327 +326 @@ require (
github.com/mattermost/mattermost-server/v5 v5.39.3
github.com/mattermost/mattermost-server/v6 v6.4.2
github.com/mattn/godown v0.0.1
- github.com/missdeer/golib v1.0.4
github.com/nelsonken/gomf v0.0.0-20180504123937-a9dd2f9deae9
github.com/paulrosania/go-charset v0.0.0-20190326053356-55c9d7a5834c
github.com/rs/xid v1.3.0
@@ -496 +487 @@ require (
github.com/zfjagann/golang-ring v0.0.0-20210116075443-7c86fdb43134
golang.org/x/image v0.0.0-20220302094943-723b81ca9867
golang.org/x/oauth2 v0.0.0-20220309155454-6242fa91716a
+ golang.org/x/text v0.3.7
gomod.garykim.dev/nc-talk v0.3.0
gopkg.in/olahol/melody.v1 v1.0.0-20170518105555-d52139073376
layeh.com/gumble v0.0.0-20200818122324-146f9205029b
@@ -1267 +1266 @@ require (
golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd // indirect
golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e // indirect
golang.org/x/term v0.0.0-20210927222741-03fcf44c2211 // indirect
- golang.org/x/text v0.3.7 // indirect
golang.org/x/time v0.0.0-20201208040808-7e3f01d25324 // indirect
google.golang.org/appengine v1.6.7 // indirect
google.golang.org/protobuf v1.27.1 // indirect
diff --git a/go.sum b/go.sum
index 0f90c7f..d5533da 100644
--- a/go.sum
+++ b/go.sum
@@ -11638 +11636 @@ github.com/minio/minio-go/v7 v7.0.16/go.mod h1:pUV0Pc+hPd1nccgmzQF/EXh48l/Z/yps6
github.com/minio/sha256-simd v0.1.1/go.mod h1:B5e1o+1/KgNmWrSQK08Y6Z1Vb5pwIktudl0J58iy0KM=
github.com/minio/sha256-simd v1.0.0 h1:v1ta+49hkWZyvaKwrQB8elexRqm6Y0aMLjCNsrYxo6g=
github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM=
-github.com/missdeer/golib v1.0.4 h1:tM7MJIPffXSmwFCTOCMjL5C7JsT5SQ+OmZwzssZQOa8=
-github.com/missdeer/golib v1.0.4/go.mod h1:mPN/UcszFq0GxKfQsZI3aFOiRjnzXCBZ392od3guGEY=
github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4=
github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc=
github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI=