#ifndef CACHE_H #define CACHE_H #include #include #include #include #include #include #include #include #include #include #include #include // IP header #include // TCP header #include #include #include #include #include #include #include #include #include #include #include #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