summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWim <wim@42.be>2018-06-09 14:35:02 +0200
committerWim <wim@42.be>2018-06-09 14:35:02 +0200
commitbd9ea7a88dc44f92516315aa1e997a7c1b0e616d (patch)
tree0382dbd4105f2c0061a70491339493a54c150c43
parent51327a405651442ac47c4ce75363442fa323b592 (diff)
downloadmatterbridge-msglm-bd9ea7a88dc44f92516315aa1e997a7c1b0e616d.tar.gz
matterbridge-msglm-bd9ea7a88dc44f92516315aa1e997a7c1b0e616d.tar.bz2
matterbridge-msglm-bd9ea7a88dc44f92516315aa1e997a7c1b0e616d.zip
Add MediaDownloadBlacklist option. Closes #442
-rw-r--r--bridge/config/config.go3
-rw-r--r--bridge/helper/helper.go14
-rw-r--r--matterbridge.toml.sample8
3 files changed, 23 insertions, 2 deletions
diff --git a/bridge/config/config.go b/bridge/config/config.go
index 351e6cad..0fa76b52 100644
--- a/bridge/config/config.go
+++ b/bridge/config/config.go
@@ -74,10 +74,11 @@ type Protocol struct {
Jid string // xmpp
Label string // all protocols
Login string // mattermost, matrix
+ MediaDownloadBlackList []string
+ MediaDownloadPath string // Basically MediaServerUpload, but instead of uploading it, just write it to a file on the same server.
MediaDownloadSize int // all protocols
MediaServerDownload string
MediaServerUpload string
- MediaDownloadPath string // Basically MediaServerUpload, but instead of uploading it, just write it to a file on the same server.
MessageDelay int // IRC, time in millisecond to wait between messages
MessageFormat string // telegram
MessageLength int // IRC, max length of a message allowed
diff --git a/bridge/helper/helper.go b/bridge/helper/helper.go
index a3f4255c..13d94ede 100644
--- a/bridge/helper/helper.go
+++ b/bridge/helper/helper.go
@@ -5,6 +5,7 @@ import (
"fmt"
"io"
"net/http"
+ "regexp"
"strings"
"time"
@@ -73,6 +74,19 @@ func GetAvatar(av map[string]string, userid string, general *config.Protocol) st
}
func HandleDownloadSize(flog *log.Entry, msg *config.Message, name string, size int64, general *config.Protocol) error {
+ // check blacklist here
+ for _, entry := range general.MediaDownloadBlackList {
+ if entry != "" {
+ re, err := regexp.Compile(entry)
+ if err != nil {
+ flog.Errorf("incorrect regexp %s for %s", entry, msg.Account)
+ continue
+ }
+ if re.MatchString(name) {
+ return fmt.Errorf("Matching blacklist %s. Not downloading %s", entry, name)
+ }
+ }
+ }
flog.Debugf("Trying to download %#v with size %#v", name, size)
if int(size) > general.MediaDownloadSize {
msg.Event = config.EVENT_FILE_FAILURE_SIZE
diff --git a/matterbridge.toml.sample b/matterbridge.toml.sample
index 1bc4f3b4..2a77bca1 100644
--- a/matterbridge.toml.sample
+++ b/matterbridge.toml.sample
@@ -1331,9 +1331,15 @@ MediaServerDownload="https://youserver.com/download"
#It will only download from bridges that don't have public links available, which are for the moment
#slack, telegram, matrix and mattermost
#
-#Optional (default 1000000 (1 megabyte))
+#OPTIONAL (default 1000000 (1 megabyte))
MediaDownloadSize=1000000
+#MediaDownloadBlacklist allows you to blacklist specific files from being downloaded.
+#Filenames matching these regexp will not be download/uploaded to the mediaserver
+#You can use regex for this, see https://regex-golang.appspot.com/assets/html/index.html for more regex info
+#OPTIONAL (default empty)
+MediaDownloadBlacklist=[".html$",".htm$"]
+
###################################################################
#Gateway configuration
###################################################################