• Yapi 1.10.3迁移踩坑记


    1.9.2有漏洞,mock会被入侵,而原本的集合测试中使用了assert断言。

    网上所有的方案全是

    在镜像中启动服务报错:Error: EROFS: read-only file system, mkdir '/sys/fs/cgroup/cpu/safeify'

    这是safeify为了限定CPU资源使用,需要在此路径下写入文件,但是在镜像中此路径为只读路径,在 new Safeify对象时设置unrestricted: true,即可。

    断言功能不可用,assert.equal is not a function

    safeify对于执行脚本中库的引入方式与之前不同,需要通过unsafe来实现,具体可以看上面的sandbox.js的实现。

    我用docker-compose的方式部署,看得是一头雾水

    最后找到了文件所在位置

    docker-compose exec yapi bash
    进入 cd /home/vendors/server/utils
    vim sandbox.js进行更改即可

    镜像中没有yum没有vim,我们用apt安装
    apt-get install vim,
    出现Unable to locate package vim是apt过旧没有vim相关的包,进行包管理工具更新
    apt-get update 
    重新输入
    apt-get install vim 进行安装
     

    1. const Safeify = require('safeify').default;
    2. module.exports = async function sandboxFn(context, script) {
    3. // 创建 safeify 实例
    4. const safeVm = new Safeify({
    5. timeout: 3000,
    6. asyncTimeout: 60000,
    7. // cpuQuota: 0.5,
    8. // true为不受CPU限制,解决safeify只读问题
    9. unrestricted: true,
    10. //引入assert,解决assert.equal not a function 问题
    11. unsafe: {
    12. modules: {
    13. assert: 'assert'
    14. }
    15. }
    16. });
    17. safeVm.preset('const assert = require("assert");');
    18. script += "; return this;";
    19. const result = await safeVm.run(script, context);
    20. safeVm.destroy();
    21. return result
    22. };

    改完之后出现Request failed with status code 504

    查看日志发现了另外的报错。对应的github issue 暂时还没解决

    https://github.com/YMFE/yapi/issues/2543icon-default.png?t=M5H6https://github.com/YMFE/yapi/issues/2543
    UnhandledPromiseRejectionWarning: TypeError: Converting circular structure to JSON

    查看源码定位到应该是测试集合循环后的一个问题,前端同事看了源码之后,试着将sandbox.js 的return this移除后,该报错解决了。虽然这个报错解决了,但是还有另外的报错。

    最后是回滚回原来的版本。做一些安全策略的限制。

  • 相关阅读:
    极速进化,光速转录,C++版本人工智能实时语音转文字(字幕/语音识别)Whisper.cpp实践
    Ceres 曲线拟合
    【Java】CompletableFuture学习记录
    JavaEE——SpringBoot项目常见的依赖包及其作用
    Nest.js项目初始配置
    springcloud
    吴恩达 Chatgpt prompt 工程--1.Guidelines
    Scala的变量和数据类型
    27_ue4[AI]02_蓝图实现AI随机移动
    MQTT(详解)
  • 原文地址:https://blog.csdn.net/iaiti/article/details/125385365