GitLab 集成 Telegram

Share

GitLab 官方支持集成 Telegram,在项目的 Settings → Integrations 里就能找到。除了 Telegram 外,GitLab 还支持对 Slack、Discord 等软件的集成。

之前我做过通过 GitLab 的 webhook,在飞书群里发送 GitLab 通知的项目。那个项目需要先让 GitLab 把 webhook 数据发到自己服务器上,然后再格式化为飞书机器人支持的消息卡片数据,最后通过飞书机器人的 webhook 把消息发到指定的群里。

不过 GitLab 对 Telegram 的集成不需要咱们先把数据发到自己服务器上,它是可以直接发送对应软件支持的消息数据的。咱们只需要提供一下相关的配置信息即可。

根据我的尝试,目前可以在 GitLab 中配置发送通知的对象为 Telegram 的 Group、Channel 或者单个用户(比如自己)。

Telegram 的 ChannelGroup 区别

Channel 类似于微信公众号,只能创建者或者管理员发布消息,适合发布公告或者资讯。其他人可以订阅这个频道,订阅人数无上限,可以随时取消订阅离开这个 Channel。Channel 里面发布的消息,头像和发布者显示的是 Channel 的头像和名称。想要让订阅者知道这个消息具体来自于谁的话,需要在 Channel 设置里开启「Sign Messages」。

Group 类似于微信群,适合团队进行沟通讨论。具体功能就不赘述了。

前期准备

既然是要向 Telegram 发送消息,那肯定离不开机器人。创建机器人的方法很简单,搜索 BotFather,给他发送 /newbot ,然后填写机器人的 name、id 等信息就好了。创建完成后,BotFather 会告知你新机器人的 token。

随后在 GitLab 项目中的 Settings → Integrations 里找到 Telegram,创建一个 Telegram 集成并填写上面得到的 token。

Telegram bot token

给 Channel 发送通知

GitLab 官方给的集成示例就是在 Channel 里发通知。

上面提到了在 Channel 里,只能创建者或者管理员发布消息。咱们需要先把机器人拉进 Channel 里,然后将它设置为 Administrator,这样机器人才能够在 Channel 里发送消息。

然后咱们需要拿到 Channel 的 identifier。对于公开的 Channel,链接就是它的 identifier,比如 https:/t.me/MY_IDENTIFIER。对于私密的 Channel,需要利用 getUpdates 这个工具拿到 Channel 的 id(比如 -2241293890657)。

最后将 identifier 填到配置里就可以了,其他的配置比如事件触发时机等就根据个人情况设置了。

Channel Identifier

配置完成后,点击「Test settings」看看有没有成功。

给 Group 或者个人发送通知

在看到 GitLab 官方的 Telegram 集成教程只有针对 Channel 的后,我一度以为这个集成不支持对 Group 或者个人发送消息。但它是支持的。配置方法也很简单,主流程和上面配置 Channel 的一致,只不过 identifier 需要改成 Group 或者个人的。

可以通过一个叫 @getidsbot 的机器人快速获取 Group 或者个人的 identifier。把这个机器人拉进 Group 或者跟它私聊发送 /start ,它就会自动发送当前 Group 或者用户的 identifier 了。

拿到 identifier 后,将其复制到 Channel identifier 一栏即可。

Read more

在 AI 时代,做 iOS 逆向分析有哪些高效手段

在 AI 时代,做 iOS 逆向分析有哪些高效手段

AI 发展如此迅猛,传统的代码手艺活已经被 AI 取代了很大一部分。除了生成代码外,AI 在其他的研发流程也能提升很多效率,例如这次要说的 AI 逆向分析。 在手工时代,我们逆向分析一个 iOS app,通常是使用 Hopper 或者 IDA 等软件查看解密的 Mach-O,然后利用软件提供的能力加上人工去分析逻辑流程。这个过程还要求我们懂一些基础的汇编语法。有时候还要去猜测哪些类哪些方法是负责某个逻辑,靠试验去验证。 现在来到了大模型时代,AI 不仅能自己通过一些简单的工具去分析 ipa 和 Mach-O ,也能使用更准更稳的 MCP、Skill 工具来做深度的分析。 Hopper MCP Hopper 在新版本支持了 MCP Server。 把 framework、Mach-O 或者解密后的 IPA 直接丢给它,

By Gray
Cinder:基于 Swift Macro 与 Mach-O Section 的解耦注册机制

Cinder:基于 Swift Macro 与 Mach-O Section 的解耦注册机制

Cinder(Github) 是一个无需逐模块启动注册、支持字符串、类型和函数调用的 Swift 编译期注册框架。 Cinder 是什么 在 iOS app 里借助 Mach-O 注册能力做一些二进制的插桩操作并不罕见。以往这些操作大都使用 objc runtime ,借助 __attribute__((used)) 和 __attribute__((section("name"))) 实现。在 Swift 上实现有一些难度,因为 Swift runtime 能力弱,以及早期的版本没有类似 objc 的 __attribute__ 能力。 * 在 Swift 5.10 版本,Apple 提供了 @_used 和

By Gray