|
|
|
#include "../src/common.h"
|
|
|
|
#include "../src/ipaddr.h"
|
|
|
|
#include "../src/statefile.h"
|
|
|
|
|
|
|
|
int main() {
|
|
|
|
const char matches = 4;
|
|
|
|
bool res = false;
|
|
|
|
f2b_ipaddr_t *list = NULL;
|
|
|
|
f2b_statefile_t *sf = NULL;
|
|
|
|
char jailname[64] = "";
|
|
|
|
struct stat st;
|
|
|
|
time_t banned_at = 0, release_at = 0;
|
|
|
|
|
|
|
|
UNUSED(res);
|
|
|
|
UNUSED(list);
|
|
|
|
|
|
|
|
snprintf(jailname, sizeof(jailname), "%lu", time(NULL)); /* gen unique jailname */
|
|
|
|
|
|
|
|
sf = f2b_statefile_create("/tmp", jailname);
|
|
|
|
assert(sf != NULL);
|
|
|
|
|
|
|
|
list = f2b_statefile_load(sf, matches);
|
|
|
|
assert(list == NULL);
|
|
|
|
|
|
|
|
banned_at = time(NULL) - 60;
|
|
|
|
release_at = banned_at + 60 * 2;
|
|
|
|
|
|
|
|
list = f2b_ipaddr_create("1.2.3.4", matches);
|
|
|
|
list->banned = true;
|
|
|
|
list->banned_at = banned_at;
|
|
|
|
list->release_at = release_at;
|
|
|
|
|
|
|
|
/* empty file should be created after f2b_statefile_create() call */
|
|
|
|
stat(sf->path, &st);
|
|
|
|
assert(st.st_size == 0);
|
|
|
|
|
|
|
|
res = f2b_statefile_save(sf, list);
|
|
|
|
assert(res == true);
|
|
|
|
|
|
|
|
stat(sf->path, &st);
|
|
|
|
assert(st.st_size > 0);
|
|
|
|
|
|
|
|
f2b_ipaddr_destroy(list);
|
|
|
|
list = NULL;
|
|
|
|
|
|
|
|
list = f2b_statefile_load(sf, matches);
|
|
|
|
assert(list != NULL);
|
|
|
|
assert(list->banned == true);
|
|
|
|
assert(list->banned_at == banned_at);
|
|
|
|
assert(list->release_at == release_at);
|
|
|
|
|
|
|
|
f2b_ipaddr_destroy(list);
|
|
|
|
|
|
|
|
unlink(sf->path);
|
|
|
|
|
|
|
|
f2b_statefile_destroy(sf);
|
|
|
|
|
|
|
|
return 0;
|
|
|
|
}
|