diff --git a/.github/workflows/development.yml b/.github/workflows/development.yml index 958d9b99..c9e45fc1 100644 --- a/.github/workflows/development.yml +++ b/.github/workflows/development.yml @@ -16,7 +16,7 @@ jobs: test-build-upload: strategy: matrix: - go-version: [1.14.x, 1.15.x, 1.16.x] + go-version: [1.15.x, 1.16.x] platform: [ubuntu-latest] runs-on: ${{ matrix.platform }} steps: @@ -35,23 +35,23 @@ jobs: run: | mkdir -p output/{win,lin,arm,mac} VERSION=$(git describe --tags) - GOOS=linux GOARCH=amd64 go build -mod=vendor -ldflags "-s -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o output/lin/matterbridge-$VERSION-linux-amd64 - GOOS=windows GOARCH=amd64 go build -mod=vendor -ldflags "-s -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o output/win/matterbridge-$VERSION-windows-amd64.exe - GOOS=darwin GOARCH=amd64 go build -mod=vendor -ldflags "-s -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o output/mac/matterbridge-$VERSION-darwin-amd64 + GOOS=linux GOARCH=amd64 go build -ldflags "-s -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o output/lin/matterbridge-$VERSION-linux-amd64 + GOOS=windows GOARCH=amd64 go build -ldflags "-s -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o output/win/matterbridge-$VERSION-windows-amd64.exe + GOOS=darwin GOARCH=amd64 go build -ldflags "-s -X main.githash=$(git log --pretty=format:'%h' -n 1)" -o output/mac/matterbridge-$VERSION-darwin-amd64 - name: Upload linux 64-bit - if: startsWith(matrix.go-version,'1.15') + if: startsWith(matrix.go-version,'1.16') uses: actions/upload-artifact@v2 with: name: matterbridge-linux-64bit path: output/lin - name: Upload windows 64-bit - if: startsWith(matrix.go-version,'1.15') + if: startsWith(matrix.go-version,'1.16') uses: actions/upload-artifact@v2 with: name: matterbridge-windows-64bit path: output/win - name: Upload darwin 64-bit - if: startsWith(matrix.go-version,'1.15') + if: startsWith(matrix.go-version,'1.16') uses: actions/upload-artifact@v2 with: name: matterbridge-darwin-64bit diff --git a/bridge/telegram/handlers.go b/bridge/telegram/handlers.go index 3ca6779f..3084dc0e 100644 --- a/bridge/telegram/handlers.go +++ b/bridge/telegram/handlers.go @@ -2,7 +2,7 @@ package btelegram import ( "html" - "regexp" + "path/filepath" "strconv" "strings" "unicode/utf16" @@ -389,27 +389,24 @@ func (b *Btelegram) handleUploadFile(msg *config.Message, chatid int64) string { Name: fi.Name, Bytes: *fi.Data, } - reimg := regexp.MustCompile(".(jpg|jpe|png)$") - revideo := regexp.MustCompile(".(mp4|m4v)$") - reaudio := regexp.MustCompile(".(mp3|oga)$") - revoice := regexp.MustCompile(".(ogg)$") - if reimg.MatchString(fi.Name) { + switch filepath.Ext(fi.Name) { + case ".jpg", ".jpe", ".png": pc := tgbotapi.NewPhotoUpload(chatid, file) pc.Caption, pc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment) c = pc - } else if revideo.MatchString(fi.Name) { + case ".mp4", ".m4v": vc := tgbotapi.NewVideoUpload(chatid, file) vc.Caption, vc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment) c = vc - } else if reaudio.MatchString(fi.Name) { + case ".mp3", ".oga": ac := tgbotapi.NewAudioUpload(chatid, file) ac.Caption, ac.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment) c = ac - } else if revoice.MatchString(fi.Name) { + case ".ogg": voc := tgbotapi.NewVoiceUpload(chatid, file) voc.Caption, voc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment) c = voc - } else { + default: dc := tgbotapi.NewDocumentUpload(chatid, file) dc.Caption, dc.ParseMode = TGGetParseMode(b, msg.Username, fi.Comment) c = dc diff --git a/bridge/telegram/telegram.go b/bridge/telegram/telegram.go index f7a1e86c..0f08a45b 100644 --- a/bridge/telegram/telegram.go +++ b/bridge/telegram/telegram.go @@ -69,27 +69,27 @@ func (b *Btelegram) JoinChannel(channel config.ChannelInfo) error { return nil } -func TGGetParseMode(b *Btelegram, username string, text string) (TextOut string, ParseMode string) { - TextOut = username + text +func TGGetParseMode(b *Btelegram, username string, text string) (textout string, parsemode string) { + textout = username + text if b.GetString("MessageFormat") == HTMLFormat { b.Log.Debug("Using mode HTML") - ParseMode = tgbotapi.ModeHTML + parsemode = tgbotapi.ModeHTML } if b.GetString("MessageFormat") == "Markdown" { b.Log.Debug("Using mode markdown") - ParseMode = tgbotapi.ModeMarkdown + parsemode = tgbotapi.ModeMarkdown } if b.GetString("MessageFormat") == MarkdownV2 { b.Log.Debug("Using mode MarkdownV2") - ParseMode = MarkdownV2 + parsemode = MarkdownV2 } if strings.ToLower(b.GetString("MessageFormat")) == HTMLNick { b.Log.Debug("Using mode HTML - nick only") - TextOut = username + html.EscapeString(text) - ParseMode = tgbotapi.ModeHTML + textout = username + html.EscapeString(text) + parsemode = tgbotapi.ModeHTML } - return TextOut, ParseMode -} + return textout, parsemode +} func (b *Btelegram) Send(msg config.Message) (string, error) { b.Log.Debugf("=> Receiving %#v", msg) diff --git a/bridge/xmpp/xmpp.go b/bridge/xmpp/xmpp.go index b471326b..89a48742 100644 --- a/bridge/xmpp/xmpp.go +++ b/bridge/xmpp/xmpp.go @@ -6,6 +6,7 @@ import ( "encoding/json" "fmt" "net/http" + "net/url" "strings" "sync" "time" @@ -157,7 +158,7 @@ func (b *Bxmpp) postSlackCompatibleWebhook(msg config.Message) error { return err } - resp, err := http.Post(b.GetString("WebhookURL")+"/"+msg.Channel, "application/json", bytes.NewReader(webhookBody)) + resp, err := http.Post(b.GetString("WebhookURL")+"/"+url.QueryEscape(msg.Channel), "application/json", bytes.NewReader(webhookBody)) if err != nil { b.Log.Errorf("Failed to POST webhook: %s", err) return err