/** * called by signal SIGHUP * * reloads configs: * - useraccounts (oscam.user) * - readers (oscam.server) * - services ids (oscam.srvid) * - tier ids (oscam.tiers) * Also clears anticascading stats. **/ static void cs_reload_config(void) { static pthread_mutex_t mutex; static int8_t mutex_init = 0; if(!mutex_init) { SAFE_MUTEX_INIT(&mutex, NULL); mutex_init = 1; } if(pthread_mutex_trylock(&mutex)) { return; } cs_accounts_chk(); reload_readerdb(); init_provid(); init_srvid(); init_tierid(); init_fakecws(); ac_init_stat(); cs_reopen_log(); // FIXME: aclog.log, emm logs, cw logs (?) SAFE_MUTEX_UNLOCK(&mutex); }
/** * called by signal SIGHUP * * reloads configs: * - useraccounts (oscam.user) * - services ids (oscam.srvid) * - tier ids (oscam.tiers) * Also clears anticascading stats. **/ static void cs_reload_config(void) { cs_accounts_chk(); init_srvid(); init_tierid(); ac_init_stat(); cs_reopen_log(); // FIXME: aclog.log, emm logs, cw logs (?) }
static int32_t monitor_process_request(char *req) { int32_t i, rc; static const char *cmd[] = {"login", "exit", "log", "status", "shutdown", "reload", "details", "version", "debug", "getuser", "setuser", "setserver", "commands", "keepalive", "reread" #ifdef WEBIF ,"restart" #endif }; int32_t cmdcnt = sizeof(cmd)/sizeof(char *); // Calculate the amount of items in array char *arg; struct s_client *cur_cl = cur_client(); if( (arg = strchr(req, ' ')) ) { *arg++ = 0; trim(arg); } //trim(req); if ((!cur_cl->auth) && (strcmp(req, cmd[0]))) monitor_login(NULL); for (rc=1, i = 0; i < cmdcnt; i++) if (!strcmp(req, cmd[i])) { switch(i) { case 0: monitor_login(arg); break; // login case 1: cs_exit(0); break; // exit case 2: monitor_logsend(arg); break; // log case 3: monitor_process_info(); break; // status case 4: if (cur_cl->monlvl > 3) cs_exit_oscam(); break; // shutdown case 5: if (cur_cl->monlvl > 2) cs_accounts_chk(); break; // reload case 6: monitor_process_details(arg); break; // details case 7: monitor_send_details_version(); break; // version case 8: if (cur_cl->monlvl > 3) monitor_set_debuglevel(arg); break; // debuglevel case 9: if (cur_cl->monlvl > 3) monitor_get_account(); break; // getuser case 10: if (cur_cl->monlvl > 3) monitor_set_account(arg); break; // setuser case 11: if (cur_cl->monlvl > 3) monitor_set_server(arg); break; // setserver case 12: if (cur_cl->monlvl > 3) monitor_list_commands(cmd, cmdcnt); break; // list commands case 13: if (cur_cl->monlvl > 3) monitor_send_keepalive_ack(); break; // keepalive case 14: { char buf[64];snprintf(buf, sizeof(buf), "[S-0000]reread\n");monitor_send_info(buf, 1); cs_card_info(); break; } // reread #ifdef WEBIF case 15: if (cur_cl->monlvl > 3) monitor_restart_server(); break; // keepalive #endif default: continue; } break; } return rc; }