广告
返回顶部
首页 > 资讯 > 数据库 >PostgreSQL插件hook机制
  • 119
分享到

PostgreSQL插件hook机制

2024-04-02 19:04:59 119人浏览 安东尼
摘要

internal_load_library postgresql-> PG_init = (PG_init_t) pg_dlsym(file_scanner->handle, "_PG_

internal_load_library postgresql->
    PG_init = (PG_init_t) pg_dlsym(file_scanner->handle, "_PG_init");
    if (PG_init)
            (*PG_init) ();

internal_unload_library(const char *libname)->
    PG_fini = (PG_fini_t) pg_dlsym(file_scanner->handle, "_PG_fini");
            if (PG_fini)
                (*PG_fini) ();

以ClientAuthentication_hook_type为例
auth.h:
//声明插件使用的函数
extern void ClientAuthentication(Port *port);

typedef void (*ClientAuthentication_hook_type) (Port *, int);
extern PGDLLIMPORT ClientAuthentication_hook_type ClientAuthentication_hook;

auth.c:
//全局变量初始化为NULL,在_PG_init函数中进行初始化赋值,如果该插件加载,则ClientAuthentication_hook为
ClientAuthentication_hook_type ClientAuthentication_hook = NULL;
//如果ClientAuthentication_hook被赋值则执行植入的代码
InitPostgres->PerfORMAuthentication->ClientAuthentication->
    if (ClientAuthentication_hook)
        (*ClientAuthentication_hook) (port, status);

auth_delay.c:
static ClientAuthentication_hook_type original_client_auth_hook = NULL;

void _PG_init(void)
{
    
    DefineCustomIntVariable("auth_delay.milliseconds",
                            "Milliseconds to delay before reporting authentication failure",
                            NULL,
                            &auth_delay_milliseconds,
                            0,
                            0, INT_MAX / 1000,
                            PGC_SIGHUP,
                            GUC_UNIT_MS,
                            NULL,
                            NULL,
                            NULL);
    
    original_client_auth_hook = ClientAuthentication_hook;
    ClientAuthentication_hook = auth_delay_checks;
}

void
_PG_fini(void)
{
    ClientAuthentication_hook=original_client_auth_hook;
}


static void auth_delay_checks(Port *port, int status)
{
    if (original_client_auth_hook)
        original_client_auth_hook(port, status);

    if (status != STATUS_OK){
        pg_usleep(1000L * auth_delay_milliseconds);
    }
}
您可能感兴趣的文档:

--结束END--

本文标题: PostgreSQL插件hook机制

本文链接: https://www.lsjlt.com/news/43381.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • PostgreSQL插件hook机制
    internal_load_library postgresql-> PG_init = (PG_init_t) pg_dlsym(file_scanner->handle, "_PG_...
    99+
    2022-10-18
  • 插件化机制优雅封装你的hook请求使用方式
    目录引言useRequest 简介架构useRequest 入口处理Fetch 和 Pluginsstate 以及 setState插件化机制的实现核心方法 —&mdas...
    99+
    2022-11-13
  • pytorch中的hook机制register_forward_hook
    目录1、hook背景2、源码阅读3、定义一个用于测试hooker的类4、定义hook函数5、对需要的层注册hook6、测试forward()返回的特征和hook记录的是否一致6.1测...
    99+
    2022-11-13
  • PostgreSQL VFD机制
    1、结构体VFD机制中由结构体struct vfd来维护。其中各个成员变量的意义如下表所示:fdvfd实际对应的物理文件文件描述符fdstateFD_DELETE_AT_CLOSE:表示文件在关闭时需删除F...
    99+
    2022-10-18
  • pytorch中的hook机制是什么
    本篇内容介绍了“pytorch中的hook机制是什么”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!1、hook背景Hook被成为钩子机制,这...
    99+
    2023-06-29
  • Flex中Hook机制的示例分析
    小编给大家分享一下Flex中Hook机制的示例分析,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!在前一篇简要介绍了基于Flex的界面组合SDK,其中使用Hook机制实现UI Part生命周期管理、Master-Detail...
    99+
    2023-06-17
  • vuex5中的Pinia插件机制
    目录vuex5 Pinia插件机制通过插件扩展1、使用2、应用pinia和vuex的区别vuex5 Pinia插件机制 通过插件扩展 .给每个store添加公共属性.给stores添...
    99+
    2022-11-13
  • PostgreSQL PostGIS地理空间插件
    1)源码编译    PostGIS有许多安装包,尝试单独编译,可以下载源码,然后编译http://www.postgis.net/source/2)匹配可用的组件如下:postgresql-11.5-1-w...
    99+
    2022-10-18
  • ahooks控制时机的hook实现方法
    目录引言Function Component VS Class ComponentClass ComponentFunction ComponentLifeCycle - 生命周期u...
    99+
    2022-11-13
  • tp5框架中的hook机制是什么
    这篇文章主要介绍tp5框架中的hook机制是什么,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!1. 官方解释行为(Behavior)是ThinkPHP扩展机制中比较关键的一项扩展,行为既可以独立调用,也可以绑定到某个...
    99+
    2023-06-15
  • ahooks控制时机的hook如何实现
    本篇内容主要讲解“ahooks控制时机的hook如何实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ahooks控制时机的hook如何实现”吧!Function Component VS Cl...
    99+
    2023-07-02
  • Mybatis插件机制详细解析
    本篇内容介绍了“Mybatis插件机制详细解析”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Mybatis...
    99+
    2022-10-18
  • 怎么安装PostgreSQL的插件pg_catcheck
    这篇文章主要讲解了“怎么安装PostgreSQL的插件pg_catcheck”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么安装PostgreSQL的插件...
    99+
    2022-10-18
  • 怎么使用PostgreSQL的插件pgmetries
    这篇文章主要介绍“怎么使用PostgreSQL的插件pgmetries”,在日常操作中,相信很多人在怎么使用PostgreSQL的插件pgmetries问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2022-10-18
  • 怎么使用PostgreSQL的插件postgresql_anonymizer
    本篇内容主要讲解“怎么使用PostgreSQL的插件postgresql_anonymizer”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Postgr...
    99+
    2022-10-18
  • PostgreSQL中怎么使用pg_prewarm插件
    这篇文章主要介绍“PostgreSQL中怎么使用pg_prewarm插件”,在日常操作中,相信很多人在PostgreSQL中怎么使用pg_prewarm插件问题上存在疑惑,小编查阅了各式资料,整理出简单好用...
    99+
    2022-10-18
  • C++插件化NDD源码的插件机制实现解析
    目录NDD介绍 插件的优势NDD插件机制分析插件接口插件实现NDD插件加载过程插件机制是一种框架,允许开发人员简单地在应用程序中添加或扩展功能。它使广泛使用,因为它可以作为...
    99+
    2023-03-20
    c++插件化 c++ NDD源码插件机制
  • Android系统实现DroidPlugin插件机制
    360手机助手使用的 DroidPlugin,它是360手机助手团队在Android系统上实现了一种插件机制。它可以在无需安装、修改的情况下运行APK文件,此机制对改进大型AP...
    99+
    2022-06-06
    droidplugin Android
  • MyBatis插件机制超详细讲解
    目录MyBatis的插件机制InterceptorChainMyBatis中的PluginMyBatis插件开发总结MyBatis的插件机制 MyBatis 允许在已映射语句执行过程...
    99+
    2022-11-13
    MyBatis插件机制 MyBatis插件机制原理 MyBatis插件
  • Postgresql 空间扩展需要Postgis插件
    Windows: http://download.osgeo.org/postgis/windows/ Linux/Redhat/Centos: https://yum.postgresql.org/ Postgresql扩展...
    99+
    2017-09-28
    Postgresql 空间扩展需要Postgis插件
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作