基于GitBucket的Hook构建ES检索PDF等文档全栈方案

背景

之前已简单使用ES及Kibana和在线转Base64工具实现了检索文档的demo,预期建设方案是使用触发器类型从公共的文档源拉取最新的文件,然后调用Java将文件转Base64后入ES建索引,再提供封装接口给前端做查询之用。

由于全部内容过长,为了便于阅读,按照大的章节分为三部分,第一部分讲述基于WebHook的触发机制怎么搭建,包含全部实现细节!

使用Git Hook获取文件变化

我们内部使用了GitBucket,因此方案采用它的WebHook功能来实现。
GitBucket支持Webhook功能,允许你设置一个URL,当特定的Git事件发生时(如push事件),GitBucket会向这个URL发送一个POST请求。

这个功能可以在【设置】-【Service Hooks】找到!

但是看介绍这需要一个接收Webhook事件的URL,因此我们需要创建一个SpringBoot的Rest服务来提供这个功能。

SpringBoot脚手架

使用阿里云脚手架创建初始化项目:https://start.aliyun.com/

创建一个hello world接口:

@GetMapping("/hello")  
public String hello() {  
    // 获取当前日期和时间  
    LocalDateTime dateTime = LocalDateTime.now();  
    // 定义日期和时间格式  
    DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");  
  
    return "Welcome! Now is:" + dateTime.format(formatter) + "\n";  
}

启动应用进行冒烟测试,使用浏览器访问:http://localhost:8080/hello
返回:Welcome! Now is:2024-03-05 15:45:57

完美!

上述测试成功后,创建一个Webhook的测试接口,代码如下:

package com.es.file.search;  
  
import org.springframework.http.ResponseEntity;  
import org.springframework.web.bind.annotation.PostMapping;  
import org.springframework.web.bind.annotation.RequestBody;  
import org.springframework.web.bind.annotation.RestController;  
  
@RestController  
public class MyController {  
    @PostMapping("/gitbucket/webhook")  
    public ResponseEntity<?> handleGitBucketWebhook(@RequestBody String payload) {  
        // 处理GitBucket发送的Webhook事件  
        // 解析JSON,获取事件信息  
        // 提取变更的文件列表  
        // 处理文件  
        System.out.println(payload);  
        return ResponseEntity.ok().build();  
    }  
}

测试一下接口,使用后台curl命令发送请求:

curl -XPOST -H "Content-Type: application/json" -d '{"key1":"value1", "key2":"value2"}' http://localhost:8080/gitbucket/webhook

上述命令发送后,后台打印:

至此本地的测试Rest接口已经大功告成了。

Hook实测

登录到GitBucket,打开想监控的仓库设置,找到Webhook部分并添加一个新的Webhook:

  • Payload URL: 填写你的服务接收Webhook事件的URL,就是上面的测试接口。
  • Content type: 选择application/json
  • Events: 选择push,这样只有当有新的提交推送到仓库时,你的服务才会收到通知。
  • Active: 确保这个Webhook是激活状态。

上面第一个参数的url填好之后,它右侧直接就有一个测试按钮,点击测试通过的结果是这样的(注意响应码是200):

然后我们给仓库推送一个更新,看看打印的内容是什么。

格式化打印

在此之前我们先做一个json格式化的操作,以免打印的内容过长无法阅读。

首先引入一个新的依赖:

<dependency>  
    <groupId>org.json</groupId>  
    <artifactId>json</artifactId>  
    <version>20210307</version>  
</dependency>

然后打印的代码修改如下:

import org.json.JSONObject;

JSONObject jsonObject = new JSONObject(payload);  
String formattedJsonString = jsonObject.toString(4);  
System.out.println(formattedJsonString);

重启应用。

我在后台push了一条变更之后,应用立即收到更新消息,Server端的打印截图:

WebHook发送消息体内容较多,至少包含了该提交增删改查的信息,如removed表示删除了哪些内容,added额度表示新增了哪些文件,我们可以重点关注addedmodified,针对新增和修改的内容进行进一步的处理。

下一步动作

总体思路,基于前面已经搭建的WebHook触发流程,接收到push更新消息之后,使用本地的git工具拉取最新变动。这些文件与我们的ES应用在同一台机器上,然后Java可以读取这些文件转码并交给ES处理。

  • 27
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
### 回答1: 基于API Hook的软件行为分析系统是一种安全分析工具,它可以监控和分析软件程序的行为。该系统通过钩子技术,截获软件程序的API调用,分析程序的行为,检测恶意行为和安全漏洞。该系统可以帮助安全专家识别和分析恶意软件,提高系统的安全性。 ### 回答2: API hook是指对操作系统提供的API函数进行篡改和注入的技术手段,增加了软件的行为监测,可广泛应用于防病毒、漏洞挖掘、加密分析、异常检测、反调试等领域。基于API hook技术的软件行为分析系统,则是指利用API hook的技术手段,对软件进行深度分析,以发现恶意行为并进行防范。 软件行为分析系统需要对软件的执行过程进行跟踪、识别和分析,通过对API函数进行勾子、拦截,监视和分析程序执行过程中的函数调用、参数传递、返回值等信息,从而得出软件的行为模式和规律。利用软件行为分析系统,可以发现软件是否存在恶意行为、钓鱼攻击、恶意代码抽取、指令代码注入、数据窃取等风险行为,并能提供全面的报告和分析结果以便进行排除和防御。 在实际应用中,API hook技术可以用于挖掘遗漏漏洞,检测恶意程序等。由于恶意程序常会使用hook技术,因此该技术可以监视和捕获这种恶意行为。此外,API hook技术还可以用于网络安全领域,如对TCP/IP协议的分析、拦截和监视,可以有效地预防黑客攻击、网络钓鱼和网络病毒等风险行为。 需要注意的是,API hook技术也存在一些局限性,如需要花费较高的开发和部署成本,会对程序执行效率造成一定的影响,需要特殊的防护措施等。因此,在开发和应用API hook技术的软件行为分析系统时,需要充分考虑其可行性和实际效果,并采取合理的安全措施,以保护用户的数据安全与隐私。 ### 回答3: API Hook是一种分析系统,它利用操作系统提供的API函数入口点来实现对软件行为的监控和控制,可以对软件进行各种类型的检测和防御措施。基于API Hooke的软件行为分析系统是一种能够对软件行为进行全面分析,并自动检测和防御恶意软件行为的系统。 这种系统的主要优点在于它可以对软件行为进行深入分析,识别包括潜在威胁和未知攻击的行为,同时可以动态生成行为规则,基于规则进行分析和检测。同时,API Hook技术可以监控软件的所有API调用,包括网络、文件操作、注册表、远程调用等,从而可以全面掌握软件的行为和攻击模式,对恶意软件进行动态分析和防御。 基于API Hook的软件行为分析系统具有高度可扩展性,可以在多个操作系统和不同类型的计算机平台上使用。同时,基于规则的检测机制使其能够快速配置和使用,不需要经验丰富的研究员进行手动分析和编写规则。这对于企业和组织来说是一种利好消息,他们可以安装这样的系统来监控其内部和外部软件应用的行为,并保护他们的数据和网络免受意外泄露和黑客攻击。 综上所述,基于API Hook的软件行为分析系统是一种高效、可靠、易于使用和高度可扩展的系统,通过使用这种系统组织和企业可以保护他们的计算机网络免受安全威胁的侵害。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

1024点线面

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值