This commit is contained in:
other8026
2024-08-30 15:32:49 +03:00
committed by GitHub
3 changed files with 38 additions and 7 deletions

View File

@@ -147,6 +147,7 @@ type Protocol struct {
ReplaceNicks [][]string // all protocols ReplaceNicks [][]string // all protocols
RemoteNickFormat string // all protocols RemoteNickFormat string // all protocols
RunCommands []string // IRC RunCommands []string // IRC
SendUrlNotFile bool // matrix
Server string // IRC,mattermost,XMPP,discord,matrix Server string // IRC,mattermost,XMPP,discord,matrix
SessionFile string // msteams,whatsapp SessionFile string // msteams,whatsapp
ShowJoinPart bool // all protocols ShowJoinPart bool // all protocols

View File

@@ -540,9 +540,18 @@ func (b *Bmatrix) handleEvent(ev *matrix.Event) {
// Do we have attachments // Do we have attachments
if b.containsAttachment(ev.Content) { if b.containsAttachment(ev.Content) {
err := b.handleDownloadFile(&rmsg, ev.Content) if b.GetBool("SendUrlNotFile") {
if err != nil { // replace the text of the message (which is set to the filename above) with the url
b.Log.Errorf("download failed: %#v", err) var err error
rmsg.Text, err = b.getMessageFileUrl(ev.Content)
if err != nil {
b.Log.Errorf("get url for uploaded file failed: %#v", err)
}
} else {
err := b.handleDownloadFile(&rmsg, ev.Content)
if err != nil {
b.Log.Errorf("download failed: %#v", err)
}
} }
} }
@@ -556,6 +565,21 @@ func (b *Bmatrix) handleEvent(ev *matrix.Event) {
} }
} }
// getMessageFileUrl changes the Matrix mxc:// uploads and changes them to a regular url
func (b *Bmatrix) getMessageFileUrl(content map[string]interface{}) (string, error) {
var (
ok bool
url string
)
if url, ok = content["url"].(string); !ok {
return "", fmt.Errorf("url isn't a %T", url)
}
url = strings.Replace(url, "mxc://", b.GetString("Server")+"/_matrix/media/v1/download/", -1)
return url, nil
}
// handleDownloadFile handles file download // handleDownloadFile handles file download
func (b *Bmatrix) handleDownloadFile(rmsg *config.Message, content map[string]interface{}) error { func (b *Bmatrix) handleDownloadFile(rmsg *config.Message, content map[string]interface{}) error {
var ( var (
@@ -566,10 +590,11 @@ func (b *Bmatrix) handleDownloadFile(rmsg *config.Message, content map[string]in
) )
rmsg.Extra = make(map[string][]interface{}) rmsg.Extra = make(map[string][]interface{})
if url, ok = content["url"].(string); !ok {
return fmt.Errorf("url isn't a %T", url) url, err := b.getMessageFileUrl(content)
if err != nil {
return err
} }
url = strings.Replace(url, "mxc://", b.GetString("Server")+"/_matrix/media/v1/download/", -1)
if info, ok = content["info"].(map[string]interface{}); !ok { if info, ok = content["info"].(map[string]interface{}); !ok {
return fmt.Errorf("info isn't a %T", info) return fmt.Errorf("info isn't a %T", info)
@@ -601,7 +626,7 @@ func (b *Bmatrix) handleDownloadFile(rmsg *config.Message, content map[string]in
} }
// check if the size is ok // check if the size is ok
err := helper.HandleDownloadSize(b.Log, rmsg, name, int64(size), b.General) err = helper.HandleDownloadSize(b.Log, rmsg, name, int64(size), b.General)
if err != nil { if err != nil {
return err return err
} }

View File

@@ -1336,6 +1336,11 @@ StripNick=false
#OPTIONAL (default false) #OPTIONAL (default false)
ShowTopicChange=false ShowTopicChange=false
#Enable to send a URL rather than a file
#The default behavior is to download and send/upload the file.
#OPTIONAL (default false)
#SendUrlNotFile=true
################################################################### ###################################################################
#steam section #steam section
################################################################### ###################################################################