mirror of
https://gitee.com/acl-dev/acl.git
synced 2024-12-05 05:18:53 +08:00
53 lines
1.4 KiB
C
53 lines
1.4 KiB
C
#ifndef ACL_ACCESS_INCLUDE_H
|
|
#define ACL_ACCESS_INCLUDE_H
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
#include "stdlib/acl_stdlib.h"
|
|
|
|
/**
|
|
* 向访问列表中添加一个允许的 ip 地址段
|
|
* @param data 多个 IP 地址段数据字符串. 如: 10.0.0.1:10.0.250.1, 192.168.0.1:192.168.0.255
|
|
* @param sep1 每个 IP 地址段之间的分隔符, 如上例中的 "," 分隔符
|
|
* @param sep2 每个 IP 地址段高地址与低地址之间的分隔符, 如上例中的 ":" 分隔符
|
|
* @return 添加 结果. 0: 成功; < 0: 失败
|
|
* 注: 该函数是线程不安全的
|
|
*/
|
|
ACL_API int acl_access_add(const char *data, const char *sep1, const char *sep2);
|
|
|
|
/**
|
|
* 从配置文件中读取 IP 地址字符串, 并自动生成 IP 地址访问列表
|
|
* @param xcp 已经成功分析了配置文件的结果句柄
|
|
* @param name xcp 结果句柄中与 IP 地址访问相关的变量名
|
|
* @return 是否添加成功. 0: 成功; < 0: 失败.
|
|
* 注: 该函数是线程不安全的
|
|
*/
|
|
ACL_API int acl_access_cfg(ACL_XINETD_CFG_PARSER *xcp, const char *name);
|
|
|
|
/**
|
|
* 用户可以设置自己的日志记录函数, 如果不调用此函数, 则本库自动使用 aclMsg.c中的库.
|
|
* @param log_fn 用户自己的日志记录函数.
|
|
* 注: 该函数是线程不安全的
|
|
*/
|
|
ACL_API void acl_access_setup_logfn(void (*log_fn)(const char *fmt, ...));
|
|
|
|
/**
|
|
* 判定给定 IP 地址是否在允许的访问 IP 地址列表中.
|
|
* @param ip 格式: 192.168.0.1
|
|
* @return 是否在允许的访问列表中, != 0: 是; == 0: 不是.
|
|
*/
|
|
ACL_API int acl_access_permit(const char *ip);
|
|
|
|
/**
|
|
* 将访问地址表表打印出来.
|
|
*/
|
|
ACL_API void acl_access_debug(void);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif
|