首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏gopher云原生

    Go 插件功能的实现方式

    07:21 I am plugin 定义一个插件总结: package 包名需要定义为 main 必须有可导出的变量或函数 不需要 main 函数 插件加载时会先执行 init 函数 Traefik Yaegi 实现 Yaegi 是 Traefik 开源的 Go 解释器。 Traefik 自身的插件实现就是使用的 YaegiYaegi 运行在 Go 运行时之上,可以直接作为嵌入式解释器,或使用交互式 shell ,解释运行 Go 代码。 main.go │ └─plugin └─src └─hello go.mod hello.go 这里有个注意点,Yaegi /interp" "github.com/traefik/yaegi/stdlib" ) func main() { // 初始化解释器 i := interp.New(interp.Options

    1.4K40发布于 2021-10-18
  • 来自专栏后台全栈之路

    Yaegi,让你用标准 Go 语法开发可热插拔的脚本和插件

    ,然后使用 yaegi 封装并在代码中调用: package main import ( "fmt" "github.com/traefik/yaegi/interp" "github.com ---- Yaegi 支持第三方库 原理 我们可以留意一下上文的例子中 intp.Use(stdlib.Symbols) 这一句,这可以说是 yaegi 区别于其他 Go 脚本库的实现之一。 我们可以看看 yaegi 的 stdlib 库作为例子,它就是对 Go 原生的 package 文件进行了解释,并找到符号表,所使用的 package 就是 yaegi 附带开发的一个工具。 github.com/traefik/yaegi/cmd/yaegi@v0.10.0 //go:generate yaegi extract github.com/Andrew-M-C/go.util ,而 yaegi 目前是不支持泛型的。

    10.1K101发布于 2021-10-19
  • 来自专栏【腾讯云开发者】

    揭秘!用标准Go语言能写脚本吗?

    在这方面,其实项目组分别针对Go和Lua都有了比较成熟的应用,使用的分别是yaegi(https://github.com/traefik/yaegi)和gopher(https://github.com 四、自定义数据结构传递 前文说到,yaegi的一个极大的优势,是可以直接传递自定义struct格式。 这里,我先抛出如何传递自定义数据结构的方法,然后再更进一步讲yaegi对第三方库的支持。 五、Yaegi支持第三方库 (一)原理 我们可以留意一下上文的例子中intp.Use(stdlib.Symbols) 这一句,这可以说是yaegi区别于其他Go脚本库的实现之一。 我们可以看看yaegi的stdlib库作为例子,它就是对Go原生的package文件进行了解释,并找到符号表,所使用的package就是yaegi附带开发的一个工具。 github.com/traefik/yaegi/cmd/yaegi@v0.10.0//go:generate yaegi extract github.com/Andrew-M-C/go.util/slice

    2.1K20发布于 2021-11-05
  • 来自专栏架构驿站

    为什么说 WebAssembly 让 Traefik Plugin 开发走向神坛 ?

    02 —Yaegi 解释器,Traefik Plugin 开发的基石 作为 Traefik 生态中使用的一种依赖组件,Yaegi 是一款轻量级、嵌入式的 Go 语言解释器。 在实际的业务场景中,Yaegi 解释器对于作为云原生网关的 Traefik 在生态中的作用支撑主要体现在如下几个层面: 1、动态执行 Go 代码 Yaegi 解释器可以在运行时动态执行 2、轻量级和嵌入式 作为一款轻量级的解释器,Yaegi 代码库相对较小且易于嵌入到其他应用程序中。 Wasm 代码可以编译成接近原生代码的形式,这与 Yaegi 插件中使用的解释语言相比具有潜在的性能提升。 因此,从本质上讲,虽然 Yaegi 提供了一定程度的语言灵活性,但 Wasm 带来了增强的安全性、潜在的性能改进、访问更广泛的生态系统以及 Yaegi 单独无法比拟的面向未来的功能。

    44810编辑于 2024-11-01
  • 来自专栏架构驿站

    一文读懂基于 Yaegi 解释器开发可热插拔的 Traefik 插件

    Yaegi 支持交互式探索和调试,可以帮助开发人员快速测试和验证代码。它还提供了内置的标准库和支持调用外部 Go 包的功能,使得使用 Yaegi 编写和执行 Go 代码变得更加方便和灵活。 除了作为解释器之外,Yaegi 还可以作为 Go 语言的脚本引擎使用。它可以在应用程序中嵌入 Go 脚本,实现动态配置和扩展。此外,Yaegi 还支持在沙箱环境中运行代码,避免了潜在的安全风险。 — 04 — Yaegi 解释器实现原理及案例‍‍ 基于上述所述,Yaegi是一个使用 Go 语言编写的解释器,可以解析和执行 Go 代码。 在 Yaegi 的设计实现中,主要包含以下几个方面的内容,仅供参考: 1. 词法分析器:Yaegi 首先需要将输入的 Go 代码转化为词法单元,这个过程称为词法分析。 这里,我们以 Yaegi 在运行时加载并执行 Go 包为简要场景,即 Yaegi 可以用于在运行时加载并执行整个 Go 包,而不需要将包编译成可执行的二进制文件。

    3.1K51编辑于 2023-08-09
  • 来自专栏架构驿站

    基于 WebAssembly + Coraza 相结合的 Traefik v3.0 高效解决方案解析

    然而,基于当时 Go 语言的生态不是特别完善不足以支撑自定义 Plugin 的需求,于是在 Traefik 团队的共同努力下实现了一种优雅的 Go 解释器,也就是当前主流的 Yaegi 项目,随着众多技术人员的参与 ,基于 Yaegi 所开发的中间件 Plugin 在Traefik 生态中成为现实。 Yaegi 使许多人能够为他们的上下文开发中间件或提供商。时至今日,我们可以看到通过目录提供的中间件 Plugin 达到一百多个,以及更多私有的 Plugin。 尽管采用了 Yaegi 解释器,使得用 Go 语言编写 Plugin 成为可能,但这种做法对于非 Go 开发人员来说仍有一定门槛。

    89610编辑于 2024-11-01
  • 来自专栏想法独特的Dev+Ops

    Traefik 开发中间件插件(六)

    然而,插件并没有被预编译和链接,而是由Yaegi 动态执行,Yaegi是一个嵌入在 Traefik 应用程序代理中的 Go 解释器。 这意味着插件不需要编译,也不需要复杂的工具链来开始。

    1.5K60编辑于 2022-05-15
  • 来自专栏想法独特的Dev+Ops

    Traefik 使用插件(五)

    然而,与传统的中间件不同,插件是动态加载的,并由嵌入式解释器yaegi执行。

    1.4K50编辑于 2022-05-13
  • 来自专栏gopher云原生

    Traefik Plugins 全面解析

    ,会使用 plugins.NewBuilder(client, plgs, localPlgs) 将插件源码读取加载到 *plugins.Builder 实例,这里用到一个十分强大的 go 解释器库 yaegi ,同样出自 traefik 之手,地址在 https://github.com/traefik/yaegi ,使用起来也很简单,只要使用 new()创建解释器,后续使用 Eval()就可以运行代码了。 vConfig, }, nil } traefik插件架构 Traefik Plugins 开发 上文分析 traefik 的插件实现源码已经知道,traefik 的插件是靠 Yaegi

    2.5K20发布于 2021-10-18
  • 来自专栏Khan安全团队

    Kubesploit-Golang编写的跨平台C2

    由于C&C和代理基础结构已经由Merlin完成,因此我们集成了Go解释器(“ Yaegi”),以便能够从服务器到代理运行Golang代码。

    1.5K10发布于 2021-05-08
  • 来自专栏FreeBuf

    Kubesploit:针对容器化环境的跨平台后渗透利用工具

    由于C&C和代理基础设施已经由Merlin完成,我们只需要继承Go解释器(“Yaegi”)就可以在服务器端和代理运行Golang代码了。

    71520发布于 2021-07-02
  • 来自专栏k8s技术圈

    Traefik 发布控制面板 SaaS 服务 Pilot

    自定义中间件 新的插件系统构建在 Yaegi 的基础之上,提供了一种优雅的、可扩展和高性能的方式来增强 Traefik 的功能,而无需修改或编译 Traefik 的源代码。

    1.6K20发布于 2020-08-04
  • 来自专栏HelloGitHub

    有了这些 AI 工具,健康和财富兼得「GitHub 热点速览」

    HG 评价地址→https://hellogithub.com/repository/cab78f25486e4f7aa3b0331e9a029940 3.2 Go 语言解释器:yaegi 主语言:Go

    55610编辑于 2023-08-18
  • 来自专栏架构驿站

    Traefik 如何保护应用免受 Log4j2 漏洞的影响

    Traefik 插件 从 Traefik 2.3 版本开始,Traefik 可以加载和使用自定义插件(在我们的 Go 解释器 Yaegi 的帮助下)充当中间件或提供者,以处理和匹配请求头或用户代理中间件的职责

    1.2K40编辑于 2021-12-21
  • 来自专栏黑客下午茶

    在 Traefik Proxy 2.5 中使用/开发私有插件(Traefik 官方博客)

    此外,Traefik 不需要编译插件源代码:插件通过原始源代码加载,并在运行时由 Yaegi 解释。 https://github.com/traefik/plugindemo/blob/master/readme.md https://github.com/traefik/yaegi 从公共存储库构建镜像

    1.7K10编辑于 2022-09-02
  • 来自专栏绿盟科技研究通讯

    RSA解读 | Kubernetes集群的攻与防

    1) 架构说明 该工具基于merlin项目并集成yaegi项目实现。 Yaegi则是一个go语音解释器,用于解决远程投递的go语言代码在Agent端执行问题。

    1.2K30编辑于 2022-11-14
  • 来自专栏01ZOO

    golang with script

    starlark(python 子集) 高 高 VM Google 出品,语法是 python 子集,学习成本低且使用舒适 gpython python 中 中 Interpreter 成熟度不高 yaegi

    3.8K170发布于 2021-10-21
领券