mirror of
https://github.com/bol-van/zapret.git
synced 2025-05-24 22:32:58 +03:00
tpws,nfqws: return lists reload on HUP
This commit is contained in:
@@ -13,3 +13,5 @@ bool HostlistCheck(const struct desync_profile *dp,const char *host, bool *exclu
|
||||
struct hostlist_file *RegisterHostlist(struct desync_profile *dp, bool bExclude, const char *filename);
|
||||
bool HostlistsReloadCheckForProfile(const struct desync_profile *dp);
|
||||
void HostlistsDebug();
|
||||
|
||||
#define ResetAllHostlistsModTime() hostlist_files_reset_modtime(¶ms.hostlists)
|
||||
|
@@ -10,3 +10,5 @@ bool IpsetCheck(const struct desync_profile *dp, const struct in_addr *ipv4, con
|
||||
struct ipset_file *RegisterIpset(struct desync_profile *dp, bool bExclude, const char *filename);
|
||||
void IpsetsDebug();
|
||||
bool AppendIpsetItem(ipset *ips, char *ip);
|
||||
|
||||
#define ResetAllIpsetModTime() ipset_files_reset_modtime(¶ms.ipsets)
|
||||
|
14
tpws/pools.c
14
tpws/pools.c
@@ -201,6 +201,13 @@ struct hostlist_file *hostlist_files_search(struct hostlist_files_head *head, co
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
void hostlist_files_reset_modtime(struct hostlist_files_head *list)
|
||||
{
|
||||
struct hostlist_file *hfile;
|
||||
|
||||
LIST_FOREACH(hfile, list, next)
|
||||
hfile->mod_time=0;
|
||||
}
|
||||
|
||||
struct hostlist_item *hostlist_collection_add(struct hostlist_collection_head *head, struct hostlist_file *hfile)
|
||||
{
|
||||
@@ -415,6 +422,13 @@ struct ipset_file *ipset_files_search(struct ipset_files_head *head, const char
|
||||
}
|
||||
return NULL;
|
||||
}
|
||||
void ipset_files_reset_modtime(struct ipset_files_head *list)
|
||||
{
|
||||
struct ipset_file *hfile;
|
||||
|
||||
LIST_FOREACH(hfile, list, next)
|
||||
hfile->mod_time=0;
|
||||
}
|
||||
|
||||
struct ipset_item *ipset_collection_add(struct ipset_collection_head *head, struct ipset_file *hfile)
|
||||
{
|
||||
|
@@ -59,6 +59,7 @@ LIST_HEAD(hostlist_files_head, hostlist_file);
|
||||
struct hostlist_file *hostlist_files_add(struct hostlist_files_head *head, const char *filename);
|
||||
void hostlist_files_destroy(struct hostlist_files_head *head);
|
||||
struct hostlist_file *hostlist_files_search(struct hostlist_files_head *head, const char *filename);
|
||||
void hostlist_files_reset_modtime(struct hostlist_files_head *list);
|
||||
|
||||
struct hostlist_item {
|
||||
struct hostlist_file *hfile;
|
||||
@@ -120,6 +121,7 @@ LIST_HEAD(ipset_files_head, ipset_file);
|
||||
struct ipset_file *ipset_files_add(struct ipset_files_head *head, const char *filename);
|
||||
void ipset_files_destroy(struct ipset_files_head *head);
|
||||
struct ipset_file *ipset_files_search(struct ipset_files_head *head, const char *filename);
|
||||
void ipset_files_reset_modtime(struct ipset_files_head *list);
|
||||
|
||||
struct ipset_item {
|
||||
struct ipset_file *hfile;
|
||||
|
23
tpws/tpws.c
23
tpws/tpws.c
@@ -50,10 +50,31 @@
|
||||
#define MAX_CONFIG_FILE_SIZE 16384
|
||||
|
||||
struct params_s params;
|
||||
static bool bReload=false;
|
||||
|
||||
static void onhup(int sig)
|
||||
{
|
||||
printf("HUP received !\n");
|
||||
printf("HUP received ! Lists will be reloaded.\n");
|
||||
bReload=true;
|
||||
}
|
||||
void ReloadCheck()
|
||||
{
|
||||
if (bReload)
|
||||
{
|
||||
ResetAllHostlistsModTime();
|
||||
if (!LoadAllHostLists())
|
||||
{
|
||||
DLOG_ERR("hostlists load failed. this is fatal.\n");
|
||||
exit(1);
|
||||
}
|
||||
ResetAllIpsetModTime();
|
||||
if (!LoadAllIpsets())
|
||||
{
|
||||
DLOG_ERR("ipset load failed. this is fatal.\n");
|
||||
exit(1);
|
||||
}
|
||||
bReload=false;
|
||||
}
|
||||
}
|
||||
|
||||
static void onusr2(int sig)
|
||||
|
@@ -6,4 +6,4 @@
|
||||
|
||||
#include <sys/param.h>
|
||||
|
||||
void dohup(void);
|
||||
void ReloadCheck();
|
||||
|
@@ -1544,6 +1544,8 @@ int event_loop(const int *listen_fd, size_t listen_fd_ct)
|
||||
|
||||
for(;;)
|
||||
{
|
||||
ReloadCheck();
|
||||
|
||||
DBGPRINT("epoll_wait\n");
|
||||
|
||||
if ((num_events = epoll_wait(efd, events, MAX_EPOLL_EVENTS, -1)) == -1)
|
||||
|
Reference in New Issue
Block a user