为Metabase Pulses添加slack代理支持

Posted ntestoc

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为Metabase Pulses添加slack代理支持相关的知识,希望对你有一定的参考价值。

为Metabase Pulses添加slack代理支持

为Metabase Pulses添加slack代理支持

1 简介

Pulses是Metabase中定期报告的叫法,可以通过email或slack发送,具体介绍看这里。但由于slack无法直接访问的问题,需要配置代理,metabase没有提供代理支持,不过添加代理的功能还是非常简单的,几行代码就解决了问题。

2 代码更改

修改文件src\\metabase\\integrations\\slack.clj中的do-slack-request函数,主要用于slack请求,它调用的clj-http实现http请求,添加代理的配置项就可以达到目的。代码修改如下:

 1: (defn get-slack-proxy
 2:   "add slack proxy support"
 3:   []
 4:   (let [slack-proxy-host (config/config-str :mb-slack-proxy-host)
 5:         slack-proxy-port (config/config-int :mb-slack-proxy-port)]
 6:     (when (and slack-proxy-host slack-proxy-port)
 7:       :proxy-host slack-proxy-host
 8:        :proxy-port slack-proxy-port)))
 9: 
10: (defn- do-slack-request [request-fn params-key endpoint & :keys [token], :as params, :or token (slack-token)]
11:   (when token
12:     (let [proxy (get-slack-proxy)]
13:       (handle-response (request-fn (str slack-api-base-url "/" (name endpoint))
14:                                    (merge params-key (assoc params :token token)
15:                                            :as             :stream
16:                                            :conn-timeout   1000
17:                                            :socket-timeout 1000
18:                                           proxy))))))
19: 

get-slack-proxy主要从系统配置中读取配置项,config/config-*是metabase读取系统配置的基本方法。然后do-slack-request中添加clj-http的代理配置即可。修改之后重新编译metabase。 然后设置环境变量,windows如下设置:

set MB_SLACK_PROXY_HOST=127.0.0.1
set MB_SLACK_PROXY_PORT=8080

linux使用export设置环境变量。再启动metabase,即可使用此代理访问slack。

3 slack的配置

slack的具体配置,参考官方文档

新建pulse测试发现收到的图片,中文显示乱码,如下图,下一篇文章再解决。 技术图片

作者: ntestoc

Created: 2019-06-01 六 18:39

以上是关于为Metabase Pulses添加slack代理支持的主要内容,如果未能解决你的问题,请参考以下文章

CVE-2021-41277 Metabase 敏感信息泄漏

Metabase 和 Postgresql 之间的 SSH 隧道失败

Metabase使用教程

使用 Zapier 集成向 Slack 频道消息添加按钮

ruby 这个Ruby脚本将批量删除超过30天的所有Slack文件。只需从https://api.slack.com/web#authentication添加您的API令牌即可

ruby 这个Ruby脚本将批量删除超过30天的所有Slack文件。只需从https://api.slack.com/web#authentication添加您的API令牌即可