kooder配置gitea时运行报错com.gitee.kooder.gitea.GiteaException: Gitea secret is missing

com.gitee.kooder.gitea.GiteaException: Gitea secret is missing

原因是,在新版本的gitea中已经不支持secret字段了,所以会报丢失,找不到字段
参考文档:Webhooks | Gitea Documentation

issue.png

看官方的git,最近更新已经是3年前了,所以只能自己动手修改了。

解决方案一

如果不追求严谨的话,完全可以把这一行验证给他干掉。
文件: kooder\gateway\src\main\java\com\gitee\kooder\webhook\GiteaSystemHookManager.java

image.png

对于强迫症的我,必然追求严谨

解决方案二

自己去补全新的验证方式,在上述gitea官网文档中验证方法写得很清楚,照葫芦画个瓢就行了。
主要修改的文件: gateway\src\main\java\com\gitee\kooder\webhook\GiteaSystemHookManager.java
主要修改该文件里面的checkSecretToken方法。

修改后的代码如下,仅供参考:

private static void checkSecretToken(String secretToken, String authorizationHeader, RoutingContext context) throws GiteaException {
        String secret = context.getBodyAsJson().getString("secret");
        if (Objects.isNull(secret)) {
            // throw new GiteaException("Gitea secret is missing!");
            String authorization = context.request().getHeader("Authorization");
            if(Objects.isNull(authorization)){
                if(!authorizationHeader.isEmpty()){
                    throw new GiteaException("Gitea authorization is missing!");
                }
            }else if(!authorization.equals(authorizationHeader)){
                throw new GiteaException("Gitea authorization mismatch!");
            }
            String signatureEncrypt = "";
            String signature = context.request().getHeader("X-Gitea-Signature");
            if(Objects.isNull(signature) || signature.isEmpty()){
                throw new GiteaException("Gitea secret is missing!");
            }
            try {
                signatureEncrypt = HMACSHA256.encrypt(context.getBodyAsString(), secretToken);
            } catch (InvalidKeyException | NoSuchAlgorithmException e) {
                e.printStackTrace();
            }
            if (!signature.equals(signatureEncrypt)) {
                throw new GiteaException("Gitea secret mismatch!");
            }
        }else{
            if (!secret.equals(secretToken)) {
                throw new GiteaException("Gitea secret mismatch!");
            }
        }
    }

由于设计到多个文件,就不一一列举了,修改后可正常使用的仓库地址:

https://gitee.com/jeady5/kooder

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容