int32_t init_free_userdb(struct s_auth *ptr) { int32_t nro; for(nro = 0; ptr; nro++) { struct s_auth *ptr_next; ptr_next = ptr->next; ll_destroy(&ptr->aureader_list); ptr->next = NULL; config_list_gc_values(account_opts, ptr); ftab_clear(&ptr->ftab); ftab_clear(&ptr->fchid); tuntab_clear(&ptr->ttab); caidtab_clear(&ptr->ctab); NULLFREE(ptr->cltab.aclass); NULLFREE(ptr->cltab.bclass); #ifdef CS_CACHEEX cecspvaluetab_clear(&ptr->cacheex.filter_caidtab); #endif #ifdef WITH_LB caidvaluetab_clear(&ptr->lb_nbest_readers_tab); #endif add_garbage(ptr); ptr = ptr_next; } cs_log("userdb %d accounts freed", nro); return nro; }
void chk_cacheex_hitvaluetab(char *lbrlt, CECSPVALUETAB *tab) { //[caid][&mask][@provid][$servid] int32_t i; char *ptr = NULL, *saveptr1 = NULL; cecspvaluetab_clear(tab); for(i = 0, ptr = strtok_r(lbrlt, ",", &saveptr1); (ptr); ptr = strtok_r(NULL, ",", &saveptr1), i++) { CECSPVALUETAB_DATA d; memset(&d, 0, sizeof(d)); int32_t caid = -1, cmask = -1, srvid = -1; int32_t provid = -1; char *ptr1 = NULL, *ptr2 = NULL, *ptr3 = NULL; if((ptr3 = strchr(trim(ptr), '$'))) { *ptr3++ = '\0'; srvid = a2i(ptr3, 4); } if((ptr2 = strchr(trim(ptr), '@'))) { *ptr2++ = '\0'; provid = a2i(ptr2, 6); } if((ptr1 = strchr(ptr, '&'))) { *ptr1++ = '\0'; cmask = a2i(ptr1, -2); } caid = a2i(ptr, 2); if(caid > 0) { d.caid = caid; d.cmask = cmask; d.prid = provid; d.srvid = srvid; cecspvaluetab_add(tab, &d); } } }
void config_free(void) { config_sections_free(oscam_conf, &cfg); caidvaluetab_clear(&cfg.ftimeouttab); caidtab_clear(&cfg.double_check_caid); ftab_clear(&cfg.disablecrccws_only_for); #ifdef WITH_LB caidvaluetab_clear(&cfg.lb_retrylimittab); caidvaluetab_clear(&cfg.lb_nbest_readers_tab); caidtab_clear(&cfg.lb_noproviderforcaid); #endif #ifdef CS_CACHEEX caidvaluetab_clear(&cfg.cacheex_mode1_delay_tab); cecspvaluetab_clear(&cfg.cacheex_wait_timetab); #endif #ifdef CW_CYCLE_CHECK caidtab_clear(&cfg.cwcycle_check_caidtab); #endif }
void chk_cacheex_valuetab(char *lbrlt, CECSPVALUETAB *tab) { //[caid][&mask][@provid][$servid][:awtime][:]dwtime char *ptr = NULL, *saveptr1 = NULL; cecspvaluetab_clear(tab); int32_t i; for(i = 0, ptr = strtok_r(lbrlt, ",", &saveptr1); (ptr); ptr = strtok_r(NULL, ",", &saveptr1), i++) { CECSPVALUETAB_DATA d; memset(&d, 0, sizeof(d)); int32_t caid = -1, cmask = -1, srvid = -1; int32_t j, provid = -1; int16_t awtime = -1, dwtime = -1; char *ptr1 = NULL, *ptr2 = NULL, *ptr3 = NULL, *ptr4 = NULL, *ptr5 = NULL, *saveptr2 = NULL; if((ptr4 = strchr(trim(ptr), ':'))) { //awtime & dwtime *ptr4++ = '\0'; for(j = 0, ptr5 = strtok_r(ptr4, ":", &saveptr2); (j < 2) && ptr5; ptr5 = strtok_r(NULL, ":", &saveptr2), j++) { if(!j) { dwtime = atoi(ptr5); } if(j) { awtime = dwtime; dwtime = atoi(ptr5); } } } if((ptr3 = strchr(trim(ptr), '$'))) { *ptr3++ = '\0'; srvid = a2i(ptr3, 4); } if((ptr2 = strchr(trim(ptr), '@'))) { *ptr2++ = '\0'; provid = a2i(ptr2, 6); } if((ptr1 = strchr(ptr, '&'))) { *ptr1++ = '\0'; cmask = a2i(ptr1, -2); } if(!ptr1 && !ptr2 && !ptr3 && !ptr4) //only dwtime { dwtime = atoi(ptr); } else { caid = a2i(ptr, 2); } if((i == 0 && (caid <= 0)) || (caid > 0)) { d.caid = caid; d.cmask = cmask; d.prid = provid; d.srvid = srvid; d.awtime = awtime; d.dwtime = dwtime; cecspvaluetab_add(tab, &d); } } }