Files
DenyIP/cache.h
2025-04-23 11:41:06 +08:00

64 lines
1.8 KiB
C

#ifndef CACHE_H
#define CACHE_H
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
#include <time.h>
#include <stdio.h>
#include <stdlib.h>
#include <pcap.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <netinet/ip.h> // IP header
#include <netinet/tcp.h> // TCP header
#include <sys/types.h>
#include <ctype.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <sys/types.h>
#include <sys/ipc.h>
#include <sys/shm.h>
#include <unistd.h>
#include <getopt.h>
#include <string.h>
#define MAXIPSET_ 65535
#define MAXIPLEN 32
#define CACHE_TTL 180 // 设定缓存的存活时间为 600 秒 (10 分钟)
#define MAX_CACHE_SIZE 100 // 缓存最多存储 100 个 IP 地址
extern int cache_size; // 当前缓存中的 IP 数量
// 定义链表结构,用于缓存 IP 地址
struct ip_cache_node {
char ip[INET_ADDRSTRLEN]; // 存储 IP 地址
time_t timestamp; // 记录缓存时间
struct ip_cache_node *next; // 指向下一个节点
};
extern void add_ip_to_cache(const char *ip);
extern int is_ip_in_cache(const char *ip);
extern void free_ip_cache();
extern char cn_ip[MAXIPSET_][MAXIPLEN];
extern int add_cn_ip(char cn_ip[MAXIPSET_][MAXIPLEN], char *ip);
extern int is_ip_in_set(char cn_ip[MAXIPSET_][MAXIPLEN], const char *ip);
extern int cn_ip_len(char cn_ip[MAXIPSET_][MAXIPLEN]);
extern void clear_ip_set(char cn_ip[MAXIPSET_][MAXIPLEN]);
extern int is_ip_in_cache(const char *ip);
extern int append_string_to_file(const char *filepath, const char *str);
extern int read_file_to_array(const char *filepath, char cn_ip[MAXIPSET_][MAXIPLEN], int *line_count);
extern int file_exists_access(const char *filepath);
extern int truncate_file(const char *path);
#endif