diff options
Diffstat (limited to 'src/conf_db.c')
-rw-r--r-- | src/conf_db.c | 235 |
1 files changed, 120 insertions, 115 deletions
diff --git a/src/conf_db.c b/src/conf_db.c index c635777..31725dc 100644 --- a/src/conf_db.c +++ b/src/conf_db.c @@ -613,8 +613,8 @@ write_string(const char *s, struct dbFILE *f) void save_kline_database(void) { - unsigned int i = 0; - uint32_t cnt = 0, version = 0; + uint32_t i = 0; + uint32_t records = 0; struct dbFILE *f = NULL; dlink_node *ptr = NULL; @@ -627,12 +627,12 @@ save_kline_database(void) { struct AddressRec *arec = ptr->data; - if (arec->type == CONF_KLINE && !IsConfMain(arec->aconf)) - ++cnt; + if (arec->type == CONF_KLINE && IsConfDatabase(arec->aconf)) + ++records; } } - SAFE_WRITE(write_uint32(cnt, f), KPATH); + SAFE_WRITE(write_uint32(records, f), KPATH); for (i = 0; i < ATABLE_SIZE; ++i) { @@ -640,7 +640,7 @@ save_kline_database(void) { struct AddressRec *arec = ptr->data; - if (arec->type == CONF_KLINE && !IsConfMain(arec->aconf)) + if (arec->type == CONF_KLINE && IsConfDatabase(arec->aconf)) { SAFE_WRITE(write_string(arec->aconf->user, f), KPATH); SAFE_WRITE(write_string(arec->aconf->host, f), KPATH); @@ -657,39 +657,42 @@ save_kline_database(void) void load_kline_database(void) { - unsigned int i = 0; - uint32_t cnt = 0, version = 0; - uint64_t tmp64 = 0; struct dbFILE *f = NULL; - dlink_node *ptr = NULL, *ptr_next = NULL; + struct AccessItem *aconf = NULL; + char *field_1 = NULL; + char *field_2 = NULL; + char *field_3 = NULL; + uint32_t i = 0; + uint32_t records = 0; + uint64_t field_4 = 0; + uint64_t field_5 = 0; if (!(f = open_db("kline", KPATH, "r", KLINE_DB_VERSION))) return; - if ((version = get_file_version(f) < 1)) + if (get_file_version(f) < 1) { close_db(f); return; } - read_uint32(&cnt, f); + read_uint32(&records, f); - for (i = 0; i < cnt; ++i) + for (i = 0; i < records; ++i) { - struct AccessItem *aconf = map_to_conf(make_conf_item(KLINE_TYPE)); - - SAFE_READ(read_string(&aconf->user, f)); - SAFE_READ(read_string(&aconf->host, f)); - SAFE_READ(read_string(&aconf->reason, f)); - - SAFE_READ(read_uint64(&tmp64, f)); - aconf->setat = tmp64; - - SAFE_READ(read_uint64(&tmp64, f)); - aconf->hold = tmp64; - - if (aconf->hold) - SetConfTemporary(aconf); + SAFE_READ(read_string(&field_1, f)); + SAFE_READ(read_string(&field_2, f)); + SAFE_READ(read_string(&field_3, f)); + SAFE_READ(read_uint64(&field_4, f)); + SAFE_READ(read_uint64(&field_5, f)); + + aconf = map_to_conf(make_conf_item(KLINE_TYPE)); + aconf->user = field_1; + aconf->host = field_2; + aconf->reason = field_3; + aconf->setat = field_4; + aconf->hold = field_5; + SetConfDatabase(aconf); add_conf_by_address(CONF_KLINE, aconf); } @@ -700,8 +703,8 @@ load_kline_database(void) void save_dline_database(void) { - unsigned int i = 0; - uint32_t cnt = 0, version = 0; + uint32_t i = 0; + uint32_t records = 0; struct dbFILE *f = NULL; dlink_node *ptr = NULL; @@ -714,12 +717,12 @@ save_dline_database(void) { struct AddressRec *arec = ptr->data; - if (arec->type == CONF_DLINE && !IsConfMain(arec->aconf)) - ++cnt; + if (arec->type == CONF_DLINE && IsConfDatabase(arec->aconf)) + ++records; } } - SAFE_WRITE(write_uint32(cnt, f), DLPATH); + SAFE_WRITE(write_uint32(records, f), DLPATH); for (i = 0; i < ATABLE_SIZE; ++i) { @@ -727,7 +730,7 @@ save_dline_database(void) { struct AddressRec *arec = ptr->data; - if (arec->type == CONF_DLINE && !IsConfMain(arec->aconf)) + if (arec->type == CONF_DLINE && IsConfDatabase(arec->aconf)) { SAFE_WRITE(write_string(arec->aconf->host, f), DLPATH); SAFE_WRITE(write_string(arec->aconf->reason, f), DLPATH); @@ -743,38 +746,39 @@ save_dline_database(void) void load_dline_database(void) { - unsigned int i = 0; - uint32_t cnt = 0, version = 0; - uint64_t tmp64 = 0; struct dbFILE *f = NULL; - dlink_node *ptr = NULL, *ptr_next = NULL; + struct AccessItem *aconf = NULL; + char *field_1 = NULL; + char *field_2 = NULL; + uint32_t i = 0; + uint32_t records = 0; + uint64_t field_3 = 0; + uint64_t field_4 = 0; if (!(f = open_db("dline", DLPATH, "r", KLINE_DB_VERSION))) return; - if ((version = get_file_version(f) < 1)) + if (get_file_version(f) < 1) { close_db(f); return; } - read_uint32(&cnt, f); + read_uint32(&records, f); - for (i = 0; i < cnt; ++i) + for (i = 0; i < records; ++i) { - struct AccessItem *aconf = map_to_conf(make_conf_item(DLINE_TYPE)); - - SAFE_READ(read_string(&aconf->host, f)); - SAFE_READ(read_string(&aconf->reason, f)); - - SAFE_READ(read_uint64(&tmp64, f)); - aconf->setat = tmp64; - - SAFE_READ(read_uint64(&tmp64, f)); - aconf->hold = tmp64; - - if (aconf->hold) - SetConfTemporary(aconf); + SAFE_READ(read_string(&field_1, f)); + SAFE_READ(read_string(&field_2, f)); + SAFE_READ(read_uint64(&field_3, f)); + SAFE_READ(read_uint64(&field_4, f)); + + aconf = map_to_conf(make_conf_item(DLINE_TYPE)); + aconf->host = field_1; + aconf->reason = field_2; + aconf->setat = field_3; + aconf->hold = field_4; + SetConfDatabase(aconf); add_conf_by_address(CONF_DLINE, aconf); } @@ -785,8 +789,8 @@ load_dline_database(void) void save_gline_database(void) { - unsigned int i = 0; - uint32_t cnt = 0, version = 0; + uint32_t i = 0; + uint32_t records = 0, version = 0; struct dbFILE *f = NULL; dlink_node *ptr = NULL; @@ -799,12 +803,12 @@ save_gline_database(void) { struct AddressRec *arec = ptr->data; - if (arec->type == CONF_GLINE && !IsConfMain(arec->aconf)) - ++cnt; + if (arec->type == CONF_GLINE && IsConfDatabase(arec->aconf)) + ++records; } } - SAFE_WRITE(write_uint32(cnt, f), GPATH); + SAFE_WRITE(write_uint32(records, f), GPATH); for (i = 0; i < ATABLE_SIZE; ++i) { @@ -812,7 +816,7 @@ save_gline_database(void) { struct AddressRec *arec = ptr->data; - if (arec->type == CONF_GLINE && !IsConfMain(arec->aconf)) + if (arec->type == CONF_GLINE && IsConfDatabase(arec->aconf)) { SAFE_WRITE(write_string(arec->aconf->user, f), GPATH); SAFE_WRITE(write_string(arec->aconf->host, f), GPATH); @@ -829,39 +833,42 @@ save_gline_database(void) void load_gline_database(void) { - unsigned int i = 0; - uint32_t cnt = 0, version = 0; - uint64_t tmp64 = 0; struct dbFILE *f = NULL; - dlink_node *ptr = NULL, *ptr_next = NULL; + struct AccessItem *aconf = NULL; + char *field_1 = NULL; + char *field_2 = NULL; + char *field_3 = NULL; + uint32_t i = 0; + uint32_t records = 0; + uint64_t field_4 = 0; + uint64_t field_5 = 0; if (!(f = open_db("gline", GPATH, "r", KLINE_DB_VERSION))) return; - if ((version = get_file_version(f) < 1)) + if (get_file_version(f) < 1) { close_db(f); return; } - read_uint32(&cnt, f); + read_uint32(&records, f); - for (i = 0; i < cnt; ++i) + for (i = 0; i < records; ++i) { - struct AccessItem *aconf = map_to_conf(make_conf_item(GLINE_TYPE)); - - SAFE_READ(read_string(&aconf->user, f)); - SAFE_READ(read_string(&aconf->host, f)); - SAFE_READ(read_string(&aconf->reason, f)); - - SAFE_READ(read_uint64(&tmp64, f)); - aconf->setat = tmp64; - - SAFE_READ(read_uint64(&tmp64, f)); - aconf->hold = tmp64; - - if (aconf->hold) - SetConfTemporary(aconf); + SAFE_READ(read_string(&field_1, f)); + SAFE_READ(read_string(&field_2, f)); + SAFE_READ(read_string(&field_3, f)); + SAFE_READ(read_uint64(&field_4, f)); + SAFE_READ(read_uint64(&field_5, f)); + + aconf = map_to_conf(make_conf_item(KLINE_TYPE)); + aconf->user = field_1; + aconf->host = field_2; + aconf->reason = field_3; + aconf->setat = field_4; + aconf->hold = field_5; + SetConfDatabase(aconf); add_conf_by_address(CONF_GLINE, aconf); } @@ -872,8 +879,7 @@ load_gline_database(void) void save_resv_database(void) { - unsigned int i = 0; - uint32_t cnt = 0, version = 0; + uint32_t records = 0; struct dbFILE *f = NULL; dlink_node *ptr = NULL; struct ConfItem *conf; @@ -887,25 +893,27 @@ save_resv_database(void) { resv_cp = ptr->data; - if (!resv_cp->conf) - ++cnt; + if (IsConfDatabase(resv_cp)) + ++records; } DLINK_FOREACH(ptr, nresv_items.head) { resv_np = map_to_conf(ptr->data); - if (!resv_np->action) - ++cnt; + if (IsConfDatabase(resv_np)) + ++records; } - SAFE_WRITE(write_uint32(cnt, f), RESVPATH); - + SAFE_WRITE(write_uint32(records, f), RESVPATH); DLINK_FOREACH(ptr, resv_channel_list.head) { resv_cp = ptr->data; + if (!IsConfDatabase(resv_cp)) + continue; + SAFE_WRITE(write_string(resv_cp->name, f), RESVPATH); SAFE_WRITE(write_string(resv_cp->reason, f), RESVPATH); SAFE_WRITE(write_uint64(resv_cp->setat, f), RESVPATH); @@ -917,6 +925,9 @@ save_resv_database(void) conf = ptr->data; resv_np = map_to_conf(conf); + if (!IsConfDatabase(resv_np)) + continue; + SAFE_WRITE(write_string(conf->name, f), RESVPATH); SAFE_WRITE(write_string(resv_np->reason, f), RESVPATH); SAFE_WRITE(write_uint64(resv_np->setat, f), RESVPATH); @@ -929,11 +940,10 @@ save_resv_database(void) void load_resv_database(void) { - unsigned int i = 0; - uint32_t cnt = 0, version = 0; + uint32_t i = 0; + uint32_t records = 0; uint64_t tmp64_hold = 0, tmp64_setat = 0; struct dbFILE *f = NULL; - dlink_node *ptr = NULL, *ptr_next = NULL; char *name = NULL; char *reason = NULL; struct ConfItem *conf; @@ -943,15 +953,15 @@ load_resv_database(void) if (!(f = open_db("resv", RESVPATH, "r", KLINE_DB_VERSION))) return; - if ((version = get_file_version(f) < 1)) + if (get_file_version(f) < 1) { close_db(f); return; } - read_uint32(&cnt, f); + read_uint32(&records, f); - for (i = 0; i < cnt; ++i) + for (i = 0; i < records; ++i) { SAFE_READ(read_string(&name, f)); SAFE_READ(read_string(&reason, f)); @@ -966,9 +976,7 @@ load_resv_database(void) resv_cp = map_to_conf(conf); resv_cp->setat = tmp64_setat; resv_cp->hold = tmp64_hold; - - if (resv_cp->hold) - add_temp_line(conf); + SetConfDatabase(resv_cp); } else { @@ -978,9 +986,7 @@ load_resv_database(void) resv_np = map_to_conf(conf); resv_np->setat = tmp64_setat; resv_np->hold = tmp64_hold; - - if (resv_np->hold) - add_temp_line(conf); + SetConfDatabase(resv_np); } MyFree(name); @@ -993,8 +999,7 @@ load_resv_database(void) void save_xline_database(void) { - unsigned int i = 0; - uint32_t cnt = 0, version = 0; + uint32_t records = 0; struct dbFILE *f = NULL; dlink_node *ptr = NULL; struct ConfItem *conf = NULL; @@ -1007,18 +1012,20 @@ save_xline_database(void) { conf = ptr->data; - if (!IsConfMain(conf)) - ++cnt; + if (IsConfDatabase(xconf)) + ++records; } - SAFE_WRITE(write_uint32(cnt, f), XPATH); - + SAFE_WRITE(write_uint32(records, f), XPATH); DLINK_FOREACH(ptr, xconf_items.head) { conf = ptr->data; xconf = map_to_conf(conf); + if (!IsConfDatabase(xconf)) + continue; + SAFE_WRITE(write_string(conf->name, f), XPATH); SAFE_WRITE(write_string(xconf->reason, f), XPATH); SAFE_WRITE(write_uint64(xconf->setat, f), XPATH); @@ -1031,11 +1038,10 @@ save_xline_database(void) void load_xline_database(void) { - unsigned int i = 0; - uint32_t cnt = 0, version = 0; + uint32_t i = 0; + uint32_t records = 0; uint64_t tmp64_hold = 0, tmp64_setat = 0; struct dbFILE *f = NULL; - dlink_node *ptr = NULL, *ptr_next = NULL; char *name = NULL; char *reason = NULL; struct ConfItem *conf = NULL; @@ -1044,15 +1050,15 @@ load_xline_database(void) if (!(f = open_db("xline", XPATH, "r", KLINE_DB_VERSION))) return; - if ((version = get_file_version(f) < 1)) + if (get_file_version(f) < 1) { close_db(f); return; } - read_uint32(&cnt, f); + read_uint32(&records, f); - for (i = 0; i < cnt; ++i) + for (i = 0; i < records; ++i) { SAFE_READ(read_string(&name, f)); SAFE_READ(read_string(&reason, f)); @@ -1062,13 +1068,12 @@ load_xline_database(void) conf = make_conf_item(XLINE_TYPE); xconf = map_to_conf(conf); + SetConfDatabase(xconf); + conf->name = name; xconf->reason = reason; xconf->setat = tmp64_setat; xconf->hold = tmp64_hold; - - if (xconf->hold) - SetConfTemporary(conf); } close_db(f); |