Thumbnail

rani/matterbridge.git

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

commit bf0e1c5f58ace5763ceed149f9648fa946f243d3 Author: Wim <wim@42.be> Date: Fri Feb 24 18:49:52 2017 +0000 Do not use HTML parsemode by default. Set MessageFormat="HTML" to use it. (telegram) Closes #126 diff --git a/bridge/config/config.go b/bridge/config/config.go index 5077abb..23f8db1 100644 --- a/bridge/config/config.go +++ b/bridge/config/config.go @@ -317 +317 @@ type Protocol struct {   IconURL string // mattermost, slack   IgnoreNicks string // all protocols   Jid string // xmpp - Login string // mattermost + Login string // mattermost, matrix   Muc string // xmpp   Name string // all protocols   Nick string // all protocols @@ -4018 +4019 @@ type Protocol struct {   NickServPassword string // IRC   NicksPerRow int // mattermost, slack   NoTLS bool // mattermost - Password string // IRC,mattermost,XMPP + Password string // IRC,mattermost,XMPP,matrix   PrefixMessagesWithNick bool // mattemost, slack   Protocol string //all protocols   MessageQueue int // IRC, size of message queue for flood control   MessageDelay int // IRC, time in millisecond to wait between messages + MessageFormat string // telegram   RemoteNickFormat string // all protocols   Server string // IRC,mattermost,XMPP,discord   ShowJoinPart bool // all protocols   SkipTLSVerify bool // IRC, mattermost   Team string // mattermost   Token string // gitter, slack, discord - URL string // mattermost, slack + URL string // mattermost, slack, matrix   UseAPI bool // mattermost, slack   UseSASL bool // IRC   UseTLS bool // IRC diff --git a/bridge/telegram/html.go b/bridge/telegram/html.go new file mode 100644 index 0000000..3eb84ba --- /dev/null +++ b/bridge/telegram/html.go @@ -00 +164 @@ +package btelegram + +import ( + "bytes" + "github.com/russross/blackfriday" + "html" +) + +type customHtml struct { + blackfriday.Renderer +} + +func (options *customHtml) Paragraph(out *bytes.Buffer, text func() bool) { + marker := out.Len() + + if !text() { + out.Truncate(marker) + return + } + out.WriteString("\n") +} + +func (options *customHtml) BlockCode(out *bytes.Buffer, text []byte, lang string) { + out.WriteString("<pre>") + + out.WriteString(html.EscapeString(string(text))) + out.WriteString("</pre>\n") +} + +func (options *customHtml) Header(out *bytes.Buffer, text func() bool, level int, id string) { + options.Paragraph(out, text) +} + +func (options *customHtml) HRule(out *bytes.Buffer) { + out.WriteByte('\n') +} + +func (options *customHtml) BlockQuote(out *bytes.Buffer, text []byte) { + out.WriteString("> ") + out.Write(text) + out.WriteByte('\n') +} + +func (options *customHtml) List(out *bytes.Buffer, text func() bool, flags int) { + options.Paragraph(out, text) +} + +func (options *customHtml) ListItem(out *bytes.Buffer, text []byte, flags int) { + out.WriteString("- ") + out.Write(text) + out.WriteByte('\n') +} + +func makeHTML(input string) string { + return string(blackfriday.Markdown([]byte(input), + &customHtml{blackfriday.HtmlRenderer(blackfriday.HTML_USE_XHTML|blackfriday.HTML_SKIP_IMAGES, "", "")}, + blackfriday.EXTENSION_NO_INTRA_EMPHASIS| + blackfriday.EXTENSION_FENCED_CODE| + blackfriday.EXTENSION_AUTOLINK| + blackfriday.EXTENSION_SPACE_HEADERS| + blackfriday.EXTENSION_HEADER_IDS| + blackfriday.EXTENSION_BACKSLASH_LINE_BREAK| + blackfriday.EXTENSION_DEFINITION_LISTS)) +} diff --git a/bridge/telegram/telegram.go b/bridge/telegram/telegram.go index aa63745..85486f7 100644 --- a/bridge/telegram/telegram.go +++ b/bridge/telegram/telegram.go @@ -114 +111 @@  package btelegram    import ( - "bytes" - "html"   "strconv"     "github.com/42wim/matterbridge/bridge/config"   log "github.com/Sirupsen/logrus"   "github.com/go-telegram-bot-api/telegram-bot-api" - "github.com/russross/blackfriday"  )    type Btelegram struct { @@ -6051 +576 @@ func (b *Btelegram) JoinChannel(channel string) error {   return nil  }   -type customHtml struct { - blackfriday.Renderer -} - -func (options *customHtml) Paragraph(out *bytes.Buffer, text func() bool) { - marker := out.Len() - - if !text() { - out.Truncate(marker) - return - } - out.WriteString("\n") -} - -func (options *customHtml) BlockCode(out *bytes.Buffer, text []byte, lang string) { - out.WriteString("<pre>") - - out.WriteString(html.EscapeString(string(text))) - out.WriteString("</pre>\n") -} - -func (options *customHtml) Header(out *bytes.Buffer, text func() bool, level int, id string) { - options.Paragraph(out, text) -} - -func (options *customHtml) HRule(out *bytes.Buffer) { - out.WriteByte('\n') -} - -func (options *customHtml) BlockQuote(out *bytes.Buffer, text []byte) { - out.WriteString("> ") - out.Write(text) - out.WriteByte('\n') -} - -func (options *customHtml) List(out *bytes.Buffer, text func() bool, flags int) { - options.Paragraph(out, text) -} - -func (options *customHtml) ListItem(out *bytes.Buffer, text []byte, flags int) { - out.WriteString("- ") - out.Write(text) - out.WriteByte('\n') -} -  func (b *Btelegram) Send(msg config.Message) error {   flog.Debugf("Receiving %#v", msg)   chatid, err := strconv.ParseInt(msg.Channel, 10, 64) @@ -11218 +6413 @@ func (b *Btelegram) Send(msg config.Message) error {   return err   }   - parsed := blackfriday.Markdown([]byte(msg.Text), - &customHtml{blackfriday.HtmlRenderer(blackfriday.HTML_USE_XHTML|blackfriday.HTML_SKIP_IMAGES, "", "")}, - blackfriday.EXTENSION_NO_INTRA_EMPHASIS| - blackfriday.EXTENSION_FENCED_CODE| - blackfriday.EXTENSION_AUTOLINK| - blackfriday.EXTENSION_SPACE_HEADERS| - blackfriday.EXTENSION_HEADER_IDS| - blackfriday.EXTENSION_BACKSLASH_LINE_BREAK| - blackfriday.EXTENSION_DEFINITION_LISTS) - - m := tgbotapi.NewMessage(chatid, html.EscapeString(msg.Username)+string(parsed)) - m.ParseMode = "HTML" + if b.Config.MessageFormat == "HTML" { + msg.Text = makeHTML(msg.Text) + } + m := tgbotapi.NewMessage(chatid, msg.Username+msg.Text) + if b.Config.MessageFormat == "HTML" { + m.ParseMode = tgbotapi.ModeHTML + }   _, err = b.c.Send(m)   return err  } diff --git a/changelog.md b/changelog.md index 20ae140..d3c4609 100644 --- a/changelog.md +++ b/changelog.md @@ -26 +212 @@  ## New features  * matrix: New protocol support added (https://matrix.org)   +## Bugfix +* mattermost: Add ReadTimeout to close lingering connections (mattermost). See #125 + +## Changes +* telegram: Do not use HTML parsemode by default. Set ```MessageFormat="HTML"``` to use it. Closes #126 +  # v0.9.3  ## New features  * API: rest interface to read / post messages (see API section in matterbridge.toml.sample) diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample index 0f6e993..ae4feac 100644 --- a/matterbridge.toml.sample +++ b/matterbridge.toml.sample @@ -4136 +41311 @@ ShowJoinPart=false  #REQUIRED  Token="Yourtokenhere"   +#OPTIONAL (default empty) +#Only supported format is "HTML", messages will be sent in html parsemode. +#See https://core.telegram.org/bots/api#html-style +MessageFormat="" +  #Nicks you want to ignore.  #Messages from those users will not be sent to other bridges.  #OPTIONAL